这是上一个问题的后续 Activity :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

也是某人似乎有相同问题的帖子:

QAxObject and dynamicCall

有人知道解决方案/解决方法吗?

编辑:

原始功能是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();

08-28 12:32