首页 新闻 会员 周边 捐助

如何在windows服务中对桌面截图

0
悬赏园豆:10 [已解决问题] 解决于 2017-09-01 15:15

windows服务程序如何对桌面截图

我在网络中找到了好几种方法,

 IntPtr dc1 = CreateDC("DISPLAY", null, null, (IntPtr)null);
                    //创建显示器的DC
                    Graphics g1 = Graphics.FromHdc(dc1);
                    //由一个指定设备的句柄创建一个新的Graphics对象
                    Bitmap MyImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, g1);
                    //根据屏幕大小创建一个与之相同大小的Bitmap对象  
                    Graphics g2 = Graphics.FromImage(MyImage);
                    //获得屏幕的句柄
                    IntPtr dc3 = g1.GetHdc();
                    //获得位图的句柄
                    IntPtr dc2 = g2.GetHdc();
                    //把当前屏幕捕获到位图对象中
                    BitBlt(dc2, 0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, dc3, 0, 0, 13369376);

 

这种方法一旦做成服务,获取的就是黑的图片,有的说要允许服务与桌面交互,我设置了也没用不知道是什么问题,有没有人知道啊

高软玩家的主页 高软玩家 | 菜鸟二级 | 园豆:217
提问于:2017-08-31 11:49
< >
分享
最佳答案
0

http://www.cnblogs.com/datacool/p/CreateProcessAsUser_Win_api.html

CreateProcessAsUser,C#写的windows服务弹框提示消息或者启动子进程

提示: 

1、服务如果是运行在Win7以上的系统上服务程序是没有权限与桌面交互的。

2、请仔细阅读上面的博文,建议截图的程序写成一个单独的exe,服务程序只要去指定的文件夹下取最新的截图就可以了。或者使用其他的存储方式。

收获园豆:10
数据酷软件 | 初学一级 |园豆:130 | 2017-08-31 13:45

我这边服务权限已经提升到顶级(system)了 与桌面交互 也已勾选,为什么还是获取不到呢

高软玩家 | 园豆:217 (菜鸟二级) | 2017-08-31 18:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册