![]() |
Per Delphi mit laufender Word-Instanz verbinden / WORD OLE
Hallo!
Ich suche eine Möglichkeit, mein Delphi-Programm was immer laufen soll jeweils mit einer laufenden Instanz von Word zu verbinden. Zunächst hatte ich versucht, die Server-Komponenten (Word XP Application) im Designer zu verwenden und habe der Eigenschaft ConnectKind den Wert ckRunningOrNew zugewiesen. Das funktioniert, nur: Wenn Word nicht läuft, wird immer ein Prozess von Word gestartet der dann läuft. Das will ich nicht, sondern mein Programm soll eine Verbindung zu Word herstellen, wenn es vom Benutzer gestartet wurde. Dafür habe ich dann im Quellcode folgendes mit einem Timer versucht: Prozedur des Timer-Events:
Delphi-Quellcode:
Das ganze klappt nicht. Ich bekomme "Unable to retrieve a pointer to a running object registered with OLE for Word.Application [...]".
try
word := TWordApplication.Create(Application); word.AutoConnect := False; word.AutoQuit := False; word.ConnectKind := ckRunningInstance; word.Connect; // ... // -- hier dann: Operationen auf dem Word-Objekt -- // ... word.Disconnect; finally word.Free; end; Hat jemand eine Idee, was ich ändern muss? Oder eine ganz andere Idee, wie ich mein Delphi-Programm immer mit einer Word-Instanz verbinden kann?? Das ganze soll halt im Hintergrund passieren und es sollen NICHT extra Word-Prozesse (mit oder ohne Fenster) gestartet werden. |
Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O
Hi,
Du könntest zuerst mit FindWindow nach 'OpusApp' (Femsterklasse von MSWord) suchen. Wenn FindWindow 0 zurück gibt, dann läuft Word nicht.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Word: TWordApplication; WordWnd: HWND; begin WordWnd := FindWindow('OpusApp', nil); if WordWnd <> 0 then begin Word := TWordApplication.Create(nil); try Word.ConnectKind := ckRunningInstance; Word.Connect; ShowMessage(Word.ActiveDocument.Name); Word.Disconnect; finally Word.Free; end; end; end; |
Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O
Ich probies mal. Danke zunächst!
Wie wär es aber dann bei den anderen Office-Komponenten? Ist die Festerklasse in allen Versionn gleich? |
Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O
Zitat:
Code:
Excel : XLMAIN
Word : OpusApp Powerpoint 2002 : PP10FrameClass PowerPoint 2000 : PP9FrameClass PowerPoint 97 : PP97FrameClass PowerPoint 95 : PP7FrameClass Access : OMain FrontPage : FrontPageExplorerWindow40 Outlook : rctrl_renwnd32 MS Project : JWinproj-WhimperMainClass |
Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O
Hallo MB,
ist die Exception Zitat:
|
Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O
Mist... Du hast recht. Irgendwann habe ich den inneren try-except-block entfernt. Und das habe ich dann auch übersehen.... Der Fehler sitzt eben meistens doch vor der Tastatur ... ;-)
|
Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O
Hi!
Nun gibt es doch noch ein Problem: das ganze funktioniert, nur Word 2000 hängt sich auf, wenn mein Programm läuft und ich dann - auf normalem Wege - Word starten will. Mit anderern Word VErsionen tritt das Problem nicht auf. Hat da jemand eine Idee?? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 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