Saturday, December 26, 2009

Etwas besseres als GetCommandLine gesucht oder DDE auswerten
















Betreff Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten
Von "Thomas Gahler"
Datum 09.11.2009 20:20:11


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/CheckHowWordLaunched.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)

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten
Von "Thorsten Albers"
Datum 09.11.2009 22:06:51


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

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten
Von "Thomas Gahler"
Datum 10.11.2009 09:56:13


Hallo Thorsten


> Wäre es nicht insgesamt einfacher, Dein AddIn so abzuändern, daß es Word
> nicht in die Quere kommt?
Na klar, doch wo anfangen zu suchen. Mal abgesehen davon, dass es natürlich
bei mir zu Hause locker läuft.

Deshalb die Suche nach einen Work-around



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


- Windows XP (SP3), Office XP (SP3)


















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten
Von "Thorsten Albers"
Datum 10.11.2009 13:42:45


Thomas Gahler schrieb im Beitrag
...
> Na klar, doch wo anfangen zu suchen. Mal abgesehen davon, dass es
natürlich
> bei mir zu Hause locker läuft.
> Deshalb die Suche nach einen Work-around

Meine erste Suche in diesem Fall wäre, ob irgendwo im eigenen Code eine
Funktion 'FileOpen' existiert.

Ansonsten wäre für unterschiedliches Verhalten eines AddIns auf
verschiedenen Geräten in derselben Word-Version das Timing eine denkbare
Erklärung, d.h. daß z.B. an irgendeiner Stelle Code A ausgeführt wird,
obwohl Bedingung B noch nicht erfüllt ist.

Und zu prüfen wäre auch, ob sich Dein AddIn auf dem problematischen Gerät
nicht doch eher >>mit einem anderen AddIn<< beißt - was ich für
wahrscheinlicher halte, da es mit Word selbst auf anderen Geräten ja
offenbar problemlos kooperiert.

Das nur so ein paar Ideen 'in's Blaue' hinein, denn ohne zu wissen, was
Dein AddIn macht, bleibt alles spekulativ.

--
Thorsten Albers

albers (a) uni-freiburg.de

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten
Von "Thomas Gahler"
Datum 10.11.2009 14:38:58


Hallo Thorsten


> Meine erste Suche in diesem Fall wäre, ob irgendwo im eigenen Code eine
> Funktion 'FileOpen' existiert.
Werde ich nochmals überprüfen, sollte zwar nicht, doch ob ich noch alle
Zeilen Code so im Kopf habe möchte ich jetzt nicht behaupten.



> Ansonsten wäre für unterschiedliches Verhalten eines AddIns auf
> verschiedenen Geräten in derselben Word-Version das Timing eine denkbare
> Erklärung, d.h. daß z.B. an irgendeiner Stelle Code A ausgeführt wird,
> obwohl Bedingung B noch nicht erfüllt ist.
Daran habeich auch schon gedacht. Das zum Beispiel mein Add-In mit seinen
Arbeiten im AutoExec() noch nicht fertig ist, wenn der DDE-Aufruf auf ein
Timeout stösst. Diese Gedanken hatte ich auch schon...


> Und zu prüfen wäre auch, ob sich Dein AddIn auf dem problematischen Gerät
> nicht doch eher >>mit einem anderen AddIn<< beißt - was ich für
> wahrscheinlicher halte, da es mit Word selbst auf anderen Geräten ja
> offenbar problemlos kooperiert.
Nö, das ist es sicher nicht, denn die PCs sind fast nackt und es läuft
bereits nicht mehr. Rudimentär zusammen gefasst Windows drauf, Office drauf,
Add-In drauf, Doppelklick läuft, IE8 drauf, Doppelklick läuft bereits nicht
mehr (alle anderen Software können nachgeliefert werden, der PC erholt sich
nicht mehr). Windows drauf, IE8 drauf, Office drauf, Add-In drauf,
Doppelklick läuft auch nicht.


> Das nur so ein paar Ideen 'in's Blaue' hinein, denn ohne zu wissen, was
> Dein AddIn macht, bleibt alles spekulativ.
Am liebsten würde ich jetzt schreiben 'nichts'. Es prüft ein paar
Verzeichnisse oder erstellt sie, kopiert bei Bedarf einige Dateien und sonst
noch ein paar Kleinigkeiten.
Doch wenn ich es mir so überlege, dann könnte ich mal ein paar
Konfigurationsparaemeter anpassen, damit das Ding noch wenig als 'nichts'
macht. Wenn es am Timing liegt, dann sollte ich so näher kommen, vielleicht.



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


