详细介绍:vb.net编写DDE(Dynamic Data Exchange)服务器

news/2025/10/26 14:02:45/文章来源:https://www.cnblogs.com/slgkaifa/p/19166816

详细介绍:vb.net编写DDE(Dynamic Data Exchange)服务器

  • 编写DDE(Dynamic Data Exchange)服务器可以实现在VB(Visual Basic)中与其他应用程序进行数据交换。下面是一些编写DDE服务器的基本步骤:
      1. 引用必要的库文件
        在VB中,首先需要引用Microsoft.VisualBasic命名空间,以及Microsoft.VisualBasic.DDE命名空间,以便使用相关的类和方法。

      2. 创建并配置DDE服务器对象
        使用Microsoft.VisualBasic.DDE命名空间中的DdeServer类,可以创建DDE服务器对象。在创建对象之后,需要对服务器对象进行一些基本的配置,如设置服务器名称和主题。

      3. 添加处理程序并响应DDE请求
        使用DdeServer对象的AddTopic方法,可以向服务器添加主题,并指定主题的名称和请求处理程序。请求处理程序是当DDE客户端发送请求时,服务器对请求进行响应的代码块。

      4. 编写处理程序的逻辑
        在请求处理程序中,可以编写相应的逻辑代码来处理DDE请求。根据不同的请求类型,可以执行不同的操作,如读取数据、写入数据或执行特定的功能。

      5. 启动DDE服务器
        使用DdeServer对象的Start方法,可以启动DDE服务器,使其开始监听来自DDE客户端的请求。

      6. 监听和处理DDE请求
        在服务器启动后,可以使用DdeServer对象的DoEvents方法来监听和处理来自DDE客户端的请求。这个方法会在执行期间不断轮询请求,并将其分发给相应的主题和请求处理程序。

      7. 响应并发送数据
        在请求处理程序中,可以通过DdeServer对象的Advise、Execute和Poke方法来响应并发送数据给DDE客户端。这些方法可以用来读取、写入和执行数据操作。

      8. 停止DDE服务器
        当DDE服务不再需要时,可以使用DdeServer对象的Stop方法来停止服务器。

      注意事项:
      在编写DDE服务器时,需要考虑服务器的稳定性和安全性。建议对数据的读取和写入进行合适的验证和保护,以防止非法操作和数据泄漏。

      总结:
      通过上述步骤,可以用VB编写DDE服务器,实现与其他应用程序之间的数据交换和通信。编写DDE服务器需要清晰的逻辑思维和熟练的编程技巧,同时还需要对DDE协议和相关API的理解。

      赞同1年前0条评论

    • 飞飞

      Worktile&PingCode市场小伙伴

      如何用VB编写DDE服务器

      1. 了解DDE(动态数据交换):DDE是一种Windows操作系统中用于在不同应用程序之间传递数据的机制。DDE服务器允许其他应用程序通过DDE进行数据交换。在开始编写DDE服务器之前,首先要了解DDE的基本概念和工作原理。

      2. 创建一个VB项目:在Visual Basic中,创建一个新的VB项目作为DDE服务器的容器。在VB的开发环境中,选择“标准EXE”项目模板,然后点击“确定”以创建新项目。

      3. 添加DDE代码:在VB的代码编辑器中,编写DDE服务器的代码。首先,需要引入DDE库文件。在代码的头部,添加以下代码行:

        Imports System.Windows.Forms
        Imports System.Runtime.InteropServices
        Public Class Form1Inherits System.Windows.Forms.Form

        接下来,在代码的类中,添加以下DDE相关的函数和变量:

        Dim hConv As Integer
        Dim hSzItem As Integer
        Dim hConvList As Integer
        
        Public Shared Function DdeInitialize(ByVal pidInst As Integer, ByVal pfncb As Integer, ByVal afCmd As Integer, ByVal ulRes As Integer) As Integer
        End Function
        
        Public Shared Function DdeUninitialize(ByVal idInst As Integer) As Integer
        End Function
        
        Public Shared Function DdeCreateStringHandle(ByVal idInst As Integer, ByVal psz As String, ByVal iCodePage As Integer) As Integer
        End Function
        
        Public Shared Function DdeConnect(ByVal idInst As Integer, ByVal hszService As Integer, ByVal hszTopic As Integer, ByVal pCC As IntPtr) As Integer
        End Function
        
        Public Shared Function DdeDisconnect(ByVal hConv As Integer) As Integer
        End Function
        
        Public Shared Function DdeClientTransaction(ByVal pData As IntPtr, ByVal cbData As Integer, ByVal hConv As Integer, ByVal hszItem As Integer, ByVal wFmt As Integer, ByVal wType As Integer, ByVal dwTimeout As Integer, ByRef pdwResult As Integer) As IntPtr
        End Function
        
        Public Shared Function DdeFreeStringHandle(ByVal idInst As Integer, ByVal hsz As Integer) As Boolean
        End Function
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim idInst As IntegeridInst = DdeInitialize(0, 0, 0, 0) ' 初始化DDE库
        End Sub
        Private Sub Form1_Closed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.ClosedDdeUninitialize(idInst) ' 关闭DDE库
        End Sub

        上述代码中,DdeInitialize()函数用于初始化DDE库,DdeUninitialize()函数用于关闭DDE库。DdeCreateStringHandle()函数用于创建一个DDE字符串句柄,DdeConnect()函数用于建立与DDE服务的连接,DdeDisconnect()函数用于断开与DDE服务的连接,DdeClientTransaction()函数用于向DDE服务请求数据。最后,DdeFreeStringHandle()函数用于释放已经创建的DDE字符串句柄。

      4. 处理DDE消息:在VB代码中添加一个函数(Sub)来处理DDE消息。在这个函数中,根据接收的DDE消息进行相应的数据处理和回应。例如,可以使用HandleDDEMessage()函数来处理收到的DDE消息:

        Protected Overrides Sub WndProc(ByRef m As Message)If m.Msg = WM_DDE_ACK ThenDim idInst As Integer = 0Dim hszSvc As Integer = DdeCreateStringHandle(idInst, "MyDdeService", 0)Dim hszTopic As Integer = DdeCreateStringHandle(idInst, "MyDdeTopic", 0)hConv = DdeConnect(idInst, hszSvc, hszTopic, IntPtr.Zero)DdeFreeStringHandle(idInst, hszSvc)DdeFreeStringHandle(idInst, hszTopic)End IfIf m.Msg = WM_DDE_EXECUTE ThenDim sData As String = Marshal.PtrToStringUni(m.LParam)' 进行数据处理' ...' 返回数据Dim pData As IntPtr = Marshal.StringToHGlobalUni("Response Data")Dim cbData As Integer = Encoding.Unicode.GetBytes("Response Data").Length + 2Dim pdwResult As Integer = 0Dim pResult As IntPtr = DdeClientTransaction(pData, cbData, hConv, hSzItem, CF_UNICODETEXT, XTYP_EXECUTE, DEFAULT_TIMEOUT, pdwResult)Marshal.FreeHGlobal(pData)End IfMyBase.WndProc(m)
        End Sub

        上述代码中,HandleDDEMessage()函数首先判断收到的DDE消息是否为WM_DDE_ACK消息(表示与DDE服务建立连接的确认消息),如果是,则通过调用DdeConnect()函数建立与DDE服务的连接。然后,判断收到的DDE消息是否为WM_DDE_EXECUTE消息(表示执行DDE命令的消息),如果是,则进行数据处理并返回数据。

      5. 编写DDE服务器的其他功能:根据需要,可以添加其他功能到DDE服务器中。例如,可以添加一个按钮用于启动DDE服务器,添加一个文本框用于显示接收的DDE消息等。根据具体需求,通过VB的图形界面和事件编程来实现这些功能。

      以上是使用VB编写DDE服务器的基本步骤和关键代码片段。编写DDE服务器需要理解DDE的特性和工作原理,并掌握相应的编程技巧。编写完整的DDE服务器还需要进行更多的代码编写和测试工作,以满足具体的需求和实际的应用场景。

      赞同1年前0条评论

    • worktile

      Worktile官方账号

      使用VB编写DDE(动态数据交换)服务器的步骤如下:

      1. 创建一个新的VB项目
        打开Visual Studio并选择创建新的VB项目。在弹出窗口中选择"Windows Forms Application"。

      2. 添加一个DDE服务器控件
        在“工具箱”中找到DDE控件。选择并将其拖到窗体上。

      3. 设置DDE服务器属性
        在窗体的属性窗口中,找到DDE控件并设置以下属性:

        • DdeServer控件的Name属性:设置DDE服务器的名称,可以自定义。
        • DdeServer控件的ServiceName属性:设置DDE服务的名称,也可以自定义。
      4. 添加事件处理程序
        选择DDE服务器控件并在属性窗口的“事件”标签中找到相应的事件(例如Advise、Poke、Request等)。选择这些事件并双击以添加对应的事件处理程序。

      5. 编写DDE服务器代码
        在事件处理程序中编写DDE服务器的逻辑代码。以下是一些常见的DDE事件和相应的代码示例:

      • Advise事件:在此事件中,DDE客户端将请求订阅特定的DDE项。在事件处理程序中,您可以指定要发送给客户端的数据。例如:
      Private Sub ddeServer_Advise(ByVal sender As System.Object, ByVal e As AxMSDDELib._DDDEServerEvents_AdviseEvent) Handles ddeServer.Advise' 客户端订阅的DDE项Dim item As String = e.item' 通知客户端的数据Dim data As String = "这是一条DDE数据"' 发送数据给客户端ddeServer.Unadvise("", item) '取消先前的订阅ddeServer.Advise("", item, data)
      End Sub
      • Poke事件:在此事件中,DDE客户端将请求向DDE项写入数据。在事件处理程序中,您可以读取该数据并做出相应的处理。例如:
      Private Sub ddeServer_Poke(ByVal sender As System.Object, ByVal e As AxMSDDELib._DDDEServerEvents_PokeEvent) Handles ddeServer.Poke' 客户端写入DDE项的数据Dim data As String = e.data' 处理接收到的数据' ...
      End Sub
      • Request事件:在此事件中,DDE客户端将请求读取DDE项的数据。在事件处理程序中,您可以返回要发送给客户端的数据。例如:
      Private Sub ddeServer_Request(ByVal sender As System.Object, ByVal e As AxMSDDELib._DDDEServerEvents_RequestEvent) Handles ddeServer.Request' 客户端请求的DDE项Dim item As String = e.item' 返回给客户端的数据Dim data As String = "这是一条DDE数据"' 发送数据给客户端ddeServer.Poke("", item, data)
      End Sub

      以上是常用的一些事件处理程序,您可以根据具体的业务需求添加其他DDE事件和相应的代码。

      1. 构建和调试
        点击Visual Studio工具栏上的“生成”按钮进行构建,并调试您的DDE服务器。您可以在调试过程中测试和验证DDE功能。

      通过以上步骤,您就可以使用VB编写一个简单的DDE服务器。根据您的需求,您可以进一步扩展和改进代码来实现更多功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年内窥镜电缆线厂家权威推荐榜:B超线内窥镜电缆线,专业医疗线缆制造与定制化解决方案精选

