( 大家好。我是 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/