接口 Microsoft.Office.Interop.Excel._Application 的 QueryInterface 失败。 [问题点数:20分,结帖人tangligang]

Bbs3
本版专家分:807
结帖率 100%
Bbs3
本版专家分:807
Bbs4
本版专家分:1732
Bbs3
本版专家分:807
接口SQLDMO.NameList的QueryInterface失败问题!
我建立一个SQLDMO.Application.ListAvailableSQLServers()方法的返回值的实 例SQLDMO.NameList,目的是为了列出本地网络中可使用的SQL服务器名字,代码如下:rn SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass(); rn SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers(); rn结果返回:<em>接口</em>SQLDMO.NameList的QueryInterface<em>失败</em>!rn请大家告诉我这是为什么,我已经引用了SQLDMO.Application对象
queryinterface 失败?????
我在vb.net 中利用sqldmo遍历数据库服务器时为什么出现<em>queryinterface</em> <em>失败</em>.请sql版的各位高手帮帮小弟。kindor@163.netrn txtserver.Items.Clear()rn Dim oSQLServerDMOApp As New SQLDMO.Application()rn Dim i As Integerrn Dim namx As SQLDMO.NameListrn namx = oSQLServerDMOApp.ListAvailableSQLServersrn For i = 1 To namx.Countrn txtserver.Items.Add(namx.Item(i))rn Nextrn txtserver.SelectedIndex = 0rn txtDBname.Clear()rn txtpwd.Clear()rn txtusername.Clear()rn
接口 SQLDMO.NameList 的 QueryInterface 失败是什么意思?
调用SQLDMO.DLL的时候报错"<em>接口</em> SQLDMO.NameList 的 QueryInterface <em>失败</em>.".什么意思啊.我的代码不应该有错误啊?
接口 AxPlayer._AxPlayer1 的queryinterface 失败,高分求解!!
我在窗体中插入一个OCX控件,未使用线程时运行正常;因为要求循环执行,所以在线程中调用控件的函数,报错误:"<em>接口</em> AxPlayer._AxPlayer1 的<em>queryinterface</em>" <em>失败</em>,高分求解!!请各位高手不吝赐教!!!!!!!!!!!!!!!1
ASP.NET调用COM+时,报接口COM+函数的QUERYInterface失败
ASP.NET调用COM+时,报<em>接口</em>COM+函数的QUERYInterface<em>失败</em>;但是在C#编写的WindowApplicate中用同样语句调用此COM+函数,却是正确的。rn请指教!
找遍了大半个地球,无法解决!!!!有关COM+接口的QueryInterface 失败??????
是一个COM,用tlbimp封装后,引用, rn本来是可以使用的。 rn rn但今天突然报错: rn<em>接口</em> DllSendSmsNET.DllSendSms_Dispatch 的 QueryInterface <em>失败</em>。 rn说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 rn rn异常详细信息: System.InvalidCastException: <em>接口</em> DllSendSmsNET.DllSendSms_Dispatch 的 QueryInterface <em>失败</em>。 rn行 68: isConnect = dsms.Connect(USERNAME,PASSWORD,USERID); rnrn下面是我找到的相关问题分析。rnhttp://www.developersdex.com/vb/message.asp?p=2917&ID=%3CubS4N8%24ICHA%2E2616%40tkmsftngp10%3Ernhttp://www.derkeiler.com/Newsgroups/microsoft.public.dotnet.framework.aspnet.security/2003-05/0094.htmlrnrn加了一行 还是不行。
使用QueryInterface注册TSF接口失败 是不是缺少什么东西?
代码如下:rn[code=c]rnITfUIElementMgr *puiem;rn ITfUIElement *pElement = NULL;rn ITfThreadMgrEx* m_tm;rnrn HRESULT hr;rn hr = CoCreateInstance(CLSID_TF_ThreadMgr , NULL, CLSCTX_INPROC_SERVER, __uuidof(ITfThreadMgrEx), (void**)&m_tm);rn if (hr != S_OK)rn rn return FALSE;rn rnrn if (SUCCEEDED(m_tm->QueryInterface(__uuidof(ITfUIElementMgr), (void **)&puiem)))rn rn puiem->GetUIElement(0, &pElement);rn puiem->Release();rn rnrnITfCandidateListUIElement *pcandidate = NULL;rnrn if(FAILED(pElement->QueryInterface(__uuidof(ITfCandidateListUIElement),(void **)&pcandidate)))rn rn return 0;rn rn[/code]rnrnrnrn运行到pElement->QueryInterface(__uuidof(ITfCandidateListUIElement),(void **)&pcandidate)就会报“0x777b15de 处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突”的错误。要是<em>接口</em>没有初始化成功也应该直接return 0 但是直接是访问冲突,不知道哪里的问题。
为什么我调用queryinterface失败,说该接口不支持?????
我做了一个exe com组件rn再另一个exe中调用 CoCreateInstance来创建该组件,并请求IUnknown<em>接口</em>成功rnrn但我用得到得 IUnknown<em>接口</em>去查询拿个组件上所提供得其他<em>接口</em>时总时抱错说rn拿啊个<em>接口</em>不支持 0x80004002rnrn郁闷得一塌糊涂rnrnrn高手帮忙啊!!!!!
接口Excel._Application的QueryInterface失败,该如何解决?在线等!
代码:Excel.Application myExcel = new Excel.Application ( ) ;rn myExcel.Application.Workbooks.Add ( true ) ;rn执行时出错,异常详细信息: System.InvalidCastException: <em>接口</em> Excel._Application 的 QueryInterface <em>失败</em>。rn是不是IIS服务器配置有问题?rn高手帮帮忙吧,最后的分全给.rn
执行.net程序时出现 接口 XXX 的 QueryInterface 失败
刚刚重装了系统,重新配置了.netfw,但是在运行系统时出现了<em>接口</em> XXX 的 QueryInterface <em>失败</em>的问题,但在同事的电脑上就可以运行,,有人说是系统禁止了调用com..,到底是什么原因大家有无碰到过?rnrn该控件以前用过没问题,程序方面没问题可以用,估计是配置的问题,哪位大虾帮帮忙,最好不用重装系统。
关于:SQLXMLBulkLoad3错误提示::“接口 SQLXMLBULKLOADLib.ISQLXMLBulkLoad 的 QueryInterface 失败。”高手帮忙
代码如下:rn Private Function XmlIn(ByVal strFile As String) As Booleanrn Dim objBulk As New SQLXMLBULKLOADLib.SQLXMLBulkLoad3rn objBulk.ConnectionString = "Provider=SQLOLEDB;" & WebDBServerrn objBulk.ErrorLogFile = CurDir() & "\error.log"rn ……rnEnd Functionrn在窗体中直接调用该过程没有问题能顺利执行,rn但我用异步方法调用该过程时就报错rn (<em>接口</em> SQLXMLBULKLOADLib.ISQLXMLBulkLoad 的 QueryInterface <em>失败</em>。)rn请各位高手帮忙解决一下,看看是怎么回事rnrn我在网上查看此类问题时发现了一篇资料:rn http://bbs.w3china.org/dispbbs.asp?boardid=17&id=6281&star=1rn但由于是新手不太理解其中的解决方法.望各位高手参考一下,帮小弟解决一下问题,谢谢
引用COM组件MSXML2出现异常:接口 MSXML2.IXMLHTTPRequest 的 QueryInterface 失败
我的ASP.NET项目中引用了COM组件Microsoft XML, v3.0,用来调用一些页面取得返回值。以前使用没有问题。现在发现调用总是<em>失败</em>,并且抛出异常:<em>接口</em> MSXML2.IXMLHTTPRequest 的 QueryInterface <em>失败</em>。rnrn关键代码如下:rnMSXML2.XMLDocumentClass xmlDoc = new MSXML2.XMLDocumentClass();rnMSXML2.XMLHTTPClass xmlHttp = new MSXML2.XMLHTTPClass();rnxmlHttp.open("GET", url, false, "", "");rnxmlHttp.send(xmlDoc);rnreturn xmlHttp.responseText;rnrn最近为了去掉系统自动调用的中文输入法,删除注册了两个dll,不知道是否跟这个有关。rn请精通此项的高手指点一二!多谢!
有关QueryInterface找不到另一个接口
我在idl中定义了两个<em>接口</em>,分别用两个coclass实现,但在客户机中两个借口却不能rn相互QueryInterface others,为什么?
C#中调用Excel的问题:接口 Excel._Application 的 QueryInterface 失败
在c#中调用excel,添加了Microsoft.excel 9.0 Object library引用和Microsoft.office 9.0 Object library引用,然后内部代码如下:rnusing System;rnusing System.Drawing;rnusing System.Collections;rnusing System.ComponentModel;rnusing System.Windows.Forms;rnusing System.Data;rnusing Excel;rnusing System.Runtime;rnusing System.Reflection;rnnamespace ExcelOpenrnrn /// rn /// Form1 的摘要说明。rn /// rn public class Form1 : System.Windows.Forms.Formrn rn private System.Windows.Forms.Button button1;rn private Excel.Application xlApp;rn /// rn /// 必需的设计器变量。rn /// rn private System.ComponentModel.Container components = null;rnrn public Form1()rn rn //rn // Windows 窗体设计器支持所必需的rn //rn InitializeComponent();rn xlApp=new Excel.Application();rnrn //rn // TODO: 在 InitializeComponent 调用后添加任何构造函数代码rn //rn rnrn /// rn /// 清理所有正在使用的资源。rn /// rn protected override void Dispose( bool disposing )rn rn if( disposing )rn rn if (components != null) rn rn components.Dispose();rn rn rn base.Dispose( disposing );rn rnrn #region Windows 窗体设计器生成的代码rn /// rn /// 设计器支持所需的方法 - 不要使用代码编辑器修改rn /// 此方法的内容。rn /// rn private void InitializeComponent()rn rn this.button1 = new System.Windows.Forms.Button();rn this.SuspendLayout();rn // rn // button1rn // rn this.button1.Location = new System.Drawing.Point(112, 104);rn this.button1.Name = "button1";rn this.button1.TabIndex = 0;rn this.button1.Text = "button1";rn this.button1.Click += new System.EventHandler(this.button1_Click);rn // rn // Form1rn // rn this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);rn this.ClientSize = new System.Drawing.Size(292, 273);rn this.Controls.Add(this.button1);rn this.Name = "Form1";rn this.Text = "Form1";rn this.ResumeLayout(false);rnrn rn #endregionrnrn /// rn /// 应用程序的主入口点。rn /// rn [STAThread]rn static void Main() rn rn System.Windows.Forms.Application.Run(new Form1());rn rnrn private void button1_Click(object sender, System.EventArgs e)rn rn xlApp=new Excel.Application();rn xlApp.Visible=true;rn rn rnrnrn运行之后点击button1,就会报错:rn<em>接口</em> Excel._Application 的 QueryInterface <em>失败</em>。rn不知道是什么问题,请各位大侠帮帮忙啊rn
接口 SQLDMO.NameList 的 QueryInterface 失败."">着急等待,调用SQLDMO.DLL的时候报错"接口 SQLDMO.NameList 的 QueryInterface 失败."
在我的计算机上运行良好,怎么到同事机器上就出这个问题,我们都是一样的环境啊?rnrn谁遇到过类似的错误?
ASP.NET中调用组件(VB编写)出现接口的QueryInterface失败???
首先应该说明的几点:rn 1.组件是用VB6.0编写的将VBA操作编译成,用于根据已经设计好的模版生成相关的Word文档.rn 2.该组件的V1.0引经运行正常.rn 3.客户有新的要求,我将组件修改了一下,添加一个属性及修改了一个方法(修改逻辑但对外<em>接口</em>没变),编译成V2.0的dll文件.rn 4.V2.0版本在控制台应用程序中调用没问题.rn 5.V2.0版本在ASP.NET工程中引用时,运行时出现了以下问题:rnrnMeaningProject.MeaningContentClass mycls = new MeaningContentClass();rnmycls.CaseReasonProperty="PropertyValue";rnmycls.IssueProperty= "IssueValue";rn......rnCaseReasonProperty为组件的公共属性,rnIssueProperty为新增加的公共属性,rn但是运行时出现了System.InvalidCastException<em>接口</em>MeaningProject._MeaningContent的QueryInterface<em>失败</em>.rnrn另外:rn 1.我在注册V2.0组件之前,已经先将V1.0版本用RegSvr32 -u给卸载了,然后才注册V2.0组件的,还不行???rn 2.我将组件卸载完后将注册表中没删除的也用手工删除了,再注册新的组件,还不行??rn 3.我将备份起来的V1.0给再注册进去,两个版本共存了,引用旧的版本可以但是引用新的版本不行(还是在属性赋值时提示<em>接口</em>的QueryInterface<em>失败</em>)??rn 实在是没办法了,各位兄弟姐妹帮帮忙!!!!rn
急!!!调用excel的时候报:接口 Excel._Application 的 QueryInterface 失败!急!
没分了,谢谢高手!
QueryInterface 怎么遍历接口和函数?
对一个com dllrnQueryInterface 怎么遍历<em>接口</em>和函数?rnrn谁加持一下。谢谢
c#中的接口查询(QueryInterface)
<em>接口</em>查询(QueryInterface)        一个类可以有多个<em>接口</em>,声明了<em>接口</em>变量并且指向一个对象的时候,这个变量只能使用该<em>接口</em>内的方法和属性,而不能访问其他<em>接口</em>中的方法和属性。但<em>接口</em>查询很方便的让我们在一个类中的不同<em>接口</em>间进行切换。 using System; namespace ConsoleApp1 { interface IEat { ...
COM 组件调用 QueryInterface 失败原因?
大家好,请教一个问题: C#调用tlb组件问题;我先用tlbimp将tlb转成dll,再引用此dll;可是程序运行时,报COM 组件调用 QueryInterface 因以下错误而<em>失败</em>: 不支持此<em>接口</em>~~~~~ 这是为什么呢?rnrntlb为com组件.rnrnrn此操作<em>失败</em>的原因是对 IID 为“8E0AD9E6-498B-11D2-90E3-00805F83510D”的<em>接口</em>的 COM 组件调用 QueryInterface 因以下错误而<em>失败</em>: 不支持此<em>接口</em> (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。rnrnrn不好意思,没分了.
COM 组件调用 QueryInterface 失败原因?
大家好,请教一个问题: C#调用Microsoft.Office.Outlook.MailItem;并且在程序中用MailItem类做了一些操作。编辑的时候,并且在自己的电脑上操作的时候,没有问题,可是一到其他电脑上就报以下错误,程序并且会自动关闭。rnrnSystem.InvalidCastException:Unable to cast COM object of type 'System._ComObject' to interface type 'Microsoft.Office.Outlook.MailItem'. This operation failed because the QueryInterface call on the COM component for the interface IID '00063034-0000-0000-C000-000000000046'failed due to the following error: No such interface supported(Exception from HRESULT:0x60004002(E_NOINTERFACE)). rnat JobsDB.EmailAnalyzerSystem.EmailAnalyzer.AnalyzeAll()rnat JobsDB.EmailAnalyzerSystem.MailForm.StartAnalyze(Boolean blnUnsubsribe)rnrn请高手们帮帮忙啊,很急的,先谢谢啦!!!
关于QueryInterface( IID_IDirectDraw。。。之后失败的情况
我在下面rn m_DirectDrawCreate=(DIRECTDRAWCREATE)GetProcAddress(m_DDraw_dll, "DirectDrawCreate");rnrn hr = m_DirectDrawCreate(NULL, &DD, NULL);rn if(hr!=DD_OK)rn rn return;rn rn if( DD->QueryInterface( IID_IDirectDraw, (void **)&m_pdd ) != DD_OK )rn rn return;rn rn rn DD->Release();rn hr=m_pdd->SetCooperativeLevel(m_hwnd, DDSCL_NORMAL);rnrn跑到“SetCooperativeLevel”这里的时候程序会异常,百般调试都无奈了,请指点!
QueryInterface获取IDirectSoundNotify对象总是失败
[b]//经测试,创建缓冲区ppDSBuffer正确[/b]rn[color=#FF0000]dsond->CreateSoundBuffer(dsbf,&ppDSBuffer,NULL);[/color]rn[b]//利用ppDSBuffer对象的QueryInterface总是出错,调试可以看到提示"__vfptr = CXX0030: 错误: 无法计算表达式的值"[/b]rnrn[color=#FF0000]IDirectSoundNotify *lpDsNotify;[/color]rn[color=#FF0000]ppDSBuffer->QueryInterface(IID_IDirectSoundNotify,(VOID**)&(lpDsNotify));[/color]请问是什么原因啊,我在网上找了一些代码来看,参数好像都是一样的,但就是不对,想问下是不是缺少什么头文件或库文件呢?谢谢各位大侠!
mshtml 里的接口QueryInterface后 要不要释放
如:pHtmlDoc2->QueryInterface(IID_IHTMLDocument3,(void**)&pHtmlDoc3);rnrnpHtmlDoc3要不要释放?
QueryInterface执行失败,我如何知道失败的原因呢?
// Access IAdvancedMathrn IAdvancedMath* pAdvancedMath = 0;rn hr = pMath->QueryInterface( IID_IAdvancedMath,rn (void**) &pAdvancedMath );rn if ( SUCCEEDED( hr ))rn rn pAdvancedMath->Factorial( 12, &lResult );rn cout << "12! = " << lResult << endl;rnrn pAdvancedMath->Fibonacci( 12, &lResult );rn cout << "The Fibonacci of 12 = " << lResult << endl;rn
QueryInterface异常
把VB里的代码移植到VB.NET中rn通过Refrences来引用COMrnrnVB里没有问题rn同样的语句在VB.NET却抛出了QueryInterface异常rnrn我很想知道原因。
QueryInterface的问题
HRESULT __stdcall CA::QueryInterface(const IID& iid, void** ppv)rnrnrnrn if(iid == IID_IUnknown)rnrn rnrn trace("QueryInterface:Return pointer to IUnknown.");rnrn *ppv = static_cast< IX* >(this);rnrn rnrn else if(iid == IID_IX)rnrn rnrn trace("QueryInterface:Return pointer to IX.");rnrn *ppv = static_cast< IX* >(this);rnrn rnrn else if(iid == IID_IY)rnrn rnrn trace("QueryInterface:Return pointer to IY.");rnrn *ppv = static_cast< IY* >(this);rnrn rnrn elsernrn rnrn trace("QueryInterface:Interface not supported.");rnrn *ppv = NULL;rnrn return E_NOINTERFACE;rnrn rnrn reinterpret_cast< IUnknown* >(*ppv)->AddRef();rnrn return S_OK;rnrnrnrn==========================================================rnrnrn *ppv = static_cast< IX* >(this);rnrn 这是把对象的指针THIS给*PPV,请教为什么还要强制转换?对象的指针能转换成<em>接口</em>在指针吗?rn rn
关于QueryInterface
一般对于同一对象通过其查询IUnknown<em>接口</em>,得到的应是相同的值,rn如Automation对象其IDispatch* pObj,通过其用QueryInterface查询IUnknown<em>接口</em>rnIUnknown* punk=pObj->QueryInterface(IID_IUnknown,(void**)&punk)rnpunk一般与pObj是相同的,指向相同的VTable,但为什么Excel不是这样的,如rn CLSID clsid;rn CLSIDFromProgID(L"Excel.Application",&clsid);rn Excel::_Application *ExcelApp;rn IID iidApp=__uuidof(Excel::_Application);rn CoCreateInstance(clsid,NULL,CLSCTX_SERVER,iidApp,(void **)&ExcelApp);rn IUnknown* punk=NULL;rn ExcelApp->QueryInterface(IID_IUnknown,(void **)&punk);rnrnExcelApp与punk不相等,为什么?
QueryInterface的实现原理
一个com对象可以实现多个<em>接口</em>,利用每一个<em>接口</em>的QueryInterface可以取得另一个<em>接口</em>。rncom对象如果实现了好几个<em>接口</em>,那么这个com对象的有几个虚函数表,虚函数表里是什么内容。rnQueryInterface的能找到其他<em>接口</em>的实现原理是什么?rnrn谢谢!rn
QueryInterface问题
如果一个<em>接口</em>只是实现了IUNKNOWN,而不是这个COM类对象实现的,那通过这个COM类对象的QueryInterface可以找到这个<em>接口</em>吗?rn请参考《COM本质论》第101页
接口报错查询失败
当表中数据量较大,查询响应较慢,前端又异步请求时容易出现这个错误,那要怎么解决呢? 我们可以采用给一个查询条件使用较多的字段加一个索引,就可以解决这个问题 ...
ffdshow接口方法调用失败
现在要用ffdshow中的raw video filter,在程序中查询<em>接口</em>成功,但是在后面的调用<em>接口</em>的方法却<em>失败</em>了:rnrn hr=pFFRawVideoFilter->QueryInterface(IID_IffdshowBaseW, (void **)&pRawVideoFilter);rn hr=pRawVideoFilter->getParam(IDFF_OSDtype_outputFOURCC, &OutColor);rn hr=pRawVideoFilter->putParam(IDFF_OSDtype_outputFOURCC,IDFF_outNV12);rnrn第一个hr是S_OK,pRawVideoFilter也是非零值,但是后面的两个hr都<em>失败</em>了,都返回S_FALSE;rn请教,这个是怎么回事?
2》找接口-失败了!?
我们逆推: wireshark安装略过几百字; 设置略过几百字; 这里再次感谢 @李木子 姑娘,小白问过她什么叫做<em>接口</em>,怎吗识别如下答复:看interface , 命名 DAO INTERFACE SERVICE 当然,后面的半句还没推倒,先看这个关键词:interface 就是它:interface运行wireshark,打开浏览器,我们继续换个工具推导163邮箱: 不过首先我
接口先决条件失败412
  最近对接一个第三方的<em>接口</em>出现的神奇问题。   对接的<em>接口</em>需要做先决条件验证(header验证)。但是,一直会返回412,先决条件<em>失败</em>。查找对比报文才发现问题:发出去的报文header和对方接收的header大小写不一致。   我方发出去的报文: 对方接收到的报文:   在机缘巧合之下才发现原来是代理proxy的问题。调用<em>接口</em>的时候,程序会默认走系统代理,系统代理会把条件标准化,...
查询IHTMLDocument2接口失败~
CComQIPtr m_spWebBrowser2;rnrnCComPtr pDisp;rnHRESULT hr = m_spWebBrowser2->get_Document(&pDisp);rnCComQIPtr spHTML;rnspHTML = pDisp;rnif (spHTML) rn……rnrnrnspHTML总是为空,是什么问题呢?rnrn一直在线,希望有人解答,谢~~~:Drn
“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败:库没有注册
安装的是office2016,用Excel时显示这个改怎么处理呢?各位大神帮我看看,谢谢谢谢!
调用excel的时候报:接口 Excel._Application 的 QueryInterface 失败!急!不够加分!
如题!
错误处理(4)—— “{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败
错误信息: 中文版—— 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为<em>接口</em>类型“Microsoft.Office.Interop.Excel._Application”。此操作<em>失败</em>的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的<em>接口</em>的
使用COM组件时,QueryInterface调用失败是什么原因
在WinCE平台上调用总<em>失败</em>,什么都没法干了,大家帮我分析一下吧
各位老大帮忙啊,关于QueryInterface失败的问题!!(在线等····)
我做了com+程序(在winxp下),在我机器上很好用,但是放在另一个机器(win ad 2000)就不好用,提示说<em>接口</em>cmpZJAccountSetting.IcocAccountSetting的QueryInterface<em>失败</em>。。。请各位老大帮忙了!!rn
大家好,queryInterface失败是什么意思呢?(在线等待···)
我做了com+程序(在winxp下),在我机器上很好用,但是放在另一个机器(win ad 2000)就不好用,提示说<em>接口</em>cmpZJAccountSetting.IcocAccountSetting的QueryInterface<em>失败</em>。。。请各位老大帮忙了!!
接口查询",属于哪种设计模式?">微软Com技术中的QueryInterface"接口查询",属于哪种设计模式?
如题,谢谢!
CComPtr 的QueryInterface 问题.
不知下面的用法有什么错误:rnCComPtr m_pFont;// memeber variablernIFont *pIFont;rnm_pFont->QueryInterface(IID_IFont,reinterpret_cast(void**)(&pIFont));rn谢谢大家了.rn
QueryInterface的2义性问题!
#includernusing namespace std;rnstruct IUnknownrnrnpublic:rnvirtual long QueryInterface(string& s, void ** ppv) = 0;rn;rnrnstruct IA :public IUnknownrnrnpublic:rn virtual void Ax() = 0;rn virtual void Ay() = 0;rn;rnrnstruct IB:public IUnknownrnrnpublic:rn virtual void Bx() = 0;rn virtual void By() = 0;rn;rnrnclass CA :public IA,public IBrnrnpublic:rn void Ax()cout<By();rn return 0;rnrnrn编译提示QueryInterface有2义性,但是为什么用com里自带的IUnknown就没有这个问题呢?
组件实现了多个接口,是否必须从第一个接口QueryInterface得到别的接口?
例如一个组件有两个<em>接口</em>IF,IGrn还是说,可以CoCreateInstance直接得到IG<em>接口</em>,而不需要先CoCreateInstance得到IF,再用IF的QueryInterface得到IG?rnrn谢谢。
!!!!!!!!!!!!Mackz!!!!!!!!!!!!!QueryInterface()调试出现问题!!!!!!!!!!!!!
你好mackz!我测试你给我的程序中出现了几个问题:rn1.函数类型问题rn2.跳出rnBOOL comFun()//随便写了个函数类型!若用里面的函数,怎么写?rnrn AfxOleInit();rn CComDispatchDriver dispAgent;rn const CLSID clsid = 0x485463b7, 0x8fb2, 0x4b3b, 0xb2, 0x9b, 0x8b, 0x91, 0x9b, 0x0e, 0xac, 0xce ; // Agentrn HRESULT hr = dispAgent.CoCreateInstance(clsid);rn if (FAILED(hr))rn return FALSE;rn CComPtr pAgent;rn const IID IID_IAgent = 0x1622f56a, 0x0c55, 0x464c, 0xb4, 72, 0x37, 0x78, 0x45, 0xde, 0xf2, 0x1d ; // IAgentrn rn hr = dispAgent->QueryInterface(IID_IAgent, (void**)&pAgent);//__uuidof(IAgent)rn if (FAILED(hr));rn return FALSE;//-----------在这里就跳出了!rn DISPID dispid;rn hr = pAgent.GetIDOfName(L"AddTask", &dispid);rn VARIANT varParams[8];rn // _bstr_t pURL,rn varParams[0].vt = VT_BSTR;rn varParams[0].bstrVal = L"";rn // _bstr_t pFileName,rn varParams[1].vt = VT_BSTR;rn varParams[1].bstrVal = L"";rn // _bstr_t pPath,rn varParams[2].vt = VT_BSTR;rn varParams[2].bstrVal = L"";rn // _bstr_t pComments,rn varParams[3].vt = VT_BSTR;rn varParams[3].bstrVal = L"";rn // _bstr_t pReferURL,rn varParams[4].vt = VT_BSTR;rn varParams[4].bstrVal = L"";rn // int nStartMode,rn varParams[5].vt = VT_I4;rn varParams[5].intVal = 0;rn // int nOnlyFromOrigin,rn varParams[6].vt = VT_I4;rn varParams[6].intVal = 0;rn // int nOriginThreadCountrn varParams[7].vt = VT_I4; rn varParams[7].intVal = 0;rn VARIANT varRet;rn hr = pAgent.InvokeN(dispid, varParams, 8, &varRet);rn if (FAILED(hr))rn return FALSE;rnrn
QueryInterface的实现编译通不过
为什么编译通不过?照书上面抄的。谢谢帮我看看rnrn[code=C/C++]rnrnSTDMETHODIMP Math::QueryInterface(REFIID riid,void* *ppv)rnrn *ppv=0;rn if(riid==IID_IUnknown)rn *ppv=(IMath*)this; rn else if(riid==IID_IMath)rn *ppv=(IMath*)this;rn else if(riid==IID_IAdvancedMath)rn *ppv=(IAdvancedMath*)this;rn if(*ppv)rn rn (IUnknown*)(*ppv)->AddRef();//这里出错。rn return(S_OK);rn rn return(E_NOINTERFACE);rnrn[/code]rnrn错误提示,rn--------------------Configuration: Copy of Server - Win32 Debug--------------------rnCompiling...rnMath.cpprnd:\mine\vc\exeserver\math.cpp(36) : error C2227: left of '->AddRef' must point to class/struct/unionrnServer.cpprnd:\mine\vc\exeserver\server.cpp(33) : warning C4700: local variable 'pIMath' used without having been initializedrnError executing cl.exe.rn
COM编程中QueryInterface
在网上看到关于QueryInterface实现的介绍,有些不懂。rnrn[color=#FF0000]HRESULT 实现类::QueryInterface( const IID& iid,void **ppv)rnrn if( iid== IID_<em>接口</em>一)rn *ppv=(j<em>接口</em>一*) thisrn else if( iid== IID_<em>接口</em>二)rn *ppv=(j<em>接口</em>二*) thisrnrn //其他以此类推rnrnQueryInterface中查询的时候,是将实现类的this指针强制转换成要查询的<em>接口</em>的类型,这个时候在内存中发生的操作是将this的内存块切割成要查询的<em>接口</em>的内存大下,然后将这块内存填入传入的void指针。这就获取了要查询的<em>接口</em>。因为实现类的内存中是包含了要查询的<em>接口</em>的内存结构,因此,上面的操作是可实现的。rn原文网址是:http://blog.csdn.net/dotnet90/archive/2009/02/14/3890251.aspx[/color]rnrn我不明白的是当一个实现类中有多个<em>接口</em>的时候,为什*ppv都等于this,强制转换可以改变它的值吗?rnrn
QueryInterface for interface XXX failed
在客户服务器安装程序后,报错QueryInterface for interface XXX failed ,刷新几次就好,有时报错有时不报,没有明显规律。
使用QueryInterface时的问题
自己用atl做的com DLL,里面实现了两个<em>接口</em>,客户程序通过#import引入comrn在生成的.tlh文件中相关的<em>接口</em>定义如下rnstruct /* coclass */ TestAtlcom;rnstruct __declspec(uuid("6c1a39cb-3183-4b32-bf8e-0ffc26e801c6"))rn/* dual interface */ ITestAtlcom;rnstruct /* coclass */ TestAtlcom2;rnstruct __declspec(uuid("0ea750ba-fdb0-4291-9a9d-ae2e6d9bf1a0"))rn/* dual interface */ ITestAtlcom2;rn//rn// Smart pointer typedef declarationsrn//rn_COM_SMARTPTR_TYPEDEF(ITestAtlcom, __uuidof(ITestAtlcom));rn_COM_SMARTPTR_TYPEDEF(ITestAtlcom2, __uuidof(ITestAtlcom2));rnrn//客户程序中我是这样用的rn//首先声明rnITestAtlcomPtr m_Iatl;rnITestAtlcom2Ptr m_Iatl2;rnrn//对于m_Iatl rnm_Iatl.CreateInstance(__uuidof(TestAtlcom)) //这是成功的rn//对于m_Iatl2,我想利用一下QueryInterfacernm_Iatl.QueryInterface(__uuidof(TestAtlcom2),(void**)&m_Iatl2);rn//上面的做法怎么也得不到<em>接口</em>m_Iatl2,错在哪里我不太清楚,请高手指点rn//另外我也试了下面的办法,还是错rnm_Iatl->QueryInterface(__uuidof(ITestAtlcom2),(void**)&m_Iatl2);
急!dispinterface类型的接口不能使用queryinterface()查询?
在一个COM对象中实现了两个类型的<em>接口</em>,一个是dispinterface<em>接口</em>(OLEVIEW中显示的,并不是纯粹的Idispatch),另一个是双<em>接口</em>。使用Queryinterface获取dispinterface<em>接口</em>时,hresult返回-2147467262,获取<em>失败</em>;但是获取另一个双<em>接口</em>可以成功。。。rn有没有大侠解释解释?另外如何区分双<em>接口</em>和dispinterface<em>接口</em>?非常感谢!rn
为何使用IWMReader->QueryInterface() 找IWMDRMReader接口的会不成功,(E_NOINTERFACE)
WinXP, Windows Media Fomat SDK9.5, VS2003rnWMCreateReader()创建IWMReader成功,但是无法从其获取IWMDRMReader<em>接口</em>。rnrn难道这也一定需要WMStudDrm.lib这个库才能成功?rnrnrn如果我用WMRM SDK是不是也可以给DRM加密文件的解密?rnrn谢谢
QueryInterface获取的接口,能供多个线程使用吗
在WebService开发中遇到的问题,通过Soaphttpclient获取了soap访问<em>接口</em>后,不知道能不能多线程公用一个,会不会共享冲突。
STCSampleGrabberCB 接口 QueryInterface(REFIID riid, void **ppv)编译出错?谁知道
为了获得 directshow的视频流rn定义一个类实现Sample Grabber的回调<em>接口</em>IsampleGrabberCB: rnrnclass CSampleGrabberCB : public ISampleGrabberCB rn rn rn 重写 QueryInterface<em>接口</em>:rn STDMETHODIMP CSampleGrabberCB ::QueryInterface(REFIID riid, void ** ppv)rn rn if( riid == IID_ISampleGrabberCB || riid == IID_IUnknown ) rn rn *ppv = (void *) static_cast ( this );rn return NOERROR;rn rn return E_NOINTERFACE;rn rn编译时找不到 IID_ISampleGrabberCB ,我已经包含了qedit.h 文件rn编译出错如下:rnLinking...rnSampleGrabberCB.obj : error LNK2001: unresolved external symbol _IID_ISampleGrabberCBrnDebug/VedioPlay.exe : fatal error LNK1120: 1 unresolved externalsrnError executing link.exe.rnrn谁知道什么原因啊??
如何知道IDispatch中的QueryInterface都支持哪些特定的接口
难点每次都要给QueryInterface传递一个ID来进行测试是否支持
静态类型识别实现的无接口ID 的 QueryInterface,dynamic_cast()
rn//感谢提供静态类型识别的大师rnrn#ifndef CsUtility_Hrn#define CsUtility_Hrnrn#ifndef interfacern#define interface structrn#endifrnrn#ifndef forrn#define for if(0); else forrn#endifrnrn/*rn * Copyright (c) 2006rn * Author: RobertBakerrn * DECLARE_SINGLETON Ver 2.0rn */rnrn#define DECLARE_SINGLETON(CLASSNAME) \rnpublic: \rn static CLASSNAME * const & GetSingleton(bool bCreate = true) \rn static CLASSNAME *s_pSingleton = 0; \rn static Close##CLASSNAME close##CLASSNAME; \rn \rn if (s_pSingleton == 0 && bCreate) \rn s_pSingleton = new CLASSNAME; \rn \rn \rn return s_pSingleton; \rn \rn \rn static bool IsCreatedSingleton() return GetSingleton(false) != 0; \rn static void CloseSingleton() \rn CLASSNAME *&p##CLASSNAME = const_cast(GetSingleton()); \rn \rn if (p##CLASSNAME != 0) \rn delete p##CLASSNAME; \rn p##CLASSNAME = 0; \rn \rn \rnprivate: \rn struct Close##CLASSNAME \rn Close##CLASSNAME() \rn ~Close##CLASSNAME() CloseSingleton(); \rn; \rnrn//静态类型识别rntemplate rnclass IsTypeOfrnrnprivate:rn typedef char value_type;rn struct type_1 rn value_type value;rn ;rn rn struct type_2 value_type value[2]; ;rn static type_2 fun(...);rn static type_1 fun(Base *);rn rn public:rn enum is = (sizeof(fun((Derive *) 0)) == sizeof(type_1)) ;rn;rn//静态类型识别rnrntemplate rnbool CreateInstance(const T *&pT) rn if (pT != NULL) rn return false;rn rn rn pT = new T;rn return pT != NULL;rnrnrntemplate rnbool Dynamic_Cast(const Type_Destination * &pType_Destination, const Type_Source * const pType_Source)rnrn if (pType_Destination != 0 || pType_Source == 0) rn return false;rn rnrn if (IsTypeOf::is == 0) rn return false;rn rnrn pType_Destination = static_cast(pType_Source);rn return true;rnrnrn#endif //CsUtility_Hrnrn#include "CsUtility.h"rnrnclass Arnrnpublic:rn void show() cout << "A" << endl; m = 0; rnprotected:rn int m;rn;rnrnstruct I_A ;rnrnclass B : public A, public I_Arnrnpublic:rn void show() cout << "B" << endl; m = 0; rnprotected:rnprivate:rn;rnrnclass Crnrnpublic:rn void show() cout << "C" << endl; m = 0; rnprotected:rnprivate:rn int m;rn;rnrnclass D : public Brnrnpublic:rn void show() cout << "D" << endl; m = 0; rnprotected:rnprivate:rn;rnrnint _tmain()rnrn cout << "A is A = " << IsTypeOf::is << endl;rn cout << "B is A = " << IsTypeOf::is << endl;rn cout << "C is A = " << IsTypeOf::is << endl;rn cout << "D is A = " << IsTypeOf::is << endl;rn cout << "A is D = " << IsTypeOf::is << endl;rn cout << "D is B = " << IsTypeOf::is << endl;rn cout << "B is I_A = " << IsTypeOf::is << endl;rn cout << "D is I_A = " << IsTypeOf::is << endl;rn cout << endl;rnrn D *pD = 0;rn if (!CreateInstance(pD)) rn return 0;rn rnrn cout << "D to A ";rn A *pA = 0;rn if (QueryInterface(pA, pD)) rn pA->show();rn rn cout << endl;rnrn cout << "D to B ";rn B *pB = 0;rn if (QueryInterface(pB, pD)) rn pB->show();rn rn cout << endl;rnrn cout << "D to C ";rn C *pC = 0;rn if (QueryInterface(pC, pD)) rn pC->show();rn rn cout << endl;rnrn cout << "B to A ";rn pA = 0;rn if (QueryInterface(pA, pD)) rn pA->show();rn rn cout << endl;rn delete pB;rnrn return 0;rnrn
关于接口继承的问题【QueryInterface返回值为E_INVALIDARG】
子<em>接口</em>和父<em>接口</em>之间如何进行相互转化rnIB : public IArnIC : public IArnrn当我从另一个<em>接口</em>IManager的方法中获取了IA的<em>接口</em>指针,而实际这个<em>接口</em>指针是指向IB,rn而我在客户端调用IA->QueryInterface(IID_IB,(void**)ppvB)时,hr返回E_INVALIDARG;rnrn请问是哪里出了问题?rnrnPS:我的COM服务器基于EXE的进程外服务器,但是本地的,非远程。
获取IShockwaveFlash接口,QueryInterface该输入什么参数?
IShockwaveFlash * isf;rnQueryInterface(const IID& iid,isf);rnrn上面的IID标识参数,应该输入什么?
QueryInterface查询到的接口怎样转换为实际的类对象?
IDispatch **pp; rnobj->QueryInterface(IID_IDispatch, (void**)pp);rnrn上面的语句能得一个IDispatch<em>接口</em>rn那么怎样对这个<em>接口</em>得到实际的类对象,换句话就是如下结果rnMyClass mclsrnrnmcls=pp;rnrn上面的如何用VC写?
QueryInterface() 的问题!!!!!急
小弟刚学 COM 现遇如下问题rnrn在组件内聚的时候 rnrn//外部组件 调用 pInUnKnown->QueryInterface()rn//内部组件 调用 pOutUnKnown->QueryInterface()rnrn外部组件 rnQueryInterface() rnrn if 是内部组件rn pInUnKnown->QueryInterface() rnrnrn内步组件rnQueryInterface() rnrn pOutUnKnown->QueryInterface() 转发给外不组件 rnrnrn这样不是 一个死循环了吗rnrn哪位高手能 帮我解决rn
闽QueryInterface拜肈
inside COMń弧QueryInterface琌ぃ笵舱ン钡ㄑ琩高ノrn┮иΤ拜肈,絏ㄒrn IX *PIX=NULL;rn HRESULT hr=PI->QueryInterface(IID_IX,(void**)&PIX);rn 硂ㄢ︽絏莱赣琌琩高IID_IX钡琌琂礛ぃ笵钡ぐ笵rn 琩IID_IX钡τぃ琩IID_IY,IID_IZ钡硂弧糶单祘笵硂rn IID_IX钡琌狦笵ぐ临惠璶琩高㎡и琌com垫尘叫弧フ
关于QueryInterface,求助啊!
我用Activex保存一个打开的word文档,当我用PostMessage时,可以保存文档,但是无法得知保存成功的信息,我想用SendMessage时,却发现无法保存文档。rn跟踪后,发现:PostMessage时,hr = m_pObj->QueryInterface(IID_IPersistFile, (void**)&ppf);hr返回正确;而SendMessage时,该语句有问题。有熟悉的朋友可以帮帮忙么?rnrn留个QQ,或者加我468491563
求QueryInterface例子
一个关于QueryInterface的例子
关于com的QueryInterface
我是初学COM,我看组件的QueryInterface函数的时候有个疑问:rn一个COM组件CMath,含有一个<em>接口</em>,IID为IID_ISimpleMath。QueryInterface的定义为:rn[code=C/C++]rnSTDMETHODIMP CMath::QueryInterface(REFIID riid, void **ppv)rnrn if(riid == IID_ISimpleMath)rn *ppv = static_cast(this);rn else if(riid == IID_IUnknown)rn *ppv = static_cast(this);rn elsern rn *ppv = 0;rn return E_NOINTERFACE;rn rn reinterpret_cast(*ppv)->AddRef();rn return S_OK;rnrnrn[/code]rnrn从上面的代码中可以看出,我通过CoCreateInstance得到一个组件后,每次用IID_ISimpleMath查询的<em>接口</em>指针都是this static_cast的,得到的<em>接口</em>地址应该一样才对,但是为什么,我第一次查询后不释放,第二次再查询,地址就不一样了呢??rn如:rn [code=C/C++]rn ISimpleMath *pSimpleMath1 = NULL;rn ISimpleMath *pSimpleMath2 = NULL;rn pMath->QueryInterface(IID_ISimpleMath,(void **)&pSimpleMath1);rn pMath->QueryInterface(IID_ISimpleMath,(void **)&pSimpleMath2);rnrn //pSimpleMath1和pSimpleMath2的值不一样!rnrn[/code]rnrn假如:rnrn[code=C/C++]rn ISimpleMath *pSimpleMath1 = NULL;rn ISimpleMath *pSimpleMath2 = NULL;rn pMath->QueryInterface(IID_ISimpleMath,(void **)&pSimpleMath1);rn ISimpleMath *pSimpleMath_temp = pSimpleMath1;rn pSimpleMath1->Release();rn pMath->QueryInterface(IID_ISimpleMath,(void **)&pSimpleMath2);rnrn //pSimpleMath2和pSimpleMath_temp的值是一样的!rn[/code]rnrn请问下,假如在一个程序中,我分别用这两种方式得到<em>接口</em>,然后对COM进行操作,结果是不是一样的??谢谢!!rnrn
COM组件的QueryInterface问题
[code=C/C++]rn#include rnusing namespace std;rnrn#include "../MyCOMServer/MyCOMServer.h"rn#include "../MyCOMServer/MyCOMServer_i.c"rnrnint main()rnrn HRESULT hr;rn IUnknown *pUnknown=NULL;rn IInterface1 *pInterface1=NULL;rn IInterface2 *pInterface2=NULL;rnrn //COM库的初始化rn hr=CoInitialize(NULL);rn if (!SUCCEEDED(hr))rn rn coutMul(10,10,&num2); //两个数相乘rn cout<Release();rn rnrn CoUninitialize();rn return 0;rnrn[/code]rn在VC6.0中通过ATL创建了一个COM组件,组件中有两个<em>接口</em>(通过insert new ATL Object以相同方式加入)rn问题:rn1、为什么第一次查询(查询<em>接口</em>1)成功,调用函数成功;而第二次查询<em>失败</em>(查询<em>接口</em>2)???rn2、通过IUnknown指针不是可以遍历到所有的<em>接口</em>吗?为什么上述程序能找到<em>接口</em>1而找不到<em>接口</em>2?rn3、在什么情况下调用Release()函数???
QueryInterface的一个小疑问
IUnknown <em>接口</em>中的QueryInterface方法的实现,一般最后都会增加引用计数:rnrnHRESULT QueryInterface(rn [in] REFIID riid,rn [out] void **ppvObjectrn)rnrn// .......rnrn[b]((IUnknown*) (*ppvObject))->AddRef();[/b][color=#FF0000][/color]rnrnreturn S_OK;rnrnrn我想问一下,为何要把(*ppvObject)强转为(IUnknown *)之后,再调用AddRef方法,而不是直接调用呢?rnrnrn
假如不调用QueryInterface()
[b]在类厂创建了一个实例对象后,当然也就有一个指针指向了该对象,接下来我不调用QueryInterface(),然后我就用这个指针来调用<em>接口</em>中的函数,这样行吗?[/b]rn我一直在QueryInterface()这里弄不明白:感觉类厂创建了一个对象,那么对象的指针就可以直接调用<em>接口</em>中的函数,干吗还有调用QueryInterface()来实现<em>接口</em>,有点迷糊?请大家给予解释,谢谢!
QueryInterface的一个问题
有时候需要调用QueryInterface查询其他<em>接口</em>的指针,但是我并不知道当前<em>接口</em>通过QueryInterface能查询到哪些<em>接口</em>的指针,这里面能有办法知道哪些是可查的吗?
IDirectSoundBuffer->QueryInterface 问题
为什么获取QueryInterface会<em>失败</em>?有几种可能导致呢。rn 特别关注语音的录取播放,请有兴趣的Q近来聊聊
关于QueryInterface的问题
很简单的例子:rninterface IX : IUnknownrnrn virtual void __stdcall Fx() = 0 ;rn;rnrninterface IY : IUnknownrnrn virtual void __stdcall Fy() = 0 ;rn;rnrnclass CA : public IX,rn public IYrnrn //IUnknown implementationrn virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv) ; rn virtual ULONG __stdcall AddRef() return 0 ;rn virtual ULONG __stdcall Release() return 0 ;rnrn // Interface IX implementationrn virtual void __stdcall Fx() cout << "Fx" << endl ;rnrn // Interface IY implementationrn virtual void __stdcall Fy() cout << "Fy" << endl ;rn;rnrnHRESULT __stdcall CA::QueryInterface(const IID& iid, void** ppv)rn rn if (iid == IID_IUnknown)rn rn trace("QueryInterface: Return pointer to IUnknown.") ;rn *ppv = static_cast(this) ;rn //这里写成*ppv = static_cast(this) ;为什么不可以?rnrn谢谢指点!
关于IOleObject的QueryInterface
C++项目中要用到iwebbrowser,于是就在自己类里面继承了IDocHostUIHandler,然后定义一个IOleObject去<em>queryinterface</em> IID_IOleInPlaceObjectWindowless,结果返回hresult=0x80004002,描述为不支持此<em>接口</em>。但是我已经包了mshtmhst.h,而且IID_IOleInPlaceObjectWindowless的定义也是"1C2056CC-5EF4-101B-8BC8-00AA003E3B29"rnrngg了很久也没解决办法,不知道各位熟习com的达人有没有遇到类似情况呢?rn附带说一下,我用<em>queryinterface</em> IID_IOleInPlaceObject就正常。。。
关于 IDispach::QueryInterface 的问题
我在 VC Sample 的 Oclient 例子中稍微改动了一点,有下面的语句rnif(m_pSelection==NULL)rn return;rn rn LPDISPATCH lpDisp;rn lpDisp=m_pSelection->GetIDispatch(TRUE);rn if(!lpDisp)rn return;rn CLSID clsid;//Get the CLSID of 'Excel.sheet'rn m_pSelection->GetClassID(&clsid);rn IID iid = clsid;rnrn using namespace Excel;rn IConnectionPointContainer* pUnknown/*=NULL*/;rn if(FAILED(lpDisp->QueryInterface(iid,reinterpret_cast(&pUnknown))))rn return;rn为什么总是QueryInterface返回pUnknown=NULL,是不是pUnknown的类型不对
QueryInterface函数使用
CComPtr pDoc;rn pDoc = (IHTMLDocument2*)m_webaddress.GetDocument();rn CComPtr pElemColl;rn pDoc->get_all(&pElemColl);rn LONG ncelem;rn pElemColl->get_length(&ncelem);rn HRESULT hr;rn for (int m = 0; m < ncelem; m++)rn rn _variant_t index;rn IDispatch* pDisp2; rn hr = pElemColl->item(index,index, &pDisp2 );//rn IHTMLSelectElement* pImage; rn hr = pDisp2->QueryInterface( IID_IHTMLSelectElement,(void **)&pImage);rn if (SUCCEEDED(hr))rn rn rn rnrn rn今天弄了 半天了 QueryInterface()函数总是返回false,pImage是空值,不知道怎么回事。
请问QueryInterface和FindInterface的区别?
我在何种情况下调用QueryInterface,又在何种情况下调用FindInterface?rn谢谢!rn
使用QueryInterface 出错?
简单的<em>接口</em>参数调用。rnClient端rn #import "..\msado15.dll" no_namespace rename("EOF","adoEOF")rn #import "..\myDll.dll" no_namespacern客户端调用myDll中的<em>接口</em>IDBMan的Test([in]LPSTR strSql,IUnknown* Record);rnrn IDBManPtr myDB;rn myDB.CreateInstance(__uuidof(myDll));rn _RecordsetPtr myRecord;rn myRecord.CreateInstance(__uuidof(Recordset));rn myRecord->CursorLocation=adUseClient;rn myDB->Test("select * from myTable",(IUnknown*)(&myRecord));rnrnrnrnCOM 端rnSTDMETHODIMP CDBOperator::Test(LPSTR strSql,IUnknown* Record)rnrn AFX_MANAGE_STATE(AfxGetStaticModuleState())rnrn _RecordsetPtr pRecord;rnrn pRecord.CreateInstance(__uuidof(Recordset));rnrn Record->QueryInterface(pRecord.GetIID(),(void**)(&pRecord));//调用queryInterface时出错。rnrn// pRecord->Open(strSql,(IDispatch*)m_pConnect,adOpenDynamic,adLockOptimistic,adCmdText);rn//本段代码的本意是通过传过来的sql操作语句,和记录集对象,在COM中实现对记录集的统一执行,最终返回一结果记录集。 rn return S_OK;rnrnrn//////////////////////////////////////////////////////////////////////rn//程序的意图:rn自已写一个<em>接口</em>,其主要是调用msado15.dll中的三个对数据库操作的<em>接口</em>,通过自已的方法,相当于一个公有模块,使客户端直接调用我的方法,即可得到对数据库的访问。且客户端不用导入msado15.dll,直接导入我的动态库即可,希望大家多给点方案及解决意见。rn
QueryInterface中强制转换的问题
QueryInterface函数的实现如下:rnrnHRESULT COMB::QueryInterface(const IID& iid, void **ppv)rnrn if ( iid == IID_IUnknown )rn rn *ppv = (IUnknown *) this ; //此处已经把*ppv做(IUnknown *)强制转换rn ((IUnknown *)(*ppv))->AddRef() ;//为什么还要再把*ppv强制转换一次rn else if ( iid == IID_OtherInterface ) rn rn *ppv = (IOtherInterface *) this ;rn ((IOtherInterface *)(*ppv))->AddRef() ;rn else if ( iid == IID_SomeInterface ) rn rn return m_pUnknownInner->QueryInterface(iid, ppv) ;rn else rn rn *ppv = NULL;rn return E_NOINTERFACE ;rn rn return S_OK;rnrn
关于CoCreateInstance和QueryInterface的问题
软件环境:EVC + SP4rn硬件环境:wince5.0 英文操作系统,X86 CPUrn1.CoCreateInstance<em>失败</em>的问题,代码如下:rn HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED);rn _ASSERTE(SUCCEEDED(hRes));rn HRESULT hr = ::CoCreateInstance(CLSID_AlConfig, NULL, CLSCTX_INPROC_SERVER , IID_IAlConfig,(void**)&pConfig);rn if(SUCCEEDED(hr))rn rn....................rn rn elsern rn。。。。。。。。。。。。。rn rn不知道为什么CoCreateInstance会<em>失败</em>,初始化也做了,而且wince系统也增加了COM组件,而且dll文件也注册成功了,请问还有什么原因会导致CoCreateInstance<em>失败</em>吗?wince系统还需要哪些组件吗?rn2.下面代码中第二个QueryInterface<em>失败</em>的问题rn代码如下:rn if ( m_useModem != USE_MODEM )rn rn hr = ::CoCreateInstance(m_clsidProtocol, NULL, CLSCTX_INPROC_SERVER,rn IID_IUnknown, (LPVOID *)&pIUnkn);rn if ( hr != S_OK )rn rn // 这里没发生<em>失败</em>rn m_pErrDevice = (CDevice*)m_DeviceArray.GetAt(0);;rn m_errID = ID_DEV_ERROR_CREATE_COM ;rn m_errMess.LoadString( IDS_STRING118 );rn pIUnkn = NULL;rn MessageBox(NULL,_T("failed0!"),_T("cap0"),MB_OK);rn return FALSE;rn rn if ( pIUnkn->QueryInterface(IID_ProtocolImp2, (LPVOID*)&m_pIProtocol2) != S_OK )rn rn m_bNewInterFace = FALSE ;rn TRACE(_T("老<em>接口</em>\n")) ;rn rn if ( pIUnkn->QueryInterface(IID_ProtocolImp, (LPVOID*)&m_pIProtocol) != S_OK )rn rn pIUnkn->Release();rn m_pIProtocol = NULL;rn //取协议<em>接口</em><em>失败</em> // <em>失败</em>就发生在这里rn.............................................rn rn请问是何原因?谢谢大家
QueryInterface如何使用?
void CPart::addPt(LPDISPATCH pt) rnrn IDispatch *pp; rn pt->QueryInterface(IID_IDispatch, (void**)&pp); rn CPt *ppt;//=pt->QueryInterface(;rn ppt=(CPt*)pp;rn如何改正,这里面有问题,
DirectDrawCreate,QueryInterface问题
我初学directx,发现我从往上下载的程序都有一个共性:先声明一个 LPDIRECTDRAW pDD;rn然后再是LPDIRECTDRAW7 LPDD;rnrn先DirectDrawCreate得到这个pDD,然后再用QueryInterface得到LPDD,再删掉pDD,rn为什么要这样啊?直接DirectDrawCreate这个LPDD不行吗?rn这个LPDIRECTDRAW,LPDIRECTDRAW7 类型一样啊rn这个direcx版本要是不停的升级,谁记得了那么许多的版本号,com我一点不懂,应该买本基础书的,不过最近出差,离书市太远,所以向高手求教啊
Sping Boot注入接口失败
![图片说明](https://img-ask.csdn.net/upload/201804/21/1524291637_361310.png)n项目结构应该是正确的。nn```n@Repositorynpublic interface UserDao n n public User getById(int id);nn n```nDao层的代码,使用<em>接口</em>。n@Servicen```n@Servicenpublic class UserService n n @Autowiredn UserDao userDao;n n public User getById(int id) n return userDao.getById(id);n n n nn n```nservice层代码。nncontroller层注入service。nn启动spring boot后会提示dao层没有扫描到,如果@ComponentScan dao层的话,会提示service层注入<em>失败</em>,求解。nnnnnn
编译libvirt的接口example失败
/tmp/ccCnWLSW.o: In function `getDomainInfo':a.c:(.text+0x21): undefined reference to `virConnectOpenReadOnly'a.c:(.text+0x60): undefined reference to `virDomainLookupByID'a.c:(.text+0x9c): undefined ...
钉钉接口发送消息失败
其中一种的原因可能是:你本次发送的内容和上次发送的文本内容一模一样。在这种情况钉钉<em>接口</em>是不会执行成功的
IEnumSTATURL接口指针枚举失败
使用IUrlHistoryStg2<em>接口</em>去枚举IE浏览记录,执行到循环枚举时<em>失败</em>,代码如下rn rn CoInitialize(NULL);rnrn USES_CONVERSION;rn rn IUrlHistoryStg2* pUrlHistoryStg2 = NULL;rn rn HRESULT hr = CoCreateInstance(CLSID_CUrlHistory,rn NULL, CLSCTX_INPROC, IID_IUrlHistoryStg2,rn (void**)&pUrlHistoryStg2);rnrn if(hr!=S_OK) rn rn return false;rn rnrn IEnumSTATURL* pEnumURL;rn rn hr = pUrlHistoryStg2->EnumUrls(&pEnumURL);rnrn if(hr!=S_OK) rn rn return false;rn rnrn STATURL suURL;rn rn ULONG pceltFetched;rn rn suURL.cbSize = sizeof(suURL);rnrn hr = pEnumURL->Reset();rnrn if(hr!=S_OK) rn rn return false;rn rnrn hr= pEnumURL->SetFilter(L"http",STATURL_QUERYFLAG_ISCACHED);rnrn if(hr!=S_OK) rn rn return false;rn rnrn CString url;rnrn while((hr = pEnumURL->Next(1, &suURL, &pceltFetched)) == S_OK)//能执行到到这里就枚举<em>失败</em>rn rn temp.Format("%s %s\r\n", str_time,W2T( suURL.pwcsUrl));rn url+=temp;rn rnrn MessageBox(url);rn pEnumURL->Release();rn pUrlHistoryStg2->Release();rn rn CoUninitialize();rnrn这段代码在vs2008 mfc对话框程序中能够成功枚举到浏览记录,但是现在把代码放到MFC dll 里面,就<em>失败</em>了rn能够执行到while((hr = pEnumURL->Next(1, &suURL, &pceltFetched)) == S_OK)这行,但是枚举不到任何内容。rn
微信公众号接口配置信息失败 tp3.2
将访问的地址指向Home模块 (默认访问模块),不要放在其他模块
VB调WCF接口失败
编写VB程序调用C#的WCF<em>接口</em>时候rnrn若方法为简单类型string,int,则成功rnrn若为字符串数组,则调用<em>失败</em>,请问为何,该如何解决?rnrn奇怪的是同样的方法,同样的参数VB调用就成功了
获取IDocHostUIHandler接口失败的问题
CComPtr m_piWebBrowser;rnCComPtr m_piDocHostUIHandler; rnHRESULT hr = m_piWebBrowser->get_Document( &m_piDispatch );rnATLASSERT( SUCCEEDED( hr ));//这里断言成功了rnhr = m_piDispatch->QueryInterface(IID_IDocHostUIHandler,(void **)&m_piDocHostUIHandler);rn最后m_piDocHostUIHandler中还是0x00000000,为什么呢? 我想获取IDocHostUIHandler,用它来禁用右键菜单.....rn怎么做才能成功呢
调用银行接口失败怎么办?
根据银行的API文档,构建URL ,发送请求来调用银行<em>接口</em>,如果调用<em>失败</em>怎么办?n用事务回滚吗?
Mybatis接口注入失败问题
我的项目是使用java配置而非xml配置。在整合Spring-Mybatis时使用了MapperScannerConfigurer类进行dao层<em>接口</em>自动实现。但是一直<em>失败</em>,网上查了许多方法还是没有解决。后来偶然看到@MapperScan注解,顾名思义,尝试在MybatisConfig.java中加上该注解,最后歪打正着成功解决问题!
ModelDriven接口绑定数据失败
我的jsp页面传递参数到action使用的是模型驱动,然而数据总是没有自动绑定 我检查后发现模型驱动ModelDriven要在默认的拦截器栈中的ModelDrivenInterceptor中实现它的作用,而我自定义了拦截栈忘记把默认的拦截栈手动加上,所以实现不了绑定。
wince6.0下创建ICaptureGraphBuilder2接口失败
如题,m_pCaptureGraphBuilder.CoCreateInstance(CLSID_CaptureGraphBuilder)<em>失败</em>,错误码是0x80040154。请各位帮帮忙,多谢。
请问如何遍历一个接口指针利用QueryInterface所能得到的所有接口
请问如何遍历一个<em>接口</em>指针利用QueryInterface所能得到的所有<em>接口</em>?
java零基础自学之树_二叉树下载
java零基础自学 之 树 二叉树 java零基础自学 之 树 二叉树 相关下载链接:[url=//download.csdn.net/download/langtiancl/3533066?utm_source=bbsseo]//download.csdn.net/download/langtiancl/3533066?utm_source=bbsseo[/url]
ADSL密码读取器下载
很好用,无毒,使用时关闭360.等杀毒软件。! 相关下载链接:[url=//download.csdn.net/download/hjl19930329/4583801?utm_source=bbsseo]//download.csdn.net/download/hjl19930329/4583801?utm_source=bbsseo[/url]
精通Android 4中文版.part2下载
精通Android 4 中文版 (印)SatyaKomatinen,i(美)DaveMacLean著;曾少宁,杨越译 人民邮电出版社 有书签,分两个包 相关下载链接:[url=//download.csdn.net/download/tjufa/8016541?utm_source=bbsseo]//download.csdn.net/download/tjufa/8016541?utm_source=bbsseo[/url]
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件
我们是很有底线的