gpt4 book ai didi

c# - Windows 服务启动 winforms 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:40 25 4
gpt4 key购买 nike

我有这个问题,我写了一个 WinForms 应用程序,我已经使用了一段时间没有问题。接下来我只是编写了一个 Windows 服务来自动启动/停止我的 winforms 应用程序。但是现在窗口没有显示,并且在任务管理器中它正在运行。此外,为了测试我的服务,首先它是一个控制台应用程序,因此 Console.WriteLine() 可用于显示数据、状态、变量等,一旦它成为一项服务,就不再是控制台了。那么,这是我想念的任何东西吗?

好吧,我需要的是启动/停止 winform 应用程序的服务。就是监控之类的。因此,如果 winform 应用程序未运行,则创建一个进程并启动它。但如果是午夜,则应用程序不应运行,然后服务会找到该进程并将其关闭。我不想将 winform 应用程序变成服务,或将服务变成 winform 应用程序。

我首先想到的只是将我的 winforms 应用程序的快捷方式放在“启动”文件夹中以启动它,但我需要关闭它,和/或重新启动它。这就是我编写服务的原因。

谢谢!

最佳答案

从 Windows Vista 开始,服务无法直接与桌面交互,这意味着它无法生成可见的表单。

即使您将其设置为尝试这样做,您也只能得到一个 UAC 风格的提示,向用户表明您的程序希望显示的内容。这是我们尝试执行此操作时的结果:How can a Windows service execute a GUI application?

我们有一个 Windows 应用程序绝对需要与桌面交互,它最初是作为 Windows 服务编写的。为了绕过这些限制,我们被迫将其编写为 WinForms 应用程序,并将主窗体的 Visible 属性设置为“false”。当我们需要显示它时,我们将它设置为“true”。这是一个 hack,我们知道,但我们永远找不到更好的解决方案。

这篇文章确实提供了替代方案。他们对我们不起作用,但也许您的情况有所不同。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms683502(v=vs.85).aspx

关于c# - Windows 服务启动 winforms 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8249879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com