AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Handle von Buttons auf Microsoft-Standardformularen...
Thema durchsuchen
Ansicht
Themen-Optionen

Handle von Buttons auf Microsoft-Standardformularen...

Ein Thema von Herbie · begonnen am 29. Jul 2004 · letzter Beitrag vom 30. Jul 2004
Antwort Antwort
Herbie

Registriert seit: 23. Jul 2004
Ort: Augsburg
14 Beiträge
 
Delphi 6 Enterprise
 
#1

Handle von Buttons auf Microsoft-Standardformularen...

  Alt 29. Jul 2004, 07:24
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
Jan Herbert
  Mit Zitat antworten Zitat
Benutzerbild von Reddog
Reddog

Registriert seit: 18. Jul 2004
Ort: Würzburg
56 Beiträge
 
#2

Re: Handle von Buttons auf Microsoft-Standardformularen...

  Alt 29. Jul 2004, 12:37
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: http://www.delphipraxis.net/internal...183&highlight=
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.
All prime numbers are odd with the exception of two, which is an odd prime
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Handle von Buttons auf Microsoft-Standardformularen...

  Alt 29. Jul 2004, 13:40
MSDN-Library durchsuchenGetNetxWindow ist, so viel ich weiß, nur für TopLevel Fenster geeignet und selbst da nicht sehr zuverlässig. MSDN-Library durchsuchenEnumChildWindows wird der einzig gehbare Weg sein denke. Wenn sich die Dialoge nur in den Childfenstern unterscheiden, ist das aber auch mit entsprechendem Aufwand verbunden.
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 -> http://downloads.luckie-online.de
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Herbie

Registriert seit: 23. Jul 2004
Ort: Augsburg
14 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Handle von Buttons auf Microsoft-Standardformularen...

  Alt 29. Jul 2004, 16:11
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
Jan Herbert
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Handle von Buttons auf Microsoft-Standardformularen...

  Alt 29. Jul 2004, 21:51
Moin Herbie,

und wenn Du jetzt für das Ganze die COM Server von Word usw. verwendest?
Kommen dann überhaupt die Dialoge?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Herbie

Registriert seit: 23. Jul 2004
Ort: Augsburg
14 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Handle von Buttons auf Microsoft-Standardformularen...

  Alt 30. Jul 2004, 12:39
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
Jan Herbert
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Handle von Buttons auf Microsoft-Standardformularen...

  Alt 30. Jul 2004, 17:57
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz