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);
                        }
                    }
                }
            }
        }
    }
  • 相关阅读:
    enca工具,检测文件编码
    ubuntu 支持gbk
    LinkedList线程安全问题
    php防止form重复提交的方法
    Linux 内存泄露调试工具
    从B树、B+树、B*树谈到R 树
    Ubuntu 语言设置
    wwwauthenticate
    Lua脚本语法说明
    jQuery学习总结之元素的相对定位和选择器持续更新中
  • 原文地址:https://www.cnblogs.com/Googler/p/3723564.html
Copyright © 2011-2022 走看看