zoukankan      html  css  js  c++  java
  • Windows 7下使用窗口实时缩略图的类

    Windows 7下使用窗口缩略图的类

        internal sealed class ThumbnailSafeHandle : SafeHandle
        {
            [DllImport("dwmapi.dll", SetLastError = true)]
            static extern int DwmQueryThumbnailSourceSize(ThumbnailSafeHandle hThumbnail, ref PSIZE pSize);
            [DllImport("dwmapi.dll", SetLastError = true)]
            static extern int DwmRegisterThumbnail(IntPtr hwndDestination, IntPtr hwndSource, out ThumbnailSafeHandle hThumbnailId);
            [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success), DllImport("dwmapi.dll", SetLastError = true)]
            static extern int DwmUnregisterThumbnail(IntPtr hThumbmailId);
            [DllImport("dwmapi.dll", SetLastError = true)]
            static extern int DwmUpdateThumbnailProperties(ThumbnailSafeHandle hThumbmailId, ref DWM_THUMBNAIL_PROPERTIES ptnProperties);
            [DllImport("user32.dll")]
            static extern int GetWindowRect(IntPtr hwnd, ref RECT lpRect);
    
            [StructLayout(LayoutKind.Sequential)]
            struct PSIZE
            {
                public int cx;
                public int cy;
            }
    
            [Serializable, StructLayout(LayoutKind.Sequential)]
            struct RECT
            {
                public int left;
                public int top;
                public int right;
                public int bottom;
                internal RECT(int l, int t, int r, int b)
                {
                    this.left = l;
                    this.top = t;
                    this.right = r;
                    this.bottom = b;
                }
            }
    
            [StructLayout(LayoutKind.Sequential)]
            struct DWM_THUMBNAIL_PROPERTIES
            {
                public int dwFlags;
                public RECT rcDestination;
                public RECT rcSource;
                public byte opacity;
                public bool fVisible;
                public bool fSourceClientAreaOnly;
            }
    
            private ThumbnailSafeHandle()
                : base(IntPtr.Zero, true)
            {
            }
    
            //在目标窗口(HWND = hwndDestination)内显示源窗口(HWND = hwndSource)的实时缩略图
            public static ThumbnailSafeHandle Register(IntPtr hwndDestination, IntPtr hwndSource)
            {
                ThumbnailSafeHandle handle;
                DwmRegisterThumbnail(hwndDestination, hwndSource, out handle);
                Size size = handle.Size;
                DWM_THUMBNAIL_PROPERTIES m_ThumbnailProperties = new DWM_THUMBNAIL_PROPERTIES();
                m_ThumbnailProperties.dwFlags = 29;  
                m_ThumbnailProperties.opacity = 128; //透明度
                m_ThumbnailProperties.fVisible = true;
                m_ThumbnailProperties.fSourceClientAreaOnly = true; //只显示客户区
                m_ThumbnailProperties.rcDestination = new RECT(0, 0, (int)size.Width, (int)size.Height); //显示在目标窗口的哪个位置
                DwmUpdateThumbnailProperties(handle, ref m_ThumbnailProperties); 
                return handle;
            }
    
            public Size Size 
            {
                get 
                {
                    PSIZE size = new PSIZE();
                    DwmQueryThumbnailSourceSize(this, ref size);
                    return new Size(size.cx, size.cy);
                }
            }
    
            protected override bool ReleaseHandle()
            {
                if (this.IsInvalid)
                {
                    return true;
                }
                int num = DwmUnregisterThumbnail(base.handle);
                base.SetHandle(IntPtr.Zero);
                return (num == 0);
            }
    
            public override bool IsInvalid
            {
                get
                {
                    return (IntPtr.Zero == base.handle);
                }
            }
        }
  • 相关阅读:
    网站收录(2)-财经网站
    网络爬虫(13)-Scrapy持久化存储
    网络爬虫(12)-Scrapy框架Post请求发送
    Excel常用函数
    VBA基础
    网站收录(1)-行业研究
    网络爬虫(11)-Scrapy分布式
    网络爬虫(10)-进程、线程
    log
    关于camera 智障的问题
  • 原文地址:https://www.cnblogs.com/wmesci/p/2736005.html
Copyright © 2011-2022 走看看