将击键发送到 Powerpoint 窗口

问题描述 投票:0回答:2

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

VK_RIGHT
VK_LEFT
消息。

我正在使用

win32gui.FindWindow
通过标题查找 Powerpoint 窗口,然后尝试使用 :

向窗口句柄发送消息
win32api.SendMessage(windowhandle, win32con.WM_KEYDOWN, win32con.VK_RIGHT, 0))

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

win32gui.EnumChildWindows

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

LRESULT
win32api.SendMessage
始终为0(用记事本为1)。

知道为什么会发生这种情况吗?

python powerpoint pywin32 win32com win32gui
2个回答
0
投票

另一种(可能更好)的解决方案是使用 COM32,它恰好包含在 win32api 中。

您可以使用这个办公库作为参考。

打开 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


0
投票

您可以将下一个/上一个 WM_COMMAND 发送到 PowerPoint Viewer 主窗口,如下所示(在 C++ 中):

SendMessage (windowhandle, WM_COMMAND, 0x000106EF, 0); // next
SendMessage (windowhandle, WM_COMMAND, 0x000106EE, 0); // previous

我做了一些调查,因为我最近需要相同的功能,并且这对我来说可靠。命令来自应用程序的加速器表。还有很多,但没什么有用的。

© www.soinside.com 2019 - 2024. All rights reserved.