#include <Windows.h>
#include <iostream>
// 目标进程ID
DWORD g_dwTargetProcessId = 0;
LRESULT CALLBACK KeyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
DWORD dwProcessId = 0;
GetWindowThreadProcessId(GetForegroundWindow(), &dwProcessId);
PKBDLLHOOKSTRUCT pKbDllHookStruct = (PKBDLLHOOKSTRUCT)lParam;
if (dwProcessId == g_dwTargetProcessId)
{
if (wParam == WM_KEYDOWN)
{
if (pKbDllHookStruct->vkCode == 'A')
{
std::cout << "A" << std::endl;
}
}
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
LRESULT CALLBACK MouseHook(int nCode, WPARAM wParam, LPARAM lParam){
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
int main(){
HWND hWnd = FindWindowA(NULL, "*新建 文本文档.txt - Notepad");
GetWindowThreadProcessId(hWnd, &g_dwTargetProcessId);
HHOOK hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHook, NULL, 0);
HHOOK hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHook, NULL, 0);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{ TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(hKeyboardHook);
UnhookWindowsHookEx(hMouseHook);
return 0;
}
windows下通过钩子获取指定进程的鼠标按键消息
最新推荐文章于 2023-10-22 06:55:10 发布