如果我没有单击对象,为什么不能将右键单击的位置作为参数传递?

如果我没有单击对象,为什么不能将右键单击的位置作为参数传递?

如果我没有右键单击某个对象,为什么不能将右键单击的位置作为参数传递给程序?

我的测试设置: 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

相关内容