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 ... 156, 157, 158 ... 165, 166, 167  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: 1434

Post (Separately) Posted: Wed Dec 04, 2024 12:04    Post subject: Reply with quote

Orion9 wrote:
Да вроде сработала у меня примерка

Без обрамляющих скобок давало неправильный результат.

Orion9 wrote:
В чем причина лишних строк?

Занятный баг, проблема в том, что во внутренней функции форматирования \r возвращала LF, а \n - CR, а должно быть наоборот. Поэтому в выводе оказывался неправильный перевод вида LFCR, который, к примеру, MsgBox съедает нормально, а при вставке из буфера возникает двойной перевод строки.

Баг некритичный, не хотелось бы под него выпускать версию. Если вдруг будет ещё что-то критическое - то войдёт в хотфикс, если нет, то в плановом порядке.

Пока можно обойти так:

ClipPut(StrReplace(GetState("libs"), auLF & auCR, auCRLF))

Orion9 wrote:
но в справке действительно нет, как нет и про новые операторы.

Есть и то, и другое. Составные операторы в разделе "переменные". Не самое лучшее место, но и оператор присваивания в Autorun не совсем оператор. Впрочем, потом может еще поменяю.

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

Оконных функций я бы сказал уже неприлично много. Но они все простые. А отправка клавиш - нет, несмотря на кажущуюся тривиальность.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 579

Post (Separately) Posted: Wed Dec 04, 2024 14:12    Post subject: Reply with quote

Loopback
Чуть было не забыл: Так вы можете подтвердить проблему Pragma AutorunPluginFields в 64-ой версии ТС? Решить как-то можно?
Quote:
Похоже, проблема была как раз в предыдущей версии и ProcessExecGetOutput обрезала лишнее.

Да, не посмотрел на проблему с этого ракурса. Но теперь смутно вспоминаю, что вроде даже подстраивался под такое поведение, по крайней мере обращал на это внимание.
Quote:
На самом деле не вижу в этом проблемы, просто используйте StrTrim.

Так и сделал. А в самом ahk-скрипте через RTrim убрал лишний символ LF.
Quote:
ClipPut(StrReplace(GetState("libs"), auLF & auCR, auCRLF))

Сделал. Результатом доволен Smile
Quote:
Есть и то, и другое. Составные операторы в разделе "переменные". Не самое лучшее место, но и оператор присваивания в Autorun не совсем оператор. Впрочем, потом может еще поменяю.

Времени просто не было внимательно все изучить. Но думаю, такое можно и в разделе "Выражения" продублировать (или сделать дополнительную ссылку на раздел "Переменные" до кучи).
Quote:
Оконных функций я бы сказал уже неприлично много. Но они все простые. А отправка клавиш - нет, несмотря на кажущуюся тривиальность.
Жаль, что есть сложности... Фича бы очень пригодилась. Например, благодаря вашим фиксам в новой бете, текст в окне ColorMania теперь успешно устанавливается:
Code:

h = WinFind(0, "TfrmColorPick")
If h > 0 Then
    #синхронизация текста
    WinSetText(ColorText, WinFind(h, "TEdit", 1))         
Endif

Но само по себе это ничего не дает, потому что для установки значения цвета из этого поля, нужно еще нажать на кнопку "Set" или нажать Enter. Большинство полей редактирования будут работать по тому же принципу. Я, кстати, попробовал ради интереса послать сообщения кнопке:
Code:
b = WinFind(h, "TButton", 2)
SendMessage(b, 513)
Sleep(100)
SendMessage(b, 514)
Вроде работает, но только при условии, что указатель мыши не оказывается в окне Colormania после клика. Но главное - работает, даже если окно свернуто в трей, а значит можно и клавиши послать через WM_KEYDOWN и WM_KEYUP, правильно я понимаю?

Мелочь: А нельзя ли развить тему для ItemAtCursor и сделать вспомогательную функцию по типу RequestCopyDataInfo, которая будет сразу возвращать имя и путь объекта под курсором, если он, конечно, там есть?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1434

Post (Separately) Posted: Wed Dec 04, 2024 19:35    Post subject: Reply with quote

Orion9 wrote:
Так вы можете подтвердить проблему Pragma AutorunPluginFields в 64-ой версии ТС?

Нет, не могу подтвердить. Проверил, код согласно вот этому замечанию
Orion9 wrote:
А вот из ТС х64 нет захода даже в функцию BigHint (окно дебаггера остается чистым, если добавить к телу функции OutputDebugString(GetState("vars",2)))


Code:

Func BigHint(FileName, FieldIndex, UnitIndex)
    OutputDebugString(GetState("vars",2))
EndFunc


в x64 успешно выводит все три переменные. По 60 раз. Так что это не похоже на проблему с входом в функцию на x64.

Orion9 wrote:
нужно еще нажать на кнопку "Set" или нажать Enter

Надёжнее кнопке послать BM_CLICK :

Code:

b = WinFind(h, "TButton", 2)
SendMessage(b, 0xF5, 0, 0)


Orion9 wrote:
А нельзя ли развить тему для ItemAtCursor и сделать вспомогательную функцию по типу RequestCopyDataInfo, которая будет сразу возвращать имя и путь объекта под курсором, если он, конечно, там есть?

Пока не знаю.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 579

Post (Separately) Posted: Thu Dec 05, 2024 01:21    Post subject: Reply with quote

Loopback wrote:

Code:

Func BigHint(FileName, FieldIndex, UnitIndex)
    OutputDebugString(GetState("vars",2))
EndFunc


в x64 успешно выводит все три переменные. По 60 раз. Так что это не похоже на проблему с входом в функцию на x64.

А если вот так:
Code:
Func BigHint(FileName, FieldIndex, UnitIndex)
   If IsPressed (0x11) Then OutputDebugString(GetState("vars",2))
EndFunc

Проблема, похоже, не с функцией BigHint, а с IsPressed. В 32-х битном ТС все нормально.
Loopback wrote:
Надёжнее кнопке послать BM_CLICK :

Спасибо, работает! Надеялся на ваш совет Smile Самостоятельно вникать так глубоко не приходится, хотя это все интересно, конечно.)

Пожалуй, пора продемонстрировать плоды нелегкого труда Laughing Вот теперь работает ближе к тому, как оно должно быть на самом деле, хотя это все эксперементально пока. Небольшая оговорка:
Russian.cedf wrote:
Значения ключей, определяющих цвет, могут быть заданы как в десятичном виде (RGB: красный + 256*зелёный + 65536*синий, каждый компонент из диапазона 0..255), так и в шестнадцатеричном (трёхбайтное число $BBGGRR, где RR, GG и BB задают интенсивность красного, зелёного и синего цветов в диапазоне от 00 до FF).
По умолчанию при диалоговом выборе цвета значение записывается в десятичном формате. Чтобы преобразовать с помощью Configuration Editor выбранное значение из десятичного формата в шестнадцатеричный, нужно сохранить цвет в соответствующем системном диалоге кнопкой OK при нажатой клавише SHIFT. Шестнадцатеричный формат будет использоваться для этого значения и при следующих обращениях к тому же диалогу. (Данная методика поддерживается и для прочих цветовых настроек, особенно важна она для стилевой настройки курсорной рамки в ключах InactiveFocus и SelectionFocus.) Столь же простой способ обратного преобразования шестнадцатеричного формата в десятичный не предусмотрен; вы можете удалить текущее значение ключа и задать нужный цвет заново в другом формате либо взять десятичный аналог шестнадцатеричного значения из какой-то сторонней программы, поддерживающей такие преобразования.

Пока нет поддержки шестнадцатеричных значений, ключей темного режима и ключей InactiveFocus и SelectionFocus. Стоит отметить, что менять цвета у курсора и всем, что с ним связано - нет так удобно, поскольку окно ТС теряет фокус и изменения не видны в реальном времени. Но все, что касается остального, очень даже неплохо.

Хотел было записать видео, как предлагал jensoto, но подумал, что нет смысла. Все работает сразу и самым наглядным образом. Поток запускается и ждет окна ColorMania или окна стандартного диалога выбора цвета. Клавиши управления работают только в этих окнах, когда они активны. Ctrl - применить цвет. Shift - откатить. Alt - умолчание (-1), ESC - синхронизировать цвет (только для окна ColorMania). Удерживая Ctrl и водя курсором мыши по палитре цветов - изменения отображаются мгновенно. В принципе, это то, о чем я когда-то мечтал, и чего не хватало. Т.ч. действительно Autorun воплощает мечты! )
 Backdrop.aucfg

 Hidden text

 Hidden text

 Backdrops.bar

Там еше кнопка и комбинации для переключения сохраненого фона из бар-файла и пару приятных мелочей, включая статус готовности операций в заголовке.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1434

Post (Separately) Posted: Thu Dec 05, 2024 11:25    Post subject: Reply with quote

Orion9 wrote:
Проблема, похоже, не с функцией BigHint, а с IsPressed.

Выглядит похоже, но нет. Обратите внимание, что при нажатом Ctrl и другие подсказки не появляются. А если нажать Ctrl при активной подсказке - она сразу скрывается. Раз нет отображения подсказки - нет и запроса данных из плагинов. Соответственно, не происходит и вход в функцию Autorun.

Точно так же себя ведут и другие модификаторы - Shift, Alt, Win. Более того, эти модификаторы скрывают подсказку и в x86.

А вот что самое смешное: в тотале 10.51 x86 так же себя ведет и Ctrl. Т.е. возможность удерживать Ctrl не скрывая подсказку есть только в х86 версии тотала начиная где-то с 11 версии...
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 579

Post (Separately) Posted: Thu Dec 05, 2024 14:08    Post subject: Reply with quote

Loopback wrote:
Выглядит похоже, но нет. Обратите внимание, что при нажатом Ctrl и другие подсказки не появляются. А если нажать Ctrl при активной подсказке - она сразу скрывается.

До смешного!.. А может, он (х64) таким же образом и MsgBox гасит? Laughing
Loopback wrote:
Точно так же себя ведут и другие модификаторы - Shift, Alt, Win. Более того, эти модификаторы скрывают подсказку и в x86.

Да, эту фишку я давненько просек. Иначе чем палками в колеса Autorun, это никак не назвать.)
Loopback wrote:
А вот что самое смешное: в тотале 10.51 x86 так же себя ведет и Ctrl. Т.е. возможность удерживать Ctrl не скрывая подсказку есть только в х86 версии тотала начиная где-то с 11 версии...

Выход есть - использовать Lock, с ним все работает даже в 64-х битном ТС. Пример с MI можно найти на предыдущей странице. Т.е. привязываться надо не к клавишам, а к переменной и ее состоянию. Понятно, что реальное нажатие на Ctrl и другие модификаторы так работать не будет, а ведь именно это иногда и требуется, если нужно по-быстрому вызвать дополнительную информацию в подсказке к какому-то единичному файлу. Но можно и локом, раз других вариантов нет.

Решил посидеть пока в TC x64 - посмотреть, что еще может пойти не так. Пока ничего не нашел, вроде. Хотя функционала на Autorun накопилось немало за все это время, т.ч. быстро проверить не получится.

WMI запроос:
Code:
SELECT Address, ResponseTime, ResponseTimeToLive, StatusCode FROM Win32_PingStatus WHERE BufferSize = 32 AND Timeout = 1000 AND (Address = "192.168.1.1" OR Address = "192.168.1.2" OR Address = "wincmd.ru")

