gpt4 book ai didi

c++ - 获取 'name of the application' 以及按键

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

为了记录按键敲击,我将钩子(Hook)安装为:

BOOL WINAPI installHook(HINSTANCE hinstDLL, DWORD fwdReason, LPVOID lpvReserved) {
handleKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hinstDLL, 0);
MSG msg;

while(GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

static LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
// write here
}

有什么方法可以知道当前正在点击按键的应用程序名称吗?就像我打开记事本写东西一样,我能否获得记事本应用程序的名称以及按键?其他一些应用程序(如 mozilla firefox)也是如此。

最佳答案

钩子(Hook)的内部应该是这样的:

static LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
// if it is not a keydown event, continue the chain
if(HC_ACTION != nCode || WM_KEYDOWN != wParam)
return CallNextHookEx(0, nCode, wParam, lParam);

const KBDLLHOOKSTRUCT* messageInfo = reinterpret_cast<const KBDLLHOOKSTRUCT*>(lParam);

// add more code here...

// tell Windows we processed the hook
return 1;
}

messageinfo.vkCode 将包含您要查找的键码。这些代码的官方列表位于:http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx

键通常会输入到前景窗口中(尽管有时会出现奇怪的窗口布局)。您可以像这样获取前景窗口的标题:

TCHAR title[100]; // increase size for longer titles
GetWindowText(GetForegroundWindow(), title, 100);

如果您想获取程序的名称,请使用:

TCHAR title[100]; // increase size for longer program names
GetWindowModuleFileName(GetForegroundWindow(), title, 100);

并且,记得添加错误检查并检查文档。

关于c++ - 获取 'name of the application' 以及按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870007/

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