winapi — c ++ SetWinEventHook проблема с 32 & amp; 64-битное приложение

Я пытаюсь подключить виноделы, такие как EVENT_SYSTEM_MOVESIZESTART и EVENT_SYSTEM_MOVESIZEEND, ко всем окнам рабочего стола.
Для этого я использовал SetWinEventHook ().
Вот мой пример кода.

    BOOL DlmSetEventHook()
{
if (hInstance == NULL)
return FALSE;
CoInitialize(NULL);
hWEventHook = SetWinEventHook(EVENT_SYSTEM_MOVESIZESTART, EVENT_SYSTEM_MOVESIZEEND, NULL, WinEventProc, NULL, NULL, WINEVENT_OUTOFCONTEXT );
if ( hWEventHook == NULL )
{
return FALSE;
}
return TRUE;
}

Это часть установленного крючка.

void DlmRemoveEventHook()
{
WaitForSingleObject(hWEventHook, INFINITE);
UnhookWinEvent(hWEventHook);
CoUninitialize();
}

Выше для удаления WinEvent Hook.

И это функция HookProc.

void CALLBACK WinEventProc(
HWINEVENTHOOK hWinEventHook,
DWORD         event,
HWND          hwnd,
LONG          idObject,
LONG          idChild,
DWORD         dwEventThread,
DWORD         dwmsEventTime
)
{
IAccessible* pAcc = NULL;
VARIANT varChild;
HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &pAcc, &varChild);

if ((hr == S_OK) && (pAcc != NULL))
{
if (event == EVENT_SYSTEM_MOVESIZESTART)
{
if (!(::GetWindowLong(hPaneWnd, GWL_STYLE) & WS_VISIBLE))
{
::ShowWindow(hPaneWnd, SW_SHOWNOACTIVATE);
::UpdateWindow(hPaneWnd);
}

}

if (event == EVENT_SYSTEM_MOVESIZEEND)
{
if ((::GetWindowLong(hPaneWnd, GWL_STYLE) & WS_VISIBLE))
{
::ShowWindow(hPaneWnd, SW_HIDE);
}
}
pAcc->Release();
}
}

Все приведенные выше коды находятся в DLL. И я скомпилировал DLL с методом отладки x86.
И я, конечно, скомпилировал клиентский проект с методом отладки x86.
Моя проблема заключается в том, что этот hookproc прослушивает события, вызванные только в 64-битных приложениях (я использую Win10 x64).
Он не может слушать Winevents x86-битных приложений.
Я только знаю, что 32-битная DLL может быть введена только в 32-битный проект и то же самое на 64-битной DLL.
Но я думаю, что это не связано с Winevent Hook.
Что не так в моем коде? А что я никогда не знаю?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]