haentschman wie gesagt, ich wollte einfach mal einen Text schreiben über simulierte Tasten, mehr nicht

Ich gebe einen String vor und die Anzahl der Wiederholungen. die Checkbox macht eben das return, oder eben kein return zischen den Wiederholungen..
beispiel: string: ABC, WDH: 5, checkbox:=True ->
ABC
ABC
ABC
ABC
ABC
Code:
procedure TForm1.SendKeys(const S: String);
var
InputEvents: PInput;
I, J: Integer;
begin
if S = '' then
Exit;
GetMem(InputEvents, SizeOf(TInput) * (Length(S) * 2));
try
J := 0;
for I := 1 to Length(S) do
begin
InputEvents[J].Itype := INPUT_KEYBOARD;
InputEvents[J].ki.wVk := 0;
InputEvents[J].ki.wScan := Ord(S[I]);
InputEvents[J].ki.dwFlags := KEYEVENTF_UNICODE;
InputEvents[J].ki.time := 0;
InputEvents[J].ki.dwExtraInfo := 0;
Inc(J);
InputEvents[J].Itype := INPUT_KEYBOARD;
InputEvents[J].ki.wVk := 0;
InputEvents[J].ki.wScan := Ord(S[I]);
InputEvents[J].ki.dwFlags := KEYEVENTF_UNICODE or KEYEVENTF_KEYUP;
InputEvents[J].ki.time := 0;
InputEvents[J].ki.dwExtraInfo := 0;
Inc(J);
end;
SendInput(J, InputEvents[0], SizeOf(TInput));
if Checkbox1.checked=True then
begin
Keybd_Event(VK_RETURN, 1, KEYEVENTF_EXTENDEDKEY, 0) ;
Keybd_Event(VK_RETURN, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
end;
finally
FreeMem(InputEvents);
end;
end;