子类化
//通过传递过来的CWnd *获取窗口句柄
HWND hWnd=pWnd->m_hWnd;
//子类化 hProc是一个全局变量
hProc=SetWindowLong(hWnd,GWL_WNDPROC,(LONG)&NewProc);
//新的窗口过程
LRESULT CALLBACK NewProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DEVICECHANGE:
//这就是你要的消息了
break;
}
return CallWindowProc(hProc,hWnd, message, wParam, lParam);
}
//通过传递过来的CWnd *获取窗口句柄
HWND hWnd=pWnd->m_hWnd;
//子类化 hProc是一个全局变量
hProc=SetWindowLong(hWnd,GWL_WNDPROC,(LONG)&NewProc);
//新的窗口过程
LRESULT CALLBACK NewProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DEVICECHANGE:
//这就是你要的消息了
break;
}
return CallWindowProc(hProc,hWnd, message, wParam, lParam);
}
__in int nCode,
__in WPARAM wParam,
__in LPARAM lParam
)
{
// lParam Pointer to a CWPSTRUCT structure that contains details about the message
}
SetWindowsHookEx(WH_CALLWNDPROC,MyCallWndProc,GetModuleHandle("yourdll.dll"), 0);
然后 setwindowlong 注册新的 代替原来的, 实现拦截后 记得要 调用原来的 过程