在我的 C# 应用程序中,我要求服务将持续监视进程。如果进程被某种方式或用户杀死或停止,则必须启动它。并且该服务将启动/重新启动该过程。我能够从一个进程启动一个 exe,如果该进程被用户杀死,或者有任何机会服务将重新启动该进程。但是我这里有个问题。
我是怎么做到的
string ProcessName = "Notepad++";
String appName = @"C:\Program Files (x86)\Notepad++\Notepad++.exe";
System.Diagnostics.Process[] proc = System.Diagnostics.
Process.GetProcessesByName(ProcessName);
if (proc.Length > 0)
{
}
else
{
// start the process
AppLoader.PROCESS_INFORMATION procInfo;
bool result = AppLoader.StartProcess(appName, out procInfo);
}
//Check if the process is running or not.
while (true)
{
Int32 result2 = WaitForMultipleObjects(.....);
System.Threading.Thread.Sleep(1000);
}
我有 StartProces 里面的 AppLoader 代码,它有一个 WIn 32 APICreateProcessAsUser
bool result = CreateProcessAsUser(hUserTokenDup,
null,
applicationName,
ref sa,
ref sa,
false,
dwCreationFlags,
IntPtr.Zero,
null,
ref si,
out procInfo
);
这是开始这个过程。
现在,当我的服务第一次启动时,进程启动但如果我终止进程它没有启动,所以我知道我必须使用WaitForMultipleObject Win32 API
并完成它。我在 google 中查到了,但没有代码示例WaitForMultipleObject
,谁能帮我展示WaitForMultipleObject
.
谢谢