#include <window.h>
#include "tlhelp32.h"
#include <string.h>
using namespace std;
/*這是unicode*/
//判斷進程是否存在
BOOL IsExistProcess(const char* szProcessName)
{
PROCESSENTRY32 processEntry32;
HANDLE toolHelp32Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (((int)toolHelp32Snapshot) != -1)
{
processEntry32.dwSize = sizeof(processEntry32);
if (Process32First(toolHelp32Snapshot, &processEntry32))
{
do
{
int iLen = 2 * wcslen(processEntry32.szExeFile);
char* chRtn = new char[iLen + 1];
//轉換成功返回爲非負值
wcstombs(chRtn, processEntry32.szExeFile, iLen + 1);
if (strcmp(szProcessName, chRtn) == 0)
{
return TRUE;
}
} while (Process32Next(toolHelp32Snapshot, &processEntry32));
}
CloseHandle(toolHelp32Snapshot);
}
//
return FALSE;
}
//通過進程名來殺死進程
int KillProcess(LPCSTR processName)
{
PROCESSENTRY32 pe;
DWORD id=0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(hSnapshot,&pe))
{
return 0;
}
while(1)
{
pe.dwSize=sizeof(PROCESSENTRY32);
if(Process32Next(hSnapshot,&pe)==FALSE)
{
break;
}
//find processName
if(wcsicmp(pe.szExeFile, processName)==0)
{
id = pe.th32ProcessID;
break;
}
}
CloseHandle(hSnapshot);
//if(id == 0)
// return ;
//Kill The Process
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, id );
if (hProcess != NULL)
{
TerminateProcess(hProcess,0);
CloseHandle(hProcess);
}
return 1;
}
QT下獲取所有進程
//Qt開源庫, 通過QProcess啓動系統命令“tasklist.exe”, 獲取正在運行的進程
QProcess process;
process.start("tasklist.exe");
if(process.waitForFinished())
{
QByteArray result = process.readAll();
qDebug() << result;
}
QT結束進程
// notepad.exe 爲需要關閉的進程名
QString c = "taskkill /im notepad.exe /f";
p.execute(c);
p.close();