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です。
よろしくお願いします。
普通に起動しました。
自分の記述ミスのようでした<m(__)m>