zoukankan      html  css  js  c++  java
  • 屏幕捕获程序

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Drawing.Imaging;

    namespace 屏幕捕获程序
    {
     
    /// <summary>
     
    /// Form1 的摘要说明。
     
    /// </summary>

     public class Form1 : System.Windows.Forms.Form
     
    {
      
    private System.Windows.Forms.Button button1;
      
    /// <summary>
      
    /// 必需的设计器变量。
      
    /// </summary>

      private System.ComponentModel.Container components = null;

      
    public Form1()
      
    {
       
    //
       
    // Windows 窗体设计器支持所必需的
       
    //
       InitializeComponent();

       
    //
       
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
       
    //
      }


      
    /// <summary>
      
    /// 清理所有正在使用的资源。
      
    /// </summary>

      protected override void Dispose( bool disposing )
      
    {
       
    if( disposing )
       
    {
        
    if (components != null
        
    {
         components.Dispose();
        }

       }

       
    base.Dispose( disposing );
      }


      
    Windows Form Designer generated code

      
    /// <summary>
      
    /// 应用程序的主入口点。
      
    /// </summary>

      [STAThread]
      
    static void Main() 
      
    {
       Application.Run(
    new Form1());
      }


      [ System.Runtime.InteropServices.DllImportAttribute ( 
    "gdi32.dll" ) ]
      
    private static extern bool BitBlt (
       IntPtr hdcDest , 
    //目标设备的句柄
       int nXDest , // 目标对象的左上角的X坐标
       int nYDest , // 目标对象的左上角的X坐标
       int nWidth , // 目标对象的矩形的宽度
       int nHeight , // 目标对象的矩形的长度
       IntPtr hdcSrc , // 源设备的句柄
       int nXSrc , // 源对象的左上角的X坐标
       int nYSrc , // 源对象的左上角的X坐标
       System.Int32 dwRop // 光栅的操作值
       ) ;

      [ System.Runtime.InteropServices.DllImportAttribute ( 
    "gdi32.dll" ) ]
      
    private static extern IntPtr CreateDC (
       
    string lpszDriver , // 驱动名称
       string lpszDevice , // 设备名称
       string lpszOutput , // 无用,可以设定位"NULL"
       IntPtr lpInitData // 任意的打印机数据
       ) ;

      
    private void button1_Click(object sender, System.EventArgs e)
      
    {
       
    this.Hide();
       IntPtr dc1 
    = CreateDC ( "DISPLAY" , null , null , ( IntPtr ) null ) ;
       
    //创建显示器的DC
       Graphics g1 = Graphics.FromHdc ( dc1 ) ;
       
    //由一个指定设备的句柄创建一个新的Graphics对象
       Bitmap MyImage = new Bitmap ( Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , g1 ) ;
       
    //根据屏幕大小创建一个与之相同大小的Bitmap对象
       Graphics g2 = Graphics.FromImage ( MyImage ) ;
       
    //获得屏幕的句柄
       IntPtr dc3 = g1.GetHdc ( ) ;
       
    //获得位图的句柄
       IntPtr dc2 = g2.GetHdc ( ) ;
       
    //把当前屏幕捕获到位图对象中
       BitBlt ( dc2 , 0 , 0 , Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , dc3 , 0 , 0 , 13369376 ) ;
       
    //把当前屏幕拷贝到位图中
       g1.ReleaseHdc ( dc3 ) ;
       
    //释放屏幕句柄
       g2.ReleaseHdc ( dc2 ) ;
       
    //释放位图句柄
       MyImage.Save ( "c:\\MyJpeg.jpg" , ImageFormat.Jpeg ) ;
       MessageBox.Show ( 
    "已经把当前屏幕保存到C:\\MyJpeg.jpg文件中!" ) ;
       
    this.Show();
      }

     }

    }


  • 相关阅读:
    LR通过SiteScope监控mysql
    安装apk文件报waiting for device 时解决办法
    VMware虚拟机中设置端口映射(转载)
    Android模拟器中安装APK文件(转)
    netstat监控大量ESTABLISHED连接与Time_Wait连接问题(转载)
    linux 安装sysstat使用iostat、mpstat、sar、sa(转载)
    SQL联合查询中的关键语法(转)
    JVM调优总结 -Xms -Xmx -Xmn -Xss(转载)
    JVM系列三:JVM参数设置、分析(转载)
    查找进程并杀进程的命令
  • 原文地址:https://www.cnblogs.com/myx/p/83479.html
Copyright © 2011-2022 走看看