Name der Augabedatei in Visual Studio
-
Hallo.
Ich habe mir eine MFC-Exe erstellt. In den Projekteinstellungen im Linker ist folgendes bei der Ausgabedatei eingestellt: (OutDir)\\(ProjectName).exe. Mein Projekt heißt EventMonitor. Wenn ich die das Programm gestartet habe ist im Taskmanager der Prozess allerdings als EVENTM~1.EXE zu sehen. Wo kann ich einstellen das mein Prozess EventMonitor.exe heißt?
Gruß
-
Welcher Taskmanager, der von Win95?
Also in meinem XP-Taskmanager sind die Prozesse nicht mit 8.3-Namenskonvention aufgeführt...
-
Eigentlich der von Windows 2000. Hat mich ja auch gewundert. Was mich nun noch mehr wundert ist, dass es jetzt auf einmal richtig ist. Seltsam
-
So jetzt heißt das Ding wieder EVENTM~1.EXE. Das scheint irgenwie willkürlich zu sein. Oder es hängt von einem Faktor ab den ich nicht kenne. Weiß vieleicht jemand woran sowas liegt. Ich muss vieleicht dazu sagen dass die Exe aus einem anderen Programm raus gestartet wird.
-
WIE wird denn der Prozess gestartet?
Wenn er via (D)COM gestartet wird, dann wird immer der 8.3-Namen verwendet...
-
Über die Funktion CreateProcess() der WinApi
-
WER startet das?
-
Das startet meine andere MFC Anwendung.
-
Ok. Folgendes habe ich noch herausgefunden. Dazu muss ich vieleicht noch genauer den Sachverhalt beschreiben. Die genannte .exe wird aus einer von mir erstellten DLL gestartet. Wenn ich diese DLL in einer weiteren MFC exe einbinde und die Funktion zum starten der eventmonitor.exe aufrufe, stimmt der Name. Wenn ich die DLL allerdings in eine nicht MFC Anwendung verwende und die Funktion aufrufe, erhalte ich den namen im 8.3 Format.
-
Debugge halt mal bis zu der "CreateProcess" stelle und schaue nach, ob dort der 8.3 Name übergeben wird...
-
Das war bisher die schwierigkeit aus der fremden Anwendung raus zu debugen. Jetzt hat es aber geklappt. Vorher wird die Funktion FindExecutable() die wiederum im Paramter die exe im 8.3 Format zurückliefert. So jetzt muss ich nur noch wissen wie ich das umgehe?
-
Du hast vermutlich den ShortFileName in der Registry als Namen für die EXE eingetragen! (IMHO macht das die MFC automatisch, oder Martin?)
-
Ich habe jetzt die Funktion FindExecutable rausgenommen und den Namen richtig an CreateProcess übergeben. Trotzdem steht der abgekürzte Name im Taskmanager.
ShortFileName in der Registry?? nein also explizit habe ich da gar nichts gemacht.
Martin? Wer ist Martin?
-
Jochen Kalmbach schrieb:
Du hast vermutlich den ShortFileName in der Registry als Namen für die EXE eingetragen! (IMHO macht das die MFC automatisch, oder Martin?)
Jupp! CDocManager::RegisterShellFileTypes verwendet AfxGetModuleShortFileName.
-
Das ist der Martin-MFC-Guru!
-
Hallo
Achso jetzt steh ich gerade auf der Leitung. Was muss ich da nun wo einstellen.
-
Nix... was stört Dich denn an dem kurzen Namen?
-
Ich habe das Problem, dass ich den Prozess zuerst suche wenn dieser nicht läuft wird er neu getartet. Aber wenn er immer einen anderen Namen hat ist es nicht einfach nach ihm zu suchen.
-
Dann such halt nach dem langen *und* dem kurzen Namen! (GetShortpathName!)
http://msdn.microsoft.com/en-us/library/aa364989.aspxPS: Die *beste* lösung ist ein Mutex zu nehmen (such mal nach "single instance process")
http://www.bing.com/search?q=single+instance+process+mutex+site%3Acodeproject.com
-
Na super wieder total kompliziert.