Microsoft KB Archive/126571

= How to obtain the program name in a Windows-based application and in a Win32-based application =

Article ID: 126571

Article Last Modified on 10/3/2005

-

APPLIES TO


 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition
 * Microsoft Visual C++ 1.51
 * Microsoft Visual C++ 1.52 Professional Edition
 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 2.1
 * Microsoft Visual C++ 4.0 Standard Edition
 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 6.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition
 * Microsoft Visual C++ 6.0 Professional Edition
 * Microsoft Visual C++ 6.0 Standard Edition

-



This article was previously published under Q126571



SUMMARY
MS-DOS applications written in C generally use main for the entry point. The command line can be obtained from the argv parameter of main. In particular, the program name is pointed to by argv[0].

There is a similar mechanism that can be used from Windows-based and Win32-based applications.



MORE INFORMATION
Windows-based and Win32-based application use WinMain as the entry point. WinMain has the lpszCmdLine parameter for the command line arguments, but this parameter does not include the program name. However, you can still get to the program name through the variable __argv.

In a 32-bit application you can just reference __argv directly. It is declared in stdlib.h

In a 16-bit application, __argv is not declared and you will need to declare it. Include the following declaration in your source or header file. #ifdef __cplusplus extern "C" #endif extern char ** __argv; To test this out, you can view __argv[0] by including the following line in your application. MessageBox( NULL, __argv[0], "__argv[0]", MB_OK ); Note argv[0] will contain a pointer to the program name as it was executed from the command line or Program Manager: either qualified or unqualified.

