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
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?
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.
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
Das funktioniert auch. Solange das Programm den Namen des geöffneten Dokuments in der Titelleiste führt :-). Die meisten tuns.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.