Tastendruck simulieren
-
Ok, ich merk, ich hab's dum formuliert^^
Wie ich einen Tastendruck simulieren kann weiß ich, aber ich will ja das ungefähr so machenText = Edit1->Text; keybd_event(text, 0, 0, NULL); ...Nur geht das ja nicht. Wie muss ich denn Text konvertieren?
-
Hallo
keybd_event erwartet als ersten Parameter ein BYTE, also ein char.
Denn es geht ja um ein Zeichen, und nicht um eine Zeichenkette.bis bald
akari
-
Aaaaahhh, endlich hab ich mal verstanden was ein Char ist

Danke hehe!
Ja gut, dann geht das wohl nicht mit keybd oder was?
-
Hallo
doch. Du must nur aus der Zeichenkette Text erstmal ein Zeichen auswählen, das du an keybd_event übergibst.
Text = Edit1->Text; // Wenn Text nicht leer, erstes Zeichen an keybd_event übergeben if (Text != "") keybd_event(Text[1], 0, 0, NULL);bis bald
akari
-
Ja das klingt gut, nur brauch ich dazu doch noch Length oder?
Ich muss ja schließlich wenn ich eine for-Schleife mache, dem Compiler sagen, wann das Wort zu Ende ist.
Allerdings funktioniert der befehl length nicht...jedenfalls nicht so wie bei Delphi.
-
Hallo
klar funktioniert AnsiString::Length().
Du darfst nur nicht vergessen, das bei AnsiString die Zählung der Zeichen bei 1 anfängt.Ansosnsten zeig mal deinen Code, der nicht funktioniert (was im übrigen keine ausreichende Fehlerbeschreibung ist)
bis bald
akari
-
Hm, mit dem AnsiString Length komm ich nicht weiter^^
void __fastcall TForm1::Timer1Timer(TObject *Sender) { Timer1->Interval = 100; AnsiString Text = Edit1->Text; int Leng = AnsiString->Length(Text); int i; for (i = 1, i <= Leng, i++) { keybd_event(Text[i], 0, 0, NULL); keybd_event(Text[i], 0, KEYEVENTF_KEYUP, 0); } keybd_event(13, 0, 0, NULL); keybd_event(VK_CONTROL, 0, 0, NULL); keybd_event(13, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); }
-
Ändere
int Leng = AnsiString->Length(Text);in
int Leng = Text.Length();
-
Ah, gut, jetzt klappt es einigermaßen.
Aber wenn ich als Text "a" eingeb, wird immer "1" ausgegeben... Bei "b" dann "2" usw....void __fastcall TForm1::Timer1Timer(TObject *Sender) { AnsiString Text = Edit1->Text; int Leng = Text.Length(); int i; for (i = 1; i <= Leng; i++) { keybd_event(Text[i], 0, 0, NULL); keybd_event(Text[i], 0, KEYEVENTF_KEYUP, 0); } keybd_event(13, 0, 0, NULL); keybd_event(VK_CONTROL, 0, 0, NULL); keybd_event(13, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); }
-
Also, was für einen Grund hat es, das der Text in Zahlen konvertiert wird? oO