写一个C++程序,监控另一个进程,发现该进程关掉了就自动把它重启
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
using namespace std;
int _tmain(int argc, TCHAR *argv[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi; //进程信息:
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
do{
// 创建子进程,判断是否执行成功
if(!CreateProcess( NULL,"cmd /c d:\\1.jpg",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{
cout << "创建进程失败.." << GetLastError() << endl;
system("pause"); //用于测试
return 0;
}
//进程执行成功,打印进程信息
cout << "以下是子进程的信息:" << endl;
cout << "进程ID pi.dwProcessID: " << pi.dwProcessId << endl;
cout << "线程ID pi.dwThreadID : " << pi.dwThreadId << endl;
// 等待知道子进程退出...
WaitForSingleObject( pi.hProcess, INFINITE);//检测进程是否停止
//WaitForSingleObject()函数检查对象的状态,如果是未确定的则等待至超时
//子进程退出
cout << "子进程已经退出..." << endl;
//关闭进程和句柄
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
//system("pause");//执行完毕后等待
}while(true);//如果进程推出就再次执行方法
exit(0);
return 0;
}
介绍如何使Wndows API函数实现调用WINDOWS程序的操作。这对于AW用户来说是很有用的,可以使你能够在AW中调用第三方的程序或自己编写的WINDOWS程序。方法如下:
(1)启动AW,并新建一个文件;
(2)放置一个交互图标在流程线上,取名为“WinAPI Demo”;
(3)在此交互图标右边放置一个计算图标,设置类型为按钮,取名为“Windows资源管理器”;
(4)按快捷键“Ctrl+Shift+F”,打开“Function”窗口,选择这个文件,点击“Load”按钮,打开“WinAPI.u32”文件,并引入其中的函数“WinExec()”;
(5)双击“Windows资源管理器”计算图标,在里面写上“Winexec("explorer.exe",1)”;
(6)运行程序,点击“Windows资源管理器”按钮,可以启动Windows资源管理器。
照此举一反三,比如启动自己的程序或其它的Windows程序,这将会使你的多媒体作品更具魅力。
可以用SetWindowsHookEx, 设置自己的hook,把你的代码注入每个进程,得到进程相关信息。详细可以看msdn
分享到:
相关推荐
C++编写的守护进程,守护进程以windows服务的方式运行,可通过配置文件配置需要守护的exe。
标题中的“守护进程程序C++编写保护进程”指的是在C++编程环境中,通过特定的技术手段创建一个守护进程,它的主要任务是确保指定的C#程序(在这里可能是另一个进程)能够持续运行,即使在某些异常情况下(如用户手动...
这篇文档将深入探讨如何在Linux环境下使用C++编写守护进程。 守护进程的主要特性包括: 1. **无控制终端**:守护进程不与任何终端关联,因此不受用户的交互影响。 2. **后台运行**:在启动后,守护进程会脱离其父...
然而,这个话题是关于在Windows环境下使用C++编写的一个守护进程实现。 在Windows上,守护进程的实现方式不同于Linux,因为Windows并不直接支持守护进程的概念。在Linux中,守护进程通常通过脱离控制终端、改变工作...
在Linux系统中,C++编程时常常需要创建守护线程(daemon ...此外,如果目标程序是守护进程,可能需要考虑进程间的通信和控制,比如使用信号量或共享内存。在使用`system()`时,注意潜在的安全风险,避免命令注入。
在C++中,可以使用Windows API函数(如CreateToolhelp32Snapshot)来遍历和分析进程,或者编写内核驱动程序来获取更高的控制权限。 5. **源码分析**:`ProtectProcess`可能是源码中的关键函数或类,负责实现进程...
主要功能: 可设置检测的程序名称。 可设置udp通信端口。 可设置超时次数。 自动记录已重启次数。 自动记录最后一次重启时间。 是否需要重新刷新桌面。 可重置当前重启次数和最后重启时间。 自动隐藏的托盘运行或者...
在IT行业中,尤其是在Windows平台下的软件开发领域,Visual C++(简称VC)和MFC(Microsoft Foundation Classes)是常见的开发工具和库。MFC是一套C++类库,它为开发者提供了构建Windows应用程序的框架,简化了Win32...
总的来说,守护进程在Windows环境下通过服务模型实现,利用C++编程语言和Windows API可以构建一个能够监控自身状态并在异常情况下自动重启的应用。这种技术对于那些需要长时间稳定运行而不能因意外中断的系统尤为...
基于QT开发的Windows守护程序看门狗 提供QT源码和编译实现的程序daemon_qt.exe ...软件原理是程序扫描windows窗口任务,当连续5次没有发现守护程序在运行时,自动开启该程序。 程序可设定需要守护的windows程序
在Android 5.1中,守护进程主要由Java代码实现,但也有部分用C/C++编写,这些原生代码通常用于执行性能敏感或与硬件交互的任务。Android系统中的守护进程包括网络管理、电源管理、硬件抽象层(HAL)服务、媒体服务等多...
守护进程的父进程一般都是init进程,因为它真正的父进程在fork出守护进程后就直接退出了,所以守护进程都是孤儿进程,由init接管; 2、有哪些常见的守护进程 日志服务进程 syslogd 数据库守护进程 mysqld 3、创建...
本项目提供了一个用C语言编写的守护进程示例,并通过JNI(Java Native Interface)打包成SO库,以确保其在Android设备上不受安全软件如360清理的影响。 守护进程的特性包括: 1. **独立于控制终端**:守护进程运行...
在Linux或Unix系统中,它们可能是守护进程(daemon)。为了实现服务级进程,开发者需要编写能够独立于用户会话运行的代码,并处理好与系统服务框架的交互。 C++是实现这一目标的理想选择,因为它提供了强大的系统级...
在"VC版进程守护源代码"中,开发者使用C++编写了能够监视和恢复目标进程的代码。 3. **进程监控** 监控进程主要是通过Windows API函数实现,如`CreateToolhelp32Snapshot`、`Process32First`和`Process32Next`等,...
在这个场景下,我们讨论的是使用Visual C++ 6.0(简称VC6.0)开发的一个进程守护程序。VC6.0是一款经典的集成开发环境,虽然现在已经有些老旧,但仍然在某些领域被广泛使用,特别是对于维护旧有系统和代码库。 在...
在IT领域,守护进程(Daemon)是一种在后台运行的特殊类型的应用程序,它们通常用于执行特定的任务,如系统服务、监控任务或者定时任务等。在本案例中,“守护天使进程退出监视源码20130711”是一个旨在确保特定进程...
在Windows下,可以使用`shutdown /s /t [seconds]`命令,而在Linux中,可以编写一个脚本调用`shutdown`或`halt`命令并设置定时器。这些功能也可以通过图形化的任务计划程序实现。 接下来,进程守护(Process ...
在这个场景下,JNI被用来创建一个守护进程,该进程监视主服务的状态,并在主服务被系统终止时重新启动它。这样可以确保服务即使在受到系统清理的情况下也能持续运行。 首先,我们需要理解Android中的进程模型。每个...