0


1

UnicodeでDDEConnectが失敗する

DdeConnectがUnicodeでは失敗するが、ANSIではまだ動作しているのはなぜですか?

1)Excelを開き、ダミーデータを入力します

2)DDEを介してExcelから値を読み取るサンプルコードを作成する

3)ANSI =成功、Unicode =失敗

以下のサンプルコード 毎回DDE接続に失敗します。

WCHAR szApp[] = L"Excel";
    WCHAR szTopic[] = L"C:\\Test.xlsx";
    char szItem1[] = "R1C1";  char szDesc1[] = "Current Value: ";
DWORD idInst=0;
  UINT iReturn;
            iReturn = DdeInitialize(&idInst, (PFNCALLBACK)DdeCallback,
                APPCLASS_STANDARD | APPCMD_CLIENTONLY, 0 );
            if (iReturn!=DMLERR_NO_ERROR)
            {
                printf("DDE Initialization Failed: 0x%04x\n", iReturn);
                Sleep(1500);
                return 0;
            }
HSZ hszApp, hszTopic;
    HCONV hConv;
    hszApp = DdeCreateStringHandle(idInst, (LPCWSTR)szApp, 0);
    hszTopic = DdeCreateStringHandle(idInst, (LPCWSTR)szTopic, 0);
    hConv = DdeConnect(idInst, hszApp, hszTopic, NULL);
DdeFreeStringHandle(idInst, hszApp);
    DdeFreeStringHandle(idInst, hszTopic);
    if (hConv == NULL)
    {
        printf("DDE Connection Failed.\n");
        Sleep(100); DdeUninitialize(idInst);
        return 0;
    }

1 回答


1


UnicodeモードでDDEInitializeしましたか? DDEInitializeモードとDDEConnectモードは一致する必要があります。 したがって、UNICODEを定義していない場合は、CP_WINUNICODEモードでDDEConnectを指定する前にDDEInitializeWを明示的に呼び出す必要があります。 それが私がドキュメントを読む方法です。