gpt4 book ai didi

c++ - 使用 Windows API 创建鼠标 Hook 的问题

转载 作者:行者123 更新时间:2023-11-28 03:52:28 25 4
gpt4 key购买 nike

<分区>

我正在尝试使用 Windows API 创建鼠标 Hook 。目前,我有以下代码,但我正在努力让它工作。也许一些示例代码可以帮助我更好地理解这些概念。

LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
HWND hWindow , hEntryWnd;
HRESULT hResult;
ztcEvents pEvent;
ztcField *p_click_field;
ztcInterfaceContext *p_context_interface;
TCHAR className [32];
HWND hWnd;
if (nCode < 0) // do not process message
return CallNextHookEx(hook, nCode, wParam, lParam);
MOUSEHOOKSTRUCT *msg = (MOUSEHOOKSTRUCT *)lParam;

switch (nCode)
{
case HC_ACTION:
{
hWnd = msg->hwnd;
p_click_field = pEvent.GetMatchField(hWnd);
p_context_interface = pEvent.getMarkInterface();
if(p_click_field == NULL || p_context_interface == NULL)
{
break;
}
GetClassName(p_click_field->Widget ()->WindowHandle() , className , sizeof (className ) - 1 );

if(p_click_field->Widget()->IsKindOf(RUNTIME_CLASS(ztcOleWdgt)))
{
switch(wParam)
{
case WM_LBUTTONDOWN:

hWindow = p_click_field->Widget()->Parent()->WindowHandle();
hEntryWnd = p_click_field->Widget()->WindowHandle();

::PostMessage(hWindow , OLE_NOTIFY , (WPARAM)hEntryWnd , OLE_LCLICK);
/*pEvent.SetVariables(p_click_field , evClick ,etFormField , true , p_context_interface);
SetEvent(hEventWnd);*/
fprintf(trace_event , "buttonClick\t%x\n" , msg->hwnd );
fflush(trace_event);
break;
case WM_RBUTTONDOWN:
fprintf(trace_event , "RightClick\n");
fflush(trace_event);
break;
case WM_LBUTTONDBLCLK:
fprintf(trace_event , "ButtonDoubleClick\n");
fflush(trace_event);
break;
}
}
}

break;
default:
break;
}
return CallNextHookEx(hook, nCode, wParam, lParam);
}

同时单击鼠标左键,上面的代码进入案例 WM_LBUTTONDOWN 超过 30 次。我的代码有问题吗?如果是这样,我该如何解决?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com