Q&A

  • 실행파일명으로 핸들값 알기?
예를들어,

C:Program FilesTestTest.exe

라는 파일명을 이용해서,

현재 이 프로그램이 실행이 되었는지를 알고 싶습니다.

만일 해당 프로그램이 실행되어져 있는경우,

해당 프로그램의 핸들을 얻고 싶은데,

어찌하면 좋을까요?

1  COMMENTS
  • Profile
    젠키 2000.03.22 17:56
    김정일 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;