2017-02-22 22 views
0

AutoIt과 SciTE를 사용하여 설치 스크립트를 만듭니다. 내가 겪고있는 문제는 기능을 선택하기위한 트리 메뉴가 있다는 것입니다. 전체 treeview (SysTreeView32)를 선택할 수는 있지만 마우스 이동 및 클릭 (큰 옵션이 아님)을 수행하지 않고 상자를 확인하는 방법을 알 수는 없습니다.SciTE 스크립트 - 체크 박스를 설정하는 트리 컨트롤을 얻는 방법

트 리뷰는 다음과 같습니다

Treeview Image

AutoIT 반입에서 제어 정보는 다음과 같이이다 :

Control Info

I, 그냥 알아낼 수 없습니다 것이 가능 확신 그것을하는 방법을 밖으로. 이것은 나의 첫번째 시도이다. 어떤 이유로이 exe에 대한 응답 파일 작성이 작동하지 않습니다. 그래서 - 이것은 다소 조용한 설치 (더 이상 침묵하지 않고 최소한 자동으로)를 만드는 유일한 방법입니다.

* 편집 - 사물의 현재 상태 *

나는이 중 일부를 수행하는 방법을 알아낼 못했지만, 항목을 액세스하기 전에 선택되어 있으면 난 여전히 알아낼 수 없습니다. 그래서 - 토글하기 때문에 내가 원하는 기능을 끌 수 있습니다!

ClickItem을 보낸 이후로 공간을 보내야한다고 생각하지 않지만 그렇게 보입니다.

나는 또한이 작업을 수행 할 수 있습니다 : 첫 번째를 전환됩니다

ControlTreeView($hWnd, '', $tvCtl, 'Select', '#0') 
ControlSend($hWnd, '', $tvCtl, ' ') 

. 그래서 - 나는 그것들을 모두 세어보고 그렇게 할 수 있습니다.

하지만 "IsEnabled"또는 "IsChecked"를 확인하면 항상 NO로 표시됩니다. 그래서 - 나는 내가 필요한 것만을 확인할 수 없다. 나는 그들의 지위가 내가 바라는 바라고 희망해야한다.

If ControlCommand($hWnd, '', $logTool, 'IsEnabled') then 
    ConsoleWrite('Log Tool - IsEnabled' & @CRLF) 
Else 
    ConsoleWrite('Log Tool - NOTEnabled' & @CRLF) 
EndIf 

If ControlCommand($hWnd, '', $logTool, 'IsChecked') then 
    ConsoleWrite('Log Tool - IsChecked' & @CRLF) 
Else 
    ConsoleWrite('Log Tool - NOTChecked' & @CRLF) 
EndIf 

그것은 항상 다시 NOTEnabled로 제공하고 NOTChecked : 여기

내가 "의 IsChecked"와 "의 IsEnabled"을 확인하고 방법이다. 위의 동일한 절차 (FindItem, SelectItem, ClickItem)를 실행했는지 확인했습니다. 그리고,이 절차가 실행될 때 정확한 항목이 강조/선택됩니다 - 나는 그것을 볼 수 있습니다. 따라서 적절한 가치를 반환하지 않습니다.

답변

0
Opt('WinTitleMatchMode', 2) 
$hWnd = WinGetHandle("InstallShield Wizard") ; Notice the correct title 
$hTree = ControlGetHandle($hWnd, '', "[CLASS:SysTreeView32;INSTANCE:1]") 

; == Now you can interact with the treeview with functions from "GuiTreeView.au3" 

편집 :

더 deatails은이

; Select the item so: 
_GUICtrlTreeView_SelectItem($hTree, $hItem, $TVGN_CARET) 

; Get checked state: 
_GUICtrlTreeView_GetChecked($hTree, $hItem) 

은 AutoIt이 도움말을 읽어보십시오.

+0

여러 시간 동안 시도한 결과 (지금)와 비슷합니다. 위의 편집을 게시합니다. 나는 그것이 '점검'되었는지를 판단 할 수 없다는 점을 싫어한다. 그렇지 않으면 실수로 선택을 취소 할 수 있습니다. :( – Andrew