簡體   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