Eigenen Programnamen auslesen ?

Hallo!

Wie kann ich mein Programm dazu bringen, daß es weiss wie es heisst?

Beispiel - ich compeliere ein Prgramm mit dem Namen „test.exe“ - benenne es jetzt um, in „anders.exe“

Wie kann das selbe Programm feststellen (wenn es ausgeführt wird), daß es jetzt „anders.exe“ heisst?

// möglichst in cpp =)

Viele Grüße
Gunnar

mit argv[0] den EXE-Path ermitelln.
„c:\myprog\myapp.exe“ evt. parsen, also „myapp.exe“ rauskopieren und dann einfach mit nem konstanten string vergleichen

mit argv[0] den EXE-Path ermitelln.
„c:\myprog\myapp.exe“ evt. parsen, also
„myapp.exe“ rauskopieren und dann einfach
mit nem konstanten string vergleichen

achja logisch - ich hatte doch etwas in Erinnerung =)

Jetzt stellt sich mir nur meine uralte Frage: Wo ist bei einem Visual C++ die main() Routine ?!?!?

Vielen Dank und viele Grüße
Gunnar

Hi Gunnar.
Das ist eine gute Frage. Die WinMain-Funktion

int PASCAL WinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow)

besitzt, genauso wie die AfxWinInit-Funktion

BOOL AFXAPI AfxWinInit( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow )

den Parameter ,lpCmdLine’’.

Nach Recherche in der VC+±Hilfe, stellte
sich heraus, dass man mit der Funktion
,GetCommandLine’’ die gesamte Kommando-Zeile erhalten sollte. Leider wird in der
Beschreibung zu ,GetCommandLine’’ darauf hingewiesen, dass man die gesamte Kommandozeile erhält, bis auf den Programmnamen.
(ANSI GUI applications can use the lpCmdLine parameter of the WinMain function to access the command-line string, excluding the program name). Hierin sehe ich die Schwierigkeit in deiner Frage.
Das Problem könnte hier bei dem Typ von lpCmdLine liegen (LPSTR, nicht LPTSTR).
Wenn du das nicht irgendwie umgehen kannst, wüsste ich keinen besseren Hinweis, da ich selber hiermit noch keine Erfahrung gesammelt habe. Vielleicht schaust mal selber in der Hilfe nach oder hilft noch folgender Hinweis: Es gibt z.B. auch Informationen zur Unterstützung der Funktion wmain.

Billy

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi!

Versuch in Deinem Programm einfach einmal die globale Variable __argv[0] anzusprechen!

(Ich bin mit jetzt nicht ganz sicher, obs ein _ oder zwei __ sind!)

Max

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]