【问题标题】:Send keystrokes to powerpoint windows将击键发送到 PowerPoint 窗口
【发布时间】:2021-02-03 20:21:52
【问题描述】:

我正在尝试将击键发送到 Python 中的 PowerPoint 幻灯片,以便自动推进幻灯片。我想发送VK_RIGHTVK_LEFT 消息。

我正在使用win32gui.FindWindow 通过标题找到 Powerpoint 窗口,然后尝试使用以下命令向窗口句柄发送消息:

win32api.SendMessage(windowhandle, win32con.WM_KEYDOWN, win32con.VK_RIGHT, 0))

虽然这适用于记事本等其他应用程序,但它似乎不适用于主窗口。对于记事本,它实际上适用于其子窗口,因此我尝试使用 Powerpoint 子窗口:

win32gui.EnumChildWindows

我循环它们以向每个子窗口发送相同的消息,但它似乎也不起作用。

win32api.SendMessageLRESULT 始终为 0(记事本为 1)。

知道为什么会这样吗?

【问题讨论】:

    标签: python powerpoint pywin32 win32com win32gui


    【解决方案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 桌面应用程序中播放幻灯片时会发生这种情况。
    猜你喜欢
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    相关资源
    最近更新 更多