在windows下用c++编写守护进程

写一个C++程序,监控另一个进程,发现该进程关掉了就自动把它重启 
#include  
#include  
#include  
#include  

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

你可能感兴趣的:(Windows)