您的位置:首页 > 其它

检查程序进程是否存在/强制杀掉程序进程

2013-12-18 16:14 148 查看
#include <Windows.h>
#include <TlHelp32.h>

bool IsAppRunning()
{
bool m_running = false;

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE)
{
return m_running;
}

PROCESSENTRY32 pe = {0};
pe.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hSnapshot, &pe))
{
CloseHandle(hSnapshot);
return m_running;
}

while ( 1 )
{
if (!Process32Next(hSnapshot, &pe))
{
break;
}

if (lstrcmpi(pe.szExeFile, APP_PROG_NAME)==0)
{
m_running = true;
break;
}
}

CloseHandle(hSnapshot);

return m_running;
}

int ShutDownApp()
{
int result = -1;

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE)
{
return result;
}

PROCESSENTRY32 pe = {0};
pe.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hSnapshot, &pe))
{
CloseHandle(hSnapshot);
return result;
}

while ( 1 )
{
if (!Process32Next(hSnapshot, &pe))
{
break;
}

if (lstrcmpi(pe.szExeFile, APP_PROG_NAME)==0)
{
HANDLE process = OpenProcess(PROCESS_TERMINATE, 0, pe.th32ProcessID);
if (process)
{
result = 0;
TerminateProcess(process, 0);
CloseHandle(process);
}
}
}

CloseHandle(hSnapshot);
::Sleep(100);

return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: