![]() |
Öffnen eines Fensters überwachen, anschl. Aktionen ausführen
Hallo,
ich möchte geren überwachen ob in einer fremden Anwendung ein bestimmtes Fenster mit einem bestimmten Namen geöffnet wird. Wenn dann soll eine bestimmte Taste (anhand der Caption) gesucht und angeklickt werden. Die Überwachung über einen Timer, sowie das Vorhandensein der Taste habe ich hin bekommen, nun zu meinem Problem. 1.) Wie bekomme ich es hin, dass der Button im geöffneten Fenster individuell über den Button Handel ausgewählt werdne kann ?? 2.) Ich möchte nachdem ich die Aktion durchgeführt habe das entsprechende Fenster schließen. DestroyWindow schließt das Fenster leider nicht. Die Handels habe ich bereits überprüft.
Delphi-Quellcode:
Was mach ich falsch ??, Habt ihr eine Tipp ???
procedure Tform1.ClickIt;
var hWnd : Cardinal; hBtn : Cardinal; taste : string; ret : boolean; begin hWnd := FindWindow(nil, fenstername); if hWnd = 0 then begin Label4.Caption := 'Fenster nicht gefunden.'; button2.Enabled:=true; // exit; end else begin timer1.Enabled:=false; Label4.Caption := 'Fenster gefunden.'; // SetForegroundWindow(hWnd); SetWindowPos(hWnd, HWND_noTopMost, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE); hBtn := FindWindowEx(hWnd, 0, nil, drueck_taste ); ///// Buttonauswahl funktioniert nicht If hBtn <> 0 then begin PostMessage(hWnd , WM_KEYDOWN, hBtn , 0); PostMessage(hWnd , WM_KEYDOWN, VK_RETURN , 0); end; ////// FENSTER WIRD mit DestroyWindow(hWnd) NICHT GESCHLOSSEN !"!!! WARUM NICHT ????? if ((hWnd <> 0) and (not DestroyWindow(hWnd))) then begin MessageBox(0, 'Unable to destroy window!', 'Error', MB_OK or MB_ICONERROR); // hWnd := 0; end; timer1.Enabled:=true; end; end; mfg |
Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü
Zu 2. hilft ein Blick in die Win32-Hilfe.
Zitat:
|
Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü
1.EnumChildWindows könnte Dir weiterhelfen.
2.Du kannst ein Fenster i.a. schließen, wenn du ihm die Message 'WM_CLOSE' schickst. |
Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü
Und wenn Du das Handle des Buttons dann hast, kannst Du ihm ein BM_CLICK schicken, das müsste eigentlich funktionieren.
|
Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü
Also, mit
PostMessage(hWnd , WM_CLOSE , 0 , 0) kann ich das Fenster schließen, danke funktioniert. PostMessage(hBtn,BM_ClICK,0,0); (hBtn ist das Button Handle !!!) BM_Klick geht nun auch, ich hatte den falschen handel eingetragen. Vielen Dank läuft nun wie ich es möchte. mfg |
Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü
Jallo,
brauch nioch einmal Unterstützung, Gibt es auch eine Möglichkeit einen Text im Fenster zu finden. z.B. Das zu überwachende Fenster enthält einen Text z.B. "Aufruf 1", ich möchte nun aus meiner Anwendung im fremden Fenster überprüfen ob dieser Text vorhanden ist. FindWindowEx(wndChild, 0, PChar('Aufruf 1'), nil); finde ich nichts, ich denke hier ist mal wieder ei n Parameter falsch, kann aber nicht erkennen welcher : |
Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü
Was für ein Control enthält denn den zu suchenden Text? Wenn es sich um ein Label handelt, hast Du schlechte Karten.
[edit] Und dreh die letzten beiden Parameter mal um. [/edit] |
Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü
Hallo, im 3. Parameter musst du den Klassennamen (oder nil), im 4. Parameter den Fenstertitel (oder nil) übergeben.
|
Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü
Hallo,
ist ein Label, mit TEdit habe ich es einmal versucht, da funktionierts problemlos !! |
Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü
Labels haben kein Fensterhandle, deshalb findest Du es nicht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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