Что нового

Поск файлов и их запуск

Stalevar

Новичок
Сообщения
31
Репутация
0
Здравствуйте знатоки AUTOIT
Это моя первая тема, не судите строго, я новичок.
Хотелось бы сделать программку
1) для поиска файлов по их названию по заданному пути.
2) открытие выбранного файла по двойному клику.

Буду потихоньку делать, от помощи не откажусь :smile:
Пока что вот:
Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>

$1=GUICreate("Поиск",594,697,-1,-1,-1,-1)
GUISetBkColor(0xC0C0C0,$1)
GUICtrlCreateInput("Путь к папке",10,10,534,26,-1,$WS_EX_CLIENTEDGE)
GUICtrlCreateInput("Название файла",10,42,573,28,-1,$WS_EX_CLIENTEDGE)
$put = GUICtrlCreateButton("",548,6,35,30,-1,-1)
GUICtrlCreatelist("Список найденых файлов",10,112,573,565,-1,$WS_EX_CLIENTEDGE)
$poisk = GUICtrlCreateButton("ПОИСК",247,76,100,30,-1,-1)
GUISetState(@SW_SHOW,$1)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $put
			 start1()
		Case $poisk
			start2()
	 EndSwitch
WEnd


Func start1()

EndFunc

Func start2()

EndFunc
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
Первые трудности.
Не получается заполнить GUICtrlCreatelist

Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>


#include <File.au3>
#include <Array.au3>


$1=GUICreate("Поиск",594,697,-1,-1,-1,-1)
GUISetBkColor(0xC0C0C0,$1)
$sPath="C:\Documents and Settings\All Users\Documents\VSV\кАкос\Документы\"
$papka=GUICtrlCreateInput($sPath,10,10,534,26,-1,$WS_EX_CLIENTEDGE)
GUICtrlCreateInput("Название файла",10,42,573,28,-1,$WS_EX_CLIENTEDGE)
$put = GUICtrlCreateButton("",548,6,35,30,-1,-1)
$spisok=GUICtrlCreatelist("Список найденых файлов",10,112,573,565,-1,$WS_EX_CLIENTEDGE)
$poisk = GUICtrlCreateButton("ПОИСК",247,76,100,30,-1,-1)
GUISetState(@SW_SHOW,$1)





;$hGui = GUICreate('Функция FileSelectFolder')

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $put
			 start1();Путь к папке для поиска
		Case $poisk
			start2();Поиск
	 EndSwitch
WEnd


Func start1();путь к папке для поиска
$sPath = FileSelectFolder("Выбор папки.","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}",3)
$papka=GUICtrlCreateInput($sPath,10,10,534,26,-1,$WS_EX_CLIENTEDGE)

EndFunc

Func start2(); Поиск
$FileList=_FileListToArray($sPath)
GUICtrlSetData($spisok,$FileList);Как заполнить список 
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
Stalevar
заполнить GUICtrlCreatelist
Код:
Func start2(); Поиск
  $FileList=_FileListToArray($sPath)
  If IsArray($FileList) Then
    GUICtrlSetData($spisok,"")
    For $i=1 To $FileList[0]
      GUICtrlSetData($spisok,$FileList[$i])
    Next
  EndIf
EndFunc


В функции start1() нет необходимости заново создавать поле ввода. Достаточно передать данные в уже созданное
Код:
GUICtrlSetData($papka,$sPath)
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
InnI Спасибо за помощь.
Подскажите в каком направлении копать чтоб список заполнялся по совпадению названия из GUICtrlCreateInput, я предполагаю что _FO_FileSearch

Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>


#include <File.au3>
#include <Array.au3>


$1=GUICreate("Поиск",594,697,-1,-1,-1,-1)
GUISetBkColor(0xC0C0C0,$1)
$sPath="C:\Documents and Settings\All Users\Documents\VSV\кАкос\Документы\"
$papka=GUICtrlCreateInput($sPath,10,10,534,26,-1,$WS_EX_CLIENTEDGE)
GUICtrlCreateInput("Название файла",10,42,573,28,-1,$WS_EX_CLIENTEDGE)
$put = GUICtrlCreateButton("",548,6,35,30,-1,-1)
$spisok=GUICtrlCreatelist("Список найденых файлов",10,112,573,565,-1,$WS_EX_CLIENTEDGE)
$poisk = GUICtrlCreateButton("ПОИСК",247,76,100,30,-1,-1)
GUISetState(@SW_SHOW,$1)





