1.7k Aufrufe
Gefragt in Anwendungen(Java,C++...) von harvey17 Mitglied (235 Punkte)
hallo

ich habe jetzt schon seit fast 10 stunden das selbe problem und komm einfach nicht weiter.

also ich habe in einer consolen applikation einen char array festgelegt der z.B. so aussieht (zahlen und kleine buchsteben).

char Name[ ]="hanns56";

nun möchte ich das er das ganze nach ner bestimmten zeit wieder ausgiebt, also als wenn man es mit der tastatur eintippen würde.
das müsste irgentwie mit keybd_event oder SendInput() gehen.
könnte mir vieleicht jemand nin beispiel code posten?

ich programiere in c++
habe windowsXP
und benutze das programm dev c++

5 Antworten

0 Punkte
Beantwortet von harvey17 Mitglied (235 Punkte)
so ich bin jetzt so weit das ich das ganze mit zahlen hin bekomme.
aber komischer weise kann ich das nicht in ner for schleife machn sonden muss sone dummen goto befehle nehmen


#include <windows.h>
#include <iostream>
#include <iomanip>
using namespace std;

int main(void)
{
int x;
char Name[13] ,ABC[13];


for (x=0;x<14;x++)
{
Name[x]=0;
ABC[x]=0;
}

cout << "Eingabe: ";
cin >> ABC;

for (x=0;x<14;x++)
{
Name[x]=ABC[x];
}

for (x=0;x<14;x++)
{
cout << "Name"<<Name[x]<<endl;
cout << "ABC"<<ABC[x]<<endl;
}


char null[2]="0";
char eins[2]="1";
char zwei[2]="2";
char drei[2]="3";
char vier[2]="4";
char fuenf[2]="5";
char sechs[2]="6";
char sieben[2]="7";
char acht[2]="8";
char neun[2]="9";

x=0;
loop:

//--ZAHLEN--
if (Name[x]==null[0])
{
Sleep(1000);
keybd_event(0x60, 0, 0, NULL);
keybd_event(0x60, 0, KEYEVENTF_KEYUP, 0);
}
if (Name[x]==eins[0])
{
Sleep(1000);
keybd_event(0x61, 0, 0, NULL);
keybd_event(0x61, 0, KEYEVENTF_KEYUP, 0);
}
if (Name[x]==zwei[0])
{
Sleep(1000);
keybd_event(0x62, 0, 0, NULL);
keybd_event(0x62, 0, KEYEVENTF_KEYUP, 0);
}
if (Name[x]==drei[0])
{
Sleep(1000);
keybd_event(0x63, 0, 0, NULL);
keybd_event(0x63, 0, KEYEVENTF_KEYUP, 0);
}
if (Name[x]==vier[0])
{
Sleep(1000);
keybd_event(0x64, 0, 0, NULL);
keybd_event(0x64, 0, KEYEVENTF_KEYUP, 0);
}
if (Name[x]==fuenf[0])
{
Sleep(1000);
keybd_event(0x65, 0, 0, NULL);
keybd_event(0x65, 0, KEYEVENTF_KEYUP, 0);
}
if (Name[x]==sechs[0])
{
Sleep(1000);
keybd_event(0x66, 0, 0, NULL);
keybd_event(0x66, 0, KEYEVENTF_KEYUP, 0);
}
if (Name[x]==sieben[0])
{
Sleep(1000);
keybd_event(0x67, 0, 0, NULL);
keybd_event(0x67, 0, KEYEVENTF_KEYUP, 0);
}
if (Name[x]==acht[0])
{
Sleep(1000);
keybd_event(0x68, 0, 0, NULL);
keybd_event(0x68, 0, KEYEVENTF_KEYUP, 0);
}
if (Name[x]==neun[0])
{
Sleep(1000);
keybd_event(0x69, 0, 0, NULL);
keybd_event(0x69, 0, KEYEVENTF_KEYUP, 0);
}

x++;
goto loop;
}


und wenn ich das glaiche prinzieb nutze um buchstaben rein zu bringen geht es nicht mehr.


char A[2]="a";

//--ZAHLEN--
if (Name[x]==A[0])
{
Sleep(1000);
keybd_event(0x41, 0, 0, NULL); //für kleines a
keybd_event(0x41, 0, KEYEVENTF_KEYUP, 0);
}
0 Punkte
Beantwortet von bored Mitglied (197 Punkte)
Hallo!

Alternative 1 (wenn's unbedings char-arrays sein sollen)

#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;

int main(void) {
char * Name = (char*)malloc(sizeof(char) * 13);
char * ABC = (char*)malloc(sizeof(char) * 13);

// Strings initialisieren
*Name = '\0';
*ABC = '\0';

cout << "Eingabe: ";
cin >> ABC; // Achtung: hier potentieller Buffer-Overflow!!!

// Strings kopieren
memcpy(Name, ABC, strlen(ABC)+1);


cout << Name << "\n";
cout << ABC << "\n";

for (int i = 0; i < strlen(Name); i++) {
cout << Name[i];
Sleep(1000);
}
cout << "\n";
}



Alternative 2 (mit richtigen Strings)

#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;

int main(void) {

// Strings deklarieren
string Name;
string ABC;

cout << "Eingabe: ";
cin >> ABC;

// Strings kopieren
Name = ABC;

cout << Name << "\n";
cout << ABC << "\n";

for (int i = 0; i < Name.length(); i++) {
cout << Name[i];
Sleep(1000);
}
cout << "\n";
}


Da ich (mangels Windows) keine Ahnung habe, in welchem Header Sleep() deklariert ist, sind die Programme so natürlich (noch) nicht kompilierbar. Ich tippe aber mal, dass die in der windows.h drin waren...
0 Punkte
Beantwortet von harvey17 Mitglied (235 Punkte)
ok danke das ist schonmal ne vereinfachung.

Also das programm soll ein Bot für ein Browsergame weren.
deshalb muss es ein browserfenster öffnen, eine internet seite öffnen und auf ein feld klicken wo etwas rein geschrieben werden soll. soweit hab ich alles ohne probleme geschafft.

nun soll der bot aber auch noch in das feld ein vorher in der connsole eingegebenes word in das fenster schreiben. das ist mein großes problem.
0 Punkte
Beantwortet von bored Mitglied (197 Punkte)
Google -> WinAPI; Viel Spaß beim Lernen.

Ich werde mit Sicherheit nicht mithelfen, Bots für irgendwelche Spiele zu schreiben.
0 Punkte
Beantwortet von harvey17 Mitglied (235 Punkte)
ok :D trozdem danke
...