C#上的快照(没有安装显示器甚至显卡)

时间:2010-12-12 09:48:34

标签: c# screenshot

我正在尝试记录我的小程序(视频和音频)中发生的所有事情。我在论坛上发现人们提到如果在没有显示器的机器上制作屏幕截图可能会出现大问题 - 没有显示器物理连接或显卡处于睡眠模式或甚至没有安装显卡(服务器)。有没有办法解决这个问题?目前我无法访问服务器,甚至不知道它的配置((

目前我正在使用此代码每50毫秒制作一次快照,它在台式机上运行良好(如果没有显示器则无法检查此代码......我正在使用HP touchsmart单块桌面)

            IntPtr myIntptr = FormElement.Handle;
            int hwndInt = myIntptr.ToInt32();
            IntPtr hwnd = myIntptr;
            Bitmap bm = new Bitmap(FormElement.Width, FormElement.Height);
            Graphics g = Graphics.FromImage(bm);
            IntPtr hdc = g.GetHdc();
            bool result = PrintWindow(hwnd, hdc, 0);
            g.ReleaseHdc(hdc);
            g.Flush();
            if (result == true)
            {
                bm.Save(aFileName, ImageFormat.Jpeg);
            }
如果我最小化我的窗口,那么这项工作也很有效。

对不起我的英语和感谢任何建议。

1 个答案:

答案 0 :(得分:0)

试试这样:

public static void ScreenCapture(string filename, int width, int height)
{
    var bounds = new Rectangle(0, 0, width, height);
    using (var bitmap = new Bitmap(bounds.Width, bounds.Height))
    using (Graphics g = Graphics.FromImage(bitmap))
    {
        g.CopyFromScreen(
            new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size
        );
        bitmap.Save(filename, ImageFormat.Jpeg);
    }
}