Тема: AHK: Отображение содержимого произвольных папок на рабочем столе
Подразумевается использование в AHK_L 1.1.00.01 win x64
Принцип действия: зажать Win key, Произвести клик Lbutton по рабочему столу, не отпуская LButton и Win key сместить курсор мыши по диагонали, рамкой выделения файлов очертив прямоугольник желаемых размеров, отпустить LButton, отпустить Win key, выбрать в Диалоговом окне папку для отображения.
#SingleInstance force
#KeyHistory 0
#NoEnv
SetBatchLines -1
border = 1
Color_List = 2f7dcc ; ListView control
Color_Border = 5cf0f0 ; Main window
Color_Text = White
Transparent = 90
~#Lbutton::
CoordMode, Mouse, Screen
MouseGetPos, xA, yA, id, control
WinGetClass, class, ahk_id %id%
;if(class="WorkerW") &&(control="SysListView321") { ; for win7 desktop
KeyWait Lbutton
if GetKeyState("LWin" , "P") || GetKeyState("RWin" , "P") {
MouseGetPos, xB, yB,
Gosub GuiCreate
}
;}
Return
GuiCreate:
i++
GuiX := % (xA < xB) ? xA : xB
GuiY := % (yA < yB) ? yA : yB
winH := % abs(yA-yB)
winW := % abs(xA-xB)
Gui, %i%: -Caption +Toolwindow -0x100000
Gui, %i%: Color, %Color_Border%
Gui, %i%: Font, s10 c%Color_Text% , Verdana
Gui, %i%: Show, x%GuiX% y%GuiY% h%winH% w%winW%, folder%i%
WinSet , Transparent , %Transparent% , folder%i%
cH := winH - border*2
cw := winW - border*2
Gui, %i%: Add, ListView, icon Background%Color_List% x%border% y%border% h%cH% w%cW%
Gui +OwnDialogs
FileSelectFolder, Folder,, 3
if !(Folder) {
Gui , %i%:Destroy
i--
return
}
Loop %Folder%\*, 2
{
LV_Add("", A_LoopFileName)
}
Return
esc:: ;tmp
if (i>0) {
Gui , %i%:Destroy
i--
} Else Exitapp
Скрипт выше должен работать как подобие виджета folderview в KDE.
Например: из.1, из.2
Возникшие и нерешенные вопросы :
LV_Add Добавляет A_LoopFileName выбранной папки в "ListView" в "Gui 1:", а не в соответствующий "ListView" "Gui %i%:"
Как установить всем элементам отображаемым в ListView иконки|миниатюры соответствующие им в ОС?
Как увеличить расстояния между элементами ListView отображаемыми в режиме "icon"? (для облегчения восприятия)
и многие другие...
Надеюсь на подсказки, спасибо. Буду также благодарен за любые ссылки на реализации подобной идеи на ahk.