첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

#region 윈도우 핸들 리스트 구하기 - GetWindowHandleList(processID)

/// <summary>
/// 윈도우 핸들 리스트 구하기
/// </summary>
/// <param name="processID">프로세스 ID</param>
/// <returns>윈도우 핸들 리스트</returns>
public List<IntPtr> GetWindowHandleList(uint processID)
{
    List<IntPtr> windowHandleList = new List<IntPtr>();

    IntPtr windowHandle = IntPtr.Zero;

    do
    {
        windowHandle = FindWindowEx(IntPtr.Zero, windowHandle, null, null);

        uint windowProcessID = 0;

        GetWindowThreadProcessId(windowHandle, out windowProcessID);

        if(windowProcessID == processID)
        {
            windowHandleList.Add(windowHandle);
        }
    }
    while(windowHandle != IntPtr.Zero);

    return windowHandleList;
}

#endregion

#region 윈도우 찾기 (확장) - FindWindowEx(parentWindowHandle, childAfterWindowHandle, className, windowText)

/// <summary>
/// 윈도우 찾기 (확장)
/// </summary>
/// <param name="parentWindowHandle">부모 윈도우 핸들</param>
/// <param name="childAfterWindowHandle">찾기 이후 자식 윈도우 핸들</param>
/// <param name="className">클래스명</param>
/// <param name="windowText">윈도우 텍스트</param>
/// <returns>윈도우 핸들</returns>
[DllImport("user32.dll")]
private static extern IntPtr FindWindowEx(IntPtr parentWindowHandle, IntPtr childAfterWindowHandle, string className, string windowText);

#endregion
#region 윈도우 스레드 프로세스 ID 구하기 - GetWindowThreadProcessId(windowHandle, processID);

/// <summary>
/// 윈도우 스레드 프로세스 ID 구하기
/// </summary>
/// <param name="windowHandle">윈도우 핸들</param>
/// <param name="processID">프로세스 ID</param>
/// <returns>처리 결과</returns>
[DllImport("user32.dll")]
private static extern uint GetWindowThreadProcessId(IntPtr windowHandle, out uint processID);

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요