描述:
我写了一个程序,此程序有时不能正常退出,即屏幕上已经没了,但在task manager中还可以看到。因此,我想通过FindWindow查找此进程的主窗口,如果此窗口是隐藏的,则说明此进程没有正常退出。因此我想把此进程删掉,但我只知道此进程的主窗口的句柄,而无法得到此进程的id,请问如何才能得到。用PSAPI可以,但我想问问有没有更简单的方法。
解决立即送分。
解决方案1:
/*
コッ ハ テ・FindProcessHandleAndKill
コッハケヲトワ:クンエーソレテ軏鰈メオスエーソレヒトスフ,イ「ヌメームユ篋フノアヒタ
ー・アセ コナ:1.0
ヘ・ノネユニレ:2004/03/05
キオ サリ ヨオ:ウノケヲキオサリTRUE,キァーワキオサリFALSE
イホ ハ 1:メヤラヨキ逸ョア桄セオトエーソレオトテ﨤ニ
ニ萢・オテ・
モヲモテハセタ:
BOOL ret=FindProcessHandleAndKill("1");//イ鰈メエーソレア・簧ェ1オトエーソレ
*/
BOOL FindProcessHandleAndKill(const CString &cs_WndName)
{
HWND hWnd;
DWORD ProcessID;
HANDLE hProcess;
hWnd=::FindWindow(NULL, cs_WndName);
if(hWnd==NULL)//テサモミユメオスエーソレ
{
return FALSE;
}
else
{
if(GetWindowThreadProcessId(hWnd, &ProcessID)==0)//ハァーワ
{
return FALSE;
}
else
{
hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);
if(hProcess==NULL)
{
return FALSE;
}
else
{
if(TerminateProcess(hProcess, 0))
{
return TRUE;
}
else
{
return FALSE;
}
}
}
}
}