【发布时间】:2011-08-17 11:02:45
【问题描述】:
我真的被一个问题困住了(现在已经 7 天了),在我发疯之前,我想我会征求意见。
我想做的基本上是启动和远程控制一个cmd.exe进程。然而,StandardInput 和 StandardOutput 流并不能完成这项工作,因为它们不是由等待用户输入的“mysql”等命令触发的。
所以我想要的只是读取 cmd.exe 控制台的内容并写入它。但是 write 方法应该能够触发新命令。
我尝试了很多,我很确定 kernel32.dll 可以解决问题:
- ReadConsoleOutput()
- WriteConsoleInput()
- GetConsoleScreenBufferInfo()
- SetConsoleCursorPosition()
当然,我已经有了一些工作,但我绝对不确定我是否走对了路。因此我不会发布任何代码,因为它可能会让你感到困惑。
如果有人可以向我指出一个工作演示或教程或类似的东西,那就太棒了。即使它是 C++ 或 C - 总比没有好。
提前致谢。
梅维斯·科赫海姆
PS:请不要只发布 pinvoke 或 MSDN 的链接,我需要的内容稍微复杂一些。而且似乎我没有足够的 winapi 经验来独自到达那里:/
编辑:我必须尝试根据你们发布的链接获得的一些新想法。我会回来并发布我的发现。谢谢大家的帮助...
【问题讨论】:
-
“隐形”是什么意思?在任务管理器中?在屏幕上?
-
在屏幕上,但隐藏窗口实际上并不是问题:) 如果它在任务管理器中不可见,那也可以,但这不是必需的。我编辑了问题以澄清这一点。 “我想做的基本上就是启动和远程控制一个cmd.exe进程。”
-
如果您已经了解 kernel32.dll 控制台 API (msdn.microsoft.com/en-us/library/ms682073%28v=VS.85%29.aspx),您究竟需要什么?
-
一个工作示例。我有我需要的所有信息,但显然没有正确的技能。我以 Java Web 开发为生,而 WinAPI 编程对我来说还很陌生。
-
检查我的答案 - 3 个指向不同示例的链接(虽然不是很具体)...