Hallo
DP-Mitglieder,
vor einigen Tagen bestand bei mir Bedarf, Tastatureingaben zu simulieren, wofür die Windows-Funktion
SendInput ja auch implementiert wurde. Doch das Array aufzubauen, welches die Funktion erwartet, ist ein Graus. So muss z.B. für jede Taste einmal der gedrückt und dann wieder der losgelassen Status einzeln angegeben werden. Es ist schon klar, dass es so sein soll, damit man die Kontrolle hat, aber es ist sehr mühsam und schreit geradezu nach einer Klasse die das ganze etwas vereinfacht.
Ich lege am einfachsten mit einem Beispiel los. Notepad starten:
Delphi-Quellcode:
uses SendInputHelper;
with TSendInputHelper.Create do
begin
AddShortCut([ssWin], 'r'); // [Win] + [R]
AddDelay(100); // Verzögerung in ms
AddText('cmd', TRUE); // TRUE = AppendReturn
Flush; // Erst hier werden die zuvor hinzugefügten
// Eingaben gebündelt abgesetzt.
Free;
end;
Jeder der mit SendInput schon mal gearbeitet hat, wird wissen, was das für eine Vereinfachung mit sich bringt. Desweiteren wird der Caps-Lock-Zustand in der Methode Flush neutralisiert, soll heißen, dass im obigen Beispiel auch wirklich 'cmd' und nicht 'CMD' gesendet wird, wenn der Benutzer die Feststelltaste (wohl aus versehen) aktiviert hat.
Ich weiß, es ist eigentlich kein "richtiges" Projekt, doch ich sehe es einfach mal als eines an und habe es auch bei sourceforge veröffentlicht:
SendInputHelper auf GitHub
Dort ist auch ein umfangreicheres Beispiel (auch compiliert) dabei.
mfg