VBScript を使用して、「リモート デスクトップ接続」プロンプトにアドレスを挿入したいと考えています。そのためにはWindows オートメーション APIを使用する必要があると具体的に言われましたが、ドキュメントを読んだ後、VBScript に使用できるものは見つかりませんでした。どうすれば続行できますか?
PS: Helen とこのスレッドで指摘されているように、現在、VBScript が UI Automation API にアクセスすることはサポートされていません。
VBScript を使用して、「リモート デスクトップ接続」プロンプトにアドレスを挿入したいと考えています。そのためにはWindows オートメーション APIを使用する必要があると具体的に言われましたが、ドキュメントを読んだ後、VBScript に使用できるものは見つかりませんでした。どうすれば続行できますか?
PS: Helen とこのスレッドで指摘されているように、現在、VBScript が UI Automation API にアクセスすることはサポートされていません。
ここでは、実際には 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 を使用してユーザー アクションを記録することもできるため、スクリプトを手動で記述する必要はありません。