Q&A

  • 프로그램 중복실행 방지에서
프로그램 중복실행을 방지하려고 GlobalAddAtom과 GlobalFindAtom함수를 아래와 같이 썼습니다.



var

atom:Word; //전역변수



procedure TForm1.FormCreate(Sender: TObject);

begin

if GlobalFindAtom('ISRUNNING') = 0 then

atom := GlobalAddAtom('ISRUNNING')

else begin

MessageDlg('프로그램이 이미 실행중입니다.', mtWarning,[mbOK], 0);

Halt;

end;

end;



procedure TForm1.FormDestroy(Sender: TObject);

begin

GlobalDeleteAtom(atom);

end;



그런데 프로그램을 한번만 실행해도 메세지가 뜨는군요. 뭐가 잘못되었나요?



1  COMMENTS
  • Profile
    유시니 1999.08.12 04:42
    박성훈 께서 말씀하시기를...

    > 프로그램 중복실행을 방지하려고 GlobalAddAtom과 GlobalFindAtom함수를 아래와 같이 썼습니다.

    >

    > var

    > atom:Word; //전역변수

    >

    > procedure TForm1.FormCreate(Sender: TObject);

    > begin

    > if GlobalFindAtom('ISRUNNING') = 0 then

    > atom := GlobalAddAtom('ISRUNNING')

    > else begin

    > MessageDlg('프로그램이 이미 실행중입니다.', mtWarning,[mbOK], 0);

    > Halt;

    > end;

    > end;

    >

    > procedure TForm1.FormDestroy(Sender: TObject);

    > begin

    > GlobalDeleteAtom(atom);

    > end;

    >

    > 그런데 프로그램을 한번만 실행해도 메세지가 뜨는군요. 뭐가 잘못되었나요?

    >



    위에서와 마찬가지로 똑같이 코딩하면 한번만 실행되고 다음번 실행시

    실행이 않돼던데요..

    즉, 코딩에는 잘못이 없는것 같은데....

    코딩말고 다른 부분이 이상인가봐요...