AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Automatisierung einer SPEZIFISCHEN Word-Instanz bei Vorhandensein mehrerer Instanzen
Thema durchsuchen
Ansicht
Themen-Optionen

Automatisierung einer SPEZIFISCHEN Word-Instanz bei Vorhandensein mehrerer Instanzen

Ein Thema von Bernhard73 · begonnen am 12. Sep 2020 · letzter Beitrag vom 14. Sep 2020
 
Bernhard73

Registriert seit: 4. Jul 2010
42 Beiträge
 
Delphi 11 Alexandria
 
#1

Automatisierung einer SPEZIFISCHEN Word-Instanz bei Vorhandensein mehrerer Instanzen

  Alt 12. Sep 2020, 15:01
Hallo zusammen,

ich arbeite gerade an einem Textgenerator für den medizinischen Bereich, der aus stichwortartigen Angaben einen Befundtext generiert und in eine externe Befundverwaltungssoftware einfügt. Die externe Software nutzt Microsoft Word als Texteditor in Form eines eingebetteten Plugins, die Texteinfügung erfolgt per Word-Automatisierung.
Problematisch ist jetzt, das im Arbeitsumfeld eigentlich immer mindestens zwei und manchmal noch mehr Word-Instanzen gleichzeitig laufen. Da bei herkömmlicher Herangehensweise

wrdApp := GetActiveOleObject('Word.Application');

die automatisierte Instanz ist stets die ist, die zuerst gestartet wurde, und die meist nicht die richtige ist, muss ich anders vorgehen.

Nach einigem herumgooglen bin ich u.a. auf

AccessibleObjectFromWindow (zur Verfügung gestellt in OleAcc)

gestoßen. Der Funktionsbeschreibung nach könnte es auf diesem Wege funktionieren.

hatsgeklappt:= AccessibleObjectFromWindow( windowhandle, OBJID_NATIVEOM, StringToGUID('{00020400-0000-0000-C000-000000000046}'), rueckgabewert);

- Das Handle des Dokumentwindows kann ich über die Caption der Instanz und anschließende Enummerierung der Unterwindows ermitteln, das funktioniert soweit.
- OBJID_NATIVEOM ist eine Konstante und soll wohl $FFFFFFF0 sein
- als nächstes die GUID
- rueckgabewert ist laut Microsoft Doku "Address of a pointer variable that receives the address of the specified interface."

Ich bin mir nun nicht so ganz sicher wie ich "rueckgabewert" zu deklarieren habe und wie ich über diesen Rückgabewert dann wieder in ein Objekt verwandele, mit dem man "wie gewohnt" arbeiten kann, wie z.B.

<blabla>.Selection.TypeText("Hallo!");

Wenn mir hier jemand auf die Sprünge helfen könnte, wäre ich dankbar. Auch für einen Hinweis, wenn ich hier möglicherweise ganz auf dem Holzweg bin. Mit dem Thema kenne ich mich leider nicht wirklich aus...

Danke
Bernhard
  Mit Zitat antworten Zitat
 

 

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 21:39 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