Что нового

Перемещение объектов по рабочему столу

rolatipov

Новичок
Сообщения
25
Репутация
0
Как перемещать ярлыки(файлы) по рабочему столу, если их положение(координаты) неизвестны?

К сожалению нашел пока только для Delphi,там используется компоненты ListView и ListView_SetItemPosition.

Как реализовать в AutoIt?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
rolatipov,
Справка --> User Defined Function Reference --> GuiListView Management --> _GUICtrlListView_SetItemPosition.
 
Автор
R

rolatipov

Новичок
Сообщения
25
Репутация
0
madmasles, подскажи пожалуйста где почитать чтобы узнать $iIndex элемента
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
rolatipov,
Код:
#include <Array.au3>
#include <GuiListView.au3>

$hListView = ControlGetHandle('[Title:Program Manager; Class:Progman]', '', _
		'[CLASS:SysListView32; INSTANCE:1]')
If Not $hListView Then
	MsgBox(16, 'Error', 'Error')
	Exit
EndIf
;получаем кол-во элементов на рабочем столе
$iCount = _GUICtrlListView_GetItemCount($hListView)
Dim $aLV[$iCount + 1][3] = [[$iCount, 'X', 'Y']]
For $i = 0 To $iCount - 1
	;получаем в цикле имя элемента(файла, папки, ярлыка) по индексу (начинается с 0)
	$aLV[$i + 1][0] = _GUICtrlListView_GetItemText($hListView, $i)
	;получаем его координаты
	$aTemp = _GUICtrlListView_GetItemPosition($hListView, $i)
	If UBound($aTemp) = 2 Then
		$aLV[$i + 1][1] = $aTemp[0]
		$aLV[$i + 1][2] = $aTemp[1]
	EndIf
Next
_ArrayDisplay($aLV, 'Desktop')
;Ищем индекс последнего элемента
$iIndex = _GUICtrlListView_FindText($hListView, $aLV[$aLV[0][0]][0])
MsgBox(64, 'Info', 'Text: ' & $aLV[$aLV[0][0]][0] & @LF & 'Index: ' & $iIndex)
MsgBox(64, 'Info', 'Index: ' & $iIndex & @LF & 'Text: ' & _
		_GUICtrlListView_GetItemText($hListView, $iIndex))
 
Автор
R

rolatipov

Новичок
Сообщения
25
Репутация
0
Все хорошо вот только я получаю имена файлов без расширения.Правильно ли я понимаю что функция _GUICtrlListView_SetItemSelected может выделить элемент из этого списка?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
rolatipov [?]
Правильно ли я понимаю
Правильно, но у меня на рабочем столе эта функция не работает. Можно попробовать
Код:
;...
_GUICtrlListView_ClickItem($hListView, $iIndex)
;...
Но предварительно надо свернуть все окна.
я получаю имена файлов без расширения
Вы получаете имена так, как они отображаются на рабочем столе.
 
Автор
R

rolatipov

Новичок
Сообщения
25
Репутация
0
У меня на Win7 функция _GUICtrlListView_SetItemSelected тоже не работает(сейчас пробовал).
Вы получаете имена так,как они отображаются на рабочем столе
А нельзя как то это список $hListView связать с расширениями,а то иначе пропадает возможность получить полную информацию о файле,например для ярлыка узнать его родитель и т.д.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
rolatipov,
Код:
#include <Array.au3>
#include <File.au3>

$aFiles = _FileListToArray(@DesktopDir)
If Not @error Then
	_ArrayDisplay($aFiles, @DesktopDir)
EndIf
$aFiles = _FileListToArray(@DesktopCommonDir)
If Not @error Then
	_ArrayDisplay($aFiles, @DesktopCommonDir)
EndIf
 
Верх