ebergman@isis.cs.du.edu (Eric Bergman-Terrell) (03/11/91)
How can a Windows program figure out the pathname of its .exe file? Why I ask: I have a Windows program that needs to load a data file that is stored in the same directory with the .exe. I don't want to hard-code the data file's filename... In MS-DOS, a program could get this information by looking at argv[0]. How is it accomplished in Windows? ADV thanks ANCE Terrell
ebergman@isis.cs.du.edu (Eric Bergman-Terrell) (03/11/91)
Well, (I think) that I've answered my question: Here's how I'm opening a file which exists in the same directory as my program: BOOL file_exists(char *filename) /* Returns TRUE iff the specified filename exists. */ { OFSTRUCT of; return OpenFile((LPSTR) filename, &of, OF_EXIST) != -1; } void open_file(HWND hwnd, const char *filename) /* Attempt to open the specified file. */ { char pathname[MAXPATH], drive[MAXDRIVE], dir[MAXDIR], file[MAXFILE], ext[MAXEXT]; /* Get full pathname of file. */ GetModuleFileName(GetModuleHandle("program.exe"), pathname, MAXPATH); fnsplit(pathname, drive, dir, file, ext); sprintf(pathname, "%s\%s\%s", drive, dir, filename); if (file_exists(pathname)) input_file = fopen(pathname, "r"); if (input_file == (FILE *) NULL) MessageBox(hwnd, "File not found", "", MB_OK | MB_ICONSTOP); } IS THERE A BETTER WAY? Terrell