Board logo

标题: [工具合集] 运行守护指定程序(c#) [打印本页]

作者: ivor    时间: 2018-2-26 22:45     标题: 运行守护指定程序(c#)

本帖最后由 ivor 于 2019-5-31 07:40 编辑
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Diagnostics;
  4. /**
  5.     读取第一个参数启动程序(支持守护*.bat脚本,*.py等等),守护进程防止退出,需要安装.net 2.0 or later
  6.     如果不结束守护程序,是无法退出被守护的进程,不要做非法用途。
  7.     启动例子:deamon "notepad.exe"
  8. */
  9. namespace Deamon
  10. {
  11.    
  12.     class Program
  13.     {
  14.         [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
  15.         public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  16.         [DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)]
  17.         private extern static bool ShowWindow(IntPtr hWnd, Int16 nCmdShow);
  18.         public static String fn { get; set; }
  19.         static void Main(string[] args)
  20.         {
  21.             Console.Title = "deamon";
  22.             IntPtr hWnd= FindWindow("ConsoleWindowClass", "deamon");
  23.             if(hWnd != IntPtr.Zero)
  24.             {
  25.                 ShowWindow(hWnd, 0);
  26.             }
  27.             if(args.Length > 0)
  28.             {
  29.                 fn = args[0];
  30.                 Program p = new Program();
  31.                 p.Launch(fn);
  32.                 Console.ReadKey();
  33.             }
  34.             
  35.         }
  36.         public void Launch(String FileName)
  37.         {
  38.             ProcessStartInfo psi = new ProcessStartInfo();
  39.             psi.FileName = FileName;
  40.             Process p = new Process();
  41.             p.StartInfo = psi;
  42.             p.EnableRaisingEvents = true;
  43.             p.Exited += LaunchAgain;
  44.             p.Start();
  45.         }
  46.       
  47.         public void LaunchAgain(object o, EventArgs e)
  48.         {
  49.             Launch(fn);
  50.         }
  51.     }
  52. }
  53.    
复制代码
编译文件:https://pan.baidu.com/s/1kWqLWR9
作者: codegay    时间: 2018-2-27 02:20

弄几个守护进程互相守护,然后再放到任务计划定时触运行。
作者: Tack    时间: 2018-8-13 11:39

回复 1# ivor


    用法是什么呢?
作者: 老刘1号    时间: 2019-5-31 12:32

这是重复启动吧……
emm不过想搞成真正的“守护”估计需要360那种的驱动防护




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2