ShellExecuteEx()使います
// 実行ファイルのパスと名前 CString programPath = "hogehoge.txt"; // 実行フォルダのパス CString workingDirectory = _T("C:\\Path\\To\\Working\\Directory"); // SHELLEXECUTEINFO構造体を初期化する SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) }; sei.fMask = SEE_MASK_NOCLOSEPROCESS; // プロセスハンドルを取得するためのフラグ sei.lpVerb = _T("open"); // 操作("open"または"print"など) sei.lpFile = programPath; // ファイルのパス sei.lpDirectory = workingDirectory; // 実行フォルダのパス sei.nShow = SW_SHOW; // 表示コマンド // ShellExecuteEx関数を使用して関連付けられたアプリケーションを起動する if (::ShellExecuteEx(&sei)) { // プロセスが終了するまで待つ ::WaitForSingleObject(sei.hProcess, INFINITE); // プロセスハンドルを閉じる ::CloseHandle(sei.hProcess); } else { // エラーメッセージを表示する ::AfxMessageBox(_T("コマンド実行に失敗しました。")); }