- Windows XP (SP3), Office XP (SP3)


















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten
Von "Thorsten Albers"
Datum 10.11.2009 18:05:30


Thomas Gahler schrieb im Beitrag
...
> IE8 drauf

Da denkt man natürlich gleich an irgendwelche
'Policies'/Sicherheitseinstellungen, die durch die Installation des IE 8
geändert worden sein könnten.

> Daran habeich auch schon gedacht. Das zum Beispiel mein Add-In mit seinen

> Arbeiten im AutoExec() noch nicht fertig ist, wenn der DDE-Aufruf auf ein

> Timeout stösst. Diese Gedanken hatte ich auch schon...
> ...
> Am liebsten würde ich jetzt schreiben 'nichts'. Es prüft ein paar
> Verzeichnisse oder erstellt sie, kopiert bei Bedarf einige Dateien und
sonst
> noch ein paar Kleinigkeiten.

Da ist natürlich durchaus ein Zusammenhang denkbar, wenn das AddIn im
Dateisystem rumwuselt, während die DDE-Verbindung zum Laden einer Datei
aktiv ist.
Aber wo jetzt der Ansatzpunkt wäre, kann ich leider nicht sagen. Dein AddIn
müßte vermutlich erst einmal Word alles abarbeiten lassen, was es
abzuarbeiten hat, und dann mit seiner Arbeit beginnen.

--
Thorsten Albers

albers (a) uni-freiburg.de

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 11.11.2009 15:32:15


Hallo Thomas,

...
> bereits nicht mehr. Rudimentär zusammen gefasst Windows drauf, Office drauf,
> Add-In drauf, Doppelklick läuft, IE8 drauf, Doppelklick läuft bereits nicht
> mehr (alle anderen Software können nachgeliefert werden, der PC erholt sich
> nicht mehr). Windows drauf, IE8 drauf, Office drauf, Add-In drauf,
> Doppelklick läuft auch nicht.

Das hatte sich bereits mit dem IE7 geändert, nicht erst beim IE8. Seit IE7
macht Word beim Start eine Vielzahl von Tasks auf, wenn gleich ein oder
mehrere Dokumente übergeben werden. Früher war das nicht so und da gab es
auch keine Probleme mit dem eigenen AutoExec-Job.

Hang loose, Hartwig
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thomas Gahler"
Datum 12.11.2009 19:54:33


Hallo Hartwig



>> bereits nicht mehr. Rudimentär zusammen gefasst Windows drauf, Office
>> drauf,
>> Add-In drauf, Doppelklick läuft, IE8 drauf, Doppelklick läuft bereits
>> nicht
>> mehr (alle anderen Software können nachgeliefert werden, der PC erholt
>> sich
>> nicht mehr). Windows drauf, IE8 drauf, Office drauf, Add-In drauf,
>> Doppelklick läuft auch nicht.
>
> Das hatte sich bereits mit dem IE7 geändert, nicht erst beim IE8. Seit IE7
> macht Word beim Start eine Vielzahl von Tasks auf, wenn gleich ein oder
> mehrere Dokumente übergeben werden. Früher war das nicht so und da gab es
> auch keine Probleme mit dem eigenen AutoExec-Job.
Spannend. Es ist gut möglich, dass es nicht nur beim IE8 sondern auch beim
IE7 nicht geht. Dies wurde nicht geprüft, da der IE7 ja gar nie Thema war.
Und ein älterer IE erst recht nicht.



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


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


















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 13.11.2009 09:55:01



> Spannend. Es ist gut möglich, dass es nicht nur beim IE8 sondern auch beim
> IE7 nicht geht. Dies wurde nicht geprüft, da der IE7 ja gar nie Thema war.
> Und ein älterer IE erst recht nicht.

Hallo Thomas,

Es ist vermutlich nicht der IE7 bzw. IE8 selbst, sondern eher das von
Microsoft mit diesen Systemen geänderte Processhandling.

Ich habe die eigentliche Ursache nicht aufgeklärt, konnte aber feststellen,
dass seit Einführung des IE7 immer dann, wenn Word mit einem Dateiparameter
gestartet wurde, direkt nach dem WordProcess noch ein weiterer Process namens
"Default IME" erschien, was vorher eben nicht der Fall war.

Vielleicht weiss einer der MVPler, warum der Wordstart dadurch behindert wird?

Hang loose, Hartwig
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thorsten Albers"
Datum 13.11.2009 13:24:16


