첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형

TestProject.zip
0.00MB

▶ ProcessHelper.cs

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace TestProject
{
    /// <summary>
    /// 프로세스 헬퍼
    /// </summary>
    public static class ProcessHelper
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Import
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

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

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

        #endregion
        #region UWP 프로세스 여부 구하기 - IsImmersiveProcess(processHandle)

        /// <summary>
        /// UWP 프로세스 여부 구하기
        /// </summary>
        /// <param name="processHandle">프로세스 핸들</param>
        /// <returns>UWP 프로세스 여부</returns>
        [DllImport("user32")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool IsImmersiveProcess(IntPtr processHandle);

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region UWP 프로세스 여부 구하기 - IsUWPProcess(process)

        /// <summary>
        /// UWP 프로세스 여부 구하기
        /// </summary>
        /// <param name="process">프로세스</param>
        /// <returns>UWP 프로세스 여부</returns>
        public static bool IsUWPProcess(Process process)
        {
            return IsImmersiveProcess(process.Handle);
        }

        #endregion
        #region UWP 프로세스 여부 구하기 - IsUWPProcess(windowHandle)

        /// <summary>
        /// UWP 프로세스 여부 구하기
        /// </summary>
        /// <param name="windowHandle">윈도우 핸들</param>
        /// <returns>UWP 프로세스 여부</returns>
        public static bool IsUWPProcess(IntPtr windowHandle)
        {
            uint processID;

            GetWindowThreadProcessId(windowHandle, out processID);

            Process process = Process.GetProcessById((int)processID);

            return IsUWPProcess(process);
        }

        #endregion
    }
}

 

728x90

 

▶ Program.cs

using System;
using System.Runtime.InteropServices;
using System.Threading;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Import
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 전경 윈도우 구하기 - GetForegroundWindow()

        /// <summary>
        /// 전경 윈도우 구하기
        /// </summary>
        /// <returns>윈도우 핸들</returns>
        [DllImport("user32")]
        private static extern IntPtr GetForegroundWindow();

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 프로그램 시작하기 - Main()

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            Thread.Sleep(5000);

            IntPtr windowHandle = GetForegroundWindow();

            Console.WriteLine($"UWP 프로세스 여부 : {ProcessHelper.IsUWPProcess(windowHandle)}");
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by 사용자 icodebroker
TAG , , ,

댓글을 달아 주세요