简介: 我是一名管理员,目前在《狙击精英V2》游戏的专用服务器上工作。SEV2 的专用服务器在控制台应用程序的 Windows 下运行。我们也可以使用 wineHQ 在 Linux 下运行这个应用程序。一切都很好,除了控制台在新窗口中启动,所以没有控制台输入/输出(链接:http: //img802.imageshack.us/img802/650/sev22.png)。此外,我们可以读取(使用 HEX 编辑器)“该程序不能在 DOS 模式下运行”。我的目标是恢复 DOS 兼容性。
我的想法是创建另一个用C++(使用 CodeBlocks)编写的控制台应用程序。这个“钩子”应该检索专用服务器“窗口”的内容(文本)并将其显示出来,当然也可以向专用服务器控制台输入命令。像这样,我们将能够在 Windows 和 Linux 上使用输入/输出。我花时间画了一个小架构:http: //img195.imageshack.us/img195/3017/29585679.png
我的问题是:如何做到这一点?我应该使用哪些功能?
在这一点上,我被困住了。我尝试了以下方法:
FUNC " AttachConsole
" 失败。
以下伪代码也失败了:
mainWindow = FindWindow( TEXT("ConsoleWindowClass"), NULL) );
console = FindWindowEx( mainWindow, NULL, TEXT("ConsoleWindowClass"), NULL );
SendMessage(
console,
WM_GETTEXT,
sizeof(buffer) / sizeof(TCHAR),
(LPARAM)buffer);
我正在使用一个名为“ WinSpy++
”的工具来帮助我,但该工具本身无法检索/输入数据到Sniper Elite V2 专用服务器。
欢迎任何想法/示例/反思:-)