位操作系统中可以用两种方法实现
首先在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(″提示信息″ ″应用程序″ + ThisAppName + ″已经运行不能多次启动!″)
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 ″kerneldll″
function ulong GetLastError () library ″kerneldll″
然后在application的 Open 事件中加入如下代码
ulong ll_mutex ll_err
string ls_mutex_name
if handle (GetApplication () false) <> then
ls_mutex_name = thisAppName + 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开发培训视频教程
Microsoft NET框架程序设计视频教程