Eingabeumlenkung
-
@Boris: Vielleicht solltest du mal überdenken, was du da eigentlich ausgibst

Rainu schrieb:
ABER jetzt habe ich erfahren das man das Prob auf echos höhren lasen kann (KeyLogger)
Also will ich jetzt folgendes Schreiben:
Ein keyLogger der Alle zeichen in eine log-Datei scheibt
Nur zur Info - ein KeyLogger reagiert normalerweise nicht auf einzelne Befehle, der fängt alles ab, was du an Tasten drückst. Und um sowas zu schreiben, müsstest du dir einen KeyBoard-Hook einrichten (mach dich mal im WinAPI Board schlau, wie das funktioniert).
-
ups.. glaube ich gebe "echo" aus;) dann halht den index argv jeweils um eins erhöhen
-
Das ist es ja! vergesst jetzt doch mal das ECHO
Ich will ja jedes EINZELNES zeichen abfangen.
-
Ich weiß, Self-Quotes sind bäh, aber:
CStoll schrieb:
Und um sowas zu schreiben, müsstest du dir einen KeyBoard-Hook einrichten (mach dich mal im WinAPI Board schlau, wie das funktioniert).
(die dafür benötigte Funktion nennt sich SetWindowHookEx())
-
Naja ok da das dann ja der Falsche Platzt ist schreibe ich das dann mal da rein.(ins WIN-API-Board)
Gut ich habe aber jetzt ncoh ein Prob ;p
#include <iostream> #include <vector> using namespace std; int main() { vector<char> test; char eingabe; while(cin.get(eingabe)) { test.push_back(eingabe); } for(int i=0;i<test.size();i++) { cout << hex << test[i]; } return 0; }ich will die ausgabe Hexadezimal ausgeben bzw auch Binär(wenn es denn Möglich ist
) Könnts mir da helfen xD
-
char's werden grundsätzlich in Zeichenform ausgespuckt, also mußt du sie für Hex-Ausgabe in int umwandeln (für Binärausgabe kannst du Bitset's verwenden):
cout<<hex<<setfill('0');//brauchst du btw nur einmal vor der Schleife for(int i=0;i<test.size();++i) { cout << setw(2) << (int)test[i]; } // bzw. for(int i=0;i<test.size();++i) { cout<<bitset<8>(test[i])<<' '; }
-
ok .. also das bitset<8> findet er nicht (vlt eine fehlende include datei).bei setfill('0') musste ich noch "#include <iomanip>" schreiben.
Eine Frage bleibt ausserdem noch
for(int i=0;i<test.size();++i)ruft er bei jedem schleifen durchlauf test.size() auf. Denn wenn ja wäre es sinvoll diese angabe in eine extra Variable zu schreiben (aus zeitgründen)?
-
perfomancetechnisch, düfte dies test.size() kein problem darstellen.. das geht vll. max ne 1ms

-
Rainu schrieb:
ok .. also das bitset<8> findet er nicht (vlt eine fehlende include datei).
Gut erkannt - und die nötige Headerdatei ist ...trommelwirbel... <bitset>
Eine Frage bleibt ausserdem noch
for(int i=0;i<test.size();++i)ruft er bei jedem schleifen durchlauf test.size() auf. Denn wenn ja wäre es sinvoll diese angabe in eine extra Variable zu schreiben (aus zeitgründen)?
Ja, macht er. Und nein, brauchst du normalerweise nicht (size() ist eine inline-Funktion und idR so klein, daß jeder vernünftige Compiler sie auch inline expandieren wird).
-
cool thx jetzt habe ich keine Fragen mehr

-
Verdammt x| jetzt habe ich schon wieder ein Prob -.-
#include <iostream> #include <iomanip> #include <bitset> using namespace std; int main(int argc, char *argv[]) { char eingabe; if(argv[argc-1][0]=='-' && argv[argc-1][1]=='b') { while(cin.get(eingabe)) cout<<bitset<8>(eingabe)<<" "; // Für Binäre Darstellung } else if(argv[argc-1][0]=='-' && argv[argc-1][1]=='x') { cout<< hex << setfill('0');//brauchst du btw nur einmal vor der Schleife while(cin.get(eingabe)) { cout <<hex<<setw(2)<< eingabe << " "; } } return 0; }echo "Hallo Welt!" | MyProg -x
' 0" 0h 0a 0l 0l ... '
Das kann ja nicht sein das ist ja nicht heyadezimal -.-
Binär klappt alles
-
CStoll schrieb:
char's werden grundsätzlich in Zeichenform ausgespuckt, also mußt du sie für Hex-Ausgabe in int umwandeln
Diese Umwandlung hast du vergessen - mach mal die Ausgabe per
cout<<setw(2)<<(int)eingabe<<" ";, dann sollte es eigentlich stimmen.
-
*kopfgreif* daran hab ich gar nicht gedacht. Sry vorallem weil du es doch schon mal geschrieben hast

Aber THX jetzt funztz wieder alles
