将击键发送到 PowerPoint 窗口
Posted
技术标签:
【中文标题】将击键发送到 PowerPoint 窗口【英文标题】:Send keystrokes to powerpoint windows 【发布时间】:2021-02-03 20:21:52 【问题描述】:我正在尝试将击键发送到 Python 中的 PowerPoint 幻灯片,以便自动推进幻灯片。我想发送VK_RIGHT
和VK_LEFT
消息。
我正在使用win32gui.FindWindow
通过标题找到 Powerpoint 窗口,然后尝试使用以下命令向窗口句柄发送消息:
win32api.SendMessage(windowhandle, win32con.WM_KEYDOWN, win32con.VK_RIGHT, 0))
虽然这适用于记事本等其他应用程序,但它似乎不适用于主窗口。对于记事本,它实际上适用于其子窗口,因此我尝试使用 Powerpoint 子窗口:
win32gui.EnumChildWindows
我循环它们以向每个子窗口发送相同的消息,但它似乎也不起作用。
win32api.SendMessage
的LRESULT
始终为 0(记事本为 1)。
知道为什么会这样吗?
【问题讨论】:
【参考方案1】:另一种(可能更好的)解决方案是使用 COM32,它恰好包含在 win32api 中。
您可以使用this library for office作为参考。
打开PowerPoint并查看下一张幻灯片的示例:
app = win32com.client.Dispatch("PowerPoint.Application")
objCOM = app.Presentations.Open(FileName="path_to_file", WithWindow=1)
objCOM.SlideShowWindow.View.Next()
来源:https://medium.com/@chasekidder/controlling-powerpoint-w-python-52f6f6bf3f2d
【讨论】:
谢谢@OskarZyg。我实际上已经看过中篇文章并尝试过这种方法。它错过了一步,因为您必须先开始幻灯片放映(我不知道该怎么做)。但最重要的是,我必须控制将在线播放的演示文稿的窗口,而不是具有传统幻灯片窗口的那个。我不明白这个库是否涵盖了这个“罕见”的功能。所以对我来说,目前最好的选择仍然是将键盘输入发送到幻灯片窗口。 该库中实际上似乎有一个广播模型:link我可能会尝试一下 广播对象记录不充分。虽然我可以在本地开始幻灯片放映,但广播要求一个 serverUrl。无论我尝试给它什么 URL,它都不起作用。 Office 演示服务实际上应该向您返回演示 URL,至少当您开始在 powerpoint 桌面应用程序中播放幻灯片时会发生这种情况。以上是关于将击键发送到 PowerPoint 窗口的主要内容,如果未能解决你的问题,请参考以下文章