經過嘗試,對AutoIt中Control和Window有了新的認識,分享一下
1.Control
現在我想對一個WinForm架構的應用程序進行自動化操作,得到控件Advanced Mode屬性為[Name:XXX]。
然而在該窗口中有多個相同屬性的Control,而依該屬性只能操作最靠前的一個,無法獲取其它。
嘗試解決如下,私自加入Instance屬性,[Name:XXX;Instance:i](i=1,2,3,4,...)
順利達成目的,可以推測,AutoIt獲取到的某個控件句柄原本是一個數組,默認取的第一個值
2.Window
仍然是這樣的一個WinForm界面,當我獲取該界面A下的控件[Name:XXX;Instance:1]執行ControlGetFocus時,
卻被強制轉移到先前打開的另一個雷同的WinForm界面B,將焦點轉移到了那個界面B的雷同Control上,
問題點在於用WinText,WinTitle等都無法分離這兩個WinForm窗口,因為它們的屬性都一樣。
發現,控件[Name:XXX;Instance:1]在大的控件X中,而X是比較獨特的
嘗試解決如下,先獲取控件X的句柄$hWnd(ControlGetHandle),再將$hWnd當做Win的句柄執行ControlGetFocus
順利解決這一問題,可見,Win和Control在有些情況下並不需要分的那么清楚