![]() |
Handle von Buttons auf Microsoft-Standardformularen...
Hallo zusammen,
habe folgende Anforderung, die ich in meinem Delphi-Projekt umsetzen muss: Möchte verschiedene Microsoft-Standard-Dialoge (z.B. der Dialog zum Aktivieren oder Deaktivieren von Makros beim Start eines Word-Dokuments) erkennen und entsprechend der Dialoge verschiedenartig reagieren. Mit den API-Funktionen FindWindow bzw. EnumWindow bekomme ich zwar das Handle für das Formular. Da aber, z.B. die MS Word-Standard-Dialoge alle die selben Caption („Microsoft Word“) und den selben ClassName (je nach Word-Version verschieden, z.B. bosa_sdm_Microsoft Word 9.0) besitzen fehlt mir ein Kriterium zur Unterscheidung der einzelnen Standard-Dialoge. Wollte nun die Texte der einzelnen Buttons, die auf diesen Dialogen platziert sind, herauslesen (EnumChildWindows), um dann passend reagieren zu können. Hatte aber keinen Erfolg. Habe auch schon mit der Funktion EnumThreadWindows versucht die Handle der Buttons herauszubekommen, was leider auch nicht funktionierte. Kann mir jemand einen Tipp geben wie ich die Handle der Buttons von Microsoft-Standarddialogen herausbekomme ? Bin für jede Hilfe sehr dankbar! Gruss Herbie |
Re: Handle von Buttons auf Microsoft-Standardformularen...
Hallo,
ich bin mir recht sicher, dass die Buttons als Kinder des Dialogfensters registriert sind. Wenn dem so ist, dann kannst du die Handles finden, indem du alle Kinder des Dialogs durchsuchst. In diesem Thread: ![]() habe ich schon mal eine Funktion gepostet, die alle Kinder eines gegebenen Fensters durchsucht. Mit ein Wenig Modifikation sollte es dann gehen. Reddog. [EDIT] Hmm, ich hab jetzt gemerkt, dass du's schon mit EnumChildWindows versucht hast, aber vielleicht klappt es mit GetNextWindow besser. Naja, wenn nicht, dann weiß ich leider auch nicht weiter. |
Re: Handle von Buttons auf Microsoft-Standardformularen...
![]() ![]() Was hast du denn vor? Eventuell gibt es einen anderen Weg. Warum musst du die Dialoge Identifizieren? Da fällt mir noch was ein. Kuck doch mal mit einem Tool, ob du nicht ein einzigartige Fenster findest, dannkannst du gezielt kucken, ob es da ist oder nicht und dann den Dialog identifizieren. Ein mögliches Tool wäre von mir WindowInfo -> ![]() |
Re: Handle von Buttons auf Microsoft-Standardformularen...
Hallo Luckie,
warum ich diese Funktionalität benötige stellt sich folgendermaßen dar: Ich habe eine Delphi-Anwendung die sich Dateien von einem Server holt, öffnet, ausdruckt und wieder schließt. Dies können Word-, Excel-, Power-Point- und/oder andere Dateien sein. Damit ich die Dateien ausdrucken kann, muss ich diese natürlich "sauber öffnen" können. Um die Dialoge, die z.B. während eines Word-Aufrufs erscheinen können (Serienbrief-Quelle suchen, Makro aktivieren usw.), habe ich diese Sonderfälle in einer INI-Datei deklariert, so das mein Programm weiß was zu tun ist, wenn ein spezieller Dialog erscheint. Jetzt haben aber leider diese Microsoft-Dialoge eines Office-Programms die selben Windows-Caption's und den selben Class-Name (habe ich von Deinem WinInfo auch so bestätigt bekommen). Somit kann ich nicht verschiedenartig auf diese Dialoge reagieren, obwohl ich dies aber muß, um das Dokument sauber öffnen zu können. Deshalb ist meine Idee zusätzlich nach speziellen Button-Texten der Dialoge zu suchen und dann gezielt reagieren zu können. Hoffe ich habe es einigermaßen verständlich erklärt! Gruss Herbie |
Re: Handle von Buttons auf Microsoft-Standardformularen...
Moin Herbie,
und wenn Du jetzt für das Ganze die COM Server von Word usw. verwendest? Kommen dann überhaupt die Dialoge? |
Re: Handle von Buttons auf Microsoft-Standardformularen...
Hallo Christian,
was meinst Du mit "Com-Server"? Gibts den als Delphi-Komponente, mit der ich dann z.B. Word fernsteuern kann oder wie ist das zu verstehen? Für alle, die es interessiert: Das mit den Handle von Buttons auf Wiondows-Dialogen funktioniert nicht. Hier die Anwort aus dem Microsoft-Forum: Word (and also Excel) doesn't use windows for the controls within its dialogs. Therefore you won't find handles to these controls. Gruss Herbie |
Re: Handle von Buttons auf Microsoft-Standardformularen...
Moin Herbie,
den genauen Umgang damit kann ich Dir auch nicht verraten, aber bei der EE kannst Du mal in der Komponentenpalette unter Servers nachschauen. Bei meiner D5 Pro liegen sie da zumindest. Ausserdem müsstest Du dazu auch hier etwas dazu finden können. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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