这是上一个问题的后续:Qt ActiveX
我正在尝试在我的程序中使用 ActiveX 控件。
QAxWidget* mAX = new QAxWidget();
mAX->setControl("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}");
我知道有一个像下面这样的函数(使用getDocumentation()
):
SendCommand(QString input, QString& output)
但是当我尝试执行它时:
QString returString;
mAX->dynamicCall("SendCommand(QString,QString&)","something",returnString);
我总是得到:
returString = "";
我在网上搜索并看到了他们的错误跟踪器上报告的类似错误。似乎还没有修复:
Calling functions through dynamicCall() don't return values by QVariant
还有一篇帖子,其中有人似乎遇到了同样的问题:
有人知道解决方案/解决方法吗?
编辑:
原函数为SendCommand(LPCTSTR command,BSTR* ret)
。
也许 BSTR*
作为 &QString
处理方式存在问题?
最佳答案
您可以使用此解决方案
QString strRetVal;
QVariant returnValue("");
QVariant param1("something");
QList<QVariant> inplist;
inplist<<param1;
inplist<<returnValue;
mAX->dynamicCall("SendCommand(QString,QString&)",inplist );
strRetVal=inplist.at(1).toString();
关于c++ - Qt ActiveX 动态调用返回值始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14945598/