Q&A

  • 프로세스 죽이기,,
먼저 제 글을읽어 주셔서 감사합니다.



다름이 아니라 프로세스 죽이는 루틴을 짜려고 하는데,, 여기 나와있는 것도 많이 있던데,,

제가 적용할 거랑 조금 달라서,,



제 프로그램의 OCX중 하나가 죽지 않아,, 프로그램을 종료시켜도 프로세스가 남아요.

그래서, 프로그램을 다시 시작할때 기존에 프로세스가 있는지 검사해서,, 죽일려고 하는데,

쉽지 않네요. 또 사용자가 더블크릭을 잘 못해서,,프로세스가 여러개 뜰 수 있다는 생각하에

프로세스를 죽여야 하거든요.. 제발 칼켜주세요.. application.run 하기 전에 넣어야 할것

같은데,, -_-;;



그럼,, 이만,,

1  COMMENTS
  • Profile
    최은석 2000.12.08 05:08
    원하시는 답이 될지 모르겠지만.....



    프로젝트파일의 소스부분을 아래처럼 고치면 됩니다.........



    program Main;



    uses

    Forms,

    windows,

    //

    프로젝트에 포함된 유닛들 선언된 부분

    //

    const MutexName = 'Main'; <----메인폼의 Name



    var

    Mutex: THandle;





    {$R *.RES}



    begin



    // 프로세스를 생성하기전에 같은 프로세스가 생성되어있는지 체크해서

    잇으면 다시 생성을 안하고 없으면 생성함...



    if OpenMutex(MUTEX_ALL_ACCESS, False, MutexName) = 0 then

    begin

    Mutex := CreateMutex(nil, False, MutexName);



    // 1024,768 모드로 폼을 생성함....

    CreateFileMapping ( $FFFFFFFF, nil, PAGE_READWRITE, 0, 1024, 'SharedHandle' );



    if GetLastError=ERROR_ALREADY_EXISTS then halt;





    Application.Initialize;

    //

    프로젝트에 포함된 폼 생성........

    //

    ReleaseMutex(Mutex);

    end;



    end.













    손배영 wrote:

    > 먼저 제 글을읽어 주셔서 감사합니다.

    >

    > 다름이 아니라 프로세스 죽이는 루틴을 짜려고 하는데,, 여기 나와있는 것도 많이 있던데,,

    > 제가 적용할 거랑 조금 달라서,,

    >

    > 제 프로그램의 OCX중 하나가 죽지 않아,, 프로그램을 종료시켜도 프로세스가 남아요.

    > 그래서, 프로그램을 다시 시작할때 기존에 프로세스가 있는지 검사해서,, 죽일려고 하는데,

    > 쉽지 않네요. 또 사용자가 더블크릭을 잘 못해서,,프로세스가 여러개 뜰 수 있다는 생각하에

    > 프로세스를 죽여야 하거든요.. 제발 칼켜주세요.. application.run 하기 전에 넣어야 할것

    > 같은데,, -_-;;

    >

    > 그럼,, 이만,,