2

VBScript を使用して、「リモート デスクトップ接続」プロンプトにアドレスを挿入したいと考えています。そのためにはWindows オートメーション APIを使用する必要があると具体的に言われましたが、ドキュメントを読んだ後、VBScript に使用できるものは見つかりませんでした。どうすれば続行できますか?

PS: Helen とこのスレッドで指摘されているように、現在、VBScript が UI Automation API にアクセスすることはサポートされていません。

4

1 に答える 1

9

ここでは、実際には GUI 自動化は必要ありません。接続先のコンピューターを指定するにはmstsc/vコマンドライン引数を使用して起動するだけです。次に例を示します。

CreateObject("WScript.Shell").Run "mstsc /v:computername"

または、コンピューター名と接続設定を含む.rdp ファイルがある場合は、次のコマンドを使用してこのファイルを起動できますmstsc

CreateObject("WScript.Shell").Run "mstsc E:\ComputerName.rdp"

必要に応じて、次のように .rdp ファイルをオンザフライで生成できます。

Dim oFSO, oShell, strFileName, strComputerName

strComputerName = "computername"
strFileName = "E:\ComputerName.rdp"

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oStream = oFSO.CreateTextFile(strFileName, True)
oStream.WriteLine "full address:s:" + strComputerName
' TODO: Write other settings
oStream.Close

Set oShell = CreateObject("WScript.Shell")
oShell.Run "mstsc """ + strFileName + """"

コメントへの返信:

ただし、私が達成したいのは、RDP-ing のタスクではなく、実際のインジェクションそのものです (これは、さまざまなアプリケーションのさまざまなウィンドウに一般化される可能性があります)。

Windows Script Host には、GUI の自動化のためのAppActivateおよびSendKeysメソッドが用意されていますが、絶対確実というわけではありません。

AutoIt (無料)などの GUI 自動化ツールを使用することをお勧めします。AutoIt スクリプトでは、ControlSetText関数を使用して入力フィールドのテキストを変更できます。次に例を示します。

Run("notepad.exe")
WinWait("[CLASS:Notepad]")
ControlSetText("[CLASS:Notepad]", "", "Edit1", "Hello, world!")

AutoIt の AU3Recorder を使用してユーザー アクションを記録することもできるため、スクリプトを手動で記述する必要はありません。

于 2013-05-20T10:17:01.060 に答える