惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
博客园 - 司徒正美
美团技术团队
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Troy Hunt's Blog
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
B
Blog
NISL@THU
NISL@THU
月光博客
月光博客
博客园 - 【当耐特】
AWS News Blog
AWS News Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
腾讯CDC
L
Lohrmann on Cybersecurity
The Cloudflare Blog
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
S
Secure Thoughts
Spread Privacy
Spread Privacy
有赞技术团队
有赞技术团队
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Vercel News
Vercel News
H
Hacker News: Front Page
S
SegmentFault 最新的问题
Schneier on Security
Schneier on Security
aimingoo的专栏
aimingoo的专栏
P
Privacy & Cybersecurity Law Blog
博客园 - 三生石上(FineUI控件)
Forbes - Security
Forbes - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
InfoQ
T
Tailwind CSS Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
GRAHAM CLULEY
W
WeLiveSecurity
小众软件
小众软件
Recorded Future
Recorded Future
Cyberwarzone
Cyberwarzone
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

博客园 - 井泉

http多线程下载断点续传 投票程序2 图像识别 Using The Office 2007 OCR Component in C# 投票程序 - 井泉 - 博客园 httptunnel (转)使用VS.Net IDE调试JavaScript WebBrowser页面与WinForm交互技巧 ICallbackEventHandler实现无刷新回调 创建完全可编辑的 DataGrid [Oracle]对数据库字段使用默认值 VS2005中使用C#的新特性:可空类型 如何通过需要验证的邮件服务器发送邮件? DataGrid/DataList,你会用了吗? 作者- heone 用ASP.NET建立一个在线RSS新闻聚合器 ASP.NET程序中常用的三十三种代码 Effective C# 在ASP.NET中实现AJAX 101代码示例 net2.0类库 C# 3.0语言详解之基本的语言增强 打印小结
抓屏(转)
井泉 · 2007-11-20 · via 博客园 - 井泉

using   System;  
  using   System.Windows.Forms;  
  using   System.Drawing;  
  using   System.Drawing.Imaging;  
  using   System.Runtime.InteropServices;  
   
   
  namespace   PrintScreen  
  {  
          //一部分代码来自网络  
          [StructLayout(LayoutKind.Sequential)]  
          public   struct   RECT    
          {  
                  public   int   left;  
                  public   int   top;  
                  public   int   right;  
                  public   int   bottom;  
          }    
          //封装一部分api的类  
          public   class   apitmp    
          {  
                  [DllImport("user32.dll")]  
                  public   static   extern   bool   GetCursorPos(ref   Point   lpPoint);  
                  [DllImport("user32.dll")]  
                  public   static   extern   int   WindowFromPoint(   Point   lpPoint);  
                  [DllImport("user32.dll")]  
                  public   static   extern   IntPtr   GetDesktopWindow();  
                  [DllImport("user32.dll")]  
                  public   static   extern   int   GetForegroundWindow();  
                  [DllImport("user32.dll")]  
                  public   static   extern   int   GetWindowRect(int   hwnd,   ref   RECT   rc);    
                  [DllImport("user32.dll")]  
                  public   static   extern   int   GetWindowDC(   int   hwnd);  
                  [DllImport("Gdi32.dll")]  
                  public   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   //   光栅的操作值  
                          )   ;  
                  [DllImportAttribute   (   "gdi32.dll"   )   ]  
                  public   static   extern   IntPtr   CreateDC   (  
                          string   lpszDriver   ,   //   驱动名称  
                          string   lpszDevice   ,   //   设备名称  
                          string   lpszOutput   ,   //   无用,可以设定位"NULL"  
                          IntPtr   lpInitData   //   任意的打印机数据  
                          )   ;  
   
          }  
   
          //封装各种抓屏操作的类  
          public   class   UCapture    
          {  
                  //获得屏幕指定区域    
                  public   Bitmap   getscreen(int   left,int   top   ,int   width,int   height)  
                  {  
                          IntPtr   dc1   =   apitmp.CreateDC   (   "DISPLAY"   ,   null   ,   null   ,   (   IntPtr   )   null   )   ;  
                          Graphics   newGraphics   =   Graphics.FromHdc(dc1);  
                          Bitmap   img   =   new   Bitmap(width   ,   height   ,newGraphics);  
                          Graphics   thisGraphics   =   Graphics.FromImage(img);  
                          IntPtr   dc2   =thisGraphics.GetHdc();  
                          IntPtr   dc3   =   newGraphics.GetHdc();  
                          apitmp.BitBlt(dc2,0,0,width   ,   height   ,dc3,left,top,13369376);  
                          thisGraphics.ReleaseHdc(dc2);  
                          newGraphics.ReleaseHdc(dc3);  
                          return   img;  
                  }  
                  //获得整个屏幕  
                  public   Bitmap   getfullscreen()  
                  {  
                          return   getscreen(0,0,Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height);  
                  }  
                  //抓取句柄所指窗口  
                  public   Bitmap   getscreenfromhandle(int   hwnd)  
                  {  
                          RECT   rc   =   new   RECT();  
                          apitmp.GetWindowRect(hwnd,   ref   rc);  
                          return   getscreen(rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top);  
                  }  
                  //抓取

活动窗口  
                  public   Bitmap   getscreenfromactivewindow()  
                  {  
                          int   handle   =   apitmp.GetForegroundWindow();  
                          return   getscreenfromhandle(handle);  
                  }  
                  //保存成各种格式  
                  public   string   savepic(Bitmap   bmp)  
                  {  
                          SaveFileDialog   saveDialog   =   new   SaveFileDialog();  
                          saveDialog.Filter   =   "位图文件   (*.bmp)|*.bmp|jpg文件   (*.jpg)|*.jpg|gif文件   (*.gif)|*.gif|tiff文件   (*.tiff)|*.tiff|"+  
                                  "emf文件   (*.emf)|*.emf|图标文件   (*.ico)|*.ico|wmf文件   (*.wmf)|*.wmf|png文件   (*.png)|*.png";  
                          saveDialog.DefaultExt="*.bmp";  
                          if(saveDialog.ShowDialog()   ==   DialogResult.OK)  
                          {  
                                  string   ext   =   saveDialog.FileName.Substring(saveDialog.FileName.Length-4,4);  
                                  switch(   ext)  
                                  {    
                                          case   ".bmp":  
                                                  bmp.Save(saveDialog.FileName,ImageFormat.Bmp);  
                                                  break;    
                                          case   ".gif":    
                                                  bmp.Save(saveDialog.FileName,ImageFormat.Gif);  
                                                  break;  
                                          case   ".jpg":    
                                                  bmp.Save(saveDialog.FileName,ImageFormat.Jpeg);  
                                                  break;  
                                          case   ".emf":  
                                                  bmp.Save(saveDialog.FileName,ImageFormat.Emf);  
                                                  break;    
                                          case   ".ico":    
                                                  bmp.Save(saveDialog.FileName,ImageFormat.Icon);  
                                                  break;  
                                          case   ".wmf":    
                                                  bmp.Save(saveDialog.FileName,ImageFormat.Wmf);  
                                                  break;  
                                          case   ".png":    
                                                  bmp.Save(saveDialog.FileName,ImageFormat.Png);  
                                                  break;  
                                          case   ".tiff":    
                                                  bmp.Save(saveDialog.FileName,ImageFormat.Tiff);  
                                                  break;  
                                          default   :  
                                                  return   "";  
                                  }    
                                  return   saveDialog.FileName;  
                          }  
                          return   "";  
                  }  
          }  
  }