얼마나 잘 돌아갈진 모르겠지만, macOS에서 윈도우 랩탑으로 넘어오면서 딱 하나 아쉬웠던 클램셸 기능을 따라하는 유틸리티를 만들어보려고 약간의 사전 조사를 해보았습니다.
RegisterDeviceNotification API로 외장 모니터가 추가되거나 제거되는 상황을 체크하고, Microsoft.Win32.SystemEvents의 PowerModeChanged와 WPF나 WinForm의 SystemInformation 클래스를 이용해서 전원 케이블이 연결된 상태이면, powercfg 유틸리티로 "덮개를 닫았을 때 아무것도 하지 않음"으로, 그 외의 경우에는 “절전” 모드를 사용하도록 동적으로 변경해볼 수 있겠다는 생각이 들었습니다.
지금 생각나는 엣지 케이스는 프로그램이 돌아가고 있는 환경이 RDP 환경인지 아닌지, 그리고 가상 컴퓨터 환경이나 컨테이너 환경인지 따져보는 정도가 있을 것 같습니다. 그리고 좀 더 세밀하게 따져보면, 키보드 또는 마우스가 적어도 1기 이상 사용 가능한 상태인지도 따져봐야 할지 모르겠네요.
개인적인 필요에 의해서 생각해본 유틸리티인데, 조금 만들어보고 github에 코드를 공유해볼까 합니다.