某些流程何时开始可以通知?

时间:2009-12-16 17:09:22

标签: winapi process notifications

启动foo.exe时我需要知道(最好是延迟时间最短)。

现在,我有一个位于光循环(~10 Hz)的线程,并在进程树中查找foo.exe

这不是很优雅,我想知道是否可以注册Windows API的某些部分,以便在任何进程启动时获得回调。

如果没有这样的设施,我当然愿意接受更优雅地完成这项任务的其他方法。

2 个答案:

答案 0 :(得分:4)

您可以通过Image File Execution Options将自己注册为foo.exe的调试程序。只要系统需要启动foo.exe,它就会启动你的应用并将foo.exe及其参数传递给你。你必须自己开始这个过程。

注意:像往常一样,Raymond Chen有些words of caution

您还可以设置一个system-wide message hook,并为每个新进程加载你的dll,检查它是否是你刚才通过的那个,对于foo.exe你通知自己然后通过。不幸的是,这意味着你将在每个进程中注入你的代码,并且你会损害系统性能。更不用说如果您的代码中有错误,您实际上可以软管每个人。

答案 1 :(得分:0)

可能的选择:

foo.exe是否在您的控制之下?如果是这样,修改源代码以发送信号。

foo.exe不受你的控制吗?写一个injection DLL并让它在用正确的名称加载到进程中时发送一个信号。