2011-05-04 165 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消息將通過您的applicati接收上。

這個頁面有使用這些窗口消息的電源管理類的C#實現。 http://www.koders.com/csharp/fid00BAA34B0CAA3E320F9F5A44610A015973BF28ED.aspx?s=nativemethods#L175

+0

我該如何去有關從非的WinForms C#類得到這些消息? – 2011-05-04 14:46:56

+0

已經更新了答案。我還沒有真正做到這一點,但我會假設你可以從任何類 – Gavin 2011-05-04 14:48:43

+0

http://stackoverflow.com/q/1925237/726631 – Saleh 2011-05-17 04:35:41

1

正如前面的海報RegisterPowerSettingNotification提到的是你想要的。爲了澄清,你可以從其他類型的.NET應用程序(控制檯等)引用的WinForms(System.Windows.Forms.dll中)。你可以(以接收信息)通過繼承一個WinForm(窗體類)和覆蓋其的WndProc訪問窗口句柄。

MSDN剛剛這樣做的very good article,與示例代碼一起。