0

Powershellの SendKey を介してカスタム アプリケーションにパラメータを渡す方法はありますか

TCL の EXPECT のようなもの

#!/usr/bin/perl -w
use Expect;
my $exp = new Expect;

my $command = 'ssh -l user 10.10.10.25';

$exp->spawn($command) or die "Cannot spawn $command: $!\n";

my $patidx = $exp->expect(30, 'Enter passphrase for key');
$exp->send("password\n");

以下を使用するのにうんざりしましたが、カスタムアプリケーションを呼び出せないようです

$a = Get-Process | Where-Object {$_.Name -eq "Notepad"}
wait
[Microsoft.VisualBasic.Interaction]::AppActivate($a.ID)
[void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")
wait
[System.Windows.Forms.SendKeys]::SendWait("{F5}{ENTER}")

私の顧客アプリケーションはC:\somecli -option1 -option2 -option 3のようになります

ping -t 10.10.10.1 という cli コマンドがあります。コマンドは「ping」で、パラメーターは「-t 10.10.10.1」です。そのため、最初にコマンドを呼び出すときは、「ping -t 10.10.10.1」を使用しています。私は別のパラメータを渡す必要があります: いくつかの実行が行われた後、このコマンドに y と言うと、sendkey は私を許可します

4

2 に答える 2

0

http://wasp.codeplex.com/の WASp shap でそれを行うことができます

彼らのサイトの例を次に示します。

Select-Window notepad | Send-Keys "%(ea)Testing{Enter}{F5}"
于 2012-10-22T08:01:44.917 に答える
0

「パラメーターを SendKeys に渡す」という意味がよくわかりませんが、SendKeys は現在フォーカスされているウィンドウでのみ機能します。つまり、バックグラウンドで実行されているアプリケーションにキーを入力することはできません。前述の PowerShell の WASP モジュールは内部で SendKeys を使用するだけなので、WASP が機能しない場合は、どちらも SendKeys 関数を入力しません。

「これは任意のカスタム アプリケーションで機能しますか」という限りでは、SendKeys は WinForms API に基づいているため、その API を使用するアプリケーションとのみやり取りできます。

編集:

編集に基づいて、実行時に定義されたキーを送信したいだけのようです。キーを変数 ( など$keys="Keys I want to send") に割り当ててから、変数 ( など) を送信するだけ[System.Windows.Forms.SendKeys]::SendWait($keys)です。Read-Host送信するキーをユーザーに入力してもらいたい場合に使用できます。

于 2012-10-22T19:28:37.670 に答える