Problem beim Start aus einem selbst geschriebenen Programm heraus.

Hallo,

ich habe vor einigen Jahren mit MS Visual C++ 6.0 (also für Windows) ein Programm geschrieben, welches eine RTF-Datei generiert und diese dann per ShellExecute()-Aufruf startet. Damals unter Windows XP SP3 hat das mit MS Word 2003 wunderbar funktioniert. Aber jetzt habe ich Windows 7 und LibreOffice 6.4. Jetzt wird zwar LibreOffice gestartet, aber es erscheint kein Fenster. Per Doppelklick im Explorer lässt sich die Datei jedoch problemlos mit LibreOffice öffnen. In beiden Fällen erscheinen im Taskmanager drei Prozesse: soffice.bin, soffice.exe und swriter.exe. Der einzige wahrnehmbare Unterschied ist, dass beim Start aus meinem Programm heraus kein Writer-Fenster erscheint. Zu beobachten ist noch, dass kurz der Start-Screen von LibreOffice erscheint und gleichzeitig mein Programm den Fokus verliert. Dann passiert nichts mehr. Wenn ich dann im Taskmanager soffice.bin beende, verschwinden alle drei Prozesse, allerdings nicht die beim Aufruf erzeugte Datei namens '.~lock.....rtf#'. Wenn ich dann die Datei im Explorer aufrufe, erscheint das LibreOffice-Fenster zum Wiederherstellen der Datei, was problemlos funktioniert.

Der Aufruf in meinem Programm lautet folgendermaßen :

ShellExecute( NULL, NULL, </Pfad zu//r generierten RTF-Datei/>, NULL, NULL, 0 );

Ist dieses ein bekanntes Problem? Kennt irgendjemand dafür eine Lösung? Liegts an Windows 7, an meinem alten Visual C++ oder an einem unzureichenden Aufruf? Den Quellcode des Programms kann ich ggf. anpassen, falls erforderlich, allerdings nach wie vor nur unter Windows XP, da mein altes Visual C++ 6.0 unter Windows 7 nicht installationsfähig ist, und beim neuen Visual C++ 2010 Express einige von mir benötigte Bibliotheken fehlen.

Das Programm ist (trotz meiner Firmen-E-Mail-Adresse) ein privates Freizeitprojekt.

Ich wäre sehr dankbar für ein bisschen Hilfe.

Freundliche Grüße
Torsten

Auch hallo. Habe nur eine Vermutung, aber wenn ich mir http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx durchlese, könnte die 0 (das letzte Argument) die Ursache sein. Hast du andere Werte, z. B. SW_SHOW ausprobiert?

-rl

Hi,

das war der goldrichtige Hinweis. Wenn doch alle Fehler so einfach zu lösen wären!

In meiner alten Doku zu ShellExecute() steht zum Parameter nShowCmd u.a. das hier:

"If lpFile specifies a document file, nShowCmd should be zero."

In der neuen im Netz steht dagegen:

"If lpFile specifies a document file, the flag is simply passed to the associated application."

Mit SW_SHOWNORMAL erscheint das Writer-Fenster mit meinem Dokument wie gewünscht. Man sollte doch ab und zu mal neuere Dokus lesen statt immer nur die alten.

Vielen Dank für den Tipp!

Viele Grüße
Torsten