Hartwig Constien schrieb im
Beitrag ...
> Ich habe die eigentliche Ursache nicht aufgeklärt, konnte aber
feststellen,
> dass seit Einführung des IE7 immer dann, wenn Word mit einem
Dateiparameter
> gestartet wurde, direkt nach dem WordProcess noch ein weiterer Process
namens
> "Default IME" erschien, was vorher eben nicht der Fall war.
>
> Vielleicht weiss einer der MVPler, warum der Wordstart dadurch behindert
wird?

Eigentlich sollte ein IME (Input Method Editor, für Eingabe von Zeichen aus
bestimmten Schriftsystemen) auf das Dokumentenhandling von Word keinerlei
Auswirkung haben, es sei denn, daß ganze bremst Word mit dem eigenen AddIn
zusammen so aus, daß der DDE-Timeout überschritten wird. Eine 'Interaktion'
mit DDE ist eigentlich unwahrscheinlich, da IMEs nicht über DDE arbeiten.

@Thomas:

Nimm Dir doch 'mal den MS Spy++ und überprüfe, was für DDE-Nachrichten Word
bei dem Vorgang bekommt und wie es darauf reagiert.

--
Thorsten Albers

albers (a) uni-freiburg.de

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thomas Gahler"
Datum 13.11.2009 23:26:48


Hallo Thorsten


> @Thomas:
>
> Nimm Dir doch 'mal den MS Spy++ und überprüfe, was für DDE-Nachrichten
> Word
> bei dem Vorgang bekommt und wie es darauf reagiert.
Tönt spanned und beim Googlen habe ich zusätzlöich den Hinweis nach
DDESpy.exe gefunden. Doch von beiden kann ich keinen Download ausfindig
machen. Wo finde ich die Tools?



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


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

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thorsten Albers"
Datum 14.11.2009 12:54:30


Thomas Gahler schrieb im Beitrag
<#jXghBLZKHA.5544@TK2MSFTNGP02.phx.gbl>...
> Tönt spanned und beim Googlen habe ich zusätzlöich den Hinweis nach
> DDESpy.exe gefunden. Doch von beiden kann ich keinen Download ausfindig
> machen. Wo finde ich die Tools?

MS Spy++ findet man auf MS VB(.NET)-/VC(.NET)-/VS(.NET)-CDs. DDESpy. Der
letzte DDESpy, den ich gesammelt habe, hat die Versionsnummer 5.0.2134.1
und stammt von der MS VS.NET Beta 2-CD 1.

--
Thorsten Albers

albers (a) uni-freiburg.de

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thomas Gahler"
Datum 17.11.2009 12:17:49


Hallo Thorsten


>> Tönt spanned und beim Googlen habe ich zusätzlöich den Hinweis nach
>> DDESpy.exe gefunden. Doch von beiden kann ich keinen Download ausfindig
>> machen. Wo finde ich die Tools?
>
> MS Spy++ findet man auf MS VB(.NET)-/VC(.NET)-/VS(.NET)-CDs. DDESpy. Der
> letzte DDESpy, den ich gesammelt habe, hat die Versionsnummer 5.0.2134.1
> und stammt von der MS VS.NET Beta 2-CD 1.
Danke für deine Feedback.... auf diese CD habe ich keinen Zugriff.



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


- Windows XP (SP3), Office XP (SP3)


















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thorsten Albers"
Datum 17.11.2009 14:27:00


Thomas Gahler schrieb im Beitrag
<#hfyae3ZKHA.3992@TK2MSFTNGP04.phx.gbl>...
> Danke für deine Feedback.... auf diese CD habe ich keinen Zugriff.

Dann schick' mir 'mal 'ne passende Mail...

--
Thorsten Albers

albers (a) uni-freiburg.de

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thomas Gahler"
Datum 17.11.2009 21:01:06


Hallo Thorsten

> Dann schick' mir 'mal 'ne passende Mail...
Ist unterwegs...



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


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

















Betreff RE: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 11.11.2009 09:21:02


Hallo Thorsten,

die gleiche Problematik trat bei meinen Kunden auch auf. Wie Du schon
bemerkt hast, kriegt man mit GetcommandLine zwar mit, dass Word einen
Startparameter bekommen hat, aber keine Info über die zu ladende Datei(en).

Ich habe es deshalb so gelöst:

Meine globale Vorlage (im Startup-Ordner) führt AutoExec bei jedem
Word-Start aus. Unter anderem ist da auch ein Test dabei, ob eine bestimmte
Netzverbindung geöffnet werden kann. Das kann schon mal ein Sekündchen
dauern. Wie es aussieht, hat Word einfach keine Geduld und bricht das Laden
der übergebenen Dokumente dann einfach ab und der User wundert sich.

