Programming/Delphi

프로그램 중복실행 방지

통통만두 2010. 12. 16. 14:58
반응형
기본적으로 뮤텍스를 사용하여 중복실행 여부를 체크한다.

program Project;

uses
  Forms,
  Windows,
  Dialogs,
  unt_Main in 'unt_Main.pas' {frm_Main};

var
   Mutex : THandle;

{$R *.res}

begin
  Mutex := CreateMutex(nil, True, 'BDGG');//'YourMutex');
  if (Mutex <> 0 ) and (GetLastError = 0) then
  begin
     Application.Initialize;
     Application.MainFormOnTaskbar := True;
     Application.CreateForm(Tfrm_Main, frm_Main);
     Application.Run;
  end else
  begin
     SendMessage(FindWindow('Tfrm_Main', '백두거간'), WM_SHOW_BDGG, 0, 0);
     Application.Terminate;
  end;
end.


사용자 이벤트 정의를 해준 다음에,
const
   WM_SHOW_BDGG         = WM_USER + $0001;


이벤트를 받는 부분도 처리하자.
// 프로토타입 선언
procedure WMUSER_SHOW_BDGG(var Message: TMessage); message WM_SHOW_BDGG;

procedure Tfrm_Main.WMUSER_SHOW_BDGG(var Message: TMessage);
begin
   // 여기서 다음 행동을 결정한다.
   // 프로그램을 보여줘도 되고, 종료해도 되고
end;
반응형