在过程开始之前,做点什么

时间:2020-04-29 11:50:42

标签: c# windows winforms

所以我有一个从Windows开始的后台程序,最小化到系统任务栏图标。加载后,我需要它不断地开始检查进程是否已启动(例如VLC)。该过程开始后,它必须等待其关闭才能开始执行操作,然后返回以检查它是否已经开始。我已经尝试了一段时间了,但是我不知道怎么做。

我将如何不断检查程序是否已启动?

1 个答案:

答案 0 :(得分:0)

一种方法是让Background Deamon查找特定名称的程序。不幸的是,这种方法不太可靠(由于名称重叠),将需要进行大量轮询并冒着种族问题的风险(该过程始于您的守护进程仍在运行)。

将会可靠的是,如果 Deamon 实际上启动了前台进程。这样,它可以在Process.Start()之前和Process.WaitForExit()之后工作,并且在两种状态都发生时提供完整的信息:https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process?view=netcore-3.1

蒸汽就是一个很好的例子。这是一个单实例流程,因此任何其他请求都可以中继到正在运行的实例。指向程序/游戏的桌面链接实际上是Web链接-并非程序链接。这些链接使用:steam协议,这与蒸汽过程相关。就像这样:

  • 用户通过:steam procotoll在WebLink上滑动
  • Windows决定将其提交给Steam程序的命令行调用
  • 通过命令行以正确的顺序启动实例。单实例将不允许启动第二个实例,但会将请求移交给已经运行的实例
  • 已经或现在突然运行的实例调用了programm,它具有有关启动和结束时的完整数据-实际上是逻辑调用者
相关问题