github上下载.net 版本的NDde 开发包

或者在此处下载开发包

MSDN 地址

创建服务器

    class BasicDDE:DdeServer
{
public BasicDDE(string ServiceName):base(ServiceName)
{
}
}

在主类中

        private void MakeServer()
{
BasicDDE server = new BasicDDE("BasicDDE");
server.Register();
}

服务器的创建关键就是服务器名称。

创建客户端

        private void MakeClient(string ServiceName,string topic)
{try
{
client = new DdeClient(ServiceName, topic,this);
client.Connect();
}
catch (Exception)
{
          client = null;
MessageBox.Show("DDE Client Creation failed");
}
}

关键是对应的服务器名称和topic名称。

HotLink模式

类似于长连接,服务器可以主动推送相关信息给客户端。

这里的例子服务器开始定时器,每个一秒调用Advise函数

Advise("*", "*");
//向所有topic和item发送消息

发送的时候,会调用

        protected virtual byte[] OnAdvise(string topic, string item, int format);

发送具体信息。

服务器全部代码

    class BasicDDE:DdeServer
{
public System.Timers.Timer timer = new System.Timers.Timer();
public BasicDDE(string ServiceName):base(ServiceName)
{
timer.Elapsed += timer_Elapsed;
timer.Interval = ;
timer.SynchronizingObject = this.Context;
} void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Advise("*", "*");
} protected override byte[] OnAdvise(string topic, string item, int format)
{
return System.Text.Encoding.UTF8.GetBytes("Server Advise:" + DateTime.Now.ToString());
}
}

客户端

在连接前注册Advice回调函数

                client.Advise += client_Advise;

连接后针对某一个item建立hotlink

            client.StartAdvise("myadvice", , true, );

全部代码

    public partial class Form1 : Form
{
private DdeClient client;
public Form1()
{
InitializeComponent();
MakeServer();
} private void MakeClient(string ServiceName,string topic)
{
if(string.IsNullOrEmpty(ServiceName)||string.IsNullOrEmpty(topic))
{
MessageBox.Show("数值不可为空");
return;
}
try
{
client = new DdeClient(ServiceName, topic,this);
client.Advise += client_Advise;
client.Connect(); }
catch (Exception)
{ client = null;
MessageBox.Show("DDE Client Creation failed");
}
client.StartAdvise("myadvice", , true, );
} void client_Advise(object sender, DdeAdviseEventArgs e)
{
this.Text = "On Advise: " + e.Text;
} private void MakeServer()
{
BasicDDE server = new BasicDDE("BasicDDE");
server.Register();
server.timer.Start();
} private void connect_Click(object sender, EventArgs e)
{
MakeClient(tbDDEService.Text, tbTopic.Text);
}
}

执行命令

客户端执行调用

client.Execute("mycmd", );

命令名随意,

服务器调用

        protected override ExecuteResult OnExecute(DdeConversation conversation, string command)
{
//命令处理
return ExecuteResult.Processed;
}

其中conversion.topic 可获取topic名称。

读写Item

这里用的都是同步操作,会等待直到超时,也可用异步。

Item的值

client.Poke("myitem", DateTime.Now.ToString(), );

服务器响应函数

        protected override PokeResult OnPoke(DdeConversation conversation, string item, byte[] data, int format)
{
return PokeResult.Processed;
}

应该根据item将data存储。

Item的值

client.Request("myitem", )

服务器响应函数

        protected override RequestResult OnRequest(DdeConversation conversation, string item, int format)
{
return new RequestResult(System.Text.Encoding.ASCII.GetBytes("Your Requested Data" + "\0"));
}

Macro的知识

使用记事本创建mymacro.mac的文件,

内容如下

  Name MyMessage

    Print "This is s messge!"

  EndMacro

 载入Macro

  在控制台命令行输入     Macro "mymacro.mac"然后回车

  输入Macro 然后回车,调出所有可用的Macro。

  任何不在Name和Macro之间的命令在加载的时候被执行,可以用来做初始化。

执行Macro

  输入macro的名字即可。比如MyMessage,然后回车

  输入Macro "mymacro.mac", go 然后回车,如果文件包含多个macro,执行最后一个。

 函数Macro

  

  名称必须以$结束,具有返回值。

比如查看ChemStation执行路径,在控制台打印相关函数宏。Print _AutoPath$

 删除Macro

  Remove MyMessage即可

变量

  字符串变量 末尾必须是$,

  数值变量末尾不是$

  本地变量,前面加 Local,作用范围是本Macro,不加则是全局变量

  如果数值变量需要变成字符串显示,使用val$(NumberTwo)

  Message$="Number ="+val$(NumberTwo)

系统变量

DDE 的知识和使用的更多相关文章

  1. Windows_Program_Via_C_Translate_Win32编程的背景知识/基础知识_包括基本输入输出机制介绍

    Some Basic Background Story of The Win32 APIs Win32 API背景故事/背景知识 The Win32 application programming i ...

  2. 你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  3. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  4. 学点HTTP知识

    不学无术 又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊.平时也看许多的技术文章,为什么到了关键时刻就答不上来呢? 确实发现一个问题,光看是没有用的,需要实践.看别人说的 ...

  5. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  6. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  7. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  8. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

  9. [C#] C# 知识回顾 - 异常介绍

    异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...

随机推荐

  1. 捕获错误并处理try-catch

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. HDU 6141 - I am your Father! | 2017 Multi-University Training Contest 8

    思路来自 FXXL 最小树形图模板用kuangbin的 /* HDU 6141 - I am your Father! [ 最小树形图 ] | 2017 Multi-University Traini ...

  3. luogu 3998 [SHOI2013]发微博 map

    考试的时候被卡常了~ code: #include <bits/stdc++.h> #define ll long long #define N 200002 #define setIO( ...

  4. CF557E Ann and Half-Palindrome 字典树+dp

    现在看这道题也不难啊,不知道考场上为啥没切~ code: #include <bits/stdc++.h> #define N 5006 #define setIO(s) freopen( ...

  5. windows日志分析工具-LogonTracer

    0x01 Windows应急日志常用的几个事件ID 4624:这个事件ID表示成功登陆的用户,用来筛选该系统的用户登陆成功情况. 4625:这个事件ID表示登陆失败的用户. 4768:这个事件ID表示 ...

  6. 数据分析九:互联网征信中的信用评分模型(用户APP使用行为分析)

    用户APP使用行为数据分析: 一. 背景及数据介绍: 1. 移动互联网发展背景: 网民规模7.72亿,手机网民规模7.53亿: 2. APP使用热点: 商务交易类应用规模高速增长(网络购物,网上外卖, ...

  7. pat 甲级 1064 ( Complete Binary Search Tree ) (数据结构)

    1064 Complete Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a binar ...

  8. 7.26T1四分图匹配

    四分图匹配 题目描述 一天晚上,zzh 在做梦,忽然梦见了她. 见到她,zzh 也不去看她,只顾低头自语…… “噫,OI 这个东西,真是无奇不有.” “嘿,你又学了什么?” “嗯,学到了一种算法,”z ...

  9. redis之redis-cluster配置

    为什么要用redis-cluster 并发问题 redis官方生成可以达到 10万/每秒,每秒执行10万条命令 假如业务需要每秒100万的命令执行呢? 数据量太大 一台服务器内存正常是16~256G, ...

  10. Solr 7.X 安装和配置--Linux篇

    1. 关闭防火墙和Selinux 2. 安装所需环境JDK 3. 下载Solr7.4版本 4. 下载并配置solr的中文分词器IK Analyzer 5. 启动Solr 6. 注意事项以及说明 1. ...