;$hGui = GUICreate('Функция FileSelectFolder')

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $put
			 start1();Путь к папке для поиска
		Case $poisk
			start2();Поиск
	 EndSwitch
WEnd


Func start1();путь к папке для поиска
$sPath = FileSelectFolder("Выбор папки.","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}",3)
GUICtrlSetData($papka,$sPath)
EndFunc

Func start2(); Поиск
  $FileList=_FileListToArray($sPath)
  If IsArray($FileList) Then
    GUICtrlSetData($spisok,"")
    For $i=1 To $FileList[0]
      GUICtrlSetData($spisok,$FileList[$i])
    Next
  EndIf
EndFunc
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
Прикрутил с вашей помощью :smile:
Но работает не так как хотелось бы, ищет только по полному совпадению в месте с расширением файла.
Нужно : В папке три файла ( 1374 ст3.doc; 1375 ст3.doc; 1377 ст4.doc ), при вводе строку поиска "13" выводится все три файла, при вводе строку поиска "ст3" выводится два файла.

Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <File.au3>
#include <Array.au3>

$1=GUICreate("Поиск",594,697,-1,-1,-1,-1)
GUISetBkColor(0xC0C0C0,$1)
$sPath="C:\Documents and Settings\All Users\Documents\VSV\кАкос\Документы\"
$papka=GUICtrlCreateInput($sPath,10,10,534,26,-1,$WS_EX_CLIENTEDGE)
$forma1 =GUICtrlCreateInput("Название файла",10,42,573,28,-1,$WS_EX_CLIENTEDGE)
$put = GUICtrlCreateButton("",548,6,35,30,-1,-1)
$spisok=GUICtrlCreatelist("Список найденых файлов",10,112,573,565,-1,$WS_EX_CLIENTEDGE)
$poisk = GUICtrlCreateButton("ПОИСК",247,76,100,30,-1,-1)
GUISetState(@SW_SHOW,$1)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $put
			 start1();Путь к папке для поиска
		Case $poisk
			start2();Поиск
	 EndSwitch
WEnd

Func start1();путь к папке для поиска
$sPath = FileSelectFolder("Выбор папки.","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}",3)
GUICtrlSetData($papka,$sPath)
EndFunc

Func start2(); Поиск
GUICtrlSetData($spisok,"")
$text1 = GUICtrlRead($forma1)

$FileList=_FileListToArray($sPath,$text1)
  If IsArray($FileList) Then
   GUICtrlSetData($spisok,"")
    For $i=1 To $FileList[0]
      GUICtrlSetData($spisok,$FileList[$i])
    Next
  EndIf

EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
Stalevar
Я так понимаю, вы не стали себя утруждать пониманием термина "WildCards" :(
Код:
$FileList=_FileListToArray($sPath,"*"&$text1&"*")
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
Осталось запустить по двойному клику выбранный файл в GUICtrlCreatelist
 

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
Stalevar
запустить по двойному клику выбранный файл
По двойному клику будет сложновато. Для примера см. обработку сообщения $LBN_DBLCLK в справке к функции
Код:
_GUICtrlListBox_Create()
Лучше сделайте отдельную кнопку и запускайте по её нажатию файл через
Код:
ShellExecute()
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
Через кнопку вроде получилось.
Код:
Func start3();открыть
$name=GUICtrlRead($spisok, 1)
$putname=$sPath&$name
;MsgBox(1,"1",$putname)
ShellExecute($putname)
EndFunc



Добавлено:
Сообщение автоматически объединено:

Проверьте пожалуйста, все ли правильно, что можно добавить или убрать.
Открывает по двойному клику мыши.
Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <File.au3>
#include <Array.au3>

$1=GUICreate("Поиск",594,697,-1,-1,-1,-1)
GUISetBkColor(0xC0C0C0,$1)
$sPath="C:\Documents and Settings\All Users\Documents\VSV\кАкос\Документы"
$papka=GUICtrlCreateInput($sPath,10,10,534,26,-1,$WS_EX_CLIENTEDGE)
$forma1 =GUICtrlCreateInput("",10,42,573,28,-1,$WS_EX_CLIENTEDGE)
$put = GUICtrlCreateButton("",548,6,35,30,-1,-1)
$spisok=GUICtrlCreatelist("Список найденых файлов",10,112,573,565,-1,$WS_EX_CLIENTEDGE)
$poisk = GUICtrlCreateButton("ПОИСК",247,76,100,30,-1,-1)
$open = GUICtrlCreateButton("Открыть",483,76,100,30,-1,-1)

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

GUISetState(@SW_SHOW,$1)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $put
			 start1();Путь к папке для поиска
		Case $poisk
			start2();Поиск
		Case $open
			start3();Открыть
		Case HotKeySet("{ENTER}","start2")
		While 1
         Sleep(100)
        WEnd



	 EndSwitch
WEnd

Func WM_COMMAND($hWnd, $iMsg, $iwParam);открыть по двойному клику

    $iCode = BitShift($iwParam, 16)
            Switch $iCode
                Case $LBN_DBLCLK
                 start3();открыть
            EndSwitch
EndFunc




Func start1();путь к папке для поиска
$sPath = FileSelectFolder("Выбор папки.","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}",3)
GUICtrlSetData($papka,$sPath)
EndFunc

Func start2(); Поиск

GUICtrlSetData($spisok,"")
$text1 = GUICtrlRead($forma1)

$FileList=_FileListToArray($sPath,"*"&$text1&"*")
  If IsArray($FileList) Then
   GUICtrlSetData($spisok,"")
    For $i=1 To $FileList[0]
      GUICtrlSetData($spisok,$FileList[$i])
    Next
  EndIf
EndFunc

Func start3();открыть
$name=GUICtrlRead($spisok, 1)
$putname=$sPath&"/"&$name
;MsgBox(1,"1",$putname)
ShellExecute($putname)
EndFunc



Добавлено:
Сообщение автоматически объединено:

Поиск в подпапках.
Не получается убрать путь к файлу в GUICtrlCreatelist так как потом не знаю как его "файл" открыть.
Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <FileOperations.au3>
#Include <RecFileListToArray.au3>



$1=GUICreate("Поиск",594,697,-1,-1,-1,-1)
GUISetBkColor(0xC0C0C0,$1)
$sPath="C:\Documents and Settings\All Users\Documents\VSV\кАкос\Документы"
$papka=GUICtrlCreateInput($sPath,10,10,534,26,-1,$WS_EX_CLIENTEDGE)
$forma1 =GUICtrlCreateInput("",10,42,573,28,-1,$WS_EX_CLIENTEDGE)
$put = GUICtrlCreateButton("",548,6,35,30,-1,-1)
$spisok=GUICtrlCreatelist("Список найденых файлов",10,112,573,565,-1,$WS_EX_CLIENTEDGE)
$poisk = GUICtrlCreateButton("ПОИСК",247,76,100,30,-1,-1)
$open = GUICtrlCreateButton("Открыть",483,76,100,30,-1,-1)

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

GUISetState(@SW_SHOW,$1)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $put
			 start1();Путь к папке для поиска
		Case $poisk
			start2();Поиск
		Case $open
			start3();Открыть
		Case HotKeySet("{ENTER}","start2")
		While 1
         Sleep(100)
        WEnd
    EndSwitch
WEnd

Func WM_COMMAND($hWnd, $iMsg, $iwParam);открыть по двойному клику

    $iCode = BitShift($iwParam, 16)
            Switch $iCode
                Case $LBN_DBLCLK
                 start3();открыть
            EndSwitch
EndFunc

Func start1();путь к папке для поиска
$sPath = FileSelectFolder("Выбор папки.","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}",3)
GUICtrlSetData($papka,$sPath)
EndFunc

Func start2(); Поиск
GUICtrlSetData($spisok,"")
$text1 = GUICtrlRead($forma1)
$FileList=_RecFileListToArray($sPath,"*"&$text1&"*",1,1,1,2)
  If IsArray($FileList) Then
   GUICtrlSetData($spisok,"")
    For $i=1 To $FileList[0]
      GUICtrlSetData($spisok,$FileList[$i])
    Next
  EndIf
EndFunc

Func start3();открыть
$name=GUICtrlRead($spisok, 1)
$putname=$name
ShellExecute($putname)
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
Stalevar
Не получается убрать путь к файлу
И не нужно, т.к. при наличии одинаковых имён файлов возникнут проблемы:
- GUICtrlSetData() не дублирует в списке пункты с одинаковыми именами
- если даже имена продублировать, то непонятно, файл из какой папки будет запущен
Поэтому оставьте полные пути и функция пример вид
Код:
Func start3();открыть
  ShellExecute(GUICtrlRead($spisok))
EndFunc   ;==>start3
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
Все таки хочу попробовать сделать чтоб путь не показывался, а то он все окно занимает и имя файла бывает не видно.
Вот что делаю: создал второй GUICtrlCreatelist, один будет видимый и отображаться только имена, второй не видимый с полным путем и именем, номер пункта будет дублироваться в обоих. Файл будет запускаться из листа с полным путем.
Не могу понять как получить номер выбранного пункта листа, GUICtrlRead возвращает текст выбранного пункта.
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
Вот так правильно?
Код:
Func start3();открыть
_GUICtrlListBox_SetCurSel($spisok, _GUICtrlListBox_GetCurSel($spisok2))
ShellExecute(GUICtrlRead($spisok))
EndFunc



Добавлено:
Сообщение автоматически объединено:

А возможно сделать GUICtrlCreatelist не видимым или на задний план?
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
Спасибо
Все вроде работает как надо в одной папке где только текстовые .doc файлы.
Попробовал искать на диске "C/", и пипец, номера пунктов не совпадают в листах и соответственно запускает не тот файл, побывал сортировку и без, не получается. :'(
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=4.ico
#AutoIt3Wrapper_Res_File_Add=3.ico, 3, 203
#AutoIt3Wrapper_Res_File_Add=4.ico, 3, 204
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <FileOperations.au3>
#Include <RecFileListToArray.au3>
#include <GuiImageList.au3>
#Include <Icons.au3>
#include <GuiListBox.au3>
#include <GUIConstantsEx.au3>



$1=GUICreate("Поиск VSV",500,595,-1,-1,-1,-1)
GUISetBkColor(0xC0C0C0,$1)
$sPath="C:\Documents and Settings\All Users\Documents\VSV\кАкос\Документы"
$papka=GUICtrlCreateInput($sPath,10,8,440,26,-1,$WS_EX_CLIENTEDGE)
$forma1 =GUICtrlCreateInput("",10,44,440,28,-1,$WS_EX_CLIENTEDGE)

$put = GUICtrlCreateButton("",454,4,38,33, $BS_ICON)
$Pic=GUICtrlSetImage(-1, @ScriptFullPath,203)

$spisok=GUICtrlCreatelist("",235,90,250,490,$LBS_SORT)
;GUICtrlSetState($spisok, $GUI_HIDE)
$spisok2=GUICtrlCreatelist("",10,90,230,490,$LBS_SORT)


$poisk = GUICtrlCreateButton("",454,41,38,33,$BS_ICON)
$Picc=GUICtrlSetImage(-1, @ScriptFullPath,204)

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState(@SW_SHOW,$1)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $put
			 start1();Путь к папке для поиска
		Case $poisk
			start2();Поиск
		;Case $open
			;start3();Открыть
		Case HotKeySet("{ENTER}","start2")
		While 1
         Sleep(100)
        WEnd



	 EndSwitch
WEnd

Func WM_COMMAND($hWnd, $iMsg, $iwParam);открыть по двойному клику

    $iCode = BitShift($iwParam, 16)
            Switch $iCode
                Case $LBN_DBLCLK
                 start3();открыть
            EndSwitch
EndFunc




Func start1();путь к папке для поиска
$sPath = FileSelectFolder("Выбор папки для поиска.","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}",4)
GUICtrlSetData($papka,$sPath)
EndFunc

Func start2(); Поиск

GUICtrlSetData($spisok,"")
GUICtrlSetData($spisok2,"")
$text1 = GUICtrlRead($forma1)

;$FileList=_FileListToArray($sPath,"*"&$text1&"*",1)
$FileList=_RecFileListToArray($sPath,"*"&$text1&"*",1,1,0,2)
$FileList2=_RecFileListToArray($sPath,"*"&$text1&"*",1,1,0,0)
  If IsArray($FileList2) Then
   GUICtrlSetData($spisok,"")
   GUICtrlSetData($spisok2,"")
    For $i=1 To $FileList2[0]
      GUICtrlSetData($spisok,$FileList[$i])
	  GUICtrlSetData($spisok2,$FileList2[$i])
    Next
  EndIf
EndFunc

Func start3();открыть
_GUICtrlListBox_SetCurSel($spisok, _GUICtrlListBox_GetCurSel($spisok2))
ShellExecute(GUICtrlRead($spisok))
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
Списки создавайте без сортировки
Код:
$spisok=GUICtrlCreatelist("",235,90,250,490,BitXOR($GUI_SS_DEFAULT_LIST,$LBS_SORT))
А пункты добавляйте так
Код:
For $i=1 To $FileList[0]
      _GUICtrlListBox_AddString($spisok,$FileList[$i])
    Next
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
:laugh:
Заработало, спасибо. :laugh:


Добавлено:
Сообщение автоматически объединено:

А куда можно вставить GUICtrlCreateProgress, или что можно сделать чтоб было видно что поиск идет.
 

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
Stalevar
чтоб было видно что поиск идет
В вашем случае поиском занимается функция _RecFileListToArray(). Естественно, что модернизировать нужно её. Но заполнение списков тоже требует времени. Поэтому, нужно рассчитывать и на это. В простейшем случае просто выводится какой-нибудь Label поверх всего окна с надписью "Поиск файлов. Ждите...". Или в заголовок окна можно эту фразу вынести.
 
Автор
S

Stalevar

Новичок
Сообщения
31
Репутация
0
InnI вы гений, спасибо.
Вот что получилось, может кому пригодится. :smile:

Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=4.ico
#AutoIt3Wrapper_Res_File_Add=3.ico, 3, 203
#AutoIt3Wrapper_Res_File_Add=4.ico, 3, 204
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <FileOperations.au3>
#Include <RecFileListToArray.au3>
#include <GuiImageList.au3>
#Include <Icons.au3>
#include <GuiListBox.au3>
#include <GUIConstantsEx.au3>



$1=GUICreate("Поиск VSV",500,590,-1,-1,-1,-1)
GUISetBkColor(0xC0C0C0,$1)
$sPath="C:\Documents and Settings\All Users\Documents\VSV\кАкос\Документы"
$papka=GUICtrlCreateInput($sPath,10,8,440,26,-1,$WS_EX_CLIENTEDGE)
$forma1 =GUICtrlCreateInput("",10,44,440,26,-1,$WS_EX_CLIENTEDGE)

$put = GUICtrlCreateButton("",454,4,38,33, $BS_ICON)
$Pic=GUICtrlSetImage(-1, @ScriptFullPath,203)


$spisok=GUICtrlCreatelist("",235,90,250,490,BitXOR($GUI_SS_DEFAULT_LIST,$LBS_SORT))
GUICtrlSetState($spisok, $GUI_HIDE)
$spisok2=GUICtrlCreatelist("",10,95,480,486,BitXOR($GUI_SS_DEFAULT_LIST,$LBS_SORT))


$poisk = GUICtrlCreateButton("",454,41,38,33,$BS_ICON)
$Picc=GUICtrlSetImage(-1, @ScriptFullPath,204)

$poisktext1=GUICtrlCreateLabel('', 171, 76, 150, 17, $SS_CENTER)
GUICtrlSetColor(-1,0x0000FF)

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState(@SW_SHOW,$1)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $put
			 start1();Путь к папке для поиска
		Case $poisk
			start2();Поиск
		Case HotKeySet("{ENTER}","start2")
		While 1
         Sleep(100)
        WEnd
     EndSwitch
WEnd

Func WM_COMMAND($hWnd, $iMsg, $iwParam);открыть по двойному клику
$iCode = BitShift($iwParam, 16)
            Switch $iCode
                Case $LBN_DBLCLK
                 start3();открыть
            EndSwitch
EndFunc

Func start1();путь к папке для поиска
$sPath = FileSelectFolder("Выбор папки для поиска.","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}",4)
GUICtrlSetData($papka,$sPath)
EndFunc

Func start2(); Поиск
GUICtrlSetData($poisktext1,'Поиск.....')
GUICtrlSetData($spisok,"")
GUICtrlSetData($spisok2,"")
$text1 = GUICtrlRead($forma1)
$FileList=_RecFileListToArray($sPath,"*"&$text1&"*",1,1,0,2)
$FileList2=_RecFileListToArray($sPath,"*"&$text1&"*",1,1,0,0)
  If IsArray($FileList2) Then
   GUICtrlSetData($spisok,"")
   GUICtrlSetData($spisok2,"")
    For $i=1 To $FileList2[0]
	 _GUICtrlListBox_AddString($spisok2,$FileList2[$i])
	  _GUICtrlListBox_AddString($spisok,$FileList[$i])
    Next
  EndIf
  GUICtrlSetData($poisktext1,'')
EndFunc

Func start3();открыть
_GUICtrlListBox_SetCurSel($spisok, _GUICtrlListBox_GetCurSel($spisok2))
ShellExecute(GUICtrlRead($spisok))
EndFunc
 
Верх