繁体   English   中英

访问COM接口方法C ++

[英]Access a COM Interface method C++

都:

  • CLSID
  • IID

指定了以上内容,并使用:

  • CoCreateInstance()

返回上面的CLSID指定的类的单个未初始化对象。

然后如何从C ++访问接口的方法? 没有:

  • ATL
  • MFC
  • 只是普通的C ++

之后,我使用CreateInstance()

我在使用CreateInstance()-最后一个参数-ppv时遇到麻烦

使用oleview,我可以看到上面IID上方具有指定IID的方法,例如:

interface IS8Simulation : IDispatch {
    HRESULT Open([in] BSTR FileName);
};

然后如何访问以上内容? 范例/指南-请

问候

通过执行CoCreateInstance,您可以获得接口指针。 通过QueryInterface(...)方法,您可以轻松获取其他接口的接口指针。 例如,


IUnknown* pUnk = NULL;
HRESULT hr = ::CoCreateInstance(clsid,NULL,CLSCTX_ALL,__uuidof(IUnknown),(void**)&pUnk);

IS8Simulation* pSim = NULL; hr = pUnk->QueryInterface(__uuidof(IS8Simulation), (void**)&pSim);

完成此操作后,您将在pSim中获得指向IS8Simulation的指针,并可以通过该指针调用该接口的方法。 请记住,您需要在CoCreateInstance调用中提供有效的clsid。

实际的问题有点模糊。 一些代码会有所帮助。 但是要猜测一下,您是否需要QueryInterface?

 IS8Simulation* pSim = NULL;
 hr = pUnk->QueryInterface(__uuidof(IS8Simulation), (void)&pSim);

我将尝试上述操作,但已声明IS8Simulation-请原谅我对COM缺乏理解

此外,下面如何使用纯C ++调用该方法:

HRESULT Open([in] BSTR FileName)

您可能需要#import“ something.dll”。 这将为您提供像IS8Simulation这样的类型的C ++声明,类似于#include“ something.h”会执行的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM