VC判断指定程序是否运行,杀掉指定进程
2014-06-25 14:03
561 查看
#include <TlHelp32.h>
/*
名称: IsRunning
描述: 判断某进程是否存在
参数:
lpszProcessFileName[in]:Pointer to a null-terminated string specifying the name of the executable file for the process
返回:
If the process exists, the return value is an open handle to the specified process.
If the process doesn't exist, the return value is NULL.
约束: 无
其他: 无
*/
HANDLE IsRunning(LPCTSTR lpszProcessFileName, LPPROCESSENTRY32 pe);
HANDLE IsRunning(LPCTSTR lpszProcessFileName, LPPROCESSENTRY32 pe)
{
BOOL bLoop = TRUE;
HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
bLoop = Process32First(h, pe);
while (bLoop)
{
bLoop = Process32Next(h, pe);
TCHAR* ptszExefile = pe->szExeFile;
if (lstrcmp(ptszExefile,lpszProcessFileName) == 0)
{
return OpenProcess(PROCESS_TERMINATE, FALSE, pe->th32ProcessID);
}
}
return NULL;
}
/*
名称: IsProcessRun
描述: 判断某进程是否存在
参数:
lpszName[in]:Pointer to a null-terminated string specifying the name of the executable file for the process
返回:
If the process exists, the return value is an open handle to the specified process.
If the process doesn't exist, the return value is NULL.
约束: 无
其他: 无
*/
BOOL IsProcessRun(LPCTSTR lpszName);
BOOL IsProcessRun(LPCTSTR lpszName)
{
BOOL bLoop = FALSE;
PROCESSENTRY32 pe;
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
return FALSE;
}
pe.dwSize = sizeof(PROCESSENTRY32);
bLoop = Process32First(hProcessSnap, &pe);
if (!bLoop)
{
CloseHandle(hProcessSnap);
return FALSE;
}
while (bLoop)
{
bLoop = Process32Next(hProcessSnap, &pe);
if (lstrcmp(pe.szExeFile, lpszName) == 0)
{
CloseHandle(hProcessSnap);
return TRUE;
}
}
CloseHandle(hProcessSnap);
return FALSE;
}
/*
名称:KillProcess
描述:结束调所有名称为lpszProcessName的进程
参数:
lpszProcessName[in]:进程名称
返回:
指定的所有进程已结束,返回TRUE;否则返回FALSE
约束:无
其他:无
*/
BOOL KillProcess(LPCTSTR lpszProcessName);
BOOL KillProcess(LPCTSTR lpszProcessName)
{
BOOL bLoop = FALSE;
BOOL bRes = TRUE;
PROCESSENTRY32 pe;
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
return FALSE;
}
pe.dwSize = sizeof(PROCESSENTRY32);
bLoop = Process32First(hProcessSnap, &pe);
if (!bLoop)
{
CloseHandle(hProcessSnap);
return FALSE;
}
while (bLoop)
{
bLoop = Process32Next(hProcessSnap, &pe);
if (lstrcmp(pe.szExeFile, lpszProcessName) == 0)
{
HANDLE hPec = OpenProcess(PROCESS_TERMINATE, FALSE, pe.th32ProcessID);
if (hPec)
{
if (!TerminateProcess(hPec, 0))
{
bRes = FALSE;
}
}
}
}
CloseHandle(hProcessSnap);
return bRes;
}
/*
名称: IsRunning
描述: 判断某进程是否存在
参数:
lpszProcessFileName[in]:Pointer to a null-terminated string specifying the name of the executable file for the process
返回:
If the process exists, the return value is an open handle to the specified process.
If the process doesn't exist, the return value is NULL.
约束: 无
其他: 无
*/
HANDLE IsRunning(LPCTSTR lpszProcessFileName, LPPROCESSENTRY32 pe);
HANDLE IsRunning(LPCTSTR lpszProcessFileName, LPPROCESSENTRY32 pe)
{
BOOL bLoop = TRUE;
HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
bLoop = Process32First(h, pe);
while (bLoop)
{
bLoop = Process32Next(h, pe);
TCHAR* ptszExefile = pe->szExeFile;
if (lstrcmp(ptszExefile,lpszProcessFileName) == 0)
{
return OpenProcess(PROCESS_TERMINATE, FALSE, pe->th32ProcessID);
}
}
return NULL;
}
/*
名称: IsProcessRun
描述: 判断某进程是否存在
参数:
lpszName[in]:Pointer to a null-terminated string specifying the name of the executable file for the process
返回:
If the process exists, the return value is an open handle to the specified process.
If the process doesn't exist, the return value is NULL.
约束: 无
其他: 无
*/
BOOL IsProcessRun(LPCTSTR lpszName);
BOOL IsProcessRun(LPCTSTR lpszName)
{
BOOL bLoop = FALSE;
PROCESSENTRY32 pe;
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
return FALSE;
}
pe.dwSize = sizeof(PROCESSENTRY32);
bLoop = Process32First(hProcessSnap, &pe);
if (!bLoop)
{
CloseHandle(hProcessSnap);
return FALSE;
}
while (bLoop)
{
bLoop = Process32Next(hProcessSnap, &pe);
if (lstrcmp(pe.szExeFile, lpszName) == 0)
{
CloseHandle(hProcessSnap);
return TRUE;
}
}
CloseHandle(hProcessSnap);
return FALSE;
}
/*
名称:KillProcess
描述:结束调所有名称为lpszProcessName的进程
参数:
lpszProcessName[in]:进程名称
返回:
指定的所有进程已结束,返回TRUE;否则返回FALSE
约束:无
其他:无
*/
BOOL KillProcess(LPCTSTR lpszProcessName);
BOOL KillProcess(LPCTSTR lpszProcessName)
{
BOOL bLoop = FALSE;
BOOL bRes = TRUE;
PROCESSENTRY32 pe;
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
return FALSE;
}
pe.dwSize = sizeof(PROCESSENTRY32);
bLoop = Process32First(hProcessSnap, &pe);
if (!bLoop)
{
CloseHandle(hProcessSnap);
return FALSE;
}
while (bLoop)
{
bLoop = Process32Next(hProcessSnap, &pe);
if (lstrcmp(pe.szExeFile, lpszProcessName) == 0)
{
HANDLE hPec = OpenProcess(PROCESS_TERMINATE, FALSE, pe.th32ProcessID);
if (hPec)
{
if (!TerminateProcess(hPec, 0))
{
bRes = FALSE;
}
}
}
}
CloseHandle(hProcessSnap);
return bRes;
}
相关文章推荐
- vc判断指定进程或程序名是否存在和进程为64或者32位
- 判断指定的进程或程序是否存在方法小结(vc等)
- 判断指定的进程或程序是否存在方法小结(vc等)
- 根据进程名称判断程序是否运行
- Linux 判断进程是否已经运行的程序
- VC中判断程序是否已运行
- 判断指定的进程或程序是否存在方法
- 判断指定的进程或程序是否存在方法
- 判断指定的进程或程序是否存在方法
- VC判断指定进程是否存在IsExistProcess
- 安装前判断进程中是否有程序在运行
- c++ 或者 vc++中判断程序实例是否运行
- VC 判断指定进程是否已经启动
- 判断当前进程是否以管理员程序运行的方法
- 判断指定的进程或程序是否存在方法
- VC 判断进程是否是以管理员权限运行,并且判断是否是用户进程而非服务进程
- VC判断指定进程是否存在IsExistProcess
- Inno Setup安装、卸载时判断是否程序正在运行,安装完成时自动打开网页的脚本
- 判断指定进程号的进程是否存在
- 判断程序是否运行在虚拟机里 收藏