Nun ist das bei meiner globalen Vorlage so, dass es zwar der Sicherheit
dient, wenn alle Jobs in AutoExec durchlaufen werden, aber streng genommen
muss das nicht unbedingt zu dem Zeitpunkt passieren, an dem Word gerade
selbst mit Laden beschäftigt ist.

Ich werte also die CommandLine in meiner AutoExec-Procedure aus und wenn ich
feststelle, dass Word mehr als die üblichen Parameter bekommen hat (welche
ist dabei egal) steige ich direkt aus der AutoExec aus. Word hat dann genug
Zeit, alle übergebenen Dateien zu öffnen.

Da alle meine Jobs in der globalen Vorlage über Menüs aufgerufen werden,
kann ich bei deren Aufruf vorab noch checken, ob vielleicht der eine oder
andere Startjob noch nachzuholen ist.

Hang loose, Hartwig


"Thomas Gahler" wrote:

> 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/CheckHowWordLaunched.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)
>
> .
>
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten
Von "Thomas Gahler"
Datum 12.11.2009 19:59:17


Hallo Hartwig


> die gleiche Problematik trat bei meinen Kunden auch auf.
Also bedeutet das ja irgend wie, dass doch etwas spezielles an der
Konstellation sein muss. Denn ich nehme mal an, dass du dieses Phänomen
selber auf deinem PC nihct hattest, oder? Das ist nämlich das was mich
besonders ärgert. Das es nicht auf allen PCs auftritt (beim Kunden auf den
paar Dingern die er neu aufgesetzt hat schon, bei mir nicht)


> Wie Du schon
> bemerkt hast, kriegt man mit GetcommandLine zwar mit, dass Word einen
> Startparameter bekommen hat, aber keine Info über die zu ladende
> Datei(en).
>
> Ich habe es deshalb so gelöst:
>
> Meine globale Vorlage (im Startup-Ordner) führt AutoExec bei jedem
> Word-Start aus. [...]
Meine auch und die macht deftig viel...


> Ich werte also die CommandLine in meiner AutoExec-Procedure aus und wenn
> ich
> feststelle, dass Word mehr als die üblichen Parameter bekommen hat (welche
> ist dabei egal) steige ich direkt aus der AutoExec aus. Word hat dann
> genug
> Zeit, alle übergebenen Dateien zu öffnen.
Für mich würde das zum Beispiel bedeuten, dass ich mein AutoExec verlasse
und dieses zum Beispiel mittels OnTime() einplane, damit dieses 2 Sekunden
später doch noch abläuft. Habe ich dich so richtig verstanden? Das wäre
natürlich mal einen Test wert.



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


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


















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 13.11.2009 10:08:03


Hallo Thomas,

> > die gleiche Problematik trat bei meinen Kunden auch auf.
> Also bedeutet das ja irgend wie, dass doch etwas spezielles an der
> Konstellation sein muss. Denn ich nehme mal an, dass du dieses Phänomen
> selber auf deinem PC nihct hattest, oder? Das ist nämlich das was mich
> besonders ärgert. Das es nicht auf allen PCs auftritt (beim Kunden auf den
> paar Dingern die er neu aufgesetzt hat schon, bei mir nicht)

noe, war eher umgedreht. Habe ich zuerst auf meinem Entwicklungsrechner
festgestellt, es aber für ein lokales Problem gehalten. Trat dann aber auch
auf neuen (und nur dort) Kundensystemen auf.


> Für mich würde das zum Beispiel bedeuten, dass ich mein AutoExec verlasse
> und dieses zum Beispiel mittels OnTime() einplane, damit dieses 2 Sekunden
> später doch noch abläuft. Habe ich dich so richtig verstanden? Das wäre
> natürlich mal einen Test wert.

die OnTime-Variante nutze ich nur dann, wenn ein User festgelegt hat, dass
er nach dem Wordstart gleich mit einer bestimmten Vorlage beginnen möchte.

Mein recht pragmatischer Ansatz in der AutoExec geht davon aus, dass es
eigentlich reicht, wenn mein AutoExec-Job mindestens einmal ausgeführt wurde.
Ist das der Fall, kann ich bei übergebenen Dateiparametern eben auch
problemlos aus der AutoExec aussteigen und es den einzelnen Menüjobs
überlassen,
die für sie spezifische Details abzuklären und ggf. einzelne der
AutoExec-Jobs noch nachzuholen, bevor der Menüjob ausgeführt wird.

