Anwendung zur Erweiterung finden.
-
Wie kann ich am einfachsten eine Anwendung starten, die für eine bestimmte Dateierweiterung registriert ist, ohne das ich eine entsprechende Datei hab, die geöffnet werden soll?
-
In der Registry nachschauen, welche Anwendung für den Dateityp registriert ist. Steht im Unterschlüssel HKEY_CLASSES_ROOT, ist in der WinAPI-Hilfe dokumentiert und auch mit dem Registrierungseditor leicht nachvollziehbar.
-
Hatte ich schon befürchtet, dass das wieder so ein Registry gefrickel wird. Ne einfache Funktion in der WinAPI gibts da nicht?
-
naja du kannst doch - so weit ich mich erinnere - einfach mit shellexcute die datei "starten" Dann sollte imho das prog geöffnet werden.
mfg tobZel
-
Ja, aber ich hab die Datei nicht.
-
1000000 schrieb:
Ja, aber ich hab die Datei nicht.
Dann erstelle eine leere Datei und gib der leeren Datei die entsprechende Endung :
// 1. Datei kann leer sein, hauptsache die Endung stimmt // 2. Pfad und Dateiname müssen aber existieren unsigned char datei [] = "C:\\TEMP\\fake.txt"; unsigned char pfad [] = "C:\\TEMP\\"; unsigned char buffer [400]; // enthält nach Aufruf von FindExecutable () den Pfad und Name // des für diesen Dateityps registrierten Programms unsigned int error = (unsigned int) FindExecutable (datei,pfad,buffer); switch ( error ) { case 0 : { break; } // "system is out of memory or resources" case 2 : { break; } // ERROR_FILE_NOT_FOUND case 3 : { break; } // ERROR_PATH_NOT_FOUND case 11 : { break; } // ERROR_BAD_FORMAT case 31 : { break; } // Dateierweiterung nicht registriert default : { WinExec (buffer,SW_SHOWNORMAL); break; } // sollte NOTEPAD starten }
-
Warum einfach, wenns auch umständlich geht?
Außerdem hat die Anwendung vielleicht gar keine Schreibrechte in C:\TEMP
-
@audacia: Jo, seh ich genau so.
@merker:
MSDN zu WinExec schrieb:
Note: This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function.
Quelle: http://msdn2.microsoft.com/en-us/library/ms687393.aspx