在PowerBuilder7.0中应用DDE技术一例

原创 2001年09月08日 16:58:00
 

在使用PowerBuilder7.0开发用户自己的应用程序时,需要用到一些在Windows操作系统环境中已有的文件格式或操作功能,如果一切从头开始,不仅浪费大量的时间和精力,而且完成的功能也没有Windows中已有的完善。如何利用Windows中已有的大量的应用程序和应用程序开发组件呢?Windows提供了两种用于应用程序继承的方法:DDEOLE<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

DDE(动态数据交换)在Windows操作系统是一种基于消息的协议,用来在不同的应用程序之间交换信息。在PowerBuilder中不仅提供了一套用来包装Windows函数的DDE函数,而且提供了一种易于实现的接口。

下面以在PowerBuilder7.0下开发的应用程序中调用Microsoft Word编辑文本文件为例说明如何调用Windows中的应用程序:

PowerBuilder7.0中利用DDE的方法调用Windows程序相当于把Windows看成服务器,而把在PowerBuilder7.0下开发的应用程序看成客户机,在客户机中调用服务器程序可用Run函数。该函数的语法为:

Run ( string {, windowstate } )

其中string是被调用的应用程序,其中还可以包含被调用的应用程序运行所需的参数;windowstate为可选项,表示被调用的应用程序的启动状态,可取值有:Maximized!(最大化),Minimized!(最小化)和Normal!(正常)。

如果该函数执行成功则返回1,执行失败则返回-1,如果赋给该函数的参数为NULL,则返回NULL

使用OpenChannel函数在两个应用程序之间建立连接。该函数的语法为:

OpenChannel ( applname, topicname {, windowhandle } )

其中applname表示被调用的应用程序名。topicname表示被调用的应用程序的主题名,如在Microsoft Word中可以取值为已打开的文档名。windowhandle为可选项,表示被调用的应用程序的窗口句柄。

如果该函数执行成功则返回建立的通道的句柄,执行失败则返回-1,如果通道句柄为NULL,则返回-9

下面是调用Microsoft Word的代码,如果安装了Microsoft Word,则运行winword.exe,否则运行notepad.exe

int vi_rtn

string vs_prog,vs_path

// 从注册表中获取Microsoft Word的安装路径,保存在vs_path

RegistryGet("HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/App Paths/Winword.exe","Path",RegString!,vs_path)

//判断是否安装了Microsoft Word

if vs_path<>"" then

// vs_prog保存winword的有关参数

//如果被调用的应用程序有运行参数,参数和应用程序名之间要有空格

      vs_prog = vs_path+"winword.exe"

//启动winword

      vi_rtn = run(vs_prog,normal!)

  if vi_rtn = -1 then

        MessageBox("错误","无法运行程序!")

     return

  else

//建立通道

        OpenChannel("winword","c:/my documents/example.doc")

  end if

else

   vs_prog = "c:/windows/notepad.exe"

      vi_rtn = run(vs_prog,normal!)

  if vi_rtn = -1 then

        MessageBox("错误","无法运行程序!")

     return

  else

        OpenChannel("notepad","c:/my documents/example.txt")

  end if

end if

 

用类似的方法就能在用PowerBuilder7.0开发的用户自己的应用程序中调用Windows系统中包含的大量应用程序,能够大大提高用户开发的效率,提升所开发的应用程序的性能。

windows 进程通信(使用DDE)

转载:http://blog.163.com/lzf_edu_cn/blog/static/3235151220083144214512/ 动态数据交换(Dynamic Data Exchange,...
  • u012252959
  • u012252959
  • 2015年11月02日 19:28
  • 1358

完善MS官网上DDE的例子

本文介绍了如何在 Visual C++ 中使用动态数据交换 (DDE),与 Excel 和 Word 进行通信。 注意: 如果可能,建议使用自动化,不 DDE,与 Excel 或 Word 进行...
  • piaopiaolanghua
  • piaopiaolanghua
  • 2014年08月11日 17:55
  • 1959

【转】VB中应用DDE

动态数据交换(dde)是windows应用程序间通讯的基本方法之一,在动态数据交换的过程中,提供数据和服务的应用程序称为服务器,请求数据或服务的应用程序则称为客户。 dde交谈是由客户程序启动的。如...
  • huanzx
  • huanzx
  • 2017年06月15日 18:09
  • 187

DDE在vb.net中的应用

李国帅(对以前的文件做些补充,顺便编辑一下。)随便罗嗦几句,自己已经好几年没有写什么东西了,而自己已经从事这一行好久了,希望能提供一些东西给大家,好与坏无所谓。 很早的时候做过DDE方面的程序,那是...
  • lgs790709
  • lgs790709
  • 2018年01月08日 18:30
  • 32

dde与opc技术的工作机制

原文: http://www.dqjsw.com.cn/dianqi/OPC/108599.html   dde与opc技术的工作机制      dde技术的工作机制   dde是为在同一台计...
  • gencheng
  • gencheng
  • 2013年07月19日 09:09
  • 1426

利用DDE实现紫金桥组态软件与各种组态软件的通讯

一、概述 工业控制现场往往会出现这种情况,各站点已经存在数据采集系统,并且各种数采软件都不同,给实现整个系统数字化造成一定的困难。微软的DDE是一种数据通讯的形式,使用共享的内存在应用程序之间进行数...
  • pinocchio_F
  • pinocchio_F
  • 2016年06月15日 08:35
  • 737

nginx性能改进一例

本文研究的是在海量静态文件下,如何提高nginx的处理能力。在静态文件数量不是很多的情况下,nginx处理静态文件的能力极快,但是在海量的静态文件下,nginx的处理能力就不那么乐观,怎么提高ngin...
  • sd4015700
  • sd4015700
  • 2014年11月13日 17:58
  • 445

共享内存和动态数据交换

仔细研究一下操作系统本身的机制,比如说内存管理、进程间通信等,越发觉得这些机制很精妙,很精深,perfect! 为了让具有依赖关系的线程或者进程协调工作,可以使用两种技术,第一种是进程间或者线程间通信...
  • u011000290
  • u011000290
  • 2015年08月31日 20:06
  • 1409

Spring Aop应用一例

起因: 做的项目,三层架构:domain层(dao)、façade层(business)、view层。View层用Extjs实现,使用SSH组合,在façade层配置了REQUIRED型事务,在do...
  • littlechang
  • littlechang
  • 2013年01月05日 10:43
  • 1324

log file sync等待超高一例

这是3月份某客户的情况,原因是服务器硬件故障后进行更换之后,业务翻译偶尔出现提交缓慢的情况。我们先来看下awr的情况。     我们可以看到,该系统的load profile信息其实...
  • lovewifelovelife
  • lovewifelovelife
  • 2014年04月20日 12:47
  • 1155
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在PowerBuilder7.0中应用DDE技术一例
举报原因:
原因补充:

(最多只允许输入30个字)