![]() |
Anderes Program -> Menü klicken
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Ich versuche schon seit Stunden mein Delphi programm dazu zu überreden in einem anderen Programm auf einen Unterpunkt im Menü zu klicken. Mit diesem Code ermittle ich das Handle des anderen Programms:
Delphi-Quellcode:
Das funktioniert auch wunderbar.
function FindWindowByTitle(WindowTitle: string): Hwnd;
var NextHandle: Hwnd; NextTitle: array[0..260] of char; begin // Get the first window NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST); while NextHandle > 0 do begin // retrieve its text GetWindowText(NextHandle, NextTitle, 255); if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then begin Result := NextHandle; Exit; end else // Get the next window NextHandle := GetWindow(NextHandle, GW_HWNDNEXT); end; Result := 0; end; Nun hab ich das Handle des Programms und nun möchte ich automatisch auf "Start Capture" klicken lassen....wie stelle ich das an? Wie man sieht gibt es dafür keinen Tasten-Shortcut. Der "klick" muss auch unabhängig von der Position des Programms auf dem Bildschirm sein. Ich habe mir überlegt, dass es einfach wäre zu simulieren: ALT drücken => "nach unten taste" => 3x nach rechts bis "capture" => dann "ENTER" Allerdings scheitert es schon daran, dass ich zwar Buchstaben simulieren kann mit:
Delphi-Quellcode:
jedoch das drücken der ALT Taste funktioniert anscheinend nicht richtig.
PostMessage(h,WM_KEYDOWN,68,0);
PostMessage(h,WM_CHAR,68,0); PostMessage(h,WM_KEYUP,68,0); Probiert hab ich es mit:
Delphi-Quellcode:
Für Tipps wäre ich sehr dankbar.
PostMessage(h,WM_SYSKEYDOWN,VK_MENU,0);
PostMessage(h,WM_SYSKEYUP,VK_MENU,0); |
AW: Anderes Program -> Menü klicken
Ich hoffe, ich habe nicht allzuviele Fehler gemacht, aber hier ein Beispiel, um in Notepad "Speichern unter" auszulösen:
Delphi-Quellcode:
procedure TfrmTest.btnSaveClick(Sender: TObject);
var Wnd: HWND; mnu: hMenu; ID: UINT; begin //Fensterhandle ermitteln Wnd := FindWindow('notepad',nil); if Wnd <> 0 then begin //Menü des Fensters ermitteln mnu := GetMenu(Wnd); if mnu <> 0 then begin //Untermenü des ersten Items ("Datei") mnu := GetSubMenu(mnu,0); if mnu <> 0 then begin //4. Item ("Speichern unter") ID := GetMenuItemID(mnu,3); if ID <> 0 then //auslösen PostMessage(Wnd,WM_COMMAND,ID,0); end; end; end; end; |
AW: Anderes Program -> Menü klicken
Perfekt.
Vielen Dank funktioniert wunderbar :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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