因为某个小原因 自己折腾了一个小程序
一段时间内检测某个进程,如果存在则循环检测,如果不存在则自动重启(默认时间5分钟内)
多说无益 直接上代码 有需要的自己可以参考
#include <iostream>
#include <windows.h>
#include "psapi.h"
#include"stdio.h"
#include <tlhelp32.h>
#include"shellapi.h"
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
#define _CRT_SECURE_NO_WARNINGS
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 main()
{
int i,j;
for (i = 0,j=300;i=j;)
{
//std::cout << i;
if (IsExistProcess("Steam.exe"))
{
printf("进程存在\n");
}
else{
printf("进程不存在!\n");
PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
si.wShowWindow = SW_SHOW;
si.dwFlags = STARTF_USESHOWWINDOW;
bool fRet = CreateProcessW(L"C:/Steam/Steam.exe", NULL, NULL, FALSE, NULL, NULL, NULL, NULL, &si, &pi);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
Sleep(2 * 1000);
i++;
j--;
}
}