我正在尝试使用通过RDP访问的VM执行以下操作:
启动命令提示符 thread.sleep足够长的时间来断开RDP会话(10秒,如果它更长的话就可以了)
Sendkeys命令提示符以启动以交互模式工作的exe。一个完美的例子是FTP。如果启动不带参数的FTP,则会收到交互式提示。它是一个关于安全性的长篇故事,但是命令行参数不起作用,它需要是交互式的。这个过程在连接到RDP时不会运行
除了一个主要问题外,我的一切都在工作。一旦我从RDP断开连接,就没有键盘可供sendkeys使用。我不记得确切的错误,但它基本上是'没有键盘连接'
我有一个想法,也许我可以创建一个在RDP会话结束时仍然可以“连接”的虚拟键盘。
我已经验证了断开RDP后进程,甚至来自命令提示符的DOS将继续运行。未连接时,问题与发送密钥和VM的键盘隔离。
我已经搜索过高低,但这个让我难过。我知道这是一种解决方法,而不是在源头解决问题,但我只有这个选项。
我能想到的唯一另一种选择是,如果像SendKeys一样工作,但没有键盘连接吗?
编辑 只是为了更清楚一点。我找到了许多可行的解决方案,但我只留下这个想法。
规则是:
虚拟机上无法安装任何内容,例如“测试自动化”工具
所有内容都必须使用VS2012 C#.net从头开始内置到4.5。
也许我可以找到一个开源测试自动化工具,但是没有时间研究和转换看似可能很复杂的应用程序。
非常感谢任何想法。
答案 0 :(得分:0)
当您正确创建Process对象集 StartInfo 时:
var proc = new Process {
StartInfo = new ProcessStartInfo {
FileName = "program.exe",
Arguments = "command line arguments to your executable",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
然后开始这个过程并从中读取:
proc.Start();
while (!proc.StandardOutput.EndOfStream) {
string line = proc.StandardOutput.ReadLine();
// do something with line
}
取自here
要发送一些东西,您只需使用:
proc.StandardInput.WriteLine("Something");
您只需在while循环中检查某些触发器,然后将一些数据写入流中。