gpt4 book ai didi

c++ - 键盘 Hook ......没有得到小写或大写字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:10 25 4
gpt4 key购买 nike

下面的函数正在记录“0”、“z”和“1”,没问题...但它没有捕获“Z”(shift-z)...任何帮助将不胜感激...

__declspec(dllexport)
LRESULT CALLBACK HookProc (UINT nCode, WPARAM wParam, LPARAM lParam)
{
if ((nCode == HC_ACTION) && (wParam == WM_KEYUP))
{
// This Struct gets infos on typed key
KBDLLHOOKSTRUCT hookstruct = *((KBDLLHOOKSTRUCT*)lParam);

// Bytes written counter for WriteFile()
DWORD Counter;

wchar_t Logger[1];

switch (hookstruct.vkCode)
{
case 060: Logger[0] = L'0'; break;
case 061: Logger[0] = L'1'; break;
case 90: Logger[0] = L'z'; break;
case 116: Logger[0] = L'Z'; break;
}

// Opening of a logfile. Creating it if it does not exists
HANDLE hFile = CreateFile(L"C:\\logfile.txt", GENERIC_WRITE,
FILE_SHARE_READ, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

// put the file pointer to the end
SetFilePointer(hFile,NULL,NULL,FILE_END);

// Write the hFile typed in logfile
WriteFile(hFile,&Logger,sizeof(Logger),&Counter,NULL);

//WriteFile(hFile,&hookstruct.vkCode,sizeof(hookstruct.vkCode),&Counter,NULL);
// Close the file
CloseHandle(hFile);
}
}

最佳答案

键盘不发送字符。它发送 key 。无论您是键入 z 还是 Z,您仍然在按同一个键,并且该键两次具有相同的 VK 代码。

您还应该在按下或释放 Shift 键时收到通知。您可以使用这些通知将击键转换为字符。大写锁定状态也与此相关。您可能还担心死键。

您可以检查是否按下了 Shift 键。 GetAsyncKeyState 会告诉您 key 现在的状态,而 GetKeyState 会告诉您截至从中删除的最后一条消息时 key 的状态消息队列。

关于c++ - 键盘 Hook ......没有得到小写或大写字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/342167/

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