Все так же приводит к ошибке "Неожиданная кавычка " в строке". Работает только запрос с одинарной кавычкой в обоих версиях разрядности:
Code:
SELECT Address, ResponseTime, ResponseTimeToLive, StatusCode FROM Win32_PingStatus WHERE BufferSize = 32 AND Timeout = 1000 AND (Address = '192.168.1.1' OR Address = '192.168.1.2' OR Address = 'wincmd.ru')

Предложение: GetState("envvars") - класс! А если бы еще была возможность выводить переменные окружения создаваемые только в Autorun? Было бы очень удобно.

Ну, и пара моментов по вчерашнему посту. Запуск отслеживания с зажатым Win переводит скрипт в режим тестирования цвета фона подсказки. Любые изменения в окне ColorMania или окна диалога цвета при нажатии Ctrl будут вызывать подсказку с цветом фона выбранного цвета. Идея была наглядно подбирать стили и цвета к подсказке, но пока идея недоделанная, хотя и рабочая (подсказки отображаются одна за другой). Теперь необязательно запускать окно ColorMania, поток может работать и со стандартным (системным) диалогом выбора цвета, который можно вызвать по-разному. Поскольку я больше ориентируюсь на Autohotkey, то нашел в сети скрипт для этого, но вы можете ипользовать и другие методы при необходимости.

 ColorDialog.ahk

В последнее время вносил много изменений, но мало тестировал, т.ч. могут быть какие-нибудь огрехи или косяки. Если заметите что-то, пишите.)
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 579

Post (Separately) Posted: Thu Dec 05, 2024 18:39    Post subject: Reply with quote

Loopback
Обнаружил тут, что если эмулировать нажатие Ctrl в Экранной клавиатуре, то все работает как часы ) И Alt и Shift тоже. Может, что-то можно из этого выжать? Ну, т.е. как-то подстроиться, изменить что-то в IsPressed... Хотя причем тут IsPressed, если x64-ый не пойми что делает с этими клавишами в окне панели Laughing
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1434

Post (Separately) Posted: Thu Dec 05, 2024 19:52    Post subject: Reply with quote

Orion9 wrote:
А может, он (х64) таким же образом и MsgBox гасит?

Не, тут другое. Эта проблема до конца так и не решена.

Orion9 wrote:
Т.е. привязываться надо не к клавишам, а к переменной и ее состоянию.

В свете имеющихся ограничений только и остаётся.

Orion9 wrote:
Все так же приводит к ошибке "Неожиданная кавычка " в строке".

Да, тут что-то с обработкой параметров в Query(). Добавил в todo, позже разберусь.

Orion9 wrote:
А если бы еще была возможность выводить переменные окружения создаваемые только в Autorun?

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

 Hidden text


Orion9 wrote:
Может, что-то можно из этого выжать?

Академические изыскания - это хорошо, но тут-то требуется нажатие физической кнопки.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 579

Post (Separately) Posted: Thu Dec 05, 2024 20:15    Post subject: Reply with quote

Quote:
достаточно скриптового решения.

Да, что-то такое, помню, делалось... Надо будет пересмотреть код с учетом новых реалий - существование объекта List. Просто как бы само напрашивалось добавить GetState("envvars") подобный параметр, но можно и без него.

Я смотрю в справке появились уже значки восклицания с красивыми сносками, выглядит теперь очень профессионально Smile
Back to top
View user's profile Send private message
yahuu



Joined: 22 Jun 2023
Posts: 29

Post (Separately) Posted: Sun Dec 08, 2024 20:45    Post subject: Reply with quote

В документации "Switching to version 3.x" страница "syntax_type" не была забыта при упаковке?
Гиперссылка соответствует файлу "syntax_type.html".

Я заметил, что русская версия справки и английская версия справки не совпадают. Какая из них является последней?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1434

Post (Separately) Posted: Sun Dec 08, 2024 21:33    Post subject: Reply with quote

