■ WIN32 API를 사용해 최상위 윈도우 여부 구하기 예제

------------------------------------------------------------------------------------------------------------------------

using System;

 

Console.WriteLine(WindowHelper.IsTopMostWindow("notepad"));

------------------------------------------------------------------------------------------------------------------------

 

■ WIN32 API를 사용해 최상위 윈도우 여부 구하기

------------------------------------------------------------------------------------------------------------------------

using System;

using System.Diagnostics;

using System.Runtime.InteropServices;

 

/// <summary>

/// 윈도우 헬퍼

/// </summary>

public static class WindowHelper

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Import

    ////////////////////////////////////////////////////////////////////////////////////////// Static

    //////////////////////////////////////////////////////////////////////////////// Private

 

    #region 윈도우 값 구하기 - GetWindowLong(windowHandle, index)

 

    /// <summary>

    /// 윈도우 값 구하기

    /// </summary>

    /// <param name="windowHandle">윈도우 핸들</param>

    /// <param name="index">인덱스</param>

    /// <returns></returns>

    [DllImport("user32.dll", SetLastError = true)]

    private static extern int GetWindowLong(IntPtr windowHandle, int index);

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Field

    ////////////////////////////////////////////////////////////////////////////////////////// Private

 

    #region Field

 

    /// <summary>

    /// GWL_EXSTYLE

    /// </summary>

    private const int GWL_EXSTYLE = -20;

 

    /// <summary>

    /// WS_EX_TOPMOST

    /// </summary>

    private const uint WS_EX_TOPMOST = 0x0008;

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method

    ////////////////////////////////////////////////////////////////////////////////////////// Static

    //////////////////////////////////////////////////////////////////////////////// Public

 

    #region 최상위 윈도우 여부 구하기 - IsTopMostWindow(processName)

 

    /// <summary>

    /// 최상위 윈도우 여부 구하기

    /// </summary>

    /// <param name="processName">프로세스명</param>

    /// <returns>최상위 윈도우 여부</returns>

    public static bool? IsTopMostWindow(string processName)

    {

        Process[] processArray = Process.GetProcessesByName(processName);

 

        if(processArray.Length == 0)

        {

            return null;

        }

 

        Process process = processArray[0];

 

        int dwExStyle = GetWindowLong(process.MainWindowHandle, GWL_EXSTYLE);

 

        bool result = ((dwExStyle & WS_EX_TOPMOST) != 0);

 

        return result;

    }

 

    #endregion

}

------------------------------------------------------------------------------------------------------------------------

 

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요