正文

[ZT]程序只允许运行一个实例的三种例子2007-08-31 17:23:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/otot/29020.html

分享到:

程序只允许运行一个实例的三种例子 一:互斥体 program test;uses  Windows; var    MutexHandle: Longword; begin  if OpenMutex(MUTEX_ALL_ACCESS, FALSE, 'test')=0 then  begin    MutexHandle := CreateMutex(nil,TRUE,'test'); //创建一个互斥体,禁止重复运行    MessageBox(0, pchar('try run another?'), pchar('It Works'), 0);    ReleaseMutex(MutexHandle);                                //关闭互斥体  end;end. 异常退出了,互斥体还不消失 二:全局原子 program test; Uses Windows const iAtom=‘SingleApp’; begin if GlobalFindAtom(iAtom)=0 then begin   GlobalAddAtom(iAtom);        MessageBox(0, pchar('only 1'), pchar('It Works'), 0);   GlobalDeleteAtom(GlobalFindAtom(iAtom)); end;end. 三:内存影射 除了能保存全局变量,还可以唯一标志,但异常退出的话也不能消失 program test; Uses Windows var  hMappingFile: THandle;  PShared: ^TShared; begin     hMappingFile := OpenFileMapping(FILE_MAP_READ, False, 'test');     if hMappingFile = 0 then     begin        hMappingFile := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, SizeOf(TShared), 'test');        PShared := MapViewOfFile(hMappingFile, FILE_MAP_WRITE or FILE_MAP_READ, 0, 0, 0);        MessageBox(0, pchar('the one'), pchar('It Works'), 0);          UnmapViewOfFile(PShared);       CloseHandle(hMappingFile);  end;end.  

阅读(3879) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册