C++ c++;初始化Adobe Reader自动化

C++ c++;初始化Adobe Reader自动化,c++,winapi,pdf,adobe,ole,C++,Winapi,Pdf,Adobe,Ole,我在下面展示了打开AdobeReader的代码。我从中得到灵感 每次adobe reader未打开且DdeConnect返回null时,我都会收到DDE连接失败的消息。我的Adobe阅读器是:Adobe Reader席,版本11。您知道如何帮助我连接到adobe reader吗 我必须使用纯C++和Win32 API。< /P> iReturn = DdeInitialize(&this->dwIdInst, (PFNCALLBACK)DdeCallback, AP

我在下面展示了打开AdobeReader的代码。我从中得到灵感 每次adobe reader未打开且DdeConnect返回null时,我都会收到DDE连接失败的消息。我的Adobe阅读器是:Adobe Reader席,版本11。您知道如何帮助我连接到adobe reader吗

<>我必须使用纯C++和Win32 API。< /P>
iReturn = DdeInitialize(&this->dwIdInst, (PFNCALLBACK)DdeCallback,
        APPCLASS_STANDARD | APPCMD_CLIENTONLY, 0 );
/*Start the DDE server*/
hRet = ShellExecute(0, "open", this->stPdfFileName.c_str(), 0, 0, SW_SHOWNORMAL);

/*Connect to server*/
HSZ hszApp, hszTopic;
char szApp[] = "acroviewR11"; // Also I tried acroviewA11
char szTopic[] = "control";

hszApp = DdeCreateStringHandle(this->dwIdInst, szApp, 0);
hszTopic = DdeCreateStringHandle(this->dwIdInst, szTopic, 0);

this->hConv = DdeConnect(this->dwIdInst, hszApp, hszTopic, NULL);

DdeFreeStringHandle(this->dwIdInst, hszApp);
DdeFreeStringHandle(this->dwIdInst, hszTopic);

if (this->hConv == NULL) {
    printf("DDE Connection Failed.\n");
    Sleep(1500);
    DdeUninitialize(this->dwIdInst);
}
更新

我不想只打开文档。多亏了AdobeReaderAutomation,我想自动化一些东西,如添加的链接upper中所示

我也尝试过这样的代码:

DdeInitialize(&id, &DDE_ProcessMessage, APPCMD_CLIENTONLY, 0);
hszServerName = DdeCreateStringHandle(id, "Acrobat Search", 0);
hszTopicName = DdeCreateStringHandle(id, "Acrobat Search", 0);
hConv = DdeConnect(id, hszServerName, hszTopicName, NULL);

但是这对我没有帮助。

用“AcroViewR11”代替“AcroViewR11”。

用“AcroViewR11”代替“AcroViewR11”。

只需对动词使用
ShellExecuteEx
with
NULL
。如果Acrobat Reader是默认的PDF查看器,它将打开。这对我没有帮助,因为我想下一步自动化adobe Reader。例如,自动关闭文档、保存文档以及添加的简单包装器链接中提到的一些其他内容只需将
ShellExecuteEx
NULL
用作动词即可。如果Acrobat Reader是默认的PDF查看器,它将打开。这对我没有帮助,因为我想下一步自动化adobe Reader。例如,自动关闭文档、保存文档以及添加的简单包装器链接中提到的一些其他内容