2010-07-14 75 views
0

我已經有一段時間了這個問題,但我必須糾正它,因爲我現在必須解決它。我試圖檢測設備何時連接到Windows 7系統,我收到WM_DEVICECHANGE就好了,但wParam中的消息總是DBT_DEVNODES_CHANGED。從來沒有DBT_DEVICEARRIVAL或DBT_DEVICEREMOVECOMPLETE。我到目前爲止沒有運氣Google搜索,所以我希望有人會指出我在正確的方向,然後在幾個小時內找到東西:) 感謝雅時間。如何檢測設備何時添加到系統?

回答

1

該文檔指出應默認接收DBT_DEVICEARRIVAL和DBT_DEVICEREMOVECOMPLETE事件。應用程序可以通過調用RegisterDeviceNotification函數來註冊以接收更多詳細的事件。希望您在註冊您的應用程序後會收到您需要的事件。一定要在關閉時調用UnregisterDeviceNotification。

RegisterDeviceNotification參考:

http://msdn.microsoft.com/en-us/library/aa363431%28v=VS.85%29.aspx

P /調用簽名:

http://pinvoke.net/default.aspx/user32.RegisterDeviceNotification

UnregisterDeviceNotification參考:

http://msdn.microsoft.com/en-us/library/aa363475%28v=VS.85%29.aspx

的P/Invoke簽名:

http://pinvoke.net/default.aspx/user32.UnregisterDeviceNotification

0

非常感謝弗萊徹。我已經成功爲Qt4做這個工作。 Qt4的(.6.3)用戶可以添加#include文件作爲正常的,但你將需要一些#defines添加到您的.h文件中:

#define _WIN32_WINNT 0x0501 
#define _WIN32_WINDOWS 0x0501 
#define WINVER 0x0501 

,使窗戶的數據類型,如DEV_BROADCAST_HEADER可以識別。此外,我猜的版本號取決於你的Windows平臺,但不知道(我使用win 7 atm)。 如果您安裝在默認位置,那麼請不要忘記將庫添加到.pro文件中 LIBS += "C:\Qt\2010.04\mingw\lib\<library_file>"