zoukankan      html  css  js  c++  java
  • C# WebBrowser NativeMethods

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace HttpBrowserApp
    {
        class NativeMethods
        {
            [ComImport]
            [Guid("0000010D-0000-0000-C000-000000000046")]
            [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
            interface IViewObject
            {
                void Draw([MarshalAs(UnmanagedType.U4)] uint dwAspect, int lindex, IntPtr pvAspect, [In] IntPtr ptd, IntPtr hdcTargetDev, IntPtr hdcDraw, [MarshalAs(UnmanagedType.Struct)] ref RECT lprcBounds, [In] IntPtr lprcWBounds, IntPtr pfnContinue, [MarshalAs(UnmanagedType.U4)] uint dwContinue);
            }
    
            [StructLayout(LayoutKind.Sequential, Pack = 4)]
            struct RECT
            {
                public int Left;
                public int Top;
                public int Right;
                public int Bottom;
            }
    
            public static void GetImage(object obj, Image destination, Color backgroundColor)
            {
                using (Graphics graphics = Graphics.FromImage(destination))
                {
                    IntPtr deviceContextHandle = IntPtr.Zero;
                    RECT rectangle = new RECT();
    
                    rectangle.Right = destination.Width;
                    rectangle.Bottom = destination.Height;
    
                    graphics.Clear(backgroundColor);
    
                    try
                    {
                        deviceContextHandle = graphics.GetHdc();
    
                        IViewObject viewObject = obj as IViewObject;
                        viewObject.Draw(1, -1, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, deviceContextHandle, ref rectangle, IntPtr.Zero, IntPtr.Zero, 0);
                    }
                    finally
                    {
                        if (deviceContextHandle != IntPtr.Zero)
                        {
                            graphics.ReleaseHdc(deviceContextHandle);
                        }
                    }
                }
            }
        }
    }
  • 相关阅读:
    Linux 文件特殊权限
    Linux ACL权限
    Linux 用户管理命令
    Asm.js: Javascript的编译目标
    《Zero to One》的一些读书笔记
    Tomcat架构(四)
    Tomcat架构(三)
    Tomcat架构(二)
    Tomcat 架构 (一)
    MATERIAL DESIGN学习笔记
  • 原文地址:https://www.cnblogs.com/Googler/p/3723564.html
Copyright © 2011-2022 走看看