如何测试幻灯片演示窗口对象
本文关键字:窗口 对象 幻灯片 何测试 测试 | 更新日期: 2023-09-27 17:54:46
我正在使用VSTO自动化PowerPoint 2010,我想在调用方法之前检查SlideShowWindow是否可用。
此刻,我正在捕捉访问时返回的COMException;
Globals.ThisAddIn.Application.ActivePresentation.SlideShowWindow
完整方法是;
private SlideShowWindow GetSlideShowWindow()
{
//attempt to get the running slide show window...
SlideShowWindow slideShowWindow = null;
try
{
//try to access the COM wrapper...
slideShowWindow = Globals.ThisAddIn.Application.ActivePresentation.SlideShowWindow;
}
catch (COMException)
{
//window doesn't exist!...
}
//return window or null...
return slideShowWindow;
}
似乎应该在对象模型的某个地方有一个枚举或标志来避免这种方法?
不确定关于Open XML的评论是关于什么的,那是一个未呈现的内容操作工具。你要做的事情被正确地认为是由对象模型编程的。
我会这样做:
Public Sub SeeIfAShowIsRunning()
If SlideShowWindows.Count > 0 Then
Debug.Print "yep, something is there. Let me check further."
If SlideShowWindows.Count > 1 Then
Debug.Print "uh huh, there are " & SlideShowWindows.Count & " shows running"
Debug.Print "hold on, i'll figure this out for you"
For i = 1 To SlideShowWindows.Count
If ActivePresentation.Name = Presentations.Item(i).Name Then
Debug.Print "i found you. your name is: " & ActivePresentation.Name
Else
Debug.Print Presentations.Item(i).Name & " is a fine pptx, but not the one i want"
End If
Next
End If
Else
Debug.Print "nope, you're in editing mode"
End If
End Sub
这将在所有版本的PowerPoint中工作。在PowerPoint 2010中,从技术上讲,你可以有多个幻灯片放映窗口运行,但其中只有一个是活动的,所以我会做一个进一步的搜索活动的一个,得到它的.Presentation
,如果它匹配ActivePresentation
,那么它是你的ActivePresentation的幻灯片播放正在运行,就像上面一样。
如果您使用的是PowerPoint 2007或以下版本,那么这不是问题,您可以删除If SlideShowWindows.Count > 1 Then
语句。
以下代码行检查SlideShowWindow
对象是否激活,如果不是,则激活它。
set objWindow = ActivePresentation.SlideShowWindow
If objWindow.Active = msoFalse Then
objWindow.Activate
End If