EXE文件的右键菜单

3
我想知道在Delphi中是否可以实现向EXE文件的右键菜单添加一些选项,特别是Windows服务应用程序EXE还未在任何地方注册或安装的情况下。菜单选项将允许用户将EXE安装/卸载为Windows服务。这可能吗?如果可以,那么如何实现?如果只能与Windows Vista+兼容也没关系。
将会有两个菜单选项:
- 安装(或卸载) - 启动(或停止)

单个文件没有声明信息,以便Windows右键菜单显示。您是在询问如何为一个特定的可执行文件执行此操作吗? - ardnew
3
为什么会被踩?这是一个完全合理的问题。 - Leonardo Herrera
@LeonardoHerrera 同意 - 一个问题是否可能,如果回答是否定的,也不意味着应该被踩。 - Jerry Dodge
2个回答

5
如果你指的是Shell上下文菜单(Windows资源管理器中的右键窗口),那么你无法实现。你可以添加到所有.exe文件显示的菜单中,但不能针对单个文件进行操作。
你可以为所有可执行文件注册一个上下文菜单处理程序,然后过滤传递的文件名以查看是否需要进行处理,但这意味着对于计算机上的数百个(或数千个)可执行文件,你的过滤器将会在被右键单击时运行,这种情况发生的可能性很小。
一个可能的解决方法是将具有自定义扩展名的文件放入服务文件夹中,并为该文件添加上下文菜单处理程序。当右键单击该文件时,菜单项将简单地使用适当的命令行参数调用你的服务。
(当然,最好的解决方案是使用控制面板的服务应用程序来管理你的服务,这正是它专门设计的目的。)

此外,在上下文菜单正常工作之前,您必须安装外壳扩展程序。这意味着您需要为特定文件安装安装程序? - martinstoeckli
好观点。在我决定这是个坏主意之前,我甚至都没有费心去深思熟虑。 :) - Ken White
最终,实际上答案是肯定的,但是后果非常可怕,所以真正的答案是强烈不推荐。 - Jerry Dodge
不仅如此 - 你还有一个鸡和蛋的问题。 - Leonardo Herrera
我相信有一种方法,但那是一种非常笨重、超出实际世界的方式,我不打算追求。 - Jerry Dodge

3

1
不,这是不可能的。你不能为特定的可执行文件添加上下文菜单。你可以为所有可执行文件添加一个,但不能为单个可执行文件添加。 - Ken White
我认为这并非不可能,http://www.codeproject.com/Articles/441/The-Complete-Idiot-s-Guide-to-Writing-Shell-Extens 从这篇文章中可以看出,您可以按文件名进行过滤。 - Lex Li
2
当你右键单击系统中的任何一个可执行文件时,这意味着你的扩展程序将会被调用,而在你过滤器运行期间,系统会出现延迟。做这种愚蠢的事情完全浪费系统资源并对整个系统产生负面影响。没有实际的方法为单个文件添加上下文菜单。(一个更实际的解决方案是将一个独立的文件放在您服务的文件夹中,注册该独立文件的扩展名处理程序,并将您的服务设置为该新文件扩展名的处理程序。) - Ken White
虽然我完全同意你的观点,Ken,但我想知道@JerryDodge喜欢什么 :) - Lex Li
1
过滤是完全可行的。 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接