⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 capture.cs

📁 一本很好的教材.C#开发者必备.内容全面,很难得哦.
💻 CS
字号:
  //屏幕捕获程序
  using System ; 
  using System.Drawing ; 
  using System.Collections ; 
  using System.ComponentModel ; 
  using System.Windows.Forms ; 
  using System.Data ; 
  using System.Drawing.Imaging ; 
  using System.IO ; 
  namespace Capture
  {
	  public class Capture : Form 
	  { 
		  private System.ComponentModel.Container components = null ; 
		  private Icon mNetTrayIcon = new Icon ( "Tray.ico" ) ; 
		  private Bitmap MyImage = null ; 
		  private NotifyIcon TrayIcon ; 
		  private ContextMenu notifyiconMnu ; 
		  public Capture ( ) 
		  { 
			  //初始化窗体中使用到的组件 
			  InitializeComponent ( ) ; 
		  } 
		  protected override void OnActivated ( EventArgs e ) 
		  { 
			  this.Hide ( ) ; 
		  } 
		  [ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ] 
		  private static extern bool BitBlt ( 
			  IntPtr hdcDest , //目标设备的句柄 
			  int nXDest , // 目标对象的左上角的X坐标 
			  int nYDest , // 目标对象的左上角的Y坐标 
			  int nWidth , // 目标对象的矩形的宽度 
			  int nHeight , // 目标对象的矩形的高度 
			  IntPtr hdcSrc , // 源设备的句柄 
			  int nXSrc , // 源对象的左上角的X坐标 
			  int nYSrc , // 源对象的左上角的Y坐标 
			  System.Int32 dwRop // 光栅的操作值 
			  ) ; 
		  [ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ] 
		  private static extern IntPtr CreateDC ( 
			  string lpszDriver , // 驱动名称 
			  string lpszDevice , // 设备名称 
			  string lpszOutput , // 无用,可以设定为"NULL" 
			  IntPtr lpInitData // 任意的打印机数据 
			  ) ; 
		  public void capture ( object sender , System.EventArgs e ) 
		  { 
			  this.Visible = false ; 
			  IntPtr dc1 = CreateDC ( "DISPLAY" , null , null , ( IntPtr ) null ) ; 
			  //创建显示器的DC 
			  Graphics g1 = Graphics.FromHdc ( dc1 ) ; 
			  //由一个指定设备的句柄创建一个新的Graphics对象 
			  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.Visible = true ; 
		  } 
		  public void ExitSelect ( object sender , System.EventArgs e ) 
		  { 
			  //隐藏托盘程序中的图标 
			  TrayIcon.Visible = false ; 
			  //关闭系统 
			  this.Close ( ) ; 
		  } 
		  //清除程序中使用过的资源 
		  public  void Dispose ( ) 
		  { 
			  base.Dispose ( ) ; 
			  if ( components != null ) 
				  components.Dispose ( ) ; 
		  } 
		  private void InitializeComponent ( ) 
		  { 
			  //设定托盘程序的各个属性 
			  TrayIcon = new NotifyIcon ( ) ; 
			  TrayIcon.Icon = mNetTrayIcon ; 
			  TrayIcon.Text = "用C#做屏幕捕获程序" ; 
			  TrayIcon.Visible = true ; 
			  //定义一个MenuItem数组,并把此数组同时赋值给ContextMenu对象 
			  MenuItem [ ] mnuItms = new MenuItem [ 3 ] ; 
			  mnuItms [ 0 ] = new MenuItem ( ) ; 
			  mnuItms [ 0 ] .Text = "捕获当前屏幕!" ; 
			  mnuItms [ 0 ] .Click += new System.EventHandler ( this.capture ) ; 
			  mnuItms [ 1 ] = new MenuItem ( "-" ) ; 
			  mnuItms [ 2 ] = new MenuItem ( ) ; 
			  mnuItms [ 2 ] .Text = "退出系统" ; 
			  mnuItms [ 2 ] .Click += new System.EventHandler ( this.ExitSelect ) ; 
			  mnuItms [ 2 ] .DefaultItem = true ; 
			  notifyiconMnu = new ContextMenu ( mnuItms ) ; 
			  TrayIcon.ContextMenu = notifyiconMnu ; 
			  //为托盘程序加入设定好的ContextMenu对象 
			  this.SuspendLayout ( ) ; 
			  this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ; 
			  this.ClientSize = new System.Drawing.Size ( 320 , 56 ) ; 
			  this.ControlBox = false ; 
			  this.MaximizeBox = false ; 
			  this.MinimizeBox = false ; 
			  this.WindowState = System.Windows.Forms.FormWindowState.Minimized ; 
			  this.Name = "capture" ; 
			  this.ShowInTaskbar = false ; 
			  this.Text = "用C#做屏幕捕获程序!" ; 
			  this.ResumeLayout ( false ) ; 
		  } 
		  static void Main ( ) 
		  { 
			  Application.Run ( new Capture ( ) ) ; 
		  } 
	  } 
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -