如果我没有右键单击某个对象,为什么不能将右键单击的位置作为参数传递给程序?
我的测试设置: Windows 10,我正在运行 DebugViewer,并且我的程序 something.exe 将输出它收到的任何要调试的参数。
我在以下注册表项中设置了这些项:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\TestYo2]
@="Directory Test"
[HKEY_CLASSES_ROOT\Directory\Background\shell\TestYo2\command]
@="c:\\something.exe %1"
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\txtfile\shell\Try This]
@="Txt Menu"
[HKEY_CLASSES_ROOT\txtfile\shell\Try This\command]
@="c:\\something.exe %1"
结果: 当我右键单击文本文件并从上下文菜单中选择“Txt 菜单”时,程序将启动并将文件路径传递给文本文件。我右键单击的文本文件的位置将打印出来进行调试。
如果我右键单击打开的目录的背景并选择“目录测试”,则会显示以下消息: 此文件没有与之关联的程序来执行此操作。请安装程序,或者,如果已安装,请在默认程序控制面板中创建关联。 我的程序从未启动过。
是什么赋予了?
答案1
所以解决方案是这样的:
添加一个名为 NoWorkingDirectory 的新键并将数据留空。
在命令行中 %1 变成 %V
现在,当我右键单击背景并选择我的菜单项时,它会启动我的程序并将一个参数传递给程序,该参数包含刚刚发生右键单击的位置。完成。
通过这个帖子找到它:Windows shell add item to context menu when click on blank part of folder