学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> PowerBuilder >> PB调用外部程序及判断其完成的方法


PB调用外部程序及判断其完成的方法



关键:API函数FindWindowA和IsWindow

在PB中常常需要运行一些外部的程序或命令,并等待其执行完成后,才接下来运行剩余的代码。我们可以有两种方法:

先定义全局外部函数:

Function long ShellExecuteA (long hwnd, string lpOperation ,String lpFile, String lpParameters, String lpDirectory, Long nShowCmd) Library "shell32.dll"

Function long FindWindowA (String lpClassName , String lpWindowName ) Library "user32.dll"

Function boolean IsWindow (Long hwnd ) Library "user32.dll"

第一种方式用Run() 函数,可在窗口上建立按扭,clicked事件中包含如下Script:

ulong ll_handle

int li_loop

SetPointer(HourGlass!)

//最小化执行xxx.bat

run("xxx.bat", Minimized!)

//循环到窗口打开,根据程序执行打开所需的时间设定li_loop的循环次数,可预留长一些。

for li_loop= 1 to 10000

ll_handle = FindWindowA("tty","xxx")

yield() //函数作用详见“PB技巧”中《Pb中Yield()函数的使用》

if ll_handle <> 0 then

exit

end if

next

//一直循环到窗口关闭

Do While isWindow(ll_handle)

Yield()

Loop

//应用执行完成

messagebox(‘ok’, ‘执行完成!’)

这种方法的缺点是不能隐藏外部应用程序窗口,只能最小化。

第二种方式用API函数,可以隐藏应用程序的窗口,但是调用bat批处理命令时需要先建立一个PIF文件指定执行完成后关闭窗口,否则窗口不会自行关闭。可在窗口上建立按扭,clicked事件中包含如下Script:

uint lu_return

ulong ll_handle

int li_loop

string ls_Path

SetPointer(HourGlass!)

lu_return = ShellExecutea(handle(parent), "open", "xxx.pif", "", ls_path, 0)

//最后一个参数改为 4,可以显示执行情况

if lu_return > 32 then

for li_loop= 1 to 10000

ll_handle = FindWindowA("tty","xxx")

yield()

if ll_handle <> 0 then

exit

end if

next

//一直循环到窗口关闭

Do While isWindow(lu_handle)

Yield()

Loop

//应用执行完成

MessageBox("ok", "执行完成!")

Else

//error

messagebox("错误", "调用外部应用程序不成功,请检查应用程序路径!")

end if

技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"PB调用外部程序及判断其完成的方法"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 PB调用外部程序及判断其完成的方法 相关内容
Google搜索中 PB调用外部程序及判断其完成的方法 相关内容
雅虎中 PB调用外部程序及判断其完成的方法 相关内容
Sogou搜索中 PB调用外部程序及判断其完成的方法 相关内容

相关软件 最新回复帖子:

·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效
·用Photoshop通道将模糊肖像照片清晰化
·照片处理:Photoshop修复残破照片
·PS CS2新增形状模糊滤镜绘制花布图案


  相关软件 PB调用外部程序及判断其完成的方法相关文章
几种常见数据库比较 使用SQL产生BCP命令快速备份/恢复你所有数据
使用install shield制作PB6程序的安装盘 (一)至(五) 使用install shield制作PB6程序的安装盘(五)
使用install shield制作PB6程序的安装盘(六) 使用install shield制作PB6程序的安装盘(七)
使用install shield制作PB6程序的安装盘(八) 使用install shield制作PB6程序的安装盘(九)
使用install shield制作PB6程序的安装盘(十) 使用install shield制作PB6程序的安装盘(十一)
利用剪贴板实现PB与Excel的中文数据传输 在PB6.5中利用Win9X的OCX控件美化程序界面
在PB应用中收发电子邮件 关于PB应用程序的2000年问题
PowerBuilder 的 大 文 本 数 据 打 印 在PB 中 巧 用 下 拉 数 据 窗 口
在PB中应用灵活多样的排序 PB修改数据库表结构的技巧二则
深入了解PowerBuilder的数据窗口 PowerBuilder数据窗口中按钮的封装