应用程序由用户或其他应用程序启动

这是一个非常普遍的问题:我想知道是否有可能find一个应用程序(任何types的应用程序,不pipe是一个delphi应用程序还是java或其他)是由用户还是由另一个应用程序启动的? 如果可能的话,我看到一个应用程序被另一个应用程序调用,我可以找出什么是“父亲”应用程序,那叫做新的程序?

Thnx提前!

编辑:也许这是太普遍 – 我怎样才能看到一个Delphi应用程序是否与Delphi本身的父应用程序,例如一个应用程序是由服务启动,我需要find该服务?

每个正在运行的应用程序都有一个启动它的父应用程序 (除了根系统进程)。

无论何时用户直接点击应用程序以启用它,都无法判断。

例如:使用资源管理器shell(不是Internet Explorer)。

  1. 你可以双击任何应用程序来启动它。 父进程将是explorer.exe。

  2. 您可以右键单击任何文件,并加载一组上下文菜单扩展程序。 其中一些可能会启动外部应用程序,比如说,创建一个视频文件的预览(我看到这个,发誓!)。 父进程将是explorer.exe,但用户没有注意到任何应用程序。 他只是想查看文件的属性。 他甚至不知道,应用程序被激发!

例如:使用Total Commander或任何其他支持归档插件的双面板文件管理器。

  1. 你可以双击任何应用程序来启动它。 父进程将是totalcmd.exe。
  2. 您可以输入存档文件并将其中的几个文件复制(提取)到您的文档文件夹。 相应的插件可以自行处理提取或运行隐形进程来处理所有的工作。 你看到的只是Total Commander的进度条。 但有一个新的进程,它的父母又是totalcmd.exe。

在两个例子中,情况1和2之间没有差别。

顺便说一句,“用户启动”的定义尚不清楚。 你甚至可以说没有用户的命令什么都不会发生。 案例#2中的所有后台进程都是由于用户请求而启动的。 那么,用户并没有明确要求lauch,而是要求操作本身。

如果您想以编程方式执行此操作,或者您正在查找显示信息的工具,则不提及。

如果您只想查看信息,则可以使用SysInternals的一部分进程监视器:

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

在“工具”菜单中,有一个“进程树”视图,向您显示一个包含父/子进程关系的树,以及每个进程的所有者。

如果你想了解关于进程的更多细节,请看Process Explorer:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

如果它由用户从Windows启动,那么父级将是explorer.exe ,否则父级将是运行该进程的应用程序。 通过使用工具检查Ander Miller回复来检查进程的父级。

你有没有看到这个问题 ? 我不确定我现在看到问题了。