判断指定进程或程序是否存在的方法可以使用VC等编程语言来实现。下面是一个完整攻略:
明确需求
在编写代码之前,需要明确需求,即判断指定进程或程序是否存在。如果存在,则输出“存在”,否则输出“不存在”。
获取进程列表
获取进程列表是判断指定进程是否存在的关键步骤。可以通过以下方式获取系统中所有进程:
#include <windows.h>
#include <tlhelp32.h>
void EnumProcesses()
{
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //遍历进程快照
if (INVALID_HANDLE_VALUE == hProcessSnap)
{
return;
}
pe32.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hProcessSnap, &pe32)) //获取第一个进程
{
CloseHandle(hProcessSnap);
return;
}
do
{
//处理进程信息
} while (Process32Next(hProcessSnap, &pe32)); //获取下一个进程
CloseHandle(hProcessSnap);
}
判断进程是否存在
获取进程列表之后,可以根据进程的名称或进程ID来判断进程是否存在。具体代码可以使用以下方法实现:
#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <iostream>
bool IsProcessExist(TCHAR* processName)
{
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hProcessSnap)
{
return false;
}
pe32.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hProcessSnap, &pe32))
{
CloseHandle(hProcessSnap);
return false;
}
do
{
if (_tcsicmp(pe32.szExeFile, processName) == 0) //比较进程名称
{
CloseHandle(hProcessSnap);
return true;
}
} while (Process32Next(hProcessSnap, &pe32));
CloseHandle(hProcessSnap);
return false;
}
示例说明
示例1
比较一个进程是否存在:
bool isExist = IsProcessExist(L"notepad.exe");
if (isExist)
{
std::cout << "The process exists" << std::endl;
}
else
{
std::cout << "The process does not exist" << std::endl;
}
示例2
比较一个进程是否存在,如果存在,就杀死该进程:
HANDLE hProcess;
TCHAR processName[] = L"notepad.exe";
bool isExist = IsProcessExist(processName);
if (isExist)
{
hProcess = OpenProcess(PROCESS_TERMINATE, false, ProcessId);
TerminateProcess(hProcess, 0);
CloseHandle(hProcess);
}
以上是判断指定进程或程序是否存在方法的小结。通过获取进程列表和判断进程是否存在可以很容易地实现这个需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:判断指定的进程或程序是否存在方法小结(vc等) - Python技术站