超初心者です。
C++のコンソールアプリケーションで例えばメモ帳などのEXEファイルを指定して実行させるにはどうしたら良いでしょう?できればヘッダーから教えていただくと嬉しいです。
CreateProcessを使用しては?
//宣言
STARTUPINFO st_start;
PROCESS_INFORMATION st_info;
#define PRC_INIT 0x00 /*プロセス初期値*/
//ソース
memset( &st_start, PRC_INIT, sizeof( st_start ) );
st_start.cb = sizeof( st_start );
::CreateProcess( NULL, hidemaru.exe, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &st_start, &st_info );
hidemaru.exeのところを
お好きなexeに変更してください。。。。
ファイル名についてなんですが、フルパス表示しようとして
c:\Program Files\ABC\ABC.exe
ではうまくいかず、
再インストールしてフォルダを変更し
c:\ABC\ABC.exe
にすると起動できました。
スペースがあるから駄目なんでしょうか?
また、ABC.exeだけといったフルパスで表示しない方法もあるんですか?
まず、program filesのような半角スペースを含むパスについては
引用符でファイル名を囲まないとファイル名があいまいになってしまいます。
フルパスについては、
現在のディレクトリ、
Windowsディレクトリ、Windowsシステムディレクトリや
PATH環境変数に記述されているディレクトリ等の下にあれば
パスを省略できます。
WinExecc:\\Program Files\ABC\ABC.exe
でもうまくいきませんでした。
うまくいく記述例があれば教えていただけますか?
WinExecc:\\Program Files\\ABC\\ABC.exe
これでどうでしょう。
とりあえず、実行ファイルと同じディレクトリに
ABC.EXEをコピーして下記のWinExecで試してください。
パスに関してはそれから考えてはいかがでしょうか?
CString sComLine = ABC;
WinExec((LPCTSTR)sComLine, SW_SHOW);
うまくいかない場合は、どううまくいかないのか、その
エラーメッセージも記述してください。
ありがとうございました。質問者本人じゃないけど時効でしょうからガッテンしときましょうね。
ガッテンガッテン!