如何将按键发送到可执行文件?

时间:2016-01-05 16:03:21

标签: powershell sendkeys

如何通过PowerShell脚本以编程方式输入击键?

Write-Host -ForegroundColor Green 'Loading...'

Function EnterKey {
  [Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
  #Where I want to get "|" keystroke programmatically
  [System.Windows.Forms.SendKeys]::SendWait("{|}")
}

Function StartUp {
  Write-Host "Environment"

  $exe = ([IO.Path]::Combine("D:\7ZipApp\7ZipApp\7ZipApp\bin\Debug","7ZipApp.exe"))
  & $exe 3 # argument 3 = 'Run local Sync'
  EnterKey
  Read-Host -Prompt $exe.ToString()
}

StartUp

2 个答案:

答案 0 :(得分:1)

{{1}}

答案 1 :(得分:1)

我必须在这里与人群一起(来自评论):

  

我会放弃你的方法。太有问题了。

     

我的问题是你想要这样做的原因

     

然后,正确的解决方案是让7zipapp.exe的作者修复程序,以便它停止这样做或添加一个阻止此行为的命令行参数。

那就是说,如果你想要一个总 hack ,并且这个程序只需要一个输入,最后可能是最后,那么下面的内容似乎有效。我会谨慎地使用 ,也许永远不会使用它,而是修复程序,但在我的测试中,这很有效。

的PowerShell:

$exe = 'C:\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe'
'\r\n' | & $exe

恼人的C#程序:

using static System.Console;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            WriteLine("I will force you to hit Enter to exit.");
            ReadLine();
        }
    }
}