Страница 123 из 243

Добавлено: Пн май 22, 2023 04:38
LonerD
Loopback писал(а):LonerD
проще через пользовательскую функцию (в бете):
Понял, спасибо.

А можно как-то сделать, чтобы шрифты, загруженные через Autorun, выгружались после закрытия Тотала, а не висели до перезагрузки ОС?
LoadFont /N System\Fonts\ArialMod.ttf
LoadFont /N System\Fonts\Anonymous.ttf

Добавлено: Пн май 22, 2023 18:26
Loopback
LonerD
По идее они и должны выгружаться, т.к. функция выгрузки загруженных шрифтов отрабатывает при выгрузке плагина. Я нашел прошлое обсуждение четыре года назад, вроде получается, что проблема появилась между версиями 2.0.2 и 2.0.7, хотя код функции между этими версиями не менялся. Единственное, скорее всего менялся компилятор, но я не вижу, как это может повлиять на работу функций WinAPI.

Ключ /N снимает флаг FR_PRIVATE у функции AddFontResourceEx, т.е. с этим ключом шрифт доступен не только процессу, но и в системе. Предположу, что какие-то системные процессы могут использовать этот шрифт, блокируя тем самым выгрузку.

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

Добавлено: Вт май 23, 2023 20:14
LonerD
Loopback писал(а):Ключ /N снимает флаг FR_PRIVATE у функции AddFontResourceEx, т.е. с этим ключом шрифт доступен не только процессу, но и в системе. Предположу, что какие-то системные процессы могут использовать этот шрифт, блокируя тем самым выгрузку.
Точно. У меня и Акелпад подгружает шрифты эти же, но из своего каталога. Видимо, в представлении ОС это всё перемешивается, потому блокируются заодно и подгруженные из Тотала файлы.
Убрал ключ /N - всё стало замечательно.

Добавлено: Ср май 31, 2023 02:27
LonerD
Можно ли через плагин посылать нажатия клавиш? MouseClick есть, а про клавиши что-то в справке не нахожу.
Цель - при нажатии средней кнопки мыши на панели инструментов посылать нажатие Ctrl+ЛКМ.

-------------
И второй вопрос.
ShowPopupMenu вызывается только через горячие клавиши/клики мыши? Его никак не повесить на em-команду? (кроме создания em-команды с эмуляцией нажатия соответствующих горячих клавиш)

Добавлено: Ср май 31, 2023 12:00
Loopback
LonerD
В планах есть, но не с самым высоким приоритетом, конкретно ничего не могу сказать. Пока только через запуск скрипта или чего-нибудь еще, умеющего посылать нажатия, типа tcfs2.
Его никак не повесить на em-команду?
Можно, через SetMessageAction (у которой сейчас как раз проблемы с последней парой бет TC). В справке как раз показан пример такого использования, только вместо пользовательской функции можно использовать ShowPopupMenu:

Код: Выделить всё

SetMessageAction "MyMessage" ShowPopupMenu ...

ShowPopupMenu

Добавлено: Чт июн 22, 2023 07:58
yahuu
How should I use the variables when calling ShowPopupMenu in the function?

ControlSetMouseAction /R /K:S 1 ShowMenu
Func ShowMenu()
file = "jpg.bar"
strbar = %COMMANDER_PATH% & "\USER\Typebar\" & %file%
# msgbox(strbar)

#failed
ShowPopupMenu %strbar%

#failed
ShowPopupMenu %COMMANDER_PATH%\USER\Typebar\%file%

#failed
ShowPopupMenu D:\Totalcmd\USER\Typebar\%file%

#successed
ShowPopupMenu %COMMANDER_PATH%\USER\Typebar\jpg.bar
EndFunc

Добавлено: Чт июн 22, 2023 12:37
Loopback
yahuu
Yes, something wrong in how ShowPopupMenu handling path. Variables don't appear to be expanded, although a quick look at the code shows they should. So far you can use functional notation: ShowPopupMenu(strbar).

---

