4 windows winapi fullscreen windows-vista
例如,用户是在全屏播放电影,还是在全屏模式下看幻灯片?
我可以发誓我以前看到过 IsFullScreenInteractive API,但现在找不到了
这是我解决这个问题的方法:
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(IsForegroundWwindowFullScreen());
        }
        [DllImport("user32.dll")]
        static extern IntPtr GetForegroundWindow();
        [DllImport("user32.dll")]
        static extern int GetSystemMetrics(int smIndex);
        public const int SM_CXSCREEN = 0;
        public const int SM_CYSCREEN = 1;
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool GetWindowRect(IntPtr hWnd, out W32RECT lpRect);
        [StructLayout(LayoutKind.Sequential)]
        public struct W32RECT
        {
            public int Left;
            public int Top;
            public int Right;
            public int Bottom;
        }
        public static bool IsForegroundWwindowFullScreen()
        {
            int scrX = GetSystemMetrics(SM_CXSCREEN),
                scrY = GetSystemMetrics(SM_CYSCREEN);
            IntPtr handle = GetForegroundWindow();
            if (handle == IntPtr.Zero) return false;
            W32RECT wRect;
            if (!GetWindowRect(handle, out wRect)) return false;
            return scrX == (wRect.Right - wRect.Left) && scrY == (wRect.Bottom - wRect.Top);
        }
    }
}
| 归档时间: | 
 | 
| 查看次数: | 1682 次 | 
| 最近记录: |