目前实现U盘监控,插入U盘,会提示,拔出U盘也会
.h文件
protected:
// char FirstDriveFromMask (ULONG unitmask);
bool nativeEvent(const QByteArray & eventType, void * message, long*result);
.cpp文件
//实现U盘监控
char FirstDriveFromMask( ULONG unitmask)
{
char i;
for (i = 0; i < 26; ++i)
{
if (unitmask & 0x1)
break;
unitmask = unitmask >> 1;
}
//qDebug() << "sss";
return (i + 'A');
}
bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
MSG* msg = reinterpret_cast<MSG*>(message);
int msgType = msg->message;
if(msgType==WM_DEVICECHANGE)
{
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)msg->lParam;
switch (msg->wParam) {
case DBT_DEVICEARRIVAL:
if(lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
if(lpdbv->dbcv_flags ==0)
{
QString USBDisk = QString(FirstDriveFromMask(lpdbv ->dbcv_unitmask));
number=1;
// keyHook =SetWindowsHookEx( WH_KEYBOARD_LL,keyProc,Boardhinstance,0);
qDebug() << "USB_Arrived and The USBDisk is: "<<USBDisk ;
}
}
break;
case DBT_DEVICEREMOVECOMPLETE:
if(lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
if(lpdbv->dbcv_flags == 0)
{
qDebug() << "USB_Removed";
keyHook =SetWindowsHookEx( WH_KEYBOARD_LL,keyProc,Boardhinstance,0);
}
}
break;
}
}
return false;
}
void MainWindow::on_pushButton_6_clicked()
{
// qDebug<<"sq";
if(number==1)
{
keyHook =SetWindowsHookEx( WH_KEYBOARD_LL,keyProc,Boardhinstance,0);
number=0;
}
//sleep(100000);
}