Hi,
ich würde es so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure TForm1.Button1Click(Sender: TObject); var I: Integer; Str: string; u: SHORT; begin Str := Edit1.text; Sleep(1000); for I := 1 to Length(Str) do begin
u:=VkKeyScan(Str[i]);
if (u and $0100)<>0 then keybd_event(VK_SHIFT, 0, 0, 0); if (u and $0200)<>0 then keybd_event(VK_CONTROL, 0, 0, 0); if (u and $0400)<>0 then keybd_event(VK_MENU, 0, 0, 0); keybd_event(u, 0, 0, 0);
keybd_event(u, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
Application.ProcessMessages; Sleep(50); end; end; |
Anmerkung: keybd_event ist von der Technik her das gleiche wie SendInput
du hast eine Kleinigkeit vergessen, nämlich SendInput und auch keybd_event verlangt ein
virtual-key codes, während du mit Ord() ein ASCII Code übergeben hast ... so kam es, das Sonderzeichen nicht funktionieren wollten, weil die Codes nur teilweise kompatibel waren weil du nämlich SHIFT, ALT usw. seperat simulieren musst.
Fehlerzeile: Inp.ki.w
Vk :=
Ord(Str[i]);
Du solltest wissen, "virtual key"'s hat für jede Taste EIN Code, und da gibt es auch kein Unterschied zwischen zB "a" und "A", da die beiden A's auf der selben Taste liegen und den Code $41 haben im Gegensatz zu ASCI-II, wo A = $41 und a = $61 ist.