确定 Powerpoint 是否处于演示模式

Determine whether Powerpoint is in Presentation mode or not

我写了一个程序,当用户可以自己设置的时间间隔过去时弹出并播放声音。

现在我希望它在 Powerpoint 运行 处于演示模式并且间隔结束时保持静音,这样程序就不会出现在屏幕顶部并在使用外部观众。

使用的 PowerPoint 版本是 07/10/13 (12.0/14.0/15.0) 我找不到任何方法来确定演示模式是否 运行。

这个程序不是 PowerPoint 插件或类似的东西,只是一个普通的 WPF 桌面应用程序。

也许这可以帮助... "How to Automate control PowerPoint Slide" https://code.msdn.microsoft.com/office/How-to-Automate-control-23cd2a8f

您可以检测任何其他程序(不仅是 PowerPoint)是否 运行 全屏。 这正是您想要的答案

请访问下方 link。我认为这会有所帮助

Detect if Full Screen mode is on

抱歉,如果回答我自己的问题看起来有点贪心,但我认为这个答案会帮助遇到同样问题的人:

只需添加名为 "Microsoft PowerPoint 15.0 Object Libary" 的 COM 引用 - 它在引用列表中显示为 "Microsoft.Office.Interop.PowerPoint"

以下代码针对 运行 演示文稿进行测试,并经测试适用于版本 2007/10/13 (12.0/14.0/15.0):

var PPT = new Microsoft.Office.Interop.PowerPoint.Application();

if (PPT.SlideShowWindows.Count > 0)
{ //a PowerPoint Presentation mode is currently running}
else 
{//there is no PowerPoint Presentation mode running}

编辑:

一些错误报告表明,如果 PowerPoint 根本没有 运行 或者当演示模式未激活时,仅按上述方式执行可能会导致异常,因此我稍微修改了代码:

private bool IsPPTPresentationRunning()
{
    Process[] prozesse = Process.GetProcesses();
    foreach (Process p in prozesse)
    {//searches for a running PowerPoint process
        if (p.ProcessName == "POWERPNT")
        {
            try
            {
                Microsoft.Office.Interop.PowerPoint.Application PPT = 
                new Microsoft.Office.Interop.PowerPoint.Application();
                if (PPT.SlideShowWindows.Count > 0)
                 return true; 
                else
                 return false; 
            }
            //Catches any exception that seems to get thrown when
            // powerpoint is not in Presentation mode
            catch (Exception) 
            {
                return false;
            }
        }
    }
    return false;
}