SetWindowsHookEx
может использоваться для подключения определенной нити или всех нитей.Вы не можете зацепить конкретную ручку.Вы можете получить конкретный поток или все потоки приложения Windows Form и подключить их, но это не решит вашу проблему, это всего лишь соображение производительности.
В обратном вызове MouseProc
вы можетеотфильтровать события WM_LBUTTONDOWN
, WM_LBUTTONUP
, используя wParam
.
. Вы можете получить указатель на окно, в которое происходит это событие мыши, от lParam
MOUSEHOOKSTRUCT * pMouseHookStruct = (MOUSEHOOKSTRUCT *) lParam;
HWMD hWnd = pMouseHookStruct->hwnd;
от hwnd
вы можете получить все детали окна и проверить, является ли оно тем же окном форм окна.
Если вы хотите, чтобы события мыши имели только определенную кнопку, вы можете получить информацию об объекте пользовательского интерфейса изщелкнуть мышью и отфильтровать события соответственно (используя UIAutomation
)
CoCreateInstance(__uuidof(CUIAutomation), NULL, CLSCTX_INPROC_SERVER, __uuidof(IUIAutomation), (void**)&pAutomation);
pAutomation->ElementFromPoint(*pPoint, &pIUIAutomationElement);
. Вы можете получить button name
, rect coordinates
, hot keys
и т. д. из IUIAutomationElement