三、防止多次载入应用程序实例
某些应用程序需要禁止用户载入多次实例。比如,控制面板中的应用程序,不管用户打开多少次,同一应用程序只有一个实例,而且每一次试图重复打开都会自动激活已经存在的实例。
Windows API 提供了函数FindWindow,可以是应用程序在启动时检查自己是否已经存在。
该函数在Delphi中的语法是:
function FindWindow(lpClassName: PChar, lpWindowName: PChar): HWND;
其中,参数lpCalssName 是要查找的窗口的类的名称,参数lpWindowName是要查找的窗口的标题(Caption)。
如果找到了相应的窗口实例,将返回一个非0 的该窗口句柄的整型值,否则返回0
。因此,只要判断应用程序的主窗口(或者伴随着应用程序存在而存在的窗口)是否存在就可以判断是否已经有实例存在了。
例如:
H := FindWindow('TForm1', nil);
if H = 0 then begin
ShowMessage('没有发现相同的应用程序实例。');
//加入加载应用程序的语句
//...
end else begin
ShowMessage('应用程序已经加载。');
SetActiveWindow(H);
end;
其中,参数lpWindowName的位置以Delphi保留字nil 代替,是因为窗口的标题可能在应用程序中是变化的。Windows API 函数SetActiveWindow 用于指定活动窗口。转自bbs.sendsms.cn
Delphi中调用API函数经验点滴(三)
精选 转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
javascript中调用delphi函数
以下是test.htm页的内容首先定义一个插件对象 <object id="Mapupload" name="Mapupload" width="0" height="0" classid="clsid:045FA9B9-B373-
职场 JavaScript 休闲 javascript中调用delphi函 -
php经验点滴
$_SERVER[“HTTP_REFERER“]可以得到是有哪个页面提交的请求。$url = $_SERVER[SERVER_NAME].$_SERVER[PHP_SELF];$
php server header url string -
Eclipse开发经验点滴
1.Webservice 要注意的是:必须建立在web项目基础上。比如首先建立一个Dynamic web project,然后在project中建
eclipse webservice java web jsp