Autorun
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... 130, 131, 132, 133, 134, 135  Next  :| |:
Total Commander -> Плагины Total Commander

#1951:  Author: Loopback PostPosted: Tue Mar 12, 2024 16:35
    —
Orion9
Да уж, сам иногда удивлюсь, во что превратился изначально ни на что особенное не претендующий плагин Smile Релизы, конечно, будут, накопилось прилично изменений. Надо только собраться, найти время и привести всё к нормальному виду.

Orion9 wrote:
MsgBox с вариантами ответов

Формально это несложно, но тут есть пара проблем.

Первая - вопрос совместимости. Если сейчас сделать так, чтобы MsgBox возвращал результат, то в командной записи всегда придется добавлять переменную первым параметром, что неудобно. Также придется менять все имеющиеся MsgBox.

Вариант с сохранением совместимости - задействовать для возврата нажатой кнопки переменную ERROR, что тоже не очень хорошо, т.к. переменная предназначена для индикации ошибок, а не возврата результата.

Но тут важнее вторая проблема - у MsgBox до сих пор остаются нерешенные сложности с работой на x64 версии. Пока MsgBox используется в основном для отладки, это еще терпимо, но для реализации диалоговых механизмов такой надёжности недостаточно.

Orion9 wrote:
функции вызова всплывающей подсказки, типа ToolTip

Не совсем понятно, что, где и как должно вызываться?

Просто запрос на создание настраиваемых тултипов для функциональных кнопок уже был, но там не так всё просто.

#1952:  Author: Orion9 PostPosted: Tue Mar 12, 2024 20:09
    —
Quote:
Да уж, сам иногда удивлюсь, во что превратился изначально ни на что особенное не претендующий плагин Smile

Превратился он в монстра Smile Если хотите, гляньте в теме про заголовок TC, чем я занимался в последнее время.
Quote:
Первая - вопрос совместимости

Ох уж эта совместимость. Не так давно начал интересоваться AutoHotkey второй версии и увидел, что есть F4MiniMenu. Поначалу обрадовался, что будет возможность изучить код и подправить его под себя, но когда увидел, что это только для первой версии AutoHotkey, желание как-то поубавилось - не хочется вникать в еще один синтаксис, притом устарелый. А одно из основных отличий AutoHotkey v1 от AutoHotkey v2 - как раз в командой и функциональной записи (во второй версии совсем отказались от командой записи, полностью заменив ее функциональной). Возможно, и вам придется делать такой переход рано или поздно, если проблемы с совместимостью будут расти как снежный ком и придется искать радикальный выход. Не думаю, что все пользователи разбегутся: кому надо, тот перейдет, а кому не надо - останется на старой версии.
Quote:
Но тут важнее вторая проблема - у MsgBox до сих пор остаются нерешенные сложности с работой на x64 версии.

Пока не сталкивался с такой проблемой, хотя и видел упоминание о ней в справке. Но раз вы говорите, значит основание для того есть. Выходит, придется как-то обходиться без этой функции, если только вы чего-то не придумаете Smile
Quote:
Не совсем понятно, что, где и как должно вызываться?

Речь о:
https://www.autohotkey.com/docs/v2/lib/ToolTip.htm
Можно найти интересные применения, например, альтернативные подсказки к файлам или дополнительная информация, всплывающая по требованию на разных элементах окна или у курсора мыши.

#1953:  Author: Loopback PostPosted: Wed Mar 13, 2024 12:29
    —
Orion9 wrote:
чем я занимался в последнее время

Успел, глянул. Впечатляет! К слову, в еще не выложенной версии SysInfo добавлены кое-какие нативные функции для получения системной информации, в том числе загрузки процессора, можно будет уменьшить число запросов.
Orion9 wrote:
А одно из основных отличий AutoHotkey v1 от AutoHotkey v2 - как раз в командой и функциональной записи

Да, будучи большим поклонником Autoit (пользовался им еще со второй версии), я всегда недолюбливал AHK за такую смесь синтаксисов и недоумевал - зачем? На деле всё просто: когда делался Autoit3, разработчики полностью отказались от совместимости со второй версией, поэтому синтаксис языка получился удобный и лаконичный, без командных атавизмов (cинтаксис Autorun немало почерпнул из Autoit). А в AHK пошли по пути поддержания совместимости и тянули её еще очень много лет. Хотя действительно, последние альфы/беты эту совместимость всё больше теряют (но в то же время потенциально становятся лично мне более интересны, учитывая стагнацию Autoit).

