這是我的代碼只是截屏整個屏幕。 它工作了幾次後,拋出異常。爲什麼即時獲取Win32Exception:操作成功完成?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
namespace Capture_ScreenShots
{
public partial class Form1 : Form
{
string bfbc;
string save_location;
int save_image;
int screenWidth;
int screenHeight;
public Form1()
{
InitializeComponent();
save_location = @"c:\screenshots\sc1\";
timer1.Enabled = true;
timer1.Interval = 200;
save_image = 0;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void timer1_Tick(object sender, EventArgs e)
{
save_image = save_image + 1;
bfbc = save_location + save_image.ToString("D3") + ".jpg";
screenWidth = Screen.GetBounds(new Point(0, 0)).Width;
screenHeight = Screen.GetBounds(new Point(0, 0)).Height;
Bitmap bmpScreenShot = new Bitmap(screenWidth, screenHeight);
Graphics gfx = Graphics.FromImage((Image)bmpScreenShot);
gfx.CopyFromScreen(0, 0, 0, 0, new Size(screenWidth, screenHeight));
bmpScreenShot.Save(bfbc, ImageFormat.Jpeg);
}
}
}
唯一的例外是上線:
gfx.CopyFromScreen(0, 0, 0, 0, new Size(screenWidth, screenHeight));
這是異常消息:
System.ComponentModel.Win32Exception was unhandled
HResult=-2147467259
Message=The operation completed successfully
Source=System.Drawing
ErrorCode=-2147467259
NativeErrorCode=0
StackTrace:
at 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 Capture_ScreenShots.Form1.timer1_Tick(Object sender, EventArgs e) in d:\C-Sharp\Capture_ScreenShots\Capture_ScreenShots\Capture_ScreenShots\Form1.cs:line 44
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Capture_ScreenShots.Program.Main() in d:\C-Sharp\Capture_ScreenShots\Capture_ScreenShots\Capture_ScreenShots\Program.cs:line 18
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
不知道爲什麼異常發生。 它工作正常,但只有很短的時間。