7

Windows 可以选择关闭某些外围设备,例如 USB 端口,以节省电量(可以通过设备管理器启用/禁用此行为)。断电会在各种情况下发生,例如关闭笔记本电脑的盖子时。这给我带来了一个问题,因为我有一个 GUI,它与连接到 USB 端口的硬件通信,并且每次关闭笔记本电脑盖时通信都会中断。有没有办法在此断电(待机?)事件发生之前以编程方式检测它并更优雅地关闭我的 USB 设备?有没有办法以编程方式配置系统的每个 USB 端口以禁用此行为?

现在我在看SystemEvents.PowerModeChanged,这是检测到这个的正确事件吗?

4

2 回答 2

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 消息。

此页面具有使用这些窗口消息的电源管理类的 ac# 实现。http://www.koders.com/csharp/fid00BAA34B0CAA3E320F9F5A44610A015973BF28ED.aspx?s=nativemethods#L175

于 2011-05-04T14:36:11.287 回答
1

正如之前的海报所述,RegisterPowerSettingNotification 就是您想要的。为了澄清,您可以从其他类型的 .NET 应用程序(控制台等)中引用 Winforms (System.Windows.Forms.dll)。您可以通过继承 Winform(Forms 类)并覆盖其 WndProc 来访问 Window 句柄(以便接收消息)。

MSDN 有一篇非常好的文章,以及示例代码。

于 2011-09-08T09:14:21.840 回答