Dieses Vorgehen war möglich, weil ich die meisten Routinen in VB6-DLLs
ausgelagert habe. Alle Vorlagen sind mit DLLs verknüpft und es kostet nur
wenige VBA-Programmzeilen, um eine Klasse in einer DLL anzusprechen.

Bis XP + Word 2003 ging das prima auch mit Latebindung via LoadLibrary, also
ohne vorherige Registrierung und Verknüpfung. Leider ist mit Vista + Word
2007 Schluss damit. Die dynamische DLL-Einbindung zur Laufzeit wird einfach
nicht mehr wie früher ausgeführt, auch wenn Du Admin bist. Weisst Du dagegen
ein Heilmittel?

Hang loose, Hartwig
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Dieter Strassner"
Datum 13.11.2009 11:47:05


Hallo Hartwig,

> Bis XP + Word 2003 ging das prima auch mit Latebindung via
> LoadLibrary, also ohne vorherige Registrierung und Verknüpfung.
> Leider ist mit Vista + Word 2007 Schluss damit. Die dynamische
> DLL-Einbindung zur Laufzeit wird einfach nicht mehr wie früher
> ausgeführt, auch wenn Du Admin bist. Weisst Du dagegen ein Heilmittel?

... das geht auch noch unter Vista/W7 + WORD-2007:
Benutze eine "Classfactory" (z.B. die von Olaf Schmidt: "DirectCOM.dll").

--

Viele Grüße

Dieter


Rückfragen bitte nur in die Newsgroup!

EDV-Kommunikation Strassner e.K.
68623 Lampertheim
Internet: www.strassner.biz

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 13.11.2009 17:57:01


> > Bis XP + Word 2003 ging das prima auch mit Latebindung via
> > LoadLibrary, also ohne vorherige Registrierung und Verknüpfung.
> > Leider ist mit Vista + Word 2007 Schluss damit. Die dynamische
> > DLL-Einbindung zur Laufzeit wird einfach nicht mehr wie früher
> > ausgeführt, auch wenn Du Admin bist. Weisst Du dagegen ein Heilmittel?
>
> .... das geht auch noch unter Vista/W7 + WORD-2007:
> Benutze eine "Classfactory" (z.B. die von Olaf Schmidt: "DirectCOM.dll").


Vielen Dank, Dieter. Ziehe ich mir rein.

Bin gespannt, wie es funktioniert und ob sich damit die UAC-Abfrage beim
Laden meiner Active-X-DLLs verhindern lässt.

Hang loose, Hartwig

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 17.11.2009 10:23:01


> > Bis XP + Word 2003 ging das prima auch mit Latebindung via
> > LoadLibrary, also ohne vorherige Registrierung und Verknüpfung.
> > Leider ist mit Vista + Word 2007 Schluss damit. Die dynamische
> > DLL-Einbindung zur Laufzeit wird einfach nicht mehr wie früher
> > ausgeführt, auch wenn Du Admin bist. Weisst Du dagegen ein Heilmittel?
>
> .... das geht auch noch unter Vista/W7 + WORD-2007:
> Benutze eine "Classfactory" (z.B. die von Olaf Schmidt: "DirectCOM.dll").


Jau, funktioniert. Olaf sei Dank.

Nach Übernahme der DLL, der Declares und der Function GetInstance nach VBA
fährt nun keine Ausführungsverhinderung mehr dazwischen, wenn meine
unregistrierten AX-DLLs unter Vista+Word2007 angesprochen werden.

Hang loose, Hartwig
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswerten
Von "Thomas Gahler"
Datum 17.11.2009 12:21:24


Hallo Hartwig

> Für mich würde das zum Beispiel bedeuten, dass ich mein AutoExec verlasse
> und dieses zum Beispiel mittels OnTime() einplane, damit dieses 2 Sekunden
> später doch noch abläuft. Habe ich dich so richtig verstanden? Das wäre
> natürlich mal einen Test wert.
Naja, Test gemacht brachte nix. Auch wenn ich in der ersten Zeile aus meinem
AutoExec() rauspringe und dieses Mittels .OnTime() nach ein paar Sekunden
aufrufe, die Datei wird trotzdem nicht geöffnet.

Gibt es irgend welche Einstellungen in der Registry (oder sonst wo) mit
welchen ich das TimeOut für DDE höher setzen kann (mal in der Annahme, dass
es sich hierbei um das Problem handelt).





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


- Windows XP (SP3), Office XP (SP3)


















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 17.11.2009 15:46:03


