windows - 没有窗口的 SDL(Windows 服务)

标签 windows service window sdl

我需要在 Windows 中将 SDL 作为服务应用程序的一部分使用。

应用基础只是对用SDL打开的3D文件进行截图,开箱即用。

问题是当应用程序在 Windows 的服务上下文中启动时,SDL_Init 会报错。

No displays available

我知道,如果我不使用窗口,我将不会有来自键盘和鼠标的输入,反正我的应用程序不需要它们。

有什么方法可以让 SDL 在 Windows 上脱离屏幕吗?听说过 mesa/osmesa,不过好像只在 Linux 上有

最佳答案

在我看来,这可以通过更改您的服务属性以及可能使用 Windows 注册表的一些技巧来完成。我没有尝试过,但这篇文章及其评论可能有用:https://lostechies.com/keithdahlby/2011/08/13/allowing-a-windows-service-to-interact-with-desktop-without-localsystem/ .这是有关该主题的 MSDN 条目(请参阅“使用交互式服务”部分):https://msdn.microsoft.com/en-us/library/windows/desktop/ms683502%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 .虽然至少 MSDN 文章看起来是从通过 GUI 与用户进行服务交互的角度来解决这个问题,但与服务与图形的交互有点不同。

有一次我遇到一个使用 SDL 的应用程序,但在从服务启动时未能正确初始化自身。将环境变量 SDL_VIDEODRIVER 设置为“虚拟”对我有帮助。应用程序的图形功能看起来在此设置下工作正常(尽管我非常不确定这是否足以满足您涉及打开 3D 文件的用例)。

关于windows - 没有窗口的 SDL(Windows 服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26421595/

相关文章:

java - 如何在 Windows 上使用 Ubuntu 中的 Windows JDK 构建我的 Gradle 项目?

windows - JetBrains PyCharm : Length of PATH is bigger than 8192 bytes

Delphi:显示窗口而不激活

c++ - 编辑框闪烁

c# - 如果所有者 hwnd、类名和窗口大小已知,则获取窗口 hwnd

windows - 为什么 LogonUser(...) 不适用于域帐户?

C++ 指向字节数组优化的指针

android - Android 的 JobIntentService 文档中提到的 "JobService execution time limit"有多长?

android - 重复上传数据到服务器

c# - PostAsync() 方法在点网核心窗口服务中不起作用