【问题标题】:How to have a program screenshot itself when ran as a windows service? [duplicate]当作为 Windows 服务运行时,如何让程序本身截图? [复制]
【发布时间】:2012-04-10 19:10:59
【问题描述】:

可能重复:
Screenshot of process under Windows Service

我试图或多或少地模仿 Infopath Form Services。所以我希望能够通过移动设备批准或不批准表格(用户将通过电子邮件收到通知)。我有能力批准/不批准表格,但问题是我需要能够对我的程序进行屏幕截图以进行详细的错误报告(以防在批准过程中出现问题)(屏幕截图过程已经实现) .我需要能够在没有任何用户登录的情况下在服务器上运行程序。这就是问题所在。如果我将程序作为服务运行,我没有得到交互式窗口,但我有能力让我的程序总是跑。所以我需要能够在计算机启动时启动程序,并让它能够自己截图。

有什么方法可以让 Windows 服务在启动时有一个交互式窗口,即使它在屏幕上绘制并且用户永远看不到,或者有一种方法可以模拟/伪造我的程序的窗口,以便它可以自行截屏实际上不需要交互式窗口?

另外,我的程序是在 .NET 框架上用 c# 编写的

【问题讨论】:

  • 截图方法有效,即我有能力捕获我的窗口并将其保存到文件中。出现问题是因为我需要能够在没有用户登录的情况下运行这个程序,所以我不能显示一个窗口。因此,我需要找到一种方法来将 GUI 程序作为能够访问其自己的 GUI 的服务来运行,或者找到一种使我的程序始终运行的不同方法。
  • 如果程序在正常运行时不应该有GUI,为什么要截屏呢?曾经?只需收集您将在屏幕上显示为错误报告文本的信息。
  • 它目前有一个 GUI,它确实需要它(我需要能够打开一个 infopath 表单并对其进行截图),所以我需要 GUI。但我还需要程序始终运行,无论用户是否登录。我已经阅读了 Gabe 链接到的帖子,但它没有回答我的问题,因为即使没有用户登录,我也会运行 GUI 部分。所以在用户登录时启动 GUI 部分是行不通的。

标签: c# .net service screenshot infopath


【解决方案1】:

除了服务没有要呈现的桌面这一事实之外......

我们没有按照您尝试的方式在服务器上实现 InfoPath 表单的呈现,因为它根本无法正常工作。您可以作弊一段时间,但在服务器上以无头服务模式运行 Office 应用程序是个坏主意。您还会遇到有趣的问题,因为用户的身份与进程身份不匹配(即无法查询 ACL 的数据)。

你的选择:

  • 如果您只需要批准,请删除 InfoPath 部分。
  • 使用现有的移动表单解决方案。 Forms Services 中有一些对移动表单的支持,如果可以的话,您可以拥有专门针对移动设备的非常简单的视图。 InfoPath 表单的移动呈现也有现有的解决方案。
  • 诚实地实现表单的呈现。 XSN 格式已记录在案...
  • 在单独的计算机上呈现 InfoPath,每次登录一个用户...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多