C++中怎么监控进程?本人C++小白,迫于特殊原因,求各位帮个忙!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中怎么监控进程?本人C++小白,迫于特殊原因,求各位帮个忙!相关的知识,希望对你有一定的参考价值。
仅仅监控两个进程,一个叫做"watch.exe",一个叫做"asker.exe",对这两个进程进行监控,如果发现它们被kill了,立马重新启动这个程序,注:假设watch和asker都在C:/WINDOWS这个文件夹内。
由于特殊原因,我写好了C#的代码,但由于我对C++一窍不通,恳请各位帮我翻译:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace watch
class Program
static void Main(string[] args)
Console.WriteLine("本程序作为监控进程程序,确保进程不被结束");
bool b = false;//用于监控watch
bool ba = false;//用于监控asker
Process[] pro = Process.GetProcesses();
for (int i = 0; i < 100000; i++)
foreach (Process pp in pro)
if (pp.ProcessName.Equals("asker.exe"))
b = true;
if (b == false)
Process.Start("C://windows/asker.exe");
foreach (Process pp in pro)
if (pp.ProcessName.Equals("watch.exe"))
ba = true;
if (ba == false)
Process.Start("C://windows/watch.exe");
要完整源码,复制+粘贴+编译就可以用的,说了我是菜鸟,完全不知所云。
实现代码如下,代码在vs2013和vs2017都通过测试:
#include "stdafx.h"#include <windows.h>
#include <Tlhelp32.h>
int main(int argc, char* argv[])
while (true)
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hSnapshot)
return 0;
PROCESSENTRY32 pi;
pi.dwSize = sizeof(PROCESSENTRY32);
BOOL bRet = Process32First(hSnapshot, &pi);
bool w1 = false;
bool w2 = false;
while (bRet)
if (!wcscmp(L"watch.exe", pi.szExeFile))
w1 = true;
else if (!wcscmp(L"asker.exe", pi.szExeFile))
w2 = true;
bRet = Process32Next(hSnapshot, &pi);
if (!w1)
WinExec("C://windows//watch.exe", SW_SHOWMAXIMIZED);
if (!w2)
WinExec("C://windows//asker.exe", SW_SHOWMAXIMIZED);
Sleep(3000);
return 0;
参考技术B CreateProcess函数,创建进程,其他的百度吧追问
跟你说了我什么都不懂。
追答那你就别搞了吧···怀疑你的目的···
参考技术C 要用WINDOWS API, 这个不是C++的概念了。。。。。。HANDLE hProces = CreateWindow(......);
while(true)
WaitForSingleObject(hProcess, INFINITE);
CreateWindow(...);
或者你也可以拦截结束进程的TerminateProcess API
百度: CreateProcess 、 WaitForSingleObject 、 Hook API本回答被提问者采纳 参考技术D 已鉴定,楼主是想弄病毒。 第5个回答 2018-12-05 同步COM+应用程序所用的IWAM_MYSERVER的密码
vs2010 c++打开项目是空白的
大神们 ...本人小白... 为什么新建项目打开之后就是空白的?
你新添加了一个空cpp文件,里面当然没内容了,你可以在这个新建的文件中写程序。你也可以新建一个mfc项目,里面应该有内容,至少包含框架追问大神 问一下 我想让打开的空白页面有 预处理指令
#include
using namespace std;
请问这是要自己输入吗?
以上是关于C++中怎么监控进程?本人C++小白,迫于特殊原因,求各位帮个忙!的主要内容,如果未能解决你的问题,请参考以下文章
怎么用c++编写一个Windows服务程序来监控另一个程序,崩溃后重新启动。
怎么用c++编写一个Windows服务程序来监控另一个程序,崩溃后重新启动。