0

在 C# 中,我需要寻找进程的触发器 say "abc.exe"。每当这样的过程开始时,我需要获取第一个参数(总是等于标题名称,比如标题名称)。然后我需要触发另一个进程,比如"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;
4

1 回答 1

0

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

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

最后,要启动新进程,您需要设置一个 ProcessStartInfo 实例,将 xyz.exe 的路径作为 FileName 值,将标题作为 Arguments 值。将此传递给 Process 的实例并启动后者。如果要控制 cmd winodw 是否可见、访问输出等,则需要检查 ProcessStartInfo 和 Process 的其他属性。

希望这可以帮助。

于 2013-09-25T18:57:57.643 回答