Posted By

jimfred on 05/07/09


Tagged

windows WinBase


Versions (?)

Get my exe's directory. WinBase API


 / Published in: C++
 

Determine directory where the .exe is running from. Usually it's CWD - but not always, such as MsiExec Custom Actions.

Windows. non-dot.net, with or without MFC.

  1. CString sThisDir; // in atlstr.h
  2.  
  3.  
  4. ::GetModuleFileName( // In WinBase.h.
  5. 0, // retrieve path of .exe file for the current process.
  6. sThisDir.GetBufferSetLength(MAX_PATH),
  7. MAX_PATH);
  8.  
  9. sThisDir.Truncate( sThisDir.ReverseFind('\\') + 1 ); // Chop off the app.exe portion.
  10.  
  11.  
  12. // Alternative to create a myApp.ini file name:
  13.  
  14. CString thisExe; // in atlstr.h
  15.  
  16. ::GetModuleFileName( // In WinBase.h.
  17. 0, // retrieve path of .exe file for the current process.
  18. thisExe.GetBufferSetLength(MAX_PATH),
  19. MAX_PATH);
  20.  
  21. thisExe.Truncate( thisExe.ReverseFind('.') ); // Chop off the .exe.
  22.  
  23. CString iniFile = thisExe;
  24. iniFile.Append( ".ini" ); // Replace .exe with .ini.
  25.  
  26. // I didn't use CString::Replace because there could be multiple embedded ".exe" in the path.
  27. // I found that Vista wanted to store INIs in the Windows directory rather than the CWD.

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: jimfred on July 13, 2009

char* URL = "http://www.inprise.com"; // Now just use ShellExecute to run it rcode = ShellExecute( NULL, "open", URL, NULL, "C:\", SW_SHOW );

All of these functions can be found in your Win32.hlp file.

You need to login to post a comment.