我一直在玩一个使用C ++的全局键盘钩子,当钩子运行时,键盘输入非常慢。我甚至没有做任何事情,因为我只是在玩它来学习钩子。我想知道我的代码是否有问题,或者这对全局键盘钩子来说是否正常?
这是我的代码:
DLL文件
#include<Windows.h>
#include<stdio.h>
#include "keyDLL.h"
using namespace std;
LRESULT CALLBACK HookProcedure(int code, WPARAM wParam, LPARAM lParam)
{
return CallNextHookEx(0, code, wParam, lParam);
}
DLL头文件
#include "windows.h"
extern "C" __declspec(dllexport) LRESULT CALLBACK HookProcedure(int code, WPARAM wParam, LPARAM lParam);
EXE文件
#include <iostream>
#include <cstdlib>
#include "windows.h"
using namespace std;
static HHOOK hhandle;
static HMODULE dllHandle;
HOOKPROC hookProcAddress;
int main()
{
dllHandle = LoadLibrary(TEXT("C:\\logger\\keyDLL\\Debug\\keyDLL.dll"));
hookProcAddress = (HOOKPROC)GetProcAddress(dllHandle, "_HookProcedure@12");
hhandle = SetWindowsHookEx(WH_KEYBOARD_LL, hookProcAddress, dllHandle, 0);
Sleep(INFINITE);
}
正如你所看到的,我正在做的钩子是CallNextHookEx,所以什么都没有。结果是,我可以打字整个句子,只有前两个单词在我完成后才能进入屏幕,其余部分需要几秒钟才能赶上。