C# 如何检测和处理外部流程

C# 如何检测和处理外部流程,c#,.net,vb.net,C#,.net,Vb.net,我想知道用.net语言(C#或VB)是否能检测到新应用程序何时启动。 e、 g:用户从桌面打开Firefox.exe(不是从我的应用程序!),是否可以从我的应用程序检测到此事件?也可以在运行它之前“暂停”它吗? 例如,当一个用户双击一个应用程序时,我的应用程序首先出现,然后它会显示一条消息,如果他确定要用“是”和“否”按钮打开该文件。 我不需要所有的代码,我只需要知道如何捕捉系统中任何地方都可能发生的事件。user32.dll中有一些Windows API函数,您可以通过system.Runti

我想知道用.net语言(C#或VB)是否能检测到新应用程序何时启动。 e、 g:用户从桌面打开Firefox.exe(不是从我的应用程序!),是否可以从我的应用程序检测到此事件?也可以在运行它之前“暂停”它吗? 例如,当一个用户双击一个应用程序时,我的应用程序首先出现,然后它会显示一条消息,如果他确定要用“是”和“否”按钮打开该文件。
我不需要所有的代码,我只需要知道如何捕捉系统中任何地方都可能发生的事件。

user32.dll中有一些Windows API函数,您可以通过system.Runtime.InteropServices.DllImport在.NET应用程序中使用这些函数来获取所需的信息。看一看。有关示例代码,请参阅。由于应用程序在启动时往往处于活动状态,因此您会发现该示例中使用的技术会使其检测新的应用程序启动


这并不能回答让用户确认他们是否想要运行某个应用程序的问题,但它会让你朝着你想做的事情迈进一步

我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。您可以尝试使用某些系统库的系统级钩子捕获它,因此当启动新应用程序时,它将加载钩子库,您可以通知您的应用程序。但这可能并不容易,您可以尝试启动一个低优先级的backgound线程,定期调用“Process.getprocesss()”,并将列表与以前的调用进行比较。但是要暂停执行,我认为那是不可能的