Programm im hintergrund aktiv laufen lassen

Hallo zusammen.
Fürchte muss euch wieder ein mal stören.
Übrigens versuche ich meine rechtschreibung zu verbessern :wink:

also ich wollte eine kleine art "keylogger" schreiben der so aussieht:
----------------------------------------------------------------------------------
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;

int main()
{
int iKey; //char to int

while(iKey != 35)
{
iKey = getch();
cout << " " << iKey;
}
cin.get();
return 0;
}
----------------------------------------------------------------

Nun, wenn ich die exe starte und etwas eintippe, funktioniert dass ganz gut, aber nicht wenn ich das fenster minimiere.

Kann ich da was machen, damit es die getippten "Daten" auch mitschreibt wenn es im Hintergrund läuft?

Wäre euch sehr dankbar.

Liebe Grüsse und geniesst den Sonnenschein (in der schweiz zumindenst)

Compilerjunge123



EDIT

Will übrigens keinen keylogger in diesem Sinne, sondern wissen wie das funktioniert mit dem Protokollieren und im Hintergrund ausführen etc.
 
Zuletzt bearbeitet:
Soweit ich weiß geht getc nur wenn das Program den "Fokus" hat.
Wenn du unter win arbeitest versuche vlt. GetAsyncKeyState

Geht aber sicherlich auch anders/ (schoener ?)
 
Ihr werdet euch jetzt aufregen aber...
ich habe keinen Plan was ihr meint. :(

Könnt ihr mir ev. wenn ihr Zeit habt ein Beispiel machen dass es für Anfänger nachvollziebar ist? So mit den librarys (oder wie man dass schreibt)
Und mit MSDN kann ich leider auch nicht viel anfangen. :wall:

Tausend Dank!!
 
Naja ich spreche nicht extrem gut Englisch und das meiste stand auf Englisch.

Hab mal diesen Code *geklaut*:
----------------------------------------------------------
#include <windows.h>
#include <fstream>
using namespace std;

int main()
{
int counter=0;
ofstream myfile;
myfile.open("example.txt");
while(true)
{
if(GetAsyncKeyState(VK_ESCAPE))
{
counter++;
myfile <<"Escape : " <<counter;
}

Sleep(10); // NEW LINE OF CODE - pauses for 10 milliseconds
}
return 0;
}
---------------------------------------------------

So, wenn ich dass richtig gelesen habe sollte immer wenn ich ESC drücke stehen,
dass ich das erste mal, das zweite mal...etc. gedrückt habe.

Bei mir ist aber ein schwarzes Fenster bei dem nichts passiert X(

Bin ich so unfähig? :wall:
 
GetAsyncKeyState ist zeitkritisch. Man bekommt nur Tastendrücke zum Zeitpunkt der Prüfung bzw. nur die letzte gedrückte Taste. Man muss also ständig prüfen, weil man ja eig. jeden Tastendruck mitbekommen möchte.

Das Ergebnis sind oft abgehackte und unvollständige Keylogs. Auch gibt es Probleme mit Groß- und Kleinschreibung und Sonderzeichen, wenn man nicht trickst.

Globale Tastatur-Hooks zu benutzen ist ein nicht sehr netter Eingriff und wird häufig auch als Schadsoftware erkannt.

Eine sinnvolle Alternative ist:
RegisterRawInputDevices
GetRawInputData
 
Zurück
Oben