Standartprogramm für Datei ausführen
-
Hi!
Ich möchte eine Datei mit dem standartprogramm ausführen. Leider weiss ich nich wie ich das standartverzeichnis rausfinde (ACDSee beschwert sich z.B. wegen einer DLL die in dem "Common files" verzeichnis liegt.void Start(const char *File) { String FileExt = LowerCase(ExtractFileExt(File)); TRegistry *Registry = new TRegistry; try { Registry->RootKey = HKEY_CLASSES_ROOT; Registry->OpenKeyReadOnly(FileExt); String S = Registry->ReadString(""); //Default-Wert bekommen Registry->CloseKey(); Registry->OpenKeyReadOnly(S + "\\shell\\open\\command"); S = Registry->ReadString(""); //Default-Value bekommen S = Replace(S, "%1", File); //Eigene Funktion um %1 durch File zu ersetzen //Hier müsste das Verzeichnis gewechselt werden - nur wohin ? WinExec(S.c_str(), SW_SHOW); //Datei ausführen } catch (...) { ShowMessage("Fehler"); } }
-
Wozu so umständlich? ShellExecute löst dein ganzes Problem und reduziert die Quelltextzeilenzahl (o;
(ShellExecute simuliert einen Doppelklick auf eine Datei.)
-junix
-
Danke - genau das hab ich gesucht ^^