我需要运行一个右键单击Windows上下文项,并让正在运行的脚本拾取活动资源管理器窗口的URL,以传递给脚本执行。
我已经创建了条目,并使用.bat更新了注册表,如果用户将活动窗口的地址复制到剪贴板,然后在活动文件夹内单击鼠标右键,然后从菜单。从我所做的研究来看,到目前为止,我似乎还无法找到一种方法来完成我想要的事情。我以为我可能会使用psutils,但这并未被证明有用,但是我相信这可能是由于我正在更新的模块已过期。
我希望用户能够右键单击该文件夹并运行脚本,而不必先将资源管理器地址复制到剪贴板,因此,欢迎使用指向更好方法获取URL的任何指针。
答案 0 :(得分:0)
您已经提到过,您需要在注册表中添加一个条目。请参阅this answer。
将注册表值设置为"path/to/executable.exe" "%v"
。确保包括"%v"
。
然后,当用户单击上下文菜单项时,将以路径作为命令行参数来调用您的可执行文件。然后,您可以通过sys.argv
检索路径:
import sys
path = sys.argv[1]
答案 1 :(得分:0)
这是bat脚本的代码,可能是我需要对其进行进一步更新的地方,但是如果我将“资源管理器”窗口的网址复制到了.bat的.bat版本中,%v无法正常工作。剪贴板优先,因为从上下文运行的python脚本将其提取。
@echo off
REG ADD "HKCR\Directory\Background\shell\Sort Product Renders" /f /v "Icon" /t REG_SZ /d "Z:\pipeline\Python\python.exe"
REG ADD "HKCR\Directory\Background\shell\Sort Product Renders\command" /f /ve /t REG_SZ /d "Z:\pipeline\Python\python.exe %v Z:\sort_product_\sort_renders.py"
按照Jakobs的建议,我已经将其更新为上述内容,可以运行它,但是它不起作用。
这是我最初的经历:
REG ADD "HKCR\Directory\Background\shell\Sort Product Renders\command" /f /ve /t REG_SZ /d "Z:\pipeline\Python\python.exe Z:\sort_product_\sort_renders.py"
我也尝试过:
REG ADD "HKCR\Directory\Background\shell\Sort Product Renders\command" /f /ve /t REG_SZ /d "Z:\pipeline\Python\python.exe %v"
如果我打印出sys.argv [1],则它是正在运行的文件的名称,而不是所需的名称。 我们的python .exe和正在运行的python脚本一样都位于一台服务器上,我希望用户能够转到任何文件夹,右键单击,选择python脚本,并将打开窗口的URL传递给该脚本。到目前为止,使用jakobs信息尚未成功。
我尝试了sys,argv [1],它说索引超出范围,sys.argv [1]也没有给出正确的响应。