Python编程。访问Windows右键菜单选项

我希望在工作中自动完成一些任务。其中之一是将功率点文件组合并转换为PDF。我是一个新手(我刚刚完成了Magus Heitland的Beginning Python),所以我不完全确定我特别要问的是什么。 在Windows上,可以选择多个文件,右键单击,然后选择组合为adobe PDF。我已经想出了我要转换的文件的“分组”(我遍历dir并根据名称将文件嵌入到列表中),但我不确定如何继续下一步(右键单击/结合命令)。 谷歌搜索引领我走向像win32api,pywinauto和ctypes这样的东西。但当我读到他们做了什么时,我的新手会阻止我知道哪个是我需要的工具。 任何人都可以建议一些好的资源或提示吗?     
已邀请:

bab

当你点击
Combine
时,你想要准确查找命令行等效命令,让我们说它是
c:program filesadobecombiner ...
。你想构建这个字符串(文件列表为
...
)并执行它。子进程模块中的Popen会这样做。
import subprocess
cmd = [r"c:program filesadobecombiner"]
cmd.extend(file_list)
p = subprocess.Popen(cmd)
看看那个链接虽然,Popen需要很多论点,这只是最简单的形式。不知道参数是否必须在列表中,但它们在我见过的例子中。     
这个问题没有简单的答案。在Windows中,上下文菜单条目由上下文菜单shell扩展创建,这是一种shell扩展,它是在Windows资源管理器中注册的COM组件。要在一组文件上调用任意上下文菜单条目,必须执行以下操作: 获取包含文件的shell文件夹的IShellFolder接口。 使用IShellFolder :: GetUIObjectOf获取该shell文件夹的上下文菜单处理程序对象。将它传递给填充了所选文件列表的ITEMIDLIST,并且
riid
=
IContextMenu
。 调用IContextMenu :: InvokeCommand在文件组上执行所需的命令。 所有这些都可以在Python中实现(通过
ctypes
win32com
),但我认为最好从直接支持COM的语言(如C ++)开始,一旦你使用它就转换为Python ......或者使用不同的方法。 编辑如果您完全控制执行环境,则可能足以模拟用户输入(键盘和鼠标)。在Python中更容易做到。您只需要一个系统函数:SendInput。快速谷歌搜索显示了通过
ctypes
在这里使用SendInput的示例。     
如果您只是在寻找一个简单的解决方案,您可以自定义一个“发送到...”右键单击快捷方式,该快捷方式将使用要转换的文件的命令行参数调用您的python脚本。 要添加“发送到”快捷方式,它取决于您使用的是Windows 7还是32位先前版本。此处有说明可以添加自定义“发送到...”快捷方式。您可以将所有文件发送到单个文件夹并调用您的python脚本或使用所选文件作为命令行参数调用它。 Send To Toys工作在64位。使用Send To Toys,您可以在右键单击时将python脚本和所有shell转义文件名放在剪贴板上,然后将构造的命令粘贴到shell中。我经常使用这种方法,因为构建它只需要几秒钟。 您还可以通过tweeking注册表来添加右键快捷方式,以调用shell命令(您的python脚本),并将所选文件作为目标。您可以手动调整注册表或使用RightClick Extender之类的东西。 更多工作,您可以编写自定义ContextMenu类表单并以.NET语言响应表单。这将包括C#或Ironpython。 如果您真的想要Pro类型的实现,您可以修改Image Resizer的新开源版本的源代码。上下文菜单处理程序的c ++源代码在这里。但是这最后两个建议似乎比需要更多的工作......     

要回复问题请先登录注册