首页 > 一个抓取电脑屏幕的小控件台程序

一个抓取电脑屏幕的小控件台程序

一个抓取电脑屏幕的小控件台程序

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Drawing;

using System.Drawing.Imaging;



namespace DeskRegistrar

{

    
class Program

    {

        
//声明一个API函数

        [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]

        
private static extern bool BitBlt(

             IntPtr hdcDest, 
// 目标 DC的句柄

             int nXDest,

             
int nYDest,

             
int nWidth,

             
int nHeight,

             IntPtr hdcSrc,  
// 源DC的句柄

             int nXSrc,

             
int nYSrc,

             System.Int32 dwRop  
// 光栅的处理数值

             );



        [System.Runtime.InteropServices.DllImportAttribute(
"gdi32.dll")]

        
private static extern IntPtr CreateDC(

            
string lpszDriver,   //   驱动名称   

            string lpszDevice,   //   设备名称   

            string lpszOutput,   //   无用,可以设定位"NULL"   

            IntPtr lpInitData    //   任意的打印机数据   

            );



        
static void Main(string[] args)

        {



            System.Threading.Timer timer 
= new System.Threading.Timer(delegate(Object o)

            {

                IntPtr dc1 
= CreateDC("DISPLAY"nullnull, (IntPtr)null);

                
//创建显示器的DC   

                Graphics g1 = Graphics.FromHdc(dc1);

                
//由一个指定设备的句柄创建一个新的Graphics对象   

                Image 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, 00, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, dc3, 0013369376);

                
//把当前屏幕拷贝到位图中   

                g1.ReleaseHdc(dc3);

                
//释放屏幕句柄   

                g2.ReleaseHdc(dc2);

                
//释放位图句柄   

                MyImage.Save(AppDomain.CurrentDomain.BaseDirectory + "\" + DateTime.Now.ToString("yyyyMMddHHmmss"+ ".jpg", ImageFormat.Jpeg);

                
//MessageBox.Show("已经把当前屏幕保存到C:\MyJpeg.jpg文件中!"); 

            }, null03000);



            Console.Read();

        }

    }

}

转载于:https://www.cnblogs.com/gleamy_ming/archive/2009/03/20/1418067.html

更多相关:

  • 提示: 函数将关闭通道上的所有标记, 放弃未处理的缓冲区并返回给程序;//声明: midiOutReset(hMidiOut: HMIDIOUT {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:}MMSYSERR_INVALHANDLE = 5; {设备句柄无效}//举例:...