antonioj84

How do I select a specific path in SysTreeView32

8 posts in this topic

;Hi there I am trying to to search a specific path 

c:\Documents and settings\rogers\Local Settings

;the code below work but can someone point how to define the path directly, instead of searching the folder then click to select and so on
                                          
; this code below work, it finds each folder click until Local settings

                  $hWnd5 = WinGetHandle($Title,"")

                    Sleep(300)
                $hlist = ControlGetHandle($hWnd5, "", "SysListView322")
                $listid = _GUICtrlListView_FindText($hlist,"Documents and Settings" )
                _GUICtrlListView_ClickItem($hlist, $listid, "left", False, 2)
Sleep(100)
   $hlist = ControlGetHandle($hWnd5, "", "SysListView322")
                $listid = _GUICtrlListView_FindText($hlist,"rogers" )
                _GUICtrlListView_ClickItem($hlist, $listid, "left", False, 2)

Sleep(100)
$hlist = ControlGetHandle($hWnd5, "", "SysListView322")
$listid = _GUICtrlListView_FindText($hlist,"Local Settings" )
_GUICtrlListView_ClickItem($hlist, $listid, "left", False, 1)


****************************************************************************************************************************************************************
;This code below does Not work some ideas

                                                               ;$spath = "C:\"
                                                                ;$sgettext = ControlTreeView($Title,"","SysTreeView322", "select", $spath)
                                                                ;$spath = "C:\ | Documents and Settings"
                                                                ;$sgettext = ControlTreeView($Title,"","SysTreeView322", "select", $spath)
                                                                ;$spath = "Documents and Settings | rogers"
                                                                ;$sgettext = ControlTreeView($Title,"","SysTreeView322", "select", $spath)
                                                                 ;$spath = "Documents and Settings | rogers| Local Settings"
                                                                ;$sgettext = ControlTreeView($Title,"","SysTreeView322", "select", $spath)
                                                                  ;ConsoleWrite($spath &@CRLF)


                                                                 ;$Selectall = ControlListView($hWnd5, "", "SysListView322", $sgettext)
                                                                ;$Finditem = ControlListView($hWnd5, "", "SysListView322", "Finditem", "Local Settings")
                                                                ;$Select = ControlListView($hWnd5, "", "SysListView322", "Select",$Finditem)
                                                                ; consolewrite($Select)

                                                            

 

 

 

syslistview32.GIF

Share this post


Link to post
Share on other sites
Run('explorer.exe /select, ' & @SystemDir)

Saludos

1 person likes this

Share this post


Link to post
Share on other sites
;Hi dany,

does work , however the behaviour is not correct. The script  open a new explorer window, which I do not want , see the picture  I want to work in the current window

Run('explorer.exe /select,c:\Documents and settings\rogers\Local Settings') ; open a new explorer windows

 

Share this post


Link to post
Share on other sites
I have this code working can someone point me how to delete folder "Test2



include <RecFileListToArray.au3>
#include <WinAPIFiles.au3>

