Ski*_*ick 8 c++ windows usb qt
我想知道什么时候USB设备连接到运行我的Qt应用程序的计算机(在Windows中).在我的主要QWidget中,我重新实现了winEventFilter这样:
bool winEventFilter ( MSG * msg, long * result ) {
qDebug() << msg;
return false;
}
Run Code Online (Sandbox Code Playgroud)
当我连接USB设备时,我希望qDebug能发送至少一些东西,但我什么也得不到.
我猜我从根本上误解了这个过程 - 这是我的第一个Qt应用程序!
我相信你可能缺少的是注册设备通知的电话.这是我用来做同样事情的代码,虽然我覆盖了QWidget类的winEvent()方法而不是winEventFilter.
// Register for device connect notification
DEV_BROADCAST_DEVICEINTERFACE devInt;
ZeroMemory( &devInt, sizeof(devInt) );
devInt.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
devInt.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
devInt.dbcc_classguid = GUID_DEVINTERFACE_VOLUME;
m_hDeviceNotify =
RegisterDeviceNotification( winId(), &devInt, DEVICE_NOTIFY_WINDOW_HANDLE );
if(m_hDeviceNotify == NULL)
{
qDebug() << "Failed to register device notification";
} // end if
Run Code Online (Sandbox Code Playgroud)
注意:您很可能需要更改其值DEV_BROADCAST_DEVICEINTERFACE以满足您的需求.
编辑:要使用此代码,您需要包含正确的头文件并执行正确的设置. DEV_BROADCAST_DEVICEINTERFACE需要包含Dbt.h头.此外,此代码的焦点在RegisterDeviceNotification函数上.信息在MSDN上可用
| 归档时间: |
|
| 查看次数: |
13493 次 |
| 最近记录: |