Announcement

Collapse
No announcement yet.

Kurios?! ShellExecute + WordApplication.Connect

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kurios?! ShellExecute + WordApplication.Connect

    Hallo,

    folgendes Problem:
    SupervisorProg ruft Word auf, und danach ein ControllerProg, dass auf eben aufgerufenes Word zugreifen soll.

    <PRE>
    SuperVisor:
    ShellExecute(...PChar('C:\f.doc')...);
    sleep(10000); //reichlich Zeit für Word
    ShellExecute( ...controllerprog... );
    <br>
    ControllerProg: (mit nacktem TWordApplication)
    WordApplication1.ConnectKind := ckRunningInstance;
    WordApplication1.Connect;
    </PRE>

    Ich erhalte immer die Fehlermeldung:
    <PRE>
    Es kann kein Zeiger auf ein ausgeführtes Objekt geholt werden, daß mit OLE für Word.Application.9 (guid) registriert ist.
    </PRE>

    Tausche ich den sleep durch ein ShowMessage aus, gehts wunderbar.

    Ich vermute den Fehler irgendwo im COM, aber wo? ProcessMessages helfen auch nicht.
    Hat jemand eine Ahnung woran das liegen könnte, bzw. hat jemand eine Lösung?

    Win2k,Off2k,D5+

  • #2
    Hallo,

    das Aufschalten auf eine laufende Instanz (<i>ckRunningInstance</i>) funktioniert nur dann, wenn sich die Zielanwendung zu diesem Zeitpunkt bereits über die Win32-API-Funktion <i>RegisterActiveObject</i> in der Running Object Table (ROT) registriert hat. Normalerweise passiert das, wenn beim Hauptfenster die ersten Windows-Botschaften eintreffen (weil zu diesem Zeitpunkt - genauer gesagt beim ersten Auslesen der Message Loop - die Anwendung voll funktionstüchtig ist). Wenn das Start-Programm einen ShowMessage-Aufruf dazwischenschaltet, wechselt der Anwendungs-Fokus (d.h. das Hauptfenster von Word bekommt eine Botschaft). Ich würde daher probieren, ob das Zustellen einer beliebigen Botschaft ( <b>PostMessage</b>) an das Word-Fenster (zu ermitteln mit <i>FindWindow</i>) das Problem beseitigt

    Comment


    • #3
      Hallo Herr Kosch,

      sowas ähnliches habe ich vermute.
      Der Hinweis mit der ROT ist aber klasse, dadurch wird mir das jetzt klarer. Danke!
      (Vielleicht sollte ich dochmal in Ihr Buch "COM, COM+..." schauen, immerhin haben wir es auf mein Anraten gekauft.. )

      Schönen Tag noch!
      Ral

      Comment

      Working...
      X