> [...]
> Gibt es irgend welche Einstellungen in der Registry (oder sonst wo) mit
> welchen ich das TimeOut für DDE höher setzen kann (mal in der Annahme, dass
> es sich hierbei um das Problem handelt).

Hallo Thomas,

bestimmt gibts die, haben sich mir aber nicht offenbart (;-)

Bei Smarttools gibt es einen kostenlosen Fix:
http://www.wintotal.de/Tipps/?id=1712

Ob und wie der wirkt, kann ich nocht nicht sagen.

Hang loose, Hartwig
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 18.11.2009 10:46:01


> > [...]
> > Gibt es irgend welche Einstellungen in der Registry (oder sonst wo) mit
> > welchen ich das TimeOut für DDE höher setzen kann (mal in der Annahme, dass
> > es sich hierbei um das Problem handelt).
>
> bestimmt gibts die, haben sich mir aber nicht offenbart (;-)
>
> Bei Smarttools gibt es einen kostenlosen Fix:
> http://www.wintotal.de/Tipps/?id=1712
>
> Ob und wie der wirkt, kann ich noch nicht sagen.


Der Fix von Smarttools wirkt. Globale Vorlage (AddIn) und beim Start zu
ladende Dokumente kommen sich nicht mehr in die Quere.

Allerdings entsteht durch den Fix ein anderes Problem: es werden ggf.
zusätzliche Word-Instanzen aufgemacht, von denen nur eine Instanz zwei
Dokumente enthält, die anderen aber jeweils nur ein Dokument, wenn über den
Explorer gleiche mehrere Dateien geöffnet werden sollen.

Das belastet das System unnötig und kann zu Seiteneffekten führen. In
unseren Systemen ist der mehrfache Word-Start nicht gewünscht und wird von
der globalen Vorlage angemeckert.

Der Fix befasst sich offenbar gar nicht mit einer Korrektur der DDE-Abläufe,
sondern schreibt einfach in die Registry, dass Word-Dokumente via winword.exe
"%1" zu laden sind. Die vorhandenen ddeexec-Zweige werden entfernt.
Das gilt sinngemäß auch für Excel-Sheets.

Nach der Deinstallation des Fixes ist die Registry nicht mehr im vorherigen
Zustand, da z. B. die Einträge zu Word.Document.8\shell\open\command.Standard
nun nicht mehr den Fullname der Exe enthalten. Außerdem fehlt
shell\open\command.command ganz. Man muss also noch manuell nacharbeiten.

Hang loose, Hartwig
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thomas Gahler"
Datum 18.11.2009 11:34:39


Hallo Hartwig



> Der Fix von Smarttools wirkt. Globale Vorlage (AddIn) und beim Start zu
> ladende Dokumente kommen sich nicht mehr in die Quere.
>
> Allerdings [...]
Danke für die Infos. Ich werde am DO oder FR versuchen diesen Test bei
meinem Kunden zu machen. Gleichzeitig werde ich ihm deine Erkenntnisse
präsentieren.
Ich hatte schon auf der Homepage von SmartTools nach Informationen zum Fix
gesucht aber nichts gefunden.



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


- Windows XP (SP3), Office XP (SP3)


















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thomas Gahler"
Datum 20.11.2009 13:13:29


Hallo Hartwig


> Danke für die Infos. Ich werde am DO oder FR versuchen diesen Test bei
> meinem Kunden zu machen.
Die ersten Test waren ebenfalls erfolgreich. Jetzt überlasse ich es dem
Kunden ob er den Fix weiter ausbreitet oder nicht.


Ein ganz spannendes Phänomen ist noch auf getaucht. Ich weiss nicht mit
welcher Software dort die PCs aufgesetzt werden. Doch jetzt war ein Rollout
bei einer Tochtergesellschaft und dort läuft der Doppelklick. Super bei den
einen PCs geht, bei anderen geht es nicht. Ist doch spannend und sehr
hilfreich bei der Fehlersuche.

Euch allen besten Dank für die Unterstützung. Helfe bei Word fragen gerne
weiter...




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


- Windows XP (SP3), Office XP (SP3)


















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 20.11.2009 16:09:03


> Ein ganz spannendes Phänomen ist noch auf getaucht. Ich weiss nicht mit
> welcher Software dort die PCs aufgesetzt werden. Doch jetzt war ein Rollout
> bei einer Tochtergesellschaft und dort läuft der Doppelklick. Super bei den
> einen PCs geht, bei anderen geht es nicht. Ist doch spannend und sehr
> hilfreich bei der Fehlersuche.

