Вот времени и нет. Тем более мне надо очень много времени, чтобы с чем-то разобраться.Orion9 писал(а): Только найти немного времени и ознакомится с его функционалом
Было-бы две головы. Но говорят, что одна голова - это хорошо, а две уже уродство
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Код: Выделить всё
Global MI_PARAMS = " --Language=file://ru.csv", MI_NUM = 1, MI_LOCK = 0
ControlSetMouseAction /L /K:C 3 SetMIParams
SetHotkeyAction /V:20 SetBigHintLock 1
SetHotkeyAction /K:S /V:20 SetBigHintLock 2
Func SetBigHintLock(lParam)
If MI_LOCK > 0 Then
MI_LOCK = 0
Else
MI_LOCK = 1
Endif
If lParam = 2 Then MI_LOCK = 2
EndFunc
Func SetMIParams()
MI_NUM = MI_NUM + 1
If MI_NUM > 4 Then MI_NUM = 1
Switch MI_NUM
Case 1
MI_PARAMS = " --Language=file://ru.csv"
Case 2
MI_PARAMS = " --Complete=1 --Language=file://ru.csv"
Case 3
MI_PARAMS = " --Complete=0"
Case 4
MI_PARAMS = " --Output=file://hint.txt"
EndSwitch
ShowHint("Параметры MediaInfo: " & MI_PARAMS)
EndFunc
Func BigHint(FileName, FieldIndex, UnitIndex)
Local b_SHIFT = IsPressed (0x10), b_CTRL = IsPressed (0x11), b_ALT = IsPressed (0x12), sParams
Static pipe, line = 0
sMI = %COMMANDER_PATH% & "\Plugins\arc\MediaInfo\MediaInfo.exe", _
pMI = %COMMANDER_PATH% & "\Plugins\arc\MediaInfo\"
sET = %COMMANDER_PATH% & "\Plugins\wlx\ExifToolView\exiftool.exe", _
pET = %COMMANDER_PATH% & "\Plugins\wlx\ExifToolView\"
If MI_LOCK = 0 And Not (b_CTRL Or b_SHIFT Or b_ALT) Then Return
If MI_LOCK > 0 Then b_CTRL = 1
If MI_LOCK > 1 Then b_SHIFT = 1
If FieldIndex = 1 Then
line = 0
If b_CTRL Then
If StrPos(FileGetAttr(FileName), "D") Then
pipe = "# Каталог"
Return pipe
Endif
If b_SHIFT Then
# pipe = GetPluginsData(FileName)
ProcessExecGetOutput pipe %sET% ' -G -S "%FileName%"' %pET%
Else
sParams = MI_PARAMS & ' "' & FileName & '"'
ProcessExecGetOutput /C:65001 pipe %sMI% %sParams% %pMI%
pipe = StrMid(pipe, 1, StrLen(pipe) - 4)
If IsPressed (0x5B) Then
If IsPressed (0x12) Then
pipe = GetPluginsData(FileName)
Else
line = 60
Endif
Endif
Endif
ElseIf b_ALT Then
pipe = GetPluginsData(FileName)
Endif
Endif
If MI_NUM = 4 Then
Return StrPart(pipe, auLF, FieldIndex + line)
Else
Return TrimSpaces(StrPart(pipe, auLF, FieldIndex + line))
Endif
EndFunc
Func TrimSpaces(String)
Local a, b
If Not StrPos(String, ":") Then Return String
a = StrPart(String, ":", 1)
b = StrPart(String, ":", 2) & StrPart(String, ":", 3)
Return StrTrim(a) & ": " & StrTrim(b)
EndFunc
Func GetPluginsData(FileName)
Local obj, streams, links, hint
obj = Plugin("NTFSFileStreams")
If ERROR = 0 Then
obj.FileName = FileName
streams = StrFormat("%.0f", obj.GetValue(1))
hint = "Потоков: " & streams
If streams > 0 Then
hint = hint & auCRLF & "Имена потоков: " & obj.GetValue(3)
hint = hint & auCRLF & "Размер потоков: " & SizeFormat(obj.GetValue(5), 1, "K", 2)
Endif
Free(obj)
Else
hint = "WDX Error " & ERROR
Endif
obj = Plugin("NTLinks")
If ERROR = 0 Then
obj.FileName = FileName
links = StrFormat("%.0f", obj.GetValue(0))
hint = hint & auCRLF & "Жестких ссылок: " & links
If links > 1 Then
hint = hint & auCRLF & StrReplace(obj.GetValue(7), ", ", auCRLF)
Endif
Free(obj)
Else
hint = hint & auCRLF & "WDX Error " & ERROR
Endif
Return hint
EndFunc
Код: Выделить всё
SetHotkeyAction /H:F11 TridHint 0
SetHotkeyAction /K:C /H:F11 ShowConsoleHint
Func TridHint(lParam)
Local p, n, f, stdout, line, hint, i = 1
Static trid = %COMMANDER_PATH% & "\Plugins\wdx\TrID\TrID\trid.exe"
If Not FileExist(trid) Then
ShowHint("Не найден " & trid)
Return
Endif
p = RequestCopyDataInfo("SP")
n = RequestCopyDataInfo("SN")
f = p & n
If Not FileExist(f) Then
ShowHint("Файл не существует " & f)
Return
Endif
If StrPos(FileGetAttr(f), "D") Then
ShowHint("Каталог")
Return
Endif
ShowHint("Analyzing...")
ProcessExecGetOutput stdout %trid% '"%f%"'
while 1
line=StrPart(stdout, auCRLF, i)
If ERROR = 1 Then Break
If StrLen(StrTrim(line)) = 0 Then
i = i + 1
Continue
Endif
hint = hint & auCR & line
i = i + 1
Wend
ShowHint(StrMid(hint, 2))
EndFunc
Func ShowConsoleHint()
Local f, p, n, out, hint, i
Local uwdx = %COMMANDER_PATH% & "\Plugins\uwdx\uwdx.exe"
If Not FileExist(uwdx) Then
ShowHint("Не найден " & uwdx)
Return
Endif
p = RequestCopyDataInfo("SP")
n = RequestCopyDataInfo("SN")
f = p & n
If Not FileExist(f) Then
ShowHint("Файл не существует " & f)
Return
Endif
SetHintParam("ShowHint", "Font", 9, "Consolas")
SetHintParam("ShowHint", "BackColor", 0x000000)
SetHintParam("ShowHint", "Text", 0xFFFFFF)
ShowHint("Analyzing...")
ProcessExecGetOutput /OEM icacls %COMSPEC% "/c icacls ""%f%"" /q" %p%
icacls = StrReplace(icacls, f)
i=1
while 1
line = StrPart(icacls, auLF, i)
If ERROR = 1 Then Break
out = out & StrTrim(line) & auLF
i = i + 1
Wend
ProcessExecGetOutput /C:1251 links %uwdx% "/C:1251 /E /I /X:Obj_RealPath /X:Obj_RealSize NTLinks.wdx ""%f%"""
out = out & "+" & auLF & links
ProcessExecGetOutput stream %uwdx% "/C:1251 /I NTFSFileStreams.wdx ""%f%"" ""Streams Count"""
If stream > 0 Then
ProcessExecGetOutput streams %uwdx% "/C:1251 /I /E /X:8 /X:9 NTFSFileStreams.wdx ""%f%"""
Else
streams = "-------- No NTFS Streams -------- "
EndIf
out = out & auLF & streams
ProcessExecGetOutput /C:1251 filex %uwdx% "/C:1251 /E /I /X:2 /X:8 /X:9 /X:10 /X:11 /X:12 /X:19 /X:20 /X:21 /X:22 FileX.wdx ""%f%"""
out = out & auLF & filex
i=1
while 1
line=StrPart(out, auLF, i)
If ERROR = 1 Then Break
If StrLen(StrTrim(line)) = 0 Or StrPos(line, 'All non-empty') > 0 _
Or StrPos(line, 'не удалось') > 0 Or StrPos(line, ' All') > 0 Then
i = i + 1
Continue
Endif
hint = hint & line & auLF
i = i + 1
Wend
i = StrLen(hint) - 2
ShowHint(StrMid(hint, 1, i))
Sleep(1000)
SetHintParam("ShowHint", "Reload")
EndFunc
Не займет долго, главное - начать. Оглянуться не успеете, как начнете клепать функции на Autorun как горячие пирожки для своей сборкиAkulaBig писал(а):Вот времени и нет. Тем более мне надо очень много времени, чтобы с чем-то разобраться.
Код: Выделить всё
tc = ProcessCount("TOTALCMD.EXE") + ProcessCount("TOTALCMD64.EXE")Код: Выделить всё
# массивы значений
Global aColorsList = List(7566195, 7497811, 9865603, 8483950, 8421230)
Global aColorsList2 = List(7566195, 7497811, 9865603, 9602431, 8421230)
# начальный фон
Global ColorStart, ColorStart2
IniRead /R ColorStart %COMMANDER_INI% "Colors" "BackColor" -1
IniRead /R ColorStart2 %COMMANDER_INI% "Colors" "BackColor2" -1
# добавление начального фона к массивам
aColorsList.Add(ColorStart)
aColorsList2.Add(ColorStart2)
# вызов функции по Alt+Click на панелях
ControlSetMouseAction /L /K:A 3 SetColorNum 0
ControlSetMouseAction /L /K:A 4 SetColorNum 0
# вызов функции по коду из кнопки
RegisterCommand 70040 "SetColorNum"
Func SetColorNum(lParam)
Local bkg1, bkg2, blue, green, red, txt
# индекс цвета в массиве
Static ColorIndex = -1
ColorIndex = ColorIndex + 1
If ColorIndex > aColorsList.Count - 1 Then ColorIndex = 0
bkg1 = aColorsList[ColorIndex]
bkg2 = aColorsList2[ColorIndex]
# запись значений
IniWrite /R %COMMANDER_INI% "Colors" "BackColor" %bkg1%
IniWrite /R %COMMANDER_INI% "Colors" "BackColor2" %bkg2%
# обновление панелей
SendCommand 2957
SendCommand 2957
txt = "Фон " & ColorIndex + 1 & " из " & aColorsList.Count & auLF & "Значение: " & bkg1
if bkg1 = -1 then bkg1 = 1*255 + 256*255 + 65536*255
blue = floor(bkg1/65536)
green = bkg1 - (blue * 65536)
green = floor(green/256)
red = bkg1 - (blue * 65536) - (green * 256)
txt = txt & auLF & "Красный: " & red & auLF & "Зелёный: " & green & auLF & "Синий: " & blue
ShowHint(txt)
EndFuncИ чтобы AUTORUN_MODULE_PATH возвращала свой путь внутри каждого модуля, так?Orion9 писал(а):Очень не помешала бы константа по типу AUTORUN_PATH, но только хранящая путь к подключенному файлу конфигурации, т.е. например, если подключен %COMMANDER_PATH%\Ini\Wdx\Hints.aucfg, то, скажем, AUTORUN_MODULE_PATH возвращала бы путь к каталогу этого модуля. Это облегчило бы жизнь в ряде ситуаций.
В планах, но с низким приоритетом. Для этого есть TCFS2 или Autoit/AHK.Orion9 писал(а):Еще хотелось бы посылать нажатия клавиш, т.е. иметь аналог SendKeys.
Над секцией целиком в принципе можно подумать. Ставить/убирать минус - хотя это по-сути переименование, технически это будет запись новой секции с удалением старой.Orion9 писал(а):В Ini-файлах хотелось бы считывать и записывать сразу всю секцию или иметь отдельную функцию, которая включал бы ее или выключала, ставя/убирая перед ней минус.
Конечно. Интересные идеи сразу записываются в todo. Правда, потом там могут лежать годамиOrion9 писал(а):Надо в будущем записывать все идеи.
Я понял:Loopback писал(а):Также в справку была добавлена библиотека примеров. Очень предварительная, структура, категории - всё может измениться. Большая часть из них за авторством Flasher, если по ним возникнут вопросы - задавайте их ему напрямую через англоязычный форум.
Код: Выделить всё
ProcessExecGetOutput up "cscript.exe" "/nologo UpTime.vbs" %VbsPath%
OutputDebugString('"' & up & '"')Похоже, проблема была как раз в предыдущей версии и ProcessExecGetOutput обрезала лишнее. Потому что если запустить в консоли "cscript.exe /nologo UpTime.vbs", то видно, что после текста выводится перевод строки. ProcessExecGetOutput сам ничего не добавляет, всё что есть берётся из вывода.Orion9 писал(а):Еще ранее заметил, что на выходе стала появляться пустая строка в конце, но сразу разбираться не стал.
Во жеж... Обновил дистрибутив по той же ссылке.Orion9 писал(а):GetState("paths") приводит к MsgBox с заголовком "dd"
Флаг 16384 — нижняя граница курсора в активной панели.sa писал(а):А это о чём? В справке не нашёл.
Понял! А ведь пробовал, но тестовое меню оказалось довольно длинным - не прочувствовал разницу. А объект, кстати, может быть и не выделенным, а просто выбранным.Loopback писал(а):нижняя граница курсора в активной панели
Теперь нормально!Loopback писал(а):Во жеж... Обновил дистрибутив по той же ссылке.
Может для "красоты" из autorun.example.cfg убрать в соответствии с документацией?Loopback писал(а):Да, /EV когда-то использовался для включения разворачивания переменных, потом был инвертирован на /EV-. Сейчас /EV в SetEnv просто ничего не делает.
В принципе всё просто: нет в документации - нет и по факту, можно смело убирать.
# Adding current TC path to PATH environment variable
# Добавляет к переменной окружения PATH текущую папку TC
SetEnv /A /EV PATH ;%COMMANDER_PATH%
Разумеется, просто этот файл уже сто лет никто не трогал, ближе к релизу он наверняка будет существенно переписан.jentoso писал(а):Может для "красоты" из autorun.example.cfg убрать в соответствии с документацией?
Да вроде сработала у меня примерка )Loopback писал(а): - исправлена некорректная работа ветки true тернарного оператора при присваивании
Код: Выделить всё
vars = (lParam = 2 ? GetState("envvars") : GetState("vars"))Код: Выделить всё
If IsPressed (0x10) Then Return GetState("libs")Код: Выделить всё
ClipPut(GetState("libs"))Код: Выделить всё
Library #1:
Path: C:\Portable\T 11 03\Ini\Autorun\Plugins\Autorun_Tweaks.dll
Plugin: true
Version: 1.2.4.0
Build date: 01.12.2024 13:46:03
Description: Autorun sub-plugin with functions for tweaking TC
Handle: 0x04EC0000Про ShowPopupMenu уже ответили, но в справке действительно нет, как нет и про новые операторы. Проверил пока += работает.+ Tweaks: в ShowPopupMenu добавлен флаг расположения меню у выделенного объекта
+ добавлены составные операторы присваивания: +=, -=, *=, /=, &=
Тоже проверил, ошибки больше нет.- для Plugin исправлена "ошибка 3" при наличии только ANSI-версии ContentGetValue
До меня потом дошло. Кстати, я уже думал ою этом летом, но забылLoopback писал(а):Так вот, это сделать невозможно, потому что "модули" не исполняются изолированно, технически после препроцессинга все подключаемые файлы объединяются в единый скрипт.
Вы просто так круто взялись за окнаLoopback писал(а):В планах, но с низким приоритетом. Для этого есть TCFS2 или Autoit/AHK.
Да, это фишка чисто ТС - в сборках бывает делают. Но лучше, наверное, просто секцию переименовывать, т.е. как вы и говорите - запись новой секции с удалением старой.Loopback писал(а):Над секцией целиком в принципе можно подумать. Ставить/убирать минус - хотя это по-сути переименование, технически это будет запись новой секции с удалением старой.