收录日期:2018/08/17 01:42:27 时间:2016/05/22 09:12:44 标签:基础类
如题!
谢谢!
TerminateProcess这个api
TerminateProcess这个api
不过你得有权限
如果另外一个进程同样是Windows程序,并且这个进程能够取得另外一个进程的Handle,
向它发送WM_CLOSE的消息即可
BOOL TerminateProcess(
  HANDLE hProcess, // handle to the process
  UINT uExitCode   // exit code for the process
);
 
这要看什么线程.
如果是一般的工作线程,它会自动结束,
如果是线程类,你可以在InitInstance()里加上:
pThread=AfxGetThread();//当然,在此之前先将CWinThread *pThread声明成全局的,
这样,在任何地方想结束它时,只要:
if(pThread)
  {
DWORD exit;
         GetExitCodeThread(pThread->m_hThread,&exit);
         TerminateThread(pThread->m_hThread,exit);
  }
BOOL KillProcess(CString StrExeName)
{
HANDLE m_handle=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
HANDLE m_hOpenProcess;
PROCESSENTRY32* Info = new PROCESSENTRY32;
CString ss;
int nTemp;
Info->dwSize = sizeof(PROCESSENTRY32);
if(::Process32First(m_handle,Info))
{
while(::Process32Next(m_handle,Info)!=FALSE)
{
ss=Info->szExeFile;
ss.MakeLower();
if(ss.Find(StrExeName) != -1)
{
nTemp=Info->th32ProcessID;
if(IsWin2000 ()) 
{
BOOL retval = EnablePrivilege(SE_SECURITY_NAME);
if(!retval) return false;
else
{
// EnumWindows((WNDENUMPROC)EnumWinProc,Info->th32ProcessID);
/*如果用发消息WM_QUIT不行的话*/
m_hOpenProcess=OpenProcess(PROCESS_TERMINATE,0,Info->th32ProcessID);
nTemp=GetLastError();
TerminateProcess(m_hOpenProcess, 0);
nTemp=GetLastError();
::CloseHandle(m_handle);
if(Info)
{
delete Info;
}
return true;

}
}
}
}
}
return false;
}
其中KillProcess(CString StrExeName)
的StrExeName是进程名称
TerminateProcess