我如何“阻止”WM_LBUTTONDOWN要解雇的訊息?
該函式在 dll 中,我也嘗試使用,LowLevelMouseProc但它不適用于錯誤代碼:1429這意味著“僅全域掛鉤”。
- 我不擁有有問題的窗戶。
我試圖WM_NULL在下面的代碼中回傳 a ,但它也不起作用,我還能嘗試什么?
extern "C" __declspec(dllexport) LRESULT CALLBACK mouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
MSLLHOOKSTRUCT* mhs = nullptr;
int x = 0;
int y = 0;
std::wstringstream ss;
std::wstringstream ss2;
if (nCode == HC_ACTION)
{
switch (wParam)
{
case WM_LBUTTONDOWN:
ss << L"\nWM_LBUTTONDOWN " << wParam;
wParam = WM_NULL;
break;
case WM_LBUTTONUP:
ss << L"\nWM_LBUTTONUP " << wParam;
break;
case WM_MOUSEMOVE:
break;
case WM_RBUTTONDOWN:
ss << L"\nWM_RBUTTONDOWN: " << wParam;
break;
case WM_RBUTTONUP:
ss << L"\nWM_RBUTTONUP: " << wParam;
break;
default:
ss << L"\nUnknown msg: " << wParam;
break;
}
}
OutputDebugString(ss.str().c_str());
mhs = reinterpret_cast<MSLLHOOKSTRUCT*>(lParam);
x = mhs->pt.x;
y = mhs->pt.y;
ss2 << L"\nx: " << x << L" y: " << y;
OutputDebugString(ss2.str().c_str());
return CallNextHookEx(NULL, nCode, wParam, lParam);
uj5u.com熱心網友回復:
根據MouseProc回呼函式檔案:
如果 nCode 大于或等于 0,且鉤子程序沒有處理訊息,強烈建議呼叫 CallNextHookEx 并回傳它回傳的值;否則,安裝了 WH_MOUSE 鉤子的其他應用程式將不會收到鉤子通知,因此可能會出現不正確的行為。如果鉤子程序處理了訊息,它可能會回傳一個非零值以防止系統將訊息傳遞給目標視窗程序。
至于您的WH_MOUSE_LL錯誤,您不能在特定于執行緒的基礎上安裝該鉤子,只能全域安裝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314754.html