2025年内窥镜电缆线厂家权威推荐榜:B超线内窥镜电缆线,专业医疗线缆制造与定制化解决方案精选 随着医疗影像技术的快速发展,内窥镜电缆线作为医疗设备信号传输的关键组件,其性能和质量直接影响诊断结果的准确性。在…

网络流题单

P1343:最大流 模板。 P2740:最大流 模板,文不成文,读题有点难度。 P2936:最大流、哈希 几乎是模板。 P2857:最大流、暴力/二分查找 题干文不成文……复杂度考察题。观察范围,发现暴力枚举+网络流的最坏复杂度是…

无情可破万局

现在的我。我非常喜欢。是的,我开始明白。  “无情可破万局”   --------至自己

2025 年 10 月门窗十大品牌综合实力权威推荐榜单,产能、专利、环保三维数据透视

2025 年 10 月门窗十大品牌综合实力权威推荐榜单,产能、专利、环保三维数据透视引言2025 年 10 月门窗十大品牌综合实力权威推荐榜单由中国建筑金属结构协会、全国工商联家具装饰业商会联合发布。本次榜单突破传统性能…

2025年盐趣科研教育深度解析:从录取数据看科研背景如何撬动名校门槛

引言 本文以“录取数据与科研背景关联度”为核心维度,为计划申请海外名校的学生与家长提供一份可量化、可对照的客观参考,避免在背景提升环节盲目投入。 背景与概况 盐趣科研教育(ViaX,官网www.viax.org)成立于20…

