아래의 내용을 보고 실행하니 핸들값이 뭔지 모름니다.
고수님의 지도 부탁 합니다. -꾸벅- (test.exe 의 핸들값은....)
김정일 wrote:
> 예를들어,
> C:Program FilesTestTest.exe
> 라는 파일명을 이용해서,
> 현재 이 프로그램이 실행이 되었는지를 알고 싶습니다.
> 만일 해당 프로그램이 실행되어져 있는경우,
> 해당 프로그램의 핸들을 얻고 싶은데,
> 어찌하면 좋을까요?
이런식으로 코딩을 해보세요.
procedure FormCreate(Sender: TObject);
begin
if DoInstanceExist(Self.Caption) = true then
begin
showmessage('프로그램이 이미 실행중 입니다.');
halt;
end;
End;
function DoInstanceExist(WndTitle: String): Boolean;
var
hsem : THandle;
hWndMe : HWnd;
semNm, WTtl : array[0..256] of Char;
begin
Result := False;
StrPCopy(semNm, 'Test');
StrPCopy(WTtl, WndTitle);
hSem := CreateSemaphore(nil, 0, 1, semNm);
if ((hSem <> 0) and (GetLastError() = ERROR_ALREADY_EXISTS)) then begin
CloseHandle(hSem);
hWndMe := FindWindow(nil, wTtl);
if (hWndMe <> 0) then begin
if IsIconic(hWndMe) then
ShowWindow(hWndMe, SW_SHOWNORMAL)
else
SetForegroundWindow(hWndMe);
end;
Result := True;
end;
end;
소스를 다시 함 잘 보시는게 좋겠습니다..
소스안에 이미 핸들값이 있군여..
조은 함수군여..
즐푸하세요...^^
타락천사....
김남영 wrote:
> 아래의 내용을 보고 실행하니 핸들값이 뭔지 모름니다.
> 고수님의 지도 부탁 합니다. -꾸벅- (test.exe 의 핸들값은....)
>
> 김정일 wrote:
> > 예를들어,
> > C:Program FilesTestTest.exe
> > 라는 파일명을 이용해서,
> > 현재 이 프로그램이 실행이 되었는지를 알고 싶습니다.
> > 만일 해당 프로그램이 실행되어져 있는경우,
> > 해당 프로그램의 핸들을 얻고 싶은데,
> > 어찌하면 좋을까요?
>
> 이런식으로 코딩을 해보세요.
> procedure FormCreate(Sender: TObject);
> begin
> if DoInstanceExist(Self.Caption) = true then
> begin
> showmessage('프로그램이 이미 실행중 입니다.');
> halt;
> end;
> End;
>
> function DoInstanceExist(WndTitle: String): Boolean;
> var
> hsem : THandle;
> hWndMe : HWnd;
> semNm, WTtl : array[0..256] of Char;
> begin
> Result := False;
> StrPCopy(semNm, 'Test');
> StrPCopy(WTtl, WndTitle);
> hSem := CreateSemaphore(nil, 0, 1, semNm);
> if ((hSem <> 0) and (GetLastError() = ERROR_ALREADY_EXISTS)) then begin
> CloseHandle(hSem);
> hWndMe := FindWindow(nil, wTtl);
> if (hWndMe <> 0) then begin
> if IsIconic(hWndMe) then
> ShowWindow(hWndMe, SW_SHOWNORMAL)
> else
> SetForegroundWindow(hWndMe);
> end;
> Result := True;
> end;
> end;
>