Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten

09/11/2009 - 20:20 von Thomas Gahler | Report spam
Hallo zusammen

Vielleicht kann mir jemand bei meinem mittelgrossen Problem helfen, das ich
bei einem Kunden von mir habe.

Wird Word mittels eines Doppelklicks auf ein Dokument gestartet, so öffnet
sich zwar Word doch die besagte Datei wird nicht geöffnet. Das googlen zu
dieser Problematik bringt die Hinweise, dass ein Add-In im Wege steht. Die
Analyse hat ergeben, dass es tatsàchlich ein Add-In ist, das, sobald es
vorhanden ist, die Macken bei Word auslöst. Ja, ihr habe es erraten, es ist
mein Add-In (Dokumentvorlag im Startup-Ordner) und dieses làsst sich somit
schlecht desinstallieren.

Meine Idee jetzt. Ich werde die Kommandozeile aus und öffne die Datei
selber. Vielleihct wird das mit einem sochen Word-around ja was. Doch jetzt
folgt das nàchste Problem.

Wird Word mittels Doppelklick auf ein Dokument gestartet, dann liefert mir
das GetCommandLine-API nicht allzu viel zurück ("C:\Prog...\Winword.exe /n
/dde"). Damit làsst sich schlecht auswerten, auf welche Datei denn geklickt
wurde.

A.) Gibt es ein anderes API, das mir mehr zur Kommandozeile verràt?

B.) Der Aufruf der Datei erfolgt über DDE. Kann ich irgendwie diese
DDE-Kommandos abfragen, dann finde ich dort vielleicht mein Dateiname.


Ich frage euch hier, weil wir in der VBA-Ecke die APIs und DDE nur
beschrànkt kennen. Das einbinden sollte ich anschliessen in den Griff
bekommen.



Mein Zugriff auf das API habe ich hier "geklaut".
http://word.mvps.org/faqs/macrosvba...unched.htm


Besten Dank für jeden kleinen Tipp


Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows Vista (SP2), Office 2007 (SP2)
 

Lesen sie die antworten

#1 Thorsten Albers
09/11/2009 - 22:06 | Warnen spam
Thomas Gahler schrieb im Beitrag
...
B.) Der Aufruf der Datei erfolgt über DDE. Kann ich irgendwie diese
DDE-Kommandos abfragen, dann finde ich dort vielleicht mein Dateiname.



Das DDE-Kommando, das ausgeführt wird, findest Du in der Registry. Beispiel
für MS Word 8:

Word.Document.8
shell
open
command "(...)\WINWORD.EXE" /n
ddeexec [REM _DDE_Direct][FileOpen("%1")]
Application WinWord
Topic System

Aber ich weiß nicht, wie man aus Word die DDE-Daten, die es empfangen hat,
herausquetschen könnte.

Wàre es nicht insgesamt einfacher, Dein AddIn so abzuàndern, daß es Word
nicht in die Quere kommt?

Thorsten Albers

albers (a) uni-freiburg.de

Ähnliche fragen