我使用process.start从主应用程序中启动了一个小型应用程序。这是我的代码的摘要:(为了清楚起见,我删除了所有错误检查……)
Dim proc as New Process
Dim si As New ProcessStartInfo
si.FileName = "SourceMonitor.exe"
si.Arguments = "guid=" & GUID & " name=" & Name & " timeout=0"
si.UseShellExecute = True
si.CreateNoWindow = True
Proc.StartInfo = si
Proc.EnableRaisingEvents = True
AddHandler Proc.Exited, AddressOf procExitEventHandler
Proc.Start()
会发生什么情况,新应用 SourceMonitor 将不会显示在任务管理器中-但我希望这样做。 但是,一旦启动它(使用process.start)的程序退出,它会显示。我觉得这很奇怪! 我尝试将UseShellExecute设置为False,甚至尝试使用si(我的ProcessStartInfo)将
WindowStyle = ProcessWindowStyle.Hidden
si.UseShellExecute = False 'this is required when using processWindowStyle.hidden
在每种情况下,除非主程序退出,否则该应用程序不会不显示在任务管理器中。 有人知道确保我的应用程序确实显示在任务管理器中的方法吗?当我需要诊断客户问题时,它会有所帮助-因为我需要查看SourceMonitor是否正在运行。
答案 0 :(得分:0)
好吧-找到了“问题”-很明显... 第二个进程归第一个进程所有。它不会作为独立进程显示在列表中,而是作为主进程的子进程显示。任务管理器在主应用程序上具有一个下拉箭头。
v MainApplication
- SourceMonitor
单击下拉列表将显示它已被轰击的SourceMonitor。如果我停止主应用程序,则SourceMonitor确实会成为一个独立的应用程序,然后显示在常规列表中。这实际上比我希望的要好。