Q&A

  • 특정 프로그램의 실행여부 알아 내기?

findwindow 를 쓰려니, 프로그램 title 을 알아야 되더군요 .
단순히, 실행 파일명만 가지고, 실행중인지 알아낼수 있는 방법이 있는지요?
1  COMMENTS
  • Profile
    이순구 2003.03.10 21:13

    function GetProcessExeName( ProcessId: DWord ): String;
    var
            Process32: TProcessEntry32;
            Handle: THandle;

            function Check: Boolean;
            begin
                    Result := False;
                    if Process32.th32ProcessID = ProcessId then
                    begin
                            GetProcessExeName := Process32.szExeFile;
                            Result := True;
                    end;
            end;
    begin
            Result := '';
            Process32.dwSize := SizeOf( TProcessEntry32 );
            Handle := CreateToolHelp32SnapShot( TH32CS_SNAPPROCESS, 0 );
            try
                    if Process32First( Handle, Process32 ) then
                            while Process32Next( Handle, Process32 ) do
                                    if Check then Exit;
            finally
                    CloseHandle( Handle );
            end;
    end;

    function ExeName( Wnd: HWnd ): String;
    var
            ProcessId: DWord;
    begin
            GetWindowThreadProcessId( Wnd, @ProcessId );
            Result := GetProcessExeName( ProcessId );
    end;

    양병규님의 비주얼멘더 소스에서 핸들값으로 실행파일명을 구하는 부분입니다.
    EnumWindows나 EnumChildWindows를 이용해 모든 핸들값에 대해 실행파일명을 구하면 특정프로그램이 실행중인지 알 수 있겠지요..