Loopback писал(а):LonerD
проще через пользовательскую функцию (в бете):
Понял, спасибо.
А можно как-то сделать, чтобы шрифты, загруженные через Autorun, выгружались после закрытия Тотала, а не висели до перезагрузки ОС?
LoadFont /N System\Fonts\ArialMod.ttf
LoadFont /N System\Fonts\Anonymous.ttf
LonerD
По идее они и должны выгружаться, т.к. функция выгрузки загруженных шрифтов отрабатывает при выгрузке плагина. Я нашел прошлое обсуждение четыре года назад, вроде получается, что проблема появилась между версиями 2.0.2 и 2.0.7, хотя код функции между этими версиями не менялся. Единственное, скорее всего менялся компилятор, но я не вижу, как это может повлиять на работу функций WinAPI.
Ключ /N снимает флаг FR_PRIVATE у функции AddFontResourceEx, т.е. с этим ключом шрифт доступен не только процессу, но и в системе. Предположу, что какие-то системные процессы могут использовать этот шрифт, блокируя тем самым выгрузку.
В общем, это надо будет пробовать. Возможно, нужно делать вызов выгрузки несколько раз до обнуления счетчика использования шрифта.
Loopback писал(а):Ключ /N снимает флаг FR_PRIVATE у функции AddFontResourceEx, т.е. с этим ключом шрифт доступен не только процессу, но и в системе. Предположу, что какие-то системные процессы могут использовать этот шрифт, блокируя тем самым выгрузку.
Точно. У меня и Акелпад подгружает шрифты эти же, но из своего каталога. Видимо, в представлении ОС это всё перемешивается, потому блокируются заодно и подгруженные из Тотала файлы.
Убрал ключ /N - всё стало замечательно.
Можно ли через плагин посылать нажатия клавиш? MouseClick есть, а про клавиши что-то в справке не нахожу.
Цель - при нажатии средней кнопки мыши на панели инструментов посылать нажатие Ctrl+ЛКМ.
-------------
И второй вопрос.
ShowPopupMenu вызывается только через горячие клавиши/клики мыши? Его никак не повесить на em-команду? (кроме создания em-команды с эмуляцией нажатия соответствующих горячих клавиш)
LonerD
В планах есть, но не с самым высоким приоритетом, конкретно ничего не могу сказать. Пока только через запуск скрипта или чего-нибудь еще, умеющего посылать нажатия, типа tcfs2.
Его никак не повесить на em-команду?
Можно, через SetMessageAction (у которой сейчас как раз проблемы с последней парой бет TC). В справке как раз показан пример такого использования, только вместо пользовательской функции можно использовать ShowPopupMenu:
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).
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
Запускается несколько копий настроенного Total Commander c плагином Autorun.
В Autorun прописан запуск программы. Закрываю одну копию TC - программа тоже выгружается.
Можно ли это как-то реализовать на уровне параметров запуска в плагине или другими способами, чтобы она выгружалась только если закрыта последняя копия запущенного процесса TC? То есть пока работает хоть один ТС - программа должна висеть резидентно и работать.
Я вижу только один способ: в секции финализации проверять наличие хотя бы одного окна тотала. Если окон не осталось, выгружать программу.
Для максимальной простоты, можно, например, сделать макрос, возвращающий число существующих окон тотала (именно окон, не процессов), если оно 0 - можно выгружать. Минус такого решения - оно сугубо под одну задачу, зачем еще где-то может понадобиться число окон?
Либо проверять наличие окна с помощью функции поиска окон. Её пока нет, но планируется. Не сильно сложнее, но гибче.
Loopback писал(а):можно, например, сделать макрос, возвращающий число существующих окон тотала (именно окон, не процессов), если оно 0 - можно выгружать. Минус такого решения
Понял. Учитывая, что программа-скрипт своя, то мне пока проще и надёжней в ней прописать таймер проверки окон.
В обеих случаях минус в том, что могут быть запущены ещё и сторонние копии Тотала. А хотелось бы выгружать программу только в том случае, если она закрыто последнее окно именно "своего" Тотала (в котором прописан автозапуск программы).
Skif_off
В принципе, если стоит Autorun, то и искать ничего не нужно, т.к. он возвращает PID и хэндл окна текущего процесса, можно их сразу в скрипте использовать. Но насколько я понимаю, тут несколько другая задача, поскольку есть условие "последнее окно именно "своего" Тотала". Т.е. тут надо "помечать" окно тотала, в котором выполняется Autorun, запускающий это приложение, а при выходе проверять только помеченные окна.