Hallo Thomas,

es geht noch spannender: ich habe noch eine zweite globale Vorlage für ein
anderes Word-Projekt. Mit dieser Vorlage allein gibt es nie Probleme beim
Starten von Word mit übergebenen Dateien und Vorhandensein von IE7/8. Die
zweite Vorlage macht im AutoExec ähnliche Dinge wie die erste Vorlage, aber
nicht ganz so aufwändig.

Auf meinem Entwicklungsrechner habe ich schon mal beide globalen Vorlagen
aktiv im Startup-Pfad. Und dann passiert es, dass Teile der Menüleiste der
ersten Vorlage in der Menüleiste der zweiten Vorlage abgebildet werden.
Statt des eigentlichen Menüs der 2. Vorlage ist plötzlich ein Unterzweig der
ersten Vorlage im zweiten Menü eingehängt (und funktioniert mit den Aufrufen
der ersten Vorlage).
Um das Maß voll zu machen: wenn ich drei Doks beim Start übergebe, werden in
zwei Fenstern die vertauschten Menüpunkte angezeigt, in einem Fenster sind
aber beide Menüs OK.
Unter Word97 hat es diese Vertauschung nie gegeben; tritt bei mir erst seit
Word 2002 auf.

Nun gut, auf meinem Entwicklungsrechner kann ich das beherrschen und die
Anwender haben jeweils nur eine Variante, also kein drängendes Problem. So
ganz koscher ist das aber nicht, was beim Word-Start so alles abläuft.

Noch eine Ergänzung: ich lasse bei mir in Abhängigkeit von Registryschaltern
die eine oder andere Vorlage sich beim Word-Start jeweils selbst wieder
beenden. Kickt sich die erste Vorlage während des Startablauf raus, werden
alle zu ladenden Dateien angezeigt. Es dürfte also eher kein Timingproblem
sein, sondern irgendetwas spezifisches in der ersten Vorlage. Ich werde mal
jede Procedure beim Start einzeln anschalten um zu sehen, wann die
Unterdrückung zuschlägt und ob man einzelne Aufrufe verantwortlich machen
kann.

Hang loose, Hartwig
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 20.11.2009 16:57:01


> [...] Ich werde mal
> jede Procedure beim Start einzeln anschalten um zu sehen, wann die
> Unterdrückung zuschlägt und ob man einzelne Aufrufe verantwortlich machen
> kann.

Hallo Thomas,

Arghasdfüpirewt! Man soll nicht zu freundlich sein.

Als letzte Zeile in meiner AutoExec der ersten Vorlage steht DoEvents, nach
dem Motto "Isch hab fertich, getz kanns Du." Nach der Deaktivierung kommen
sich globale Vorlage und über DDE zu ladende Dokumente nicht mehr ins Gehege.

Hast Du in Deinem VBA-Code auch irgendwo DoEvents drin? Wenn ja, sollten wir
diese Erkenntnis auch in der VBA-Gruppe kund tun, dann braucht es keinen
externen Fix.

Hang loose, Hartwig
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thorsten Albers"
Datum 21.11.2009 00:07:58


Hartwig Constien schrieb im
Beitrag <08A7E7BB-098F-40C2-A467-B822286EE2EC@microsoft.com>...
> Als letzte Zeile in meiner AutoExec der ersten Vorlage steht DoEvents,
nach
> dem Motto "Isch hab fertich, getz kanns Du." Nach der Deaktivierung
kommen
> sich globale Vorlage und über DDE zu ladende Dokumente nicht mehr ins
Gehege.

So rein gefühlsmäßig würde ich, wenn überhaupt, ein DoEvents ja an den
Anfang der AutoExec stellen nach dem Motto "Mach Du ers ma fertisch, denne
gomm ich"...

--
Thorsten Albers

albers (a) uni-freiburg.de

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thomas Gahler"
Datum 21.11.2009 14:41:19


Hallo Hartwig


>> jede Procedure beim Start einzeln anschalten um zu sehen, wann die
>> Unterdrückung zuschlägt und ob man einzelne Aufrufe verantwortlich machen
>> kann.
Spannend deine Darstellung wie deine Add-Ins funktionieren. Geht bei mir
ähnlich, dass Add-In im Startup ist nur dafür zuständlig andere Add-In zu
laden oder nach der Initialisierung von Word wieder zu entladen.
Es gibt Add-Ins wie werden zwingend geladen, andere kann der Anwender wählen
und die dritte Kategorie wird bei Bedarf nachgeladen und wieder entladen.



