防止程序重复执行的单元

 
 
 
 MultInst;




 Windows ,Messages, SysUtils, Classes, Forms;




 STR_UNIQUE    = '';
 MI_ACTIVEAPP  = ;  
 MI_GETHANDLE  = ;  


 iMessageID    : Integer;
 OldWProc      : TFNWndProc;
 MutHandle     : THandle;
 BSMRecipients : DWORD;

 NewWndProc(Handle: HWND; Msg: Integer; wParam, lParam: Longint):
 Longint; ;

 Result := ;
  Msg = iMessageID 
 
    wParam 
     MI_ACTIVEAPP: 
        lParam<> 
       
         
         
         
          IsIconic(lParam) 
           OpenIcon(lParam)
         
           SetForegroundWindow(lParam);
         ApplicationTerminate; 
       ;
     MI_GETHANDLE: 
       
         PostMessage(HWND(lParam), iMessageID, MI_ACTIVEAPP,
           ApplicationHandle);
       ;
   ;
 
 
   Result := CallWindowProc(OldWProc, Handle, Msg, wParam, lParam);
;

 InitInstance;

 
 OldWProc    := TFNWndProc(SetWindowLong(ApplicationHandle, GWL_WNDPROC,
   Longint(@NewWndProc)));

 
 MutHandle := OpenMutex(MUTEX_ALL_ACCESS, False, STR_UNIQUE);
  MutHandle =  
 
   
   MutHandle := CreateMutex(, False, STR_UNIQUE);
 
  
   ApplicationShowMainForm  :=  False;
   
   BSMRecipients := BSM_APPLICATIONS;
   BroadCastSystemMessage(BSF_IGNORECURRENTTASK  BSF_POSTMESSAGE,
       @BSMRecipients, iMessageID, MI_GETHANDLE,ApplicationHandle);
 ;
;


 
 iMessageID  := RegisterWindowMessage(STR_UNIQUE);
 InitInstance;


 
  OldWProc <>  
   SetWindowLong(ApplicationHandle, GWL_WNDPROC, LongInt(OldWProc));

 
  MutHandle <>   CloseHandle(MutHandle);

.

转载于:https://www.cnblogs.com/hnxxcxg/archive/2008/08/25/2940829.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值