1 (изменено: asad, 2018-06-15 02:32:37)

Тема: autohotkey: copy from ListBox

Hi everyone
I am a new user and ask for help
the following code for A folder comparison, it's from here:
https://autohotkey.com/boards/viewtopic … 66#p215966


#NoEnv 
#SingleInstance force 
#Persistent   

nameBUT := StrSplit("SALES|Cashing|Button3|Button4|Button5|Button6|DocFiles|PdfFiles", "|")   

Gui Add, ListBox, w650 r10 vfiles1, % "Dir1 = " dir1 "| |" list1
Gui Add, ListBox, xm w650 r10 vfiles2, % "Dir2 = " dir2 "| |" list2
Gui Add, Button, w75 gGuiOK default, Exit
Gui,Add, Text, yp+5 x100,Dir1
Gui,Add, Edit, yp-3 x130 w200 vDir1,%dir1%
Gui,Add, Text, yp+2 x340,Dir2
Gui,Add, Edit, yp-3 x365 w200 vDir2,%dir2%
Gui,Add, Text, yp+2 x575,Mask
Gui,Add, Edit, yp-3 x605 w75 vFileMask,%fileMask%
Gui Add, Button, yp x685 w75 gGo, Go
Gosub, AddRightSideButtons
Gui Show, w775
Return

AddRightSideButtons:
    GuiControlGet, ctl, Pos, files1

    x := ctlX + ctlW + 10
    Gui, Add, Button, x%x% y%ctlY% w90 h28 gBUT, % nameBUT[1]  
    Loop, 7
        Gui, Add, Button, wp hp gBUT, % nameBUT[A_index+1]  
return

Go: 
    Gui, Submit, NoHide 
    gosub, DoTheWork
    GuiControl,,files1,% "|Dir1 = " dir1 "| |" list1
    GuiControl,,files2,% "|Dir2 = " dir2 "| |" list2
return

BUT:
If (A_GuiControl=nameBUT[1]){
    ControlSetText, Edit1, % "E:\ask\work"
    ControlSetText, Edit2, % "E:\ask\backup"
    }
Else
  If (A_GuiControl=nameBUT[2]){
      ControlSetText, Edit1,% "E:\ask\sales"
      ControlSetText, Edit2, % "E:\ask\work"
  }
Else
  If (A_GuiControl=nameBUT[7]){
      ControlSetText, Edit3, *.docx
      ControlClick, Go, Comp 
  }
Else
  If (A_GuiControl=nameBUT[8]){
      ControlSetText, Edit3, *.pdf
      ControlClick, Go, Go 
  }  
Else
    Msgbox % "NONE!!" A_GuiControl

return

GuiOK:
GuiClose:
GuiEscape:
ExitApp



DoTheWork:
filelist1 := filelist2 := ""
list1 := list2 := ""
fnb1 := fnb2 := 0 ; <<<<< added: initialize the counters
Loop %dir1%\%fileMask%
{
If ( A_LoopFileName ~= "~\$")
        continue
    fileList1 .= A_LoopFileName . "`n"
    fnb1++ ; <<<<< changed: don't use A_Index because some files may be skipped
}
StringTrimRight fileList1, fileList1, 1
Loop %dir2%\%fileMask%
{
    If ( A_LoopFileName ~= "~\$")
        continue
    fileList2 .= A_LoopFileName . "`n"
    fnb2++ ; <<<<< changed: don't use A_Index because some files may be skipped
}
StringTrimRight fileList2, fileList2, 1

If (fnb1 = 0) && (fnb2 = 0) ; <<<<< added: early return
    Return

Sort fileList1
Sort fileList2
StringSplit files_1_, fileList1, `n
StringSplit files_2_, fileList2, `n
idxF1 := idxF2 := 1

Loop
{
    If (idxF1 > fnb1) ; <<<<< moved to the top of the loop
    {
        Loop % fnb2 - idxF2 + 1
        {
            list1 .= " |"   ; Empty
            list2 .= files_2_%idxF2% . "|"
            idxF2++
        }
        Break
    }
    If (idxF2 > fnb2) ; <<<<< moved to the top of the loop
    {
        Loop % fnb1 - idxF1 + 1
        {
            list1 .= files_1_%idxF1% . "|"
            idxF1++
            list2 .= " |"   ; Empty
        }
        Break
    }
    If (files_1_%idxF1% = files_2_%idxF2%)
    {
        ; We are in synch
        list1 .= files_1_%idxF1% . "|"
        idxF1++
        list2 .= files_2_%idxF2% . "|"
        idxF2++
    }
    Else
    {
        ; Either file at idxF1 or at idxF3 is missing, we must find which one
        If (files_1_%idxF1% > files_2_%idxF2%)
        {
            ; Missing in first list
            list1 .= " |"   ; Empty
            list2 .= files_2_%idxF2% . "|"
            idxF2++
        }
        Else
        {
            ; Missing in second list
            list1 .= files_1_%idxF1% . "|"
            idxF1++
            list2 .= " |"   ; Empty
        }
    }
}

StringTrimRight list1, list1, 1
StringTrimRight list2, list2, 1
Return

my question is:

How to use:


Loop, parse, List1
Loop, parse, List2

to Makes copy of the selected file In the ListBox1 or the ListBox2. (See the picture)
If someone could show me how to do this, I would be very grateful!
thanks in advance

Post's attachments

copy selected file.jpg 47.29 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

2

Re: autohotkey: copy from ListBox

Hi
You don't need to use Loop, parse for copying the row from the ListBox, use GuiControlGet like this:

Loop, Files, %A_Desktop%\*.*, DF
   files .= (A_Index = 1 ? "" : "|") . A_LoopFileName

Gui, Add, ListBox, w300 h200 vList1, % files
Gui, Add, Button, gCopy, Copy Selected
Gui, Show
Return

Copy:
   GuiControlGet, List1
   MsgBox, % List1
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder