int MyWatch(char * thread_name)
{
PROCESSENTRY32 pe32;
char * mychar;
BOOL bstart=TRUE;
HANDLE hProcessSnap;
while(1)
{
pe32.dwSize=sizeof(pe32);
hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot调用失败!\n");
return -1;
}
//遍历进程快照。轮流显示每个进程的信息
bstart = TRUE;
BOOL bMore=::Process32First(hProcessSnap,&pe32);
while(bMore)
{
USES_CONVERSION; //启用宏命令标记
mychar = W2A(pe32.szExeFile);
if(0==strcmp(thread_name,mychar)) //比较你的进程名字是否相同,判断是否进程在启动
{
printf("你的程序在运行!");
bstart = FALSE;
break;
}
// printf("进程名称:%s\n",W2A(pe32.szExeFile));
// printf("进程ID号:%u\n\n",pe32.th32ProcessID);
bMore=::Process32Next(hProcessSnap,&pe32);
}
if(bstart)
{
ShellExecute(0, _T("open"), _T("D:\\result.txt"),NULL,NULL,SW_SHOWNORMAL); //启动你要的exe文件,D:\\result.txt是我自己的测试
}
Sleep(5000);//5秒监测一次
}
//清除snapshot对象
::CloseHandle(hProcessSnap);
return 0;
}
监视进程函数(API扫描进程映射表)
最新推荐文章于 2024-08-01 09:26:03 发布