如下:
//枚舉並得到進程ID: PROCESSENTRY32 p32;
HANDLE hprocess;
HANDLE pName=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL); 
//開始查找 
BOOL Next=Process32First(pName,&p32); 
int i=0; 
//遍歷進程 
while(Next) 

//?示?程 
if((strcmpi(p32.szExeFile,"loadappi.exe"))==0) //"你要的?程"); 
{
//根据?程ID?取句并 

hprocess=OpenProcess(PROCESS_CREATE_PROCESS,0,p32.th32ProcessID); 
// hprocess=OpenProcess(PROCESS_TERMINATE,0,p32.th32ProcessID); 
//好了?得你要的句柄了。
AfxMessageBox("have found the loadappi.exe process");
SuspendThread(hprocess);//這一句為什麼不起作用,我的那個程式仍然可以運行,界  面上的test按鈕仍然可以按下並執行.
AfxMessageBox("SuspendThread ok?"); break;
}
//??查找 
Next=Process32Next(pName,&p32); 
i++; 
}  CloseHandle(pName);

AfxMessageBox("Not SuspendThread ok?");
各位大俠幫忙看看哪里出問題了?

解决方案 »

  1.   

    为什么不直接得到创建时候你当前的线程的句柄SuspendThread呢??
      

  2.   

    To:flinming(flinming) 
    是這樣的,另外的一個程式已經在系統中先運行了,我的程式是後臺監控的,如果找到了它,並且它按了test按鈕之後就要將其停住,等後臺程式干完其它的事之後,再去恢復執行它.
    所以創建時候的句柄無法在後臺程式中得到.
      

  3.   

    SuspendThread(hprocess)
    hprocess是進程句柄,又不是線程的,憑什麽終止人家啊!
      

  4.   

    阻塞掉它?還是什麽別的意思?
    WaitForSingleObject(hProcess,INFINITE)
      

  5.   

    一个进程不能暂停的。
    只能暂停线程。线程才是Windows下的执行单元。
    如果你要整个进程都暂停,那么只好暂停其中所有的线程了。