Du hast die Funktion noch nicht richtig verstanden.
Der erste Parameter der Funktion
keybd_event verlangt nicht ein Zeischen sondern einen Tastencode.
um ein "a" oder ein "A" darzustellen ist der Tastencode gleich (ist schließlich die gleiche Taste auf der Tastatur). Wenn du jedoch ein großes "A" haben willst musst du zuvor die Shift-Taste drücken und danach wieder los lassen.
Daraus ergibt sich dann das
Ord(AText[xInd]) an dieser Stelle falsch ist denn ord('a') und ord('A') ergeben obwohl "a" und "A" auf der gleichen Taste liegt.
Ord gibt dir also nur den
Ascii-Wert des Zeischens (oder wars
Ansi - ist aber egal).
den Tastaturcode eines zeischens bekommst du mit
VkKeyScan(AText[xInd])
in diesem Tastaturcode ist auch enthalten ob die Shifttaste dazu gedrückt sein muss etc.
Mit
Delphi-Quellcode:
for xInd := 1 To Length(AText) Do
begin
lByte := VkKeyScan(AText[xInd]);
keybd_event(lByte, MapVirtualKey(Ord(AText[xInd]),1), 0, 0 );
keybd_event(lByte, MapVirtualKey(Ord(AText[xInd]),1), KEYEVENTF_KEYUP, 0 );
Application.ProcessMessages;
end;
bekommst du aber noch nicht das gewünschte Ergebnis da hier nicht berücksichtigt wird das Shift etc. mit gedrückt werden muss.
Wenn also AText = "ABCabc" ist würdest du bei diesem Beispiel dann noch "abcabc" bekommen weil eben die Shifttaste nicht gedrückt wird. Du musst also noch die Bits von lByte auswerten welche festlegen ob die shifttaste, strg-Taste oder Alttaste mit gedrückt werden muss.