C#中的SendKeys.Send操作CMD命令的问题

今日需要实现通过C#操作cmd窗口的功能,在使用SendKeys.Send或SendKeys.SendWait方法进行按键模拟的时候发现,如果传入的Keys为小写开始则不被执行

代码:

            Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = true;
            p.StartInfo.RedirectStandardInput = false;
            p.StartInfo.RedirectStandardOutput = false;
            p.StartInfo.RedirectStandardError = false;
            p.StartInfo.CreateNoWindow = false;
            p.Start();
            Thread.Sleep(2000);
            SendKeys.Send("perl -v{Enter}");

结果:


不会有任何执行。但这里如果只是用SendKeys.Send 向一个文本编辑框输入文本,那大小写都可以正常输入。

Microsoft 官方也并没有相关的解释,只是给了下面一个提示

但我个人觉得歪果仁跟我们的键盘大小写应该一样吧,这个问题也没必要深究,所以自行测试。


经过个人测试,发现问题在于输入文本的大小写,如果将“perl”改成大写开始,并且同时需要把“-v”也改成大写,这样就可以正常执行了。


总结:

在SendKeys.Send调用cmd执行cmd命令的时候,当传入小写的字符,则cmd不显示。


你可能感兴趣的:(C#)