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

时间:2009-08-26 11:36:56

标签: windows delphi

这是一个非常普遍的问题: 我想知道是否有可能找出一个应用程序(任何类型的应用程序,无论是delphi-application还是java或其他什么)都是由用户或其他应用程序启动的?如果有可能并且我看到另一个应用程序调用了一个应用程序,我可以找出“父”应用程序是什么,称为新程序吗?

Thnx提前!

编辑:也许它太笼统了 - 我怎样才能看出Delphi应用程序是否有Delphi本身的父应用程序,例如:一个应用程序是由服务启动的,我需要找到该服务吗?

4 个答案:

答案 0 :(得分:2)

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

无论何时是直接点击应用程序的用户,都无法判断。

示例:使用Explorer shell(而不是Internet Explorer)。

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

  2. 您可以右键单击任何文件,然后会加载一堆上下文菜单扩展程序。他们中的一些人可能会启动外部应用程序,比如创建视频文件的预览(我看到了,发誓!)。父进程将是explorer.exe,但是用户没有注意到任何应用程序。他只是想查看文件的属性。他甚至都不知道应用程序已经推出了!

  3. 示例:使用Total Commander或任何其他双面板文件管理器,它们支持存档插件。

    1. 您可以双击任何一个 应用程序启动它。父母 进程将是totalcmd.exe。
    2. 您可以输入存档文件并进行复制 (提取)从它到你的几个文件 文件夹。相应 插件可以处理提取 本身或运行不可见的过程 处理所有工作。你看到的只是 Total Commander的进度条。但 有一个新的过程及其父母 再次是totalcmd.exe。
    3. 两个例子中案例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了吗? 我不确定我现在看到问题了。