天天看點

判斷程序是否正在運作(c++)

#include<windows.h>
#include<tlhelp32.h>
#include<iostream>
#include<string>

using namespace std;

int find_process(string process_name)
{
    int count=0;//程序計數 
    PROCESSENTRY32 pe32;
    
    pe32.dwSize=sizeof(PROCESSENTRY32);
    HANDLE process_snapshot_handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//建立程序快照句柄
    
    if(process_snapshot_handle==INVALID_HANDLE_VALUE) return -1;//建立句柄失敗
    
    bool is_exist=Process32First(process_snapshot_handle,&pe32);//找第一個
    while(is_exist)
    {
        if(!stricmp(process_name.c_str(),pe32.szExeFile)) count++;//程序名不區分大小寫
        is_exist=Process32Next(process_snapshot_handle,&pe32);//找下一個
    }
    
    return count;
}

int main()
{
    int count=0;
	string process_name="TIM.exe";
	
	count=find_process(process_name);
	
	if(count==-1) cout<<"建立程序快照句柄失敗!"<<endl;
	else if(count==0) cout<<"未運作"<<endl;
	else cout<<process_name<<"正在運作"<<endl;
	
	system("pause");
	
	return 0; 
}