Forums Neueste Beiträge
 

GetObject erzeugt Objekt

17/12/2007 - 10:22 von Alexander Mueller | Report spam
Hallo

ist es normal, dass GetObject eine neue Instanz der
verknüpften Anwendung samt dem Dokument erzeugt, wenn das
Dokument aktuell nicht geladen ist?

Ich will mit GetObject einfach nur testen, ob ein bestimmtes Dokuemnt
noch geöffnet ist. Das Objekt brauch ich nicht.

Mit Word-Dokuemnten hab ich folgendes irritierendes Verhalten festgestellt:

Wenn ich das *.doc mit ShellExecuteExe lade und noch keine
Word-Instanz offen ist, liefert mir GetObject - nach
manuellem Schliessen der mit ShellExecuteEx gestarten Instanz -
KEIN Objekt zurück.
Ich kann es also als Test dafür vewenden, ob das Dokuemnt noch
geöffnet ist. Prima.

Wenn ich das *.doc mit ShellExecuteExe lade und noch bereits eine
Word-Instanz offen ist, liefert mir GetObject - nach
manuellem Schliessen der mit ShellExecuteEx gestarten Dokuments -
EIN Objekt zurück, ja es làdt das Dokuent eigens neu, wie man im
Taskmanager sehen kann. Das Dokument wird kurz danach wieder entladen.
es funktioniert also wie CreateObject

Ist das by design oder ein Bug?
Ausserdem wie kann ich das umgehen?
Ich will wie gesagt, nichts neu laden, sondern nur testen, ob was
noch geöffnet ist.

In der IRunningObjectTable-API gibt es eine Methode IsRunning,
die mglweise genau das tut was ich suche, nàmlich nur zu testen,
ob ein Doc ("FileMoniker") aktiv ist, ohne das Objekt zu holen oder
gar neu zu erzeugen. Gibt es dafür VB-Code? Matt Curland?


MfG,
Alex
 

Lesen sie die antworten

#1 Johannes Busch
18/12/2007 - 10:31 | Warnen spam
Alexander Mueller schrieb:
Hallo

ist es normal, dass GetObject eine neue Instanz der
verknüpften Anwendung samt dem Dokument erzeugt, wenn das
Dokument aktuell nicht geladen ist?

Ich will mit GetObject einfach nur testen, ob ein bestimmtes Dokuemnt
noch geöffnet ist. Das Objekt brauch ich nicht.

Mit Word-Dokuemnten hab ich folgendes irritierendes Verhalten festgestellt:

Wenn ich das *.doc mit ShellExecuteExe lade und noch keine
Word-Instanz offen ist, liefert mir GetObject - nach
manuellem Schliessen der mit ShellExecuteEx gestarten Instanz -
KEIN Objekt zurück.
Ich kann es also als Test dafür vewenden, ob das Dokuemnt noch
geöffnet ist. Prima.

Wenn ich das *.doc mit ShellExecuteExe lade und noch bereits eine
Word-Instanz offen ist, liefert mir GetObject - nach
manuellem Schliessen der mit ShellExecuteEx gestarten Dokuments -
EIN Objekt zurück, ja es làdt das Dokuent eigens neu, wie man im
Taskmanager sehen kann. Das Dokument wird kurz danach wieder entladen.
es funktioniert also wie CreateObject




Hallo Alex,

wie setzt du denn GetObject genau ein? Es gibt da ja zwei Verwendungen
und die eine davon (steht auch in der OH) erzeugt immer ein neues Object...

Johannes Busch

Ähnliche fragen