Forum: PC-Programmierung Ein Dokument aus C (Win API) heraus öffnen?


von bernd (Gast)


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

von Die meisten Elche (Gast)


Lesenswert?

Ja:

ShellExecute

von bernd (Gast)


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?

von Karl H. (kbuchegg)


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.

von bernd (Gast)


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

von Karl H. (kbuchegg)


Lesenswert?

Das funktioniert auch.
Solange das Programm den Namen des geöffneten Dokuments
in der Titelleiste führt :-). Die meisten tuns.

von Ich (Gast)


Lesenswert?

Nimm besser ShellExecuteEx. Da wird auf die Infostruktur ein
Prozesshandle geschrieben aus dem bekommst Du dann das Hauptfenster der
gestarteten App. bekommen kannst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.