#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
HotKeySet("{F9}", "_RunFile")
Global $iIndexOld = -10
Global $hSciTE,$FileSource, $aFileList, $FileList,$FileName,$LblFileName, $aItems, $iI, $sText, $Pr1, $P2, $Pr3
$Form1 = GUICreate("Поиск .au3 файлов", 251, 597, @DesktopWidth - 260, @DesktopHeight - 690)
$Input1 = GUICtrlCreateInput("C:\Program Files\AutoIt3\Examples\Helpfile\", 3, 4, 217, 21)
$BtSelFolder = GUICtrlCreateButton("...", 223, 3, 25, 23)
$LblFileName = GUICtrlCreateLabel("Путь и Имя Файла", 5, 27, 230, 37, $SS_Left)
$ListView1 = GUICtrlCreateListView("", 0, 68, 249, 447)
$ListView1 = GUICtrlGetHandle($ListView1)
_GUICtrlListView_AddColumn($ListView1, "Результаты поиска AutoIt файлов", 224)
$BtRun = GUICtrlCreateButton("Run F9", 64, 524, 61, 25)
$BtSciTE = GUICtrlCreateButton("SciTE", 128, 524, 57, 25)
$BtExit = GUICtrlCreateButton("Exit", 191, 561, 57, 25)
$BtDeltoRECYCLER = GUICtrlCreateButton("В корзину", 65, 561, 61, 25)
$BtDelete = GUICtrlCreateButton("Удалить", 129, 561, 57, 25)
$BtSearch = GUICtrlCreateButton("Найти", 190, 524, 57, 24)
$BtMove = GUICtrlCreateButton("Move", 4, 561, 57, 25)
$BtCloseFile= GUICtrlCreateButton("Close File", 3, 524, 57, 25)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
_SciTEWindow()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $BtExit ; + EXIT
_ControlSend_Ctrl_W()
Exit
Case $BtSearch ; + Поиск
_GUICtrlListView_DeleteAllItems($ListView1)
_SearchFiles($aFileList)
Case $BtRun ; + Запуск файла на выполнение
_RunFile()
Case $BtSciTE ; - Открыт файл в редакторе
$FileName= GUICtrlRead($LblFileName)
_OpenFileInSciTE()
Case $BtDelete
Case $BtDeltoRECYCLER ; Удалить файл в корзину
_DeleteFileToRecycle()
;_ListViewRefresh()
;_LoadFileToListView()
_GUICtrlListView_DeleteAllItems($ListView1)
;ControlSend($hSciTE, "", 0, "{CTRLDOWN}w{CTRLUP}")
;ControlSend($hSciTE, "", 0, "{CTRLDOWN}n{CTRLUP}")
Case $BtCloseFile
_ControlSend_Ctrl_W()
ControlSend($hSciTE, "", 0, "{CTRLDOWN}n{CTRLUP}")
Case $BtMove
_MoveFileToDestination()
;_ListViewRefresh()
;_LoadFileToListView()
EndSwitch
WEnd
Func _SearchFiles(ByRef $a_FileList)
Local $FileMask = "*.au3", $FileSource = GUICtrlRead($Input1), $aItems[1]
$a_FileList = 0
$a_FileList = _FileSearch($FileSource, $FileMask)
If @error Then
$a_FileList = 0
Return
EndIf
ReDim $aItems[$a_FileList[0]][1]
For $i = 1 To $a_FileList[0]
$aItems[$i - 1][0] = StringRegExpReplace($a_FileList[$i], '^.*\\', '')
Next
_GUICtrlListView_BeginUpdate($ListView1)
_GUICtrlListView_DeleteAllItems($ListView1)
_GUICtrlListView_AddArray($ListView1, $aItems)
_GUICtrlListView_EndUpdate($ListView1)
EndFunc ;==>_SearchFiles
Func _FileSearch($sPath, $sFileMask = "*", $iFlag = 0, $iSubDir = 1, $iSort = 0)
;CreatoR; http://autoit-script.ru/index.php/topic,8266.msg55775
Local $sOutBin, $sOut, $aOut, $aMasks, $sRead, $hDir, $sAttrib, $sFiles
If Not StringInStr(FileGetAttrib($sPath), "D") Then
Return SetError(1, 0, 0)
EndIf
If $iSubDir = 1 Then
$sAttrib &= ' /S'
EndIf
If $iSort = 1 Then
$sAttrib &= ' /O:N'
EndIf
Switch $iFlag
Case 1
$sAttrib &= ' /A-D'
Case 2
$sAttrib &= ' /AD'
Case Else
$sAttrib &= ' /A'
EndSwitch
$sOut = StringToBinary('0' & @CRLF, 2)
$sPath = StringRegExpReplace($sPath, '\\+$', '')
$sFileMask = StringRegExpReplace($sFileMask, '^;+|;+$', '')
$sFileMask = StringRegExpReplace($sFileMask, ';{2,}', ';')
$aMasks = StringSplit($sFileMask, ';')
For $i = 1 To $aMasks[0]
If StringStripWS($aMasks[$i], 8) = "" Then
ContinueLoop
EndIf
$sFiles &= '"' & $sPath & '\' & $aMasks[$i] & '"'
If $i < $aMasks[0] Then
$sFiles &= ';'
EndIf
Next
$hDir = Run(@ComSpec & ' /U /C DIR ' & $sFiles & ' /B' & $sAttrib, @SystemDir, @SW_HIDE, 6)
While 1
$sRead = StdoutRead($hDir, False, True)
If @error Then
ExitLoop
EndIf
If $sRead <> "" Then
$sOut &= $sRead
EndIf
Sleep(10)
WEnd
$aOut = StringRegExp(BinaryToString($sOut, 2), '[^\r\n]+', 3)
If @error Or UBound($aOut) < 2 Then
Return SetError(2, 0, 0)
EndIf
$aOut[0] = UBound($aOut) - 1
Return $aOut
EndFunc ;==>_FileSearch
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $tNMHDR, $hWndFrom, $iCode, $tInfo, $iIndexNow, $sNewText, $Pr, $Pr2
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = DllStructGetData($tNMHDR, 'hWndFrom')
$iCode = DllStructGetData($tNMHDR, 'Code')
Switch $hWndFrom
Case $ListView1
Switch $iCode
Case $LVN_ITEMCHANGED
If IsArray($aFileList) Then
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
$iIndexNow = DllStructGetData($tInfo, 'Index')
If $iIndexOld <> $iIndexNow Then
$iIndexOld = $iIndexNow
GUICtrlSetData($LblFileName, $aFileList[$iIndexOld + 1])
;$FileName= GUICtrlRead($LblFileName)
_OpenFileInSciTE()
WinActivate($Form1)
;_GUICtrlListView_SetItemSelected($ListView1, $iIndexOld,1)
EndIf
EndIf
Case $NM_DBLCLK
_RunFile()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func _ControlSend_Ctrl_W()
Local $hSciTE = WinGetHandle('[Class:SciTEWindow]')
ControlFocus($hSciTE, "", "[CLASS:Scintilla; INSTANCE:1]")
ControlSend($hSciTE, "", 0, "{CTRLDOWN}w{CTRLUP}")
EndFunc
Func _SciTEWindow()
Local $hSciTE = WinGetHandle('[Class:SciTEWindow]')
If WinExists("[Class:SciTEWindow]") Then
WinActivate("[Class:SciTEWindow]", "")
Local $hSciTE = WinGetHandle('[Class:SciTEWindow]')
ControlFocus($hSciTE, "", "[CLASS:Scintilla; INSTANCE:1]")
ControlSend($hSciTE, "", 0, "{CTRLDOWN}n{CTRLUP}")
Else
Run("C:\Program Files\AutoIt3\SciTE\SciTE.exe")
WinActivate("[Class:SciTEWindow]", "")
Local $hSciTE = WinGetHandle('[Class:SciTEWindow]')
ControlFocus($hSciTE, "", "[CLASS:Scintilla; INSTANCE:1]")
ControlSend($hSciTE, "", 0, "{CTRLDOWN}n{CTRLUP}")
EndIf
;_SciTEResize()
WinMove ($hSciTE, "", 0, 0, @DesktopWidth - 260 , @DesktopHeight - 30)
EndFunc
Func _SciTEResize()
Local $x = 0
Local $y = 0
Local $wi = @DesktopWidth - 260 ; Ширина окна
Local $he = @DesktopHeight - 30; Высота окна
$hSciTE = WinGetHandle('[Class:SciTEWindow]')
Local $tTitle=WinGetTitle($hSciTE)
Sleep(100)
WinMove ($hSciTE, "", $x, $y, $wi, $he)
EndFunc
Func _OpenFileInSciTE()
Local $hSciTE = WinGetHandle('[Class:SciTEWindow]')
Local $FileName=FileGetShortName(GUICtrlRead($LblFileName))
ControlFocus($hSciTE, "", "[CLASS:Scintilla; INSTANCE:1]")
ControlSend($hSciTE, "", 0, "{CTRLDOWN}w{CTRLUP}")
ControlFocus($hSciTE, "", "[CLASS:Scintilla; INSTANCE:1]")
ControlSend($hSciTE, "", 0, "{CTRLDOWN}o{CTRLUP}")
ControlFocus("[Class:#32770]", "", "[CLASS:Edit; INSTANCE:1]")
ControlSetText("[Class:#32770]", "", "[CLASS:Edit; INSTANCE:1]", $FileName)
ControlClick('[Class:#32770]', '', '[CLASS:Button; INSTANCE:2]', "left", 1)
EndFunc
Func _RunFile()
$FileName=FileGetShortName(GUICtrlRead($LblFileName))
Run("C:\Program Files\AutoIt3\AutoIt3.exe" & " " & $FileName)
EndFunc
Func _LoadFileToListView()
Local $aItems[1500][1]
$FileList = _FileSearch($FileSource, "*.au3")
If Not @error Then
For $i = 1 To $FileList[0]
$aItems[$i][0] =$FileList[$i]
Next
EndIf
_GUICtrlListView_AddArray($ListView1, $aItems)
EndFunc
Func _ListViewRefresh()
Local $aDell
$aDell = _GUICtrlListView_GetSelectedIndices($ListView1, True)
If $aDell[0] Then
For $i = $aDell[0] To 1 Step -1
_GUICtrlListView_DeleteItem($ListView1, $aDell[$i])
Next
EndIf
$aDell = 0
_GUICtrlListView_SetItemSelected($ListView1, -1, False)
;ConsoleWrite("Файл " & $aDel & " Удален" & @CRLF)
EndFunc
Func _MoveFileToDestination()
Local $aMov,$FileDestination
$aMov=GUICtrlRead($LblFileName)
$FileDestination ="D:\Move_AU3_File"; GUICtrlRead($Input2)
FileMove($aMov,$FileDestination,8)
;ConsoleWrite("Файл " & $aMov & " переместили в " & $FileDestination & @CRLF)
EndFunc
Func _DeleteFileToRecycle()
Local $aDel
$aDel=GUICtrlRead($LblFileName)
FileRecycle($aDel) ; FileDelete($aDel)
EndFunc
Func _SciTEexit()
ControlSend($hSciTE, "", 0, "{ALTDOWN}F4{ALTUP}")
EndFunc