- 起動プログラムのパスを取得 -



今回も簡単、パスの取得にはGetModuleFileName関数を使用します。



□ MSDNよりGetModuleFileNameの引用 □

 DWORD GetModuleFileName(
   HMODULE hModule,
   LPTSTR lpFilename,
   DWORD nSize
 );

   ・取得に失敗した場合、戻り値は0

   ・hModuleはモジュールのハンドルを指定
    ここはNULLでOK

   ・lpFilenameはバッファへのポインタを指定
    配列なら配列変数名を指定すればOK

   ・nSizeはlpFilenameバッファのサイズを、文字単位で指定
    配列の確保サイズを指定すればOK





サンプルではダイヤログに作成したボタンをクリックするとエディットボックスにパスを表示するプログラムを作ってみます



≪ MFC ダイヤログベースでの作成サンプル ≫


 ■ダイヤログにエディットボックスとボタンを作成

      

      ※サンプルでは各IDは以下の様にしています
       エディットボックス → IDC_FILENAME
       ボタン → IDC_BUTTON





 ■ClassWizardよりボタンにクリックイベント関数を追加

      

      クラス名 → C***Dlg
      オブジェクトID → IDC_BUTTON
      メッセージ → BN_CLICKED





 ■作成した関数にソース追加
void CGetFileNameDlg::OnButton()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

//ファイルパス格納用char型配列の作成
char filename[256];

//GetModuleFileName関数を使いfilenameにファイルパスを格納
//戻り値をチェックして0ならメッセージボックスにエラーを表示
if ( !(GetModuleFileName(NULL,filename,256))){
MessageBox("実行パスの取得に失敗しました","error");
}
else{
//エディットボックスにメッセージを送る
GetDlgItem(IDC_FILENAME)->SetWindowText(filename);
}
}






 ■以上、コンパイルすれば完成

      

      ボタンをクリックすると起動プログラムのフルパスを取得し
      エディットボックスに表示します