제가 보던 책에서 나온건데........
그책의 말을 인용하면 ㅡㅡ^
음... 원칙적으로 두번실행이 가능한 윈도우즈 환경에서 두번실행을 금지시키는것은 약간 복잡합니다.
윈도우즈에서 두번실행을 금지시키는것은 방법은 없는걸루 알고있습니다.
다만 프로그램이 실행될때 같은 프로그램이 실행중인가를 살펴보고 이미 실행중이면 종료하는 방법을 사용하여 두번 실행되지 않도록 할수있다고 들었습니다. 댈파이로 만든 플그램은 제일 먼저 프로젝트가 제어권을 가지므로, 즉 프로젝트 파일이 엔트리 포이트가 됩니다. 그래서 프로그램이 시작된느 첫지점인 DPR파일을 직접수정해야만 두번 실행을 금지할수있져...
먼저.. 추가할 부분은 Uses 절, var 선언부 입니다.
자세한 소스는
(추가부분은 소스뒤에 **** 표를 해 두었습니다.)
program Once;
uses
Windows, ****************
Forms,
Once_f in 'Once_f.pas' (Form1);
{$R *.RES}
var ****************
hPrevWnd;THandle; *************
begin
hPrevWnd := FindWindow(Nil, 'OnceForm'); **********
if hPrevWnd <> 0 then ***********
begin ***********
SetForegroundWindow(hPrevWnd); **********
end *************
else ***********
begin **********
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
End; ***********
End.
그책의 말을 인용하면 ㅡㅡ^
음... 원칙적으로 두번실행이 가능한 윈도우즈 환경에서 두번실행을 금지시키는것은 약간 복잡합니다.
윈도우즈에서 두번실행을 금지시키는것은 방법은 없는걸루 알고있습니다.
다만 프로그램이 실행될때 같은 프로그램이 실행중인가를 살펴보고 이미 실행중이면 종료하는 방법을 사용하여 두번 실행되지 않도록 할수있다고 들었습니다. 댈파이로 만든 플그램은 제일 먼저 프로젝트가 제어권을 가지므로, 즉 프로젝트 파일이 엔트리 포이트가 됩니다. 그래서 프로그램이 시작된느 첫지점인 DPR파일을 직접수정해야만 두번 실행을 금지할수있져...
먼저.. 추가할 부분은 Uses 절, var 선언부 입니다.
자세한 소스는
(추가부분은 소스뒤에 **** 표를 해 두었습니다.)
program Once;
uses
Windows, ****************
Forms,
Once_f in 'Once_f.pas' (Form1);
{$R *.RES}
var ****************
hPrevWnd;THandle; *************
begin
hPrevWnd := FindWindow(Nil, 'OnceForm'); **********
if hPrevWnd <> 0 then ***********
begin ***********
SetForegroundWindow(hPrevWnd); **********
end *************
else ***********
begin **********
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
End; ***********
End.
이렇게하면 될겁니다.