2010-07-29 11 views
5
gespeichert

Mögliche Duplizieren:
How to get the application executable name in Windows (C++ Win32 or C++/CLI)?Suchen nach Verzeichnis des laufenden Prozess EXE in

Ich kann finden, in welchem ​​Verzeichnis das Verfahren bei der Verwendung GetCurrentDirectory() ausgeführt wird, aber was ist das Verzeichnis zu finden, Das Executable befindet sich in?

+0

Diese Frage unterscheidet [Wie die Anwendung ausführbare Datei-Namen erhalten in Windows (C++ Win32 oder C++/CLI)?] (http://stackoverflow.com/q/124886/145173) Diese Frage fragt, wie der Pfad zu dem Verzeichnis abgerufen werden kann. Die andere Frage fragt, wie der Pfad zu der Datei abgerufen werden soll. –

+0

Es ist nicht sinnvoll anders (beachten Sie, wie die * angenommene * Antwort darauf die gleiche Funktion referenziert wie die in der verknüpften Betrogenen, nur mit weniger Details). Es ist trivial, das Ergebnis nach Verzeichnis und Dateiname zu teilen. –

Antwort

12
+1

Können Sie ein Beispiel geben? Mir ist nicht klar, wo ich den HMODULE-Griff habe. –

+1

@John: 'GetModuleHandle (NULL)' –

+0

Wenn Sie die ausführbare Hauptdatei 'GetModuleHandle (NULL)' möchten. Wenn Sie eine DLL wünschen, wird das Handle zu dieser DLL (unter anderem) übergeben, wenn 'DllMain' aufgerufen wird. –

-2

in Visual C++ verwenden wir

CString m_sAppFolder = __targv[0] ; 

, die eine Zeichenfolge wie zurückgibt "C: \ blah \ blah \ executable_name.exe"

+3

-1 für: 1. Unnötige Abhängigkeit von MFC. 2. Das gleiche Problem wie Neil Moss 'Antwort. 3. Verwenden von Nicht-Standard "__targv". –

+1

Diese Technik sollte nicht verwendet werden. Aufrufer von 'CreateProcess' können den gewünschten Wert für' argv [0] 'bilden - es muss nicht einmal existieren. –

Verwandte Themen