我想通過AutoIt進行自動安裝。 我無法激活並選擇「選擇功能」步驟中的元素菜單。 我可以選擇「樹」中的任何元素。對於它我使用的功能AutoIt:在ControlTreeView中激活並選擇元素上下文菜單
ControlTreeView($windowId, "", $h_tree, "Select", "#2")
如何激活並選擇ControlTreeView中的元素菜單?
我想通過AutoIt進行自動安裝。 我無法激活並選擇「選擇功能」步驟中的元素菜單。 我可以選擇「樹」中的任何元素。對於它我使用的功能AutoIt:在ControlTreeView中激活並選擇元素上下文菜單
ControlTreeView($windowId, "", $h_tree, "Select", "#2")
如何激活並選擇ControlTreeView中的元素菜單?
你可以看到答案的問題在網站上http://forum.oszone.net/thread-146460.html
#include <GuiMenu.au3>
#include <GuiTreeView.au3>
#Include <SendMessage.au3>
#Include <WindowsConstants.au3>
$WinTitle= "1С:Предприятие 8.1"
$WinText = "Выберите компоненты программы"
WinWait($WinTitle, $WinText)
; ищем элемент окна и последовательно нужный пункт списка
$hDTCtrl = ControlGetHandle($WinTitle, "", "SysTreeView321")
$hDTItem = _GUICtrlTreeView_FindItem($hDTCtrl, "Дополнительные интерфейсы")
$hDTIt_1 = _GUICtrlTreeView_FindItem($hDTCtrl, "Казахский", False, $hDTItem)
; активируем окно
WinActivate($WinTitle, $WinText)
WinWaitActive($WinTitle, $WinText)
; переходим к нужному пункту списка
_GUICtrlTreeView_SelectItem($hDTCtrl, $hDTIt_1, $TVGN_FIRSTVISIBLE)
_GUICtrlTreeView_ClickItem ($hDTCtrl, $hDTIt_1, "left", True)
; вызываем контекстное меню
$aRect = _GUICtrlTreeView_DisplayRect($hDTCtrl, $hDTIt_1, True)
ControlClick($WinTitle, $WinText, $hDTCtrl, "left", 1, $aRect[0]-10, $aRect[1]+5)
WinWait("[CLASS:#32768]")
; выбираем нужный пункт контекстного меню
$hWnd = WinGetHandle("[CLASS:#32768]")
$hMenu = _SendMessage($hWnd, $MN_GETHMENU, 0, 0)
$aRect = _GUICtrlMenu_GetItemRect($hWnd, $hMenu, 0)
MouseClick("left", $aRect[0]+20, $aRect[1]+15, 1, 1)
您可以用鍵盤做。
我已經在過去與
send("{down}{space}{down}{down}{enter}")
組合做到了這一點。我知道這不是最好的辦法,但它會奏效。
謝謝,但我已在其中一個網站上找到答案。 http://forum.oszone.net/thread-146460.html – 2010-10-11 19:28:37
@ alexey.chumagin的粘貼代碼是不完整的(包括失蹤)。這裏再次:
#include <GuiMenu.au3>
#include <GuiTreeView.au3>
#Include <SendMessage.au3>
#Include <WindowsConstants.au3>
$WinTitle= "1С:Предприятие 8.1"
$WinText = "Выберите компоненты программы"
WinWait($WinTitle, $WinText)
; ищем элемент окна и последовательно нужный пункт списка
$hDTCtrl = ControlGetHandle($WinTitle, "", "SysTreeView321")
$hDTItem = _GUICtrlTreeView_FindItem($hDTCtrl, "Дополнительные интерфейсы")
$hDTIt_1 = _GUICtrlTreeView_FindItem($hDTCtrl, "Казахский", False, $hDTItem)
; активируем окно
WinActivate($WinTitle, $WinText)
WinWaitActive($WinTitle, $WinText)
; переходим к нужному пункту списка
_GUICtrlTreeView_SelectItem($hDTCtrl, $hDTIt_1, $TVGN_FIRSTVISIBLE)
_GUICtrlTreeView_ClickItem ($hDTCtrl, $hDTIt_1, "left", True)
; вызываем контекстное меню
$aRect = _GUICtrlTreeView_DisplayRect($hDTCtrl, $hDTIt_1, True)
ControlClick($WinTitle, $WinText, $hDTCtrl, "left", 1, $aRect[0]-10, $aRect[1]+5)
WinWait("[CLASS:#32768]")
; выбираем нужный пункт контекстного меню
$hWnd = WinGetHandle("[CLASS:#32768]")
$hMenu = _SendMessage($hWnd, $MN_GETHMENU, 0, 0)
$aRect = _GUICtrlMenu_GetItemRect($hWnd, $hMenu, 0)
MouseClick("left", $aRect[0]+20, $aRect[1]+15, 1, 1)
一點解釋:
WinWait("[CLASS:#32768]")
$hWnd = WinGetHandle("[CLASS:#32768]")
這是上下文菜單的手柄得到的代碼。 #32768
是代表菜單(reference here)的保留系統類的名稱。
你應該明確地將解決方案作爲一個塊引用複製,因爲這樣一個鏈接的網站可能會導致一個404,如果以後頁面被刪除。更不用說這種方式不太有用。非常感謝您在這裏複製您自己的解決方案 – Sk8erPeter 2013-06-15 18:36:34
爲了完整起見,類#32768代表菜單。 [參考這裏](http://msdn.microsoft.com/en-us/library/windows/desktop/ms633574(v = vs.85).aspx#system)。 – Rockallite 2014-08-05 01:02:51