Autor Beitrag
Herbie
Hält's aus hier
Beiträge: 9

Win 2000, Win XP
D6 Ent
BeitragVerfasst: Do 29.07.04 10:28 
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
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Do 29.07.04 21:00 
waru schreibst du nicht eine DLL für Word und bindest die dort via Plugins rein?
grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
Herbie Threadstarter
Hält's aus hier
Beiträge: 9

Win 2000, Win XP
D6 Ent
BeitragVerfasst: Fr 30.07.04 07:16 
Hallo MSCH,

da ich nicht nur Word-Dateien sondern auch Dateien anderer Programme checken muss, will ich nicht für jede Applikation DLL's schreiben.
Hintergrund meiner Frage ist folgende Anforderung:
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. 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.

_________________
Gruss
Herbie
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Fr 30.07.04 07:28 
ich kann leider nur für Word sprechen; imho klappts aber bei allen Office-Teilen; du kannst doch, wenn du die Word2000.pas einbindest, dein Word komplett "fernwarten", also auch alle Dialoge wie zum beispiel Seriendruck etc. per Anwendung deklarieren. Ich mach dann erstmal alle Aktionen in Word mit der Makroaufzeichnung - die DelphiSyntax ist fast die selbe.

vieleicht hilfts
grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?