CreateProcessの2度目以降のプログラム起動について – プログラミング – Home

CreateProcessの2度目以降...
 
通知
すべてクリア

[解決済] CreateProcessの2度目以降のプログラム起動について


初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
Topic starter  

CreateProcessを使っていて、ちょっと行き詰ったので質問させてください。
初心者故、ポイント外れな質問かもしれませんがご勘弁を。

CreateProcessで、あるプログラムを数回起動させるとします。
最初の起動は成功するのですが、2回目以降は起動しません。CreateProcess自体は戻り
値を見る限り成功しています。
なにが原因なのでしょうか?

//--------------------------------------
// CreateProcessスレッド

DWORD WINAPI fnThread(LPWSTR parameter)
{
 PROCESS_INFORMATION pi;
 STARTUPINFO si;
 ZeroMemory(&si, sizeof(STARTUPINFO));
 si.cb=sizeof(si);

 int value = CreateProcess(NULL, parameter, NULL, NULL, FALSE,
NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
 if(!value){
   int err = GetLastError();
   WCHAR str[32];
   wsprintf(str, _T(CreateProcess失敗:%d), err);
   MessageBox(NULL, str, _T(err), NULL);
 }

 CloseHandle(pi.hThread);
 WaitForSingleObject(pi.hProcess, INFINITE);
 CloseHandle(pi.hProcess);

 return 0;
}

//--------------------------------------
// メイン
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int
nShowCmd)
{
 HANDLE hThread[10] = { NULL };
 DWORD hThreadID[10] = { 0 };

 WCHAR buf[32];
 for(DWORD i=0; i<3; i++){
  wsprintf(buf, _T(%s %d), _T(notepad.exe), i+1);
   hThread[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)fnThread,
(LPVOID)buf, 0, &hThreadID[i]);
   Sleep(50000);
 }

 for(DWORD i=0; i<3; i++){
   if(hThread){
 CloseHandle(hThread[i]);
 hThread[i] = NULL;
   }
 }
 return 0;
}

開発環境はVC++2010、Windows7 Ulitimate32bitです。
よろしくお願いします。


引用未解決
トピックタグ
初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
Topic starter  

普通に起動しました。
自分の記述ミスのようでした<m(__)m>


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました