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);
这种方法一旦做成服务,获取的就是黑的图片,有的说要允许服务与桌面交互,我设置了也没用不知道是什么问题,有没有人知道啊
http://www.cnblogs.com/datacool/p/CreateProcessAsUser_Win_api.html
CreateProcessAsUser,C#写的windows服务弹框提示消息或者启动子进程
提示:
1、服务如果是运行在Win7以上的系统上服务程序是没有权限与桌面交互的。
2、请仔细阅读上面的博文,建议截图的程序写成一个单独的exe,服务程序只要去指定的文件夹下取最新的截图就可以了。或者使用其他的存储方式。
我这边服务权限已经提升到顶级(system)了 与桌面交互 也已勾选,为什么还是获取不到呢