В итоге c Autorun я сам фактически прошел путь AHK Very Happy
Orion9 wrote:
Возможно, и вам придется делать такой переход рано или поздно

Учитывая специфику использования Autorun, сомневаюсь, что потребуются кардинальные изменения синтаксиса. Все необходимые управляющие структуры уже есть. Не хватает только какого-нибудь простейшего массива. Дальнейшее развитие скорее будет направлено на расширение функционального обвеса.

Orion9 wrote:
Можно найти интересные применения

Ясно. Хотя тут сложность даже не в самом тултипе, а в том, как его вызывать. Горячие клавиши это понятно. Но если по наведению это уже совсем другое.

#1954:  Author: Orion9 PostPosted: Thu Mar 14, 2024 13:55
    —
Loopback
Quote:
Успел, глянул.

Рад, что вам удалось глянуть. Это лучшая для меня награда, как и возможность отдать дань плагину живым примером его использования. Да и вам, думаю, было интересно узнать, какое применение находят другие пользователи вашему детищу Smile

Я внесу туда изменения потом, чтобы оригинальный заголовок оставался нетронутым, просто пока не нашел на это время, хотя работы там и не так много. Надеюсь, это не вызовет больше претензий и все желающие смогут воспользоваться кодом по своему усмотрению (хотя бы как примером реального скрипта, полностью написанным на языке Autorun).
Quote:
К слову, в еще не выложенной версии SysInfo добавлены кое-какие нативные функции для получения системной информации, в том числе загрузки процессора, можно будет уменьшить число запросов

Будет здорово. Само наличие vbs-скрипта там обусловлено тем, что для расчета формулы нужно тянуть два поля за запрос, но Autorun сейчас это не позволяет.
Quote:
Да, будучи большим поклонником Autoit

Как раз хотел посмотреть вашу утилиту uwdx, но еще не успел толком, хотя уже начал. Интересен вывод в консоль и как можно извлечь из него выгоду в Autorun + ToolTip. Например:
Code:
ControlSetMouseAction /L /K:C 3 ShowItemHint

Func ShowItemHint
Local icacl, dat, p, buf
   dat = StrPart(ItemAtCursor('text'), auTAB, 1)
   p = SendMessage(RequestInfo(RequestInfo(1000) + 8), 13, 100, buf, 2)
   p = StrLeft(p, StrPos(p, "\", -1))
   ProcessExecGetOutput /OEM icacl %COMSPEC% "/c icacls ""%dat%""" %p%
   MsgBox(icacl)
EndFunc

Вывод сообщения по Ctrl+ПКМ о правах доступа, но можно и о чем-то другом, и не в модальном окне MsgBox, а в удобном тултипе. Кстати, я все правильно сделал в этом примере выше, или есть другие способы? А еще почему-то есть глюк с длинными именами файлов. Такое ощущение, что где-то происходит потеря символов и возникает такое сообщение:
Code:

PotPlayer_1.7.22077_Stable_x8: Не удается найти указанный файл.
Успешно обработано 0 файлов; не удалось обработать 1 файлов

Имя файла при этом PotPlayer_1.7.22077_Stable_x86_Portable_Rus.7z
Вы не могли бы глянуть в чем тут может быть проблема?
Quote:
сомневаюсь, что потребуются кардинальные изменения синтаксиса. Все необходимые управляющие структуры уже есть. Не хватает только какого-нибудь простейшего массива. Дальнейшее развитие скорее будет направлено на расширение функционального обвеса.

Это хорошо. А то пришлось бы много работы провести без очевидного выигрыша. Меня синтаксис устраивает, главное - чтобы все работало, а функции и команды необязательно трогать (адаптировать) - можно и новые добавлять, например YesNoBox или что-то вроде того.
Quote:
тут сложность даже не в самом тултипе, а в том, как его вызывать

Ну, видимо только комбинацией или другим схожим триггером. А разве нужно что-то по наведению? Так сразу в голову и не приходит. Хотя в моем примере с заголовком могло бы пригодиться теоретически, но можно и без этого прожить Smile

#1955:  Author: Loopback PostPosted: Thu Mar 14, 2024 21:00
    —
Orion9 wrote:
Кстати, я все правильно сделал в этом примере выше, или есть другие способы?

Кстати, вот и хороший реальный пример ProcessExecGetOutput нарисовался Smile

По способам. Полагаю, можно еще индексом 21 получить (панель перед командной строкой), но кажется кто-то упоминал об ограничениях такого варианта, сейчас не вспомню каких.

Или с помощью WM_COPYDATA, с типом команды GW и параметрами SP. Только такой возможности в Autorun нет.

Может и еще что-то есть, сходу не вспомню.

По правильности вроде всё нормально. Только переменная buf не нужна, ее значение в данном случае всё равно игнорируется. Можно передать просто 0 или пустую строку. Надо это уточнить в справке.

Orion9 wrote:
А еще почему-то есть глюк с длинными именами файлов.

Действительно как-то странно, надо будет посмотреть, что там в ProcessExecGetOutput приходит.

Orion9 wrote:
А разве нужно что-то по наведению?

Это из предыдущего запроса. Кстати, мало тултип показать, надо еще и как-то скрыть, вот тут вижу сложности. В общем, это надо пробовать.

#1956:  Author: Orion9 PostPosted: Sat Mar 16, 2024 20:06
    —
Loopback
Спасибо за комментарий по поводу правильности/неправильности способа. Я еще только изучаю принципы автоматизации и что с ними связано, поэтому мне очень важно услышать мнения экспертов и опытных в этом деле людей для подтверждения собственных мыслей.

Исправил на p = SendMessage(RequestInfo(RequestInfo(1000) + Cool, 13, 100, "" , 2) - все работает. Но вызывает вопрос параметр 100. По идее здесь должно быть точное количество байт, полученное через WM_GETTEXTLENGTH? Иначе ведь при длинном пути он просто обрежется. Или можно просто цифру побольше взять?

Попробовал довести задачу до цели через скрипт AutoHotkey, чтобы посмотреть, как оно будет выглядеть в действительности. Вроде, ничего - мне нравится!
autorun.cfg
Code:

Func ShowItemHint
Local icacl, dat, p
dat = StrPart(ItemAtCursor('text'), auTAB, 1)
p = SendMessage(RequestInfo(RequestInfo(1000) + 8), 13, 100, "" , 2)
p = StrLeft(p, StrPos(p, "\", -1))
dat = p & dat
ShellExec "%COMMANDER_PATH%\Scripts\ahk\AutoHotkey32.exe" "FileSec.ahk ""%dat%""" "%COMMANDER_PATH%\Scripts\ahk\"
EndFunc

FileSec.ahk
Code:

#SingleInstance Force

ToolTip StrBuf(RunWaitOne('icacls "' A_Args[1]))     
KeyWait "LButton", "D"
   
RunWaitOne(command) {
local sOut
dhw := A_DetectHiddenWindows
pid :=0   
    DetectHiddenWindows true
    Run A_ComSpec " /k",, "Hide", &pid
    WinWait "ahk_pid " pid
   
    DllCall("AttachConsole", "UInt", pid)
    DetectHiddenWindows dhw

    shell := ComObject("WScript.Shell")
    exec := shell.Exec(A_ComSpec . " /C " . command)   
    sOut := exec.StdOut.ReadAll()
   
    DllCall("FreeConsole")
    if ProcessExist(pid)
       ProcessClose pid
return sOut
}

StrBuf(str)
{
    buf := Buffer(StrPut(str, "CP0"))
    StrPut(str, buf, "CP0")
    return StrGet(buf.ptr, "CP866")
}

Думаю, тултип Autorun нужен. Может, вам удастся как-то решить проблему с его скрытием? Ну, а если нет - ничего страшного Smile

#1957:  Author: Orion9 PostPosted: Mon Mar 18, 2024 00:35
    —
Наконец-то дошли руки подправить все, что нужно. Теперь скрипт просто добавляет полезную информацию к заголовку ТС, не трогая оригинального текста. Подробности внутри архива.
Code:
MIME-Version: 1.0
Content-Type: application/octet-stream; name="Title.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Title.7z"

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



#1958:  Author: Loopback PostPosted: Mon Mar 18, 2024 19:43
    —
Orion9 wrote:
Но вызывает вопрос параметр 100. По идее здесь должно быть точное количество байт, полученное через WM_GETTEXTLENGTH?

Только не байт, а число символов. Да, по идее лучший вариант использовать полученные значения.

Но сейчас размер буфера выделяется фиксированный, 65535 юникодных символов. Можно передать любой размер в этих пределах, им будет руководствоваться вызываемая функция.

Можно сделать, чтобы выделялся буфер с размером, передаваемым параметром, но не уверен, что такой вариант будет правильным: точно ли везде размер буфера передается вторым параметром? Тут еще можно подумать, Runtime пока сыроват.

Orion9 wrote:
Попробовал довести задачу до цели через скрипт AutoHotkey, чтобы посмотреть, как оно будет выглядеть в действительности.

Давненько я на сайт AHK не заглядывал, оказывается двойка уже зарелизилась... Да, смотрится симпатично, только задержка стала более ощутима. И еще тултип перекрывается тоталовским тултипом.

Если что, вот тут версия плагина с исправлением ProcessExecGetOutput.

Orion9 wrote:
Думаю, тултип Autorun нужен.

Немного посмотрел тултипы, да, показать несложно, сложнее скрыть. Из простых способов - по таймеру или или по клику на тултипе. А вот чтобы сделать как в вашем примере левым кликом по окну тотала - сложнее, нужно регистрировать через ControlSetMouseAction функцию на левый клик по окну тотала, и в этой функции закрывать тултип. Чем плох такой способ - эта функция будет постоянно вызываться при каждом левом клике.

В общем, тут ещё надо думать.

#1959:  Author: Orion9 PostPosted: Tue Mar 19, 2024 00:25
    —
Quote:
Тут еще можно подумать, Runtime пока сыроват.

Может, сделать пару вспомогательных функций, которые сразу будут возвращать имя файла и путь в нужной панели, и тем самым освободят пользователя от необходимости самостоятельно посылать сообщения через SendMessage и RequestInfo? Думаю, было бы удобно.
Quote:
Да, смотрится симпатично, только задержка стала более ощутима. И еще тултип перекрывается тоталовским тултипом.

Да, задержка ощутима. А по поводу перекрытия я как раз хотел у вас спросить: Если тултип будет вызываться через Autorun, это не поможет ему показываться поверх тоталовского? На крайний случай, можно будет двинуть его координаты выше, чтобы они не мешали друг другу.
Quote:
Если что, вот тут версия плагина с исправлением ProcessExecGetOutput

Забрал. Все работает просто мухой, и больше ничего не обрезается. Спасибо.
Quote:

Немного посмотрел тултипы, да, показать несложно, сложнее скрыть.

Вариант с кликом на тултипе меня вполне устраивает. Таймер - тоже, в сочетании с кликом. По сути, применение у тултипа такое же, что и у MsgBox, только оформление другое. Хорошо будет иметь такой выбор Smile

#1960:  Author: Loopback PostPosted: Tue Mar 19, 2024 17:43
    —
Orion9 wrote:
Может, сделать пару вспомогательных функций, которые сразу будут возвращать имя файла и путь в нужной панели

Да, такие мысли проскакивали, хотя я стараюсь по возможности не увеличивать число специализированных функций. Жаль, что Гислер не пришёл к какому-нибудь единому API для двунаправленного взаимодействия с программой. Сейчас получается три метода (WM_USER+51, WM_USER+50 и WM_COPYDATA), которые в ряде моментов пересекаются. Думаю, как минимум надо добавить запросы через WM_COPYDATA, что позволит удобнее получать пути.

Orion9 wrote:
Если тултип будет вызываться через Autorun, это не поможет ему показываться поверх тоталовского?

Точно так же прячется за тоталовским. Но глубоко не смотрел.

Orion9 wrote:
По сути, применение у тултипа такое же, что и у MsgBox, только оформление другое.

Еще такой момент, для чего вообще придуманы тултипы. Они предназначены для подсказок к контролам в приложении, а не в качестве самостоятельного уведомления. При этом в приложениях тултип полностью контролируется самим приложением. Сделать это со стороны сложнее. Тут, возможно, будет более оправданным использование традиционных диалогов, по аналогии с функциями Splash* в Autoit.

#1961:  Author: Orion9 PostPosted: Wed Mar 20, 2024 00:17
    —
Loopback
Ну, как я писал чуть выше, если будут сложности, то и не заморачивайтесь сильно.

Просто, как вы понимаете, получать небольшые инфошки в MsgBox не всегда удобно. Гораздо интереснее делать это во всплывающем окне возле курсора в соответствующем оформлении, например, если нужно быстро посмотреть жесткие ссылки файла:
Code:
ControlSetMouseAction /L /K:C 3 ShowInfoHL

Func ShowInfoHL
Local f, p, hl, links, linkout
Local uwdx = %COMMANDER_PATH% & "\Plugins\uwdx\uwdx.exe"
   f = StrPart(ItemAtCursor('text'), auTAB, 1)
   p = SendMessage(RequestInfo(ItemAtCursor('panel') + 8), 13, 500, "" , 2)
   p = StrLeft(p, StrPos(p, "\", -1))
   f = p & f   
   ProcessExecGetOutput hl %uwdx% "NTLinks.wdx ""%f%"" 0" "%COMMANDER_PATH%\Plugins\wdx\NTLinks\"
   if hl = 0 then Return
   ProcessExecGetOutput links %uwdx% "/C:1251 NTLinks.wdx ""%f%"" 7 0" "%COMMANDER_PATH%\Plugins\wdx\NTLinks\"
   for i=1 to hl
      linkout = linkout & StrTrim(StrPart(links, ',', i)) & auCRLF
      i = i + 1
   next
   MsgBox(linkout)
EndFunc

А что там будет вместо MsgBox - тултип или Splash скрин - роли, как таковой, не играет. Тут как раз тот случай, когда важна форма, а не содержание Smile Так что делайте как вам будет удобно.

#1962:  Author: jentoso PostPosted: Wed Mar 20, 2024 21:30
    —
Orion9
Попробовал приведенный пример
Code:
ControlSetMouseAction /L /K:C 3 ShowInfoHL

И словил ошибку
Code:
---------------------------
Autorun plugin error
---------------------------
Error in file: D:\TOTALCMD\plugins\WDX\Autorun\Autorun.aucfg

[58] ProcessExecGetOutput hl %uwdx% "NTLinks.wdx ""%f%"" 0" "%COMMANDER_PATH%\Plugins\wdx\NTLinks\"

Error executing process.
---------------------------
ОК   
---------------------------

#1963:  Author: Orion9 PostPosted: Thu Mar 21, 2024 01:08
    —
jentoso
Трудно сказать... У меня все работает. Может, с путями к uwdx что-то не так?

Кстати, хотел спросить.
Code:
ProcessExecGetOutput hl %uwdx% "NTLinks.wdx ""%f%"" 0" "%COMMANDER_PATH%\Plugins\wdx\NTLinks\"
   if hl = 0 then Return

Вот тут uwdx выдает "Test file does not exists.", если под курсором не файл/каталог. Думал, проверка "if hl = 0" сработает, но, по факту, получается нет. Как лучше тогда сделать, чтобы строка не приводимая к числу была принята за 0 -- выражением?

#1964:  Author: jentoso PostPosted: Thu Mar 21, 2024 06:00
    —
Orion9 wrote:

Может, с путями к uwdx что-то не так?

Пути к uwdx такие же, а сам uwdx обновленный.

#1965:  Author: Orion9 PostPosted: Thu Mar 21, 2024 11:30
    —
jentoso
А с учетом нового ключика у вас будет работать?
Code:
ControlSetMouseAction /L /K:C 3 ShowFileInfo

Func ShowFileInfo
Local f, p, hl, links, linkout
Local uwdx = %COMMANDER_PATH% & "\Plugins\uwdx\uwdx.exe"
   f = StrPart(ItemAtCursor('text'), auTAB, 1)
   p = SendMessage(RequestInfo(ItemAtCursor('panel') + 8), 13, 500, "" , 2)
   p = StrLeft(p, StrPos(p, "\", -1))
   f = p & f   
   ProcessExecGetOutput hl %uwdx% "/I NTLinks.wdx ""%f%"" HLNK_Count"
   if (hl+0) = 0 then
       MsgBox(hl)
      Return
   endif   
   ProcessExecGetOutput links %uwdx% "/I /C:1251 NTLinks.wdx ""%f%"" HLNK_Paths 0"
   linkout = "Hard Links: "  & hl & auCRLF
   linkout = linkout & auCRLF
   for i=1 to hl
      linkout = linkout & StrTrim(StrPart(links, ',', i)) & auCRLF
      i = i + 1
   next
   MsgBox(linkout)
EndFunc



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3 ... 130, 131, 132, 133, 134, 135  Next  :| |:
Page 131 of 135

Powered by phpBB © 2001, 2005 phpBB Group