【发布时间】:2011-05-11 23:37:15
【问题描述】:
这里我有一个 2010 年的 powerpoint 演示文稿。在一张幻灯片上有一个嵌入式 Windows 媒体播放器 OCX 控件。作为一个简单的 GUI,我在同一张幻灯片上放置了 3 个标记为 Play、Pause、Stop 的按钮。
使用 Perl 的 Win32::OLE 模块,我想测试“播放”上的点击事件是否在嵌入式 windows 媒体播放器中播放文件。
用鼠标引发 Click 事件,确实如此。
使用下面的代码,它不起作用。为什么?
note "Slide $i: " . $slide->{Name};
# switch to "full-screen presentation mode"
PowerpointHelpers::launch_slideshow_from_slide($ole->ActivePresentation, $i);
sleep 3;
#does not work
$btnplay->{OLEFormat}->Object()->btnPlay_Click();
sleep 3;
# return to slide edit-mode
# PowerpointHelpers::exit_show($ole);
这是应该运行的 VBA 过程:
Public Sub btnPlay_Click()
Init
PlayVideo (Player.URL)
End Sub
如您所见,这只是调用了两个播放 avi 文件的自定义函数。它在交互式使用中确实可以正常工作。但不是通过 VBA 自动化。
与此同时,我已经尝试了该行的多种变体
$btnplay->{OLEFormat}->Object()->btnPlay_Click();
但没有任何作用。
这里是 $btnplay 对象的转储:
OLE object's properties:
Accelerator .............................
AutoSize ................................ 0
BackColor ............................... 8421504
BackStyle ............................... 1
Caption ................................. Video abspielen
Enabled ................................. 1
Font .................................... [IFont]
ForeColor ............................... 0
Height .................................. 28.375
Left .................................... 18.75
Locked .................................. 0
MouseIcon ............................... <undef>
MousePointer ............................ 0
Name .................................... btnPlay
Picture ................................. <undef>
PicturePosition ......................... 7
TakeFocusOnClick ........................ 1
Top ..................................... 382.875
Visible ................................. 1
Width ................................... 124.75
WordWrap ................................ 0
ZOrderPosition .......................... 9
【问题讨论】:
-
您是如何将 ocx 文件添加到嵌入 windows 媒体播放器的?
-
我在 Powerpoint 的编辑模式下手动添加它,通过开发人员菜单/控件功能区/更多控件图标(单击锤子和扳手图标),选择“Windows Media Player”。
-
由于这是一个activex控件,您可以查看属性并将其名称更改为
mvpDemo(例如)。在按钮单击上,您可以编写代码,例如mvpDemo.controls.pause或mvpDemo.controls.play。这有帮助吗? -
我不想与 WMP 命令栏的“原生”播放/暂停/停止按钮进行交互。它们对于我正在编写的触摸屏应用程序来说太小了。因此,我添加了三个更大的命令按钮。我想触发与这些按钮关联的 Click 事件。想象一个带有单个 CommandButton 控件的空幻灯片和一个简单的事件处理程序子 mybotton_Click() "MsgBox 'Hello'" End Sub。我想从 perl 调用这个事件处理程序。另见stackoverflow.com/questions/4500335/…
-
点击大按钮,写
mvpDemo.controls.play?你发现它有什么问题吗?关于另一个问题,它不是已经回答并接受了吗?
标签: perl testing vba event-handling powerpoint