简介: 我是一名管理员,目前正在致力于“Sniper Elite V2”游戏的专用服务器。 SEV2的专用服务器在控制台应用程序的窗口下运行。 wineHQ也可以在Linux下运行此应用程序。一切都很好,除了控制台是在新窗口中启动的,所以没有办法控制台输入/输出(链接:http://img802.imageshack.us/img802/650/sev22.png)。此外,我们可以阅读(使用HEX编辑器)“该程序不能在DOS模式下运行”。我的目标是恢复DOS兼容性。C++从远程控制台应用程序中检索内容
我的想法是创建另一个编写在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++
”帮我的工具,但工具无法本身检索/输入数据到狙击精英V2专用服务器。
任何想法/例子/反射欢迎:-)
'AttachConsole'是正确的方法。为什么它“失败”? – Maximus 2012-07-31 20:38:23
但是,不明白这个想法。您是否想同时从**两个控制台读取/写入?并不确定创建的流程树。你说葡萄酒。什么在Win中有效,可能在WineHQ中不起作用 – Maximus 2012-07-31 20:43:18
“AttachConsole”函数返回零。 'GetLastError'什么都不返回。 – user1566601 2012-07-31 21:13:36