无法将类型为“mshtml.HTMLDocumentClass”的 COM 对象强制转换为接口

问题描述

我在程序的控件中使用了axWebBrowser这个控件来显示WORD文档,对此使用以下两行代码希望达到对WORD文档操作的效果oApplication=axWebBrowser1.GetType().InvokeMember("Document",System.Reflection.BindingFlags.GetProperty,null,axWebBrowser1,null);//通过反射,获得word应用程序实例Microsoft.Office.Interop.Word.Documentdoc=(Microsoft.Office.Interop.Word.Document)oApplication;//在这一行报错。未处理System.InvalidCastExceptionHResult=-2147467262Message=无法将类型为“mshtml.HTMLDocumentClass”的COM对象强制转换为接口类型“Microsoft.Office.Interop.Word.Document”。此操作失败的原因是对IID为“{0002096B-0000-0000-C000-000000000046}”的接口的COM组件调用QueryInterface因以下错误而失败:不支持此接口(异常来自HRESULT:0x80004002(E_NOINTERFACE))。Source=TestStackTrace:在Test.Form1.openTextPaper_Click(Objectsender,EventArgse)位置d:TestForm1.cs:行号49在System.Windows.Forms.Control.OnClick(EventArgse)在System.Windows.Forms.Button.OnClick(EventArgse)在System.Windows.Forms.Button.OnMouseUp(MouseEventArgsmevent)在System.Windows.Forms.Control.WmMouseUp(Message&m,MouseButtonsbutton,Int32clicks)在System.Windows.Forms.Control.WndProc(Message&m)在System.Windows.Forms.ButtonBase.WndProc(Message&m)在System.Windows.Forms.Button.WndProc(Message&m)在System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)在System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)在System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtrhWnd,Int32msg,IntPtrwparam,IntPtrlparam)在System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&msg)在System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtrdwComponentID,Int32reason,Int32pvLoopData)在System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32reason,ApplicationContextcontext)在System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32reason,ApplicationContextcontext)在System.Windows.Forms.Application.Run(FormmainForm)在Test.Program.Main()位置d:TestProgram.cs:行号18在System.AppDomain._nExecuteAssembly(RuntimeAssemblyassembly,String[]args)在System.AppDomain.ExecuteAssembly(StringassemblyFile,EvidenceassemblySecurity,String[]args)在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()在System.Threading.ThreadHelper.ThreadStart_Context(Objectstate)在System.Threading.ExecutionContext.RunInternal(ExecutionContextexecutionContext,ContextCallbackcallback,Objectstate,BooleanpreserveSyncCtx)在System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext,ContextCallbackcallback,Objectstate,BooleanpreserveSyncCtx)在System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext,ContextCallbackcallback,Objectstate)在System.Threading.ThreadHelper.ThreadStart()InnerException:程序在2003版的文档下是可以运行的,但是在高级版本中不行,除了下载兼容包等用户需要完成的解决方法之外,有什么样简单的方法能从代码上解决根本问题,让该程序能够适应各个版本。

时间: 2024-11-08 17:51:12

无法将类型为“mshtml.HTMLDocumentClass”的 COM 对象强制转换为接口的相关文章

我引用speech框架,编译没有错,执行的时候报错!无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型。。。。。。

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.Speech.Synthesis;namespaceBank{public

无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型(异步插件协议中使用线程)

问题描述 在WebBrowser的异步插件协议的Start函数入口中,传入参数包括一个接口类型的参数IInternetProtocolSinkSink,当不使用线程时,工作正常,缺点是当响应慢时界面会假死.但是将代码放入线程之后,就会报错:System.InvalidCastException:无法将类型为"System.__ComObject"的COM对象强制转换为接口类型"MyWebBrowser.IInternetProtocolSink".此操作失败的原因是

visual studio-IIS7上出现错误无法将类型为 的 COM 对象强制转换为接口类型 。

问题描述 IIS7上出现错误无法将类型为 的 COM 对象强制转换为接口类型 . 求助:使用visual studio 2015编写设计网站,使用VS的调试工具进行调试可以正常运行.但是部署到IIS7上出现错误无法将类型为"System.__ComObject"的 COM 对象强制转换为接口类型"OpcRcw.Da.IOPCServer".此操作失败的原因是对 IID 为"{39C13A4D-011E-11D0-9675-0020AFD8ADB3}&quo

microsoft office-Word.Application的 COM 对象强制转换为接口类型时报错

问题描述 Word.Application的 COM 对象强制转换为接口类型时报错 asp.net的项目中有个导出word的功能,每当执行 doc = appWord.Documents.Add(ref templateFile, ref objfalse, ref objDocType, ref objtrue); 到这句的时候报错,catch到一个异常 此时,进程里已经产生一个word进程. 在处理异常的时候, doc.Close(ref doNotSaveChanges, ref miss

大家有空帮忙吗?无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型

问题描述 无法将类型为"Microsoft.Office.Interop.Excel.ApplicationClass"的COM对象强制转换为接口类型"Microsoft.Office.Interop.Excel._Application".此操作失败的原因是对IID为"{000208D5-0000-0000-C000-000000000046}"的接口的COM组件调用QueryInterface因以下错误而失败:加载类型库/DLL时出错.(异常

无法将类型为“System.Xml.XmlElement”的对象强制转换为类型“System.Xml.XmlDocument”。

问题描述 请熟悉XML的大侠帮帮忙,小弟对XML不是很了解,谢谢.现在分不多,以后补上一.webservice中的方法publicSystem.Xml.XmlDocumentGetUpdateDate(){//取得更新的xml模板内容XmlDocumentdoc=newXmlDocument();doc.Load(Server.MapPath("Update.xml"));XmlElementroot=doc.DocumentElement;//看看有几个文件需要更新XmlNodeup

无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsof

问题描述 如图所示,不知道是版本问题,还是没卸载完全的问题,网上一些办法也试了,都解决不了. 解决方案 解决方案二:最近这类问题好多啊,没办法,调用office就是存在很复杂的版本问题,重装office吧,最高电脑上只有一个版本.而且不要直接引用Interop组件,它应该是自动生成的.解决方案三:以前也偶到过这问题.装了个高版本的OFFICE就好了.

无法将类型为“System.Data.DataRow”的对象强制转换...

问题描述 无法将类型为"System.Data.DataRow"的对象强制转换为类型"LjDataRow"DimtableasLjDataTable=newLjDataTableDimrowAsLjDataRow=table.NewRow()====LjDataTable==========PublicClassLjDataTableInheritsDataTablePublicShadowsFunctionNewRow()AsLjDataRowReturnDire

西门子-OPC-无法将类型为“System.Int32”的对象强制转换为类型“System.Array”

问题描述 OPC-无法将类型为"System.Int32"的对象强制转换为类型"System.Array" 在用VB.NET编写OPC读写西门子S7400程序时候,碰到以上句柄问题,请问该问题如何解决? Public Shared MyItemServerHandles2 As System.Array Private Sub PLC_AsyncWrite(ByVal NumItemsW As Integer, ByRef ItemValuesW() As Syst