在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;
答案 0 :(得分:0)
由于您需要从应用程序启动cmd进程,我建议将其作为应用程序而不是服务。从服务中启动应用程序位于“不可能难以忍受”的空间。
要枚举当前窗口,获取进程ID(以便能够找到exe名称)和标题),您必须使用pInvoke并调用一些Windows API函数。有关详细信息,请查看How to enumerate all windows belonging to a particular process using .NET?。有关使用这些调用的一些代码示例,请特别查看已接受答案中的链接。
最后,要启动新进程,您需要设置ProcessStartInfo实例,其中xyz.exe的路径为FileName值,标题为Arguments值。将此传递给Process的实例并启动后者。如果要控制cmd winodw是否可见,访问输出等,您需要查看ProcessStartInfo和Process的其他属性。
希望这有帮助。