2025年10月膜结构厂家推荐榜:双资质企业对比评测 ,

把“膜结构”三个字敲进搜索框的那一刻,你大概率正被以下场景包围:市政广场要赶工期做景观遮阳,业主方要求“既要造型飘逸又要十年不塌”;学校体育馆想把旧网球场改造成全天候气膜馆,预算却被砍了15%;或是景区负…

2025 年 10 月门窗十大品牌综合实力权威推荐榜单,聚焦资质、案例、售后的十家机构深度解读

2025 年 10 月门窗十大品牌综合实力权威推荐榜单由中国建筑金属结构协会、全国工商联家具装饰业商会联合发布,十家行业权威机构同步参与解读。本次榜单突破传统评选框架,以《铝合金门窗》(GB/T 8478-2008)为技术基…

2025 年 10 月门窗十大品牌综合实力权威推荐榜单,高性能,稳定性强的行业优选

2025 年 10 月门窗十大品牌综合实力权威推荐榜单由中国建筑金属结构协会、全国工商联家具装饰业商会联合发布。本次榜单以 “高性能、强稳定” 为核心评选导向,突破传统单一维度评估,以《铝合金门窗》(GB/T 8478-20…

2025年上海久宙集团:深度解析技术护城河与行业话语权

引言 本文从“技术领先与专利护城”这一核心维度切入,为读者提供一份关于上海久宙集团技术竞争力的客观参考。通过拆解其专利布局、研发平台、标准制定、质量认证及产业协同,帮助采购方、投资机构与同行判断其可持续…

2025年欧那德语深度解析:十二年在线小班模式全透视

引言 本文聚焦“教学服务闭环”这一核心维度,拆解欧那德语自2013年成立以来如何把“教、评、练、测”四个环节嵌进线上小班课,为潜在学习者提供一份可验证、可复盘的客观参照。 背景与概况 欧那德语成立于2013年,是…

在Azure DevOps Server中分析Git代码库的健康状况

在Azure DevOps Server中分析Git代码库的健康状况1. 概述开发团队使用Git作为版本管理工具,需要经常关注Git代码库的状况,例如分析代码库占用磁盘空间大小、开发人员提交和推送代码的频次、分支和标记的数据量、为合…

2025 年 10 月蒸汽发生器厂家最新推荐,聚焦跨平台能力与售后体系的实用指南

在工业数字化转型背景下,蒸汽发生器的跨平台适配能力(如与企业 MES 系统、能源管理平台对接)及完善的售后体系,成为企业保障生产效率的关键。本次推荐依据中国工业节能与清洁生产协会 2025 年 10 月《蒸汽发生器跨…

2025年唐卡装饰权威深度解析:家装行业新格局和品质承诺

本文从“供应链与自营体系”这一核心维度切入,结合公开资料与行业数据,为正在比对装修方案的读者提供一份可验证、可回溯的客观参考。若您关心的是“材料从哪来、谁来管、价格如何压降”,请直接阅读第三、四部分;若…

2025年欧那德语:深度解析其在线教学体系与师资配置

引言 本文将从“师资与教学服务”这一核心维度出发,对欧那德语进行拆解式盘点,为计划报读在线德语课程的学习者提供一份可量化的客观参考。 背景与概况 欧那德语成立于2013年,是一所专为德语学习者提供在线德语学习…

2025年欧那德语权威解析:课程体系与师资全景盘点

引言 本文聚焦“课程体系与师资”这一核心维度,对欧那德语进行深度拆解,为计划系统学习德语、准备留学或职场进阶的读者提供一份可验证、可对照的客观参考。 背景与概况 欧那德语成立于2013年,是一所专为德语学习者…

2025 年 10 月蒸汽发生器厂家最新推荐,聚焦高端定制需求与全案交付能力

随着工业生产场景日益多元化,蒸汽发生器的高端定制需求与全案交付能力成为企业采购关键指标。本次推荐依据中国工业锅炉协会 2025 年 10 月发布的《蒸汽发生器定制化服务测评报告》,采用 “三维度测评法”:定制能力…

2025 年 10 月蒸汽发生器厂家最新推荐,精准检测与稳定性能深度解析

蒸汽发生器的运行稳定性直接影响企业生产连续性,而精准检测是保障设备性能达标的核心前提。本次推荐依据中国特种设备检测研究院 2025 年 10 月《工业蒸汽发生器性能测评报告》,采用 “三维精准测评法”:性能检测维…

2025年10月敏感肌产品推荐榜:淡斑修护面霜排名一览

入秋以后,门诊里因“美白猛药”翻车而红脸脱皮的敏感肌患者明显增多。很多人原本只想把暑假晒出的色斑压下去,结果用了高浓度酸类或高浓度VC,屏障受损,反黑更严重。皮肤科共识指出,敏感肌黑色素代谢本就脆弱,外界…

LLM-提示词(二)

什么是token? 大模型中token是指一段文本被分词后的处理单元,以汉字为例,分词后有可能是一个汉字,也可能是两个汉字,例如:我们是中国人,就会被分为“我们”“是”“中国”“人”,不同的模型token的长度是不一样…

LangChain简单介绍

LangChain是一个开源的大模型应用开发框架,为什么称之为框架呢?原因就是它将我们构建大模型应用的通用步骤进行了封装,使其模板化,通用化,这就使我们在构建大模型应用时没必要对那些通用的东西重复造轮子,减少了…