首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请教在dll中怎么捕捉WM_DEVICECHANGE消息

2012-08-16 
请问在dll中如何捕捉WM_DEVICECHANGE消息假设dll中没窗口现在我用钩子,好像没成功在dll中某个函数中调用C/

请问在dll中如何捕捉WM_DEVICECHANGE消息
假设dll中没窗口

现在我用钩子,好像没成功
在dll中某个函数中调用

C/C++ code
HHOOK hHook=SetWindowsHookEx(WH_CALLWNDPROC,CallWndProc,theApp.m_hInstance,0);

hHook不是NULL,theApp是MFC dll中的全局变量,因为发现AfxGetInstanceHandle()报错
C/C++ code
LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam,LPARAM lParam){    LogDll("CallWndProc");    CWPSTRUCT* pMsg=(CWPSTRUCT*)(lParam);    if ( pMsg->message == WM_DEVICECHANGE ) {        switch( pMsg->wParam ) {        case DBT_DEVICEARRIVAL:            LogDll("DBT_DEVICEARRIVAL");            break;        case DBT_DEVICEREMOVECOMPLETE:            LogDll("DBT_DEVICEREMOVECOMPLETE");            break;        }    }    return CallNextHookEx( NULL,nCode,wParam,lParam);}


现象是启动时打印出一堆"CallWndProc",后面就没了,拔插USB接口没任何反应

[解决办法]
SetWindowsHookEx(...,WH_GETMESSAGE,...);
[解决办法]
http://hi.baidu.com/lanyu705/blog/item/e3bf06d4ff57f111a08bb74d.html
[解决办法]
你setwindowhookex是在哪儿调用的?它的hmodul你使用virtualquery去获取试试。

热点排行