文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>全局原子应用之防止程序多开

全局原子应用之防止程序多开

时间:2010-10-09  来源:江湖一键客

全局原子

  什么叫原子表和原子函数?          什么叫原子表和原子函数?          Win32系统中,为了实现信息共享,系统维护了一张全局原子表,用于保存字符串与之对应的标志符的组合。应用程序在原子表中可以放置字符串,并接收一个16位整数值(叫做原子,即atom),它可以用来提取该字符串.放在原子表中的字符串叫做原子的名字;    关于原子表      系统提供许多原子表.每个原子表用于不同的目的;例如,动态数据交换(DDE)应用程序使用全局原子表(global atom table)与其他应用程序共享项目名称和主题名称字符串.不用传递实际的字符串,一个DDE应用程序传递全局原子给它的父进程.父进程使用原子提取原子表中的字符串。   关于对原子的操作,有一组专门的API函数:    GlobalAddAtom 在表中增加全局原子    GlobalDeleteAtom 在表中删除全局原子    GlobalFindAtom 在表中搜索全局原子    GlobalGetAtomName 从表中获取全局原子   以上内容摘自百度百科   点击下载演示工程 让我们来看一个例子吧,这是一个防止程序多开的一个例子,即限制一个程序不能打开两个或者两个以上的实例。
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  strOnce:String;
  nAtom:TAtom;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
    {这里可以随便是什么字符串,但要保证不会和全局原子表中的原子名称相同}
    {我这里使用了GUID,在Delphi快速生成一个GUID的快捷键是:Shift+CTRL+G}
    {不知道GUID的同学请参照后面的说明。}
    strOnce:='{92D5E266-E81F-4CC8-8E96-42FF97985187}';
    {如果检查到没有全局原子则运行程序,否则结束程序。}
    if GlobalFindAtom(pchar(strOnce))=0 then begin
        nAtom:=GlobalAddAtom(pchar(strOnce));
    end else begin
        ShowMessage('程序已经运行,请不要重复打开!');
        {结束程序}
        Application.Terminate;
    end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
    {在程序结束时记得要删除全局原子,否则的话下次一个程序实例也打不开,}
    {因为程序在加载时(FormCreate事件)检测到已经存在全局原子就会结束程序。}
    if nAtom<>0 then begin
       GlobalDeleteATom(nAtom);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    if nAtom<>0 then begin
       GlobalDeleteATom(nAtom);
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    ShowMessage('程序名称:防止程序多开'+#13+
                '版本:1.0.0.0'+#13+
                '日期:2010-10-9'+#13+
                '作者:江湖一键客'+#13+
                '教学联系QQ:82530662');
end;

end.
什么是 GUID ?
  全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID。
为什么要使用 GUID ?
  世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。
相关阅读 更多 +
排行榜 更多 +
马里奥赛车世界游戏手机版下载

马里奥赛车世界游戏手机版下载

赛车竞速 下载
无畏契约皮肤开箱器手游下载

无畏契约皮肤开箱器手游下载

休闲益智 下载
旭日之城官方正版下载

旭日之城官方正版下载

策略塔防 下载