这是一个非常普遍的问题: 我想知道是否有可能找出一个应用程序(任何类型的应用程序,无论是delphi-application还是java或其他什么)都是由用户或其他应用程序启动的?如果有可能并且我看到另一个应用程序调用了一个应用程序,我可以找出“父”应用程序是什么,称为新程序吗?
Thnx提前!
编辑:也许它太笼统了 - 我怎样才能看出Delphi应用程序是否有Delphi本身的父应用程序,例如:一个应用程序是由服务启动的,我需要找到该服务吗?
答案 0 :(得分:2)
每个正在运行的应用程序都有一个父应用程序,它启动了它(根系统进程除外)。
无论何时是直接点击应用程序的用户,都无法判断。
示例:使用Explorer shell(而不是Internet Explorer)。
您可以双击任何应用程序来启动它。父进程将是explorer.exe。
您可以右键单击任何文件,然后会加载一堆上下文菜单扩展程序。他们中的一些人可能会启动外部应用程序,比如创建视频文件的预览(我看到了,发誓!)。父进程将是explorer.exe,但是用户没有注意到任何应用程序。他只是想查看文件的属性。他甚至都不知道应用程序已经推出了!
示例:使用Total Commander或任何其他双面板文件管理器,它们支持存档插件。
两个例子中案例1和案例2之间没有区别。
顺便说一句,“由用户启动”的定义尚不清楚。你甚至可以说没有用户的命令就什么都不会发生。案例#2中的所有后台进程都是因为用户要求而启动的。好吧,用户没有明确要求lauch,但他要求操作本身。答案 1 :(得分:1)
您没有提及是否要以编程方式执行此操作,或者您是否正在寻找仅显示信息的工具。
如果您只想查看信息,可以使用Process Monitor,它是SysInternals的一部分:
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
在“工具”菜单中,有一个“流程树”视图,显示包含父/子流程关系的树以及每个流程的所有者。
如果您想了解有关流程的更多详细信息,请查看Process Explorer:
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
答案 2 :(得分:1)
如果用户从Windows启动,那么父级将是 explorer.exe ,否则父级将是运行该进程的应用程序。 使用工具检查Ander Miller回复来检查流程的父级。
答案 3 :(得分:1)
您看到this question了吗? 我不确定我现在看到问题了。