有没有办法使用 python 获取活动 Windows 资源管理器的 URL



我需要运行右键单击窗口上下文项,并让正在运行的脚本选取要传递到脚本执行中的活动资源管理器窗口的 URL。

我已经创建了条目并使用.bat更新了注册表,如果用户将活动窗口的地址复制到剪贴板,然后在活动文件夹内右键单击并从菜单中选择项目,则可以使脚本工作。从我所做的研究中,到目前为止,我似乎无法找到一种方法来用Python做我想做的事情。我以为我可能会使用 psutils,但这并没有被证明有用,但我相信这可能是由于我正在更新的模块过时。

我希望用户能够在文件夹中右键单击并运行脚本,而无需先将资源管理器地址复制到剪贴板,因此欢迎任何指向获取 url 的更好方法的指针。

正如您已经提到的,您需要向注册表添加一个条目。请参考此答案。将注册表值设置为 "path/to/executable.exe" "%v" 。确保包含"%v"

然后,当用户单击上下文菜单项时,将使用路径作为命令行参数调用可执行文件。然后,您可以通过sys.argv检索路径:

import sys
path = sys.argv[1]

这是 bat 脚本的代码,这可能是我需要进一步更新它的地方,但是如果我先将资源管理器窗口的 url 复制到剪贴板,我没有 %v 的.bat版本工作,因为从上下文运行的 python 脚本会拾取它。

@echo off
REG ADD "HKCRDirectoryBackgroundshellSort Product Renders" /f /v "Icon" /t REG_SZ /d "Z:pipelinePythonpython.exe" 
REG ADD "HKCRDirectoryBackgroundshellSort Product Renderscommand" /f /ve /t REG_SZ /d "Z:pipelinePythonpython.exe %v Z:sort_product_sort_renders.py"

按照 Jakobs 的建议,我已将其更新为上述内容,运行它,但它不起作用。

这是我最初拥有的:

REG ADD "HKCRDirectoryBackgroundshellSort Product Renderscommand" /f /ve /t REG_SZ /d "Z:pipelinePythonpython.exe Z:sort_product_sort_renders.py"

我也试过:

REG ADD "HKCRDirectoryBackgroundshellSort Product Renderscommand" /f /ve /t REG_SZ /d "Z:pipelinePythonpython.exe %v"

如果我打印出 sys.argv[1],它是正在运行的文件的名称,这不是想要的。我们的 python .exe位于一台服务器上,正在运行的 python 脚本也是如此,我希望用户能够转到任何文件夹,右键单击,选择 python 脚本并将打开窗口的 url 传递给脚本。到目前为止,使用jakobs信息,这还没有成功。

我尝试了sys,argv[1],

它说索引超出范围,sys.argv[1]也没有给出正确的响应。

最新更新