上一篇 | 下一篇

如何让应用程序只运行一次

发布: 2008-6-26 20:40 | 作者: admin | 来源: | 查看: 4次

在Powerbuilder的帮助中,Handle函数之下有一段代码,用于控制一个PB应用程序只运行一个实例,但是该段程序不能在Win 32之下使用。

下面这段代码放在Application的Open事件之中:它首先检查应用程序是否运行,若已经运行,则退出,否则打开应用程序主窗口:

IF Handle(This, TRUE) > 0 THEN

MessageBox("应用程序多次运行", This.AppName + "已经运行,你不能多次启动!")

HALT CLOSE

ELSE

Open(w_main)

END IF

---------------------------------------------------------------------------------------------------------------------------

以上代码在Win 32环境不能正常运行,这不是PB的bug,是因为PB调用的一个API函数在Win16之中有,而在Win 32中没有了这个函数。在Win 32环境下使用以下代码可完成同梓的功能:

定义一个全局外部函数:

FUNCTION ulong FindWindowA(ulong classname,string windowname) LIBRARY "user32.dll"

Application的Open事件中的代码:

boolean rtn

ulong l_handle, lu_class

string ls_name

setnull(lu_class)

ls_name = "API Name" // 将API Name换了你的主窗口的标题title

l_handle = FindWindowA(lu_class, ls_name)

if l_handle > 0 then

MessageBox("应用程序多次运行", This.AppName + "已经运行,你不能多次启动!")

Halt Close

else

open(w_main)

end if

字号: | 推荐给好友

评分:0

我来说两句