| View previous topic :: View next topic |
| Author |
Message |
Orion9

Joined: 01 Jan 2024 Posts: 1136
|
(Separately) Posted: Sat May 23, 2026 13:59 Post subject: |
|
|
Кнопка для загрузки иконок текущего файла под курсором на главную панель инструментов. Поддерживаются любые типы файлов - ico, icl, dll и exe.
Требуются плагин Autorun
https://total.darkhost.ru/wiki/doku.php?id=ru:autorun
Плагин IconLibrary
http://wincmd.ru/plugring/iconlibrary.html
Кнопка создает временную панель инструментов и загружает ее на главную панель. Файл панели сохраняется в %COMMANDER_PATH%\Bars\Auto_icons.bar. Путь можно изменить в функции CreateIconsBar.
Для работы скрипта необходимо добавить пользовательскую команду em_open_icons_panel в файл usercmd.ini
| Code: | [em_open_icons_panel]
cmd=OPENBAR1
param=%|COMMANDER_PATH|\Bars\Auto_icons.bar |
Пользуясь этой командой, можно вызывать последнюю созданную панель в любой момент времени без создания новой.
Код кнопки 62005 можно изменить или привязать к em_команде
| Code: | [em_load_icons]
cmd=62005 |
Полученной em_команде можно назначить горячую клавишу стандартными средствами ТС.
В кнопке действую два модификатора: Ctrl и Shift
 Hidden text TOTALCMD#BAR#DATA
62005
%COMMANDER_EXE%
Загрузить иконки файла|CTRL - Загрузить Shell32.dll|SHIFT - Перейти к Shell32.dll
0
-1
Код Autorun можно добавить к главной конфигурации плагина или в любой другой модуль
 aucfg | Code: | RegisterCommand 62005 "LoadIconsToPanel"
#RegisterCommand 62006 "Reserved"
Func LoadIconsToPanel()
Local sPath, sName, sFile, sHint, nIcons
Local bCtrl = IsPressed(0x11), bShift = IsPressed(0x10)
# файл под курсором
sPath = RequestCopyDataInfo("SP")
sName = RequestCopyDataInfo("SN")
sFile = sPath & sName
# модификаторы
If bCtrl Or bShift Then
sFile = GetKnownFolderPath("System") & "\shell32.dll"
Endif
# переход к shell32.dll
If bShift Then
CommandExec /CD:S %sFile%
Return
Endif
# проверка существования
If Not FileExist(sFile) Then
DarkHint("Файл не существует " & sFile)
Return
Endif
# каталог под курсором
If StrPos(FileGetAttr(sFile), "D") Then
DarkHint("Нет иконок" & auCRLF & "Каталог " & sFile)
Return
Endif
# загрузка плагина
Local obj = Plugin("IconLibrary")
If ERROR <> 0 then
Return DarkHint("Plugin Error " & ERROR)
EndIf
# получение данных для текущего файла
obj.FileName = sFile
nIcons = obj.GetValue(0)
# освобождение объекта
Free(obj)
If nIcons > 0 then
sHint = "Иконок: " & nIcons
CreateIconsBar(sFile, nIcons) # создание панели
Else
sHint = "Нет иконок"
Endif
# добавление имени файла к подсказке
sHint &= auCRLF & "Файл " & sFile
If nIcons = 0 Then DarkHint(sHint)
EndFunc
Func CreateIconsBar(FileName, Icons)
Local sName = "Auto_icons"
Local sPath = COMMANDER_PATH & "\Bars\"
Local sFile = sPath & sName & ".bar"
DarkHint("Загрузка иконок")
If Not CreateNewBarFile(sPath, sName) Then
DarkHint("Отмена операции")
Return
EndIf
For i = 2 to Icons + 1
IniWrite %sFile% "Buttonbar" %"'Cmd' & i" "100000"
IniWrite %sFile% "Buttonbar" %"'Menu' & i" %"i-2"
IniWrite %sFile% "Buttonbar" %"'Button' & i" %"FileName & ',' & i-2"
Next
IniWrite %sFile% "Buttonbar" "Buttoncount" %"Icons+1"
DarkHint("Панель иконок:" & auCRLF & i-1 & " кнопок создано.")
CommandExec("em_open_icons_panel")
EndFunc
# создание новой панели (путь, имя, кнопка возврата)
Func CreateNewBarFile(BarDir, BarName, BackButton = true)
Local bar, br2, def
bar = BarDir & BarName & ".bar"
br2 = BarDir & BarName & ".br2"
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%bar%"""
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%br2%"""
If FileExist(bar) Then
DarkHint("Ошибка удаления " & bar)
Return false
Endif
IniWrite %bar% "Buttonbar" "Buttoncount" "0"
If ERROR = 1 Then
DarkHint("Ошибка создания " & bar)
Return false
EndIf
IniRead def %COMMANDER_INI% "Buttonbar" "Buttonbar" "%COMMANDER_PATH%\DEFAULT.BAR"
If BackButton Then
IniWrite %bar% "Buttonbar" "Button1" "wcmicons.dll,15"
IniWrite %bar% "Buttonbar" "Cmd1" %def%
IniWrite %bar% "Buttonbar" "Menu1" "Вернуться"
Endif
Return true
EndFunc
Func DarkHint(Hint, Delay = 0, Flags = 0)
# формат подсказки
SetHintParam("ShowHint", "Font", 10, "Arial")
SetHintParam("ShowHint", "BackColor", 0x001C1C1C)
SetHintParam("ShowHint", "Text", 0xFFFFFF)
# отображение подсказки
ShowHint(Hint, "", "", Delay, Flags)
# возвращение формата по умолчанию
Sleep(100)
SetHintParam("ShowHint", "Reload")
EndFunc
|
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|