Einzelnen Beitrag anzeigen

derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#14

AW: Sendkeys, "Enter" einbauen

  Alt 31. Jan 2017, 10:12
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;
  Mit Zitat antworten Zitat