进程关闭线程

时间:2022-10-14 23:48:07
Path = _T("D:\TTplayer.exe"); 
if(CreateProcess(Path, NULL,NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo,&ProcessInfo)) 

PROCESS_INFORMATION ProcessInfo; 
STARTUPINFO StartupInfo; 
ZeroMemory(&StartupInfo, sizeof(StartupInfo)); 
StartupInfo.cb = sizeof StartupInfo ; 
CString Path; 
Path = _T("D:\\Program Files\\TTPlayer\\TTPlayer.exe"); 
if(CreateProcess(Path, NULL,NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo,&ProcessInfo)) 

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


以上这样的程序,下面3行我想拉个线程来做等待,避免主线程因为WaitForSingleObject阻塞而死掉。哪位能帮我改改。自己用_beginthread,AfxBeginThread,CreateThread改了半天,毫无结果。 
WaitForSingleObject(ProcessInfo.hProcess,INFINITE); 
CloseHandle(ProcessInfo.hThread); 
CloseHandle(ProcessInfo.hProcess);

6 个解决方案

#1


主线程先开新线程
将以上代码 全部放在线程里就行了

#2


楼主可以把自己的代码贴出来 

#3


代码有点少噢...

#4


你是说界面卡死?还是一个线程卡死?既然怕卡死,为什么还要WaitForSingleObject?
是想要监视运行,还是要取得运行结果?

说出原因来....................

#5


其实这个是在一个循环里,目的是加载一系列的驱动,所以主界面不能出现卡死。哪位给个思路,我目前的想法是在CreateProcess之后拉起来一个线程把下面放进去跑。
WaitForSingleObject(ProcessInfo.hProcess,INFINITE); 
CloseHandle(ProcessInfo.hThread); 
CloseHandle(ProcessInfo.hProcess);
但是不知道如何实现。还请高手帮忙。

#6


int i,count;
count = 15;
Path[]={程序路径};
for(i=0;i<count;i++)
if(CreateProcess(Path[i],
NULL,NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo,&ProcessInfo)) 

PROCESS_INFORMATION ProcessInfo; 
STARTUPINFO StartupInfo; 
ZeroMemory(&StartupInfo, sizeof(StartupInfo)); 
StartupInfo.cb = sizeof StartupInfo ; 
CString Path; 
Path = _T("D:\\Program Files\\TTPlayer\\TTPlayer.exe"); 
if(CreateProcess(Path, NULL,NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo,&ProcessInfo)) 

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


所以我这里的等待是在等待前一个程序的结束。以便开始下个程序。

#1


主线程先开新线程
将以上代码 全部放在线程里就行了

#2


楼主可以把自己的代码贴出来 

#3


代码有点少噢...

#4


你是说界面卡死?还是一个线程卡死?既然怕卡死,为什么还要WaitForSingleObject?
是想要监视运行,还是要取得运行结果?

说出原因来....................

#5


其实这个是在一个循环里,目的是加载一系列的驱动,所以主界面不能出现卡死。哪位给个思路,我目前的想法是在CreateProcess之后拉起来一个线程把下面放进去跑。
WaitForSingleObject(ProcessInfo.hProcess,INFINITE); 
CloseHandle(ProcessInfo.hThread); 
CloseHandle(ProcessInfo.hProcess);
但是不知道如何实现。还请高手帮忙。

#6


int i,count;
count = 15;
Path[]={程序路径};
for(i=0;i<count;i++)
if(CreateProcess(Path[i],
NULL,NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo,&ProcessInfo)) 

PROCESS_INFORMATION ProcessInfo; 
STARTUPINFO StartupInfo; 
ZeroMemory(&StartupInfo, sizeof(StartupInfo)); 
StartupInfo.cb = sizeof StartupInfo ; 
CString Path; 
Path = _T("D:\\Program Files\\TTPlayer\\TTPlayer.exe"); 
if(CreateProcess(Path, NULL,NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo,&ProcessInfo)) 

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


所以我这里的等待是在等待前一个程序的结束。以便开始下个程序。