Q&A

  • 프로그램을 실행되어있을때는 다시 실행을 막아주는 방법좀..
안녕하세요.^^
제가 프로그램을 만들어서 실행을 한후에
종료를 하지 않고 다시 실행을 할때에 실행되어 있는것이 있기 때문에
실행을 못하게 막는 방법좀 갈켜주세요.^^
4  COMMENTS
  • Profile
    김기수 2002.03.14 18:21
    저는 이방법을 씁니다.
    프로젝트파일(*.dpr)안에 적어주시면 됩니다.

    uses
      Windows,
    ...

    var
      Mutex : THandle;
    {$R *.res}

    begin
      //중복실행을 막기위함
      Mutex := CreateMutex(nil, True, '어플리케이션이름');
      //어플리케이션명은 아무 이름이나 구별이 가능한 이름을 주면 됩니다.
      if (Mutex <> 0 ) and (GetLastError = 0) then begin
        Application.Initialize;

        Do Something

        Application.Run;
        //중복실행이라면 종료
        if Mutex <> 0 then CloseHandle(Mutex);
      end;
    end.

  • Profile
    KYH 2002.03.14 09:04


    Initialization
       CreateFileMapping($FFFFFFFF, Nil, PAGE_READWRITE, 0, 1024, '실행화일명');
       IF GETLASTERROR = ERROR_ALREADY_EXISTS then
       begin
            MessageDlg('프로그램이 이미 실행중입니다 !', mtError, [mbOK], 0);
            halt;
       end;
  • Profile
    델.초 2002.03.14 10:54

    답변해주셔서 감사합니다.^^
    그런대 이 명령어를 어디에 어떻게 추가를 해야됀다는것이지 좀 자세히
    갈켜주시면 감사드리겠습니다^^
    그리고 실행화일명은 memo.exe 이것인대 이것을 적으면 돼는건가요 ㅡ.ㅡ?
    꼭좀 답변 부탁드리겠습니다^^
  • Profile
    별볼일없는 2002.03.14 20:53


    **예전 질답 게시판에서 펀온글....**

    프로젝트에서 자동생성되는 메인폼 pas의 제일 마지막 부분에 추가하세여.

    initialization
    begin
    CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, 1, 'memo.exe ');
    if GetLastError = ERROR_ALREADY_EXISTS then
    begin
       ShowMessage('이미 실행중입니다.');
       halt;
    end;
    end;

    그리니깐 메인폼에 프로시저선언과 같이 쓰심 되네요 상위에는 선언할필요없구요

    그럼 별볼일없는 넘이 지나가다