c# - 在 Windows 上,如何通过“USB 选择性挂起”判断 USB 设备何时进入睡眠状态
问题描述
我有一个连接到 USB 条形码扫描仪的 C# 应用程序。一切正常,直到 Windows 暂停 USB 总线。不能在电源设置中关闭“USB 选择性暂停”。我需要检测设备(或 USB 总线)何时暂停。
我可以通过在 NativeWindow 实例中覆盖 WndProc 来检测 USB 设备何时连接或断开。
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_DEVICECHANGE: // (0x0219)
Console.WriteLine("Device presence Changed");
switch (m.WParam.ToInt32())
{
case Win32Usb.DEVICE_ARRIVAL: // inserted (0x8000)
Console.WriteLine("Device Inserted");
break;
case Win32Usb.DEVICE_REMOVECOMPLETE: // removed (0x8004)
Console.WriteLine("Device Removed");
break;
}
break;
}
base.WndProc(ref m);
}
但它不会告诉我 USB 设备何时被 Windows 挂起。
任何人都知道可以告诉我 USB 设备何时进入睡眠(或唤醒)的 m.Msg 或 m.WParam?
我知道 nuget 上有很多 USB 库,其中大多数可以告诉您何时插入/移除设备,但我找不到任何检测“USB 选择性挂起”的库。如果您知道可以解决我的问题的第三方库,我愿意使用 3rd 方库。
解决方案
推荐阅读
- laravel - 随机 [access_compat:error] AH01797:客户端被 apache 的 error.log 文件中的服务器配置错误拒绝
- quill - 羽毛笔 JS | 实现多页面功能
- google-sheets - 如何将查询/过滤公式转换为数组公式?
- android - 关于如何用 JobIntentService 替换 IntentService 的 CSV 导出示例
- rate - 如何获得普拉特的出水率?
- python-3.x - 图像未从表单发布请求在 django 中更新
- arrays - 有没有办法在postgresql的“值数组”中查询带有某些条件的jsonb列?
- python - 如何使用第一个字母作为参数从列表/系列/数据框中过滤单词?
- odoo - 添加动作以下载txt文件
- linux - 来自 Linux 中 AP(接入点)的客户端列表(站)命令