Ein Dokument aus C (Win API) heraus öffnen?

Gast #386380
Lesenswert?

Hi,

weiß jemand, wie man aus C++ (Window API) ein Dokument öffent?

Angenommen ich habe eine .txt Datei. Im Explorer ist diese Datei mit
einem Programm verknüpft (z.B. Notepad, oder WordPad). Wie gehe ich
vor, um ein Dokument, dessen Pfad ich habe, mit dem Programm geöffnet
wird, dass der User für den Dokumenttyp eingestellt hat?

Gibe es dafür eine Funktion?

Danke
Bernd
Gast #386382
Lesenswert?

Super, danke.

Gibt es da noch eine Option, dass ein Dokument, das schon offen ist,
nicht noch ein zweites mal geladen wird, sonder dass das erste, offene
Dokument nur wieder in den Vordergrund holt?
#386383
Lesenswert?

Nein.
Denn in wirklichkeit 'öffnet' ShellExecute genausowenig
ein Dokument wie es die Funktion 'system' tut.

Was passiert in Wirklichkeit.
ShellExecute ist die Aufforderung an das Betriebssystem ein
Programm auszuführen. Du teilst also Windows mit, dass
es die Datei 'MyDoc.doc' ausführen soll. Nun gibt es
aber kein Programm namens 'MyDoc.doc'. Als nächstes geht
Windoes her und durchsucht die Tabelle in der mögliche
Programme für Dateiendungen aufzufinden sind. Und dort
wird es fündig. Für eine Datei, deren Dateieendung auf
'doc' lautet, ist zb. Microsoft Word (also Word.exe) ein
mögliches Programm. Also startet Windows stattdessen
das Programm Word.exe und gibt ihm als Argument 'MyDoc.doc'
mit. Word fährt daraufhin hoch und öffnet die Datei.
Gast #386384
Lesenswert?

Dann bliebe nur die Möglichkeit unmittelbar nach dem ersten Ausführen
von ShellExecute zu schauen, welches neue Fenster im Titelbar einen
Teil des Namens führt. Sollte ein passendes gefunden werden,
Fensterdaten merken.
Vor dem nächsten Aufruf erst nach dem beim Erstenmal gefundenen Fenster
ausschau halten, und nur wenn es nicht mehr da ist wieder ShellExecute
aufrufen.
Ansonsten Fenster in den Vordergrund befördern.
Sollte eigentlich funktionnieren, werd's bei Gelegenheit mal
probieren.

Danke,
Bernd

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren