[VS2005]
玩魔兽世界的时候,发现有个截图功能;
按PrtScSysRq键,就会以jpg格式保存当前屏幕图片到指定目录;我想模拟做一个这样的功能:
在Form1窗体运行后,按下PrtScSysRq键,就保存屏幕图片到C盘,以当前日期时间为图片的文件名(20090612120445.jpg);
//20090612120445=2009年6月12日12:04:45
谁能给个链接资源什么的都可以,想研究下;
[注:请不要回复UP,绝对无分]

解决方案 »

  1.   

    判断下PrtScSysRq键 触发事件,图片信息这时候被载入内存了
    想办法键个能承载图片内容的文件,打开后粘贴下就应该可以了,
    接着再把文件移到C盘
      

  2.   

    如果是屏幕的,
    http://www.wangqi.com/html/2007-01/9392.htm
    看这个吧。
    视频的话,就难了。
      

  3.   

    事件里面写
    1.模拟出发键盘按键PrintScreen键
    2.将保存在剪切板里面的信息读取到FileStream中
    3.用Image类实现FileStream中的图片
    4.将文件保存为DateTime.Now.ToString("yyyyMMddHHmmss")好像就是这样吧
      

  4.   

    很想知道,你把游戏最小化后,按下PrintScreen 你在那个目录下能看到什么样的图片
      

  5.   


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace SMGe
    {
        public partial class Form截图2 : Form
        {
            public Form截图2()
            {
                InitializeComponent();
            }        private void Form截图2_Load(object sender, EventArgs e)
            {        }        private void button1_Click(object sender, EventArgs e)
            {
                Get截图();
            }        //显示截图窗口
            void Get截图()
            {
                Image img = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height);
                Graphics g = Graphics.FromImage(img);
                g.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.AllScreens[0].Bounds.Size);
                Form截图 body = new Form截图();
                body.BackgroundImage = img;//img已获取屏幕图片,并设置为窗体的背景色,如何把img保存在C盘:A.jpg
                body.Show();
            }
        }
    }
    //img已获取屏幕图片,并设置为窗体的背景色,
    如何把img保存在C盘:A.jpg
      

  6.   

    img.Save(@"c:\A.jpg",ImageFormat.Jpeg); 不能保存?
      

  7.   

    谢谢4楼,10楼的帮助,结贴        private void button1_Click(object sender, EventArgs e)
            {
                Image img = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height);
                Graphics g = Graphics.FromImage(img);
                g.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.AllScreens[0].Bounds.Size);
                string name = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() +
                    DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
                img.Save(@"C:\" + name + ".jpg", ImageFormat.Jpeg);            g.Dispose();
                img.Dispose();
            }
      

  8.   


    object a=new object();
    if (Clipboard.ContainsImage())
    {
        a = Clipboard.GetData(DataFormats.Bitmap);
        Image b = (Image)a;
        string name = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() +DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();     b.Save(@"C:\"+name+".bmp");
    }
      

  9.   

    13楼的方法貌似更好:
            private void timer1_Tick(object sender, EventArgs e)
            {
                object a = new object();
                if (Clipboard.ContainsImage())
                {
                    a = Clipboard.GetData(DataFormats.Bitmap);
                    Image b = (Image)a;
                    string name = DateTime.Now.ToString("yyyyMMddHHmmss");                b.Save(@"C:\" + name + ".jpg");
                }            base.Dispose();
                Clipboard.Clear();
            }