我試圖建立自己的鍵盤記錄(私人/教育)來擴展我的技能。 我開始研究鉤子,在這種情況下是KBDLLHOOKSTRUCT。KBDLL掛鉤問題
我不知道這有什麼錯我的代碼,但它不工作。 我要做的就是:
與N-代碼,wParam和lParam加一回CallNextHookEx方法創建回調函數。
我設置在HHOOK的函數調用SetWindowsHookEx處理,把在一個無限循環。我的KBDLLHOOKSTRUCT設置爲* lParam,因爲lParam是一個指向包含我想要的信息的KBDLLHOOKSTRUCT的指針,對吧?
我的代碼:
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
HHOOK hookHandle;
KBDLLHOOKSTRUCT hookData;
LRESULT CALLBACK LowLevelKeyboardProc(int nC, WPARAM wP, LPARAM lP);
std::string readLogs();
void writeLogs(std::string logs);
int main()
{
hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, NULL, 0);
while(true) {
Sleep(1000);
}
return 0;
}
std::string readLogs() {
std::ifstream readFile;
readFile.open("logs.txt");
std::string logs;
readFile >> logs;
return logs;
}
void writeLogs(std::string logs) {
std::string oLogs = readLogs();
std::ofstream writeFile;
writeFile.open("logs.txt");
writeFile << oLogs + logs;
}
LRESULT CALLBACK LowLevelKeyboardProc(int nC, WPARAM wP, LPARAM lP) {
if (nC >= 0) {
if (wP == WM_KEYDOWN) {
hookData = *((KBDLLHOOKSTRUCT*)lP);
}
}
return CallNextHookEx(hookHandle, nC, wP, lP);
}
就忽略readLogs()和writeLogs()。
我認爲問題出在:
hookData = *((KBDLLHOOKSTRUCT*)lP);
但是,情況並非如此明顯,因爲INT x的一個簡單的增量並沒有發生。
因此我來這裏尋求幫助。我能做些什麼來解決我的問題?
這哪裏是所謂的x的增量? –
[原始輸入](https://msdn.microsoft.com/en-us/library/windows/desktop/ms645543.aspx) – theB
@EricBrown Here you go:http://pastebin.com/pSQ3mSs1 – Flinzy