我的是Win 64位,在XX Window服务启动后希望截屏保存到指定文件夹,发现保存的是黑屏,在测试界面测试该方法,没问题,Coding如下:
/// <summary>
/// 截屏保存目录
/// </summary>
readonly string _screenPicUrl = AppDomain.CurrentDomain.BaseDirectory + @"Loveing\Pic";
/// <summary>
/// 截取屏幕
/// </summary>
private void PrinScreen()
{
try
{
Thread.Sleep(2000);
//创建保存目录
if (!Directory.Exists(_zipFolderUrl))
Directory.CreateDirectory(_zipFolderUrl);
if (!Directory.Exists(_screenPicUrl))
Directory.CreateDirectory(_screenPicUrl);
//获得当前屏幕的分辨率
Screen scr = Screen.PrimaryScreen;
Rectangle rc = scr.Bounds;
int iWidth = rc.Width;
int iHeight = rc.Height;
//创建一个和屏幕一样大的Bitmap
Image myImage = new Bitmap(iWidth, iHeight);
//从一个继承自Image类的对象中创建Graphics对象
Graphics g = Graphics.FromImage(myImage);
//抓屏并拷贝到myimage里
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));
string url = _screenPicUrl + @"\" + DateTime.Now.ToString("yyyymmddhhmmss") + ".jpg";
//保存为文件
myImage.Save(url);
}
catch (Exception ex)
{
WriteLog("截屏异常:\r\n" + ex);
}
}
Windows服务运行时是作为中服务的形式,类似于命令行,估计截获不到屏幕吧
如果你的程序有界面交互,那最好不要作为服务部署