yahuu wrote:
В документации "Switching to version 3.x" страница "syntax_type" не была забыта при упаковке?

Статьи "syntax_type" больше нет. Были очень большие изменения по общим разделам, эта статья убрана, а информация из неё распределена по другим статьям. Ссылка просто забыта.

yahuu wrote:
Я заметил, что русская версия справки и английская версия справки не совпадают. Какая из них является последней?

Основная и наиболее актуальная - русская. Значительные изменения добавляются сразу и в английскую версию. Но более мелкие (а их тоже много), конечно, отстают.

Актуализация английской справки начнется после окончания переработки русской версии.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 579

Post (Separately) Posted: Mon Dec 09, 2024 14:21    Post subject: Reply with quote

Смена фона одним кликом - это, конечно, хорошо, но все-таки недостаточно: расцветка файлов из шаблонов поиска остается той же и сам фон при резком изменении контраста сливается с цветом текста, что делает его бесполезным.

Для полноценного использования нужна не просто смена фона, а смена всей цветовой схемы.

Казалось бы, простейшее решение - поменять редирект в секции Colors, и вуаля:
Code:
[Colors]
RedirectSection=%COMMANDER_PATH%\Ini\Colors.ini

Но нет. Тотал не реагирует на такие трюки, пока не перезапустится. Поэтому пришлось выходить из ситуации переименованием ini-файлов.

Сейчас у меня, получается, три файла: Colors.ini, Colors2.ini и Colors3.ini. Каждый из которых содержит две секции из wincmd.ini - [Colors] и [ColorsDark]. В начале у каждого файла есть секция [ColorTheme], в которой находятся ключи описания темы, например:
Code:
[ColorTheme]
Name=White
Version=1.0
Description=Светлые тона
Instance=1

Или:
Code:
[ColorTheme]
Name=Black
Version=1.1
Description=Тёмные тона
Instance=2

Ключ Instance хранит номер темы, который используется для дальнейших расчетов при переключении на следующую тему.

Код еще сыроват (в нем нет должных проверок и возможности сохранять новые темы на лету), но уже вполне рабочий - со своей задачей цикличного переключения тем он справляется очень даже хорошо)
 Hidden text

 Кнопка

Сделал себе пока три темы, сижу и кайфую) С детства мечтал переключать что-нибудь как хЫшный планетянин. И вот теперь благодаря могуществу Autorun эта мечта сбылась Laughing
 P.S.

 Disclaimer

 Exclaimer
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2676

Post (Separately) Posted: Tue Dec 10, 2024 14:25    Post subject: Reply with quote

Orion9 wrote:
Удерживая Ctrl и водя курсором мыши по палитре цветов - изменения отображаются мгновенно.

И ведь я поверил! Very Happy Ничего невозможного уже нет! Но всё-таки пришлось не только водить, но и нажимать периодически левую клавишу.
Глубоко не копал, но скрипт работал исправно.
С фоном подсказки - по-разному, в зависимости от источника для палитры цветов.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 579

Post (Separately) Posted: Wed Dec 11, 2024 01:18    Post subject: Reply with quote

sa wrote:
Ничего невозможного уже нет!

С каждой новой версией Autorun я убеждаюсь в этом все больше и больше Smile

Действительно темы теперь можно создавать легко и просто, а главное делать это приятно. Обновил модуль:
 Hidden text

Кнопки те же.
Небольшой фикс для работы с цветом курсора и возможность переключаться между 5-ю темами.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 579

Post (Separately) Posted: Mon Dec 16, 2024 01:14    Post subject: Reply with quote

Придумал наконец-то, что можно повесить на правый клик у кнопки Autorun внизу окна.

Прав был jensoto - иногда нужно увидеть)
 Hidden text

А вот вам и хЫшный коммандер Laughing

Ну и смена фона:


 Backdrop.aucfg
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 ... 156, 157, 158 ... 165, 166, 167  Next
Page 157 of 167

 
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