我正在使用下面的代码来截取我的桌面,它在我的本地机器上正常运行但是只要我在服务器上传文件就不会拍摄屏幕并抛出错误。
错误:句柄无效
System.ComponentModel.Win32Exception(0x80004005):句柄是 在System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY,Int32 destinationX,Int32 destinationY,Size blockRegionSize,CopyPixelOperation copyPixelOperation)at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX,Int32 sourceY, Int32 destinationX,Int32 destinationY,Size blockRegionSize)at Main.Capture(String CapturedFilePath) System.ComponentModel.Win32Exception(0x80004005):句柄是 在System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY,Int32 destinationX,Int32 destinationY,Size blockRegionSize,CopyPixelOperation copyPixelOperation)at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX,Int32 sourceY, Int32 destinationX,Int32 destinationY,Size blockRegionSize)at Main.Capture(String CapturedFilePath) System.ComponentModel.Win32Exception(0x80004005):句柄是 在System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY,Int32 destinationX,Int32 destinationY,Size blockRegionSize,CopyPixelOperation copyPixelOperation)at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX,Int32 sourceY, Int32 destinationX,Int32 destinationY,Size blockRegionSize)at Main.Capture(String CapturedFilePath)
代码背后的我的Asp.net代码如下:
Bitmap bitmap = new Bitmap(2700, 800);
Graphics graphics = Graphics.FromImage(bitmap as System.Drawing.Image);
graphics.CopyFromScreen(25, 25, 25, 25, bitmap.Size);
using (MemoryStream ms = new MemoryStream())
{
// bitmap.Save(@"d:\\Screen", ImageFormat.Jpeg);
bitmap.Save(ms, ImageFormat.Jpeg);
Ret = ms.ToArray();
}
答案 0 :(得分:3)
你想要达到什么目的?如果你想截取用户桌面的截图 - 不可能从C#(即服务器端)。
如果您正在尝试拍摄服务器的屏幕截图 - 它有点没用。它不适合您,因为服务器上根本没有桌面:ASP.NET由IIS托管,它作为服务登录,因此无法访问服务器的桌面。