java实现dde服务端,快速开启dde服务端
DDE是WINDOWS平台上的一个完整的通信协议,它使支持动态数据交换的两个或多个应用程序能彼此交换数据和发送指令,
任何一个DDE Client都可以访问DDE Server的数据,数据交换是通过三个标识名来实现的:
应用程序名(Application):KSddeserver
主题(Topic):KStopic
项目(Item):变量名称
dde server代码如下:
/** Copyright 2013 www.pretty-tools.com. All rights reserved.*/import com.pretty_tools.dde.ClipboardFormat;
import com.pretty_tools.dde.DDEException;
import com.pretty_tools.dde.DDEMLException;
import com.pretty_tools.dde.client.DDEClientConversation;
import com.pretty_tools.dde.client.DDEClientEventListener;
import com.pretty_tools.dde.server.DDEServer;import java.util.Arrays;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;/*** DDE Server Example.** @author Alexander Kozlov*/
public class DDEServerExample
{private static final String SERVICE = "MyServer";private static final String TOPIC = "MyTopic";private static final String MY_ADVISE_ITEM = "MyAdvise";private static final String MY_REQUEST_ITEM = "MyRequest";private static final String MY_POKE_ITEM = "MyPoke";private static final List<String> ITEMS = Arrays.asList(MY_ADVISE_ITEM, MY_REQUEST_ITEM, MY_POKE_ITEM);public static void main(String[] args){try{// event to wait disconnectionfinal CountDownLatch eventStop = new CountDownLatch(1);final AtomicInteger num = new AtomicInteger(1);final DDEServer server = new DDEServer(SERVICE) {@Overrideprotected boolean isTopicSupported(String topicName){return TOPIC.equalsIgnoreCase(topicName);}@Overrideprotected boolean isItemSupported(String topic, String item, int uFmt){return isTopicSupported(topic)&& ITEMS.contains(item)&& (uFmt == ClipboardFormat.CF_TEXT.getNativeCode() || uFmt == ClipboardFormat.CF_UNICODETEXT.getNativeCode());}@Overrideprotected boolean onExecute(String command){System.out.println("onExecute(" + command + ")");if ("stop".equalsIgnoreCase(command))eventStop.countDown();return true;}@Overrideprotected boolean onPoke(String topic, String item, String data){System.out.println("onPoke(" + topic + ", " + item + ", " + data + ")");return true;}@Overrideprotected boolean onPoke(String topic, String item, byte[] data, int uFmt){System.out.println("onPoke(" + topic + ", " + item + ", " + data + ", " + uFmt + ")");return false; // we do not support it}@Overrideprotected String onRequest(String topic, String item){System.out.println("onRequest(" + topic + ", " + item + ")");return item + " data " + num;}@Overrideprotected byte[] onRequest(String topic, String item, int uFmt){System.out.println("onPoke(" + topic + ", " + item + ", " + uFmt + ")");return null; // we do not support it}};System.out.println("Starting...");server.start();final Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run(){num.incrementAndGet();try {System.out.println("notify clients");server.notifyClients(TOPIC, MY_ADVISE_ITEM);} catch (DDEException e) {System.out.println("DDEClientException: " + e.getMessage());cancel();}}}, 1000L, 500L);System.out.println("Waiting for stop...");eventStop.await();System.out.println("stopping...");timer.cancel();server.stop();System.out.println("Exit from thread");}catch (DDEMLException e){System.out.println("DDEMLException: 0x" + Integer.toHexString(e.getErrorCode()) + " " + e.getMessage());}catch (DDEException e){System.out.println("DDEClientException: " + e.getMessage());}catch (Exception e){System.out.println("Exception: " + e);}}
}
如果嫌费事的,可以直接下载编译好的jar包,Download all examples and binaries,直接运行下面命令,可以启动dde server.
java -cp .;pretty-tools-JDDE-2.1.0.jar DDEServerExample
windows下可以直接通过excel的公式来订阅dde server的变量,下面以EXCEL应用程序访问数据交换的过程,新建一个EXCEL文件,在相应的单元格中(如第一行、第一列)输入如下代码:
=KSDdeserver|KSTopic!tag1,其中“KSDdeserver|KSTopic!”项是固定形式,如图所示
微信交流 6686496 资源整合,合作共赢.
java实现dde服务端,快速开启dde服务端相关推荐
- linux关闭telnet服务6,centos6 开启telnet服务
今天要做实验要用到telnet,发现用Centos6可以用telnet连接Centos7,但是Centos7不能连接Centos6, 分享一下解决方案. Centos6中的telnet服务是非独立式服 ...
- 开启服务_Nike Dunk 开启定制服务
┌ ┬ ┐ Dunk Low 即将开启 Nike By You 定制服务 毫无疑问近两年最热门的鞋款非 Nike Dunk 莫属,Nike 在 2021 年将为 Dunk 系列开启「超速状态」,仅在 ...
- LINUX7 开启telnet服务,centos7系统开启telnet服务
1.背景 因为系统为了安装,需要升级openssh,会影响ssh连接,固要安装telnet服务,否则系统连接不上,只能重装了 2.安装telnet服务 2.1.检测xinetd是否安装 rpm -qa ...
- linux系统怎么开启telnet服务,Linux系统开启TELNET服务的方法
1. sudo apt-get install xinetd telnetd 2. 安装成功后,系统也会有相应提示(好象7.10才有,6.10就没看到) sudo vi /etc/inetd.conf ...
- php设置对ws的请求不拦截,phpsocket服务端能不能在网页端开启?而不是只能用CLI模式开启...
最近在做基于php socket的聊天程序,但是遇到了个问题: 开启ws端口只能在CMD下用php server.php的方式来开启端口,并不能关闭该CMD命令行窗口,一旦关闭就断开了socket连接 ...
- linux内核开启ssh,linux开启ssh服务
本文概略:1)ubuntu发行版开启ssh.2)centos发行版开启ssh 1.ubuntu发行版安装/开启ssh服务 1.1 安装ssh服务端 sudo apt-get install opens ...
- 制作.bat文件快速启动Mongo服务
在开发中,可以通过制作mongo.bat 文件来快速开启mongo服务,以节省时间.(一下针对Windows平台) 步骤如下: 1. 在桌面上新建一个空的mongo.bat 文件. 2. 使用文本 ...
- 泰坦科技MT4平台搭建提供一站式白标方案 快速开启外汇经纪业务
众所周知,外汇市场是全球最大的金融市场,而利用白标技术成为外汇服务提供商是很多人选择运营外汇业务的第一步.相对于外汇主标需要购买整套系统和独立服务器这样的高额成本,搭建一个白标平台要容易的多,也可以相 ...
- win8系统怎么开telnet服务器,怎么开启telnet服务 - 卡饭网
Win7旗舰版无法使用远程登录如何开启telnet服务 Win7旗舰版无法使用远程登录如何开启telnet服务 Telnet协议是TCP/IP协议中的其中一个协议,是Internet远程登陆服务的标准 ...
- 自动和手动开启无障碍服务的方式
自动开启 条件:系统应用 方式:通过Settings.Secure.putString. 代码如下:最好在开启和关闭前进行判断当前无障碍服务是否已经开启. //自动开启无障碍服务 private fu ...
最新文章
- 016_Redis集群的删除和添加节点
- ubuntu+终端不能启动mysql数据库_强制重启Ubuntu服务器后Mysql无法启动
- 『设计模式』备忘录模式(memento)下象棋,我就想悔棋怎么办
- 因果关系固定搭配知识库项目CausalCollocation
- kafka window 启动_Apache Flink结合Kafka构建端到端的Exactly-Once处理
- android 9.0华为荣耀,华为9款旗舰尝鲜Android 9.0 还不快去升
- 开发整理笔记Markdown基本使用
- vlfeat工具包的MATLAB安装
- 单片机c语言fft函数,单片机ADC采样FFT计算试验
- X-Brain:如此美丽可爱的大脑工作原理
- 免费linux脚本下载地址,shell脚本 下载|Linux shell脚本 v免费版下载 - D9下载站
- Android之获取外部存储空间解释
- 2019.9.2选择更新分离版
- HEX转BCD ,HEX转ASCII,HEX转DEC 算法合集 | C语言实现
- PT2262 433MHZ超再生遥控电路如何用STM软解码代替TP2272(省去PT2272)
- 树与图在索引上的区别
- java删除奇数文件_java,奇数性的问题
- (附源码)小程序 图书管理系统 毕业设计 250858
- 机器学习----纯手撸线性回归代码
- 连续系统的卷积积分与离散系统的卷积和
热门文章
- [转] 英语不规则动词表
- H264视频传输、编解码----H264数据结构
- 百度地图API获取公交路线及站点数据
- Python学习笔记---sep用法
- 【IoT】电子产品如何做防静电 ESD 设计
- linux 微信客户端 mojo,QQ微信一体客户端教程
- 使用ret2reg攻击绕过地址混淆
- linux下容器find函数,你知道Linux系统中find命令的使用方法吗?
- java迷宫注释_写下走迷宫游戏的注释
- 台式机计算机里所有文档都打不开,电脑里的所有word文档都打不开,如何处理掉?...