Да, что-то неправильно с тем, как ShowPopupMenu обрабатывает пути.
Похоже не разворачиваются переменные, хотя на первый взгляд в коде всё нормально. Пока можно использовать функциональную запись: ShowPopupMenu(strbar).

Добавлено: Чт июн 22, 2023 19:11
yahuu
Loopback писал(а):yahuu
Yes, something wrong in how ShowPopupMenu handling path. Variables don't appear to be expanded, although a quick look at the code shows they should. So far you can use functional notation: ShowPopupMenu(strbar).

---

Да, что-то неправильно с тем, как ShowPopupMenu обрабатывает пути.
Похоже не разворачиваются переменные, хотя на первый взгляд в коде всё нормально. Пока можно использовать функциональную запись: ShowPopupMenu(strbar).

Thank you
ShowPopupMenu(strbar) can popup the menu now
But it will often show only part of it, see the attachment

This problem occurs when using .bar format files
Not appearing for now with .mnu format files

Sorry,Because I'm a new user, I can't post links to pictures...
http://mjj.today/i/ICS0Ty

[mod="CaptainFlint"]The link is now working.

Оживил ссылку.[/mod]

Добавлено: Пт июн 23, 2023 00:08
Loopback
yahuu
Interesting. I can't reproduce it on my files. Would be good if you place your affected barfile somewere, so I can test it.

---

Интересно, но на моих файлах не воспроизводится. Было бы неплохо увидеть проблемный файл.

Добавлено: Пт июн 23, 2023 08:24
yahuu
Loopback писал(а):yahuu
Interesting. I can't reproduce it on my files. Would be good if you place your affected barfile somewere, so I can test it.

---

Интересно, но на моих файлах не воспроизводится. Было бы неплохо увидеть проблемный файл.
I sent the bar file to your email loopback(at)darkhost.ru

Добавлено: Сб июн 24, 2023 19:00
LonerD
Запускается несколько копий настроенного Total Commander c плагином Autorun.
В Autorun прописан запуск программы. Закрываю одну копию TC - программа тоже выгружается.
Можно ли это как-то реализовать на уровне параметров запуска в плагине или другими способами, чтобы она выгружалась только если закрыта последняя копия запущенного процесса TC? То есть пока работает хоть один ТС - программа должна висеть резидентно и работать.

Добавлено: Вс июн 25, 2023 00:12
Loopback
LonerD
На уровне параметров нет, не получится.

Я вижу только один способ: в секции финализации проверять наличие хотя бы одного окна тотала. Если окон не осталось, выгружать программу.

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

Либо проверять наличие окна с помощью функции поиска окон. Её пока нет, но планируется. Не сильно сложнее, но гибче.

Добавлено: Вс июн 25, 2023 23:37
LonerD
Loopback писал(а):можно, например, сделать макрос, возвращающий число существующих окон тотала (именно окон, не процессов), если оно 0 - можно выгружать. Минус такого решения
Понял. Учитывая, что программа-скрипт своя, то мне пока проще и надёжней в ней прописать таймер проверки окон.
В обеих случаях минус в том, что могут быть запущены ещё и сторонние копии Тотала. А хотелось бы выгружать программу только в том случае, если она закрыто последнее окно именно "своего" Тотала (в котором прописан автозапуск программы).

Добавлено: Пт июн 30, 2023 15:09
Skif_off
LonerD
У себя обычно типа такого делал, т.е. не ищем окно ТС, а берём родительский процесс и ищем окно этого процесса.

Добавлено: Пт июн 30, 2023 22:31
Loopback
Skif_off
В принципе, если стоит Autorun, то и искать ничего не нужно, т.к. он возвращает PID и хэндл окна текущего процесса, можно их сразу в скрипте использовать. Но насколько я понимаю, тут несколько другая задача, поскольку есть условие "последнее окно именно "своего" Тотала". Т.е. тут надо "помечать" окно тотала, в котором выполняется Autorun, запускающий это приложение, а при выходе проверять только помеченные окна.