autoit を使用してホストから VMware にキーボードとマウスのコマンドを送信する方法は?
回避する他の方法はありますか?
ありがとう、ワ
VMware の自動化に関する主な問題は、ゲスト システムで実行されているソフトウェアからフィードバックを取得することです。たとえば、ホストで WinWait() を実行してゲストのウィンドウを待機することはできません。
これを回避する 1 つの方法は、ホスト OS 上の AutoIt コントローラー スクリプトが (VMware 共有フォルダー、ネットワーク共有などを介して) コマンドを発行し、ゲスト OS 上の AutoIt エグゼキューター スクリプトが処理を実行する、マスター/スレーブ依存関係を実装することです。レポートが返されます (再び、シェアを介して)。
例(簡略化されていますが、現在使用しているものに基づいています):
WinWait("VMware")
WinActivate("VMware")
Send("{CTRLDOWN}g{CTRLUP}") ; Ctrl+G, give focus to the guest OS
Send("{LWINDOWN}r{LWINUP}") ; Win+R, brings up command entry dialog on the guest
Send("...the actual command with job ID as the argument")
; this last command given to host is actually a compiled AU3 script
; that does something useful and reports back over a network share
Do
Sleep(15000) ; now wait for the script on the guest to report back
Until GuestHasResponded()
Func GuestHasResponded()
; ... check if the guest has created a flag file on the network share
EndFunc
一方、単に VMware クライアント自体を自動化する必要がある場合 (仮想マシンの作成を自動化するなど) は、基本的な AutoIt アプローチで対処できます。その例は、AutoIt フォーラムにたくさんあります。
WinActivate()
vmware ウィンドウを開き、必要な関数Send()
とMouseMove()
/関数を使用しますMouseClick()
。
編集:
の後WinActivate()
、Send("^g") を実行して VM の GUI コントロールを取得してから、VM に対してその他の操作を試みSend()
ます。MouseMove()
MouseClick()