嘿,伙计们,这里有一个简短的例子:
Globals.ThisAddIn.Application.Inspectors[Inspect].Close(OlInspectorClose.olDiscard);引发类型不匹配0x80020005 (DISP_E_TYPEMISMATCH)错误。
Close期望的是一个OlInspectorClose,所以我不知道为什么会有一个类型不匹配。
编辑:为了清晰,更多的代码!
public void Inspectors_Kill(Inspector Inspect)
{
Global.InspectorWrappers[Inspect].CustomTaskPane.Dispose();
Globals.ThisAddIn.Application.Inspectors[Inspect].Close(OlInspectorClose.olDiscard);
Global.InspectorWrappers.Remove(Inspect);
}发布于 2011-03-03 11:43:27
编辑来说明显而易见的事情,为什么不调用:
inspect.Close(OlInspectorClose.olDiscard);既然你已经有督察了?
这就是C++的样子(不完整)。类型库信息显示get_Inspectors返回检查器列表:
virtual HRESULT __stdcall get_Inspectors (/*[out,retval]*/ struct _Inspectors * * Inspectors ) = 0;导入者:
#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\mso.dll" no_namespace
#import "C:\Program Files\Microsoft Office\OFFICE14\msoutl.olb" rename_namespace("Outlook")利用智能包装器,access如下所示:
_ApplicationPtr app("Outlook.Application");
_InspectorsPtr list = app->GetInspectors();
_InspectorPtr i = list->Item(0);
i->Close(OlInspectorClose::olDiscard);注意,我向Item函数传递了一个整数索引。在C#包装器中,接口声明如下所示:
[DispId(282)]
Inspectors _Application.Inspectors { [DispId(282)] get;检查员实现的这个索引器如下所示:
[DispId(0)]
Inspector this[[MarshalAs(UnmanagedType.Struct), In] object Index] { [DispId(0)] get; }注意,索引器的值被声明为一个对象。互操作包装器可能允许传入一个Inspector,以及一个int。事实上,鉴于索引器也将编组为int,这似乎是一种可能的情况。根据你的错误,我认为情况可能并非如此。
https://stackoverflow.com/questions/5175936
复制相似问题