首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >资源管理器预览导致System.Runtime.InteropServices.COMException:未授予自动化权限。论ActivePresentation.name

资源管理器预览导致System.Runtime.InteropServices.COMException:未授予自动化权限。论ActivePresentation.name
EN

Stack Overflow用户
提问于 2016-07-26 23:04:09
回答 1查看 1.2K关注 0票数 2
代码语言:javascript
复制
public static PowerPoint.Presentation GetActivePPT(this PowerPoint.Application application)
{   
            try
            {
                if (App.Presentations.Count > 0)
                {
                    return application.ActivePresentation;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
}

我这样称呼这个函数:

代码语言:javascript
复制
PowerPoint.Presentation ppPresentation = PowerPointApplication.GetActivePPT();
if(ppPresentation != null)
{
   Console.WriteLine(ppPresentation.Name);
}

我得到了一个:

COMException:消息:表示(未知成员):无效请求。不授予自动化权限。Microsoft.Office.Interop.PowerPoint._Presentation.get_Name():StackTrace

下面是我所知道的Presentations.Count是一个,而application.ActivePresentation不是空的

似乎我不是唯一一个在Explorer预览中遇到此问题的人:

听起来这是权限问题吗?希望它就像设置一些东西给COMVisible(真)一样简单,但目前还没有好的想法。

这篇博客文章似乎声称写锁在起作用,但是Word和Excel没有表现出相同的行为。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-09 13:33:09

当您在Windows Explorer中选择启用预览窗格的演示文稿时,Windows Explorer将在隐藏窗口中打开该演示文稿。如果您试图从COM外接程序中访问任何隐藏的演示文稿的对象成员(例如ppPresentation.Name),您将获得“不授予自动化权限”。异常。

不幸的是,似乎没有一种很好的方法来确定隐藏的演示文稿是否是由Windows (例如,ppPresentation.Windows.Count = 0)打开的,因为通过代码访问任何演示文稿的对象成员似乎都会引发此异常。因此,唯一的解决办法似乎是错误处理,如Try/Catch

请注意,Presentations.Count返回所有打开演示文稿的数量,包括预览窗格打开的演示文稿数,因此,如果您的外接程序依赖于它实际可以处理的演示文稿的准确计数,则需要对此进行说明。

另外,请注意,此问题似乎不会以同样的方式影响Excel。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38601251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档