首页 新闻 会员 周边 捐助

Window服务下,如何截屏(全屏)。。。

0
悬赏园豆:10 [待解决问题]

我的是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);
            }
        }

O(∩_∩)O~。的主页 O(∩_∩)O~。 | 初学一级 | 园豆:95
提问于:2011-08-25 23:58
< >
分享
所有回答(1)
0

Windows服务运行时是作为中服务的形式,类似于命令行,估计截获不到屏幕吧
如果你的程序有界面交互,那最好不要作为服务部署

2012 | 园豆:21445 (高人七级) | 2011-08-26 13:15
我勾选了,服务的可与桌面交互的选项。。。
支持(0) 反对(0) O(∩_∩)O~。 | 园豆:95 (初学一级) | 2011-08-26 14:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册