![]() |
Citrix Fenster / Unterfenster ermitteln
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich möchte eine auf Citrix laufende Anwendung fernsteuern. Wenn ich einen Daten eingebe und Enter sende, wird ggfs ein Mitteilungsfenster geöffnet. Dieser Inhalt wird ausgewertet und entsprechend darauf reagiert. Bis hierhin klappt alles soweit :-D Nun kann es sein, das diese Anwendung mehrfach auf dem läuft. Hier möchte ich herausfinden, ob das Mitteilungsfenster von meiner "Ferngesteuerten" Anwendung ist. Von dieser habe ich ja das Handle. Mit WinSpy sieht die Hirachie dann so aus wie in dem Bild im Anhang. Der Codegenerator von WinSpy wirft mir folgenden Code aus:
Delphi-Quellcode:
Nur bekomme ich als Handle hier immer "0" raus.
var
wndMain, wndChild: HWND; begin wndMain := FindWindow('Transparent Windows Client','POS-Desktop - ************* - \\Remote'); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, 'Transparent Windows Client', nil); if wndChild <> 0 then begin ShowMessage('Window Handle: ' + IntToStr(wndChild)); FlashControl(wndChild); // internal function end; end; end. Auch FindWindowEx und diverse Vorschläge aus der Suche bringen immer "0" als Ergebnis. Da WinSpy dies aber erkennt, muss es ja irgendwie klappen... :gruebel: Nur wie?? Gruß Torsten |
AW: Citrix Fenster / Unterfenster ermitteln
Der Code kam so aus der Funktion "Codegenerator" aus WinSpy.
Das Fenster hat zwar einen Titel, aber ich weiß nicht welchen, da der Titel ja abhängig vom Ergebnis der Aktion aus der Citrix Software ist. Anhand des Titels weiß ich, welche Aktion als nächstes Fällig ist. Ziel ist es herauszufinden, ist "Service-POS XXX" (hat eine einmalige Nummer) das letzte Fenster oder gibt es hier noch ein Unterfenster, wenn ja, mit welchem Titel. Aktuell Frage ich mit "EnumWindows" alle Fenster ab die als ClassName "Transparent Windows" haben. Dies klappt, allerdings nur wenn eine Instanz läuft. Bei mehreren Instanzen kann ich so nicht mehr zuordnen, welches Unterfenster wo hin gehört. Das Handle des ersten Fensters finde ich ja mit "FindWindow". In "FindWindowEX" übergebe ich das Handle aus "FindWindow" und den mit bekannten ClassName. Als Ergeniss bekomme ich dann aber "0" raus, selbst wenn ich den Namen des Fensters anstelle NIL eingebe |
AW: Citrix Fenster / Unterfenster ermitteln
Hallo Frühlingsrolle,
vielen Dank für deinen Tipp mit "GetWindow". Dies brachte den gewünschten Erfolg. Zwar hat "GW_Child" hier auch immer "0" rausgeworfen, "GW_EnablePopUp" zeigt mir das richtige Handle. Ist kein Übergeordnetes Fenster vorhanden, bekomme ich "0" > so ist es Super :-D Bei Citrix ist das alles anscheinend etwas anders. Gruß Torsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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 by Thomas Breitkreuz