我想在C++中製作一個簡單的鍵盤記錄程序(僅供學習),並且它不太適合我的工作方式。我的目標是讓它寫入一個txt。下面的代碼我到目前爲止:C++ Keylog無法正常工作
#include <iostream>
#include <fstream>
#include <conio.h>
#define LOG(x) logger << x;
int main()
{
using std::ofstream;
using std::fstream;
ofstream logger("logger.txt", fstream::app);
char ascii;
bool typing;
for(;;)
{
if(_kbhit())
{
typing = true;
ascii = getch();
while(typing == true) //tried 'if', doesn't work
{
LOG(ascii);
std::cout << ascii << std::endl;
//typing = false;
//break
//tried using the above two and didn't work
}
}
else typing = false;
}
logger.close();
}
當我做while(typing == true)
連續,即連續按下這個鍵纔會打印出來,但至少它實際上被保存到TXT。當我嘗試在一次鍵盤單擊後停止循環時,沒有任何內容保存到txt中。
那麼我做錯了什麼?謝謝你的幫助!
由於我的編譯器和它的工作原理,我使用了你的註釋代碼,並且只爲'_getch'切換'getch',不知道你的問題是什麼。 –
嗯...仍然不適合我。我無法保存一個角色,但程序會直接退出。 –
在Windows上,我遇到了與@ArchieGertsman相同的問題。另外,我不喜歡你的'#define LOG(x)'。請使用一個函數,或者寫下你的意思,讓你的代碼更清晰。預處理器只能在必要時使用。 – Cebtenzzre