Q&A

  • Application 실행여부
델파이로 만든 실행파일에서
이미 같은 실행파일이 실행중에 있는지를
알고 싶습니다.
이미 실행이 되어 있으면
다시 같은 과정을 못 거치게 하려는 겁니다..
델파이를 시작한지 얼마 안되서
고수님들의 빠른 답변을 부탁드립니다..
2  COMMENTS
  • Profile
    장명선 2002.03.05 23:19
    if HPrevInst <> 0 then
    Dialogs.ShowMessage('이미 실행중입니다')
    else begin
    Application.CreateForm(TForm1, Form1);
    Application.Run;
    end;

    Project에 포함하면 됩니다.

    그럼 즐코하세여
  • Profile
    머슴 2002.03.05 22:07

    프로그램이 이미 실행된 상태에서 동일한 프로그램이 중복 실행되는 것을 방지하려면
    프로젝트 소스 파일에서 다음과 같이 코딩합니다.

    저도 이문제로 고민하다 해결했습니다....

    Delphi Tip에서 중복실행이란 검색어로 검색하면 나옵니다....

    CreateMutex API 함수를 이용하여  project source에서 중복실행을
    방지하는 모듈을 추가하시면 되고요...

    폼도 중복실행을 방지하는 것이 있는 것 같습니다...

    그런데.. 한번 해보니까...만약에 다른 프로그램에 이소스가 있으면
    같은 실행화일도 아닌데 실행을 못하더라고요...

    noDuplicate'부분을 application.title[1]로 변경하시면 될것 같습니다...

    program Project;

    uses
    Forms,windows,
    Unit1 in 'Unit1.pas' {Form1};

    var
    Mutex : THandle;

    {$R *.RES}

    begin
    Mutex := CreateMutex(nil, True, 'noDuplicate');
    if (Mutex <> 0 ) and (GetLastError = 0) then begin

    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;

    if Mutex <> 0 then CloseHandle(Mutex);
    end;
    end.