> Hast Du in Deinem VBA-Code auch irgendwo DoEvents drin? Wenn ja, sollten
> wir
> diese Erkenntnis auch in der VBA-Gruppe kund tun, dann braucht es keinen
> externen Fix.
Ich wollte schon behaupten "Nö habe ich ich" doch beim nachschauen muss ich
feststellen, dass ich tatsächlich so eine Anweisung eingebaut habe. Jedes
Add-In hängt sich in der Multifunktionsleiste in meinen eigenen Tab rein und
bringt da eine eigen Gruppe mit.

Ich habe das 'DoEvents' jeweils im Callback für Ribbon onLoad drin. Weshalb
ich das gemacht habe weiss ich nicht mehr. Werde ich jetzt sicher mal
termporär rausschmeissen und dann testen die sich die Add-Ins verhalten und
ob dann der Doppelklick wieder funktioniert.

Ich werde mich dann sicher wieder melden....



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


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

















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thomas Gahler"
Datum 23.11.2009 12:24:27


Hallo Hartwig und Thorsten und alle anderen auch ;-)



> Ich habe das 'DoEvents' jeweils im Callback für Ribbon onLoad drin.
> Weshalb ich das gemacht habe weiss ich nicht mehr. Werde ich jetzt sicher
> mal termporär rausschmeissen und dann testen die sich die Add-Ins
> verhalten und ob dann der Doppelklick wieder funktioniert.
Alles klar, die erstens Test sind erfolgreich. Ohne DoEvents klappt der
Doppelklick so wie er sollte und ohne Fix der SmartTools-Typen. Jetzt bin
ich doch ziemlich glücklich.



Mein DoEvents im Callback für Ribbon onLoad habe ich nur deshalb dirn, dass
Word schön aussieht wenn es geladen wird. Ohne DoEvenst offnet sich Word
ohne den Teil mit der Multifunktionsleiste, dieser wird erst ganz am Schluss
dargestellt. Mit dem DoEvents drin wird die Multifunktionsleite nach jedem
laden eines Add-Ins schön frisch dargestellt. Ich nehme jett mal diesen
kleine optischen Verlust in Kauf.


Herzlichen Dank für die Feedbacks von euch und die Unterstützung.

Wenn das Problem jetzt wirklich nicht mehr auftaucht, dann werde ich
gelegentlich in m.p.d.w.vba einen entsprechenden Hinweis platzieren und
einen Tipp an SmartTools liefern.



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


- Windows XP (SP3), Office XP (SP3)


















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von =?Utf-8?B?SGFydHdpZyBDb25zdGllbg==?=
Datum 23.11.2009 16:05:01


Hallo Thomas,

> [...] Jetzt bin ich doch ziemlich glücklich.

Da sind wir aber froh, dass das geklappt hat(;-)

> Mein DoEvents im Callback für Ribbon onLoad habe ich nur deshalb dirn, dass
> Word schön aussieht wenn es geladen wird. Ohne DoEvenst offnet sich Word
> ohne den Teil mit der Multifunktionsleiste, dieser wird erst ganz am Schluss
> dargestellt. Mit dem DoEvents drin wird die Multifunktionsleite nach jedem
> laden eines Add-Ins schön frisch dargestellt. Ich nehme jett mal diesen
> kleine optischen Verlust in Kauf.

Kann vielleicht die Folge

Application.ScreenUpdating = False 'ganz am Anfang

Application.ScreenRefresh 'nach jedem AddIn-Einhänger

Application.ScreenUpdating = True 'ganz am Ende

die Verluste ausgleichen?


> Wenn das Problem jetzt wirklich nicht mehr auftaucht, dann werde ich
> gelegentlich in m.p.d.w.vba einen entsprechenden Hinweis platzieren und
> einen Tipp an SmartTools liefern.

Mach das.

Hang loose, Hartwig
















Betreff Re: Etwas besseres als 'GetCommandLine' gesucht / oder DDE auswert
Von "Thomas Gahler"
Datum 23.11.2009 20:03:29


Hallo Hartwig


> Kann vielleicht die Folge
> Application.ScreenRefresh 'nach jedem AddIn-Einhänger
> die Verluste ausgleichen?
Der ist schon drin und bring nichts.

Ich bin auch nicht ganz sicher, ob .ScreenRefresh nur den Dokumentteil oder
das ganze Word-Fenster neu zeichnet. Der Ribben wird mal sicher nicht schön
gezeichnet. Aber das müssen wir jetzt wohl in Kauf nehmen.

Gruss
Thomas





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


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




No comments:

Post a Comment