![]() |
Button in externem Fenster klicken
Hallo,
weiß jemand, wie ich den (z. B. OK-) Button in einem externen Fenter "anklicken" kann? Grüße Frank |
Re: Button in externem Fenster klicken
erstmal des handle vom button finden und dann
postmessage(buttonhandle,WM_BUTTONKLICK,0,0); glaub ich |
Re: Button in externem Fenster klicken
Hi!
1. Handle des Buttons suchen. Dazu benötigst du das Handle des Fensters, auf dem der Button liegt --> Mit FindWindow suchen. Dann per EnumChildWindows den Button suchen. 2. Ein BM_CLICK an den Button schicken.
Delphi-Quellcode:
Beispiel: im Ausführen Dialog 'Durchsuchen...' anklicken:
function EnumChildProc(Wnd: hWnd; SL: TStrings): BOOL; stdcall;
var szFull: array[0..MAX_PATH] of Char; //Buffer for window caption begin Result := Wnd <> 0; if Result then begin GetWindowText(Wnd, szFull, SizeOf(szFull)); // put window text in buffer if (Pos(SL[0], StrPas(szFull)) > 0) // Test for text and (SL.IndexOfObject(TObject(Wnd)) < 0) // Test for duplicate handles then SL.AddObject(StrPas(szFull), TObject(Wnd)); // Add item to list EnumChildWindows(Wnd, @EnumChildProc, Longint(SL)); //Recurse into child windows end; end; function ClickButton(ParentWindow: Hwnd; ButtonCaption: string): Boolean; var SL: TStringList; H: hWnd; begin SL := TStringList.Create; try SL.AddObject(ButtonCaption, nil); // First item in list is text to find EnumChildWindows(ParentWindow, @EnumChildProc, Longint(SL)); H := 0; case SL.Count of 1: ShowMessage('Window text not found.'); 2: H := hWnd(SL.Objects[1]); else ShowMessage('Ambiguous text detected.'); end; finally SL.Free; end; Result := H <> 0; if Result then PostMessage(H, BM_CLICK, 0, 0); end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var wnd: HWND; begin wnd := FindWindow('#32770','Ausführen'); if wnd <> 0 then begin ClickButton(wnd,'&Durchsuchen...'); end; end; |
Re: Button in externem Fenster klicken
Hallo,
danke für Eure Antworten, ausführlicher gehts kaum :-D Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 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