Windows可以选择关闭某些外围设备的电源,如USB端口,以节省电力(此行为可以通过设备管理器启用/禁用)。断电发生在各种情况下,例如当笔记本电脑的盖子关闭时。这给我带来了一个问题,因为我有一个GUI,它可以与连接到USB端口的硬件通信,并且每次关闭笔记本电脑盖时,通信都会被切断。有没有办法通过编程来检测这种掉电(待机)?事件之前,更优雅地关闭我的USB设备?有没有办法通过编程配置系统的每个USB端口来禁用此行为?
现在我正在看SystemEvents.PowerModeChanged,这是检测到这个的正确事件吗?
发布于 2011-05-04 22:36:11
您首先需要调用RegisterPowerSettingNotification,然后您的应用程序将接收WM_POWERBROADCAST消息。
此页包含使用这些窗口消息的电源管理类的c#实现。http://www.koders.com/csharp/fid00BAA34B0CAA3E320F9F5A44610A015973BF28ED.aspx?s=nativemethods#L175
发布于 2011-09-08 17:14:22
正如前面的帖子所提到的,RegisterPowerSettingNotification就是您想要的。为了清楚起见,您可以从其他类型的.NET应用程序(控制台等)中引用Winforms (System.Windows.Forms.dll)。您可以通过子类化Winform ( Forms类)并覆盖它的WndProc来访问窗口句柄(以便接收消息)。
MSDN有一个可以做到这一点的very good article,以及示例代码。
https://stackoverflow.com/questions/5884820
复制相似问题