Q&A

  • 윈도우 헨들(handle)로 아이콘을 찾을수 없을까요. 도와주세요.
윈도우 핸들을 이용해서 현재 실행 되어 있는 프로그램에

아이콘을 구할수 없을 까요?

좀 도와 주세요.

실행화일 명으로는 구할수 있는데, 흑흑흑

왜 한번 실행되어 있는 프로그램에 핸들을 구해서 아이콘을 구할 려구 했는데

않되네요.

혹시 API함수를 알고 있거나, 아니면 구할 수 있는 방법을 아시는 분이 게시면

좀 도와주세요. 좀 부탁해요

아니면, 핸들로 실행 화일 명을 구할수 는 없을까????

2  COMMENTS
  • Profile
    김영대 1999.11.12 19:37
    조한석 wrote:

    > 윈도우 핸들을 이용해서 현재 실행 되어 있는 프로그램에

    > 아이콘을 구할수 없을 까요?

    > 좀 도와 주세요.

    > 실행화일 명으로는 구할수 있는데, 흑흑흑

    > 왜 한번 실행되어 있는 프로그램에 핸들을 구해서 아이콘을 구할 려구 했는데

    > 않되네요.

    > 혹시 API함수를 알고 있거나, 아니면 구할 수 있는 방법을 아시는 분이 게시면

    > 좀 도와주세요. 좀 부탁해요

    > 아니면, 핸들로 실행 화일 명을 구할수 는 없을까????



    아래 예제는 "Window Handle" 로 실행파일명 구하기 입니다



    function GetWindowExeName(Handle: THandle): string;

    var

    PE: TProcessEntry32;

    Snap: THandle;

    ProcessID: cardinal;

    x : integer;

    PH: THandle;

    PidName: array [0..Max_Path - 1] of char;

    begin

    result := '';

    if IsWindows95 then

    begin

    GetWindowThreadProcessID(Handle, @ProcessID);

    Snap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);

    PE.dwSize := SizeOf(PE);

    if Snap <> -1 then

    begin

    if Process32First(Snap, PE) then

    begin

    repeat

    if ProcessID = PE.th32ProcessID then

    begin

    result := String(PE.szEXEFile);

    break;

    end;

    until (Process32Next(Snap, PE) = False);

    end;

    end; // if Snap <> 0

    CloseHandle(Snap);

    end; // if IsWindows95



    if IsWindowsNT then

    begin

    GetWindowThreadProcessID(Handle, @ProcessID);

    PH := OpenProcess(Process_Query_Information or Process_VM_Read, False, ProcessID);

    if PH <> 0 then begin

    if GetModuleBaseName(PH, 0, PIDName, SizeOf(PIDName)) > 0 then

    begin

    result := PIDName;

    end;

    CloseHandle(PH);

    end;

    end;// if IsWindowsNT

    end;





  • Profile
    조한석 1999.11.16 21:30
    감사합니다.