一、先上伪代码
#include <QAxObject>
#include <qt_windows.h>
bool Init(char cMode)
{
QAxObject m_QAxObj;
QVariantList params0;
QString qresult;
int engine_hand;
HRESULT hres = CoInitializeEx(0, COINIT_MULTITHREADED );
if (hres != S_OK && hres != 0x80010106)
{
hres = CoInitializeEx( 0, COINIT_APARTMENTTHREADED );
if (hres != S_OK && hres != 0x80010106)
{
qWarning("Qt:初始化Ole失败(error %x)",(unsigned int)hres);
return 0;
}
}
b_re = m_QAxObj.setControl(QString::fromLocal8Bit("{7B3333C0-FDA0-11CE-8B06-444553540000}") );
params0.clear();
params0<<QVariant( 0 );
params0<<QVariant( qresult );
//int getHandle(int engin_type, QString &result)
engine_hand = m_QAxObj.dynamicCall( "getHandle(QVariant)", params0 );
}
首先包含COM组件需要使用的两个头件。 CoInitializeEx()函数返回的不一定是S_OK&#x