CreateProcess为什么在程序中能执行在线程中不能执行
void CLoaderDlg::OnButton1()
{
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo; //This is an [in] parameter
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof StartupInfo ; //Only compulsory field
StartupInfo.wShowWindow = SW_HIDE;
if(CreateProcess(NULL, "D:\\tiff2pdf.exe -o D:\\xx.pdf D:\\xx.tif",
NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,
NULL,&StartupInfo,&ProcessInfo))
{
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
}
else
{
MessageBox("The process could not be started...");
}
}
在这里是可以执行的,可是我另外开了一个线程,在线程里面就不能执行,不知道为什么,是同样的代码啊。
BOOL CTransthread::Transfile(CString& filename)
{
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo; //This is an [in] parameter
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof StartupInfo ; //Only compulsory field
if(CreateProcess(NULL, "D:\\tiff2pdf.exe -o D:\\xx.pdf D:\\xx.tif",
NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,
NULL,&StartupInfo,&ProcessInfo))
{
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
}
else
{
AfxMessageBox("The process could not be started...");
}
return true;
}
搞了好久了,真是不清楚这有什么区别。请高手赐教!