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

2024-09-29 17:20:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在工作中自动化一些任务。其中之一是将power point文件合并并转换为pdf文件。我是个新手(我刚刚完成了Magus Heitland的Python入门),所以我不太确定我到底在问什么。在

在windows上,可以选择多个文件,右键单击,然后选择“合并为adobe PDF”。我已经找到了要转换的文件的“分组”(我遍历dir并根据它们的名称将文件嵌套在列表中),但我不确定如何执行下一步(右键单击/组合命令)。在

google让我找到了win32api、pywinauto和ctypes。但是当我读到他们做什么的时候,我的菜鸟阻止我知道我需要的工具是什么。在

有谁能提供一些好的资源或建议吗?在


Tags: 文件命令名称列表pdfwindowsdirpoint
3条回答

如果您只是在寻找一个简单的解决方案,您可以自定义一个“发送到…”右键单击快捷方式,该快捷方式将使用要转换的文件的命令行参数来调用python脚本。在

要添加“发送到”快捷方式,这取决于您使用的是Windows 7还是32位以前的版本版本。那里是HERE添加自定义发送到的指令。。。捷径。您可以将所有文件发送到一个单独的文件夹中,然后调用python脚本,或者使用选定的文件作为命令行参数来调用它。在

Send To Toys在64位中工作。使用SendToToys,您可以在右键单击时将python脚本和所有shell转义文件名放在剪贴板上,然后将构造的命令粘贴到shell中。我经常使用这种方法,因为它只需要几秒钟的时间。在

您还可以添加一个右键单击快捷方式,方法是在注册表中调用一个shell命令(您的python脚本),并将选定的文件作为目标。您可以手动检查注册表或使用类似RightClick Extender的内容。在

更多的工作,您可以编写一个自定义的ContextMenu Class form并用.NET语言响应表单。这将包括C或Ironpython。在

如果您真的想要Pro类型的实现,您可以修改Image Resizer的新开源版本的源代码。上下文菜单处理程序的c++源代码是here。但最后两个建议似乎比需要做的更多。。。在

当您单击Combine时,您想确切地查找对应的命令行是什么,假设它是c:\program files\adobe\combiner ...。您想要构建这个字符串(使用文件列表作为...)并执行它。subprocess模块中的Popen将执行此操作。在

import subprocess
cmd = [r"c:\program files\adobe\combiner"]
cmd.extend(file_list)
p = subprocess.Popen(cmd)

看看这个链接,Popen需要很多参数,这是最简单的形式。不知道参数是否在列表中,但它们在我见过的例子中。在

这个问题没有简单的答案。在Windows中,上下文菜单条目是由上下文菜单shell扩展创建的,它是shell扩展的一种类型,是一个在Windows资源管理器中注册的COM组件。要对一组文件调用任意上下文菜单项,必须执行以下操作:

  1. 获取包含文件的shell文件夹的IShellFolder接口。在
  2. 使用IShellFolder::GetUIObjectOf获取该shell文件夹的上下文菜单处理程序对象。向它传递一个ITEMIDLIST,其中包含所选文件的列表和riid=IContextMenu。在
  3. 调用IContextMenu::InvokeCommand对文件组执行所需的命令。在

这一切都可以在Python中实现(通过{{CD3>}或^ {CD4>}),但是我认为最好先从支持COM的语言(如C++)开始,一旦您执行Python,就将其转换为Python…或者使用不同的方法。在


编辑如果您完全控制了执行环境,那么可以模拟用户输入(键盘和鼠标)。用Python做起来容易得多。您只需要一个系统函数:SendInput。快速google显示了一个通过ctypeshere使用SendInput的示例。在

相关问题 更多 >

    热门问题