[c] SendInput() funktion anwenden

mmp05

Ensign
Dabei seit
Okt. 2005
Beiträge
209
(Windows XP prof. SP2)
Ich versuche schon eine Weile lang eine String aus dem Programm einfach mit SendInput () auszugeben.

Ich hab bis jetzt folgenden CODE:
Code:
#include <stdio.h>
#include <winuser.h>

int main (void)
{
char BenName[];
char PassWort[];

printf("Benutzername angeben: ");
gets(BenName);

printf("\nPasswort eingeben: ");
gets(PassWort);

//Warten, bis das Prog gestartet wurde
Sleep(21000);


//Ab hier weis ich nicht mehr weiter :( 
// Ausgabe des  TAB - Zeichens - 
?????????????????????????? 

//Kurz mal aufs Programm warten :)
Sleep(2000);

//Ausgabe des Strings BenNAme
????????????????????????????

// Ausgabe des  TAB - Zeichens - 
?????????????????????????????

//Kurz mal aufs Programm warten :)
Sleep(2000);

// Ausgabe des  TAB - Zeichens - 
???????????????????????????????? 

//Ausgabe des Strings PassWort
??????????????????????????????

//Kurz mal aufs Programm warten :)
Sleep(2000);

//Ausgabe der EnterTaste zum Bestätigen 
????????????????????????

getchar();
return 0;
}

Wo die ??????????????? stehn weis ich nicht wie ich das Anstellen soll.
Es sollte mit SendInput() funktionieren ... ich weis leider nicht wie es funktionieren soll
sry :)

Das ergebis des Programms soll ein Loginbot für ein Onlinespiel sein (Weil man meistens mindestens 3 mal anmelden muss bis man einmal drinne ist ^^)
Es Reicht mir am anfang jedoch, dass der Benutzername und das Passwort für den Login auf einer einfachen .txt dadei ausgegeben werden
 

Arnd

Lieutenant
Dabei seit
Jan. 2005
Beiträge
926
Warum benutzt Du nicht printf()? Deine String Arrays sollten übrigens eine Grösse haben, sonst überschreibst du Speicherbereiche.

Code:
#include <stdio.h>
#include <winuser.h>

int main (void)
{
char BenName[255];
char PassWort[255];

printf("Benutzername angeben: ");
gets(BenName);

printf("\nPasswort eingeben: ");
gets(PassWort);

//Warten, bis das Prog gestartet wurde
Sleep(21000);


//Ab hier weis ich nicht mehr weiter :( 
// Ausgabe des  TAB - Zeichens - 
printf( "\t");

//Kurz mal aufs Programm warten :)
Sleep(2000);

//Ausgabe des Strings BenNAme
printf( "%s", BenName);

// Ausgabe des  TAB - Zeichens - 
printf( "\t");

//Kurz mal aufs Programm warten :)
Sleep(2000);

// Ausgabe des  TAB - Zeichens - 

//Ausgabe des Strings PassWort
printf( "%s", char [255]);

//Kurz mal aufs Programm warten :)
Sleep(2000);

//Ausgabe der EnterTaste zum Bestätigen 
printf( "\r\n");

getchar();
return 0;

}
MfG

Arnd
 

mmp05

Ensign
Ersteller dieses Themas
Dabei seit
Okt. 2005
Beiträge
209
hää ?? die Ausgabe soll nicht auf der Konsole Passieren, sondern auf dem einem Anderen Programm, sogesagt in der "LUFT"

Wenn ich also eine .TXT datei aufmache und das CProg starte soll dass, was im array steht und die Tabs und Eingabetasten auf dieser .TXT datei ausgegeben werden.
 

Arnd

Lieutenant
Dabei seit
Jan. 2005
Beiträge
926
http://msdn.microsoft.com/library/d...eference/keyboardinputfunctions/sendinput.asp

Benutzt habe ich das noch nicht. Die Beschreibung sollte aber doch ausreichen um es auszuprobieren?

Die Funktion stellt ja lediglich Events in die Keyboard Queue ein. D.h. es ist nicht sichergestellt welches Programm die Events empfängt. Das wird dann eher das gerade ausgeführte Programm sein, weil das das aktive Fenster ist :-).
D.h. Du musst bei verwenden dieser Funktion noch etwas zusätzlichen Aufwand treiben und das gewünschte Programm in den Vordergrund bringen damit dieses auch die Tastendrücke ausliest.

Es Reicht mir am anfang jedoch, dass der Benutzername und das Passwort für den Login auf einer einfachen .txt dadei ausgegeben werden
Und von wegen hää? Dann solltest Du Deine Frage etwas exakter formulieren. Dafür reicht ein printf.


MfG

Arnd
 
Zuletzt bearbeitet:

ghorst

Lieutenant
Dabei seit
Mai 2005
Beiträge
643
wenn du das ganz in eine datei ausgeben willst, hast du zwei möglichkeiten:
1. implizit über pipes. also "programmaufruf > datei.txt" dann kannst du mit der datei arbeiten als sei sie der stdout. du musst dann allerdings die eingaben alle auch einmal ausgeben, aber da wirst du wohl so oder so nicht drumherum kommen.
2. explizit:
datei=fopen(dateiname);
und dann überall wo printf steht durch fprintf(datei,....) ersetzen am ende fclose(datei); aufrufen und fertig ist.

wenn du die ausgabe an stdout oder eine datei senden willst, machst du das so:
#include <stdio.h>
.....
FILE *ausgabe;
if (ausgabe_in_datei)
ausgabe=fopen(dateiname,"w");
else
ausgabe=stdout;
//dann der eigentliche code
fprintf(ausgabe,"irgendwas.\n");
if (ausgabe_in_datei)
fclose(dateiname);


achja tu der welt einen gefallen und lass die finger von dem sendinput-geraffel, wenn du es nicht absolut brauchst. hierbei ist es eindeutig überflüssig. das problem lässt sich einfach und elegant mittels der standardfunktionen von c lösen, daher sollte man auch nur die verwenden.
 
Zuletzt bearbeitet:
Top