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("コマンド実行に失敗しました。"));
}