乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Delphi避免程序重復(fù)運行

       ZLM_圖書館 2013-12-02

         全局量子和查找窗體的方法都用過,不太好,用下面這個

      unit once;
      interface

      uses
       Windows ,Messages, SysUtils, Classes, Forms;

      implementation

      const
       STR_UNIQUE    = '{2BE6D96E-827F-4BF9-B33E-8740412CDE96}';
       MI_ACTIVEAPP  = 1;  {激活應(yīng)用程序}
       MI_GETHANDLE  = 2;  {取得句柄}

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

      function NewWndProc(Handle: HWND; Msg: Integer; wParam, lParam: Longint):
       Longint; stdcall;
      begin
       Result := 0;
       if Msg = iMessageID then
       begin
         case wParam of
           MI_ACTIVEAPP: {激活應(yīng)用程序}
             if lParam<>0 then
             begin
               {收到消息的激活前一個實例}
               {為什么要在另一個程序中激活?}
               {因為在同一個進(jìn)程中SetForegroundWindow并不能把窗體提到最前}
               if IsIconic(lParam) then
                 OpenIcon(lParam)
               else
                 SetForegroundWindow(lParam);
               Application.Terminate; {終止本實例}
             end;
           MI_GETHANDLE: {取得程序句柄}
             begin
               PostMessage(HWND(lParam), iMessageID, MI_ACTIVEAPP,
                 Application.Handle);
             end;
         end;
       end
       else
         Result := CallWindowProc(OldWProc, Handle, Msg, wParam, lParam);
      end;
       
      procedure InitInstance;
      begin
       {取代應(yīng)用程序的消息處理}
       OldWProc    := TFNWndProc(SetWindowLong(Application.Handle, GWL_WNDPROC,
         Longint(@NewWndProc)));

       {打開互斥對象}
       MutHandle := OpenMutex(MUTEX_ALL_ACCESS, False, STR_UNIQUE);
       if MutHandle = 0 then
       begin
         {建立互斥對象}
         MutHandle := CreateMutex(nil, False, STR_UNIQUE);
       end
       else begin
         Application.ShowMainForm  :=  False;
         {已經(jīng)有程序?qū)嵗?廣播消息取得實例句柄}
         BSMRecipients := BSM_APPLICATIONS;
         BroadCastSystemMessage(BSF_IGNORECURRENTTASK or BSF_POSTMESSAGE,
             @BSMRecipients, iMessageID, MI_GETHANDLE,Application.Handle);
       end;
      end;

      initialization
       {注冊消息}
       iMessageID  := RegisterWindowMessage(STR_UNIQUE);
       InitInstance;

      finalization
       {還原消息處理過程}
       if OldWProc <> Nil then
         SetWindowLong(Application.Handle, GWL_WNDPROC, LongInt(OldWProc));

       {關(guān)閉互斥對象}
       if MutHandle <> 0 then CloseHandle(MutHandle);

      end.

      將這個unit加入項目,主窗體引用即可!delphi7+winxp下測試通過

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多