Archiv verlassen und diese Seite im Standarddesign anzeigen : "Kennt" ein Programm sich selbst?
Asmodeus
2005-07-12, 09:15:29
Ist es möglich, dass ein Windows-Programm nach dem Start abfragen kann, wie es heißt? Ich meine damit, ich erstelle ein Windows-Programm mit dem Namen Test.exe. Nun starte ich das Programm Test.exe und es soll abfragen wie es heißt und als Ergebnis erhalten: "Test.exe". Gibt es da schon etwas in der Windows-API, was diese Funktionalität bietet?
Gruss, Carsten.
Abe Ghiran
2005-07-12, 11:06:37
Moin moin,
spontan fällt mir da GetModuleFileName (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getmodulefilename.asp) ein. Das gibt dann den Dateinamen inklusive dem kompletten Pfad zurück. Wenn du wirklich nur den Namen der .exe haben willst, ist es ja trivial den vorderen Teil des Strings abzuschneiden.
Grüße, Jan
Asmodeus
2005-07-12, 11:52:47
Moin moin,
spontan fällt mir da GetModuleFileName (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getmodulefilename.asp) ein. Das gibt dann den Dateinamen inklusive dem kompletten Pfad zurück. Wenn du wirklich nur den Namen der .exe haben willst, ist es ja trivial den vorderen Teil des Strings abzuschneiden.
Grüße, Jan
Besten Dank, das war genau der Befehl, den ich brauchte.
Gruss, Carsten.
Neomi
2005-07-12, 13:44:15
Nachtrag: argv[0] ?!?
Bei Konsolenapplikationen ja, aber nicht in der WinMain.
Crushinator
2005-07-12, 13:46:57
Nachtrag: argv[0] ?!?
Geht bei GUI-Programmen nicht out of the Box, weil der lpCmdLine Parameter der WinMain-Funktion nicht den Namen der Executable enthält. Wenn man daraus argv[0] machen will, muß man CommandLineToArgvW (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/commandlinetoargv.asp) bemühen. :) (Geht i.Ü. erst ab shell 6.0 sprich XP)
[Edit]
Rein für evtl. Interessenten: Es gibt auch eine selbstgemachte ordinäre Version (CommandLineToArgvA (http://alter.org.ua/docs/win/args/index.php?lang=en&)) für alle Windosen.
argv[0] ist aber nicht zwingend der vollständige pfad zum programm.
Achso und wenn man das brauch in einer Anwendung mit WinMain sollte man lieber
__argv
oder
__wargv
verwenden. Das kennen eigentlich alle Windows Compiler. (Ich habe noch keinen gesehen der es nicht hatte).
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.