windows - 从 Windows 服务更改显示分辨率 (Windows 7)

标签 windows api service system

( 大家好。我是 Windows 编程的新手,所以如果已经有人问过我,我提前道歉,我只是不知道要搜索什么,但这个问题一直让我发疯,我知道有人可能真的很容易回答这个问题。)

我的公司有一个在 Windows 7 中作为服务运行的应用程序。我的任务是编写代码来更改显示设置,但我显然无法通过系统服务执行此操作。我创建了一个小的可执行文件,它用大约 5-10 行代码将颜色深度更改为 8bpp,但是当我将这段代码放入我的应用程序时,它返回成功但实际上并没有成功(没有任何变化)。

在不完全了解 Windows 编程如何工作的情况下,我已经设法尝试了上百万种不同的方法来让它工作,但都无济于事。有人可以帮我找到我需要做什么才能使此代码正常运行吗?

最佳答案

在 Vista 和更高版本中,服务在不同的 session (session 0) 中运行,并与交互式桌面隔离。这意味着您从该服务运行的代码根本无法进行您想要的更改。显而易见的结论是您需要在交互式桌面中运行代码。

现在您可以做到这一点,但实现起来并不容易。您需要做的是安排您的服务启动一个在交互式桌面上运行的进程:Launching an interactive process from Windows Service in Windows Vista and later .必须进行更改的是该过程,而不是服务。

虽然有可能实现您想要的,但我认为您应该将所涉及的困难视为一个信号,以审查您提出的方法是否是解决您的根本问题的最佳解决方案。

关于windows - 从 Windows 服务更改显示分辨率 (Windows 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9487879/

相关文章:

android - 服务上的 OnBind() 总是返回 False - Android

javascript - 从 Windows 应用程序中的 MainPage.xaml.cs 代码隐藏文件调用 javascript 函数

android - 如何从 phonegap 上的服务器访问 Assets 资源

c - 微过滤器驱动程序在后期操作中附加到用户缓冲区

api - wso2 api管理器碳页面给出了403禁止

Apache Tomac Web 服务器和 LOG4J 框架

java - 超时后从 Java 锁定 Windows 桌面

javascript - 如何从 native Function API 将字符串输出到 HTML 文档页面

php - 如何通过在laravel中传递参数来获取内容类型application/x-www-form-urlencoded的响应

java - 在后台启动应用程序