![Board logo](images/default/logo.gif)
标题: [工具合集] 运行守护指定程序(c#) [打印本页]
作者: ivor 时间: 2018-2-26 22:45 标题: 运行守护指定程序(c#)
本帖最后由 ivor 于 2019-5-31 07:40 编辑
- using System;
- using System.Runtime.InteropServices;
- using System.Diagnostics;
-
- /**
- 读取第一个参数启动程序(支持守护*.bat脚本,*.py等等),守护进程防止退出,需要安装.net 2.0 or later
- 如果不结束守护程序,是无法退出被守护的进程,不要做非法用途。
- 启动例子:deamon "notepad.exe"
- */
-
- namespace Deamon
- {
-
- class Program
- {
-
- [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
- public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
- [DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)]
- private extern static bool ShowWindow(IntPtr hWnd, Int16 nCmdShow);
-
- public static String fn { get; set; }
-
- static void Main(string[] args)
- {
- Console.Title = "deamon";
- IntPtr hWnd= FindWindow("ConsoleWindowClass", "deamon");
-
- if(hWnd != IntPtr.Zero)
- {
- ShowWindow(hWnd, 0);
- }
- if(args.Length > 0)
- {
- fn = args[0];
- Program p = new Program();
- p.Launch(fn);
- Console.ReadKey();
- }
-
- }
-
-
- public void Launch(String FileName)
- {
- ProcessStartInfo psi = new ProcessStartInfo();
- psi.FileName = FileName;
-
- Process p = new Process();
- p.StartInfo = psi;
- p.EnableRaisingEvents = true;
- p.Exited += LaunchAgain;
-
- p.Start();
-
- }
-
- public void LaunchAgain(object o, EventArgs e)
- {
- Launch(fn);
- }
- }
- }
-
复制代码
编译文件:https://pan.baidu.com/s/1kWqLWR9
作者: codegay 时间: 2018-2-27 02:20
弄几个守护进程互相守护,然后再放到任务计划定时触运行。
作者: Tack 时间: 2018-8-13 11:39
回复 1# ivor
用法是什么呢? ![](images/smilies/default/tongue.gif)
作者: 老刘1号 时间: 2019-5-31 12:32
这是重复启动吧……
emm不过想搞成真正的“守护”估计需要360那种的驱动防护
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |