+ -
当前位置:首页 → 问答吧 → 结束进程问题

结束进程问题

时间:2011-12-14

来源:互联网

先上我的代码: 
C/C++ code

int KillProcess(LPCSTR pszClassName, LPCSTR pszWindowTitle)
{
    HANDLE hProcessHandle;  //
    ULONG nProcessID;
    HWND TheWindow;

    TheWindow = ::FindWindow( NULL, pszWindowTitle );
    ::GetWindowThreadProcessId( TheWindow, &nProcessID );
    hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE, nProcessID );
    return ::TerminateProcess( hProcessHandle, 4 );
}


问题来了,这几行代码只适用于有窗口的程序,对于一些没有窗口的,只有进程名的,我怎么关闭它;

作者: yangxiaozi   发布时间: 2011-12-14

api 有枚举进程,找到你的ID就可以把进程关闭!

作者: HOUXIAN   发布时间: 2011-12-14

进程枚举就可以了。
int killpro(CString a)
{
PROCESSENTRY32 pe32;
pe32.dwSize =sizeof(pe32);
HANDLE hpro=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hpro==INVALID_HANDLE_VALUE)
{  
return 0;
}
BOOL nowrun=Process32First(hpro,&pe32);
while(nowrun)
{
if(pe32.szExeFile ==a)
{
DWORD proid=pe32.th32ProcessID;
HANDLE hprocess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,proid);
if(hprocess!=NULL)
{
::TerminateProcess(hprocess,0);
::CloseHandle(hprocess);
}
}
nowrun=::Process32Next(hpro,&pe32);
}
}

作者: wltg2001   发布时间: 2011-12-14