INFO: Using _pgmptr to Get the Full Path of Executing ProgramLast reviewed: September 2, 1997Article ID: Q47037 |
The information in this article applies to:
SUMMARYIn 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 INFORMATIONThe 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 "_pgmptr".
Sample Code
/* Compile options needed: none. */ #include <stdio.h> /* 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 <stdlib.h> #endif void main(void) { printf ("The full path of the executing program is : %Fs\n", _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 : CRTIss kbcode kbcode kbfasttip 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 |
================================================================================
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |