zoukankan      html  css  js  c++  java
  • C# 获取桌面

                  

     [System.Runtime.InteropServices.DllImport(”gdi32.dll”)]
    
            public static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, UInt32 dwRop);
    
          //创建桌面句柄
    
            [System.Runtime.InteropServices.DllImportAttribute(”gdi32.dll”)]
    
            public static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, int lpInitData);
    
            [System.Runtime.InteropServices.DllImport(”gdi32.dll”)]
    
            public static extern IntPtr CreateCompatibleDC(IntPtr hdc);
    
            //转换为本地的图像资源
    
            [System.Runtime.InteropServices.DllImport(”gdi32.dll”)]
    
            public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);
    
            [System.Runtime.InteropServices.DllImport(”gdi32.dll”)]
    
            public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
    
            [System.Runtime.InteropServices.DllImport(”gdi32.dll”)]
    
            public static extern int DeleteDC(IntPtr hdc);
    
            //释放用过的设备句柄
    
            [DllImport(”user32.dll”)]
    
            public static extern bool ReleaseDC(
    
             IntPtr hwnd, IntPtr hdc
    
             );
    
            //释放用过的画笔等资源
    
            [DllImport(”gdi32.dll”)]
    
            public static extern bool DeleteObject(
    
              IntPtr hdc
    
             );
    
            
    
    /// <summary>
    
            /// 截取屏幕图像
    
            /// </summary>
    
            /// <param name=”Width”>宽</param>
    
            /// <param name=”Height”>高</param>
    
            /// <param name=”x”>x坐标(全屏时候为0)</param>
    
            /// <param name=”y”>y坐标(全屏时候为0)</param>
    
            /// <returns></returns>
    
            public Bitmap fullphoto(int Width,int Height,int x,int y)
    
            {
    
                Bitmap bitmap;
    
                //try
    
                //{
    
                    IntPtr hScreenDc = CreateDC(”DISPLAY”, null, null, 0); // 创建桌面句柄
    
                    IntPtr hMemDc = CreateCompatibleDC(hScreenDc); // 创建与桌面句柄相关连的内存DC
    
                    IntPtr hBitmap = CreateCompatibleBitmap(hScreenDc, Width, Height);   
    
                    IntPtr hOldBitmap = SelectObject(hMemDc, hBitmap);
    
                    BitBlt(hMemDc, x, y, Width, Height, hScreenDc, x, y, (UInt32)0xcc0020);
    
                    IntPtr map = SelectObject(hMemDc, hOldBitmap);
    
                    bitmap = Bitmap.FromHbitmap(map);  
    
                    ReleaseDC(hBitmap, hScreenDc);
    
                    DeleteDC(hScreenDc);//删除用过的对象
    
                    DeleteDC(hMemDc);//删除用过的对象
    
                    DeleteDC(hOldBitmap);
    
                    DeleteObject(hBitmap);
    
                   
    
                  
    
                //}
    
                //catch (Exception wx)
    
                //{
    
                //    return null;
    
                    //}
    
                    // number= number +1;
    
                    // bitmap.Save(”screen” + number + “.bmp”);
    
                
    
                return bitmap;
    
            }
    

           

  • 相关阅读:
    反思 自学困境自我剖析、习惯的惯性与维持
    Java IO 节点流 FileInput/OutputStream
    Java IO 理解流的概念
    spring boot2.1读取 apollo 配置中心1
    saga+.net core 分布式事务处理
    npm install 报错 ECONNREFUSED
    读书笔记: Microsot .NET企业级应用架构设计
    Dockerfile 设置语言包
    Centos环境下,执行gulp,显示执行成功,但找到不生成的压缩文件
    Jenkins Pipeline shell脚本用svn_revision当做系统版本号
  • 原文地址:https://www.cnblogs.com/DotNetCSharp/p/2116574.html
Copyright © 2011-2022 走看看