2011-05-04 8 views
6

Windows에는 전원을 절약하기 위해 USB 포트와 같은 특정 주변 장치의 전원을 끌 수있는 옵션이 있습니다 (이 동작은 장치 관리자를 통해 활성화/비활성화 할 수 있음). 랩탑 뚜껑을 닫은 경우와 같은 다양한 조건에서 전원이 차단됩니다. 이것은 USB 포트에 연결된 하드웨어와 통신하는 GUI가있어서 노트북 뚜껑을 닫을 때마다 통신이 끊어 지므로 문제가됩니다. 이 파워 다운 (대기?) 이벤트를 프로그래밍 방식으로 감지하여 USB 장치를 정상적으로 종료하는 방법이 있습니까? 이 동작을 사용하지 않도록 시스템의 USB 포트를 프로그래밍 방식으로 구성하는 방법이 있습니까?USB 전원 상태 감지

지금 나는 SystemEvents.PowerModeChanged을보고 있는데, 이것을 감지하는 데 적합한 이벤트입니까?

답변

1

그것은 당신이 원하는 같은 소리

  1. WM_POWERBROADCAST (http://msdn.microsoft.com/en-us/library/aa373247(v=vs.85).aspx)
  2. RegisterPowerSettingNotification (http://msdn.microsoft.com/en-us/library/aa373196.aspx) RegisterPowerSettingNotification 다음 WM_POWERBROADCAST 메시지를 호출 할 첫 번째 필요가 귀하의 입학 원서 접수됩니다 당신

에.

이 페이지는 이러한 창 메시지를 사용하여 전원 관리 클래스를 구현합니다. http://www.koders.com/csharp/fid00BAA34B0CAA3E320F9F5A44610A015973BF28ED.aspx?s=nativemethods#L175

+0

비 WinForms C# 클래스의 메시지를 가져 오는 방법은 무엇입니까? –

+0

답변을 조금 업데이트했습니다. 나는 실제로 이것을하지는 않았지만 어떤 클래스의 RegisterPowerSettingNotification에도 가입 할 수 있다고 가정합니다. – Gavin

+0

http://stackoverflow.com/q/1925237/726631 – Saleh

1

이전 포스터에서 언급했듯이 RegisterPowerSettingNotification은 원하는 것입니다. 명확하게하기 위해 다른 유형의 .NET 응용 프로그램 (콘솔 등)에서 Winforms (System.Windows.Forms.dll)를 참조 할 수 있습니다. Winform (Forms 클래스)를 서브 클래 싱하고 WndProc를 재정 의하여 창 핸들 (메시지 수신을 위해)에 액세스 할 수 있습니다.

MSDN에는 예제 코드와 함께이 작업을 수행하는 very good article이 있습니다.