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");






要完整源码,复制+粘贴+编译就可以用的,说了我是菜鸟,完全不知所云。

参考技术A

实现代码如下,代码在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;
请问这是要自己输入吗?

参考技术A

一、点击解决方案资源管理器

二、展开你的项目名,我的项目叫作练习

三、展开源文件双击 练习.cpp

四、注意上一步是你的.cpp文件

参考技术B 打字呀!

以上是关于C++中怎么监控进程?本人C++小白,迫于特殊原因,求各位帮个忙!的主要内容,如果未能解决你的问题,请参考以下文章

怎么用c++编写一个Windows服务程序来监控另一个程序,崩溃后重新启动。

怎么用c++编写一个Windows服务程序来监控另一个程序,崩溃后重新启动。

如何在没有监控线程或进程的情况下使用 C++ 快速获取目录是不是已更改?

VS2015 C++没办法调试,怎么解决

博是平时主要发布什么?

vs2010 c++打开项目是空白的