(嗨,大家。我对Windows编程很陌生,所以如果已经有人问我这个问题,我提前道歉,我只是不知道该搜索什么,但这个问题一直让我发疯,我知道有人可能很容易回答这个问题。)
我的公司有一个在Windows 7中作为服务运行的应用程序。我的任务是编写代码来更改显示设置,但我显然无法从系统服务中执行此操作。我创建了一个小的可执行文件,在大约5-10行代码中将颜色深度更改为8bpp,但是当我将此代码放在我的应用程序中时,它会返回成功但实际上并没有成功(没有任何更改)。
如果没有对Windows编程如何工作的掌握知识,我已经设法尝试了一百万种不同的东西来使其工作,但无济于事。有人可以帮我找到我需要做的事情来使这个代码功能化吗?
答案 0 :(得分:6)
在Vista和向上服务在不同的会话(session 0)中运行,并与交互式桌面隔离。这意味着您从服务运行的代码无法进行所需的更改。显而易见的结论是,您需要在交互式桌面中运行代码。
现在你可以做到这一点,但实现起来并不容易。您需要做的是安排您的服务启动在交互式桌面上运行的进程:Launching an interactive process from Windows Service in Windows Vista and later。这个过程而不是服务是必须做出改变的。
尽管可以实现您想要的目标,但我认为您应该将所涉及的困难视为一个信号,以检查您提出的方法是否是解决您的潜在问题的最佳解决方案。