pb程序运行突然很慢

pb程序运行突然很慢,第1张

您好,您的PB程序运行突然慢的原因可能有很多,可能是由于程序本身的问题,也可能是由于硬件设备的问题,或者是网络环境的问题。首先,您可以检查程序本身,看看是否有任何不必要的代码,或者是否有任何不必要的程序运行,这些都可能会影响程序的运行速度。其次,您可以检查硬件设备,看看是否有任何硬件设备出现问题,或者是否有任何硬件设备占用过多的资源,这些都可能会影响程序的运行速度。最后,您可以检查网络环境,看看是否有任何网络问题,或者是否有任何网络设备占用过多的资源,这些都可能会影响程序的运行速度。总之,您可以通过以上方法来检查程序的运行速度,以便找出程序运行缓慢的原因,并采取相应的措施来解决问题。

您正在看的Powerbuilder教程是:在PB中调用外部程序并判断其运行结束

在PB中经常要调用外部程序并等待此程序运行结束后显示相关信息 如我们要备份Adaptive Server Anywhere 数据库 在备份结束后显示 备份完成! 的提示信息 如果在调用备份程序dbbackup后马上用messagebox显示提示信息 那么程序运行时则会出现这种情况 dbbackup备份程序还在运行 备份完成! 的提示就已经显示了 显然不符合我们的设想 对于这种情况 我们可以借助API函数FindWindowA() IsWindow()和PB本身函数yield()来解决

声明API函数

Function long FindWindowA (String lpClassName String lpWindowName ) Library user dll Function boolean IsWindow (Long hwnd ) Library user dll

调用

ulong ll_handle int li_loop

SetPointer(HourGlass!) //设置鼠标指针 //运行备份数据库程序dbbackup 并使其最小化 run( dbbackup c ~ uid=dbapwd=sqldbf=D:\Sybase\Adaptive Server Anywhere \asademo db~ d:\backup Minimized!)

lishixinzhi/Article/program/PB/201311/24551

位 *** 作系统中 可以用两种方法实现

首先在global external functions声明外部函数如下

FUNCTION long FindWindowA( ulong Winhandle string wintitle ) Library ″user ″

然后在application的 Open 事件中加入如下代码

ulong l_handle lu_class

string ls_name

ls_name = ″我的系统″ // 此处ls_name为系统主窗口的标题Title

l_handle = FindWindowA(lu_class ls_name)

if l_handle >then

MessageBox(″提示信息″ ″应用程序″ + This AppName + ″已经运行 不能多次启动!″)

Halt Close

else

open(w_main) // 此处为系统主窗口

end if

这种方法是PowerBuilder联机帮助中的一个例子 是以系统主窗口的标题Title作为判别依据 若有其它与此Title同名应用程序在运行 再想启动此程序也会报应用程序已经运行 你可以将Title设为 计算器 然后启动Windows附件中计算器程序 再运行你的PB应用程序试试

声明外部函数

function ulong CreateMutexA (ulong lpMutexAttributes int bInitialOwner ref string lpName) library ″kernel dll″

function ulong GetLastError () library ″kernel dll″

然后在application的 Open 事件中加入如下代码

ulong ll_mutex ll_err

string ls_mutex_name

if handle (GetApplication () false) <>then

ls_mutex_name = this AppName + char ( )

ll_mutex = CreateMutexA ( ls_mutex_name)

ll_err = GetLastError ()

if ll_err = then

// 程序已经运行

MessageBox (″提示信息″ ″程序已经运行了!″)

Halt close

else

// 程序未运行

open(w_main)

end if

else //开发模式

open(w_main)

end if

这种方法必须在应用程序编译成可执行文件 exe后才有效

       编辑推荐

       ASP NET开发培训视频教程

lishixinzhi/Article/program/PB/201311/24617


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11710756.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存