【问题标题】:Right-click menu of EXE fileEXE文件的右键菜单
【发布时间】:2012-02-20 02:04:08
【问题描述】:

我想知道是否可以在 Delphi 中实现一些添加到 EXE 文件的右键菜单中的项目,特别是尚未在任何地方注册或安装的 Windows 服务应用程序 EXE。菜单选项将允许用户将 EXE 作为 Windows 服务安装/卸载。这可能吗?如果是这样,那怎么办?只要兼容Windows Vista+就可以了。

会有 2 个菜单项:

  • 安装(或卸载)
  • 开始(或停止)

【问题讨论】:

  • 单个文件不声明要显示的 Windows 右键菜单的信息。您是在问如何对一个特定的可执行文件执行此操作吗?
  • 为什么投反对票?这是一个完全有效的问题。
  • @LeonardoHerrera 同意 - 是否有可能回答“否”的问题并不意味着它应该被否决。

标签: delphi service menu delphi-xe2 right-click


【解决方案1】:

如果您指的是 Shell 上下文菜单(Windows 资源管理器中的右键单击窗口),则不能。您可以添加到将为所有 .exe 文件显示的菜单中,但不能为单个文件显示。

您可以为 all 可执行文件注册一个上下文菜单处理程序,然后过滤传递的文件名以查看您是否需要处理它,但这意味着对于数百个 (或数千)的可执行文件,您的过滤器将运行您的应用程序被右键单击的可能性很小。

一种可能的解决方法是将具有自定义扩展名的文件放在服务的文件夹中,然后为该文件添加上下文菜单处理程序。右键单击该文件时,菜单项将简单地使用适当的命令行参数调用您的服务。

(当然,最好的解决方案是使用控制面板的服务小程序来管理您的服务,这是它专门设计的功能。)

【讨论】:

  • 此外,在上下文菜单起作用之前,您必须安装 shell 扩展。这意味着,您必须为特定文件安装安装程序?
  • 好点。在我决定这是一个坏主意之前,我什至没有费心去想它。 :)
  • 所以最后,实际上答案是肯定的,但后果很严重,所以非常不推荐这个答案。
  • 不仅如此 - 你还有鸡和蛋的问题。
  • 我确信有办法,但我不打算追求一种非常庞大的、脱离现实世界的方法。
【解决方案2】:

【讨论】:

  • 不,不是。您不能添加到特定可执行文件的上下文菜单中。您可以为所有个可执行文件添加一个,但不能为单个的。
  • 我认为这不是不可能的,codeproject.com/Articles/441/… 从这篇文章中可以看出可以按文件名过滤。
  • 当然。这意味着,对于系统上每个右键单击的可执行文件,都会调用您的扩展程序,并且在您的过滤器运行时系统会出现延迟。做一些愚蠢的事情完全是对系统资源的浪费,并对整个系统产生负面影响。没有实用 方法可以为单个文件添加上下文菜单。 (更实用的解决方案是将一个单独的文件放在您的服务文件夹中,为该单独文件的扩展名注册一个处理程序,并将您的服务设置为该新文件扩展名的处理程序。)
  • 虽然我完全同意你的看法,Ken,但我只是想知道@JerryDodge 更喜欢什么 :)
  • 过滤是完全合理的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多