if GlobalFindAtom('ZDH生产安全检查远程核查系统')=0 then
begin
GlobalAddAtom('ZDH生产安全检查远程核查系统')
end
else
begin
// ShowMessage('已经运行了巡更巡检数据发送系统');
Close;
exit;
end;================================
有劳大家来解释这个函数一下,不太明白是怎么回事?
begin
GlobalAddAtom('ZDH生产安全检查远程核查系统')
end
else
begin
// ShowMessage('已经运行了巡更巡检数据发送系统');
Close;
exit;
end;================================
有劳大家来解释这个函数一下,不太明白是怎么回事?
解决方案 »
- 关于用delphi开发ocx控件,无法调用公开的方法
- 关于cxGird数值精度显示
- 散分专贴五
- 画图程序,如何表现选中图形和选中的图形被拖动的过程
- 昨天去一个软件公司面试题目, 虽然不难可是题量还是比较大. 看你们能做多少, 不能上机调试都是笔试的.
- 征求:用程序把ACCESS数据导入SQL中的好办法
- delphi 向数据库写数据,为什么时好时坏,谢谢,我只有5分了,不好意思!
- 组件服务中的Application应用程序在系统管理组件时起什么作用
- sql更新语句,使当前记录值等于接着三条记录的值
- 简单的问题,但分数很高(急,急,急......)。
- 程序在出错时自动关闭...找不到原因...
- 被wav合并,分割困扰的兄弟看过来!!!
向全局原子添加一个255个字节以内的字符串
---------------------------------------------
GlobalFindAtom//这里就是
来检查是否已经存在该全局原子
---------------------------------------------
用GlobalDeleteAtom函数
删除添加的全局原子
让程序只运行一个实例(Delphi篇)
-------------------------------------------
全局原子法 我们也可以利用向系统添加全局原子的方法,来防止多个程序实例的运行。全局原子由Windows 系统负责维持,它能保证其中的每个原子都是唯一的,管理其引用计数,并且当该全局原子的引用计数为0时,从内存中清除。我们用GlobalAddAtom 函数向全局原子添加一个255个字节以内的字符串,用GlobalFindAtom来检查是否已经存在该全局原子,最后在程序结束时用GlobalDeleteAtom函数删除添加的全局原子。示例如下:
Uses Windows
const iAtom=‘SingleApp’;
begin
if GlobalFindAtom(iAtom)=0 then
begin
GlobalAddAtom(iAtom);
Application.Initialize;
Application.CreateForm(TForm1,Form1);
Application.Run;
GlobalDeleteAtom(GlobalFindAtom(iAtom));
end
else
MessageBox(0,‘You can not run a second copy of this App’,‘’,mb_OK);
end.
利用全局原子的引用计数规则,我们还可以判断当前共运行了该程序的多少个实例:
var i:Integer;
begin
I:=0;
while GlobalFindAtom(iAtom)<>0 do
begin
GlobalDeleteAtom(GlobalFindAtom(iAtom));
i:=i+1;
end;
ShowMessage(IntToStr(I));
end;
以上几种方法在笔者的Delphi 4.0,中文Windows95下通过。