C# 中的事件监视

本文关键字:监视 事件 | 更新日期: 2023-09-27 18:32:40

在 C# 中,我需要寻找进程的触发器,比如"abc.exe"。每当这样的过程开始时,我都需要获取第一个参数(始终等于标题名称,例如caption_name(。然后我需要触发另一个过程,比如"xyz.exe" caption_name作为它的参数。

我希望这个程序作为在系统中运行的后台exe运行。因此,我需要它占用更少的内存空间。我该怎么做?

这就是我开始它的方式:

        ManagementEventWatcher watcher = new ManagementEventWatcher("Select * From __InstanceCreationEvent Within 5 Where TargetInstance Isa '"Win32_Process'" And TargetInstance.Name = '"hilite.exe'"");
        watcher.EventArrived += watcher_EventArrived;

C# 中的事件监视

由于您需要从应用程序启动cmd进程,因此我建议将其设置为应用程序,而不是服务。从服务启动应用程序位于"不可能到该死的硬"空间的某个地方。

若要枚举当前窗口,请获取进程 ID(以使您能够找出 exe 名称(和标题(,您必须使用 pInvoke 并调用一些 windows API 函数。查看如何使用 .NET 枚举属于特定进程的所有窗口?了解详情。特别是查看接受答案中的链接,以获取有关使用这些调用的一些代码示例。

最后,若要启动新进程,需要设置一个 ProcessStartInfo 实例,其中 xyz 的路径.exe作为"文件名"值,标题作为"参数"值。将其传递给 Process 的实例并启动后者。如果您想控制cmd winodw是否可见,访问输出等,则需要查看ProcessStartInfo和Process的其他属性。

希望这有帮助。