在win7上做的后台服务(service)截屏失败,怎么实现?

xiaoxinghappy 2014-08-14 05:10:09
截屏发生下面的错误,
System.ComponentModel.Win32Exception: 句柄无效。
在 System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation)

截屏的代码如下,
using (Bitmap bmp = new Bitmap(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height))
{
using (Graphics gp = Graphics.FromImage(bmp))
{
gp.CopyFromScreen(0, 0, 0, 0, bmp.Size, CopyPixelOperation.SourceCopy);
gp.Save();
}
}

这个普通的桌面应用上是正常的,放到service里就出错了,怎么在后台服务里实现截屏呢?
...全文
503 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongheijituan 2014-10-13
  • 打赏
  • 举报
回复
楼主解决问题没有?可已经找到了比较合适的解决办法?
xiaoxinghappy 2014-08-18
  • 打赏
  • 举报
回复
查了资料,解释说现在win7系统服务运行在session0,而应用程序运行在session1,这两个是没有交集的,而突破这个限制就叫做突破session0隔离,当然也找到了突破这个隔离的代码,但是不理想的是这个要用service单独再调用一个应用程序,来完成用户交互方面的工作,就好比我要再单独做一个应用程序来实现截屏,那么我还要把截屏保存成文件,然后由service来读取这个文件了,能不能不保存文件而让service 得至截屏的数据呢?
於黾 2014-08-15
  • 打赏
  • 举报
回复
你在服务里启动另一个程序,让它使用当前登陆用户启动,然后它来截屏.
於黾 2014-08-15
  • 打赏
  • 举报
回复
这个和WIN7还是XP无关吧 windows都是多用户系统,不同用户看到的界面不一样 服务和登陆用户不在一个用户下
xiaoxinghappy 2014-08-15
  • 打赏
  • 举报
回复
截屏截过来是全黑的,是否要调用一个前面应用来截屏?
rtdb 2014-08-14
  • 打赏
  • 举报
回复
在WIN7,后台服务和UI是完全隔离的,不可能有交互操作。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