AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Per Delphi mit laufender Word-Instanz verbinden / WORD OLE
Thema durchsuchen
Ansicht
Themen-Optionen

Per Delphi mit laufender Word-Instanz verbinden / WORD OLE

Ein Thema von mbs · begonnen am 19. Mär 2004 · letzter Beitrag vom 22. Apr 2004
Antwort Antwort
mbs

Registriert seit: 29. Dez 2003
31 Beiträge
 
#1

Per Delphi mit laufender Word-Instanz verbinden / WORD OLE

  Alt 19. Mär 2004, 15:09
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:
  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;
Das ganze klappt nicht. Ich bekomme "Unable to retrieve a pointer to a running object registered with OLE for Word.Application [...]".

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.
Gruß,
MB
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O

  Alt 19. Mär 2004, 15:29
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;
Thomas
  Mit Zitat antworten Zitat
mbs

Registriert seit: 29. Dez 2003
31 Beiträge
 
#3

Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O

  Alt 19. Mär 2004, 15:56
Ich probies mal. Danke zunächst!

Wie wär es aber dann bei den anderen Office-Komponenten? Ist die Festerklasse in allen Versionn gleich?
Gruß,
MB
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O

  Alt 19. Mär 2004, 16:15
Zitat:
Wie wär es aber dann bei den anderen Office-Komponenten?
Ist die Festerklasse in allen Versionn gleich?
Nein. So heissen die Fensterklassen für:

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
Thomas
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O

  Alt 19. Mär 2004, 16:33
Hallo MB,

ist die Exception
Zitat:
Unable to retrieve a pointer to a running object registered with OLE for Word.Application [...]
nicht eigentlich genau das, was Du möchtest? Wenn es nicht geht, musst Du so nur eigentlich nur noch den Fehler abfangen und fertig...
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
mbs

Registriert seit: 29. Dez 2003
31 Beiträge
 
#6

Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O

  Alt 20. Mär 2004, 13:47
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 ...
Gruß,
MB
  Mit Zitat antworten Zitat
mbs

Registriert seit: 29. Dez 2003
31 Beiträge
 
#7

Re: Per Delphi mit laufender Word-Instanz verbinden / WORD O

  Alt 22. Apr 2004, 13:51
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??
Gruß,
MB
  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 16:31 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