Microsoft KB Archive/47037

{| = INFO: Using _pgmptr to Get the Full Path of Executing Program =
 * width="100%"|

Article ID: Q47037

The information in this article applies to:
 * The C Run-time (CRT) included with: - Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, 6.0ax - Microsoft C/C++ for MS-DOS, version 7.0 - Microsoft Visual C++ for Windows, versions 1.0, 1.5 - Microsoft Visual C++ 32-bit Edition, versions 1.0, 2.0, 2.1, 4.0, 5.0

SUMMARY
In Microsoft C, the variable _pgmptr is not defined in an include file. It is declared in CRT0DAT.ASM, which is part of the C startup code. This code is linked to any module that contains a main function. To use _pgmptr, it must first be declared as an external far character pointer, as follows:

extern char far *_pgmptr; Because _pgmptr is automatically initialized at startup to point to the full path of the executing program, only this declaration is required to make the full path available to your program. However, in Visual C++, _pgmptr is defined in stdlib.h, and the above declaration is no longer necessary.

MORE INFORMATION
The sample code below demonstrates how to use _pgmptr to obtain the full path and file name of the executing program for a console application. _pgmptr may also be used in Windows applications, both Win16 and Win32. For more information on _pgmptr as it applies to Windows applications, search the Visual C++ Books Online for &quot;_pgmptr&quot;.

Sample Code
/* Compile options needed: none. */

#include 

/* Note how _pgmptr is declared conditionally. For any version of     Visual C++, _MSC_VER >= 800. */

#if _MSC_VER <= 800 extern char far *_pgmptr; #else #include   #endif

void main(void) {     printf (&quot;The full path of the executing program is : %Fs\n&quot;,              _pgmptr); } In OS/2 real mode or MS-DOS 3.x, argv[0] also contains a pointer to the full path of the executing program. In OS/2 protected mode or Windows NT, argv[0] contains only the information typed at the command line to invoke the program. In these environments, using _pgmptr is the only way to easily access the executing program's full path string. Keywords         : kbcode kbCRT kbVC Version          : MS-DOS:5.1,6.0,6.00a,6.00ax,7.0; WINDOWS:1.0,1.5; WINDOWS NT:1.0,2.0,2.1,4.0,5.0 Platform         : MS-DOS NT WINDOWS Issue type       : kbinfo
 * }