Datei mit entsprechendem Programm öffnen?
-
hi,
ich will eine applikation schreiben, ähnlich dem explorer.
in einem Listview werden mir die dateien eines ausgeählten Verzeichnisses
angezeigt.per doppelklick auf eine dieser dateien, will ich, dass die datei mit dem
entsprechenden programm geöffnet wird
also bei doppelklick auf:
*.pdf - datei mit acrobat reader öffnen
*.wrd - datei mit word
*.xls - datei mit excel
*.txt - datei mit default eingestelltem editor öffnen
... usw.hat jemand eine Idee, wie ich das realisieren kann??
würde mich über eure vorschläge freuenGruß
Falk
-
// Initialisierungen CString strDatei(_T("test.doc")); CString strOrdner(_T("c:\\")); TCHAR chExe[256]; memset(chExe, 0, sizeof(chExe)); // Wer is zuständig? ::FindExecutable(strDatei, strOrdner, chExe); // Das Programm starten STARTUPINFO si = {sizeof(si)}; PROCESS_INFORMATION pi; CreateProcess(NULL,chExe,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,"C:\\",&si,&pi);
-
Wie wäre es mit
// Datei mit Pfad kommt später aus Deiner Auswahl ... CString strDatei(_T("c:\\MyPath\\test.doc")); // ShellExecute(..) öffnet mit assoziierten Dateitypen // (DOC mit Word, XLS mit Excel, PDF mit Acrobat .... ::ShellExecute (NULL, "open", strDatei, "",NULL,SW_SHOWNORMAL);
Gruss, Gio
-
Ach stimmt ja... ich starte ja nur das Programm - ohne Datei.
-
Vielleicht eine kleine Anmerkung. Ohne Frage die Antworten sind natürlich beide Richtig aber wäre es nicht sinnvoller zuerst zu prüfen ob das entsprechende Programm überhaupt verfügbar ist - soll heißen ist es überhaupt installiert.
2. Frage Was machst du mit anderen Dateitypen die nicht in der Liste sind - auch wenn du sie nicht öffnen willst so kann es doch sein das der nutzer sie versehentlich öffnet.
Soll nur ein Gedanke sein
-
Bei mir wäre chExe wohl leer und man könnte dem Benutzer ne Meldung ausgeben.
Bei Gio geht vermutlich das "Öffnen mit..."-Fenster von Windows auf.