Name der eigenen Exe ermitteln
-
Moin.
ich steh gerade was auf der Leitung.
Mein Proggie soll relativ individuell werden, der User kann das Programm kopieren und mit einem neuen Namen ins Verzeichnis legen. Das Proggie holt sich seine Buttons usw aus einer INI heraus, die den gleichen Namen wie die Exe haben soll.Beispiel:
Startmenü.exe soll sich die Daten aus der Startmenü.ini heraus holen
Addins-menu.exe aus der Addins-menu.iniWie stelle ich es an, dass ich das Auslesen der jeweiligen Ini individuell halte?
-
Mittels
GetCommandLine()kannst du jederzeit den Pfad der Anwendung (mit '"'-Zeichen umschlossen) und die Aufrufparameter ermitteln.
Optional ginge auchGetModuleFileNameExmitGetCurrentProcess()als Prozesshandle.
Den Namen der Datei daraus zu holen, sollte keine Probleme bereiten, oder
-
boah... sch***
GetModulfileName()... da hätte ich auch selber drauf kommen können.

Manchmal sieht man den Wald vor Bäumen nicht.

merci!
-
Alternativ kannst du es auch so machen.
#include <windows.h> #include <stdio.h> #include <string.h> #include <process.h> #include <Tlhelp32.h> int GetProcName(int id ,char *pname , int namebuflen); int main() { int pid = 0; char name[100]; pid = _getpid(); GetProcName(pid ,name ,100); printf("Proc name :%s", name); getchar(); return 0; } /* Get pid by process name */ int GetProcName(int id ,char *pname ,int namebuflen) { HINSTANCE hProcessSnap; PROCESSENTRY32 pe32 = {0}; hProcessSnap = (HINSTANCE)CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hProcessSnap == (HANDLE)-1){ return 1; } pe32.dwSize = sizeof(PROCESSENTRY32); if (Process32First(hProcessSnap, &pe32)) { do { if( pe32.th32ProcessID == id ){ if( (strlen(pe32.szExeFile)+1) > namebuflen ) { return 1; } strcpy(pname ,pe32.szExeFile); return 0; } } while( Process32Next(hProcessSnap, &pe32) ); } return 1; }
-
Sorry der comment bei Zeile 28 stimmt natürlich nicht!
-
Soweit ich weis übergibt Windows doch den Programm-Pfad/Name in argv[0] oder etwa nicht? In WinAPI Projekten in __argv[0] (wenn ich mich da richtig erinnere). Bin mir nicht sicher ob das für Windows fest so definiert ist, aber wenn ja könnte man es doch auch nutzen oder? Sicherlich leichter als über die ProzessID.
-
Da bekommst du den vollen pfad+dateinamen.
-
HighLigerBiMBam schrieb:
Da bekommst du den vollen pfad+dateinamen.
Jo gut, also wenns definiert ist kann man es wohl gut nutzen.
-
Vergesst es, kann gelöscht werden, dieser Post.