$Ssearch = _RecFileListToArray("c:\Test1\","*.*", 0, 1)

For $i = 1 To UBound($Ssearch) - 1
    ConsoleWrite($Ssearch[$i] & @CRLF)
    FileDelete($Ssearch[$i])
    ;ConsoleWrite("FileDelete(" & $Ssearch[$i] & ")" & @CRLF)

Next


here is the result in console I want to delete everthing after Test1

--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
Test2\
Test2\KeyFinderInstaller.exe
Test2\results.xml

 

Share this post


Link to post
Share on other sites
Not deleting I tried , I am trying to delete Test2 folder with everyting inside

#include <RecFileListToArray.au3>
#include <WinAPIFiles.au3>

$Ssearch = _RecFileListToArray("c:\Test1\","*.*", 0, 1)
Local $deleteDR = $Ssearch
For $i = 1 To UBound($Ssearch) - 1

    ;FileDelete($Ssearch[$i])
    ;ConsoleWrite("FileDelete(" & $Ssearch[$i] & ")" & @CRLF)
DirRemove($Ssearch[$i],1)
ConsoleWrite($Ssearch[$i] & @CRLF)
Next

DirRemove($deleteDR,1)
****************************************************
console

Test2\
Test2\KeyFinderInstaller.exe
Test2\results.xml

 

Share this post


Link to post
Share on other sites
I found this code orginally from SlimShady and I modify it, works like a charm. Hope it can helps someone.

include<File.au3>

local $folder1 = "C:\Test1\Test2\" ; this will delete anything after Test2, including folder directory and so on..

_DirRemoveContents($folder1, "*.*")

Func _DirRemoveContents($folder,$f)
    Local $list_of_contents, $status
    $list_of_contents = _FileListToArray($folder)
    If IsArray($list_of_contents) Then
        If StringRight($folder, 1) <> "\"  Then $folder = $folder & "\"
        If @error = 1 Then Return 1 ; No Files\Folders Found
        For $a = 1 To $list_of_contents[0]
            FileSetAttrib($folder & "\" & $list_of_contents[$a], "-RASH")
            If StringInStr(FileGetAttrib($folder & $list_of_contents[$a]), "D") Then
                $status = DirRemove($folder & $list_of_contents[$a], 1)
            Else
                $status = FileDelete($folder & $list_of_contents[$a])
            EndIf
        Next
    Else
        Return 2 ; Directory doesn't exists
    EndIf
EndFunc   ;==>_DirRemoveContents

 

Share this post


Link to post
Share on other sites
I found this code orginally from SlimShady and I modify it, works like a charm. Hope it can helps someone.

include<File.au3>

local $folder1 = "C:\Test1\Test2\" ; this will delete anything after Test2, including folder directory and so on..

_DirRemoveContents($folder1)

Func _DirRemoveContents($folder)
    Local $list_of_contents, $status
    $list_of_contents = _FileListToArray($folder)
    If IsArray($list_of_contents) Then
        If StringRight($folder, 1) <> "\"  Then $folder = $folder & "\"
        If @error = 1 Then Return 1 ; No Files\Folders Found
        For $a = 1 To $list_of_contents[0]
            FileSetAttrib($folder & "\" & $list_of_contents[$a], "-RASH")
            If StringInStr(FileGetAttrib($folder & $list_of_contents[$a]), "D") Then
                $status = DirRemove($folder & $list_of_contents[$a], 1)
            Else
                $status = FileDelete($folder & $list_of_contents[$a])
            EndIf
        Next
    Else
        Return 2 ; Directory doesn't exists
    EndIf
EndFunc   ;==>_DirRemoveContents

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • Bilgus
      By Bilgus
      Draw Path Points allows you to make line paths for drawing with gdi
      You can even load an image and trace the outline
      Save and load functionality undo and redo zoom and scale; Don't Forget Rotate!
      ;Draw Path Points BILGUS 2018 ;Includes #include <File.au3> #include <GDIPlus.au3> #include <GUIConstants.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <GuiTab.au3> #include <Misc.au3> If OnAutoItExitRegister("_Exit") <> 0 Then _GDIPlus_Startup() ;initialize GDI+ ConsoleWrite("GDI+ Started" & @CRLF) EndIf Opt("MouseCoordMode", 2) ;Relative coords to the client area of the active window Opt("PixelCoordMode", 2) ;Relative coords to the client area of the active window Global $iXScale = 8 Global $iYScale = $iXScale Global $sFileSave = @ScriptDir & "\DrawPath.txt" ;Default Global $b_ClosePath = False Global $b_ShowImage = False Global $sImagefile = "" Global $iUndo_Max = 50 Global $a_sUndo_Files[1] = [""] Global $a_sRedo_Files[1] = [""] Global $aPath_Points[1][2] = [[0, 0]] Global $aPath_Rot_Points Global $Form1 = GUICreate("Draw Path Points", 615, 437, 192, 124) Global $SelSquare = GUICtrlCreateLabel("", 0, 0, 0, 0, $SS_BLACKFRAME, $WS_EX_TOPMOST) GUICtrlSetState(-1, $GUI_HIDE) ;------------------------------------------------------------------------------- Global Enum $eC1_delete, $eC1_del_all, $eC1_update, $eC1_shift_dn, $eC1_shift_up, _ $eC1_closepath, $eC1_showimg, $eC1_lock, $eC1_undo, $eC1_redo, $aCtl1_LAST Global $aCtl1[$aCtl1_LAST] Control_Create_Group1() ;------------------------------------------------------------------------------- Global Enum $eC2_zin, $eC2_zout, $eC2_dgroup, $eC2_decx, $eC2_incx, $eC2_decy, _ $eC2_incy, $eC2_edit_rot, $eC2_rot, $eC2_ud_rot, $eC2_rev, $eC2_toall, $aCtl2_LAST Global $aCtl2[$aCtl2_LAST] Control_Create_Group2() ;------------------------------------------------------------------------------- Global $Btn_load = GUICtrlCreateButton("Load", 5, 1, 35, 20) Global $Btn_save = GUICtrlCreateButton("Save", 40, 1, 35, 20) Global $Btn_arr_disp = GUICtrlCreateButton("Array", 75, 1, 35, 20) Global $Edit_encoded = GUICtrlCreateEdit("", 115, 2, 50, 18, $ES_READONLY + $ES_AUTOHSCROLL, $WS_EX_STATICEDGE + $WS_EX_TRANSPARENT) Global $List1 = GUICtrlCreateListView("#|x|y", 5, 24, 161, 201, $LVS_SHOWSELALWAYS Or $LVS_SINGLESEL) Global $List1_LVN = GUICtrlCreateDummy() ;listview notifications Global $Image1 = GUICtrlCreatePic("", 200, 16, 400, 400, -1, $WS_EX_LAYERED) Global $Tab1 = GUICtrlCreateTab(1, 225, 20, 500, $TCS_VERTICAL) GUICtrlCreateTabItem(" ") GUICtrlSetState(-1, $GUI_SHOW) ; will be display first GUICtrlCreateTabItem(" ") GUICtrlCreateTabItem("") ; end tabitem definition For $i = 0 To UBound($aCtl2) - 1 GUICtrlSetState($aCtl2[$i], $GUI_HIDE) Next GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") List_Update() List_Index() GUISetState(@SW_SHOW) State_Save($aPath_Points) Points_Update($aPath_Points) While 1 $nMsg = GUIGetMsg() If $nMsg > 0 And $nMsg <> $aCtl2[$eC2_ud_rot] And $nMsg <> $aCtl2[$eC2_edit_rot] And GUICtrlRead($aCtl2[$eC2_edit_rot]) <> 0 Then ;ConsoleWrite("Cancel_Rotate? " & $nMsg & @CRLF) If MsgBox($MB_ICONQUESTION + $MB_OKCANCEL + $MB_DEFBUTTON2, "Save?", "Save Rotated Points?", 10) == $IDOK Then _GUICtrlEdit_SetText($aCtl2[$eC2_edit_rot], "0") $aPath_Points = $aPath_Rot_Points State_Save($aPath_Points) List_Update(List_Index()) Else _GUICtrlEdit_SetText($aCtl2[$eC2_edit_rot], "0") Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage, List_Index()) ;, True) EndIf EndIf Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Tab1 Tab1_Select() Case $SelSquare ;ConsoleWrite("SelSquare" & @CRLF) SelSquare_Drag() Case $List1 ;ConsoleWrite("List1 " & $nMsg & @CRLF) Local $iIndex = List_Index() If $iIndex <> -1 Then Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage, $iIndex) _GUICtrlListView_SetItemSelected($List1, $iIndex, True, True) EndIf Case $List1_LVN Point_Selected($aPath_Points, $Image1, List_Index()) Case $List1_LVN Case $Image1 Image1_Clicked() Case $Btn_save Btn_save_Clicked() Case $Btn_load Btn_load_Clicked() Case $Btn_arr_disp _ArrayDisplay($aPath_Points) ;------------------------------------------------------------------- Case $aCtl1[$eC1_shift_up] Local $iIndex = List_Index() Point_Swap($iIndex, -1) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_shift_dn] Local $iIndex = List_Index() Point_Swap($iIndex, 1) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_del_all] $aPath_Points = 0 Dim $aPath_Points[1][2] = [[0, 0]] List_Update() Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_delete] Local $iIndex = List_Index() Point_Delete($iIndex) _GUICtrlListView_ClickItem($List1, $iIndex) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_redo] $aPath_Points = State_Restore($aPath_Points, False) List_Update() Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_undo] $aPath_Points = State_Restore($aPath_Points, True) List_Update() Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_update] List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Ascii_Points($aPath_Points) _GUICtrlEdit_SetSel($Edit_encoded, 0, -1) Case $aCtl1[$eC1_closepath] $b_ClosePath = Control_IsChecked($aCtl1[$eC1_closepath]) List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) If $b_ClosePath Then GUICtrlSetState($aCtl2[$eC2_rev], $GUI_DISABLE) Else GUICtrlSetState($aCtl2[$eC2_rev], $GUI_ENABLE) EndIf Case $aCtl1[$eC1_showimg] If Not $b_ShowImage Then $sImagefile = FileOpenDialog("Select an image", SplitDir($sImagefile), "All Files(*.*)", 0, SplitFileName($sImagefile), $Form1) EndIf $b_ShowImage = Control_IsChecked($aCtl1[$eC1_showimg]) List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) ;------------------------------------------------------------------- Case $aCtl2[$eC2_zin] If Control_IsChecked($aCtl2[$eC2_toall]) Then Points_Scale(1, 1) Else $iXScale += 1 $iYScale += 1 Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndIf _GUICtrlListView_ClickItem($List1, List_Index()) Case $aCtl2[$eC2_zout] If Control_IsChecked($aCtl2[$eC2_toall]) Then Points_Scale(-1, -1) Else $iXScale -= 1 $iYScale -= 1 Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndIf _GUICtrlListView_ClickItem($List1, List_Index()) Case $aCtl2[$eC2_rev] Local $iIndex = List_Index() $aPath_Points = Points_Reverse($aPath_Points) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage, $iIndex) ;, True) List_Update($iIndex) Case $aCtl2[$eC2_edit_rot] ;ConsoleWrite("Rotate" & @CRLF) Local $iIndex = List_Index() Local $iDegrees = GUICtrlRead($aCtl2[$eC2_edit_rot]) $aPath_Rot_Points = Points_Rotate($aPath_Points, $iDegrees) Points_Update($aPath_Rot_Points, $b_ClosePath, $b_ShowImage, $iIndex) ;, True) Case $aCtl2[$eC2_incx] Point_Adjust(1, 0, Control_IsChecked($aCtl2[$eC2_toall])) Case $aCtl2[$eC2_decx] Point_Adjust(-1, 0, Control_IsChecked($aCtl2[$eC2_toall])) Case $aCtl2[$eC2_incy] Point_Adjust(0, 1, Control_IsChecked($aCtl2[$eC2_toall])) Case $aCtl2[$eC2_decy] Point_Adjust(0, -1, Control_IsChecked($aCtl2[$eC2_toall])) EndSwitch WEnd ;---------------------------------------------------------------------------------------------------- Func _Exit() _GDIPlus_Shutdown() ConsoleWrite("GDI+ Stopped" & @CRLF) State_Destroy() EndFunc ;==>_Exit Func Ascii_Points($aPts) ;encodes points into an ascii string Local Const $iChrOffset = 33 Local Const $iMaxOffset = 126 - $iChrOffset If Not IsArray($aPts) Then Return Local $sAscEnc = StringFormat("%03i%05i", $iChrOffset, UBound($aPts) * 2 + 8) If _ArrayMin($aPts) >= 0 And (_ArrayMax($aPts) - _ArrayMin($aPts)) <= $iMaxOffset Then For $i = 0 To UBound($aPts) - 1 $sAscEnc = $sAscEnc & Chr($aPts[$i][0] + $iChrOffset) & Chr($aPts[$i][1] + $iChrOffset) Next EndIf _GUICtrlEdit_SetText($Edit_encoded, $sAscEnc) EndFunc ;==>Ascii_Points Func Btn_load_Clicked() ConsoleWrite("Load: " & SplitDir($sFileSave) & @CRLF) $sFileSave = FileOpenDialog("Select a save file", SplitDir($sFileSave), "All Files(*.*)", 0, SplitFileName($sFileSave), $Form1) _FileReadToArray($sFileSave, $aPath_Points, 0, ",") If @error Then Dim $aPath_Points[1][2] = [[0, 0]] Else State_Destroy() State_Save($aPath_Points) EndIf List_Update() Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndFunc ;==>Btn_load_Clicked Func Btn_save_Clicked() List_Update(List_Index()) $sFileSave = FileOpenDialog("Select a save file", SplitDir($sFileSave), "All Files(*.*)", 0, SplitFileName($sFileSave), $Form1) _FileWriteFromArray($sFileSave, $aPath_Points, 0, Default, ",") EndFunc ;==>Btn_save_Clicked Func Control_Create_Group1() Local $iX = 30 Local $iY = 225 $aCtl1[$eC1_delete] = GUICtrlCreateButton("Delete", $iX + 0, $iY + 0, 50, 20) $aCtl1[$eC1_shift_dn] = GUICtrlCreateButton("+", $iX + 70, $iY + 0, 20, 20) $aCtl1[$eC1_shift_up] = GUICtrlCreateButton("-", $iX + 95, $iY + 0, 20, 20) $aCtl1[$eC1_del_all] = GUICtrlCreateButton("Delete All", $iX + 0, $iY + 25, 50, 20) $aCtl1[$eC1_update] = GUICtrlCreateButton("Update", $iX + 70, $iY + 25, 50, 20) $aCtl1[$eC1_undo] = GUICtrlCreateButton("Undo", $iX + 0, $iY + 50, 50, 20) $aCtl1[$eC1_redo] = GUICtrlCreateButton("Redo", $iX + 70, $iY + 50, 50, 20) GUICtrlSetState($aCtl1[$eC1_undo], $GUI_DISABLE) GUICtrlSetState($aCtl1[$eC1_redo], $GUI_DISABLE) $aCtl1[$eC1_closepath] = GUICtrlCreateCheckbox("Complete", $iX + 0, $iY + 70, 65, 25) $aCtl1[$eC1_showimg] = GUICtrlCreateCheckbox("Image", $iX + 0, $iY + 90, 65, 25) $aCtl1[$eC1_lock] = GUICtrlCreateCheckbox("Locked", $iX + 0, $iY + 110, 65, 25) EndFunc ;==>Control_Create_Group1 Func Control_Create_Group2() Local $iX = 30 Local $iY = 225 $aCtl2[$eC2_rev] = GUICtrlCreateButton("Reverse", $iX + 0, $iY + 0, 50, 20) $aCtl2[$eC2_edit_rot] = GUICtrlCreateInput("0", $iX + 0, $iY + 25, 40, 20) $aCtl2[$eC2_ud_rot] = GUICtrlCreateUpdown(-1) GUICtrlSetLimit($eC2_ud_rot, 360, -360) $aCtl2[$eC2_rot] = GUICtrlCreateButton("", $iX + 40, $iY + 25, 10, 20) $aCtl2[$eC2_dgroup] = GUICtrlCreateGroup("Coords", 5 + $iX + 70, $iY + 0, 55, 70) $aCtl2[$eC2_decy] = GUICtrlCreateButton("-", 24 + $iX + 70, 16 + $iY + 0, 17, 17) $aCtl2[$eC2_incy] = GUICtrlCreateButton("+", 24 + $iX + 70, 48 + $iY + 0, 17, 17) $aCtl2[$eC2_decx] = GUICtrlCreateButton("-", 8 + $iX + 70, 32 + $iY + 0, 17, 17) $aCtl2[$eC2_incx] = GUICtrlCreateButton("+", 40 + $iX + 70, 32 + $iY + 0, 17, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $aCtl2[$eC2_zout] = GUICtrlCreateButton("Zoom -", $iX + 0, $iY + 75, 50, 20) $aCtl2[$eC2_zin] = GUICtrlCreateButton("Zoom +", $iX + 75, $iY + 75, 50, 20) $aCtl2[$eC2_toall] = GUICtrlCreateCheckbox("Apply to all", $iX + 0, $iY + 100, 80, 25) EndFunc ;==>Control_Create_Group2 Func Control_IsChecked($IdCtrl) Return (BitAND(GUICtrlRead($IdCtrl), $GUI_CHECKED) = $GUI_CHECKED) EndFunc ;==>Control_IsChecked Func GDI_Draw_ArrayPoints(ByRef $aPts, $hImage, $b_ClosePath, $iX, $iY, $sFileName, $iSelected = -1) Local $hWnd = GUICtrlGetHandle($hImage) If UBound($aPts) > 1 Then Local $aPoints = GDI_Points($aPts, $iX, $iY) Else Local $aPoints[1][2] = [[0, 0]] EndIf Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd) ;create a graphics object from a window handle _GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF) If FileExists($sFileName) Then Local $hBitmap = _GDIPlus_BitmapCreateFromFile($sFileName) Local Const $iWidth = ScaleX(_GDIPlus_ImageGetWidth($hBitmap)) Local Const $iHeight = ScaleY(_GDIPlus_ImageGetHeight($hBitmap)) Local $hBitmap_Scaled = _GDIPlus_ImageResize($hBitmap, $iWidth, $iHeight) ;resize image _GDIPlus_BitmapDispose($hBitmap) ;Done with initial bitmap _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap_Scaled, 0, 0) _GDIPlus_BitmapDispose($hBitmap_Scaled) EndIf Local $hPen = _GDIPlus_PenCreate(0xFFFF0000, ScaleX(1)) $hEndCap = _GDIPlus_ArrowCapCreate(1, 1) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) If $b_ClosePath Then _GDIPlus_GraphicsDrawPolygon($hGraphics, $aPoints, $hPen) Local $iX0, $iY0, $iX1, $iY1 For $i = 1 To $aPoints[0][0] If Not $b_ClosePath And $i < $aPoints[0][0] Then $iX0 = $aPoints[$i][0] $iY0 = $aPoints[$i][1] $iX1 = $aPoints[$i + 1][0] $iY1 = $aPoints[$i + 1][1] _GDIPlus_GraphicsDrawLine($hGraphics, $iX0, $iY0, $iX1, $iY1, $hPen) EndIf Next _GDIPlus_ArrowCapDispose($hEndCap) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphics) Point_Selected($aPts, $hImage, $iSelected) EndFunc ;==>GDI_Draw_ArrayPoints Func GDI_Line_hPath_From_Points($aPts, $iXorig, $iYorig) ;Returns hpath object be sure to delete it when finished Local $hPath = _GDIPlus_PathCreate() ;Create new path object Local $aPoints = GDI_Points($aPts, $iXorig, $iYorig) Local $iX0, $iY0, $iX1, $iY1 If IsArray($aPoints) Then For $i = 1 To $aPoints[0][0] - 1 $iX0 = $aPoints[$i][0] $iY0 = $aPoints[$i][1] $iX1 = $aPoints[$i + 1][0] $iY1 = $aPoints[$i + 1][1] _GDIPlus_PathAddLine($hPath, $iX0, $iY0, $iX1, $iY1) Next EndIf Return $hPath ;_GDIPlus_PathDispose($hPath) EndFunc ;==>GDI_Line_hPath_From_Points Func GDI_Points($aPts, $iXo, $iYO) Local $aGDIPts If IsArray($aPts) And UBound($aPts) > 1 Then Local $aGDIPts[UBound($aPts) + 1][2] $aGDIPts[0][0] = UBound($aPts) For $i = 1 To $aGDIPts[0][0] ;Build points list $aGDIPts[$i][0] = ScaleX($aPts[$i - 1][0]) + $iXo $aGDIPts[$i][1] = ScaleY($aPts[$i - 1][1]) + $iYO Next Else Local $aGDIPts[1][2] = [[0, 0]] EndIf Return $aGDIPts EndFunc ;==>GDI_Points Func Image1_Clicked() If Not Control_IsChecked($aCtl1[$eC1_lock]) Then Local $aCPos = ControlGetPos(GUICtrlGetHandle($Image1), "", 0) Local $aPos = MouseGetPos() If IsArray($aPos) And IsArray($aCPos) Then Local $iXn = Int(($aPos[0] - $aCPos[0] + ScaleX(1) / 2) / ScaleX(1)) Local $iYn = Int(($aPos[1] - $aCPos[1] + ScaleY(1) / 2) / ScaleY(1)) Point_Add(List_Index(), $iXn, $iYn) EndIf Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Else ToolTip("Locked") Sleep(500) ToolTip("") EndIf EndFunc ;==>Image1_Clicked Func List_Index() Static Local $hWndList1 = GUICtrlGetHandle($List1) Local $iIndex = _GUICtrlListView_GetSelectionMark($hWndList1) If _GUICtrlListView_GetItemSelected($List1, $iIndex) Then Return $iIndex Return -1 EndFunc ;==>List_Index Func List_Update($iIndex = -1) Static $hWnd_List1 = GUICtrlGetHandle($List1) _GUICtrlListView_BeginUpdate($List1) _GUICtrlListView_DeleteAllItems($hWnd_List1) For $i = 0 To UBound($aPath_Points) - 1 GUICtrlCreateListViewItem($i & "|" & $aPath_Points[$i][0] & "|" & $aPath_Points[$i][1], $List1) Next If $iIndex > -1 Then _GUICtrlListView_ClickItem($List1, $iIndex) _GUICtrlListView_EnsureVisible($List1, $iIndex) EndIf _GUICtrlListView_EndUpdate($List1) EndFunc ;==>List_Update Func Point_Add($iIndex, $iX, $iY) If $iIndex <> -1 Then _ArrayInsert($aPath_Points, $iIndex, $iX & "|" & $iY, 0) _GUICtrlListView_InsertItem($List1, $iIndex, $iIndex) _GUICtrlListView_SetItemText($List1, $iIndex, $iX, 1) _GUICtrlListView_SetItemText($List1, $iIndex, $iY, 2) _GUICtrlListView_EnsureVisible($List1, $iIndex) Else _ArrayAdd($aPath_Points, $iX & "|" & $iY, 0) GUICtrlCreateListViewItem(UBound($aPath_Points) - 1 & "|" & $iX & "|" & $iY, $List1) _GUICtrlListView_EnsureVisible($List1, UBound($aPath_Points) - 1) EndIf State_Save($aPath_Points) EndFunc ;==>Point_Add Func Point_Adjust($iX, $iY, $bToAll) If Not $bToAll Then Local $iIndex = List_Index() If $iIndex == -1 And IsArray($aPath_Points) Then $iIndex = UBound($aPath_Points) - 1 If $iIndex == -1 Then Return $aPath_Points[$iIndex][0] += $iX $aPath_Points[$iIndex][1] += $iY _GUICtrlListView_SetItemText($List1, $iIndex, $aPath_Points[$iIndex][0], 1) _GUICtrlListView_SetItemText($List1, $iIndex, $aPath_Points[$iIndex][1], 2) If $iIndex <> UBound($aPath_Points) - 1 Then _GUICtrlListView_ClickItem($List1, $iIndex) Else For $i = 0 To UBound($aPath_Points) - 1 $aPath_Points[$i][0] += $iX $aPath_Points[$i][1] += $iY Next List_Update(List_Index()) EndIf State_Save($aPath_Points) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndFunc ;==>Point_Adjust Func Point_Delete($iIndex) If $iIndex <> -1 Then _ArrayDelete($aPath_Points, $iIndex) _GUICtrlListView_DeleteItem($List1, $iIndex) State_Save($aPath_Points) ;List_Update($iIndex) EndIf EndFunc ;==>Point_Delete Func Point_Modify($iIndex, $iX, $iY) If $iIndex <> -1 Then $aPath_Points[$iIndex][0] = $iX $aPath_Points[$iIndex][1] = $iY _GUICtrlListView_SetItemText($List1, $iIndex, $iX, 1) _GUICtrlListView_SetItemText($List1, $iIndex, $iY, 2) _GUICtrlListView_EnsureVisible($List1, $iIndex) State_Save($aPath_Points) EndIf EndFunc ;==>Point_Modify Func Point_Selected($aPts, $hImage, $iIndex) If $iIndex > -1 Then GUICtrlSetState($SelSquare, $GUI_HIDE) Local $hWnd = GUICtrlGetHandle($hImage) Local $aPos = ControlGetPos($hWnd, "", 0) If IsArray($aPos) And IsArray($aPts) Then _WinAPI_RedrawWindow($hWnd, Default, Default, $RDW_ERASENOW) Local $iXs = ScaleX($aPts[$iIndex][0]) + $aPos[0] - ScaleX(1) / 2 Local $iYs = ScaleY($aPts[$iIndex][1]) + $aPos[1] - ScaleY(1) / 2 WinMove(GUICtrlGetHandle($SelSquare), "", $iXs, $iYs, ScaleX(1), ScaleY(1)) GUICtrlSetState($SelSquare, $GUI_SHOW) ;ConsoleWrite("Point_Selected" & @CRLF) Else ConsoleWriteError("Error: Point_Selected" & @CRLF) EndIf EndIf EndFunc ;==>Point_Selected Func Point_Swap($iIndex1, $iNext) _GUICtrlListView_BeginUpdate($List1) Local $iIndex2 If $iIndex1 <> -1 Then $iIndex2 = $iIndex1 + $iNext If $iIndex2 > UBound($aPath_Points) - 1 Then $iIndex2 = 0 ElseIf $iIndex2 < 0 Then $iIndex2 = UBound($aPath_Points) - 1 EndIf _ArraySwap($aPath_Points, $iIndex1, $iIndex2) Local $iX1 = _GUICtrlListView_GetItemText($List1, $iIndex1, 2) Local $iY1 = _GUICtrlListView_GetItemText($List1, $iIndex1, 2) Local $iX2 = _GUICtrlListView_GetItemText($List1, $iIndex2, 2) Local $iY2 = _GUICtrlListView_GetItemText($List1, $iIndex2, 2) _GUICtrlListView_SetItemText($List1, $iIndex1, $iX2, 1) _GUICtrlListView_SetItemText($List1, $iIndex1, $iY2, 2) _GUICtrlListView_SetItemText($List1, $iIndex2, $iX1, 1) _GUICtrlListView_SetItemText($List1, $iIndex2, $iY1, 2) _GUICtrlListView_ClickItem($List1, $iIndex2) _GUICtrlListView_EnsureVisible($List1, $iIndex2) Else ;ConsoleWrite("Array Shift" & @CRLF) If $iNext > 0 Then ;ARRAY SHIFT -- Melba23 Local $iUBound = UBound($aPath_Points) ; Get size of array Local $aTmp = _ArrayExtract($aPath_Points, 0, $iUBound - 2) ; Extract all but last _ArrayInsert($aTmp, 0, _ArrayExtract($aPath_Points, $iUBound - 1, Default)) ; Insert last at top $aPath_Points = $aTmp Else Local $aTmp = _ArrayExtract($aPath_Points, 1, Default) ; Extract all but top row _ArrayAdd($aTmp, _ArrayExtract($aPath_Points, 0, 0)) ; Add top row at bottom $aPath_Points = $aTmp EndIf List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndIf State_Save($aPath_Points) _GUICtrlListView_EndUpdate($List1) EndFunc ;==>Point_Swap Func Points_Reverse($aPts) Local $hPath = GDI_Line_hPath_From_Points($aPts, 0, 0) ;_GDIPlus_PathFlatten($hPath) _GDIPlus_PathReverse($hPath) $aPoints = _GDIPlus_PathGetPoints($hPath) _GDIPlus_PathDispose($hPath) If IsArray($aPoints) Then ;ConsoleWrite("Flipped_Points" & @CRLF) Dim $aPts_Rev[$aPoints[0][0]][2] For $i = 1 To $aPoints[0][0] $aPts_Rev[$i - 1][0] = Int($aPoints[$i][0] / ScaleX(1)) $aPts_Rev[$i - 1][1] = Int($aPoints[$i][1] / ScaleY(1)) Next Return $aPts_Rev Else Return $aPts EndIf EndFunc ;==>Points_Reverse Func Points_Rotate($aPts, $iDegrees) Local $hPath = GDI_Line_hPath_From_Points($aPts, 0, 0) ;_GDIPlus_PathFlatten($hPath) Local $hPen = _GDIPlus_PenCreate(0x0, ScaleX(1)) Local $aBounds = _GDIPlus_PathGetWorldBounds($hPath, 0, $hPen) _GDIPlus_PenDispose($hPen) If IsArray($aBounds) Then $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix, $aBounds[0] + $aBounds[2] / 2, $aBounds[1] + $aBounds[3] / 2) _GDIPlus_MatrixRotate($hMatrix, $iDegrees) _GDIPlus_MatrixTranslate($hMatrix, -($aBounds[0] + $aBounds[2] / 2), -($aBounds[1] + $aBounds[3] / 2)) _GDIPlus_PathTransform($hPath, $hMatrix) _GDIPlus_MatrixDispose($hMatrix) EndIf Local $aPoints = _GDIPlus_PathGetPoints($hPath) _GDIPlus_PathDispose($hPath) If IsArray($aPoints) Then ;ConsoleWrite("Rotate_Points" & @CRLF) Dim $aPts_Rev[$aPoints[0][0]][2] For $i = 1 To $aPoints[0][0] $aPts_Rev[$i - 1][0] = Int($aPoints[$i][0] / ScaleX(1)) $aPts_Rev[$i - 1][1] = Int($aPoints[$i][1] / ScaleY(1)) Next Return $aPts_Rev Else Return $aPts EndIf EndFunc ;==>Points_Rotate Func Points_Scale($iScaleX, $iScaleY) For $i = 0 To UBound($aPath_Points) - 1 If $iScaleX > 0 Then $aPath_Points[$i][0] *= 2 Else $aPath_Points[$i][0] /= 2 EndIf If $iScaleY > 0 Then $aPath_Points[$i][1] *= 2 Else $aPath_Points[$i][1] /= 2 EndIf Next State_Save($aPath_Points) List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndFunc ;==>Points_Scale Func Points_Update($aPts, $b_ClosePath = False, $b_Show_Image = True, $iSelected = -1) Local $_Image_File = $sImagefile If Not $b_Show_Image Then $_Image_File = "" GDI_Draw_ArrayPoints($aPts, $Image1, $b_ClosePath, 0, 0, $_Image_File, $iSelected) EndFunc ;==>Points_Update Func ScaleX($iX) Local $iXs = $iXScale If $iXs == 0 Then $iXs = -1 If $iXs > 0 Then $iX = $iX * $iXs Else $iX = $iX / Abs($iXs) EndIf Return $iX EndFunc ;==>ScaleX Func ScaleY($iY) Local $iYs = $iYScale If $iYs == 0 Then $iYs = -1 If $iYs > 0 Then $iY = $iY * $iYs Else $iY = $iY / Abs($iYs) EndIf Return $iY EndFunc ;==>ScaleY Func SelSquare_Drag() Local $iIndex = List_Index() If $iIndex <> -1 Then Local $cInfo = GUIGetCursorInfo($Form1) Local $aPosSelOrig = ControlGetPos($Form1, "", $SelSquare) If IsArray($aPosSelOrig) Then Local $iSubtractX = $cInfo[0] - $aPosSelOrig[0] Local $iSubtractY = $cInfo[1] - $aPosSelOrig[1] EndIf If IsArray($cInfo) Then Do $cInfo = GUIGetCursorInfo($Form1) ControlMove($Form1, "", $SelSquare, $cInfo[0] - $iSubtractX, $cInfo[1] - $iSubtractY) Until Not $cInfo[2] EndIf Local $aPosSelNew = ControlGetPos($Form1, "", $SelSquare) If IsArray($aPosSelNew) And IsArray($aPosSelOrig) Then Local $iXm = $aPath_Points[$iIndex][0] + Int(($aPosSelNew[0] - $aPosSelOrig[0]) / ScaleX(1)) Local $iYm = $aPath_Points[$iIndex][1] + Int(($aPosSelNew[1] - $aPosSelOrig[1]) / ScaleY(1)) Point_Modify($iIndex, $iXm, $iYm) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage, $iIndex) EndIf EndIf EndFunc ;==>SelSquare_Drag Func SplitDir($FullPath) Local $sDrive, $sDir, $sDummy _PathSplit($FullPath, $sDrive, $sDir, $sDummy, $sDummy) Return $sDrive & $sDir EndFunc ;==>SplitDir Func SplitFileName($FullPath) Local $sDummy, $sFileName, $sExt _PathSplit($FullPath, $sDummy, $sDummy, $sFileName, $sExt) Return $sFileName & "" & $sExt EndFunc ;==>SplitFileName Func State_Cleanup(ByRef $a1) If (UBound($a1) > $iUndo_Max + 2) Then Local $a1Rem = _ArrayExtract($a1, 1, Default) $a1Rem[0] = $a1[0] Local $sTmp = $a1[1] If $sTmp <> "" And FileExists($sTmp) Then FileDelete($sTmp) ;ConsoleWrite("Cleanup Delete (UnD) " & $sTmp & @CRLF) EndIf $a1 = $a1Rem EndIf EndFunc ;==>State_Cleanup Func State_Destroy($bRedo_Only = False) Local $sTmp While (UBound($a_sRedo_Files) > 1) $sTmp = _ArrayPop($a_sRedo_Files) If $sTmp <> "" And FileExists($sTmp) Then FileDelete($sTmp) ;ConsoleWrite(", Delete (ReD) " & $sTmp) If @error Then ConsoleWriteError("Failed to Delete " & $sTmp) EndIf WEnd GUICtrlSetState($aCtl1[$eC1_redo], $GUI_DISABLE) If $bRedo_Only Then Return While (UBound($a_sUndo_Files) > 1) $sTmp = _ArrayPop($a_sUndo_Files) If $sTmp <> "" And FileExists($sTmp) Then FileDelete($sTmp) ;ConsoleWrite(", Delete (UnD)" & $sTmp) If @error Then ConsoleWriteError("Failed to Delete " & $sTmp) EndIf WEnd GUICtrlSetState($aCtl1[$eC1_undo], $GUI_DISABLE) EndFunc ;==>State_Destroy Func State_Is_Diff(ByRef $a1, ByRef $a2) Local $bIsDiff = True If UBound($a1) = UBound($a2) Then $bIsDiff = False For $i = UBound($a1) - 1 To 0 Step -1 If $a1[$i][0] == $a2[$i][0] And $a1[$i][1] == $a2[$i][1] Then ContinueLoop Else ;ConsoleWrite("Diff " & $i & @CRLF) $bIsDiff = True ExitLoop EndIf Next Else ;ConsoleWrite("Diff " & @CRLF) EndIf Return $bIsDiff EndFunc ;==>State_Is_Diff Func State_Restore(ByRef $aPts, $bUndo) Local $sTmp = "" Local $aRes If $bUndo Then $sTmp = _ArrayPop($a_sUndo_Files) ;ConsoleWrite(", Restore (UnD)" & $sTmp) If $sTmp <> "" And FileExists($sTmp) Then _ArrayAdd($a_sRedo_Files, $sTmp) _FileReadToArray($sTmp, $aRes, 0, ",") If UBound($a_sUndo_Files) < 2 Then GUICtrlSetState($aCtl1[$eC1_undo], $GUI_DISABLE) If UBound($a_sRedo_Files) > 2 Then GUICtrlSetState($aCtl1[$eC1_redo], $GUI_ENABLE) If UBound($a_sUndo_Files) > 1 And Not State_Is_Diff($aPts, $aRes) Then Return State_Restore($aPts, $bUndo) If Not @error Then Return $aRes Else ConsoleWriteError("Failed to Restore " & $sTmp) EndIf Else $sTmp = _ArrayPop($a_sRedo_Files) ;ConsoleWrite(", Restore (ReD) " & $sTmp) If $sTmp <> "" And FileExists($sTmp) Then _ArrayAdd($a_sUndo_Files, $sTmp) _FileReadToArray($sTmp, $aRes, 0, ",") If UBound($a_sRedo_Files) < 2 Then GUICtrlSetState($aCtl1[$eC1_redo], $GUI_DISABLE) If UBound($a_sUndo_Files) > 2 Then GUICtrlSetState($aCtl1[$eC1_undo], $GUI_ENABLE) If UBound($a_sRedo_Files) > 1 And Not State_Is_Diff($aPts, $aRes) Then Return State_Restore($aPts, $bUndo) If Not @error Then Return $aRes Else ConsoleWriteError("Failed to Restore " & $sTmp) EndIf EndIf Return $aPts EndFunc ;==>State_Restore Func State_Save($aPts, $bClean = True) If $iUndo_Max < 1 Then Return Local $bFileDiff = True Local $sTmp = _TempFile(@TempDir, "DPP_") If UBound($a_sRedo_Files) > 2 Then _ArrayAdd($a_sUndo_Files, _ArrayPop($a_sRedo_Files)) _ArrayAdd($a_sUndo_Files, $sTmp) _FileWriteFromArray($sTmp, $aPath_Points, 0, Default, ",") If UBound($a_sRedo_Files) > 2 Then State_Destroy(True) State_Cleanup($a_sUndo_Files) ;ConsoleWrite("Save State " & UBound($a_sUndo_Files) & " " & $sTmp & @CRLF) If UBound($a_sUndo_Files) > 2 Then GUICtrlSetState($aCtl1[$eC1_undo], $GUI_ENABLE) If @error Then MsgBox(0, @ScriptName & " Error", "Unable to create undo file " & $sTmp) GUICtrlSetState($aCtl1[$eC1_undo], $GUI_DISABLE) GUICtrlSetState($aCtl1[$eC1_redo], $GUI_DISABLE) $iUndo_Max = 0 EndIf EndFunc ;==>State_Save Func Tab1_Select() Local $iStateCtl1, $iStateCtl2 Local $tabindex = GUICtrlRead($Tab1) ;ConsoleWrite("tab" & $tabindex + 1 & "_selected" & @CRLF) Select Case $tabindex = 0 $iStateCtl1 = $GUI_SHOW $iStateCtl2 = $GUI_HIDE Case $tabindex = 1 $iStateCtl1 = $GUI_HIDE $iStateCtl2 = $GUI_SHOW Case Else _GUICtrlTab_ActivateTab($Tab1, 0) Return EndSelect For $i = 0 To UBound($aCtl1) - 1 GUICtrlSetState($aCtl1[$i], $iStateCtl1) Next For $i = 0 To UBound($aCtl2) - 1 GUICtrlSetState($aCtl2[$i], $iStateCtl2) Next EndFunc ;==>Tab1_Select Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) Static Local $hWndList1 = GUICtrlGetHandle($List1) If Not IsHWnd($hWndList1) Then $hWndList1 = GUICtrlGetHandle($List1) If @error Then Return $GUI_RUNDEFMSG If $wParam = $List1 Then Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam) Local $iCode = DllStructGetData($tNMHDR, "Code") Switch DllStructGetData($tNMHDR, "Code") Case $LVN_KEYDOWN, $NM_CLICK GUICtrlSendToDummy($List1_LVN, $lParam) EndSwitch EndIf Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY  


    • ur
      By ur
      I have an ini file which has structure as below.

      And I want to use this value and change only the file name in below path of another ini file.
       
      Can you suggest any approach.


    • Katie_Deely
      By Katie_Deely
      Hi
      Let's say I get a path called "E:\pics\". It has pictures inside which are numbered starting at 0. Then we get something like "E:\pics\0" or "E:\pics\1" or "E:\pics\2"... The amount of numbers, thus the path of the last picture, are known to me already. For example, there are 100 pictures, which means that the files start at 0 and end at 99
      However, for some things that isn't enough, because they need the file extension. They can be pretty "random", though. Sometimes it's a JPG, sometimes it's a PNG, sometimes it's a GIF.
      So, I know need some kind of function that gets me the file extension, or the complete path, from an incomplete path. The input would be "E:\pics\1" and I expect and output of "E:\pics\1.jpg" for example.
      Also, there is just one file extension per number. For example, it there is "E:\pics\1.jpg", there won't be a "E:\pics\1.png" anymore.
      And this will be looped as well. First I get number 0, then number 1, then number 2, and so on. So I need something that is able to be repeated in a for-loop without causing problems with the parameters.
      Thanks a lot!
    • Shadow_Delta
      By Shadow_Delta
      How to select a folder and assign the path value to a variable in autoit?

       
      ; Selecting a file and assigning that to $sPath value) Case $file $sPath = FileOpenDialog("Open a file", @desktopdir, "Cabinet Files (*.cab)",$FD_MULTISELECT) GUICtrlSetData($file, $sPath) ; How to do the same with a folder? Case $folder $sPath = FileSelectFolder($sPath, "") Need the selected folder path to be used in the $sPath section for further implementation.
      Or a method to Select Folder or Files at once.
    • tremolux66
      By tremolux66
      I'm automating a commercial app that will copy files/folders from an optical disc to a folder on a hard drive, and am unable to check an item in a SysTreeView32 control in the app's main window. The disc and its top-level folders are displayed as a simple tree, and I've written a test script that probes and manipulates the control by calling ControlTreeView(). The script cannot, on its own, check the desired item in the TreeView, but it can check the item with some manual intervention. I need to know if there's something missing, or if a different approach is needed.
      The operations currently being tested are:
      Waiting until the contents of the TreeView control appear before proceeding (the app can take a long time to display the control contents), and Checking the first item's checkbox (i.e., the disc itself), thus selecting the entire disc contents for copying. The test script can complete the first operation successfully, but not the second: there is a side-effect of the first that apparently causes the second one to fail.
      When the control's contents eventually become visible, they look like this; note the position of the scrollbar:

      The wait is done by repeatedly selecting the first item until @error=0 using the following code fragment (note: the code has been edited for brevity and to remove certain information):
      ; Wait for the DM window to become active ; -- _WinWaitActivate() is from AU3 Recorder-generated code $hWnd1 = _WinWaitActivate($sDMtitle,"") ; Wait for the SysTreeViewList32 control to display its first item $sCtrlAdvMode = "[CLASS:SysTreeView32; INSTANCE:1]" $i = 0 $iRetVal = ControlTreeView($hWnd1,"",$sCtrlAdvMode,"Select","#0") $iAtError = @error While $iAtError <> 0 $i += 1 If $i > 20 Then ExitLoop Sleep(5000) $iRetVal = ControlTreeView($hWnd1,"",$sCtrlAdvMode,"Select","#0") $iAtError = @error WEnd If $i > 20 Then ConsoleWrite("Select: Unable to select 1st item after 20 tries" & @CRLF) This works - the script successfully loops until the contents are visible, but when the item selection finally succeeds, the control contents scroll horizontally, hiding the checkboxes:

      The script then tries to check the first item by calling ControlTreeView() from the following code fragment (again, edited for brevity, etc.):
      ; Check the first item $iRetVal = ControlTreeView($hWnd1,"",$sCtrlAdvMode,"Check","#0") If @error <> 0 Then ConsoleWrite("Check: Unable to check 1st item, return=" & $iRetVal & ", @error=" & @error & ", @extended=" & @extended & @CRLF) $iRetVal = ControlTreeView($hWnd1,"",$sCtrlAdvMode,"IsChecked","#0") ConsoleWrite("IsChecked: return=" & $iRetVal & ", @error=" & @error & ", @extended=" & @extended & @CRLF) The Check call always returns @error=1, and the IsChecked call returns without error, but with a value of False. (The boxes remain unchecked on the screen as well.)
      HOWEVER: With some experimentation I discovered that if I put a pause in the test script so that I can manually scroll the TreeView to make the checkboxes visible, then the Check call works - the boxes in the control are all checked, and the IsChecked call returns True.
      Any suggestions for making this work under program control (no manual intervention)? The application needs to be completely automated.
      Note: I have tried another method for the wait-loop (getting the first item's checkbox value), hoping it would achieve the desired result without scrolling the tree. However, the IsChecked call returns with @error=0 (and False) on the first call, long before the tree was visible.