Что нового

[Элементы GUI] как получить путь к папке которую нашел в GUICtrlCreateListView ?

Buburum

Новичок
Сообщения
12
Репутация
0
Нахожу через INPUT в GUICtrlCreateListView значение
вопрос как получить путь к папке которую нашел в List ?

Код:
$sTmp = GUICtrlRead($Input)
; Получает индекс найденного пункта по тексту
$ind = _GUICtrlListView_FindInText($MyList, $sTmp)
 		
; Прокручивает ListView к найденному пункту
_GUICtrlListView_EnsureVisible($MyList, $ind)
_GUICtrlListView_SetItemSelected($MyList, $ind)


Пример:
Считываю в GUICtrlCreateListView перечень папок из папки Install
Нахожу через Input скажем папку Skype
нужно получить путь к этой папке что бы запустить нажатием Button - Skype.exe
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
Выдрал из своего рабочего проекта, если что не так извиняйте.
AutoIt Version: 3.3.6.0

У меня это выглядело так ...

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <Misc.au3>
#include <File.au3>
#include <file.au3>
#include <Array.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>


Global $PosCaret = 0, $hListView1, $hGui3,$INDEX_LIST, $PosCaret = 0, $hListView, $hListView1
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

$hGui3 = GUICreate("Выберите файл", 408, 333, -1, -1)
$hListView1 = GUICtrlCreateListView("", 8, 8, 186, 270)
$PicCoverPreView = GUICtrlCreatePic("", 200, 8, 200, 270, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Button_SC_1 = GUICtrlCreateButton("Ok", 328, 300, 75, 25, $WS_GROUP)
$Button_SC_2 = GUICtrlCreateButton("Отмена", 248, 300, 75, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("", 0, 292, 426, 2, $SS_ETCHEDHORZ)
_GUICtrlListView_AddColumn($hListView1, "[Обложка]", 200)
$aCoverList = _FileListToArray(@WindowsDir, '*.exe', 1) ; Фильтр файлов
;~ _ArrayDisplay($aCoverList)

$hImage = _GUIImageList_Create()

For $i = 0 To UBound($aCoverList) - 1
	$a001 = StringSplit($aCoverList[$i], '|')
	_GUICtrlListView_AddItem($hListView1, $a001[1], $i)
	_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView1, 0x147a0d, 16, 16))
	$PosCaret = $i
Next

_GUICtrlListView_SetImageList($hListView1, $hImage, 1)
_GUICtrlListView_SetItemSelected($hListView1, $PosCaret)
_GUICtrlListView_SetItemParam($hListView, $PosCaret, 1234)


$tInfo = DllStructCreate($tagLVFINDINFO)
DllStructSetData($tInfo, "Flags", $LVFI_PARAM)
DllStructSetData($tInfo, "Param", 1234)
$iI = _GUICtrlListView_FindItem($hListView1, -1, $tInfo)
_GUICtrlListView_EnsureVisible($hListView1, $iI)
_GUICtrlListView_DeleteItem($hListView1, 0)


GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE,  $Button_SC_2
			Exit
		Case $Button_SC_1
			MsgBox(0, '', 'Запускаем! = ' & _GUICtrlListView_GetItemText($hListView1, $INDEX_LIST))
			Run(@WindowsDir & '\' & _GUICtrlListView_GetItemText($hListView1, $INDEX_LIST))
		EndSwitch
	WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
	Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $hWndListView1, $tInfo
	$hWndListView = $hListView
	$hWndListView1 = $hListView1
	If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
	If Not IsHWnd($hListView1) Then $hWndListView1 = GUICtrlGetHandle($hListView1)

	$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
	$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
	$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
	$iCode = DllStructGetData($tNMHDR, "Code")
	Switch $hWndFrom
		Case $hWndListView1
			Switch $iCode
				Case $NM_CLICK
					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
					$INDEX_LIST = DllStructGetData($tInfo, "Index")

				Case $NM_DBLCLK
					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
					$INDEX_LIST = DllStructGetData($tInfo, "Index")
					MsgBox(0, '', 'Запускаем! = ' & _GUICtrlListView_GetItemText($hListView1, $INDEX_LIST))
					Run(@WindowsDir & '\' & _GUICtrlListView_GetItemText($hListView1, $INDEX_LIST))
			EndSwitch
	EndSwitch

Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 
Автор
B

Buburum

Новичок
Сообщения
12
Репутация
0
Спасибо огромное ... с утра буду разбираться у нас похожие проекты )
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
Могу скинуть все ресурсы, там интересно.
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
Buburum [?]
Считываю в GUICtrlCreateListView перечень папок из папки Install
Нахожу через Input скажем папку Skype
нужно получить путь к этой папке что бы запустить нажатием Button - Skype.exe
Если я правильно понял, вы находите в списке полное название папки по частичному совпадению, введённому в input? Возможно, тогда достаточно получить текст выделенного пункта и соединить его с известным путём к папке Install.
Код:
$ItemText = _GUICtrlListView_GetItemText($MyList, $ind)
Run("D:\Install\" & $ItemText & "\Skype.exe")
 
Автор
B

Buburum

Новичок
Сообщения
12
Репутация
0
FlatX007
Конечно скидывай тебе мыло или что дать ?
 
Верх