【问题标题】:DDE connection failing for unknown reasonsDDE 连接因未知原因而失败
【发布时间】:2016-05-20 15:44:58
【问题描述】:

我正在尝试使用 Qt 创建和实现 DDE dll,但目前我无法正确连接到我知道在使用 Excel 测试后可以正常工作的服务。

dll连接函数如下:

UINT respTemp;

respTemp = DdeInitializeA(&pidInst, NULL, APPCLASS_STANDARD | APPCMD_CLIENTONLY, 0L);

//handle error messages here
//...

//![]
hszService = DdeCreateStringHandleA(pidInst, (LPCSTR)service.utf16(), CP_WINANSI); //service.toLatin1().toStdString().c_str()
hszTopic = DdeCreateStringHandleA(pidInst, (LPCSTR)topic.utf16(), CP_WINANSI); //topic.toLatin1().toStdString().c_str()
hConv = DdeConnect(pidInst, hszService, hszTopic, NULL);

DdeFreeStringHandle(pidInst, hszService);
DdeFreeStringHandle(pidInst, hszTopic);

if (!hConv)
{
    UINT ddeLastError = DdeGetLastError(pidInst);

    switch (ddeLastError)
    {
        case DMLERR_DLL_NOT_INITIALIZED:    return DDEConn_DLLNotInitialized;
        case DMLERR_INVALIDPARAMETER:       return DDEConn_InvalidParameter;
        case DMLERR_NO_CONV_ESTABLISHED:    return DDEConn_NoConvEstablished;

        default:                            return DDEConn_NoConnectionStablished;
    }
}

connStatus = true;

return DDEConn_NoError;

测试函数如下:

void MainWindow::on_start_clicked()
{
    const QString application = "profitchart";    //=profitchart|COT!VALE5.ult
    const QString topic = "COT";
    const QString item = "VALE5.ult";

    test = CommDDE::instance();

    CommDDE::DDEConnectionErrorList resp = test->connect(application,topic);

    if (resp == CommDDE::DDEConn_NoError)
    {
        qDebug() << "request RESULT: " << test->request(item);
    }
    else
        qDebug() << "Can't connect to application" << resp;
}

当我尝试连接时,总是在调用DdeConnect 后收到错误DMLERR_NO_CONV_ESTABLISHED。我找不到发生此类错误时该怎么做的指导。我不太了解配置这些功能的细节,所以我使用了一个工作 dll 使用的默认配置,我从中获得了这个 dll 的部分原材料。我应该尝试其他我不知道的配置吗?记住调用是在 Excel 上运行的。

【问题讨论】:

    标签: qt dll connection dde


    【解决方案1】:

    似乎我找到了答案:编写服务和主题名称的注释方式是将参数传递给DdeCreateStringHandleADdeCreateStringHandleA 的正确方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 2021-09-01
      • 2017-10-27
      • 2014-09-10
      相关资源
      最近更新 更多