在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
转载于网易博客:http://jiafeng26.blog.163.com/blog/static/1754251920100140134147/ windows是个多用户多任务的操作系统,支持多个程序同时运行,如果你的程序不想让用户同时运行一个以上, 那应该怎样做呢? 本文将介绍避免用户同时运行多个程序的例子。 需要用到的函数CreateMutex ,CreateMutex 函数是windows中一个并不常用的函数, 该函数对象在系统中只能存在一个实例且是互斥体,所以利用这种特性就很简单的实现了我们的要求。 【函数原声明】: function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle; function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle;<br/> 【参数说明】: lpMutexAttributes 是一个SECURITY_ATTRIBUTES 结构类型的指针,可以设置为NULL。 bInitialOwner 是否初始化互斥体。 lpName 互斥体对象的名称。 函数返回一个互斥体句柄。 当程序运行时创建对象,如果对象已经存在就表明程序已经被运行了。。 【实现过程如下】: 新建一个工程,窗体明明为Form1. 添加一个Button按钮命名为Button1. 双击按钮添加代码 procedure TForm1.Button1Click(Sender: TObject); var hw : HWND; gt : Integer; begin Application.Initialize; Application.Title := 'runmyfile'; hw := CreateMutex(nil,False,'runmyfile'); {创建互斥体对象} gt := GetLastError; if gt <> Error_ALREADY_EXISTS then {如果没有发现互斥体对象} begin Application.CreateForm(TForm1,Form1); {创建窗体} Application.Run; end else begin Application.MessageBox('程序已经运行','提示',MB_OK); Application.Terminate; ReleaseMutex(hw);{释放互斥体} end; end; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论