PDA

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.

Coda
2005-07-12, 13:27:25
Nachtrag: argv[0] ?!?

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.

Gast
2005-07-17, 13:20:56
argv[0] ist aber nicht zwingend der vollständige pfad zum programm.

Gast
2005-07-17, 13:22:35
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).