• 大小: 263KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: DDE  Excel  

资源简介

这是我在用作调试DDE的一个程序,最开始时出现与Excel通讯不稳定的现象,这是最终稳定后的程序,如果你正在做DDE,我觉得还是值得参考的。

资源截图

代码片段和文件信息

// DDEClient.cpp : Defines the entry point for the console application.
//
/*
示例 DDE 客户端
下面的示例使用 Excel 工作簿或 Word 文档的 DDE 主题。

对于 Excel,创建一个新的工作簿 (C:\Test.xls) 包含在单元格 A1 和 A2 中的数据。为 Word,创建新文档 (C:\Test.doc) 包含文本。在文档中文字的选择一些,但不是所有,并创建一个名为 MyBookmark 在该位置的书签。 
在 Visual 的 c + + 中创建新 Win32 控制台应用程序名为“DDEClient“。
在应用程序向导,选择 A 简单应用程序,然后单击 完成。
用下列替换代码中 DDEClient.cpp:

  使用以下 Word,替换 main 函数中的前 7 行: 
    char szApp[] = “WINWORD“;
    char szTopic[] = “C:\\test.doc“;
    char szCmd1[] = “[AppMinimize][EditGoTo Destination:=\“\\EndofDoc\“][InsertPara]“;
    char szItem1[] = “\\Doc“;      char szDesc1[] = “Document contains: \n“;
    char szItem2[] = “MyBookmark“; char szDesc2[] = “MyBookmark contains: \n“;
    char szItem3[] = “\\EndofDoc“; char szData3[] = “Data from DDE Client“;
    char szCmd2[] = “[FileSave][FileExit(2)]“;

生成,然后运行该应用程序。
使用 Excel,DDE 客户端初始化 DDE 对话的工作簿文件 (C:\Test.xls) 使用的主题,并执行下列操作: 
执行 APP.MINIMIZE 的命令。
申请项目 R1C1 和 R2C1 中的数据。请注意,Excel 要求请求项必须以 R1C1 表示法。
pokes R3C1 的数据。
在 $ 粗体中的格式设置 R3C1、 保存了的工作簿并退出 Excel。
使用 Word,DDE 客户端初始化 DDE 对话文档文件 (C:\Test.doc) 使用的主题,并执行下列操作:


执行命令最大限度地减少应用程序、 转到文档的结尾和插入一个新段落。
请求项“\Doc“检索整个文档的内容。请注意该 \Doc 是预定义的书签。
请求项以检索该文本在书签中的“MyBookmark“。
执行命令来保存文档并退出 Word。
*/
#include “stdafx.h“
#include “windows.h“
#include “ddeml.h“
#include “stdio.h“

HDDEDATA CALLBACK DdeCallback(
    UINT uType     // Transaction type.
    UINT uFmt      // Clipboard data format.
    HCONV hconv    // Handle to the conversation.
    HSZ hsz1       // Handle to a string.
    HSZ hsz2       // Handle to a string.
    HDDEDATA hdata // Handle to a global memory object.
    DWORD dwData1  // Transaction-specific data.
    DWORD dwData2)  // Transaction-specific data.
{
    return 0;
}

void DDEExecute(DWORD idInst HCONV hConv char* szCommand)
{
    HDDEDATA hData = DdeCreateDataHandle(idInst (LPBYTE)szCommand
                               lstrlen(szCommand)+1 0 NULL CF_TEXT 0);
    if (hData==NULL)   {
        printf(“Command failed: %s\n“ szCommand);
    }
    else    {
        DdeClientTransaction((LPBYTE)hData 0xFFFFFFFF hConv 0L 0
                             XTYP_EXECUTE TIMEOUT_ASYNC NULL);
    }
}

void DDERequest(DWORD idInst HCONV hConv char* szItem char* sDesc)
{
    HSZ hszItem = DdeCreateStringHandle(idInst szItem 0);
    HDDEDATA hData = DdeClientTransaction(NULL0hConvhszItemCF_TEXT 
                                 XTYP_REQUEST5000  NULL);
    if (hData==NULL)
    {
        printf(“Request failed: %s\n“ szItem);
    }
    else
    {
        char szResult[255];
        DdeGetData(hData (unsigned char *)szResult 255 0);
        printf(“%s%s\n“ sDesc szResult);
    }
}

void DDEPoke(DWORD idInst HCONV hConv char* szItem char* szData)
{
    HSZ hszItem = DdeCreateStringHandle(idInst szItem 0);
DdeClientTransaction((LPBYTE)szData (DWORD)(lstrlen(szData)+1)
                          hConv hszItem

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5548  2010-03-17 18:25  DDEClient(一个DDE和EXcel进行通讯的例子)\DDEClient.cpp

     文件       4572  2010-03-17 15:05  DDEClient(一个DDE和EXcel进行通讯的例子)\DDEClient.dsp

     文件        526  2010-03-17 15:05  DDEClient(一个DDE和EXcel进行通讯的例子)\DDEClient.dsw

     文件      41984  2010-03-17 18:48  DDEClient(一个DDE和EXcel进行通讯的例子)\DDEClient.ncb

     文件      48640  2010-03-17 18:48  DDEClient(一个DDE和EXcel进行通讯的例子)\DDEClient.opt

     文件       1352  2010-03-17 18:25  DDEClient(一个DDE和EXcel进行通讯的例子)\DDEClient.plg

     文件     172122  2010-03-17 18:25  DDEClient(一个DDE和EXcel进行通讯的例子)\Debug\DDEClient.exe

     文件     196504  2010-03-17 18:25  DDEClient(一个DDE和EXcel进行通讯的例子)\Debug\DDEClient.ilk

     文件      51314  2010-03-17 18:25  DDEClient(一个DDE和EXcel进行通讯的例子)\Debug\DDEClient.obj

     文件     187056  2010-03-17 15:08  DDEClient(一个DDE和EXcel进行通讯的例子)\Debug\DDEClient.pch

     文件     435200  2010-03-17 18:25  DDEClient(一个DDE和EXcel进行通讯的例子)\Debug\DDEClient.pdb

     文件       1894  2010-03-17 15:08  DDEClient(一个DDE和EXcel进行通讯的例子)\Debug\StdAfx.obj

     文件     132096  2010-03-17 18:25  DDEClient(一个DDE和EXcel进行通讯的例子)\Debug\vc60.idb

     文件     233472  2010-03-17 18:25  DDEClient(一个DDE和EXcel进行通讯的例子)\Debug\vc60.pdb

     文件       1226  2010-03-17 15:05  DDEClient(一个DDE和EXcel进行通讯的例子)\ReadMe.txt

     文件        296  2010-03-17 15:05  DDEClient(一个DDE和EXcel进行通讯的例子)\StdAfx.cpp

     文件        667  2010-03-17 15:05  DDEClient(一个DDE和EXcel进行通讯的例子)\StdAfx.h

     目录          0  2010-03-17 18:25  DDEClient(一个DDE和EXcel进行通讯的例子)\Debug

     目录          0  2010-03-17 18:48  DDEClient(一个DDE和EXcel进行通讯的例子)

----------- ---------  ---------- -----  ----

              1514469                    19


评论

共有 条评论