1
我希望任何窗口在鼠标悬停在非客户区域上的关闭按钮时关闭。我尝试在SetWindowsHookEx中使用WH_GETMESSAGE捕获wm_ncmousemove,然后使用SendMessage向指定的窗口发送WM_DESTROY消息,但窗口未关闭,然后使用 。任何帮助?在win32中挂钩
LRESULT CALLBACK CallWndProc(int code, WPARAM wParam, LPARAM lParam)
{
MSG* msg = (MSG*) lParam;
if(code == HC_ACTION)
{
if(msg->message == WM_NCMOUSEMOVE)
{
if(msg->wParam == HTCLOSE)
{
SendMessage(hwndTarget, WM_DESTROY, wParam, lParam);
}
}
}
return CallNextHookEx(g_hkMsg, code, wParam, lParam);
}
INT WINAPI InstallW(HWND hwnd, HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
{
DWORD dwTarget = 0;
POINT point;
GetCursorPos(&point);
hwndTarget = WindowFromPoint(point);
dwTarget = GetWindowThreadProcessId(hwndTarget, NULL);
g_hkMsg = SetWindowsHookEx(WH_GETMESSAGE, CallWndProc, g_hInstance, 0);
if(g_hkMsg)
{
MessageBox(NULL, L"Message hook installed, press OK to uninstall.", L"HLHookTest", MB_ICONEXCLAMATION);
UnhookWindowsHookEx(g_hkMsg);
}
else
MessageBox(NULL, L"Hook installation failed.", L"HLHookTest", MB_ICONERROR);
return 0;
}
但是,当鼠标指针位于程序的消息框的关闭按钮上时,这只会关闭命令提示符 – Neal 2009-05-04 06:03:07