먼저 제 글을읽어 주셔서 감사합니다.
다름이 아니라 프로세스 죽이는 루틴을 짜려고 하는데,, 여기 나와있는 것도 많이 있던데,,
제가 적용할 거랑 조금 달라서,,
제 프로그램의 OCX중 하나가 죽지 않아,, 프로그램을 종료시켜도 프로세스가 남아요.
그래서, 프로그램을 다시 시작할때 기존에 프로세스가 있는지 검사해서,, 죽일려고 하는데,
쉽지 않네요. 또 사용자가 더블크릭을 잘 못해서,,프로세스가 여러개 뜰 수 있다는 생각하에
프로세스를 죽여야 하거든요.. 제발 칼켜주세요.. application.run 하기 전에 넣어야 할것
같은데,, -_-;;
그럼,, 이만,,
프로젝트파일의 소스부분을 아래처럼 고치면 됩니다.........
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 하기 전에 넣어야 할것
> 같은데,, -_-;;
>
> 그럼,, 이만,,