Delphi CreateMutex 防止程序多次运行

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; 

转载于:https://www.cnblogs.com/railgunman/p/6713621.html

Delphi防止(禁止)程序多次运行..rar 立即下载

相关推荐

Delphi防止运行一个应用程序的多个实例2个办法

Delphi防止运行一个应用程序的多个实例2个办法 弹出提醒 激活窗口 Delphi源代码3份。

delphi 防止程序重复执行

delphi 防止程序重复执行

pdw2009的专栏 1574

Delphi禁止一个程序多次打开.rar

Delphi禁止一个程序多次打开,也就是同一个程序,只允许运行一次, Result := True;    GetWindowText(Wnd,@WndCaption, 254);//获取窗口的Caption    if(Pos('MyTest',WndCaption)>=1)then //如果窗口的Caption含某字符串    begin    if IsIconic(Wnd) then //如果已被最小化    ShowWindow(Wnd,SW_RESTORE)//则把它恢复    else //如果窗口被其他窗口遮住,则将它提到前景来    SetForegroundWindow(Wnd);    Result:=False;    Halt; //结束本程序

delphiCreateMutex,OpenMutex使用一例

VC声明HANDLE CreateMutex(  LPSECURITY_ATTRIBUTES lpMutexAttributes, // SD  BOOL bInitialOwner, // initial owner  LPCTSTR lpName // object name  );delphi声明:function CreateMutex(lpMutexAttri

1万+

禁止程序重复运行

方法一:var   hMutex:hwnd;   ret:integer;begin  Application.Initialize;  hmutex:=createMutex(nil,false,project1);  ret:=getlasterror;  if ret  begin    Application.CreateForm(TMainFrm, MainFrm);  Applic

718

Delphi防止程序多次运行

Delphi防止程序多次运行

690

程序互斥

//在App的InitInstance()中添加下面几句来使程序运行一次 //此程序只能运行一次,用互斥量来判断程序是否已运行 HANDLE m_hMutex=CreateMutex(NULL,TRUE, m_pszAppName); if(GetLastError()==ERROR_ALREADY_EXISTS) { AfxMessageBox("程序已经运行");...

一切皆有可能 179

Delphi 10.4利用CreateMutex函数创建互斥对象实例防止程序多次执行该对象

windows是个多用户多任务的操作系统,支持多个程序同时运行,如果你的程序不想让用户同时运行一个以上, 那应该怎样做呢? 本文将介绍避免用户同时运行多个程序的例子。 需要用到的函数CreateMutexCreateMutex 函数是windows中一个并不常用的函数, 该函数对象在系统中只能存在一个实例且是互斥体,所以利用这种特性就很简单的实现了我们的要求。 unit Winapi.Windows中的函数原声明: // NT 4.0 bug workaround - NT 4.0 does

Delphi开发局QQ群:32422310 974

解决delphi2007不能双开和二次问题打开报错

解决delphi2007不能双开和二次问题打开报错

Delphi Thread CreateMutex : 防止同时出现多个应用程序实例(Server)

windows是个多用户多任务的操作系统,支持多个程序同时运行,如果你的程序不想让用户同时运行一个以上, 那应该怎样做呢? 本文将介绍避免用户同时运行多个程序的例子。 需要用到的函数CreateMutexCreateMutex 函数是windows中一个并不常用的函数, 该函数对象在系统中只能存在一个实例且是互斥体, 所以利用这种特性就很简单的实现了我们的要求。 【函数原声明】:

流年~~ 3644

防止用DeDe软件反编译delphi程序

防止用DeDe软件反编译delphi程序这里有一篇防止用DeDe软件反编译delphi程序~用『』里的是我的注释,其余的是原创作~ Program Project1;Uses  Forms,  windows,  sysutils,  Unit1 In Unit1.pas {Form1},  Unit2 In Unit2.pas {Form2};Function Registe

ToB公司的战略与经营 3606

Delphi防止同时出现多个应用程序实例--CreateMutex

====================================================== 注:本文源代码点此下载 ====================================================== 多实例指同时有同一个应用程序的多个副本在运行。同一个应用程序的多个副本可以相互独立地同时运行,是win32操作系统提供的一个功能。但有时,我们可能

javazhuanzai的专栏 499

Delphi实现程序运行一次并激活已打开的程序

unit wdRunOnce; {******************************************* * brief: 让程序运行一次 * autor: linzhenqun * date: 2005-12-28 * email: linzhengqun@163.com * blog: http://blog.csdn.net/linzhengqun ******

抬头做人低头做事 4105

Delphi 中如何禁止重复运行程序的方法

第一种方法,使用“过程调用” procedure Del; // 自定义过程 var Mutex: THandle; begin Mutex := CreateMutex(nil, True, PChar(Application.Title)); if GetLastError = ERROR_ALREADY_EXISTS then begin Application.MessageBox('重复登录!','系统提示', MB_ICONERROR); ReleaseMut...

阳光有点冷 770
上一篇: CreateMutex和WaitForSingleObject组合的有关问题
下一篇: 我所理解的Delphi中的数组类型
aowo7144
博客等级 码龄9年 5粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值