![]() |
Tasten an Programm senden
Hallo,
habe jetzt schon seid über einer Stunde lauter Posts zum Thema gelesn und alle Möglichkeiten ausprobiert aber KEINE hat funktioniert. Ich öffne mit ShellExecute() ein Programm (klappt), dann möchte ich diesem Programm / Fenster die Taste: TAB und danach Strg+V senden. Kann jemand eine Lösung posten die funktioniert? Habe mit das Handle geholt, es ist nicht 0 , dann in Vordergrund geholt, dann keybd_event und Sendmessage und und und probiert.. nix hat geklappt. |
Re: Tasten an Programm senden
auf der Delphi CD gibsne schicke unit namens "SendKeys" - aber kA ob des auch bei > D7 dabei iss
ansonsten - Google ist dein Freund |
Re: Tasten an Programm senden
Habe mir die Unit besorgt, das Handle des Fensters bekomme ich auch jedoch:
Delphi-Quellcode:
Jedoch wird ALT+D nicht an die richtige Anwendung geschickt. Warum nicht?
procedure TForm1.DigitaleRckwrtssuchemiteinbeziehen1Click(Sender: TObject);
var targetWnd: HWND; begin // Markierte Nummer in Zwischenablage if LBNummern.Items.Count>0 then // nur wenn es einen gibt ClipBoard.AsText := LBNUmmern.Items.Strings[LBNummern.ItemIndex]; ShellExecute(Application.Handle, 'open' ,PChar('C:\Programme\Digitale Rückwärtssuche 2005\KINVERS.EXE'), nil, nil, sw_ShowNormal); sleep(4000); // Damit das Handle dann auch exisitert , gibts hier ne bessere Lösung? targetWnd := FindWindow('TKIMainF', 'Digitale Rückwärtssuche 2005'); if targetwnd <> 0 then begin SetForegroundWindow(targetwnd); SendKeys(targetwnd,'%D',false); end; end; |
Re: Tasten an Programm senden
So jetzt hab ich es endlich geschafft und zwar mit dieser Prozedure:
Delphi-Quellcode:
procedure SendAltTab;
var KeyInputs: array of TInput; KeyInputCount: Integer; procedure KeybdInput(VKey: Byte; Flags: DWORD); begin Inc(KeyInputCount); SetLength(KeyInputs, KeyInputCount); KeyInputs[KeyInputCount - 1].Itype := INPUT_KEYBOARD; with KeyInputs[KeyInputCount - 1].ki do begin wVk := VKey; wScan := MapVirtualKey(wVk, 0); dwFlags := KEYEVENTF_EXTENDEDKEY; dwFlags := Flags or dwFlags; time := 0; dwExtraInfo := 0; end; end; begin KeybdInput(VK_MENU, 0); // Alt KeybdInput(VK_TAB, 0); // Tab KeybdInput(VK_TAB, KEYEVENTF_KEYUP); // Tab KeybdInput(VK_MENU, KEYEVENTF_KEYUP); // Alt SendInput(KeyInputCount, KeyInputs[0], SizeOf(KeyInputs[0])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz