Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Autorun
Goto page Previous  1, 2, 3 ... 130, 131, 132, 133, 134, 135  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Tue Mar 12, 2024 16:35    Post subject: Reply with quote

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

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

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

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

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

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

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

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

Просто запрос на создание настраиваемых тултипов для функциональных кнопок уже был, но там не так всё просто.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Tue Mar 12, 2024 20:09    Post subject: Reply with quote

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
Можно найти интересные применения, например, альтернативные подсказки к файлам или дополнительная информация, всплывающая по требованию на разных элементах окна или у курсора мыши.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Wed Mar 13, 2024 12:29    Post subject: Reply with quote

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:
Можно найти интересные применения

Ясно. Хотя тут сложность даже не в самом тултипе, а в том, как его вызывать. Горячие клавиши это понятно. Но если по наведению это уже совсем другое.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Thu Mar 14, 2024 13:55    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Thu Mar 14, 2024 21:00    Post subject: Reply with quote

Orion9 wrote:
Кстати, я все правильно сделал в этом примере выше, или есть другие способы?

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

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

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

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

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

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

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

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

Это из предыдущего запроса. Кстати, мало тултип показать, надо еще и как-то скрыть, вот тут вижу сложности. В общем, это надо пробовать.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Sat Mar 16, 2024 20:06    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Mon Mar 18, 2024 00:35    Post subject: Reply with quote

Наконец-то дошли руки подправить все, что нужно. Теперь скрипт просто добавляет полезную информацию к заголовку ТС, не трогая оригинального текста. Подробности внутри архива.
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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


Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Mon Mar 18, 2024 19:43    Post subject: Reply with quote

Orion9 wrote:
Но вызывает вопрос параметр 100. По идее здесь должно быть точное количество байт, полученное через WM_GETTEXTLENGTH?

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

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

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

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

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

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

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

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

В общем, тут ещё надо думать.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Tue Mar 19, 2024 00:25    Post subject: Reply with quote

Quote:
Тут еще можно подумать, Runtime пока сыроват.

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

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

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

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

Вариант с кликом на тултипе меня вполне устраивает. Таймер - тоже, в сочетании с кликом. По сути, применение у тултипа такое же, что и у MsgBox, только оформление другое. Хорошо будет иметь такой выбор Smile
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Tue Mar 19, 2024 17:43    Post subject: Reply with quote

Orion9 wrote:
Может, сделать пару вспомогательных функций, которые сразу будут возвращать имя файла и путь в нужной панели

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

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

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

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

Еще такой момент, для чего вообще придуманы тултипы. Они предназначены для подсказок к контролам в приложении, а не в качестве самостоятельного уведомления. При этом в приложениях тултип полностью контролируется самим приложением. Сделать это со стороны сложнее. Тут, возможно, будет более оправданным использование традиционных диалогов, по аналогии с функциями Splash* в Autoit.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Wed Mar 20, 2024 00:17    Post subject: Reply with quote

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 Так что делайте как вам будет удобно.
Back to top
View user's profile Send private message
jentoso



Joined: 20 Dec 2007
Posts: 351

Post (Separately) Posted: Wed Mar 20, 2024 21:30    Post subject: Reply with quote

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.
---------------------------
ОК   
---------------------------

_________________
TC 11.03 combo, Windows 10 x64
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Thu Mar 21, 2024 01:08    Post subject: Reply with quote

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 -- выражением?
Back to top
View user's profile Send private message
jentoso



Joined: 20 Dec 2007
Posts: 351

Post (Separately) Posted: Thu Mar 21, 2024 06:00    Post subject: Reply with quote

Orion9 wrote:

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

Пути к uwdx такие же, а сам uwdx обновленный.
_________________
TC 11.03 combo, Windows 10 x64
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Thu Mar 21, 2024 11:30    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 130, 131, 132, 133, 134, 135  Next
Page 131 of 135

 
Jump to:  
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