2012-05-13 72 views

回答

0

你要WinActivate()您的VMware窗口,然後使用任何你需要的Send()MouseMove()/MouseClick()功能。

編輯:

WinActivate()後,做一個發送(「^ G」),以試圖Send()MouseMove()/MouseClick()是否與其他虛擬機之前獲得你的虛擬機的GUI控制。

0

自動化VMware的主要問題是從客戶系統中運行的軟件獲取反饋。例如,您不能通過在主機上執行WinWait()來等待客戶機中的窗口。

避免這種情況的一種方法是實現主/從依賴關係,其中主機操作系統上的AutoIt控制器腳本在guest虛擬機操作系統上發出命令(通過VMware共享文件夾,網絡共享等)和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論壇上有很多。

+0

你假設VM OS是Windows。 – Mechaflash

+0

@Mechaflash,是的。如果訪客是Linux或Mac OS,只需發送相關的按鍵。如果你指的是主機,它只能是Windows的這個問題。至於客戶不是Windows,有其他操作系統特有的自動化手段。 – minya

相關問題