gpt4 book ai didi

c++ - Qt 如何知道何时连接了新的 USB 存储设备?

转载 作者:可可西里 更新时间:2023-11-01 12:48:19 26 4
gpt4 key购买 nike

我想知道 USB 设备何时连接到运行我的 Qt 应用程序的计算机(在 Windows 中)。在我的主要 QWidget 中,我像这样重新实现了 winEventFilter:

bool winEventFilter ( MSG * msg, long * result ) {
qDebug() << msg;
return false;
}

当我连接 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

注意:您很可能需要更改 DEV_BROADCAST_DEVICEINTERFACE 的值以满足您的需要。

编辑:要使用此代码,您需要包含正确的头文件并执行正确的设置。 DEV_BROADCAST_DEVICEINTERFACE 需要包含 Dbt.h header 。此外,这段代码的重点是 RegisterDeviceNotification 函数。信息可在 MSDN 上找到

关于c++ - Qt 如何知道何时连接了新的 USB 存储设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/852752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com