View previous topic :: View next topic |
Author |
Message |
AkulaBig
Joined: 03 Dec 2008 Posts: 88
|
(Separately) Posted: Tue Nov 26, 2024 13:20 Post subject: |
|
|
Orion9 wrote: |
Только найти немного времени и ознакомится с его функционалом |
Вот времени и нет. Тем более мне надо очень много времени, чтобы с чем-то разобраться.
Было-бы две головы. Но говорят, что одна голова - это хорошо, а две уже уродство |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 521
|
(Separately) Posted: Sat Nov 30, 2024 20:51 Post subject: |
|
|
AkulaBig
Если бы меня попросили придумать лозунг Autorun, я не колебался бы ни секунды:
Hidden text Сделаем Total Commander снова великим
Идти нужно в ногу со временем. Возможно, раньше это и был простой "Автозапуск", о чем и говорит само имя плагина, но это было давно. Сейчас Autorun - это фактически полноценный, мощный скриптовый язык с интеграцией и ориентацией на ТС. Писать на нем скрипты - одно удовольствие. Ограничений практически никаких - лишь собственный полет фантазии. Я изменил немного скрипт и дополнил его, посмотрите какая красота получается:
Hidden text Code: | 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
|
Теперь подсказку можно залочить по CapsLock или Shift+CapsLock, чтобы не держать постоянно Ctrl или Shift. Комбинация Ctrl+Click по активной панели меняет параметры MediaInfo. Файл hint.txt задает формат вывода для MI и должен быть в том же каталоге:
Hidden text General;Name: %FileName%.%FileExtension%\r\nSize: %FileSize/String4%\r\n[Duration: %Duration%]\r\n[Duration: %Duration/String1%]\r\n[Duration: %Duration/String5%]\r\n[General: %BitRate/String%][(%BitRate_Mode%)][, %Format%][(%Format/Family%)]$if(%Cover%,\, Cover)[, %Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Channel(s)%ch][, %Resolution/String%][, %FrameRate/String%][, %SamplingRate/String%][, %Bits-(Pixel*Frame)%bpf][, %Language%]\r\n
Video;Video #%StreamKindID%: [%Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Resolution/String%][, %FrameRate/String%][, %BitRate/String%][(%BitRate_Mode%)][, %Bits-(Pixel*Frame)%bpf][, %Format%][(%Format/Family%)][, %Language%][, %Channel(s)%ch][, %SamplingRate/String%]\r\n
Audio;Audio #%StreamKindID%: [%Channel(s)%ch][, %Resolution/String%][, %SamplingRate/String%][, %BitRate/String%][(%BitRate_Mode%)][, %Format%][(%Format/Family%)][, %Format_Profile%][, %Language%][, %Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %FrameRate/String%][, %Bits-(Pixel*Frame)%bpf]\r\n
;
Text;Text #%StreamKindID%: %Format%[(%Format/Family%)][@%Language%][, %StreamSize/String4%][, %BitRate/String%][(%BitRate_Mode%)][, %Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Channel(s)%ch][, %Resolution/String%][, %FrameRate/String%][, %SamplingRate/String%][, %Bits-(Pixel*Frame)%bpf]\r\n
Chapters;Chapters #%StreamKindID%: %Format%[(%Format/Family%)][@%Language%][, %Total% entries][, %StreamSize/String4%][, %BitRate/String%][(%BitRate_Mode%)][, %Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Channel(s)%ch][, %Resolution/String%][, %FrameRate/String%][, %SamplingRate/String%][, %Bits-(Pixel*Frame)%bpf]\r\n
;
Image;Image #%StreamKindID%: [%Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Resolution/String%][, %FrameRate/String%][, %StreamSize/String4%][, %BitRate/String%][(%BitRate_Mode%)][, %Bits-(Pixel*Frame)%bpf][, %Format%][(%Format/Family%)][, %Language%][, %Channel(s)%ch][, %SamplingRate/String%]\r\n
;
Menu;Menu #%StreamKindID%: [%MenuID/String%][, %Duration% Format:%Format/String%]
Ну еще к exiftool путь нужно указать.
Hidden text Подсказка - шик просто ) |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 521
|
(Separately) Posted: Sun Dec 01, 2024 01:10 Post subject: |
|
|
AkulaBig
Кстати, в Autorun есть и своя подсказка, которую можно не только отображать, но и задавать ей другие стили. Вот пара примеров (вызов по F11 и Ctrl+F11):
Hidden text Code: | 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
|
Переделал сейчас эти две функции под новые реалии: c RequestCopyDataInfo смотрится очень аккуратно и приятно для глаз, но вторую функцию еще надо дорабатывать или вовсе переделывать, пока это только демо.
В общем, Autorun - это больше, чем плагин. Почитав последнюю справку к нему, я просто прифигел сколько новых возможностей было добавлено. Считаю, что иметь навыки программирования и не пользоваться этими возможностями - это просто преступление против ТС
AkulaBig wrote: | Вот времени и нет. Тем более мне надо очень много времени, чтобы с чем-то разобраться. |
Не займет долго, главное - начать. Оглянуться не успеете, как начнете клепать функции на Autorun как горячие пирожки для своей сборки |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 521
|
(Separately) Posted: Mon Dec 02, 2024 01:00 Post subject: |
|
|
Loopback
Вызов функции ProcessCount("TOTALCMD") не находит 64-битные процессы TOTALCMD64, так и должно быть? Пока пришлось сложить значения:
Code: | tc = ProcessCount("TOTALCMD.EXE") + ProcessCount("TOTALCMD64.EXE") |
В справке говорится про ключ /F (поиск по полному имени процесса), имеется ввиду полный путь?
P.S.
А тем временем, еще одна демо-зарисовка на тему цвета фона:
Hidden text Code: | # массивы значений
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 |
Переключение цвета панелей в стиле Хищника
Hidden text Ну вот, сбылась еще одна мечта, и объект List получил свою обкатку) |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1433
|
(Separately) Posted: Mon Dec 02, 2024 13:19 Post subject: |
|
|
Orion9 wrote: | так и должно быть? |
Конечно. Определение идет по имени процесса, а имена у них разные.
Orion9 wrote: | имеется ввиду полный путь? |
Да, полный путь к файлу процесса. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1433
|
(Separately) Posted: Tue Dec 03, 2024 00:27 Post subject: |
|
|
Версия Autorun 2.2.15 beta
Список изменений
+ Runtime: добавлена GetSelectedItems
- переменную цикла For..Next нельзя было изменить изнутри цикла
+ в вывод GetState по библиотекам добавлена дата компиляции
* убраны лишние переводы строк в GetState
- исправлено экранирование кавычек в строчных значениях в выражениях
- исправлена работа с вычисляемыми строками в параметрах для RegisterCommand, RunThread
* Tweaks: для совместимости добавлен переключатель /CM ((CSMA, SHA, SMA)
* Tweaks: изменена работа с вычисляемыми строками в параметрах вызываемой функции (CSMA, SHA, SMA)
+ Runtime: в RequestInfo добавлены идентификаторы 11001-11012
+ Process: ProcessExecGetOutput может получать вывод в заданной кодировке
+ Process: функции ProcessGetPath, ProcessGetId
+ Process: ряд функций могут принимать не только имя процесса, но и PID
- для Plugin исправлена "ошибка 3" при наличии только ANSI-версии ContentGetValue
+ Runtime: добавлены WinFromPoint, WinGetPID, WinGetHandleByPID, MouseSetPos
- Tweaks: SetHintParam менял размер шрифта при несуществующем имени параметра
- Runtime: исправлена обрезка длинного текста в параметрах
- ModifyDialog: исправлено падение в некоторых ситуациях
+ функция ShellExec возвращает PID запущенного процесса в EXTENDED
+ Runtime: добавлено получение границ прямоугольника в функции GetCurrentItem
- Runtime: WinGetText/WinSetText не работали с контролами в другом приложении
+ Tweaks: в ShowPopupMenu добавлены параметры X, Y
+ Tweaks: в ShowPopupMenu добавлен флаг расположения меню возле текущего объекта в активной панели
+ в функцию GetState добавлено получение списка переменных окружения
+ экспериментально: метод вычисления And/Or по "короткой схеме"
* небольшие оптимизации парсера
+ добавлен тернарный оператор ?:
+ добавлен параметр в MsgBox для управления внешним видом и поведением
- попытка исправить нестабильное появление сообщений об ошибках в x64
+ API: для функции плагина возможность увеличить буфер по запросу
+ добавлены составные операторы присваивания: +=, -=, *=, /=, &=
- Runtime: исправления в значениях error WinGetState
+ добавлены предварительные версии китайского перевода и справки (спасибо "Party")
В этом релизе есть одно изменение, которое можно назвать критическим (хотя сомневаюсь, что это затронет большую аудиторию).
Если кто-то использует вычисляемые строки в параметрах вызываемой функции в функциях ControlSetMouseAction, SetHotkeyAction и SetMessageAction, то теперь они вычисляются единоразово при вызове этих функций, а не при вызове вызываемой функции. Это был давний баг, который считался в некотором роде "фичей", однако недавно обнаружилось, что он влечёт за собой критическую проблему с использованием переменных в параметрах. Поэтому он был исправлен, но в силу давности бага был добавлен режим совместимости, который можно включить переключателем /CM.
По аналогии были исправлены и RegisterCommand с RunThread, но без возможности возврата.
Также в справку была добавлена библиотека примеров. Очень предварительная, структура, категории - всё может измениться. Большая часть из них за авторством Flasher, если по ним возникнут вопросы - задавайте их ему напрямую через англоязычный форум.
Last edited by Loopback on Wed Dec 04, 2024 11:51; edited 3 times in total |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 521
|
(Separately) Posted: Tue Dec 03, 2024 01:16 Post subject: |
|
|
Loopback
Эх, чуть-чуть не успел к релизу... Была парочка пожеланий, но теперь до следующего раза придется ждать.
Очень не помешала бы константа по типу AUTORUN_PATH, но только хранящая путь к подключенному файлу конфигурации, т.е. например, если подключен %COMMANDER_PATH%\Ini\Wdx\Hints.aucfg, то, скажем, AUTORUN_MODULE_PATH возвращала бы путь к каталогу этого модуля. Это облегчило бы жизнь в ряде ситуаций.
Еще хотелось бы посылать нажатия клавиш, т.е. иметь аналог SendKeys.
В Ini-файлах хотелось бы считывать и записывать сразу всю секцию или иметь отдельную функцию, которая включал бы ее или выключала, ставя/убирая перед ней минус.
Надо в будущем записывать все идеи. Иногда что-то замечаешь такое незначительное, но потом забываешь
А за релиз спасибо! Завтра уже хочу пробовать новый оператор ) |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1433
|
(Separately) Posted: Tue Dec 03, 2024 14:04 Post subject: |
|
|
Orion9 wrote: | Очень не помешала бы константа по типу AUTORUN_PATH, но только хранящая путь к подключенному файлу конфигурации, т.е. например, если подключен %COMMANDER_PATH%\Ini\Wdx\Hints.aucfg, то, скажем, AUTORUN_MODULE_PATH возвращала бы путь к каталогу этого модуля. Это облегчило бы жизнь в ряде ситуаций. |
И чтобы AUTORUN_MODULE_PATH возвращала свой путь внутри каждого модуля, так?
Так вот, это сделать невозможно, потому что "модули" не исполняются изолированно, технически после препроцессинга все подключаемые файлы объединяются в единый скрипт.
Orion9 wrote: | Еще хотелось бы посылать нажатия клавиш, т.е. иметь аналог SendKeys. |
В планах, но с низким приоритетом. Для этого есть TCFS2 или Autoit/AHK.
Orion9 wrote: | В Ini-файлах хотелось бы считывать и записывать сразу всю секцию или иметь отдельную функцию, которая включал бы ее или выключала, ставя/убирая перед ней минус. |
Над секцией целиком в принципе можно подумать. Ставить/убирать минус - хотя это по-сути переименование, технически это будет запись новой секции с удалением старой.
Orion9 wrote: | Надо в будущем записывать все идеи. |
Конечно. Интересные идеи сразу записываются в todo. Правда, потом там могут лежать годами |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 521
|
(Separately) Posted: Tue Dec 03, 2024 18:50 Post subject: |
|
|
Loopback wrote: | Также в справку была добавлена библиотека примеров. Очень предварительная, структура, категории - всё может измениться. Большая часть из них за авторством Flasher, если по ним возникнут вопросы - задавайте их ему напрямую через англоязычный форум. |
Я понял:
Hidden text Растут лимоны на высоких горах, на крутых берегах, на крутых... Короче, ты не достанешь
Смотрю, он там опять все расписал как с куста, ну и сколько это будет продолжаться?
Hidden text CaptainFlint, как на счет амнистии в 2025-ом году? По-моему, неплохая иея и неплохой подарок к Новому Году от дедушки Админа )
Изменений действительно много, вечером напишу обо всем подробнее, но сейчас взялся за ProcessExecGetOutput. Еще ранее заметил, что на выходе стала появляться пустая строка в конце, но сразу разбираться не стал. Но сейчас удостоверился на фрагменте из скрипта:
Code: | ProcessExecGetOutput up "cscript.exe" "/nologo UpTime.vbs" %VbsPath%
OutputDebugString('"' & up & '"') |
UpTime.vbs Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objLocator.ConnectServer(MachineName, "root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objOS in colOperatingSystems
dtmBootup = objOS.LastBootUpTime
dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
dtmSystemUptimeSecs = DateDiff("s", dtmLastBootUpTime, Now)
intSecsTotal = dtmSystemUptimeSecs
intDays = Fix( intSecsTotal / 86400 )
intSecsRemaining = ( intSecsTotal - ( intDays * 86400 ))
intSecsTotal = intSecsRemaining
intHours = Fix( intSecsTotal / 3600 )
intSecsRemaining = ( intSecsTotal - ( intHours * 3600 ))
intSecsTotal = intSecsRemaining
intMinutes = Fix( intSecsTotal / 60 )
intSeconds = ( intSecsTotal - ( intMinutes * 60 ))
days = CStr(intDays)
lZero = ""
If intHours < 10 Then lZero = "0"
hrs = lZero + CStr(intHours)
lZero = ""
If intMinutes < 10 Then lZero = "0"
mins = lZero + CStr(intMinutes)
lZero = ""
If intSeconds < 10 Then lZero = "0"
secs = lZero + CStr(intSeconds)
Next
If days = "0" Then
'WScript.Echo "Uptime: " & hrs & ":" & mins
WScript.Echo "Uptime: " & days & "/" & hrs & ":" & mins
Else
WScript.Echo "Uptime: " & days & "/" & hrs & ":" & mins
End if
'WScript.Echo days & " days " & hrs & " hrs " & mins & " mins"
Function WMIDateStringToDate(dtmBootup)
WMIDateStringToDate = CDate(Mid(dtmBootup, 7, 2) & "/" & _
Mid(dtmBootup, 5, 2) & "/" & Left(dtmBootup, 4) _
& " " & Mid (dtmBootup, 9, 2) & ":" & _
Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup,13, 2))
End Function
Кодовые страницы менял, не помогло. Воспроизводится у вас проблема?
Добавлено спустя 32 минуты:
GetState("paths") приводит к MsgBox с заголовком "dd" |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2667
|
(Separately) Posted: Tue Dec 03, 2024 19:42 Post subject: |
|
|
Orion9 wrote: | GetState("paths") приводит к MsgBox с заголовком "dd" | Тоже обнаружил!
Список изменений wrote: | + Tweaks: в ShowPopupMenu добавлен флаг расположения меню у выделенного объекта | А это о чём? В справке не нашёл... |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1433
|
(Separately) Posted: Tue Dec 03, 2024 20:20 Post subject: |
|
|
Orion9 wrote: | Еще ранее заметил, что на выходе стала появляться пустая строка в конце, но сразу разбираться не стал. |
Похоже, проблема была как раз в предыдущей версии и ProcessExecGetOutput обрезала лишнее. Потому что если запустить в консоли "cscript.exe /nologo UpTime.vbs", то видно, что после текста выводится перевод строки. ProcessExecGetOutput сам ничего не добавляет, всё что есть берётся из вывода.
На самом деле не вижу в этом проблемы, просто используйте StrTrim.
Orion9 wrote: | GetState("paths") приводит к MsgBox с заголовком "dd" |
Во жеж... Обновил дистрибутив по той же ссылке.
sa wrote: | А это о чём? В справке не нашёл. |
Флаг 16384 — нижняя граница курсора в активной панели. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2667
|
(Separately) Posted: Tue Dec 03, 2024 20:43 Post subject: |
|
|
Loopback wrote: | нижняя граница курсора в активной панели | Понял! А ведь пробовал, но тестовое меню оказалось довольно длинным - не прочувствовал разницу. А объект, кстати, может быть и не выделенным, а просто выбранным.
Loopback wrote: | Во жеж... Обновил дистрибутив по той же ссылке. | Теперь нормально! |
|
Back to top |
|
|
jentoso
Joined: 20 Dec 2007 Posts: 368
|
(Separately) Posted: Tue Dec 03, 2024 21:45 Post subject: |
|
|
Loopback wrote: | Да, /EV когда-то использовался для включения разворачивания переменных, потом был инвертирован на /EV-. Сейчас /EV в SetEnv просто ничего не делает.
В принципе всё просто: нет в документации - нет и по факту, можно смело убирать. |
Может для "красоты" из autorun.example.cfg убрать в соответствии с документацией?
Quote: | # Adding current TC path to PATH environment variable
# Добавляет к переменной окружения PATH текущую папку TC
SetEnv /A /EV PATH ;%COMMANDER_PATH% |
_________________ TC 11.03 combo, Windows 10 x64 |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1433
|
(Separately) Posted: Tue Dec 03, 2024 22:52 Post subject: |
|
|
Версия Autorun 2.2.15.1 beta
- исправлена некорректная работа ветки true тернарного оператора при присваивании
Очень надеялся обойтись без хотфиксов, но такое не для тихого обновления. Удивительно, как удалось такой косяк пропустить.
jentoso wrote: | Может для "красоты" из autorun.example.cfg убрать в соответствии с документацией? |
Разумеется, просто этот файл уже сто лет никто не трогал, ближе к релизу он наверняка будет существенно переписан. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 521
|
(Separately) Posted: Wed Dec 04, 2024 01:06 Post subject: |
|
|
Loopback wrote: | - исправлена некорректная работа ветки true тернарного оператора при присваивании |
Да вроде сработала у меня примерка )
Code: | vars = (lParam = 2 ? GetState("envvars") : GetState("vars")) |
Вызов в подсказке:
Code: | If IsPressed (0x10) Then Return GetState("libs") |
Все нормально отображается, но если сделать
Code: | ClipPut(GetState("libs")) |
То при вставке из буфера наблюдается такой вывод:
Code: | 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 |
В чем причина лишних строк?
Quote: | + Tweaks: в ShowPopupMenu добавлен флаг расположения меню у выделенного объекта
+ добавлены составные операторы присваивания: +=, -=, *=, /=, &= |
Про ShowPopupMenu уже ответили, но в справке действительно нет, как нет и про новые операторы. Проверил пока += работает.
Quote: | - для Plugin исправлена "ошибка 3" при наличии только ANSI-версии ContentGetValue |
Тоже проверил, ошибки больше нет.
Добавлено спустя 13 минут:
Loopback wrote: | Так вот, это сделать невозможно, потому что "модули" не исполняются изолированно, технически после препроцессинга все подключаемые файлы объединяются в единый скрипт. |
До меня потом дошло. Кстати, я уже думал ою этом летом, но забыл
Loopback wrote: | В планах, но с низким приоритетом. Для этого есть TCFS2 или Autoit/AHK. |
Вы просто так круто взялись за окна там уже столько функций разных - и найти можно, и активировать, и фокус установить - что возникает вопрос: почему бы не послать нажатия )
Loopback wrote: | Над секцией целиком в принципе можно подумать. Ставить/убирать минус - хотя это по-сути переименование, технически это будет запись новой секции с удалением старой. |
Да, это фишка чисто ТС - в сборках бывает делают. Но лучше, наверное, просто секцию переименовывать, т.е. как вы и говорите - запись новой секции с удалением старой. |
|
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
|