WPF调用office2010的ppt出错
各位热爱WPF编程小伙伴不可避免的会遇到将ppt嵌入到自己编写的软件,可是有时候会遇到错误,此错误值出现在卸载office2013并安装其他版本office时候会出现。这是由于某些机器上office不能完全卸载造成的,倒是com口不能释放完全。由于office2013在某些机器环境下卸载不完全,在安装其他版本office后,调用ppt的com组件会导致弹窗错误:
“无法将型别 'System.__ComObject' 的 COM 对象转换为接口型别 'Microsoft.Office.Interop.PointPower._Application'。由于发生下列错误,接口 (IID 为 '{{91493440-5A91-11CF-8700-00AA0060263B}') 之 COM 组件上的 QueryInterface 呼叫失败而导致作业失败: 链接库未登录。 (发生例外状况于 HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))。"}”
手动解决办法:
删除注册表ClassesROOT\TypeLib\{91493440-5A91-11CF-8700-00AA0060263B}项下的2.b即可。
由于本人公司需要,写了一个修改的小工具,需要的可以代码拿去,也可以做一些修改。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32; namespace office2013辅助卸载工具
{
class Program
{
static void Main(string[] args)
{
if (!IsRegeditItemExist())
{
RegistryKey key = Registry.ClassesRoot;
key.DeleteSubKeyTree("TypeLib\\{91493440-5A91-11CF-8700-00AA0060263B}\\2.b", true); //该方法无返回值,直接调用即可
key.Close();
Console.WriteLine("Office2013残留项已经清除!");
Console.ReadLine();
}
else
{
Console.WriteLine("不需要清除,请谨慎操作!");
Console.ReadLine();
} } //判断注册表PrimaryInterAssemblyName项是否存在
private static bool IsRegeditItemExist()
{
string[] subkeyNames;
RegistryKey hkcr = Registry.ClassesRoot;
RegistryKey officeKey = hkcr.OpenSubKey("TypeLib\\{91493440-5A91-11CF-8700-00AA0060263B}\\2.b");
//RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
subkeyNames = officeKey.GetValueNames();
//取得该项下所有子项的名称的序列,并传递给预定的数组中
foreach (string keyName in subkeyNames)
//遍历整个数组
{
if (keyName == "PrimaryInteropAssemblyName")
//判断子项的名称
{
hkcr.Close();
return true;
}
}
hkcr.Close();
return false;
}
}
}
WPF调用office2010的ppt出错的更多相关文章
- WPF调用Matlab函数方法
有的时候用C#写图像处理方法,比较费事,不如Matlab简单,但是Matlab又做不出WPF那样的好看界面,怎么办呢. 今天正好我要实现这个功能,就顺便写个小例子,给需要的人做个借鉴. 想要用WPF调 ...
- 调用newtonsoft.json反序列出错
调用newtonsoft.json反序列出错: Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current J ...
- WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变
本文说明WPF [调用线程无法访问此对象,因为另一个线程拥有该对象.] 解决方案以及如何实现字体颜色的渐变 先来看看C#中Timer的简单说明,你想必猜到实现需要用到Timer的相关知识了吧. C# ...
- WPF调用图片路径,或资源图片
一.加载本项目的图片WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源.其中较为常见的情况是用Uri加载图像.Uri表达式的一般形式为:协议+授权 ...
- 提供PPT嵌入Winform/WPF解决方案,Winform/WPF 中嵌入 office ppt 解决方案
Winform/WPF 中嵌入 office ppt(powerpoint)解决方案示: 1. 在winform中操作ppt,翻页.播放.退出:显示 总页数.当前播放页数 2. 启动播放ppt时录制视 ...
- C# WPF 调用FFMPEG实现“SORRY 为所欲为/王境泽”表情包GIF生成软件
C# WPF 调用FFMPEG实现“SORRY 为所欲为/王境泽”表情包GIF生成 1,调用ffmpeg将外挂字幕“嵌入”视频中,保存副本: 2,调用ffmpeg将副本视频导出为gif图片. 参考资料 ...
- WPF模拟Office2010文件菜单的TabControl模板
原文:WPF模拟Office2010文件菜单的TabControl模板 这是Office2010中的文件菜单点开后的效果.本文我将以强大的WPF(www.itstrike.cn)来实现类似的效果.希望 ...
- WPF 调用资源图片
原文:WPF 调用资源图片 最近做的wpf项目中,在开发的时候,把图片放到了bin下面,采用了imagePath =System.IO.Directory.GetCurrentDirectory()+ ...
- WPF 调用API修改窗体风格实现真正的无边框窗体
原文:WPF 调用API修改窗体风格实现真正的无边框窗体 WPF中设置无边框窗体似乎是要将WindowStyle设置为None,AllowTransparency=true,这样才能达到WinForm ...
随机推荐
- csuoj 1120: 病毒
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1120 1120: 病毒 Time Limit: 3 Sec Memory Limit: 128 ...
- App架构设计学习(一)---- 接口的设计
一.哎,最近换了家工作,结果工作很出的我意外,没有干熟悉的根据需求写代码,反而让我一个小菜鸟去重构一下App的架构(他们公司的app,已经上线了1.0版本了),没办法,只有硬着头皮去先学习学习,再总结 ...
- 夺命雷公狗ThinkPHP项目之----企业网站11之栏目的删除完成
我们删除要在分类模型中添加一个_before_delete的钩子函数,而且在删除一个分类时候,如果这个分类有子分类就不允许删除 model层代码如下所示: <?php namespace Adm ...
- 【bs4】安装beautifulsoup
Debian/Ubuntu,install $ apt-get install python-bs4 easy_install/pip $ easy_install beautifulsoup4 $ ...
- java连接数据库URL
转: 1.Oracle数据库 Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url ...
- 在Asp.Net的Global.asax中Application_Error跳转到自定义错误页无效的解决办法
在开发Asp.Net系统的时候,我们很多时候希望系统发生错误后能够跳转到一个自定义的错误页面,于是我们经常会在Global.asax中的Application_Error方法中使用Response.R ...
- Fury观后感
刚看完,淋雨汽车回来的,电影很精彩.前期略慢热(我还去了躺厕所),军人的黑色幽默,冷酷的军旅生活作为基调.内容我就不ao述了,新兵蛋诺曼的经历是这部电影的为主线(也有人说诺曼是观众的代入点,准确来说他 ...
- YeoMan 与Angularjs
链接地址: Yeoman:强大的web构建工具 http://hao.jobbole.com/yeoman/ Yeoman官方教程:用Yeoman和AngularJS做Web应用 http://blo ...
- 安装qt5.3.2后,qtcreator在ubuntu 11.04无法启动的问题
在官方网站下载.run文件安装后,qtcreator启动失败,然后找到命令行启动,失败原因如下: shr@shr-Sieyuan:~/Qt5.3.2/Tools/QtCreator/bin$ ./qt ...
- javaWeb el表达式和jstl快速入门案例
<%@page import="de.bvb.domain.Person"%> <%@page import="de.bvb.domain.Addres ...