Loopback wrote: |
Кому понравится - пользуйтесь |
Quote: |
Его значение всегда устанавливается в -1, так что выражение сравнения составляйте так, чтобы результат всегда был False (=0, >0, >-1, <>-1 и т.д.), иначе все файлы будут раскрашены . |
Quote: |
А не проще возвращать не число -1, а тупо в функции ContentGetValue возвращать значение ft_nosuchfield? |
Quote: |
И размерчик наш - не несколько сотен кило. |
В Readme-файле кто-то wrote: |
ShellExec <имя файла> [<параметры> [<рабочая папка> [<отображение=1>]]] |
Code: |
/t"ку ка ре ку" /c"бла бла бла" /p"хренотень" |
Code: |
ShellExec что-то-там.exe "/t\"ку ка ре ку\" /c\"бла бла бла\" /p\"хренотень\"" "C:\Documents and Settings\All Users" |
MVV wrote: |
Например, мне надо передать следующую строку как параметр:
И при этом указать рабочую папку "C:\Documents and Settings\All Users". Это реально? |
MVV wrote: |
Кстати, родилась еще одна идея, которая кому-то точно понравится. |
Quote: |
Парсер запоминает, с какой кавычки начинается параметр и кавычки другого типа считает вложенными. |
Quote: |
Это с успехом позволит добавить автозагружаемый функционал без необходимостии добавлять новые цветовые схемы. |
Code: |
LoadLibrary /U myplugin.dll auto_func_1 |
Code: |
LoadLibrary [/U] [/T] [/D1000] <dll_name> [<func_name>] |
Code: |
SetEnv [/A] <имя переменной> <текст переменной> |
MVV wrote: |
Кстати, можно добавить возможность вставки кавычки, с которой начинался параметр, указанием двух таких кавычек |
MVV wrote: |
Ну, я думал и про вызов функции без параметров из DLL. Правда, тут возникает вопрос - что делать после вызова функции - выгружать DLL или нет? |
MVV wrote: |
Все-таки я схожусь к мысли, что необязательные параметры типа добавления/замены текста переменной удобнее добавлять в начале параметров через слэш, так проще парсить, и потом, так число необязательных параметров может быть любым: |
Quote: |
Для парсера в данном случае важен порядок параметров. |
MVV wrote: |
Я бы писал парсер строк отдельно, и отдельной функцией сам алгоритм обработки команды |
Code: |
void __stdcall Autorun_PluginInit(const AutorunInfo* Info, char* FuncList, int MaxListSize); |
MVV wrote: |
А вот с Autorun_PluginInit какой-то косяк - вызывается она явно не как __stdcall, также я пробовал __fastcall и __cdecl, ни при одном из них я не нахожу в стеке этих параметров на нужном месте. Ерунда какая-то. Кстати, какой размер буфера - чему равна MaxListSize (может, хоть ее найду)? |
MVV wrote: |
Корректные прототипы функций: |
MVV wrote: |
И вопрос - что такое HModule nProcID? В Си нет такого типа, но есть тип HMODULE (регистр в Си важен). Но я вообще не въеду, что с этим хэндлом можно делать. Зачем он? |
MVV wrote: |
дескриптор окна ТК передается плагином (кстати, ты окно ищешь с учетом его принадлежности текущему процессу? ). |
MVV wrote: |
Не представляю, какие еще могут понадобиться дескрипторы для работы. А если и могут, то DLL их по идее может получить так же точно, как и твой плагин. |
MVV wrote: |
Также плохо понятно (хотя смотрится интересно), зачем добавлять функции из DLL в список. Их потом можно прямо из конфига запускать? |
Quote: |
Могут, конечно, но почему бы не передать некоторые данные, поиск которых занимает некоторое время, но которые уже найдены?
Собственно идея была именно в этом. Если возникнут какие-нибудь мысли насчет такой информации - можно ее добавить в структуру. |
Quote: |
Autorun парсит строку и вызывает из соответствующего плагина функцию Autorun_ExecFunc, которой передает имя MyFunc и массив параметров. |
MVV wrote: |
Кстати, сделай первым членом структуры поле с ее размером. |
MVV wrote: |
Ага, так идея виртуальных функций смотрится еще интереснее, хотя все равно использоваться это будет лишь при запуске ТК. Осталось как следует описать это дело кстати, по-английски бы тоже описать и выложить на wincmd.ru. |
MVV wrote: |
Кстати, для примера ты можешь свою movebutton вынести в плагин, а в пример конфига вставить команду для загрузки. |
Code: |
bool GetMainWnd(bool Override=0) { |
MVV wrote: |
Кстати, а зачем через EnumWindows? |
MVV wrote: |
Предлагаю называть плагины так: Autorun_MoveButton.dll, Autorun_HideMenu.dll и т.п., чтобы подчеркнуть их принадлежность к автозапуску. |
MVV wrote: |
Еще предлагаю в первом посте добавлять ссылки на модули например, на этот пост с моим Autorun_HideMenu. |
Loopback wrote: |
Надо просить разблокировать |
Loopback wrote: |
Надо просить разблокировать |
MVV wrote: |
А вообще, как уже упоминалось, надо сделать хоть какую английскую документацию - и на wincm.ru. |
MVV wrote: |
А вообще, как уже упоминалось, надо сделать хоть какую английскую документацию - и на wincm.ru. |
Avada wrote: |
Достаточно написать, например, мне в личку — что в какое место поста и в каком виде добавить. |
Loopback wrote: |
Выложил плагин на wincmd.ru, теперь его постоянное место там. |
Avada wrote: |
Рано радовался. При установленном и штатно работающем Autorun (конфигурация по умолчанию) применение команды cm_UnloadPlugins молча закрывает Тотал. |
MVV wrote: |
Я в своей HideMenu вообще CRT не использовал, чистый API, потому ни глюков, ни избыточного кода. |
MVV wrote: |
Наверное, самая удачная мысль - ввести параметр, разрешающий добавление к переменной, если этот текст в ней уже есть. Так, если надо дописывать - юзер укажет параметр. |
Loopback wrote: |
опробовал для очистки совести создать кнопку на тулбаре с командой 65538. Всё равно работает. |
Loopback wrote: |
Ну это и понятно, плагин же не загружен. |
Loopback wrote: |
Может ты что-то в конфигурации при переходе попортил. |
Flasher wrote: |
То есть? С чего такие мысли? |
Loopback wrote: |
Если он не загружен - не работают и команды. |
Avada wrote: |
1. При использовании в каталоге TC вместо стандартной (распакованной) версии его экзешника упакованной версии 7.55(a), ... при наличии установленого Autorun с любой конфигурацией окно TC появляется на секунду и тут же закрывается. Явный баг. |
Avada wrote: |
2. При добавлении в список плагинов Autorun не через стандартный диалог TC, а через TC Plugins Manager кликом по имени WDX-файла установка хотя и выполняется, но диспетчер плагинов падает. Кто виноват и можно ли починить? |
Loopback wrote: |
Было бы неплохо взглянуть на проблемный конфиг (можно в личку). |
Quote: |
Далее, чтобы реализовать автозапуск, нужно создать цветовую схему "для типов файлов", где вызывать единственное целочисленное поле "Autorun". Выражение может быть любым. |
Flasher wrote: |
Den_Klimov
Конечно, нельзя. Он под TCFS2 и писался по моей, как не трудно проследить в соответствующей ветке, наводке. Почему 41 кило дистрибутива (10 - самой проги, 7 - ini, 24 - РидМи) так сильно смущают? Честно говоря, не использовать TCFS2 с учётом всех нынешних его возможностей помимо основных(быстрый показ-убор комплекта оконных компонентов ТС), ИМХО, просто преступление для продвинутого пользователя ТС. |
Den_Klimov wrote: |
Знаю ты мну не поверишь, с учётом того что мы в теме по F4menu обсуждали, но я сторонник здорового минимализма. |
Den_Klimov wrote: |
Читал. И если честно, без всего этого как-то прожил десять лет на Тотале и думаю ещё столько же в принципе смогу обойтись. |
Den_Klimov wrote: |
Спасибо что вообще хоть реализовали скрытие меню с твоей подсказки. |
Den_Klimov wrote: |
Можно ли использовать Autorun HideMenu (текущая версия 1.1.5) без TCFS2, который не использую. Достаточно ли для этого одного Autorun-а? |
Code: |
SendCommand 65538 |
Code: |
|
Code: |
|
Flasher wrote: |
Честно говоря, не использовать TCFS2 с учётом всех нынешних его возможностей помимо основных(быстрый показ-убор комплекта оконных компонентов ТС), ИМХО, просто преступление для продвинутого пользователя ТС. |
Loopback wrote: |
HideMenu регистрирует 4 команды. |
Loopback wrote: |
TCFS2 - отличная утилита для тех, кто хочет максимально увеличить размер окна тотала. Но ведь не всем это нужно, верно? |
Flasher wrote: | ||
|
Quote: |
Это несколько противоречит предыдущему подходу к делу. Ну, как я уже и писал выше, кому надо, сам всё опробует и со временем поймёт, что уже жить без этого не может(как в случае со мной). |
MVV wrote: |
Можно использовать кучу утилит для отправки тоталу команд, например, TCMC - ею тоже можно вызывать команды HideMenu. |
Den_Klimov wrote: | ||
Этот вариант мне больше всего нравится. Опробую. Если не затруднит, не приведёшь пример строк с командами для искомой задачи плиз? |
Code: |
TCMC 65539 |
MVV wrote: |
А команду IniWrite без текста пробовал использовать? |
sa wrote: |
Нет ли смысла (и возможности, конечно) добавить в Autorun команду IniDelete для этой цели? |
Loopback wrote: |
Как время появится - добавлю. |
MVV wrote: |
А чтобы записать пустое значение, а не удалять ключ, можно указывать "" как значение этого параметра. |
Flasher wrote: | ||
|
Code: |
IniWrite [/EV] <имя ini> <секция> [<ключ> [<текст>]] |
MVV wrote: |
Моя мысль была о том, что для очистки значения параметра вполне можно передавать пустую строку как новое значение. А для удаления - вообще не указывать новое значение. |
MVV wrote: |
Кстати, теперь каждый может написать плагин для Autorun и добавить нужные команды. |
sa wrote: |
Тем более что в TCFS2 это можно будет делать в зависимости от значений других ключей. |
Quote: |
Дело в том, что сейчас команда, получающая от парсера параметры, не различает - был это пустой параметр или отсутствовал вообще. |
MVV wrote: |
но если вы мне поясните, какое отношение имеет функция удаления ключей INI к переключению тотала в полноэкранный режим |
Andrey_A wrote: |
Можно ли это реализовать - не знаю (где-то я видел утилиту, которая прилеплялась к верху) |
Quote: |
Я так полагаю, что это всё делается для увеличения пространства ТС, Можно отображать меню в виде полосы в самом вверху между значком ТС и кнопками (свернуть...) |
MVV wrote: |
главное меню там, где оно у тотала, поддерживается на уровне системы еще с Windows 95, а в любом другом месте - это уже не меню, а лишь его имитация, полностью реализованная программистом. |
Serge Yolkin wrote: |
Только, для TC такую фичу лучше бы отдельным плагином/утилитой реализовать |
MVV wrote: |
Два главных меню - никак. Контекстных может быть сколько угодно |
Andrey_A wrote: |
Не подскажите у кого попросить, кто бы взялся? |
Andrey_A wrote: |
Подскажи, пожалуйста, как ты реализуешь контекстные меню? |
Andrey_A wrote: |
Подскажи, пожалуйста, как ты реализуешь контекстные меню? |
MVV wrote: |
Любое подменю - это по сути обычное всплывающее (контекстное) меню. |
MVV wrote: |
Всплывающее меню может быть как показано явно (как делает Autorun_HideMenu по TrackMainMenu), так и являться подменю какого-либо всплывающего или главного меню - при этом оно показывается при раскрытии его пункта меню. |
Flasher wrote: |
Написал автору ScrollMin о желании добавить его библиотеку к плагинам autorun. |
MVV wrote: |
Автор уже вроде выложил рабочий вариант. |
Loopback wrote: |
Кстати, ты можешь в том посте просто написать пару строк на английском. |
Avada wrote: |
iNorbert
Ни разу спонтанного переключения вида диалога не наблюдал. Если уж изменение положения кнопки задано — оно и держится. |
Loopback wrote: |
в панелях не оказывается нерасцвеченных файлов, и до схемы с Autorun дело не доходит.
Надо бы этот момент в документацию добавить. |
Flasher wrote: |
• Остановка прокрутки теперь осуществляется лёгким вращением скролла в обратном направлении |
LonerD wrote: |
Проверьте, глобальная ли это проблема или только у меня проявляется? |
Flasher wrote: |
Я тут другую штуку отловил. Если в курсор установлен в прокручиваемой панели, то при непрерывном ходе в одном направлении и плавном переходе на обратное движение колеса скроллирование продолжает течь в исходную сторону. |
Avada wrote: |
Предлагаю тем, у кого есть проблемы, дождаться новой версии TWinKey и проверить эти дела снова. |
Loopback wrote: |
Я сначала планировал сделать такую опцию - завершение программы после выхода тотала, но почему-то передумал. В принципе можно и добавить параметр, например /T [erminate]. |
MVV wrote: |
Проблема в том, что при выгрузке плагинов этот ключ будет срабатывать. |
Loopback wrote: |
Тогда при старте плагина каждый раз будут запускаться новые копии программ. |
Flasher wrote: | ||
|
Code: |
MIME-Version: 1.0 |
Code: |
LoadLibrary /U Modules\Autorun_Starter.dll |
MVV wrote: |
Нет, не пропустил. Когда выполняется команда cm_UnloadPlugins, она выгружает и Autorun.wdx. Следовательно, будут выгружаться и программы, для которых будет задан этот самый пока еще несуществующий ключ /T. |
Code: |
wchar_t libname[1024]; |
Flasher wrote: |
Неплохо! Есть пару пожеланий:
1. запускать файлы в соответствии с внутренними ассоциациями ТС, если это возможно; |
Flasher wrote: |
2. сделать команду только на закрытие по вероятности открытых программ. |
Loopback в Readme_ru wrote: |
Полезно для использования ShellExec с ключом /T. Если команда не используется, блокировка выключена. |
MVV wrote: |
А так ли нужно перегружать подобный плагин такой редкой функцией? Сюда прописывается лишь то, что действительно необходимо запускать при старте тотала, вряд ли сюда входят документы (для запуска которых можно прописать программу явно). |
MVV wrote: |
Ты так часто убиваешь что-то при запуске тотала? |
MVV wrote: |
А прямой запуск taskkill.exe чем плох? |
MVV wrote: |
Хотя, в виде отдельных плагинов эти байды оформить можно было бы. |
MVV wrote: |
Вопрос в том, как много людей в них будут нуждаться - я точно не в их числе. |
Flasher wrote: |
При запуске Тотала я ничего не убиваю. Зачем? |
Quote: |
А разве есть в autotun функция запуска чего-то при закрытии ТС? А плох как минимум тем, что консольный. |
Quote: |
Сколько ещё таких "отдельно" ты нам волен предложить? Пока фантазия не кончится? Уверен, что добиться описанного в autorun-e труда не составит, функционал для открываемых прог уже есть, почему же станет проблемой для потенциально открытых? |
Flasher wrote: |
Когда ты допиливал tcfs2 по моим наводкам, так ли ты часто думал о многих? |
MVV wrote: |
А зачем тогда в авторане функция убийства чего-то? |
MVV wrote: |
А остальное спокойно можно убивать из батника, который будет вызывать при выходе мой плагинчик, описанный на предыдущей странице. И этого консольного окна, свернутого в кнопку панели задач, ты даже заметить не успеешь. |
MVV wrote: |
совершенно не нужная большинству использующих плагин |
MVV wrote: |
Предлагаешь поубирать всё, что я добавил с твоих наводок? |
MVV wrote: |
И потом, не считая функции установки сепаратора все функции TCFS2 объединены общей идеей. |
Flasher wrote: |
запускать файлы в соответствии с внутренними ассоциациями ТС, если это возможно; |
Flasher wrote: |
сделать команду только на закрытие по вероятности открытых программ. |
Flasher wrote: |
Уверен, что добиться описанного в autorun-e труда не составит, функционал для открываемых прог уже есть, почему же станет проблемой для потенциально открытых? |
Loopback wrote: |
Тут же надо огород городить. |
Loopback wrote: |
То, что сейчас есть, тут не поможет. |
HA3APET wrote: |
но если программа отображается в трее, то после закрытия она продолжает визуально отображаться в трее, пока его не обновить, например провести мышкой по трею. Это известная проблема. |
Flasher wrote: |
Насколько это жертвенно? Цеплять хотя бы бесшаблонные маски получится? |
Flasher wrote: |
А если блокировать проги на полный запуск, но оставлять в памяти идентификаторы процессов для их последующего закрытия? |
HA3APET wrote: |
Нельзя ли сделать завершение процесса, более "мягким" с завершением всех его дочерних процессов? |
MVV wrote: |
HA3APET, а тебе эти значки сильно нужны в трее? Может, поместить их в скрытую часть области уведомлений (всегда скрывать значок)? Тогда они будут скапливаться там и не будут плодиться на самой панели задач. |
HA3APET wrote: |
Попробовал ваше дополнение Starter, спасибо за него. Всё отлично,мне понравилось, но можно ли убрать отображение консоли? А то этот свёрнутый батник всю малину портит. Может задействовать уже готовый для этих нужд Hidcon. Или можно сделать, что бы подхватывался не только Starter.bat, но и Starter.exe? |
Loopback wrote: |
Вопрос, насколько это реально нужно - при запуске тотала запускать документы через внутренние ассоциации? Я что-то не могу придумать ни одного сценария, где это может понадобиться. |
Loopback wrote: |
В общем, если будут доводы в пользу полезности фичи - возможно и сделаю, но в любом случае отдельной командой, в отдельном плагине. |
Loopback wrote: |
Вообще, как раз эти дела лучше бы делать скриптом... там где есть полноценные переменные и много нужных функций. |
Loopback wrote: |
Autorun задумывался только для выполнения команд при автозапуске, не при завершении. |
Loopback wrote: |
Чтобы красиво и прозрачно реализовывать такие задумки, нужно вводить такое понятие, как "событие - завершение тотала". И в этом блоке писать завершающие операции. Само-собой, это потребует переписать изрядную часть кода. |
Flasher wrote: |
Ну, к примеру, ты сам писал про открытие html при запущенном браузере. К чему, раз с твоей точки зрения документы открывать не требуется? |
Flasher wrote: |
Меня устроит и отдельный. |
Flasher wrote: |
Но уже фича с /T реализована, несмотря на задумки. |
Flasher wrote: |
Хм. И что ты предлагаешь? Отдельную библиотеку? Если так, то кто бы взялся за её написание? |
Loopback wrote: |
Реальной необходимости да, не вижу. |
Loopback wrote: |
Ок, сделаю из спортивного интереса |
Loopback wrote: |
Со сторонними сложнее. Нет, ну можно, конечно, сделать функцию типа "CloseProcessOnExit" c параметром в виде имени процесса, но это довольно коряво. |
Loopback wrote: |
Ну, в принципе MVV выше уже написал плагинчик с батником. |
Loopback wrote: |
А что касается события на выход, это должно быть сделано в основном плагине. После определенных модификаций. Сделать это можно, будет тогда Autorun не только менеджер загрузки, но и выгрузки. Но вряд ли в ближайшем релизе. |
Flasher wrote: |
Для себя, но не для остальных. |
Flasher wrote: |
А почему бы и нет? В чём корявость? |
Flasher wrote: |
Или речь идёт о той самой переписи изрядной части кода? |
Loopback wrote: |
Не люблю решений, которые требуют для своей работы какой-то специальной обработки, сильно отличающейся от основной реализации. Это как раз тот случай. |
Loopback wrote: |
В данном случае правильно будет разделить конфигурацию на две секции - инициализации (что сейчас и есть) и финализации, в которой будут точно так же как и сейчас выполняться команды. |
Flasher wrote: |
А если то же самое, но отдельной библиотекой? |
Flasher wrote: |
А ещё лучше сделать одну команду (Terminate, например), после которой в cfg можно задать список закрываемых программ, обрамлённый тегами. |
Code: |
TerminateProcess "proc1.exe" ["proc2.exe" "procN.exe"] |
Loopback wrote: | ||
Скорее всего будет что-нибудь вроде:
|
MVV wrote: |
Думаю, можно не утруждать себя парсингом кучи имен в одной команде, нагляднее будет, если будет несколько строчек с TerminateProcess. |
MVV wrote: |
А вот поддержка масок бы скорее всего не помешала. |
MVV wrote: |
Еще, думаю, могла бы быть полезной функция убийства процесса по заголовку или классу окна. Хотя, для решения таких задач есть более специализированные решения. |
MVV wrote: |
Неужели появляющаяся на секунду кнопка панели задач так мозолит глаза? |
HA3APET wrote: | ||
Свёрнутый батник висит на протяжении всей работы с ТС, или вы задумывали не так? |
Code: |
@echo off |
Loopback wrote: |
Можно, но просто не хочется тратить время на временные решения. |
Loopback wrote: |
Не лучше, потому что неудобно с точки зрения парсинга. |
HA3APET wrote: |
Обнаружилась одна проблема. Если открыть TC и перейти в Сеть/FS-плагины, то батник не отрабатывает второй раз при закрытии ТС, а следовательно программа не закрывается. |
Flasher wrote: |
Всё-таки возмёшься за autorun? Просто с библиотекой всё вышло бы значительно быстрее. Ну, смотри. |
Flasher wrote: |
Почему? После оригинального тега парсишь построчно. |
Flasher wrote: |
А ты предлагаешь всё в одну строку пихнуть, или перенос строки будет также учитываться как завершающий строку с параметрами ключ? |
Loopback wrote: |
Да вроде как спешки-то и нет. Жили же без этой функции? |
Loopback wrote: |
Хочешь - несколько параметров в одной команде, хочешь - несколько команд. Может еще как-нибудь, но без многострочности. |
Flasher wrote: |
Как и без всего остального, и без auotrun-a в своё время... |
Flasher wrote: |
А если я хочу несколько команд с параметрами, тогда что? |
Flasher wrote: |
Без многострочности - плохо для конечного юзера. Правка одной строки крайне неудобна, даже с переносом в редакторе. Неужели так трудно обрабатывать 0Ah? |
Code: |
|
Loopback wrote: |
И в чем проблема? Записываешь несколько команд с параметрами. |
Loopback wrote: |
Считать bla "my dir" продолжением команды или ошибочной строкой с мусором? |
Flasher wrote: |
И как же парсер отличать exe/bat/au3/vbs... в качестве параметра от команды? |
Flasher wrote: |
Если это параметр, то Строкой с мусором, не на одной строке же с program.exe. |
Loopback wrote: |
Эээ. Ты вообще про что? Мы же вроде про команду завершения процессов говорили. Какие еще параметры? |
Loopback wrote: |
Не катит. Любая команда/функция должна иметь маркер начала и маркер конца. Без этого парсер не поймет, где заканчиваются данные, относящиеся к этой команде, особенно это критично для команд с необязательными параметрами. В Autoit маркером конца является закрывающая скобка ), в Autorun - перевод строки. |
Flasher wrote: |
Так придумай новые маркеры |
Code: |
|
Code: |
|
Flasher wrote: |
Ты мне на вопрос по параметрам так и не ответил. Там не только юзабильность, но и технические нюансы. |
Flasher wrote: |
Плюс это касается не только Terminate, но и ShellExec. |
Flasher wrote: |
К тому же тем самым исключится многократный вызов одной и той же команды. |
Flasher wrote: |
когда нужно только парсер слегка поправить? |
Loopback wrote: |
Значит я его не понял. |
Loopback wrote: |
Ну, приехали. Каким боком тут ShellExec? |
Loopback wrote: |
Не все ли равно, где плагин будет перебирать имена - в одной команде или нескольких? Выигрыш - 0. |
Loopback wrote: |
Ё-моё, ты это совершенно точно знаешь, что с такой уверенностью заявляешь? |
MVV wrote: |
Не знаю, это не должно влиять на то, как система выгружает процессы.
А если вернуть оригинал, который запускает батник, и оригинальный батник из архива, его кнопка будет появляться на панели задач при закрытии тотала? |
Code: |
LoadLibrary /U Plugins\Starter.dll |
Flasher wrote: |
Что конкретно ты не понял из вопроса? |
Flasher wrote: |
Ну, парсер же общий, насколько я понимаю. И правила для всех команд в cfg общие. Или нет? |
Flasher wrote: |
Ты сам уверенно заявляешь, что править надо аж пол-плагина. Ты был искренним, когда это писал? |
Flasher wrote: |
Скорость обработки разве не должна возрасти при этом? |
Flasher wrote: |
А также ты ясно не ответил на вопрос, что ты думаешь касаемо "кавычки+перевод строки" и т.п. |
Loopback wrote: |
А что я из этого: "А если я хочу несколько команд с параметрами, тогда что?" должен был понять? |
Loopback wrote: |
Нафига в ShellExec нужна многострочность? |
Loopback wrote: |
Микросекунды в лучшем случае. Что там, что там все равно переборы будут. |
Loopback wrote: |
Но даже если бы она была не сложной, она мне все равно не нравится. |
Flasher wrote: |
А, т.е. то что я писал до этого нужно пропускать мимо глаз? |
Quote: |
Вот я и спрашиваю, как парсер при написании путей к exe-файлам в кач. параметра отличит их от путей к вызываемым прогам, если и те и другие написаны в одну строку? |
Flasher wrote: |
Ты же пишешь, что команды можно прописывать в одну строку. |
Flasher wrote: |
А чем не нравится то хоть? |
Loopback wrote: |
Все равно неясна суть вопроса. Поясни что-ли примером. |
Loopback wrote: |
И никто не мешает использовать несколько команд с одним параметром. |
Code: |
"Program0.exe" "param's" "Program1.exe "param's" "Program2.exe" "param's" |
Loopback wrote: |
Несколько команд в одной строке писать нельзя. |
Loopback wrote: |
Всё, с этим проехали. А то сейчас еще на две страницы писанины будет. |
Flasher wrote: |
Наверно я не так понял. О каких командах и параметрах шла речь? Я представил что-то вроде: |
Code: |
|
Flasher wrote: |
А, ну пока нельзя. Но ты же пишешь, что собираешься так сделать. |
Loopback wrote: |
Честно, такое бы мне только в страшном сне могло присниться - ну зачем может понадобиться несколько команд в одной строке? Строк не хватает? |
Code: |
TerminateProcess Proc1.exe Proc2.exe Proc3.exe |
Flasher wrote: |
Строк-то хватает, TerminateProcess писать везде - не очень. |
Flasher wrote: |
TerminateProcess писать везде - не очень. |
Loopback wrote: |
Давай тогда и остальные команды разбивать на строки |
Quote: |
это же такая неподъемная задача, в каждой строке ShellExec или SetEnv писать |
HA3APET wrote: |
Вот например у известной консольной утилитки nircmdc есть два похожих параметра:
closeprocess killprocess Первый из них корректно завершает процесс и иконка из трея исчезает Второй убивает процесс, в трее иконка остаётся. |
HA3APET wrote: |
Вы ввели два параметра для закрытия - T и TT, так пусть один убивает, а другой пытается закрыть. А пользователь сам выберет, что предпочтительнее с конкретной программой. |
Code: |
ShellExec /TT /W "Camper.exe" "" "%commander_path%\Camper\" |
Code: |
ShellExec /TT /W "AUTOFx.exe" "" "%commander_path%\autofx\" |
Code: |
ShellExec /T /W "Camper.exe" "" "%commander_path%\Camper\" |
Code: |
ShellExec /TT /W "Camper.exe" "" "%commander_path%\Camper\" |
Code: |
ShellExec /TT /W "AUTOFx.exe" "" "%commander_path%\autofx\" |
Code: |
ShellExec "Camper.exe" "" "%commander_path%\Camper\" |
Code: |
ShellExec "Camper.exe" "" "%commander_path%\Camper\" |
Code: |
ShellExec "reg.bat" "" "%commander_path%" |
HA3APET wrote: |
не запускается |
Code: |
ShellExec "%commander_path%\Camper\Camper.exe" "" "%commander_path%\Camper\" |
HA3APET wrote: |
но bat файлы запускаются |
HA3APET wrote: |
но с полным игнорированием команд |
Loopback wrote: |
А разве должен? Нужен же полный путь к файлу, или путь с переменными окружения |
Code: |
ShellExec "Camper.exe" "" "%commander_path%\Camper\" |
Code: |
ShellExec "%commander_path%\Camper\Camper.exe" "" "%commander_path%\Camper\" |
HA3APET wrote: |
До этого работало) привык писать так |
HA3APET wrote: |
Запустилось! Да, теперь именно в такой форме.
Завершается всё исправно. |
HA3APET wrote: |
Осталось вернуть [/SW_HIDE|/SW_SHOWNORMAL|/SW_MINIMIZE|/SW_MAXIMIZE] и дело сделано |
HA3APET wrote: |
Ещё для ShellExec был бы полезен параметр - задержка запуска в секундах. |
Loopback wrote: |
Есть подозрение, что на выходе ShellExecute использует тот же CreateProcess, только предварительно проделывает всякие поисковые операции - по реестру и не только. |
HA3APET wrote: |
Я хочу что бы при открытии на обоих панелях были списки дисков. |
HA3APET wrote: |
Пытаюсь изучить синтаксис TCMC, но пока не понимаю его |
HA3APET wrote: |
Мы говорили про инициализацию виртуальной панели, для этого её нужно открыть при запуске ТС, но при этом у меня было желание что бы при запуске ТС на обоих панелях был Мой компьютер. Задача решена. |
HA3APET wrote: |
Эта утилита от MVV очень интересная, как и другие.. |
MVV wrote: |
TCMC - не моя утилита |
HA3APET wrote: |
Спутал с TCFS) |
Flasher wrote: |
Что надо то было в итоге - открыть плагин Virtual Panel или виртуальную папку "Мой компьютер" при запуске ТС? |
Code: |
%COMMANDER_PATH%\Plugins\wfx\VirtualPanel\VPBatch.exe ^config |
Loopback wrote: |
ScrollTC (Автор - GreIVI)
Дает возможность (при наведении мыши) прокручивать колесиком в текущем окне любой неактивный компонент с полосой прокрутки. |
MVV wrote: |
А зачем запускать такой глобальный инструмент как плагин тотала, не понимаю. |
ask-rus wrote: |
если бы под "окном" имелось в виду только окно TC |
ask-rus wrote: |
В граф. редакторе скроллом меняю масштаб, а он мне полосой прокрутки движет. |
MVV wrote: |
если что, можно добавить окно или класс в исключения |
MVV wrote: |
А зачем запускать такой глобальный инструмент как плагин тотала, не понимаю. |
Flasher wrote: |
Пиши программу, будем решать. |
HA3APET wrote: |
нажали и в ini прописалось нужное для старта плагина, нажали ещё раз - удалилось. |
Flasher wrote: |
А как же нумерация? |
HA3APET wrote: |
Не суть важно каким способом это будет сделано, главное красивый результат. |
HA3APET wrote: |
У нас плагин срабатывает во время старта! |
HA3APET wrote: |
Зачем перезагрузка? |
HA3APET wrote: |
Нажимаем на кнопку вкл\выкл плагина и при следующем запуске ТС плагин срабатывает или не срабатывает. |
Quote: |
Script Unload_autorun
Comment wincmd.ini\Colors\ColorFilter1 Comment wincmd.ini\Searches\Autorun_plugin Set wincmd.ini\Colors\ColorFilter1=0 CloseTC RunTC End Script |
Quote: |
Script Load_autorun
Delete wincmd.ini\Colors\ColorFilter1 Uncomment wincmd.ini\Colors\ColorFilter1 Uncomment wincmd.ini\Searches\Autorun_plugin CloseTC RunTC End Script |
Code: |
ShellExec %COMMANDER_PATH%\Addon\TCFS2\TCFS2.exe "/ei rm1pm" |
Quote: |
rm1pm=move(, , #+1, ) move(, , #-1, ), , rm1pm |
Flasher wrote: |
А нельзя сделать, чтобы регистрировались и разрегистрировались dll и inf файлы при запуске и закрытии ТС соответственно?
Для dll есть LoadLibrary, но она не создаёт ProgID, которые нужны в скриптах. |
Flasher wrote: |
Ещё бы хотелось добавление функции определения статуса админских прав юзера, что бы применять это в If ... Then. |
Loopback wrote: |
Регистрировать можно regsvr32, разве нет? |
Loopback wrote: |
Пока не реализую чего-нибудь вроде секции OnExit, точно нет. |
Loopback wrote: |
Пока можно пользоваться плагином от MVV. |
Loopback wrote: |
А вот это действительно полезное предложение. |
Flasher wrote: |
Без разрегистрации это в autorun не имеет особого смысла. |
Flasher wrote: |
Каким? |
Flasher wrote: |
То тоже действительно полезное, потому что даст портабельность в ряде случаев. |
Loopback wrote: |
http://forum.wincmd.ru/viewpost.php?p=74978 |
Flasher wrote: |
С батником что-то не очень, для меня во всяком случае. Подожду добавки ключа. К тому же это будет более мягкий и юзабильный метод. |
Loopback wrote: |
Достаточно процессу упасть - и в реестре остается мусор. |
Flasher wrote: |
Но с LoadLibrary при падении таких проблем нет. Значит и тут этот момент как-то предусмотреть можно? |
Loopback wrote: |
В этом случае, если делать операции разрегистрации при выгрузке библиотеки, то наверно всё должно разрегистрироваться нормально |
! | Avada: |
Последующий оффтоп отделён сюда. |
Quote: |
Также, плагин имеет несколько предопределенных переменных (констант):
%AUTORUN_OSARCH% - архитектура ОС, где работает тотал. Может быть 32 или 64. %AUTORUN_OSVERSION% - версия ОС где работает тотал. Может принимать значения: WIN_UNKNOWN, WIN_95, WIN_98, WIN_ME, WIN_NT, WIN_2000, WIN_XP, WIN_2003, WIN_VISTA, WIN_2008, WIN_7, WIN_2008R2 %AUTORUN_DESKTOPWIDTH% - ширина экрана. %AUTORUN_DESKTOPHEIGHT% - высота экрана. %AUTORUN_DESKTOPDEPTH% - глубина цвета экрана. %AUTORUN_TCHANDLE% - хэндл окна Total Commander (для использования в скриптах). |
Code: |
SetEnv /EV OSARCH %AUTORUN_OSARCH% |
Code: |
SetEnv /A /EV %AUTORUN_OSARCH% %AUTORUN_OSARCH% |
Quote: |
Должна по идее создаться переменная %32% со значением 32. |
Loopback wrote: |
Я специально не стал их делать переменными окружения, так как более интересно их использовать в условиях, а не напрямую. |
Loopback wrote: |
И да, при создании переменных использовать проценты в имени не нужно (добавлю в документацию). |
Loopback wrote: |
Нет, имя переменной должно быть простой строкой, без других переменных. |
Flasher wrote: |
Вот тут я бы, конечно, поспорил. Напрямую куда больший КПД на выходе имеем (скрипты, сценарии, переходы в рядом лежащие папки). |
Flasher wrote: |
Это системная завязка или чисто плагиновая? |
MVV wrote: |
можно определить реальную переменную, запихав в неё значение виртуальной |
MVV wrote: |
объявлять переменную, используя в имени другие переменные - вообще нонсенс |
Flasher wrote: |
Это системная завязка или чисто плагиновая? |
HA3APET wrote: |
Очень бы хотелось ключик для ShellExec, что бы если программа уже запущена (висит в процессах), она не запускалась. |
LonerD wrote: |
А как её использовать если в ini-файле нет секций? |
LonerD wrote: |
или скажем, нужно прописать определенные параметры в другой тип файлов |
LonerD wrote: |
Мне для работы одной из программ |
Flasher wrote: | ||||
|
Flasher wrote: |
Программа, пишущая в реестр? Может, альтернативу найти с одинарными слешами? |
LonerD wrote: |
пример - Кнопка для Тотала для работы с 7-Zip SFX версии 0.12 |
LonerD wrote: |
Раз сейчас нет такой возможности - то просьба на будущее ввести возможность обработки текстовых файлов (ini,cfg), в которых нет разделения на секции. |
LonerD wrote: |
В данном случае - программа Locate32, в которой портабельность реализована через внесение значений в реестр при запуске программы и последующем их удалении. |
LonerD wrote: |
Плюс иногда нужно внести в реестр конкретные значения пути (относительно папки с установленным Тоталом) для запуска непортабельных программ в режиме портабельности с помощью kIT Portable Launcher. |
LonerD wrote: |
Поддерживается ли в операторах сравнения конъюнкция и дизъюнкция?
If <выражение 1> <оператор> <выражение 2> or <выражение 3> <оператор> <выражение 4> Then |
Quote: |
ShellExec "cmd.exe" '"/c reg export "HKEY_CURRENT_USER\Total Commander" "%commander_path%\Total.reg"' |
Code: |
ShellExec "cmd.exe" "/c reg export HKEY_CURRENT_USER\Total C:\Total.reg" |
Code: |
ShellExec "cmd.exe" "reg export HKEY_CURRENT_USER\Total C:\Total.reg" |
Code: |
ShellExec /SW_MINIMIZE "cmd.exe" '/c "reg export HKEY_CURRENT_USER\Total C:\Total.reg"' |
Code: |
ShellExec /SW_MINIMIZE "cmd.exe" '/c "reg export "HKEY_CURRENT_USER\Total" "%commander_path%\Total.reg""' |
Code: |
ShellExec /SW_MINIMIZE /EV "reg.exe" 'export "HKEY_CURRENT_USER\Total" "%commander_path%\Total.reg"' |
Code: |
ShellExec /EV /SW_HIDE '%ComSpec%' '/c REG EXPORT HKCU\Total "%COMMANDER_PATH%\Total.reg" /y' |
Code: |
ShellExec /EV /SW_HIDE REG 'EXPORT HKCU\Total "%COMMANDER_PATH%\Total.reg" /y' |
MVV wrote: |
чтобы черные окна не так надоедали, можно ставить параметр /SW_MINIMIZE при вызове ShellExec - тогда будет мелькать лишь кнопка на панели задач |
LonerD wrote: |
чтобы не мелькали окошки использовать hidcon |
Code: |
CommandExec /CD "\\\Virtual Panel" |
Code: |
Sleep 50 #или больше |
Code: |
CommandExec /CD:T "\\\Virtual Panel" |
Code: |
ShellExec /SW_HIDE "cmd.exe" '/c "reg export "HKEY_CURRENT_USER\Environment" "%commander_path%\Data\Total.reg""' |
Code: |
SHELLEXECUTEINFO shx; |
MVV wrote: |
как насчет добавления для функции ShellExec параметра /WAIT |
LonerD wrote: |
А существует ли тогда рестрартер, который полностью выгружает Тотал, а потом запускает его? Или же этого невозможно добиться в силу того, что рестартер как таковой запускается из-под Тотала? |
Quote: |
И вообще, что значит "полностью выгружает"? |
Code: |
По пунктам. |
LonerD wrote: | ||
|
LonerD wrote: |
Не знаю. Но при перезапуске - что утилитами, что скриптом, - переменные остаются. Получается, что-то не даёт им полностью выгрузиться/удалиться. |
Code: |
Открыть Autorun.cfg и удалить добавленную строку. |
Code: |
А теперь закрыть Тотал полностью и открыть его снова. Переменной уже нету. |
LonerD wrote: |
Переменные окружения не умеют выгружаться/удаляться сами по себе. При запуске программы ей по наследству переходят все переменные окружения, которые были в запускающей программе. |
LonerD wrote: |
Или же этого невозможно добиться в силу того, что рестартер как таковой запускается из-под Тотала? |
Code: |
:starter_unload |
ApceH wrote: |
А если один и тот же ТС, то нужно учитывать родственные связи. Мне такие средства неизвестны. |
Quote: |
Если речь идёт о разных ТС/сборках, то опять же, нужно убивать либо по пути |
Quote: |
Можно легко научить батник не запускать и не убивать программы, если запущено более одной копии тотала... |
Code: |
@echo off |
Code: |
SetEnv /A /EV PATH ;%COMMANDER_PATH% |
LonerD wrote: |
А как поведёт себя код если запустить #1, потом #2, закрыть вначале #2, а затем #1 ? |
Code: |
MIME-Version: 1.0 |
Code: |
[Load] |
Code: |
[Load] |
Quote: |
Можно вообще без значения. Если в ini появилось слово Deactivate на какой-то строке, то отключать выполнение команды. |
MVV wrote: |
Если в конфиге некоторый параметр равен 0, скрипты не будут ничего делать. |
MVV wrote: |
В INI нет понятия строки. Есть понятия секции и ключа в секции. |
Quote: |
Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему. |
MVV wrote: |
Я так понял, что у тебя нет средств для работы с INI-файлами, а у меня нет никакого желания читать файл вручную и искать там последнюю строку. |
MVV wrote: |
Не вижу ничего плохого в том, что скрипт запустится, но ничего не сделает. Окон он не создает, просто втихаря завершится. Зато имеем универсальность. |
MVV wrote: |
Тебе всего-то надо перед перезапуском поставить где-либо (полная свобода действий) флаг перезапуска, в Unload-скрипте при наличии этого флага ничего не делать, а в Load-скрипте при его наличии также ничего не делать, но снимать его. |
Flasher wrote: |
Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему. |
MVV wrote: |
Не дело это - смешивать кучу способов работы с одним файлом. |
MVV wrote: |
Кстати, если ты умеешь передавать параметры скриптам, то скрипт может быть и один, просто с разными параметрами для загрузки и выгрузки. |
Quote: |
О какой куче и каком файле речь? |
Code: |
If WScript.Arguments.Count > 0 Then |
Code: |
[Load] |
MVV wrote: |
Речь о том, что если файл является INI-файлом, читать и писать его, как текстовый, не совсем корректно. |
MVV wrote: |
Можно даже не писать ничего никуда, просто создай в папке плагина или вообще во временной папке пустой файл с именем вида $tc_restarting$, а после завершения рестарта удаляй. Имя логичное и понятное, и проверять наличие флага проще, чем читать файл. |
MVV wrote: |
А завести скрипты загрузки и выгрузки в один файл считаю вполне разумным - они ведь делают симметричные вещи: |
MVV wrote: |
С текстовым ты и сам без проблем справишься из скрипта)) |
MVV wrote: |
Одна часть скрипта загружает фоновые программы, другая - выгружает, и т.п., всё на виду. |
HA3APET wrote: |
Очень бы хотелось ключик для ShellExec, что бы если программа уже запущена (висит в процессах), она не запускалась. |
LonerD wrote: |
Раз сейчас нет такой возможности - то просьба на будущее ввести возможность обработки текстовых файлов (ini,cfg), в которых нет разделения на секции. |
LonerD wrote: |
Поддерживается ли в операторах сравнения конъюнкция и дизъюнкция? |
LonerD wrote: |
Просьба включить в следующую версию переменную, определяющую язык запущенной ОС. |
MVV wrote: |
Кстати, Loopback, как насчет добавления для функции ShellExec параметра /WAIT, позволяющего дождаться выполнения задачи перед выполнением следующей команды автозапуска? |
Flasher wrote: |
Я бы вообще ожидание по умолчанию сделал без всяких ключей. |
MVV wrote: |
Тогда добавить флаг /NOWAIT. |
Quote: |
Можно подумать. Только в каком виде должно быть представление? Дело в том, что из системы нельзя получить напрямую коды языков в том виде, как принято в TC (RUS, DEU и т.д.). |
Quote: |
А другие запускают различные резиденты... Так что если уж делать, то пусть лучше /WAIT. |
MVV wrote: |
Можно в отдельном плагине сделать функцию, которая будет возвращать число (или строковое представление числа). А брать это число из функции типа GetUserDefaultLCID. |
MVV wrote: |
А можно сделать оба, и опцию, задающую поведение по умолчанию. |
Quote: |
Ну уж нет, я лучше тогда две разные команды сделаю - типа ShellExecute и ShellExecuteWait |
Loopback wrote: |
+ команда LoadFont |
Loopback wrote: |
Поддержка x64 предположительно будет в следующей бете. |
ask-rus wrote: |
А разве этой команды не было ранее? |
Loopback wrote: | ||
Вопрос "обработки" произвольных файлов слишком обширен. Что понимается под обработкой? Вставить после определенной строки или вставить по заданному смещению в файле? Вставить с замещением или нет? Файл бинарный или текстовый? Если текстовый, то какая кодировка файла? Одной-двумя командами всё многообразие действий над файлами не покроешь. В общем, такие задачи все же лучше решать полноценным скриптовым языком. |
Loopback wrote: | ||
Нет. Может быть в будущем, но не в этой версии точно. |
LonerD wrote: |
существует какая-то миниатюрная консольная утилитка, которая может осуществлять описанные не особо сложные действия с произвольными (или хотя бы текстовыми) файлами? |
LonerD wrote: |
Например, реализовать такие операции. |
LonerD wrote: |
Как это нет? В теме уже писали - поддерживается, только нужно брать выражения в скобки. Я тоже проверил - вроде работает. |
MVV wrote: |
Всё-таки стоит добавить константу %AUTORUN_TCARCH%, которая будет в 32-битном плагине возвращать 32, а в 64-битном - 64. |
MVV wrote: |
В диалоге копирования надо чуть больше делать высоту окна - при сравнении 32-битной и 64-битной пространство под кнопками в 32-битной чуть больше. |
MVV wrote: |
А что с координатами у тебя, не понимаю, WinScan показывает абсолютно одинаковые координаты (и экранные, и клиентские) для обеих версий. |
Flasher wrote: |
Autorun_MoveButton.dll - 14 Кб
MoveButton.dll - 34,5 Кб |
MVV wrote: |
Ну дельфя даёт, поместить в секцию импорта 3 модуля kernel32.dll, каждый со своими функциями, часть повторяется. |
Loopback wrote: |
Нужно использовать бОльший файл. |
Code: |
Error in command at line [9]: |
Flasher wrote: |
Больший из приведённых или меньший из новых для 32-бит? |
MVV wrote: |
Ресурсов теперь не едят вообще. |
Loopback wrote: |
Выложенные файлы - только для новой (1.6 бета 1) версии Autorun. |
Flasher wrote: |
Теперь там буква A. Заработало после переустановки шаблона: Autorun_plugin=autorun.A > 0 |
MVV wrote: |
При этом копирую новый с автопереименованием существующих, потом после перезапуска тотала переименованный старый можно удалить. |
MVV wrote: |
Но т.к. тотал подгружает его автоматом при любом обновлении панелей, проще скопировать с переименованием существующего. |
Flasher wrote: |
А если убрать автообновление? |
MVV wrote: |
я только знаю, что тотал, как только ему надо покрасить файлы в папке, загружает плагин |
Flasher wrote: |
А autorun.wdx разве не переписывался раньше на автомате? |
Flasher wrote: | ||
|
Flasher wrote: |
Штука очень нужная, особенно когда вызываешь TC с параметром /O. |
История бета-версий wrote: |
1.7
Выпущена первая релиз-версия. 1.9 Добавлено: Подмена сообщений колеса мыши на сообщения полос прокрутки. Добавлено: Прокрутка в неактивной панели быстрого просмотра с плагином ICLView в режиме просмотра значков. Добавлено: Нелинейное ускорение. 1.9.1 Добавлено: Переделан алгоритм ускорения. Скорость увеличивается/уменьшается с увеличением/уменьшением амплитуды прокручивания. 1.9.4 Добавлено: Прокрутка останавливается обратным вращением колеса. Добавлено: Увеличен максимум для ускорения. Добавлено: Возможность прокручивать горизонтально при наведении курсора на горизонтальную полосу прокрутки. Добавлено: Ускорение запоминается и сбрасывается только при переходе на новое окно. Добавлено: Остановка прокрутки возможна как изменением направления, так и ЛКМ, СКМ, ПКМ, пробелом и Tab`ом без потери функционала самих клавиш. Добавлено: Улучшен алгоритм ускорения: при наборе скорости не происходило замедление при более медленной прокрутке. 1.9.6 Добавлено: Остановка прокрутки возможна вызовом любой клавиши и любой из 5-ти кнопок мыши. Исправлено: Скорость доведена до комфортных рамок. Исправлено: Скорость не сбрасывалась при паузах. 1.10 Добавлено: Прокрутка блоками из нескольких строк в ТС и некоторых окнах со стандартными контролами. 1.11 Добавлено: Появился файл конфигурации. Ключ SpeedMoreCount. Исправлено: Циклическое пошаговое вращение. 1.12 Добавлено: Прокрутка в диалоге dxdiag.exe - вкладка "Ввод" > поле "установленные драйверы" при раскрытом дереве. Добавлено: Прокрутка в диалоге "Переменные среды" ( rundll32 sysdm.cpl, EditEnvironmentVariables ) > поле "системные переменные". 1.13 Добавлено: Ключ IgnorCount: задаёт сумму щелчков, блокируемых в начале вращения после первого щелчка. Этот ключ позволяет при мелких сдвигах колеса не прокручивать список более, чем на заданное число позиций. Рекомендуемые значения: 1, 2, 3. 1.14 Добавлено: Горизонтальная прокрутка может осуществляться без подвода к полосе, а лишь при удержании левой клавиши Win. Ключ в ini: WinMod (0/1) 1.15 Добавлено: Прокрутка в файлах справки chm на вкладке "Указатель". Добавлено: Горизонтальная прокрутка в Acrobat Reader работает без подвода к полосе прокрутки. Добавлено: Скорость горизонтальной прокрутки увеличена вдвое. Добавлено: Горизонтальная прокрутка в браузерах на движке IE. Добавлено: Горизонтальная прокрутка в браузерах на движке Chromium. 1.16 Исправлено: В некоторых случаях фокус при прокрутке активировал чужие окна. Исправлено: Иногда останавливается работа в Windows 7. Создан механизм переустановки слетевших хуков. 1.17 Добавлено: Горизонтальная прокрутка в браузере Opera также при использовании модификатора LWin. Добавлено: Горизонтальная прокрутка в браузерах на движке Gecko. Исправлено: Прокрутка приостанавливалась на всплывающих подсказках. 1.18 Добавлено: Вертикальная прокрутка в утилите AVSearch в области отображения содержимого найденных файлов. Добавлено: Вертикальная прокрутка в редакторе FXEDIT при подводе к полосе. Исправлено: Уменьшена вероятность неотработки плагина (слетания хука). Добавлено: Функционал допуска прокрутки в некоторых системных окнах. Добавлено: Прокрутка в Rootkit Unhooker LE на Windows XP при установке фокуса в рабочем поле. 1.19 Добавлено: Прокрутка в непомещающихся по высоте меню со стрелками. Примеры: 1) В настройках TC на странице "Разное" в секции "Переопределять горячие клавиши" кнопка со стрелкой. 2) Инструмент "Групповое переименование" > кнопка "[=?] Плагин" либо диалог "Настройка наборов колонок > кнопка [+]. Из плагинов наиболее актуальны: ShellDetails, Exif, Jpg-Comment, DecID3WDX. 3) Утилита Camper > вкладка "Редактор" > нижняя кнопка [+] > пункты "La_Control", "TC_CONTROL". 1.20 Добавлено: Супер-ускорение в меню со стрелками! Меню с ShellDetails прокручивает за 5-6 секунд !!! Исправлено: Если в плагине TwinKey были назначены несимвольные клавиши с модификатором LWin, то после его отпускания и нажатия этих клавиш выполнялись соответствующие команды. Добавлено: Экспериментальный ключ ForceSlow. Назначение - ускорить прокрутку в окнах, где она очень медленная. Добавлено: Горизонтальная прокрутка при удержании правой кнопки мыши (ключ RBMod(0/1)) после начала прокрутки в заданном промежутке, значении ключа RBTimeout. 1.21 Исправлено: Функция ForceSlow заменена на встроенное правило для нестандартной обработки. Добавлено: Ключ StopCurOnArrow (0/1). Переключает режим позиционирования курсора в меню, не вмещающихся по высоте в экран, с места подвода к одной из стрелок. Введён на случай того, чтобы прокрутка не спотыкалась на открываниях подменю. Добавлено: Блокировка случайного нажатия средней кнопки мыши (колеса) во время прокрутки. 1.22 Добавлено: Конфигуратор настройки плагина. Добавлено: Настройки для конкретных окон (учёт наклона колеса мыши). 1.23 Добавлено: Прокрутка TagScanner в этом меню. Добавлено: Прокрутка рабочей области в FXEDIT с модификатором LWin. Добавлено: Прокрутка в Keyboard and Mouse Button Odometer. Добавлено: Конфигуратор: переходы по Ctrl+Tab, шлифовка названий пунктов. Исправлено: Переделан алгоритм ускорения с целью уменьшения рывков в некоторых окнах. Исправлено: Проблемы предыдущей версии с прокруткой в браузерах на Gecko и IE. Важно! Возникшая проблема с неотработкой клавиш в TwinKey с модификатором LWin при его отпускании, когда окно TC теряет фокус, с открытием меню "Пуск" решается переводом TwinKey на первую позицию в цветовых схемах. Очень актуально для Windows 7. 1.24 Добавлено: Горизонтальная прокрутка при удержании Caps Lock (опционально). Добавлено: Горизонтальная прокрутка в диалогах проводника Windows 7. Примеры вызовов: shell:::{E95A4861-D57A-4be1-AD0F-35267E261739} shell:::{D20EA4E1-3957-11d2-A40B-0C5020524153} shell:::{031E4825-7B94-4dc3-B131-E946B44C8 DD5} Добавлено: любая прокрутка в программе avz. 1.25 Исправлено: Не работала ранее реализуемая прокрутка в некоторых окнах. Исправлено: Проблемы с замедлением горизонтальной прокрутки в обратном направлении в браузерах IE. Исправлено: Для прокрутки в Gecko-окнах по умолчанию добавлен класс MozillaWindowClass. Добавлено: Прокрутка в программе Revo Uninstaller в последних диалогах (2 снизу). 1.26 Добавлено: Прокрутка в MS Exel 2007 в любой из 2-х панелей с документами в одном окне. Добавлено: Прокрутка меню, создаваемых в панели задач. Исправлено: Улучшен алгоритм определения окон и скроллбаров. 1.27 Добавлено: Альтернативная функция временной передачи фокуса окну (опционально для окон). Добавлено: Усовершенствован Конфигуратор. Добавлена отладочная функция в окне, вызываемом по кнопке "Добавить". Добавлено: Прокрутка в диалоге "Значки области уведомлений" ( shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9} ) в Windows 7 при активации окна. Для прокрутки выпадающих списков в этом окне требуется установить опцию "Временно передавать фокус окну". 1.28 Добавлено: Горизонтальная прокрутка в приложениях MSOffice 2007/2010. Исправлено: Завышенная нагрузка на процессор при поиске окон и скроллбаров. 1.29 Исправлено: При вызове панели инструментов в виде меню, клике правой кнопки мыши на нужном элементе вместо открытия контекстного меню происходил запуск аналогично как при нажатии левой кнопки. 1.30 Добавлено: Опция "Отключить любую обработку в этом окне". |
MVV wrote: |
Видимо, какая-то программа запускается с каталогом плагина в роли рабочего каталога. Переименовывать каталоги, дескрипторы которых используются в какой бы то ни было программе, невозможно до закрытия всех этих дескрипторов. Попробуй задавать явно рабочий каталог каждой запускаемой из плагина программе. |
Flasher wrote: |
Что-то по ScrollTC все молчат... Неужели никто не пользуется?
LonerD, какие дела по старой проблеме? |
LonerD wrote: |
В остальном - не айс. |
LonerD wrote: |
Утилитка зачем-то перехватывает все процессы, прокрутка в других программах становится медленной, также перехватываются горизонтальные-вертикальные прокрутки, программы надо вносить в исключения |
LonerD wrote: |
тот же Excell - зачем??? по дефолту сделан с горизонтальной прокруткой |
LonerD wrote: |
поставил для процесса Notepad++ скорость прокрутки 9, но прокручивается гораздо медленней, чем без ScrollTC |
LonerD wrote: |
Разницы в скорости между 3.0 и 2.0 - не заметил, как по мне примерно одинакова и недостаточна. |
LonerD wrote: |
Совершенно не понятно почему до сих пор не реализована просто-напросто глобальная установка скорости прокрутки для всех приложений. |
LonerD wrote: |
А вообще - лучше бы не вылезала за пределы TC, и управляла только прокруткой в нём. |
Quote: |
Насчёт медленной прокрутки ещё будет разговор |
Quote: |
Зачем - см. историю бета-версий. |
Quote: |
Ну, вот видишь, значит, разумно управлять любыми окнами. |
Quote: |
Таких нет. Есть 1.20, 1.30. |
LonerD wrote: |
Похоже, утилитка пытается блокировать работу драйверов и навязывает свои порядки. |
LonerD wrote: |
Нашёл фразу |
Quote: |
Прокрутка в MS Exel 2007 в любой из 2-х панелей с документами в одном окне. |
LonerD wrote: |
И добавлять их ВСЕ в список исключений - муторное занятие. |
LonerD wrote: |
В названиях скачиваемых архивов нет цифры 1 |
Quote: | ||
LonerD wrote:
Потому что контролы у приложений могут быть разные, там свои завязки. |
Quote: |
и ниже предлагаемую версию для скачивания. |
LonerD wrote: |
Почему бы не сделать и в программе возможность увеличивать-уменьшать скорость прокрутки глобально? |
LonerD wrote: |
Так у неё скорость примерно такая же, как и у последней. |
Quote: |
Список приложений выдай, пожалуйста, чтобы хотя бы иметь представление, что это за "все", и сколько их на самом деле. |
Flasher wrote: | ||
|
LonerD wrote: |
Из открытого сейчас - Opera, MS Word, MSExcell, Notepad++. Закрыл Тотал - скорость прокрутки значительно увеличилась. |
LonerD wrote: |
Повторяю - для себя я бы оставил обработку только TC (потому как медленней, зато не заметно мерцание TwinKey). |
LonerD wrote: |
Э-мм. А почему утилитка тогда называется ScrollTC? |
LonerD wrote: |
23 секунды - прокрутка при включенном TwinKey |
Quote: |
Пробуй опции "Минимальный шаг прокрутки" и "Шаг прокрутки вычисляется программой". Доложи о результатах. |
Quote: |
Не понял, как прокрутка могла увеличиться от включённого TwinKey?
Режим просмотра не назвал. |
Quote: |
Видимо, у нас драйвера слишком по разному работают. |
LonerD wrote: |
В Excel, Word и Опере к тому же не работает прокрутка страницы целиком (в Notepad++ - работает). |
LonerD wrote: |
А скорость - да, при включённом TwinKey у меня и раньше увеличивалась. |
LonerD wrote: |
Так потому ж я и завёл речь - в драйверах можно хотя бы глобально изменить скорость прокрутки, а при запущенном плагине - нельзя нигде даже подрегулировать под желаемую скорость. |
Flasher wrote: |
А на скорость в Опере, насколько я помню, ScrollTC вообще не влияет. У меня там одинакого быстро бегает и при включённом ТС и при выключенном. "Страница целиком" - это насчёт опции? |
Flasher wrote: |
Ну вот и написал бы там об этом, а то взял и положил своим "фи" на всю многотонную работу. Может, с драйверами решаемо. Многого лишишься ведь, если работать только в ТС будет. |
Flasher wrote: |
Чудеса. У меня раньше только падала. На это даже жалобы были. |
Flasher wrote: |
В общем, если есть резон работать в ТС, то можно ещё испробовать одну из старых версий 1.9.4-1.10 |
LonerD wrote: |
Точно в Офисе, Notepad++, QIP - скорость прокрутки заметно изменяется.
"Страница целиком" - да, это насчёт опции в ScrollTC. |
LonerD wrote: |
Я ни в коем случае не ложил фи Smile
Я сетую на отсутствие гибкости. |
LonerD wrote: |
Хошь-не хошь, а перехватываются многие приложения. И это нельзя ни отключить ни перенастроить глобально |
LonerD wrote: |
и то не особо-то исправляется |
LonerD wrote: |
Работа с TwinKey была исправлена только только в 1.20, в более ранних версиях прокрутку мышью невозможно было остановить мгновенно. |
Quote: |
раз просишь включение только в TC |
Quote: |
Уверен? Там совсем другая проблема решалась. Уже с версии 1.96 можно останавливать по любой клавише/кнопке. См. историю |
LonerD wrote: |
Опционально. Мне, например, достаточно только в Тотале (плюс ещё может в нескольких программах, но не во всех, а только в тех, которые я задам вручную). |
LonerD wrote: |
В версии 1.19 - при активном TwinKey и быстрой прокрутке невозможно стандартно быстро остановить прокрутку. В версии 1.20 - уже можно. |
Quote: |
Если опционально, то уже другие и нельзя будет подключать. |
Flasher wrote: |
диалогах, проводнике и программах, к которым нельзя подстраивать опции для окон |
MVV wrote: |
Loopback, так что, скоро мир увидит Autorun.wdx с псевдо-переменной AUTORUN_TCARCH? |
LonerD wrote: |
Попробовал, дело в плагинах (или в новом способе подгрузки плагинов плагином Autorun). |
Loopback wrote: | ||
Да хоть сейчас. Только ничего нового там больше нет. Версия 1.6 beta 2: Скачать |
Quote: |
В принципе, сама по себе невозможность переименования каталога с загруженным плагином не является багом. |
LonerD wrote: |
Это считается ошибкой, будет исправляться? |
Code: |
If %AUTORUN_TCARCH% == 32 Then |
MVV wrote: | ||
|
MVV wrote: |
Считаю это целесообразным (позволяет запускать экзешник тотала юзеркомандами независимо от разрядности тотала). Заодно будет пример использования условного блока. |
Flasher wrote: |
Не вижу этого файла в TC8 32 bit, а также в более ранних версиях. Тогда пример нужно закомментировать и написать условие применения. Хотя там таких примеров можно массу написать. Лучше уж в Ридми. |
tbeu wrote: | ||
There are some typos in the English translation
|
MVV wrote: |
Плагин написать надо, чтобы позволял делать проверку на запущенность процесса. В ShellExec такой функции действительно не место. |
Flasher wrote: |
Если не место, то как этот плагин будет взаимодейтсвовать с ShellExec, с помощью которого запускается программа/скрипт? |
Flasher wrote: |
А что писать в ProcessExists? |
Flasher wrote: |
А нам не во всех случаях нужно, допустим, учитывать процессы копий. |
Flasher wrote: |
Если указывать путь, то нужно бы сделать так, чтобы не делать это дважды, т.е. в обеих командах ProcessExists/ShellExec. |
Loopback wrote: |
Не понял. |
Loopback wrote: |
Если что - есть переменные. |
Flasher wrote: | ||
|
Flasher wrote: |
если другая копия TC уже запущена, то копию программы открывать надо |
MVV wrote: |
В предложении, которое начинается с "Нам нужно", оно не фигурирует |
MVV wrote: |
может быть вынесено во внешний условный блок |
LonerD wrote: |
Я тут встряну в диалог и напомню о своей ошибке с закрыванием Тотала 1.6 беты если в настройках прописан запуск программ ShellExec /TT /W. |
LonerD wrote: |
в случае если указанный ехе файл не существует. |
Quote: |
а зачем задавать рабочую папку, если путь к файлу и так указан? |
Quote: |
Вовсе необязательно напоминать об этом на каждой странице |
Quote: |
Попробуй эту версию. |
LonerD wrote: |
Подумал - может найденный баг с несуществующими путями поможет добраться до сути ошибки. |
LonerD wrote: |
Зато появилась новая - Тотал схлопывается при нажатии Shift+вверх. |
Quote: |
Не могу повторить. |
LonerD wrote: |
Я чего-то опять перемудрил у себя или в версиях 1.5-1.6 действительно отвалились пользовательские команды? |
Code: |
5=Missing closing quote for string: %s |
Code: |
16=Library has no such function: %s |
Code: |
18=Operator is not applicable here: %s |
LonerD wrote: |
Просьба добавить в плагин ключ, который проверяет - запущена ли уже заданная программа, и если процесс висит в памяти (то есть программа уже запущена) - не пытаться запускать её снова (и в то же время не пытаться убивать этот запущенный процесс при выходе из Тотала если задан ключ ТТ). |
Quote: |
Повторяемся? |
LonerD wrote: |
Скорее напоминаем, более подробно сформулировав пожелание. |
LonerD wrote: |
Пробую:
LoadFont /N "%commander_path%\Install\1.ttf" |
Quote: |
А /EV где? |
Quote: |
Ты там по моей ссылке ходил, ответ автора касаемо добавления ключей читал? |
Quote: |
Тогда пиши путь относительно папки плагина. |
Code: |
If %AUTORUN_OSVERSION% == WIN_XP Then |
LonerD wrote: |
вообще не добавляет переменную. |
Quote: |
См. как в ридми. |
Quote: |
---------------------------
wdx_autorun_1.6_beta4.zip --------------------------- Этот архив содержит следующий плагин/аддон для Total Commander: Total Commander. ****** , . , ! Вы хотите установить его? --------------------------- Да Нет --------------------------- |
LonerD wrote: |
Loopback
Теперь нормально отрабатывает. Спасибо. А WIN_8 ещё не поддерживается? (в документации нету упоминания). |
Loopback wrote: |
Не понял в чем проблема. |
KopBuH wrote: |
вот бы еще проверку ServicePack'а прикрутили |
KopBuH wrote: |
есть еще одна вещь, которую хотелось бы видеть в плагине:
это переменная с PID текущего процесса TotalCmd.exe. |
Loopback wrote: |
Можно, по аналогии с AUTORUN_TCHANDLE. |
MVV wrote: |
Думаю, пора уже выносить эту кучу псевдопеременных в подплагин, чтобы не надо было каждый раз обновлять сам плагин, чтобы добавить новую или исправить имеющиеся... Там их, кстати, можно даже сделать обычными переменными окружения, с которыми потом можно будет работать далее. |
MVV wrote: |
И вообще, не надо плодить псевдопеременные. К псевдопеременным нужно прибегать только в случае, когда они возвращают различное значение в зависимости от определенных условий (например, случайное число - каждый раз новое значение). Если же значение переменной неизменно (версия винды, например - она явно не изменится, пока тотал запущен), спокойно можно добавить её как обычную переменную окружения, головной боли в разы меньше. |
MVV wrote: |
А насчёт AUTORUN_OSVERSION - надо сделать, чтобы переменная возвращала числовое значение версии, если не может его опознать (например, 6.2W для рабочей станции, или 6.2S для серверной). Тогда этим можно будет пользоваться на неизвестных версиях винды (глядишь, через годик Windows 9 выпустят... сейчас мода пошла на накрутку номеров версий). |
Code: |
[Configuration] |
MVV wrote: |
Откуда же плагин может знать, с какой целью запущен тотал? |
KopBuH wrote: |
заметил еще такой глюк: |
Code: |
|
Code: |
|
Loopback wrote: |
+ возможность выполнения действий при закрытии TC |
Code: |
ShellExec %COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe /ef "set_tcini(TCFS2, Bar, 1)" |
Quote: |
ShellExec "%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe" "/ef set_tcini(TCFS2,Bar,1)" |
Flasher wrote: |
Замечания очевидны: |
Quote: |
ShellExec "%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe" "/ef "set_tcini(TCFS2,Bar,1)"" |
Quote: |
Если в параметре команды должен использоваться пробел, оберните параметр в кавычки - двойные или одинарные. При этом кавычки другого типа могут быть использованы в тексте параметра. Смешанные кавычки в тексте не поддерживаются. |
Code: |
ShellExec '%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe' '/ef "set_tcini(TCFS2,Bar,1)"' |
Code: |
ShellExec /SW_HIDE /EV "reg.exe" 'export "HKEY_CURRENT_USER\Environment" "%commander_path%\Data\Total.reg"' |
Code: |
ShellExec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" "/d=0 /ei run redraw" |
MVV wrote: |
вдруг случайно поставишь пробел |
Code: |
IniWrite /EV %COMMANDER_INI% TCFS2 Bar 1 |
Code: |
- исправлены неправильные номера строк в сообщениях об ошибках |
Code: |
IniRead RemoteAdminName "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminName" "Администратор" |
Code: |
[RemoteAdministration] |
Code: |
IniRead RemoteAdminName "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminName" "%USERNAME%" |
! | Avada: |
Неформатные картинки заменены ссылками, текст преобразован в код. Читаем правила форума и впредь проверяем через предварительный просмотр результаты внедрения картинок. Также прошу обратить внимание, как на форуме принято оформлять фрагменты кода. И заодно отмечу, что читать посты при использовании в начале фраз заглавных букв значительно приятнее. |
Code: |
|
Flasher wrote: |
KopBuH
RemoteAdminName - это не внутренняя переменная, её заключать в % не надо. И, кстати, кавычки в командах вообще не нужны. |
Code: |
IniRead RemoteAdminName "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminName" "Администратор" |
Code: |
IniRead RemoteAdminName "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminName" "Администратор" |
Loopback wrote: |
KopBuH
Если ключ есть - он есть, неважно, какое у него значение. В данном случае есть ключ с пустым значением, следовательно, считываться должно оно. |
Loopback wrote: |
Другое дело, что функция SetEnv не позволяет создавать переменные с пустым значением, поскольку Windows не допускает создания пустых переменных окружения. |
KopBuH wrote: |
а можно сделать, что если значение пустое, то переменная создавалась со значением по умолчанию, а не с именем самой переменной?. |
KopBuH wrote: |
а можно в таком сравнении, которое вы указали выше, вместо конкретного "Администратор" использовать глобальную переменную, например %USERNAME%? |
KopBuH wrote: |
или все таки я не прав? |
Flasher wrote: |
Loopback
Так в SetEnv читаем или устанавливаем? |
Loopback wrote: |
KopBuH
Flasher Насчет переменных правила просты: если переменная устанавливается (Set, SetEnv, IniRead), то ее имя пишется без %, во всех остальных местах, т.е. там где она читается - % обязательны. |
KopBuH wrote: |
насколько знаю, читаем внутреннею переменную, а устанавливаем переменную окружения (внешнюю).
если оставить без %, то получишь просто текст, а не содержание переменной. просто уже не стал спорить с Flasher |
Code: |
Set Ren "Переменная окружения" |
Flasher wrote: |
Так в SetEnv читаем или устанавливаем? |
Flasher wrote: |
записывается тот же текст %Ren%. И чего тут спорить? |
ask-rus wrote: |
Есть ли способ выгрузить эти шрифты? |
Loopback wrote: |
Есть - я же их выгружаю при завершении работы плагина. |
Quote: |
Значит, cm_UnloadPlugins должна помочь. |
MVV wrote: |
Вроде добавляли защиту от выгрузки, по идее не должен. |
Quote: |
С выгрузкой по команде шрифт файл. панелей сбрасывается на один из стандартных Windows. |
Code: |
|
Loopback wrote: |
Вроде на данном этапе все хотелки учел? |
Flasher wrote: |
Была ещё старая тема по закрытию запущенных из плагина процессов при закрытии ТС. |
Flasher wrote: |
Ещё такое было пожелание. |
Flasher wrote: |
И можно ещё FolderExist, раз FileExist есть? |
Loopback wrote: |
Не понял, а ShellExec с ключом /T разве это не делает? |
Loopback wrote: |
Так теперь можно выполнять действия на выходе. |
Flasher wrote: |
А, пардон, не из плагина, а вообще любые, включая отдельные скрипты, вызванные через интерпретатор. |
Flasher wrote: |
Где? Не могу найти такой команды.
Можно пару примеров с dll/inf/скриптом? |
Code: |
|
Loopback wrote: |
ProcessTerminate. Нужно подключить плагин Process. |
Loopback wrote: |
Все есть в справке. Секция "на выходе" отделяется от основной директивой #FinalizeSection. |
Flasher wrote: |
Только в справке это располагается в разделе "Планы", |
Flasher wrote: |
Получается плагин будет начинать поиск с решётки? Может, стоит взять другой символ, чтобы не проверять строки комментариев? |
Loopback wrote: |
Впрочем, вполне можно было и не заметить. |
Quote: |
Стандартный таймаут ожаидания (дважды)
имя библиотеки с раСширением "dll" (отсутствие С) |
Quote: |
При этом кавычки другого типа могут быть использованы в тексте параметра. Если нужно использовать в тексте кавычки обоих типов, то кавычки того типа, с которых начинается параметр, в тексте должны быть задвоены. Пример: "этот ""текст"" в кавычках" |
Loopback wrote: |
которую нужно найти до выполнения скрипта |
MVV wrote: |
WaitForTermination, WaitForExit или типа того |
Flasher wrote: |
Историю и Планы стоит сместить вниз для удобства перехода к основному описанию. |
Flasher wrote: |
Не очень понятно, что понимается под использованием кавычек в тексте параметра. |
Flasher wrote: |
Вот я и пишу про поиск. Фильтрация-то начинается с первого символа - решётки. |
MVV wrote: |
Думаю, комментарии лучше не трогать. Для директив можно завести функцию типа Pragma, которой в параметре указывать саму директиву. И парсить легко, и подсветку синтаксиса можно сделать для выделения таких строк, скажем, красным цветом, и не путать их с комментариями. |
Lingvo wrote: |
pragma
указание транслятору, псевдокомментарий |
Loopback wrote: |
$ например? |
MVV wrote: |
По-моему, очень даже в точку. |
MVV wrote: |
А делать лучше сразу так, чтобы потом не пришлось переделывать. |
Flasher wrote: |
А можно прояснить момент с последовательным запуском процессов по ShellExec? |
Quote: |
Ну, наверно технический словарь. В обычном оно не переводится. Ладно, подумаю. |
Quote: |
На раннем этапе обычно никогда не удается спланировать всё идеально. А сейчас уже приходится подгонять под имеющиеся реалии. Если посмотреть, то AutorunBlockUnload как раз бы хорошо смотрелся директивой. |
Flasher wrote: |
Мм.. Т.е. сам плагин отследить этот момент не может? Только в виде такой задержки? |
Code: |
|
Code: |
Pragma AutorunFinalizeSection |
Code: |
ShellExec /EV '%COMMANDER_PATH%\Macroses\cc.exe' '-e -v -r -s -K "%USERNAME%" "%commander_path%\Web.ini"' |
MVV wrote: | ||
А так?
Вся строка параметров должна быть заключена в кавычки, всё это прописано в Readme. |
KopBuH wrote: |
Можно сделать встроенную переменную с SID текущего пользователя, из под которого запущен TC? |
Loopback wrote: |
А для чего, если не секрет? |
KopBuH wrote: |
еще вопрос. можно ли сделать внутреннею переменную для отображения текущего языка ТС?. (COMMANDER_LANG например)
я реализовал функцию вручную через конфиг, но есть минус: нужен перезапуск плагина для обновления переменной, можно сделать чтобы при переключении языка в ТС плагин автоматически менял значение переменной? |
Loopback wrote: |
KopBuH
MVV прав: я не могу изменить переменную окружения после того, как скрипт уже отработал. |
Avada wrote: | ||
KopBuH
|
Code: |
# Проверка языкового файла |
KopBuH wrote: |
чтобы иметь возможность запускать разные версии программ в зависимости от языка самого ТС. |
KopBuH wrote: |
сейчас я это реализовал так: |
Quote: |
для русской версии - русские тулбары. для английской - английские.
сейчас я это реализовал так |
LonerD wrote: |
Вот так и есть самый лучший вариант. |
Flasher wrote: |
MVV
А там всего 2 языка до Else.. |
Code: |
IniRead "Commander_LangIni" "%COMMANDER_PATH%\wincmd.ini" "Configuration" "LanguageIni" "" |
KopBuH wrote: |
хотите добавлять языки, добавляйте вручную |
Code: |
IniRead COMMANDER_LANGINI %COMMANDER_INI% Configuration LanguageIni False |
Avada wrote: | ||
|
Flasher wrote: |
А должно быть по идее так: |
Flasher wrote: |
Я вижу смысл только в случае использования переменной в скриптах, где сообщения будут выводиться на соответствующем текущему языке. |
Loopback wrote: |
IniRead получает дефолтное значение только в случае отсутствия ключа файле. |
Loopback wrote: |
Поэтому последняя часть в условии KopBuH - правильная |
Loopback wrote: |
При чем тут язык? |
Flasher wrote: |
Только что-то не работает твой плагин в этом отношении. |
Flasher wrote: |
Avada привёл цитату после появления обсуждаемой задачи. |
Loopback wrote: |
и условие станет вполне правильным. |
Loopback wrote: |
Насчет SID'a, как я понимаю, ответа вряд ли дождусь |
Flasher wrote: |
С моим примером переменная будет вообще отсутствовать, что явно лучше, чем иметь неправильное значение. |
Flasher wrote: |
А я тут при чём? |
Loopback wrote: |
Как раз обычная практика - использование языка по-умолчанию, если языковый файл не найден. |
Loopback wrote: |
она должна быть определена и у нее должно быть значение |
Loopback wrote: |
Хотя, конечно, можно и поверять, есть ли она или нет - это просто вопрос подхода. |
Quote: |
Даже если оно неправильное? И какой в этом практический смысл? |
Quote: |
Я бы, откровенно, вообще записывал в переменную значение ключа, а потом обрезал бы лишнее: wcmd_deu.lng. |
Flasher wrote: | ||||
А должно быть по идее так:
|
MVV wrote: |
Пустое или нет значение по умолчанию - это действительно вопрос подхода. |
MVV wrote: |
Непросто будет с ограниченным синтаксисом обработать все случаи вида WCMD_BLABLA_RUS.lng и т.п. |
KopBuH wrote: |
понимаешь...откуда мне знать, как называется файл меню у тебя? |
Справка ТС wrote: |
Этот диалог позволяет выбрать внутреннюю команду из файла totalcmd.inc, а также определить новые команды, которые будут храниться либо в файле usercmd.ini, либо в специфическом для данного языка файле wcmd_lng.ini (например, wcmd_rus.ini для русского языка). |
KopBuH wrote: |
поэтому - хочешь добавить - добавь нужные языки ручками |
Quote: |
Какого подхода? Как "я" пойму, что "у меня" стоит не английский, если переменная показывает Eng? |
Quote: |
Кстати, Loopback, а ты можешь добавить возможность работы с условиями без переноса строк и EndIf, как в VB? |
MVV wrote: |
какая тебе разница, именно английский ли язык в действительности или нет? |
MVV wrote: |
Кто-то пишет такие простыни в скрипте Autorun, что эта мелочь сильно прояснит что-то? |
Code: |
Pragma AutorunFinalizeSection |
Flasher wrote: | ||
У кого-нибудь работает такая команда?
|
Code: |
ShellExec /EV /SW_HIDE cmd.exe '/c del C:\Sample.txt' |
Code: |
ShellExec /EV /SW_HIDE '%COMSPEC%' '/c del C:\Sample.txt' |
Flasher wrote: |
Нужно именно при закрытии ТС. |
Code: |
ShellExec /EV /SW_HIDE '%COMMANDER_PATH%\Macroses\sample.exe' ' -K "%RANDOM%" "%commander_path%\sample.txt"' |
KopBuH wrote: |
Можете сделать команду для вызова выполнения внешнего скрипта, что-то вроде ExecCfg autorun_custom.cfg ?. |
Flasher wrote: |
Кстати, Loopback, а ты можешь добавить возможность работы с условиями без переноса строк и EndIf, как в VB? |
Flasher wrote: |
У кого-нибудь работает такая команда? |
Quote: |
Но не исключено, что это опять проблема с одной из самых оригинальных функций WinAPI AssocQueryString |
MVV wrote: |
А зачем вызывать эту странную функцию для команды ShellExec? |
MVV wrote: |
А какие проблемы-то? |
Code: |
Source: C:\WINDOWS\system32\cmd.exe |
Flasher wrote: |
Нужно сделать не так, чтобы скрипт прекращал работу на любой неправильной команде, а не трогал только те команды, в которых есть ошибка. |
Flasher wrote: |
А сейчас плагин не сообщает ни о каких ошибках |
Flasher wrote: |
Например, есть команды которые работают с синтаксисом, где одинарные и двойные кавычки чередуются ('exe "Param'). |
Loopback wrote: |
Перечитал несколько раз, но так и не понял. |
Loopback wrote: |
Так-то уж ни о каких? А двадцать с лишним строк сообщений об ошибках - они для красоты сделаны? |
Flasher wrote: |
Т.е. все команды с правильным синтаксисом должны отработать в любом случае. |
Flasher wrote: |
Я непосредственно о ShellExec пишу. Никаких ошибок не появляется, если команда не отрабатывает, как в приведённом выше примере. |
Loopback wrote: |
Они так и отрабатывают. |
Loopback wrote: |
Сейчас скрипт прекращает работу, если в синтаксисе команды ошибка |
Loopback wrote: |
Поскольку cmd может запуститься, но не отработать команду. |
Flasher wrote: |
Ты же пишешь: |
Flasher wrote: |
Ну, да. Ведь это отдельные команды, не зависящие друг от друга. |
Code: |
If ProcessExist /EV /F '%COMMANDER_PATH%\Scripts\AutoIt\AutoIt3.exe' Then ProcessTerminate /F /EV /TT /A '%COMMANDER_PATH%\Scripts\AutoIt\AutoIt3.exe' |
Flasher wrote: |
Настолько уже привык писать на одной строке, что и про правила местного синтаксиса забыл.. |
Code: |
[foo] |
MVV wrote: |
Но тогда уже RegRead, по аналогии с IniRead. |
MVV wrote: |
Если не проще будет действия прямо из скрипта выполнять. |
Quote: |
Про скрипт не понял. Для чего ini с ключами? Что в них должно быть? |
Flasher wrote: |
Если бы была команда RegRead, то можно было бы проверять через реестр.. |
MVV wrote: |
Кстати, мысль появилась кой-какая. Можно же вызывать скрипты из плагина... |
KopBuH wrote: |
вот если бы была поддержка чтения из WMI |
Code: |
RegRead AutorunKey "HKLM\Software\TC_Autorun" "sz" "AutorunKey" "Autorun" |
Code: |
RegRead [/HEX] <имя_переменной> <адрес_ключа> <имя_значения> [<текст_по_умолчанию>] |
MVV wrote: |
такой функции самое место в отдельном плагине. |
Code: |
|
Code: |
# Проверка локализации (языка) ОС |
Code: |
If %ShowHiddensOnStart% = 0 Then |
Code: |
If %ShowHiddensOnStart% = 0 Then |
Flasher wrote: |
Про stdout пока не думал. Есть какие-то идеи? Что там из полезного окромя cmd у нас выводит? |
Code: |
|
Code: |
|
KopBuH wrote: |
но иногда почему то вылазиют странные сообщения плагина при выходе из ТС. причем не всегда |
KopBuH wrote: |
является ли такой код правильным: |
KopBuH wrote: |
P.S.: Loopback, добавил бы в autorun.example.cfg пару примеров работы с RegRead |
Loopback wrote: |
В первую очередь - cscript. Для меня - Autoit, конечно. |
Flasher wrote: |
Или, может, я чего не улавливаю? |
Loopback wrote: |
Созданная во внешнем скрипте переменная вообще не будет видна в скрипте Autorun (и в ТС). |
Loopback wrote: |
Тут возникает другой вопрос - а зачем нужно условие%ShowHiddensOnStart% = 0, если оно ничего не делает. |
Loopback wrote: | ||
Строка запуска в Autorun:
|
Code: |
|
MVV wrote: | ||
Полагаю, чтобы ничего не делать, если условие истинно, и выполнять какие-то действия в противном случае (внешний условный блок). |
Code: |
If %EncryptAdminINI% = 0 Then |
Flasher wrote: |
Я как раз к тому, что, в скрипте Autorun она не нужна будет, поскольку необходимое значение будет задействовано в тех же скриптах, в кот. и так можно его получить без специально созданной переменной среды.
|
MVV wrote: |
Полагаю, чтобы ничего не делать, если условие истинно, и выполнять какие-то действия в противном случае (внешний условный блок). |
Code: |
|
KopBuH wrote: |
при запуске ТС с другой рабочей папкой, отличающейся от папки ТС, например через контекстное меню проводника - скрипт берет рабочую папку оттуда, но есть решение, код такой: |
Quote: |
Имелось в виду, что в том конкретном примере можно было бы оба условия объединить в одно: |
Code: |
|
Code: |
ElseIf (FileExist C:\Windows) AND (C:\Windows <> %SystemRoot%) Then |
Code: |
If %OfflineSystemDir% = False Then |
Loopback wrote: |
Пример KopBuH с использованием SID для шифрования вполне показателен, поскольку как я понял, это значение используется и после окончания запуска. |
KopBuH wrote: |
приведи пожалуйста пример сравнения, если ключ в ini файле есть, но он пустой. |
Flasher wrote: | ||
Только надо ставить конкретное значение, как у меня False, а не пустое. |
Flasher wrote: |
А что даёт COMMANDER_OFFLINESYSTEM, чего не даст WINDIR? |
Flasher wrote: |
KopBuH
Что в таком случае онлайн-система? Удалённое управление? |
Flasher wrote: |
Реестр подключается прямиком из Autorun? Каким образом? |
KopBuH wrote: |
текущая активная система |
KopBuH wrote: |
но эти вопросы (как и ответы) по-моему не по теме топика |
KopBuH wrote: |
Loopback обещал добавить условие сравнения, если ключ в ini файле пустой |
MVV wrote: |
Пришлось бы писать это дополнительное условие также и в каждой ветке Else[If]. |
KopBuH wrote: |
Скажем, вот на таком практическом примере: |
Code: |
|
KopBuH wrote: |
вот еще вариант, который я пробовал: |
Code: |
|
Flasher wrote: |
Для меня пока не показателен. Сам же назвал запрос очень специфичным. Я писал про неспецифичные задачи. А то, что используется после запуска, возвращается и без участия Autorun (мы только это обсудили).
|
KopBuH wrote: |
просто Loopback обещал добавить условие сравнения, если ключ в ini файле пустой. а поскольку в Readme.txt ничего не появилось, приходится писать сюда. |
Loopback wrote: |
нужно использовать в дальнейшем в ТС |
Loopback wrote: |
это дефолтное значение, которое записывается в переменную, если ключ отсутствует |
Quote: |
IniRead COMMANDER_LANGINI %COMMANDER_INI% Configuration LanguageIni "" |
Flasher wrote: |
Ты имеешь в виду те самые кнопки/юзеркоманды, о которых я писал? Без примеров как-то не ахти. |
Flasher wrote: |
Он имеет в виду, если ставить кавычки вместо значения. |
Loopback wrote: |
Я не могу сейчас сходу придумать такие примеры, однако ввиду универсальности решения, применение наверняка найдется. |
Code: |
ProcessExecGetOutput /EV COMMANDER_WINVER cmd.exe '/c ver' |
Loopback wrote: |
Получится пустая переменная. Ее можно проверить в условии как Var = "". |
Code: |
WLanProfile= |
Code: |
|
KopBuH wrote: |
по идее, функция ProcessExecGetOutput запускает консольную программу, и выдает в переменную результат её работы, то есть её вывод. |
Loopback wrote: |
Получится пустая переменная. Ее можно проверить в условии как Var = "". |
KopBuH wrote: |
а вот как бы не так: |
Flasher wrote: |
Не предусмотрены пока пустые кавычки. |
! | Avada: |
Внедрять в сообщения картинки такой ширины запрещено правилами форума. Выношу замечание и заменяю на ссылку. |
Code: |
WLanProfile= |
KopBuH wrote: |
Win8 x64, TotalCommander 32bit, запуск ТС происходит без тулбаров: |
KopBuH wrote: |
при закрытии ТС вылезло: |
KopBuH wrote: |
удалил все лишние комментарии из конфига - тулбары начали грузится. |
KopBuH wrote: |
но ошибка при выходе не исчезла, и всегда ругается на последную строку конфига. |
Code: |
Buttonbar=%commander_path%\Configs\wcmd%commander_arch%_%commander_lang%.BAR |
Code: |
IniRead OfflineSystemDir "%COMMANDER_PATH%\wincmd.ini" "OFFLINESYSTEM" "OfflineSystemDir" "C:\Windows" |
KopBuH wrote: |
сейчас просто еще раз запустил - не загрузился. загрузил вручную, нажав ОК в настройке тулабара, вышел из ТС, открыл ТС - тулбар загрузился. |
Code: |
IniRead OfflineSystemDir "%COMMANDER_PATH%\wincmd.ini" "OFFLINESYSTEM" "OfflineSystemDir" "C:\Windows" |
KopBuH wrote: |
скажешь потом, что будем делать, если ключ будет пустой, но значение по умолчанию должно быть не пустым. |
Code: |
# Получение версии ОС с помощью командной строки Windows |
Loopback wrote: |
Это может быть связано, например, с командой получения SID, поскольку скрипт выполняется достаточно медленно. Попробуй ее перенести в самый конец секции загрузки. |
Code: |
For Each Item In GetObject("winmgmts://./root/CIMV2").ExecQuery("SELECT SID FROM Win32_UserAccount where" &_ |
Code: |
With CreateObject("WScript.Network") |
KopBuH wrote: |
да, вот сделал пример для функции ProcessExecGetOutput: |
Code: |
# Проверка локализации (языка) ОС |
KopBuH wrote: |
а не мог бы ты добавить определение в переменной %AUTORUN_OSVERSION% среды Preinstallation Environment (PE), а ? |
KopBuH wrote: |
сейчас я делаю это так: |
KopBuH wrote: |
хотя бы русский и английский |
Loopback wrote: | ||
И чем же плох способ? Вполне корректно и надежно. Ну я понимаю еще, если бы способа не было или он был запредельно сложный. либо код языка (en, ru), либо его LSID (00000419). Потому что
такой вариант неприемлем. |
Loopback wrote: |
либо код языка (en, ru) |
Flasher wrote: |
Есть, кстати, и другие ветки: HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\ HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language\ |
MVV wrote: |
и за несколько лет существования плагина понадобилось 1 раз? |
MVV wrote: |
Вряд ли кто-то будет использовать больше 2-3 значений... Вполне достаточно получить номер локали. |
MVV wrote: |
Параметр Language какое значение содержит? |
Loopback wrote: |
Только много ли это даст выигрыша? |
Loopback wrote: |
определиться, какую информацию в плагин, какую оставить |
Flasher wrote: |
Т.е. цель только в переносе? Или же мы про новые функции? |
Loopback wrote: |
полезных системных параметров огромное количество |
Quote: |
Его же можно будет к autorun.cfg прикрутить? |
MVV wrote: |
научить Autorun ... возвращать результат в виде строк |
Code: |
|
KopBuH wrote: |
что такое GetSystemMetrics? |
KopBuH wrote: |
насколько я понял, OSLANG там нет? |
KopBuH wrote: |
очепятка . |
Loopback wrote: |
исправлена загрузка скрипта в некоторых ситуациях |
Code: |
SetEnv /EV COMMANDER_OSLANG %SYSINFO_USERLANG% |
KopBuH wrote: |
определение каких языков поддерживает SYSINFO_USERLANG? |
Flasher wrote: |
переменная предназначена не только для сравнения в конфиге |
KopBuH wrote: |
вопрос: определение каких языков поддерживает SYSINFO_USERLANG? |
Flasher wrote: |
Полагаю, из этого списка. |
Flasher wrote: |
а как же моя просьба о нижнем регистре? |
Loopback wrote: |
Нет, трехбуквенные |
Loopback wrote: |
Сделаю. |
MVV wrote: |
Loopback,
AUTORUN_OSARCH теперь SYSINFO_OSARCH? В Readme ни слова. |
Code: |
If %AUTORUN_OSARCH% == 64 Then |
Code: |
If %SYSINFO_OSARCH% = 64 Then |
MVV wrote: | ||
KopBuH,
А у меня ругался при каждом запуске, пока не исправил. И ещё ругался на сравнение ==, хотя 1.6b1 прекрасно работала с таким:
|
MVV wrote: | ||
Теперь работает только с таким (при подключенном плагине):
|
Code: |
%AUTORUN_OSARCH% - архитектура ОС, где работает Total Commander. Может быть 32 или 64. |
MVV wrote: |
AUTORUN_OSARCH теперь SYSINFO_OSARCH? В Readme ни слова. |
Code: |
If %AUTORUN_OSARCH% = 64 Then |
Flasher wrote: |
Такую добавь, пож-та. |
MVV wrote: |
Я уже писал, что в Readme не исправлено. |
Code: |
%systemroot%\system32\regsvr32 /s redist\x64\TextCaptureLib.dll |
Code: |
%systemroot%\system32\regsvr32 /u redist\x64\TextCaptureLib.dll |
Code: |
ShellExec '%systemroot%\system32\regsvr32' '%COMMANDER_PATH%\SOFT\TextCatch\redist\x64\TextCaptureLib.dll' |
Code: |
LoadLibrary Plugins\Autorun_SysInfo.dll |
Loopback wrote: |
Вообще, сейчас уже очевидно, что идея разворачивать переменные только при явно заданном ключе не самая удачная, поскольку переменные приходится разворачивать в подавляющем большинстве случаев. Нужно было делать обратный ключ. |
Quote: |
---------------------------
Autorun plugin error --------------------------- Error in command at line [33]: Unknown command: Pragma --------------------------- ОК --------------------------- |
Quote: |
---------------------------
Autorun plugin error --------------------------- Error in command at line [18]: Incorrect syntax in expression: 64 == 32 --------------------------- ОК --------------------------- |
Quote: |
А ввести обратный флаг (/EV- или /NEV или /NE) |
Quote: |
поскольку новая версия планируется как можорное обновление |
Loopback wrote: |
С этой не так просто. У нее для разных параметров совершенно разный тип возвращаемых данных, напрямую не сделаешь. |
Code: |
SystemParametersInfo VAR <индекс параметра> [<субиндекс>] |
Flasher wrote: |
Второй, в общем-то, устроит. |
Loopback wrote: |
некоторые полезные параметры не поддерживаются на младших версиях ОС |
Code: |
ProcessExecGetOutput /EV /OEM USERSID cscript.exe '//Nologo "%commander_path%\Macroses\systeminfo_usersid.vbs"' '%commander_path%' |
Code: |
Pragma AutorunFinalizeSection |
Code: |
IniRead SaveTemplateSettings "%COMMANDER_PATH%\wincmd.ini" "Configuration" "SaveTemplateSettings" "0" |
Code: |
|
Code: |
SetEnv /EV COMMANDER_OSLANG %SYSINFO_USERLANG% |
Code: |
StrUpper COMMANDER_OSLANG %COMMANDER_OSLANG% |
Code: |
StrUpper COMMANDER_OSLANG |
Flasher wrote: |
А почему нельзя сделать их по-человечески функциями Func(Var) без выделения в отдельные команды? |
KopBuH wrote: |
так как мне решить сей вопрос?. |
KopBuH wrote: |
хоть примеров бы дали в ридми, чтоли. |
Flasher wrote: |
А для функций не нужны отдельные строки, они сразу возвращают нужное в строку какой-то команды. |
Loopback wrote: |
Это единственное, что можно сделать в рамках существующего синтаксиса. |
Loopback wrote: |
KopBuH В общем это все-таки не баг, но двойственная ситуация. Что получается: ты создаешь переменную окружения, потом пытаешься изменить регистр. Команда пытается создать локальную переменную, но не может, поскольку уже есть такая переменная окружения, и у нее - приоритет. Так исторически сложилось, что сначала появились переменные окружения, а локальные - значительно позже. Кстати, ты же писал " или эти Strxxxxx не поддерживают обработку текста из переменных среды?" - а я невнимательно прочел. Действительно, получается так. |
MVV wrote: |
Не пойму, зачем было проводить допобработку возвращаемой системой строки языка... |
Flasher wrote: |
Вот только так действовать - плодением сущностей? |
KopBuH wrote: |
Все эти Strxxxxxx нигде особо не задействуешь, если в поле "текст" нельзя использовать переменную среды. если только статичный текст, то я могу и просто в конфиге прописать RUS - и все. |
MVV wrote: |
Насчёт проблемы с StrUpper COMMANDER_OSLANG: нужно сделать процедуре два параметра, а не один. |
Loopback wrote: |
Больше таких ошибок делать не буду. |
Flasher wrote: |
А в чём ошибка, если функции повсеместно используются (и явно не дураками делались) ? |
Loopback wrote: |
Отдельная конкатенация в Autorun вообще не нужна, переменные разворачиваются в тексте. |
Flasher wrote: | ||
|
MVV wrote: |
Проводить необязательную дополнительную обработку, тем более при наличии добавленной команды снижения регистра - избыточность. |
Code: |
StrUpper OSLANG %SYSINFO_USERLANG% |
MVV wrote: |
По-моему, с такими широкими запросами уже надо отдельный скрипт писать и выполнять его через ShellExec... Функции, арифметика. |
MVV wrote: |
Вообще, конечно, "мне так хочется" - не ответ. |
MVV wrote: |
Проводить необязательную дополнительную обработку, тем более при наличии добавленной команды снижения регистра - избыточность. |
Flasher wrote: |
А эту команду можно уже убирать вместе с остальными. Как видишь, зря добавлялись они. Лишние нагромождение в конфиге с такими командами - вот это избыточность. |
Flasher wrote: |
Поясни на примере. Мне нужно в ряде случаев в одну строку сливать текст и переменные. Как формируется такая запись? Так же, как и с переменными среды? И как с кавычками быть в таких записях? |
Code: |
Set NUMBER 1 |
Flasher wrote: |
Они появились исходя из моего раннего предложения. Но было оно в ином виде. Поэтому Loopback и пишет, что жалеет о добавке. |
Flasher wrote: |
У тебя в TCFS2 всё это есть без всяких скриптов. Или забыл? |
Flasher wrote: |
А у меня есть и автор, видимо, это понимает, раз согласился. |
Loopback wrote: |
Такую же конструкцию можно использовать в любой команде, где разворачиваются переменные. |
Loopback wrote: |
смотрится ваще некрасиво, смысла в переменных нет, смысла в новых функциях нет |
Loopback wrote: |
поскольку имеющийся парсер принципиально не может решить задачу работы с ними |
Loopback wrote: |
Ради нескольких функций, которые будут использоваться в лучшем случае пару раз на скрипт? |
MVV wrote: |
Мне, например, хочется, чтобы Autorun оставался компактным и легким |
MVV wrote: |
все тяжелые действия можно делать из запускаемых им программ/модулей. |
MVV wrote: |
И каковы же твои аргументы в пользу принудительного преобразования к нижнему регистру? |
Quote: |
TCFS2 при наличии всех этих приблуд в несколько раз легче Autorun. И каков вывод? |
Quote: |
Отличные от твоих, видимо. Ты же оспариваешь, тебе и начинать писать про верхний. |
MVV wrote: |
Вывод - C++ с голым API позволяет написать более компактный модуль. |
MVV wrote: |
которое нужно не всем |
Flasher wrote: |
Так, хорошо, а если пробелы между переменными и текстом есть? |
Flasher wrote: |
Этого я не писал. Тем более про функции. |
Flasher wrote: |
В этом никто не сомневался. Речь только может идти про новый. |
Loopback wrote: |
Добавляй, что мешает-то? |
Loopback wrote: |
Не про функции, про команды. Сути-то не меняет |
Loopback wrote: |
Угу, т.е. я сейчас начну переписывать с нуля парсер |
Loopback wrote: |
И что, кроме размера, заметил кто какие преимущества? |
Flasher wrote: |
Или там кавычки решают? |
Flasher wrote: |
а ты про неизвестно какие переменные. |
Flasher wrote: |
поэтому само создание отдельных переменных практически не востребовано. |
Flasher wrote: |
Под новым понимался дополнительный, а не изменённый существующий. |
Code: |
Исходная строка: |
Code: |
const char* __stdcall AutorunPreprocess(const char* InputLine); |
Loopback wrote: |
ЗЫ К слову, плагины к Autorun сейчас написаны на С++. Было интересно вспомнить, да и API надо было портировать. И что, кроме размера, заметил кто какие преимущества? |
MVV wrote: |
Что ж там за парсер, что сложно добавить поддержку параметров функций. Я у себя проблему решал достаточно просто: если вижу скобку, ищу конец выражения в скобках с учетом типа и уровней вложенности, затем просто передаю всю подстроку во вложенный вызов как параметр, а дальше уже функция сама парсит его. |
Loopback wrote: |
Можно ведь и попробовать, не? |
Loopback wrote: |
В любом случае, до релиза - никакого изменения синтаксиса делать не буду. |
Code: |
# Проверка языка системы |
Quote: |
"Эта штука" выдала это: |
Flasher wrote: |
Файл wdx отличается от предыдущего. |
Flasher wrote: |
Я думал, что справка будет пообширней в плане разъяснений. Ну, да ладно. |
Flasher wrote: |
Добавь, пож-та, данные по процессору (производитель, ширина шины данных и т.д.). |
Loopback wrote: |
Что непонятно, что можно добавить? |
Loopback wrote: |
По-моему, винда такую информацию не выдает. |
Flasher wrote: |
Добавить стоит примеры для каждого случая. |
Flasher wrote: |
WMI даёт. |
MVV wrote: |
Может, проще сразу добавить одну функцию, запихивающую вывод WMI-запроса в переменную окружения, если мы кучу данных берем оттуда? |
Quote: |
меняет значение переменных, только в среде уже запущенного ТС |
Code: |
|
KopBuH wrote: |
или все же можно сделать такую утилитку, только для ТС, если это не очень трудно? |
Loopback wrote: |
Но вообще ты пробовал ее работоспособность? Что-то я сомневаюсь, что она будет работать без административных прав. Насчет привилегий согласен, что-нибудь можно будет сделать. |
Code: |
If %AUTORUN_TCARCH% = 32 Then |
Loopback wrote: |
для портабельной сборки писать что-то в реестр - зло. |
Loopback wrote: |
KopBuH
Пока никак. Не думаю, что до релиза что-то буду добавлять, а релиз пока даже некогда завершить. Ну и вообще, не то, чтобы я был категорически против, но считаю, что для портабельной сборки писать что-то в реестр - зло. |
MVV wrote: |
При особо остром желании, думаю, можешь попробовать отредактировать хекс-редактором юникодовскую строку .cfg в своей копии плагина. |
Code: |
If %AUTORUN_TCARCH% = 32 Then |
Code: |
If %AUTORUN_TCARCH% == 32 Then |
Code: |
--------------------------- |
jentoso wrote: |
я то про версию ScrollTC подумал |
Code: |
[Autorun] |
Code: |
ProcessCount /F TC32Copies "%commander_path%\TOTALCMD.exe" |
Flasher wrote: |
Тут есть полезный сорс (в пакете TOMLINSN.ZIP), на его базе написан InstDrv, PnpUtil, RegDrv. Второй год пользуюсь последней тулзой, загружаю/выгружаю драйвер через autorun. Но это пока на безрыбье.. |
Quote: |
LoadFont [/N] <font name>
LoadLibrary [/U] <имя dll> [<функция>] LoadDriver <имя sys> |
MVV wrote: |
Но должны совпадать разрядности системы и драйвера, процесс должен иметь права администратора. |
Code: |
LoadLibrary Plugins\Autorun_MoveButton.dll |
Code: |
|
Quote: |
Для разработчиков |
MVV wrote: |
Справка - это сильно. |
MVV wrote: |
Думаю, касаемо функции SystemParametersInfo стоит перечислить, какие параметры поддерживаются. |
MVV wrote: |
Где-то косяки с кодировкой. |
Code: |
LoadLibrary Plugins\Autorun_Process.dll |
Flasher wrote: |
а плагин Process точно обновлён? |
Flasher wrote: |
Не понял. Зачем wfx-плагин запускать из autorun? |
dreamdeath86 wrote: |
хочу с помощью Autorun запустить плагин VirtualPanel.wfx, но плагин то подгружается но реакции 0 |
Code: |
CommandExec /CD "\\\Virtual Panel" |
LonerD wrote: |
что вначале нужно запустить плагин (зайти на панель), и только потом уже можно будет работать с ним. |
Quote: |
---------------------------
Autorun plugin error --------------------------- Error in command at line [12]: Unsupported parameter: /CD --------------------------- ОК --------------------------- |
MVV wrote: |
А так после загрузки временной панели тотал моментально возвращается в предыдущий каталог в активной панели: ShellExec "%COMMANDER_PATH%\Addons\TCFS2\TCFS2.exe" '/ef "tcd(`\\\Virtual Panel`,,S) tcm(570, 1)"' |
Avada wrote: |
И у меня на 15-й бете работает (вариант с CommandExec /CD "" "\\\Virtual Panel"). |
Code: |
ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef tcd(`\\\"Virtual Panel"`,,S) tcm(570,1)' |
Flasher wrote: |
Avada, так: |
Code: |
ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef "tcd(`\\\Virtual Panel`,,S)" tcm(570,1)' |
MVV wrote: |
Это абсолютно равносильно заключению в двойные кавычки всей команды tcd |
Flasher wrote: |
Я понимаю (я взял лишь необходимую часть), но у тебя не так, ты заключаешь в кавычки обе команды. |
Flasher wrote: |
У меня с ActiveRight=1 всё чётко отрабатывает. |
Flasher wrote: |
Какие у тебя открыты папки в момент закрытия ТС, и в каком состоянии активные вкладки? |
Flasher wrote: |
А ты ТС перезапускаешь (например, по скрипту) или закрываешь/открываешь? |
MVV wrote: |
Я даже отключал ActiveRight для теста, тоже работает. |
MVV wrote: |
Возможно, проблема в том, что тотал активирует правую панель уже после того, как выполняет команду. |
Avada wrote: |
И здесь при скриптовом перезапуске оказывается активна левая панель, там отображается корень диска C:, а справа открывается папка плагина без возврата в предыдущую папку. При любом другом варианте перезапуска или закрытия/открытия — видны две открытых папки плагина, активна правая панель. |
Code: |
ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef delay(500) "tcd(`\\\Virtual Panel`,,S)" tcm(570,1)' |
Flasher wrote: |
А если указать tcm(570,-1) ? |
MVV wrote: |
Попробуй поставить задержку перед вызовом команды: |
MVV wrote: |
в случае с фоновым SendMessage тотал будет вынужден обработать её непосредственно в момент получения, и с большой степенью вероятности этот момент наступит раньше, чем нам нужно. |
MVV wrote: |
Попробуй поставить задержку перед вызовом команды |
Code: |
ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef tcm(4002,0) "tcd(`\\\Virtual Panel`)" tcm(570,1)' |
Code: |
ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef "tcd(,`\\\Virtual Panel`)" "tcm(4002), eval(L_isActive)" tcm(570,1)' |
Avada wrote: |
Со второй всё работает. |
Code: |
Set TCFS2 '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' |
MVV wrote: |
Думаю, также стоит отметить, что такой запутанный синтаксис может быть непонятен не знакомым с ним людям. |
Flasher wrote: |
У меня с этим CD на последней бете почему-то выдаёт: |
Code: |
IniRead ACTIVE_RIGHT %COMMANDER_INI% Configuration ActiveRight |
Flasher wrote: |
Но судя по всему это связано с этими строками: |
Flasher wrote: |
Может, функция тения ini кривая |
Flasher wrote: |
Проверить бы с отключёнными секциями плагинов (для wdx оставить только autorun, естественно). |
Code: |
ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' "/ef 'tcd(,`\\\Virtual Panel`) run_item(JumpR), tcini(Configuration, ActiveRight, 1) | tcd(`\\\Virtual Panel`)" tcm(570,1)'" |
Code: |
JumpR=tcm(4002,0), eval(R_isActive==0) |
MVV wrote: |
ещё один способ определить, что панель загружена - посмотреть переменные окружения. |
Code: |
ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef "tcd(,`\\\Virtual Panel`) run_item(JumpR), tcini(Configuration, ActiveRight, 1) | tcd(`\\\Virtual Panel`)" tcm(570,1)' |
Avada wrote: |
если нужно и дальше разбираться в причинах глюков при использовании TCFS2, я готов, разумеется, продолжать |
LonerD wrote: |
В связи с появлением команды поиска в отдельном процессе, возникает вопрос - как запустить эту команду, чтобы при её запуске не выполнялось всё то, что прописано в Autorun.cfg ? |
LonerD wrote: |
Пока что возникла шальная мысль навесить вместо cm_SearchSeparate комбинацию команд |
Flasher wrote: |
Лучше попросить Гислера, чтобы не затрагивал плагины при задействовании подобных команд. |
MVV wrote: |
Как же можно отказываться от контентных плагинов в диалоге поиска? |
LonerD wrote: |
Наверное, лучшим выходом будет - в сам плагин Autorun вставить возможность игнорировать содержимое Autorun.cfg при запуске команд поиска/сравнения/ит.д. в отдельном процессе. |
MVV wrote: |
Раз у нас особый плагин, он и должен решать проблему: при инициализации вызывать функцию GetCommandLine и смотреть, есть ли в командной строке тотала параметр /S=. |
MVV wrote: |
А можно сделать универсальную вещь: добавить в плагин возможность чтения командной строки в переменную. Тогда в конфиге можно будет проверять, содержатся ли в командной строке определенные параметры (просмотр/синхронизация/поиск в отдельном процессе) и не выполнять те или иные команды. |
Quote: |
Как вариант можно ещё проверять на запущенность процесса ТС и пихать в условие весь код. |
Quote: |
Он действительно открывает новый экземпляр с этим параметром? |
MVV wrote: |
А если я запустил кучу процессов? |
Quote: |
Тогда можно проверять родительский процесс и заголовок окна. |
MVV wrote: |
Но мне всё равно кажется, что будет более гибко, если в конфиге можно будет вручную искать текст в комстроке. |
Code: |
|
Code: |
If %ProductVersionMS_H% = 8 AND %ProductVersionMS_L%+0 >= 5 OR %ProductVersionMS_H% = 0 Then |
Code: |
MIME-Version: 1.0 |
MVV wrote: |
редлагаю размещать новую кнопку '+' справа от кнопки 'Опции', которую слегка сдвинуть левее. А комбобокс фильтра растягивать до прежней длины, а то уродливо смотрится укороченный. |
MVV wrote: |
Кстати, как ты ищешь кнопки? Думаю, кнопку '+' можно искать по тексту, кнопку 'Опции' - тоже (искать кнопку с текстом '>>' - я проверил, этот текст не подлежит локализации). Так мы не будем зависеть от идентификаторов, порядка размещения и позиции/размера кнопок. |
MVV wrote: |
Набросал себе временное решение для отключения загрузки Autorun_MoveButton.dll на бете: |
Code: |
|
Quote: |
Ну если только третьим вариантом, меня текущее расположение в принципе устраивает |
Quote: |
По идентификаторам. |
Quote: |
А зачем отключать? Вчера выложил исправленную версию, работающую на 8.50. |
Quote: |
Всегда возвращает 0. Для любых других файлов все ок. В чем может быть косяк? |
MVV wrote: |
Ты ж в теме сообщай, а то не видно. |
MVV wrote: |
Как так? Они же у контролов в дельфе каждый раз меняются... |
MVV wrote: |
Если ты о TC 8.50b1, то неудивительно: там нет ресурса VersionInfo. |
MVV wrote: |
А в справке ещё не исправил скроллбары? |
Code: |
|
Quote: |
Наверно, лучше будет сделать команды типа "CmdlineGetParam var param" и "CmdlineHaveParam param", c ними будет проще. |
Quote: |
Дезинформировал... По имени класса, конечно. |
Quote: |
Раньше же всегда была, почему он ее убрал? |
Quote: |
В следующей версии, скоро. |
MVV wrote: |
Думаешь, оно стоит добавления двух процедур? По-моему, переменной бы хватило. |
MVV wrote: |
Ты отличаешь TButton от TButton? |
MVV wrote: |
На оффоруме уже сообщали, что нету. Считай это багом первой беты. |
Quote: |
Так есть же еще номер экземпляра. |
Code: |
HWND hchild=0; |
Quote: |
# Включает функционал ScrollTC
If %AUTORUN_TCARCH% = 32 Then LoadLibrary Plugins\ScrollTC.dll Endif |
Loopback wrote: |
По cpuid посмотрю, но может быть не сейчас. |
Quote: |
Добавлю, что предыдущие беты 8.50 более поддерживать не нужно |
Flasher wrote: |
Смотрел (с февраля-то)? Хотелось бы добавки. |
Loopback wrote: |
Нет, пока нет желания этим заниматься. |
Flasher wrote: |
Так всё сложно? |
Flasher wrote: |
А как отключить для ProcessExecGetOutput вывод окна cp с комстрокой? Зачем оно вообще? В мануале об этом вообще ни слова. |
Flasher wrote: |
Просьба ещё добавить переменную, возвращающую путь папки плагина. |
Flasher wrote: |
А ещё лучше, если бы новые переменные наследовали пути нужных подпапок: ..wdx\Autorun\Scripts = %Scripts%; ..\wdx\Autorun\Utils = %Utils%. Относительные пути могут фигурировать только в непосредственной склейке с командами, но их ещё нужно задействовать в параметрах. |
Loopback wrote: |
Просто неинтересно. |
Loopback wrote: |
Мне, например, приведенные выше папки не нужны. |
Loopback wrote: |
никто не мешает создать нужные переменные к подкаталогам прямо в скрипте. |
Flasher wrote: |
Отсутствие интереса с чем связано? С изучением кода или добавлением переменных? |
Flasher wrote: |
Пухнет конфиг от этих лишних строк, скорость запуска и закрытия падает. |
Flasher wrote: |
Всего-то надо обрамлять папку в знаки процента, а плагин будет проверять существование таких папок в корне и подставлять полный путь в случае истины. |
Loopback wrote: |
С отсутствием лишнего времени. |
Loopback wrote: |
Впрочем, если вот этой информации хватит, можно будет добавить в sysinfo. |
Loopback wrote: |
Количество строк в скрипте, тем более с простыми операциями вроде присваивания, оказывает настолько малое влияние на скорость, что даже не знаю, о чем тут говорить. |
Loopback wrote: |
Не будет, поскольку дисковые операции медленны. |
Loopback wrote: |
Не говоря уже о том, что ты предлагаешь эти операции проделывать каждый раз при вызове макропеременной. |
Flasher wrote: |
Отсутствие интереса связано с отсутствием лишнего времени? Какая-то неувязочка. |
Flasher wrote: |
Если оно получится с пом. данной функции, то ОК. |
Flasher wrote: |
Визуально по ощущениям с распуханием конфига скорость таки замедляется, особенно при подключении сторонних утилит. |
Flasher wrote: |
Нет, конечно, только вначале запуска, единожды, как и в случае с другими переменными. Поэтому негативный момент отпадает. |
Flasher wrote: |
И ниже я предложил вариант получше. По нему что? |
Loopback wrote: |
Чего тут увязывать? Времени слишком мало, чтобы заниматься неинтересными вещами. |
Loopback wrote: |
все равно остается неявное создание переменных, что я считаю идеологически некорректным. |
Loopback wrote: |
кроме чуть более короткой записи нескольких путей |
Loopback wrote: |
Я не понял, что там подразумевалось. |
Flasher wrote: |
По мне так нормально. Хитро и гибко. |
Flasher wrote: |
А это уже не мало. Я вот всё пытаюсь тебя сподвигнуть на оптимизацию записей в конфиге. |
Flasher wrote: |
|Plugins\Autorun_Sysinfo.dll = F:\Total Commander\Plugins\wdx\Autorun\Plugins\Autorun_Sysinfo.dll |
Loopback wrote: |
Ну да, любую идею можно довести до абсурда. |
Loopback wrote: |
Странное у тебя понимание оптимизации. |
Flasher wrote: |
Что делать с реализацией? Как это работает? Везде или только в параметрах? |
Flasher wrote: |
И как убедиться в несостоятельности? |
Loopback wrote: |
Загружаешь плагин в начале скрипта, получаешь кучу переменных с именами дочерних подпапок в папке Autorun. |
Loopback wrote: |
работает только с текущей версией autorun |
Flasher wrote: |
Что-то не хочет пока работать. Там косой черты нет на конце? |
Flasher wrote: |
А для любой нельзя сделать (пусть не в базовом дистрибутиве)? |
Flasher wrote: |
С WMI какая команда? Если всё как в примере, то не работает. |
Code: |
GetWMIValue VAR "Manufacturer" "SELECT * FROM Win32_Processor" |
Code: |
GetWMIValue VAR "Caption" "SELECT * FROM Win32_VideoController" |
Loopback wrote: |
больше никаких действий не требуется |
Loopback wrote: |
С более старыми работать не сможет. |
Loopback wrote: |
Например |
Code: |
GetWMIValue Manufacturer "Manufacturer" "SELECT Manufacturer FROM Win32_Processor" |
Flasher wrote: |
почему такой код не отрабатывает? |
Quote: |
"SELECT * FROM Win32_Processor" |
Code: |
GetWMIValue DataWidth "DataWidth" "SELECT DataWidth FROM Win32_Processor" |
Flasher wrote: |
Я про возвращаемое значение. Там в пути на конце обратный слеш есть. Уже убедился. Можно убрать? |
Flasher wrote: |
А с новыми? |
Flasher wrote: |
А, ну в примере-то сперва идёт переменная в знаках процента, и имя параметра не берётся в кавычки. Поэтому не сообразил сходу. |
sa wrote: |
Хорошо! Скажу по-другому: такой код отрабатывает. |
Flasher wrote: |
Вот эти строки всегда пустую переменную дают: |
Flasher wrote: |
А если их поставить перед теми, то и те ничего не дадут. |
Flasher wrote: |
И вообще было бы грамотно, чтобы список с одним именем класса запрашивался единожды, как коллекция, из которой уже можно было бы получать соответствующее значение. |
Flasher wrote: |
Вот эти строки всегда пустую переменную дают |
sa wrote: |
Может, из-за данных не строкового типа? |
Loopback wrote: |
Можно. |
Loopback wrote: |
Будет, конечно. |
Loopback wrote: |
Хотя сомневаюсь, что это дает ускорение выборки. |
Loopback wrote: |
Может эти значения просто не выдаются системой? |
Loopback wrote: |
Вообще, не совсем корректно использовать одно и то же имя для внутренней переменной и переменной окружения. Может поэтому и неоднозначности возникают. |
Loopback wrote: |
Но я пока не вижу удобного способа работать с коллекциями в Autorun. |
Flasher wrote: |
Ок. Жду. |
Flasher wrote: |
Выдаются без проблем. Иначе бы не ставил. |
Flasher wrote: |
Я боюсь за повторные вызовы сервиса WMI, они и резину тянут и, возможно, из-за этого проблемы с повторным запросом возникают. |
Loopback wrote: |
Стоп. Не вижу я слеша на конце. |
Loopback wrote: |
Вот исправленный вариант. |
Loopback wrote: |
Да я понимаю, что если будет несколько запросов - это не лучший вариант. |
Loopback wrote: |
Пока что есть мысль получать в одном запросе все данные и возвращать их в переменную, а потом их оттуда извлекать по мере необходимости. |
Flasher wrote: |
А может на 7-ке с обр. слешем, а на XP без? |
Flasher wrote: |
Похоже это не просто плохо для ресурсов, но и реально не даёт пользоваться повторным запросом. Можешь проверить. |
Flasher wrote: |
Только переменная должна быть массивом, чтобы вытаскивать нужное по индексу. |
Loopback wrote: |
Проверил, везде без... |
Loopback wrote: |
Исправленную версию положил по сегодняшней ссылке. |
Loopback wrote: |
все равно для получения значения придется делать функцию |
Loopback wrote: |
Исправленную версию положил по сегодняшней ссылке. |
LonerD wrote: |
А что насчёт отключения выполнения autorun.cfg при поиске в отдельном процессе? |
history_ru.txt wrote: |
1.6 beta 12
+ добавлен API для С++ * системная информация перенесена в плагин Sysinfo |
MVV wrote: |
Как выполнить действие, если процесса не существует? |
Code: |
ProcessExist NOTE 'notepad.exe' |
Flasher wrote: |
Есть: <>. В справке же всё написано. |
Code: |
If ProcessExist /F "%COMMANDER_PATH%\Addons\AskParam\AskParam.exe" Then |
Code: |
If ProcessExist /F "%COMMANDER_PATH%\Addons\AskParam\AskParam.exe" = 0 Then |
Code: |
If ProcessExist /F "%COMMANDER_PATH%\Addons\AskParam\AskParam.exe" <> True Then |
Code: |
If ProcessExist /F "%COMMANDER_PATH%\Addons\AskParam\AskParam.exe" = False Then |
Code: |
If (ProcessExist /F "%COMMANDER_PATH%\Addons\AskParam\AskParam.exe") = False Then |
MVV wrote: |
Заводить переменную для результата ProcessExist не хочу, хочу прямо в условии. |
Avada wrote: |
Все архивы включают ридми. В бетах 1-13 — в текстовом виде, далее — как CHM. Искомая информация фигурирует в разделе про Sysinfo. |
Flasher wrote: |
Я тоже много чего хотел (например, писать выражение на одной строке без EndIf), но автору всё это невдомёк. |
Quote: |
IniRead ButtonbarIni %COMMANDER_INI% Buttonbar RedirectSection
IniRead Buttonbar %ButtonbarIni% Buttonbar Buttonbar ERROR_READING_VALUE_BLAH_BLAH_BLAH |
Flasher wrote: |
Путь с подпапкой плагина с неким именем NAME будет возвращаться из переменной %NAME%. |
Flasher wrote: |
Скачать - скачал, а поинтересоваться для чего оно забыл |
Loopback wrote: | ||
В текущей версии плагина process (еще не выложенной) сделана переменная PROCESS_COMMANDLINE, содержащая путь запуска TC. Можно будет проверить наличие /S= и выходить при наличии. |
LonerD wrote: |
А некое имя плагина |
LonerD wrote: |
Так я его только неделю обнаружил на сервере и скачал |
LonerD wrote: |
Это так и не было реализовано? |
Flasher wrote: |
Ну, так и нашёл бы обсуждение по имени архива. |
Code: |
LoadLibrary Plugins\Autorun_Sysinfo.dll |
Code: |
LoadLibrary Plugins\Autorun_Process.dll |
MVV wrote: |
в один процесс |
MVV wrote: |
LonerD,
Что-то не пойму, как AskExit может загрузиться в один процесс дважды - если, конечно, это не две DLL из разных мест. Сама винда не дает одной физической библиотеке загрузиться в процесс дважды. |
Quote: |
2.0.2
+ добавлена переменная AUTORUN_TCCMDLINE, содержащая путь командной строки Total Commander + добавлена поддержка определения Windows 8.1 и Windows 10 в плагин Sysinfo * документирована команда Exit |
Code: |
StrPos InStr '%AUTORUN_TCCMDLINE%' /S= |
Quote: |
+ добавлена переменная AUTORUN_TCCMDLINE, содержащая путь командной строки Total Commander |
Flasher wrote: |
Что там за конфликт ещё может быть, не подскажу. |
autorun.cfg wrote: |
LoadLibrary Plugins\Autorun_MoveButton.dll
MoveOptionsButton MOVE_LEGACY |
Code: |
Autorun_plugin=autorun.Autorun = 1 |
Flasher wrote: |
поэтому остаётся только FixWindows. |
Code: |
SendCommand cm_SelectAll |
MVV wrote: |
Wcx6432 позволяет использовать 32-битные WCX-плагины в 64-битном ТК. |
Code: |
ProcessExecGetOutput PING ping.exe '-n 1 адрес1' |
Code: |
@echo off |
HA3APET wrote: |
Не могу осилить |
Code: |
ProcessExecGetOutput PING 'cmd /c ping ya.ru -n 1|find /c "TTL"' |
Code: |
ProcessExecGetOutput CMD 'ping ya.ru -n 1' |
Code: |
# LoadLibrary Plugins\Autorun_Process.dll |
Code: |
LoadLibrary Plugins\Autorun_Sysinfo.dll |
Quote: |
LoadLibrary Plugins\Autorun_Sysinfo.dll
SetEnv /EV SYSINFO_OSARCH %SYSINFO_OSARCH% |
Code: |
If %SYSINFO_OSARCH% = 64 Then |
Code: |
|
Flasher wrote: |
Что понимается под универсальностью? |
Flasher wrote: |
А если во всех случаях указана битность, то достаточно и первой строки. |
Code: |
|
Flasher wrote: |
Так а чем тебе %3264file% не решение? |
Quote: |
P.S.: Название для переменной, конечно, своеобразное. |
Iori wrote: |
Так что-ли? |
Iori wrote: |
или file86.exe и file64.exe |
Code: |
If %SYSINFO_OSARCH% = 64 Then |
Iori wrote: |
Надо, чтобы переменная несла смысл. |
Flasher wrote: |
Ну, ты с логикой дружишь? |
Flasher wrote: |
Если папка одна, зачем тебе %64dir%\ в пути? |
Iori wrote: |
Что делать когда папка одна, и в ней file.exe и file64.exe или file86.exe и file64.exe |
Iori wrote: |
\Packers\64\file64.exe |
Iori wrote: |
А это, уже другой вопрос был. |
Flasher wrote: |
Не встречал подобного извращения (уж точно не у 7zip). |
Code: |
SetEnv 3264dir %SYSINFO_OSARCH% |
Code: |
If %SYSINFO_OSARCH% = 64 Then |
Iori wrote: |
Разве нельзя использовать %3264dir% в имени файла? |
Iori wrote: |
Во втором примере, вроде тоже самое. |
Flasher wrote: |
Мы же разбирали вариант с program.exe и program64.exe. И всё никак не въедешь? |
Code: |
*"%COMMANDER_PATH%\Utilities\PrKiller\PrKiller%64bit%.exe" |
Code: |
ShellExec '%COMMANDER_PATH%\Utilities\PrKiller\PrKiller%64bit%.exe' |
Code: |
ShellExec /SW_HIDE 'Taskkill /IM PrKiller*.exe /F' |
Iori wrote: |
В autorun.cfg прописал: |
Iori wrote: |
В секции Pragma AutorunFinalizeSection прописал: |
Code: |
LoadLibrary Plugins\Autorun_Process.dll |
Flasher wrote: |
А переменная 64bit выше создана |
Code: |
If %SYSINFO_OSARCH% = 64 Then |
Flasher wrote: |
Для этого есть команда ProcessTerminate: |
Code: |
If %SYSINFO_OSARCH% = 32 Then |
Flasher wrote: |
А с запуском что-то непонятное. Как будто переменная, стоящая не спереди пути, игнорируется. |
Iori wrote: |
Это баг плагина или уникальность программы? |
Code: |
[FileSystemPlugins] |
Flasher wrote: |
LonerD
В wincmd.ini [ContentPlugins] стоят выше [FileSystemPlugins]? В Autorun строка создания переменной в самом верху? |
Code: |
SetEnv /EV OSIS64 "" |
Code: |
SetEnv /EV OSIS64 "XP" |
Code: |
If %autorun_tcarch% = 64 Then |
LonerD wrote: |
у меня переменная задавалась как пустая |
Flasher wrote: | ||
|
Flasher wrote: |
И нет, не баг, а ленивое молчание Гислера. Угадай, по чьей просьбе пост... |
LonerD wrote: |
Жаль Sad Многое теперь придётся переделывать. |
LonerD wrote: |
А как быть с процитированной "админской переменной" пока непонятно. |
Flasher wrote: | ||
|
Code: |
StrMid OSVer %SYSINFO_OSVERSION% 5 |
Flasher wrote: |
На Гислера число просьб влияет. Ты напиши, что очень надо. |
LonerD wrote: |
Ты процитировал свой пост с кодом |
LonerD wrote: |
Написал. Но за два месяца не особо густо желающих. |
Flasher wrote: |
А, вот о чём речь. А какое сейчас поведение на XP и т. д.? |
Code: |
SetEnv ADM "%commander_path%\hidcon.exe " |
Code: |
SetEnv ADM "rundll32.exe url.dll, FileProtocolHandler " |
LonerD wrote: |
Вроде как втихую пофикшены пустые переменные окружения. |
Code: |
ShellExec /W "%commander_path%\Program%EmptyEnv%.exe" "" "" |
LonerD wrote: |
Вроде как ... |
Code: |
SetEnv Empty |
LonerD wrote: |
Вот такая конструкция не работает в autorun.cfg |
LonerD wrote: |
Соответственно каталоги с плагином назывались SFTPPlug и SFTPPlugXP. |
Skif_off wrote: |
Разве не достаточно SFTPPlugXP сразу для всех? |
LonerD wrote: |
Похоже, возвращать как було он не хочет. |
LonerD wrote: |
Как вариант - предложил ему сделать экранирование символов для знака процента. |
Code: |
StrPos InStr '%AUTORUN_TCCMDLINE%' /S= |
Code: |
|
Iori wrote: |
Но это не очень удобно. |
Flasher wrote: |
А ты хочешь, что система доверяла установку/снос драйвера и деинсталляцию программы обычному юзеру? |
Flasher wrote: |
Это прелести 10ки. Что тут скажешь? |
Flasher wrote: |
Попробуй создать em-команду со * спереди, а потом прописать её после CommandExec снизу конфига. |
Iori wrote: |
По моему это прелести командера и плагинов. |
Iori wrote: |
Другая идея |
Flasher wrote: |
Прелестей же нет на 7-ке без UAC. |
Flasher wrote: |
А опция ярлыка с кнопки Дополнительно и AlwaysAsAdmin=1 на что? |
Iori wrote: |
Я сейчас не помню, но если ты запустишь ТС на 7-ке без админ прав, то в disk internals сможешь видеть все диски? |
Iori wrote: |
Я использую портативную сборку командера, на работе у меня нет админ прав. |
Flasher wrote: |
Речь не о правах юзера, а о проблемах с повышением под админом. |
Flasher wrote: |
Портативность = компактность. |
Flasher wrote: |
А ярлык ты можешь хоть в таскбаре, хоть в папке ТС сделать |
Flasher wrote: |
А вот с отсутствием админских прав как ты ранее запускал программы, требующие повышения? |
Iori wrote: |
Речь и про то и про это. |
Iori wrote: |
Я попробовал "AlwaysAsAdmin=1", драйвер wincdemu не выгрузился. |
Iori wrote: |
мне это никогда требовалось в домашних условиях. |
Iori wrote: |
Если ты про работу где у меня нет админ прав, то естественно я не запускал программы которые требуют админ права. |
Flasher wrote: |
А ярлык? |
Flasher wrote: |
ОК. Пож-та. Где ярлык разместил? |
Flasher wrote: |
Таскбаром (в один клик) не пользуешься? |
Flasher wrote: |
Для стола/таскбара можно, конечно, и скрипт поиска использовать, чтобы не зависеть от буквы. |
LonerD wrote: |
Вроде как в 9.21 RC 1 пофикшены пустые переменные. |
Iori wrote: |
Ярлык на столе в самый раз будет. |
Iori wrote: |
Может винда так устроенна. |
Flasher wrote: |
Так UAC устроен |
Loopback wrote: |
Пишите, если что-то забыл. |
Loopback wrote: |
+ команда Exit теперь учитывает расположение в блоках условий |
Code: |
StrPos InStr '%AUTORUN_TCCMDLINE%' /S= |
Loopback wrote: |
+ по-умолчанию Autorun НЕ будет запускаться в процессах поиска/просмотра/итд. |
BeTeP wrote: |
Возможно ли восстановить функционал MoveButton? |
Flasher wrote: |
Обновил плагин и сразу полетели ошибки: |
Flasher wrote: |
Всё по-старому. Вышибает. |
Flasher wrote: |
Не сказал бы, что cm_SearchStandalone ... выполняется так же быстро, как на голом ТС. |
Loopback wrote: |
Может что-то с путями при его загрузке, проверь. |
Code: |
LoadLibrary Plugins\Autorun_Process.dll |
Code: |
--------------------------- |
Code: |
GetWMIValue DataWidth "DataWidth" "SELECT DataWidth FROM Win32_Processor" |
Loopback wrote: |
потому что выполняется второе условие %CPath% > 0 на путь к тоталу: c:\total... |
Loopback wrote: |
Можно сделать дебажку с безусловным выходом после проверки командной строки и посмотреть, будет ли заметно быстрее. |
Flasher wrote: |
Ага, после правки условия заработало, но стало выдавать окна, касаемые WMI: |
Flasher wrote: |
Дебажку мне? Или сам сверишь? |
Loopback wrote: |
В старой версии sysinfo эта строчка работала нормально, как я понимаю? |
Loopback wrote: |
Это как хочешь |
Loopback wrote: |
Думаю да, я так понимаю, интересен режим MOVE_LEGACY? Поскольку MOVE_RIGHT делал то, что сейчас в тотале по-умолчанию. |
Code: |
ShellExec /SW_HIDE /W:1 /T "%COMMANDER_PATH%\Utils\Everything\Everything.exe" |
Code: |
SetEnv EMPTY |
Flasher wrote: |
Нельзя её как-то принудить? |
Flasher wrote: |
А хотелось бы. |
Loopback wrote: |
но не думаю, что при таких значениях есть смысл. |
Loopback wrote: |
Наверно, в этом случае только пытаться скрыть после запуска, если она вообще это позволит. |
Loopback wrote: |
Мне тоже Это действительно было неудобно. |
Flasher wrote: |
Флаг снимается из разных программ управления окнами. |
Flasher wrote: |
Эмм. В смысле "было"? Я прошу это исправить. |
Loopback wrote: |
В принципе на Autoit должно решаться просто. |
Loopback wrote: |
Раз это теперь работает в тотале, нужно чтобы работало и здесь. |
Code: |
ShellExec /SW_HIDE /W:1 /T "%COMMANDER_PATH%\Utils\Everything\Everything.exe" |
Code: |
ShellExec %commander_path%\prg\everything\everything.exe -startup |
Code: |
Pragma AutorunFinalizeSection |
Code: |
If ProcessExist /F ... |
Flasher wrote: |
А при чём тут Loopback, если запрос мой? |
Flasher wrote: | ||
А вот выгружать лучше так:
|
Flasher wrote: |
Мой вариант по факту выгружает все процессы по заданному пути при наличии. Ваш лично у меня запускает новый экземпляр, торчит в процессах 25 сек. и выходит без закрытия остальных. |
Flasher wrote: |
И если хотите полной портабельности, путь в кавычки брать таки стоит. |
enginigger wrote: |
Ваш вариант у меня вызывает ошибку "runtime error 207 at 02eb8e32" при закрытии ТС. |
Code: |
If ProcessExist /F '%commander_path%\prg\everything\everything.exe' Then |
Flasher wrote: |
А вы прописали свой путь вместо ...? |
enginigger wrote: |
закрывается с ошибкой |
Code: |
LoadLibrary Plugins\Autorun_Process.dll |
Flasher wrote: | ||
И при этом в начале конфига присутствует строка?
|
enginigger wrote: |
Но если Everything был запущен из другого места (для тестов, например), то так и останется висеть в процессах при закрытии ТС. |
enginigger wrote: |
Предпочту остаться при своем, за все время проблем не обнаружил. |
Flasher wrote: |
Т.е. описанное мной не подтверждаете, и все процессы без проблем моментально закрываются? |
enginigger wrote: |
в течение 2-3 секунд грузит процессор (записывает данные в базу, наверное) и закрывается. |
enginigger wrote: |
Никаких доп. процессов не появляется и в памяти не остается. |
Flasher wrote: |
Видимо, у вас мало данных на дисках. |
Flasher wrote: |
Этого чисто гипотетически не может быть, т.к. запуск процесса с любым ключом — это никак не выполнение внутренней команды (функции). |
Flasher wrote: |
Также что будет после закрытия ТС, если у вас было запущено, например, 3 процесса Everything.exe ? |
enginigger wrote: |
2,5 ТБ, всего ~400 тыс. файлов. Мне хватает. |
enginigger wrote: |
Потом через пару секунд закрывается основной. |
enginigger wrote: |
ни если несколько копий ТС запустить. |
Code: |
allow_multiple_windows=0 |
Code: |
ProcessExist /F Everything '%COMMANDER_PATH%\Utils\Everything\Everything.exe' |
Code: |
GetWMIValue Manufacturer Manufacturer "SELECT Manufacturer FROM Win32_Processor" |
Code: |
ProcessExecGetOutput Manufacturer %ComSpec% '/q/c for /f "skip=2 tokens=2 delims=:" %i in (''"%COMMANDER_PATH%\Utils\CPUIdC.exe"'') do echo%i &exit' |
Flasher wrote: |
Я как-то просил тебя cpuid привинтить. |
Code: |
|
Flasher wrote: |
А пока прошу сравнить |
Loopback wrote: |
выглядеть это, наверно, может как-нибудь так: |
Loopback wrote: |
Но это только на глаз |
Flasher wrote: |
Может, стоит ещё параметр, возвращающий описание добавить? |
Flasher wrote: |
На глаз мне бы твоя помощь не потребовалась |
Code: |
|
Loopback wrote: |
Описание параметров, думаю, лучше в справку. |
Code: |
MsgBox CDbl(Timer)*1000 |
Loopback wrote: |
таймер - это все-таки некий интервал. |
Loopback wrote: |
например до микросекунд |
BeTeP wrote: |
Дело в том, что MoveButton, в отличии от FixWindow, не только переносит кнопку, но и уменьшает ширину диалога копирования/перемещения.
|
Loopback wrote: |
Если интересно, можно попробовать запустить с параметром "/NARROW" и посмотреть как безобразно выглядит суженный диалог |
Code: |
|
Avada wrote: |
1. Можно ли в обычном (широком) режиме подвинуть (по умолчанию или опционально) все кнопки налево, чтобы пустое место отображалось не слева, а справа? |
Code: |
|
Avada wrote: |
2. Можно ли при Narrow как-то побороть это самое наложение опций без масштабирования, чтобы влезали последняя буква и скобка? |
Avada wrote: |
3. Про развёрнутый диалог сказано выше. Это сейчас самый серьёзный глюк, его надо как-то преодолеть. |
Avada wrote: |
То есть шансов на корректную подгонку развёрнутой нижней части диалога пока нет? |
Code: |
AddControl /QUEUEBTN "TButton" 2 |
Flasher wrote: |
А можно добавить изменение ширины кнопок? |
Flasher wrote: |
А также чтобы при перестановке кнопок переход к ним по [Shift+]Tab соответствовал текущей последовательности? |
Loopback wrote: |
Уже есть, параметр /W: (и /H). |
Avada wrote: |
А код как выглядит? |
Code: |
AddControl /QUEUEBTN /X:20 /W:20 "TButton" 2 |
Loopback wrote: |
Уже есть, параметр /W: (и /H). |
Loopback wrote: |
Но тут опять же дельфи, неизвестно как оно будет. |
Flasher wrote: |
Хм. Было бы хорошо, чтобы с уменьшением и соотв. сдвигом ключ /Narrow приводил бы к сужению диалога и комбобоксов до совокупной ширины кнопок с зазорами или хотя бы до фиксированной ширины, а то смысл теряется. |
Flasher wrote: |
И мне, например, не нравится, как торчит кнопка [+], уходя границей от верхнего комбобокса. |
Flasher wrote: |
список скрытых плюшек на этом не заканчивается? |
Flasher wrote: |
Ну, я думаю, ты постараешься |
Loopback wrote: |
А для диалогов можно менять те же параметры положения и размеров |
Loopback wrote: |
Потому что, например, эта кнопка в 10-ке торчит, а в семерке нет. |
Loopback wrote: |
Однако на всяких 4К мониторах от этого никуда не денешься. |
Loopback wrote: |
Вообще есть идея дать возможность отключить автомасштабирование |
Loopback wrote: |
чтобы в дальнейшем больше к этому плагину не возвращаться. |
Loopback wrote: |
А жаль, тема была бы полезная. |
Loopback wrote: |
С диалогом поиска, например, не работает, может потом посмотрю, похоже там тотал что-то ограничивает. |
Flasher wrote: |
Добавил AddDialog /W:-50 DIALOG_COPYMOVE — ничего не изменилось. |
Flasher wrote: |
Разве после смены DPI не будет несоответствия с потерей портабельной совместимости? |
Flasher wrote: |
Ты имеешь в виду MoveButton? |
Flasher wrote: |
Это точно. |
Flasher wrote: |
Взгляни, пожалуйста, на эти диалоги. Есть проблемные? |
Loopback wrote: |
В любом случае это будет опция.
если что-нибудь придумается - сделаю. Завтра посмотрю. |
Loopback wrote: |
Autorun пока ничего не грозит |
Loopback wrote: |
Добавить выделение / Фильтр ... - работает, но в тотале много диалогов с классом TCOMBOINPUT |
Loopback wrote: |
Мне нечего добавить к сказанному Avada. |
Flasher wrote: |
Может стоит ещё спецназваний добавить помимо трёх имеющихся? |
Flasher wrote: |
И ты можешь фиксатор сделать для верхних диалогов? |
Flasher wrote: |
Вообще-то rk2019 пишет не про этот диалог, а про диалоги в целом. Т.е. если что-то и добавлять, то к написанному мной. |
Loopback wrote: |
Спецназвания, думаю, нужно добавлять только там, где совсем никаких вариантов различить без дополнительных ухищрений |
Loopback wrote: |
О чем речь-то вообще? |
Справка плагина wrote: |
Поскольку в 32-битной и 64-битной версиях Total Commander используются разные классы элементов управления, для поддержки обеих версий необходимо в конфигурации Autorun сделать два набора и загружать нужный в зависимости от версии программы. |
Code: |
TOTALCMD#BAR#DATA |
Flasher wrote: |
Тогда это Файловые ассоциации (системные, wcx, по типам файлов). |
Flasher wrote: |
В FixWindow есть функция запоминания размера и позиции диалога. |
Avada wrote: |
Но далее в зафиксированном развёрнутом состоянии диалог отображается обычным, а не модифицированным. |
Avada wrote: |
Я полагаю, это нужно прописать несколько подробнее, с рекомендациями по практическому обеспечению этой самой нужной загрузки. И хоть один примерчик изменения диалога для TC x64 хорошо бы в справку. |
Loopback wrote: |
В связи с этим думаю переименовать параметр /queuebtn в некий нейтральный, например /marker. |
Loopback wrote: |
А вот "по типам файлов" - это какой? |
Flasher wrote: |
А как с этим связана кнопка очереди? |
rk2019 wrote: |
На ру-боарде я оставлял запрос под ником radeonuser. |
Avada wrote: |
Кнопка "Изменить" имеется в диалоге настройки внешних ассоциаций, но отсутствует в диалогах настройки WCX-плагинов и ассоциаций для внешнего просмотра. |
Loopback wrote: |
соответственно, я не могу получить с него текст для фильтрации по тексту. |
Flasher wrote: |
Можно ещё по родительскому классу сравнивать. |
Flasher wrote: |
А первую строку листбокса на предмет (нет) ты тоже не можешь считать? |
Loopback wrote: |
Flasher
rk2019 Оттуда копируете пример для "/NARROW", вставляете в конфиг Autorun и пробуете. Если что-то не работает (а так наверняка и будет, т.к. в разных версиях тотала разные кнопки имеют разные номера экземпляров) - в своей версии 8.52а находите нужные имена классов и номера контролов (в справке указаны инструменты, которыми это удобно делать) и меняете по своему вкусу. Ограничений сейчас в принципе только два - это невозможность доступа к кнопке прикрепления после сужения диалога, и невозможность сужения комбобоксов в версии x64. |
Quote: |
Поноценный узкий диалог возможен только на версии 8.01. Версия 8.52а + новая версия movebutton_20190225.zip По сути, недочеты чисто косметические, в 3-х местах === И ЗДЕСЬ ЗАВЕТНАЯ КАРТИНКА === |
Loopback wrote: |
Могу, а зачем? Эта строка во всех диалогах этого типа. |
Flasher wrote: |
Выяснилось, что если в wcx-списке есть путь с пробелами, то (нет) уходит на нижеследующие строки, чего не скажешь о "По типам файлов...". |
Loopback wrote: |
делают фактически одно и то же. |
Loopback wrote: |
Просто усилия для различения уже растут в прогрессии, и я все больше сомневаюсь в необходимости дальнейшего усложнения. |
Code: |
|
Avada wrote: |
считаются, судя по сообщениям об ошибке, несуществующими |
Loopback wrote: |
На данный момент это всё, больше хотелки не принимаю |
Code: |
WinWaitClose($title) |
Flasher wrote: |
Мм.. Забыл об одной важной вещи — ключ центрирования диалога (AddDialog) относительно родительского окна (хотя можно и главного ТС). |
Flasher wrote: |
Почему-то нижние чекбоксы не уменьшаются по ширине, разрывая правую границу группбокса. |
Flasher wrote: |
И комбобокс списка перезаписи не всегда сокращается для DIALOG_COPYMOVE_POST |
Loopback wrote: |
Но в любом случае, если включить сохранение позиций, оно будет перекрывать эту настройку. И это последнее |
Code: |
# Сохранение высоты "Определить цвета для типов файлов": |
Loopback wrote: |
Там класс "TCheckBox", а не "TMyCheckBox" должен быть. |
Loopback wrote: |
Попробую поставить ожидание комбобокса вместо чекбокса. |
Loopback wrote: |
все равно хотелось бы понять, почему вообще такая проблема возникает, когда Autorun запускается, но не загружает подплагин. |
Avada wrote: |
Но, что интересно, с тестовой версией Autorun появляются только сообщения о загрузке библиотек, ошибки не выводятся, диалог копирования изменяется правильно. |
Flasher wrote: |
Я было подумал, что с /SAVE:4/8/12 центрирование будет происходить само собой |
Flasher wrote: |
Что делаю не так? |
Code: |
AddCondition /TEXT /VISIBLE:1 "Определить цвета для типов файлов" |
Code: |
AddCondition /TEXT "TDlgCustomColors" 0 "Определить цвета для типов файлов" |
Code: |
|
Flasher wrote: |
С этой проблемой сталкивался ещё в далёком 2011 и даже не надеялся, что без полноценного закрытия ТС это возможно исправить. |
Avada wrote: |
И почему эта карусель зависит от местоположения? |
Avada wrote: |
Тогда прошу конкретных рекомендаций, |
Loopback wrote: |
Нет, такого не предполагалось. |
Loopback wrote: |
/TEXT и /VISIBLE: - вместе не используются. |
Loopback wrote: |
Во-вторых, где класс/экземпляр контрола, для которого создается условие? |
Loopback wrote: |
На самом деле, должно работать и с пустым именем класса: |
Loopback wrote: |
Ну как минимум, неправильно используешь функцию AddCondition |
Loopback wrote: |
Это надо документировать. |
Loopback wrote: |
закрытие окна не означает полной выгрузки процесса |
Flasher wrote: |
Посчитал, раз он задан в AddDialog, то повторно его писать не требуется в отличии от /PARENT. |
Flasher wrote: |
Всюду добавил "" 0 после /TEXT — по нулям. |
Flasher wrote: |
Так в командах и твои примеры с TASSOCIATEDLG есть — не работает. |
Flasher wrote: |
Вот упрощённый вариант. |
Code: |
# Сохранение размеров "Выбор команды": |
Quote: |
Если окно открывается из главного окна Total Commander, то при использовании флага 4 диалог будет отцентрирован относительно «Рабочего стола». |
Flasher wrote: |
Разве это логично? |
Loopback wrote: |
а родительским к главному окну - десктоп. |
Flasher wrote: |
Почему к главному-то, если должно быть к диалогу? |
Code: |
|
Flasher wrote: |
Что по глюку с "Выбор команды"? |
Code: |
AddDialog /W:-70 "DIALOG_COPYMOVE" |
Loopback wrote: |
Просто иначе использование 4 для диалогов из главного окна вообще ничего не дает. |
Code: |
Dialog1/2 без ключа 4 центрируется относительно Total Commander |
Loopback wrote: |
Скорее всего потому, что его позиция сохраняется самим тоталом. |
Loopback wrote: |
А Win+Left/Right у меня ничего не делают вообще. |
Code: |
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DisabledHotkeys |
rk2019 wrote: |
Вроде говорили что все исправимо, а у меня получается криво. |
rk2019 wrote: |
Я понимаю что 2 человека в этой ветке понимают, но может и остальным расскажите в какой файл эти строки ложить надо?? |
Avada wrote: |
где могут отличаться контролы |
Avada wrote: |
что в данном конкретном случае не всё исправимо |
Flasher wrote: |
В справке "help_ru.chm" на странице "Установка" (не говоря уж про десятки страниц топика) о каком файле идёт речь? Вы как пришли к результату на скриншоте без правки этого файла? А других файлов настройки у плагина Autorun нет. И надо понимать, что ценность имеют не только приведённые строки. |
Code: |
LoadLibrary Plugins\Autorun_MoveButton.dll |
Code: |
AddDialog /W:-70 "DIALOG_COPYMOVE" |
rk2019 wrote: |
Этого достаточно для получения того вида диалога, котрый выложил скриншотом. |
Flasher wrote: |
И это не обойти (ожиданием отрисовки, например)? |
Flasher wrote: |
А должны, если у тебя Win7+, и ты их в реестре не заблокировал параметром |
Code: |
|
Loopback wrote: |
но я вспомнил о чем это - есть такая хрень как "автоматическое упорядочивание окон при приближении к границам экрана", наверно самая бесящая функция, которую я отключаю сразу после установки системы |
Loopback wrote: |
т.к. теперь отслеживание нажатия производится по 3-м комбобоксам, а в той версии вместо одного из них TAltEdit. |
Flasher wrote: |
Вопрос лишь в том, чего ждать |
Flasher wrote: |
На 7-ке этой фичи нет |
Flasher wrote: |
Я об этом, если ты не заметил, уже дважды написал. |
Loopback wrote: |
с настраиваемой задержкой после открытия окна |
Loopback wrote: |
Таки что-то есть, если не отключать опцию "автоматическое упорядочивание..." |
Loopback wrote: |
Ты писал про TAltEdit, а я про непригодность вчерашней версии для старых версий Тотала. |
Flasher wrote: |
Почему версия-то непригодна |
Code: |
|
Loopback wrote: |
+ добавлен параметр /WAIT:<ms> |
Code: |
# Сохранение размера и позиции "Выбор команды" |
rk2019 wrote: |
Сразу предупреждаю, ТС 9.ХХ я не приемлю ввиду растянутого шага в списке файлов + замене иконок под закос стиля Вин 10. Короче такой ТС в топку - последняя адекватная версия 8.52а с классическим видом. |
Flasher wrote: |
Аж 2 секунды поставил — нет результата. |
Flasher wrote: |
Может, ты сделал задержку не до момента изменения окна из запомненных данных, а до момента сохранения в Autorun_MoveButton.pos? |
Flasher wrote: |
И что сулит такое запоминание при переходе на мониторы с меньшим разрешением? Тут нет автоподгонки под края экрана? Не лучше сделать в процентах от него? |
Flasher wrote: |
Кстати, ты не хочешь в хелп мой пример с выравненными под оптимальную ширину кнопками добавить?
Хотя у Гислера этот момент не регламентирован, разница ширин кнопок гуляет в разных диалогах в диапазоне из десятка-другого пикселей. |
Flasher wrote: |
И что там по хотелке? Не хотелось бы релиза без неё. |
Loopback wrote: |
Не знаю, может мы разные результаты ожидали? |
Loopback wrote: |
Нет, это уже избыточно. |
Loopback wrote: |
Только комментарии надо будет под английскую версию переводить. |
Loopback wrote: |
Это другой плагин, какое отношение он имеет к MoveButton? |
Flasher wrote: |
Нет. После Win+Left/Right позиция и размеры окна "Выбор команды" после закрытия по Esc не запоминаются. Напомню, что тема на x86 7-ке классическая. |
Code: |
|
Flasher wrote: |
А что сложного в процентной реализации /SAVE? Вроде математика простая. |
Flasher wrote: |
И раз сам ТС |
Flasher wrote: |
Я думал, ты про релиз Autorun писал. |
Loopback wrote: |
У меня запоминается и воспроизводится. |
Loopback wrote: |
т.к. воспроизводится на разных экранах всё по разному. |
Loopback wrote: |
Нет, слишком муторно. |
Loopback wrote: |
Не вижу проблем. |
Flasher wrote: |
По-разному в процентном соотношении как раз сейчас. |
Flasher wrote: |
А с процентами будет соответствие размерам экрана. Но есть и более оптимальный вариант. Запонимать пиксели в секциях разрешений аля [1024x768 (10x20)], как это реализовано в wincmd.ini. |
Flasher wrote: |
Но это ведь позволит не дёргать окно с ожиданием, когда это не требуется. Узнать высоту экрана и сравнить запомненной — это же самое простое. |
Flasher wrote: |
Ожидалось, что всё по меньшей мере пойдёт в совокупности. |
Loopback wrote: |
Но со всеми вытекающими минусами такого подхода, в виде плодящихся секций. |
Loopback wrote: |
будет работать исключительно в граничных условиях с этим окошком. |
Flasher wrote: |
Можно сделать /WAIT:<ms>[:H] или добавить /WAITH:<ms>. |
Loopback wrote: |
Более того, тут высота окна не равна высоте экрана. |
Flasher wrote: |
(высота окна >= высоте экрана) |
Loopback wrote: |
Писать разные вещи параллельно очень неудобно. |
Flasher wrote: |
Это, конечно, не катастрофа. Делай, как тебе удобней. |
Loopback wrote: |
Я уже писал, что лично мне он давно не особенно интересен. |
Loopback wrote: |
Единственное что хотелось - его поправить и забыть. А во что это вылилось. |
Flasher wrote: |
Не думаю, что мы заметим эти минусы. |
Flasher wrote: |
(высота окна >= высоте экрана) |
Flasher wrote: |
Осталось совсем чуть-чуть. |
Loopback wrote: |
но в определенных условиях (виртуальные машины к примеру) количество секций будет разрастаться прилично. |
Loopback wrote: |
Зачем огород городить? |
Loopback wrote: |
Если это не прервать, процесс будет бесконечен. |
Flasher wrote: |
Виртуальные нужны для тестов, а не повседневки. |
Loopback wrote: |
ОК. Убедил. |
Flasher wrote: |
Не будет. Уверяю. |
Loopback wrote: |
По количеству секций там может быть и больше, т.к. в виртуалке может быть любое разрешение экрана. |
Loopback wrote: |
Но проблема в самом деле гипотетическая, в крайнем случае всегда можно снести pos-файл и начать заново. |
Loopback wrote: |
Это, кстати, для любых ситуаций будет правильно. |
Flasher wrote: |
Мм.. А если проверять на виртуальность и игнорировать? P.S.: Я ещё xml выше предлагал. |
Flasher wrote: |
Т.е. плагин будет сносить файл как только выяснит, что разрешение не соответствует предыдущему? |
Loopback wrote: |
Да не, ни к чему это, для этой задачи ini вполне достаточно. |
Code: |
[8449BB92] |
Code: |
[1024x600 (8x16)] |
Loopback wrote: |
Идентификаторы это хэш от строки, включающей имя класса и все условия. |
Flasher wrote: |
Удобно закомуфлировал. |
Loopback wrote: |
Хэш для разных разрешений будет разный. |
Loopback wrote: |
(для этого и Version) |
Flasher wrote: |
Но LastResolution при отсутствии всё равно нужен. |
Loopback wrote: |
А вот нужен ли? |
Структура файла wincmd.ini wrote: |
[1024x768 (10x20)] Данные, зависящие от разрешения экрана и размера шрифта (размер шрифта определяется числами в скобках: (8x16) — для нормального и уменьшенного шрифта, (10x20) — для крупного шрифта). |
Flasher wrote: |
а в исходном увеличении некоторых диалогов |
Flasher wrote: |
А насколько целесообразно здесь учитывать размер шрифтов, как в ТС? |
Flasher wrote: |
Про Version поясни, пож-та. |
Loopback wrote: |
как будто ты по десять раз на дню меняешь разрешения (и все разные) и настраиваешь их. |
Loopback wrote: |
Ну ок, давай громоздить излишества, одним больше, одним меньше... |
Loopback wrote: |
Да я уже не знаю ,что тут еще считать целесообразным. |
Flasher wrote: |
Одна секция и один ключ — |
Flasher wrote: |
А если использовать предложенный мной вариант с секциями разрешений |
Flasher wrote: |
только при смещении окна за левую границу оно не смещается до левого края. |
Flasher wrote: |
Почему для каждого окна создаётся по две секции с одинаковыми данными? |
Flasher wrote: |
Сперва не удалял pos, секция Common и три указанных ключа появились. После удаления файла и новых тестов секция не появилась. |
Flasher wrote: |
С "Выбор команды" интересная ситуация |
Loopback wrote: |
Ок, поправлю, но не сегодня. |
Loopback wrote: |
Это норма. |
Loopback wrote: |
Ключи создаются только при запуске |
Loopback wrote: |
Не знаю, значит что-то все-таки сохраняет. |
Flasher wrote: |
При каждом вызове любого окна считываются все хэши на предмет класса и разрешения? |
Loopback wrote: |
"Зависимые" - один раз для одного диалога при каждом открытии диалога |
Loopback wrote: |
При изменении разрешения строка разрешения поменяется, опять будет другой хэш. |
Loopback wrote: |
По "экономии" секций даже говорить не о чем, нет никакой принципиальной экономии, условно говоря, какая разница, 100 значений по 50 в 2 секции или по 4 в 25. |
Loopback wrote: |
зато не надо делать кучу конкатенаций для чтения каждого значения в виде хэш_Left и т.д. |
Loopback wrote: |
Хэши "независимые" считаются один раз для всех диалогов при запуске |
Loopback wrote: |
плюс реализация уже была сделана, удобная и быстрая, зачем изобретать велосипед? |
Quote: |
Уж явно 4 конкатенации по скорости значительно быстрее вычисления хэша. |
Quote: |
интересуюсь не в целях перекомпиляции |
Loopback wrote: |
Это понятно |
Flasher wrote: |
. Я бы ещё переименовал плагин под новые реалии. |
Avada wrote: |
Намёк на изменения содержимого окон достаточно адкватен |
Avada wrote: |
впредь просто игнорировать |
Code: |
# Сохранение высоты "Определить цвета для типов файлов": |
Code: |
# Сохранение размеров "Файловые ассоциации": |
Code: |
# Увеличение высоты "Добавить выделение": |
Loopback wrote: |
Ну ок, соглашусь, если смотреть чисто по структуре может не очень логично. ... Могу и убрать. |
/CENTER:<flags> wrote: |
Обратите внимание, центрирование окна происходит после восстановления с параметром /POS, ... |
Loopback wrote: |
Могу и добавить, мне не жалко |
Flasher wrote: |
Перестали запоминаться размеры этих окон |
Flasher wrote: |
диалог появляется с тормозами |
Flasher wrote: |
Не получается отличить диалог создания каталога от диалога фильтрации |
Flasher wrote: |
Ну, и убрать соотв. фразу про Рабочий стол из описания. |
Flasher wrote: |
Считаю, тут и про SAVE:4/8/12 есть смысл написать. |
Flasher wrote: |
Так и? |
Loopback wrote: |
Только перестать запоминаться они не могли, тут сами диалоги перестали различаться. |
Loopback wrote: |
Во всяком случае я не вижу разницы в скорости его появления с плагином или без. |
Loopback wrote: |
Так и не получится, ты смотришь скрыта ли кнопка, а ее в этом диалоге просто нет. |
Loopback wrote: |
Для этого нужно вводить новое условие существования контрола. |
Code: |
# Изменение диалога создания файла (Shift + F4): |
Loopback wrote: |
Что именно про них написать? |
Loopback wrote: |
С другой стороны, чего ждать? Выкладывай, добавлю. |
Avada wrote: |
по запарке никому не попался на глаза |
Avada wrote: |
Хоть пару ещё надо дать |
Avada wrote: |
Кроме того, там сейчас даже явным образом не указано |
Flasher wrote: |
Взгляд на проблему с разных берегов. |
Flasher wrote: |
А я это не различаю. Если кнопки нет, то она и не видима. |
Flasher wrote: |
Добавлять новый ключ не надо, только равенство между видимостью и наличием. |
Flasher wrote: |
Но тут Avada выше подбросил мину с диалогом (Shift+F4) |
Flasher wrote: |
Вообще указание параметра /POS сбивает с толку. Он же нигде больше в таком виде не фигурирует. ... А написать лучше так: |
Flasher wrote: |
И я предлагаю отказаться от именования ключей параметрами. У ключей есть параметры. Получается, параметры у параметров. |
Flasher wrote: |
Вот без комментов |
Loopback wrote: |
Почему же, в текущей версии он в примерах. |
Loopback wrote: |
Соглашусь, жду предложений. |
Loopback wrote: |
Видимая или существующая - совсем разные вещи, причем очень важные для различения диалогов |
Loopback wrote: |
Попробуй его поставить выше других TCOMBOINPUT. |
Loopback wrote: |
Так что пусть остаются просто "параметры", "параметры со значением" и "параметры с флагами". Надо только к одному знаменателю всё привести. |
Avada wrote: |
Я думаю, Flasher по какому-то другому диалогу легко сможет предложить что-то интересное по итогам своих экспериментов и запросов. |
Avada wrote: |
А для 64-битного заодно можно? |
Flasher wrote: |
А в чём важность? |
Flasher wrote: |
Пока ты пишешь ответы |
Flasher wrote: |
Тогда придётся отказаться от флагов. |
Flasher wrote: |
Я вообще предлагал все годные окна Тотала собрать |
Loopback wrote: |
Может сейчас именно такой ситуации и не окажется, но в следующей версии Гислер возьмет и сэкономит еще пару диалогов. |
Loopback wrote: |
проверка enabled/disabled контрола, тогда добавим и его, пока я таких мест не видел. |
Loopback wrote: |
С чего бы это? Параметр со значением = сумме флагов. |
Loopback wrote: |
чувствую, в справке придется отдельный справочник с примерами делать |
Flasher wrote: |
Были прецеденты? |
Flasher wrote: |
Были прецеденты? |
Flasher wrote: |
что потреба их там различатать как от козла молока |
Flasher wrote: |
Т.е. "со значением"? |
Flasher wrote: |
А там не так уж и много нужных окон. Впрочем, я не настаиваю, добавь по своим лимитам, благо примеры приведены. |
Loopback wrote: |
Были. Например, раньше окна создания каталогов и диалога по Shift+F4 были разные. Вот, и Avada еще подогнал примеров. |
Loopback wrote: |
И если это позволит, пусть и потенциально, различить диалоги, зачем делать урезанный вариант? |
Loopback wrote: |
Термин "флаг" оставлю, он лучше всего подходит под эту ситуацию. |
Loopback wrote: |
Нашел только этот пост, но там везде только сохранение (ну кое-где расширение списков, но это вроде как и не назовешь полноценным исправлением). |
Flasher wrote: |
Покажи мне пример скрытия ранее видимых контролов. |
Flasher wrote: |
Пока мне этот потенциал кажется сверхмалым. |
Flasher wrote: |
Почему же авторы перевода справки в отношении wincmd.ini так не считают? |
Flasher wrote: |
Неважно, что там. |
Loopback wrote: |
Я не говорил, что такой пример сейчас есть. |
Loopback wrote: |
Но я лучше учту это и сделаю сразу то, что будет работать всегда |
Loopback wrote: |
Наверно, именно потому что это ini - а в нем приняты секции, ключи и значения? И потому что это совсем другая справка? |
Loopback wrote: |
Для функций параметры принято называть параметрами. Откуда здесь взяться ключам - вообще непонятно. |
Flasher wrote: |
Ты сам задал такой синтаксис с командами и ключами как в консольных утилитах. |
Loopback wrote: |
и почему-то раньше тебя это не смущало |
Loopback wrote: |
Давай я все же не буду переделывать всю справку |
Flasher wrote: |
Раньше такой формат записи везде значился как переключатели, а не параметры. |
Flasher wrote: |
первым стоит слово "Функция" |
Flasher wrote: |
но стали криво центрироваться |
Flasher wrote: |
в итоге ты взял не те три |
Loopback wrote: |
C центрированием ничего не делалось |
Flasher wrote: |
То есть всё так и останется? |
Code: |
|
Loopback wrote: |
Так всё нормально? |
Code: |
IniRead LNG '%COMMANDER_INI%' Configuration LanguageIni |
Loopback wrote: |
PS: Кстати, как здесь делается скрытый текст? |
Flasher wrote: |
Короче, давай так |
Flasher wrote: |
Чтобы не зависеть от языка, можно научить IniRead читать lng? |
Flasher wrote: |
Нажми над моим постом кнопку "цитата" |
Loopback wrote: |
Но другой функцией в принципе можно |
Loopback wrote: |
Ну почему "cut" для скрытого текста? |
Flasher wrote: |
Сделай, пож-та. |
Flasher wrote: |
убрать под кат |
Loopback wrote: |
Не раньше релиза ModifyDialogs |
Quote: |
Приведенная ниже просьба, настройками ТС никак не решается. За 2 дня я перепробовал 100500 вариантов и не получил результат. Поэтому не надо писать, мол это 1000 раз обсуждалось.... |
Quote: |
Если получаем такой диалог по F8, то при Shift+F8 он уже не такой. Вид диалогов зависит и от того, что нажимаем (F8 или Shift+F8 ) и от настроек системной Корзины (используется она или нет) и от фазы Луны и от хрен пойми ещё чего. |
Loopback wrote: |
Ок, так и запишем. |
Flasher wrote: |
Слушай, а зачем вообще кавычки в указании контролов? Там же нет пробелов, да и без них работает. |
Flasher wrote: |
Хотя результат в обоих случаях положительный, т.е. в строке с AddCondition смысл пропадает. |
Loopback wrote: |
У меня просто привычка уже, все строки окавычивать. |
Loopback wrote: |
в последнем |
Flasher wrote: |
но теперь уже с DIALOG_COPYMOVE_PINNED |
Code: |
# Центрирование "Шрифт" относительно "Настройка" с растягиванием высот списков: |
Quote: |
Подборка разных диалогов с условиями различения и настройками сохранения (для 32-битной версии) (автор Flasher):. |
Flasher wrote: |
Прям вкоробило |
Flasher wrote: |
Вообще по хелпу могу полностью внимательно пройтись |
Loopback wrote: |
Если не лень - почему бы и нет? |
Flasher wrote: |
Ключ /T призван завершать запускаемую программу с закрытием ТС. |
Code: |
17=%COMMANDER_PATH%\Plugins\wdx\Autorun\autorun.wdx64 |
Code: |
# После этой строки все действия выполняются при закрытии TC |
rediffusion wrote: |
RecycleBinEmptyU%SYSINFO_OSARCH%.exe |
Code: |
# После этой строки все действия выполняются при закрытии TC |
Loopback wrote: |
Релиз выложен на сайте. |
Flasher wrote: |
сохранение, а не удаление |
Flasher wrote: |
Релиз удался на слуву! |
Loopback wrote: |
тут именно удаление по желанию. |
Flasher wrote: |
Ну, так при автомате он сам его должен удалить. |
Loopback wrote: |
Если ты понимаешь этот вопрос по-другому |
Flasher wrote: |
<searchtext> у AddCondition, как я понял, искать по маске со звёздочкой не умеет |
Flasher wrote: |
Может, не работает из-за того, что текст контрола динамический? |
Code: |
IniRead LNG %COMMANDER_INI% Configuration LanguageIni |
Quote: |
Russian (Русский)
codepage=65001 |
Quote: |
Кодировка файла определяется автоматически по значению в строке «codepage». |
Flasher wrote: |
Пробовал %LNG% и без указания пути. |
Flasher wrote: |
Т.е. принудительно на UTF-16 и UTF-8? Иначе как? К тому же codepage= не является обязательной строкой. |
Loopback wrote: |
А случайно LanguageIni не находится в переадресованной секции? |
Loopback wrote: |
В %LNG% что-то есть? |
Loopback wrote: |
Для UTF-8 она обязательно должна быть, иначе в тотале кракозябры. |
Flasher wrote: |
Пролема исключительно в LngRead. |
Flasher wrote: |
Но, полагаю, функция должна быть универсальной. Допустим, из плагинного lng нужно будет что-то считать. |
Quote: |
AddDialog /CENTER:3 /SAVE:12 TDlgCustomColors
AddCondition /TEXT "" 0 "%IntAssoc%" |
Loopback wrote: |
т.к. форматы разные, хоть и похожи. |
Flasher wrote: |
AddCondition на переменную хоть бы хны |
Flasher wrote: |
Но /EV- касается отключения переменных окружения, а не внутренних переменных плагина. |
Flasher wrote: |
К тому же есть и другие команды, где нет /EV- в описании |
Flasher wrote: |
Думал ты сразу сообразишь, когда я запросил lng-ридер. |
Loopback wrote: |
Думаю, стоит это уточнить в справке. |
Loopback wrote: |
Где просто какой-нибудь текст (например параметры запуска) - там есть /EV. |
Loopback wrote: |
MsgBox исключение |
Loopback wrote: |
если ты заметил. |
Flasher wrote: |
В IniRead и RegRead нет. Добавишь? |
Flasher wrote: |
Вообще-то нет. |
Flasher wrote: |
Не суть. Там связь была непосредственная с этим. Просто так от Lng-читалки толку бы не было. |
Loopback wrote: |
Кстати, в ini* еще надо бы поддержку редиректов секций добавить. |
Loopback wrote: |
значит такой вариант достаточен. |
Loopback wrote: |
Если нет - надо добавить. |
Loopback wrote: |
в любых кодировках |
Flasher wrote: |
Не вижу. |
Flasher wrote: |
Так уж в любых? |
Flasher wrote: |
autorun.cfg мне пока хватает и в ANSI. Это, видимо, больше для некоторых других языков актуально, где, например, нужно свои комменты писать. |
Loopback wrote: |
вот там реально это может понадобиться? |
Loopback wrote: |
Ну да, не совсем, UTF32 не поддерживается |
Loopback wrote: |
добавлось там - автоматом и здесь. |
Flasher wrote: |
Полагаю, там список одним UTF32 не ограничивается. |
Flasher wrote: |
осталась только GetCpuInfo |
Flasher wrote: |
если, конечно, тебе в голову не ударит вернуться к созданию полноценного скриптового движка |
Loopback wrote: |
Надо было уточнить, что "в любой распространенной юникодной кодировке" |
Loopback wrote: |
Да, сейчас всё зарелизю и займусь. |
Loopback wrote: |
От этого придется отказаться. |
Flasher wrote: |
Я думал, что может быть некая надстройка над имеющимся типа скриптинга в рамках TCMediaInfo.xml. |
Code: |
IniRead LNG %COMMANDER_INI% Configuration LanguageIni |
Flasher wrote: |
Может, сделаешь новую команду (Split или StrRegExpReplace)? |
Flasher wrote: |
Может, тут /SW_SHOWNOACTIVATE тоже стоит добавить? Или от /SW_MINIMIZE следует ждать того же эффекта? |
Code: |
# Настройки окна копирования/перемещения |
Loopback wrote: | ||
Да, сейчас всё зарелизю и займусь. |
Hedin wrote: |
можно ли плагином менять размеры надписей на форме, в частности в окне копирования файлов? |
Flasher wrote: |
Нет, это обсуждалось. |
Flasher wrote: |
Похожий эффект будет и при открытие тулбара как меню в горизонтальном ключе (с -2 между кнопками). |
Flasher wrote: |
Честно говоря, не понимаю, зачем лишать себя F2/F7/F8 кнопок. |
Flasher wrote: |
P.S.: Зачем же так ломать своё зрение кислотно-болотным цветом. Я аж прослезился... |
Avada wrote: |
Во-первых, замечание за нарушение правил форума (добавление неформатных картинок). Излишества заменены ссылками. |
Avada wrote: |
А про кнопки, если помните, был разговор ещё в июле на ру-борде, где вы регистрировались под другим ником, но предъявляли похожие картинки, только те выглядели поприличнее. |
MVV wrote: |
сообщил о баге |
MVV wrote: |
Эксклюзивная тема оформления действительно замечательно связывает сообщения. |
Hedin wrote: |
Эээ, это Вы о чём? В смысле кнопок F2/F7/F8? Я про надписи спрашивал. |
Flasher wrote: |
На скриншоте эти полезные кнопки вырезаны из диалога. |
Hedin wrote: |
Там же ничего не вырезано. |
Code: |
LoadFont /N System\Fonts\ArialMod.ttf |
Skif_off wrote: |
AkelPad нормально этот Anonymous загружает-выгружает? |
Avada wrote: |
Hedin
И вырезать, скорее всего, там ничего не удастся. |
Quote: |
Во-вторых, в исходном посте речь шла про изменение размера, но не про передвижку (смысл которой мне тут вообще непонятен). |
Quote: |
В-третьих, даже с вроде бы хорошо отработанными статическими элементами диалогов в TC разной битности и разных версий при вмешательстве через плагин могут наблюдаться самые разные непредсказуемые эффекты. |
Quote: |
(Кстати, по увеличению числа кнопок в диалоге настройки панели инструментов, если обратили внимание, дано отрицательное заключение разработчика.) |
Hedin wrote: |
Я это уже читал. MVV приводил эту ссылку, я ему ответил. |
Avada wrote: |
Да, но по вашей реакции можно предположить, что ту тему вы либо на момент этого ответа не прочитали, либо не поняли прочитанное. |
Avada wrote: |
И что по второй вашей хотелке тоже ожидать нечего, думаю, уже понятно. Се ля ви. |
Code: |
2.0.8 |
Code: |
ControlSetMouseAction [switches] "" <индекс контрола> <CMD|EMCMD> <команда> |
Code: |
ControlSetMouseAction /R /B:7 "" 17 EMCMD em_tcutils_tcmenupopup %COMMANDER_PATH%\Config\Exit.mnu |
Code: |
ControlSetMouseAction /W:F /K:R "" 7 CMD 570 |
Flasher wrote: |
Спасибо за запрошенные GetCpuInfo (7 лет, етить-колотить! ) |
Flasher wrote: |
Может, и с прокруткой табов справится с учётом? |
Code: |
ControlSetMouseAction /W:F "" 26 CMD 3006 |
Flasher wrote: |
Жаль только что-то посложнее |
Flasher wrote: |
Мой вопрос видел? А от Avada? |
Code: |
|
Flasher wrote: |
Смотрю, последняя порция правок в help так и не внесена. |
Flasher wrote: |
/С для 19 команд и /SW_SHOWNOACTIVATE также подвисли в ожидании. |
Loopback wrote: |
Такая конструкция будет работать, но только для активного окна |
Loopback wrote: |
Ну оно и не планировалось как комбайн. |
Loopback wrote: |
Видел. Просто урезать нельзя. |
Loopback wrote: |
А режим NARROW теперь совсем всё, можно его убирать. |
Loopback wrote: |
Вижу только 2 правки от 30 октября, из них одна учтена. |
Loopback wrote: |
всё не так просто и очевидно, как может показаться. |
Loopback wrote: |
Хотя для Sleep и SendCommand - это называется сделать только ради того, чтобы было. |
Loopback wrote: |
А вот целесообразность использования в командах со строчными значениями (например IniRead, MsgBox, а особенно GetUptime) мне неочевидна. |
Loopback wrote: |
Блок вычисления не работает со строками |
Loopback wrote: |
Какое из них вычислять? |
Flasher wrote: |
У меня на TC 9.51 RC5 x32 не завелось. |
Flasher wrote: |
О как. ) |
Flasher wrote: |
См. 3 сообщения от 20 и 26 июля. |
Flasher wrote: |
В слипе может быть множитель (коэффициент) для предусловий выполнений без ожидания.
А в SendCommand — сложение и вычитание для сопряжённых (левая/правая либо активная/пассивная панель) индексов команд. В приведённом скрипте с Esc для SendMessage это можно наблюдать. WM_USER+50 тут как раз кстати. Как пример — первые пару условий для Select Case. |
Flasher wrote: |
Для IniRead в отличии от IniWrite не столь важно.
MsgBox нужен для отладки. Там смысл расчётов при получении нужного числа для потенциальной вставки формулы в другую команду вполне очевиден. Аналогично и в отношении получения санти/децисекунд для GetUptime. |
Flasher wrote: |
Я надеюсь, пока не работает. ) |
Flasher wrote: |
То, которое после возвращения значений переменных будет иметь только цифры и вычислительные знаки. Или можно придумать какой-то экранный знак (~@$*ℱ) или обёртку из пары знаков (угловые/фигурные скобки, к примеру). |
Loopback wrote: |
Странно, на той же версии работает. |
Loopback wrote: |
Наверно все же лучше сделать для команды ключи типа /920 /950 и т.д., со своими наборами дефолтных настроек, чтобы не возникло неоднозначности. |
Loopback wrote: |
Но вроде и не понадобилось. |
Loopback wrote: |
В общем склоняюсь к тому, чтобы сделать для всех команд с числовыми значениями (Sleep, StrLeft, StrRight, StrMid, StrPart) |
Loopback wrote: |
Остальное пока нет. |
Flasher wrote: |
Не знаю. У меня просто файловая панель прокручивается, и всё. /K:C или /K:A не помогли. /K:R как модификатор вроде как не годится, т. к. по-любому меню выскочит.
/X1 и /X2 не упомянуты. Поддерживаются? |
Flasher wrote: |
Не, не надо. Вдруг Гислеру приспичит в новой версии опять что-то поменять и сдвинуть, как процессе бет он двигал кнопки. Пусть будет кастомный вариант. |
Flasher wrote: |
StrPos ещё. |
Flasher wrote: |
А как же IniWrite, RegWrite |
Code: |
<секция> <ключ> [<текст>] |
Flasher wrote: |
AddControl, где сплошные числа? |
Loopback wrote: |
Такая конструкция будет работать, но только для активного окна, так работают команды 3005/3006. |
Code: |
ControlSetMouseAction /W:F "" 26 CMD 4001,3006 |
Loopback wrote: |
При наведении на табы - прокручивается панель? |
Loopback wrote: |
/X1 и /X2 только в виде модификаторов. |
Loopback wrote: |
Можно и как основные добавить, просто мне их проверять не на чем. |
Loopback wrote: |
В нем нет числовых значений. |
Loopback wrote: |
Хм, и где здесь числа? |
Loopback wrote: |
А в параметрах со слешами вообще не получится использовать вычисления. |
LonerD wrote: |
Работает, но прокручивается только активная панель. |
LonerD wrote: |
Последовательно cmd команды выполнять можно? Наподобие такого: |
LonerD wrote: |
Было бы неплохо иметь возможность временно отключать-включать функционал после запуска тотала. |
Flasher wrote: |
Нужно. Я тебе первой ссылкой пример, которым пользуюсь, скинул. |
Flasher wrote: |
А в переменную нельзя сделать запись с вычислением? |
Flasher wrote: |
Так куча значений/параметров ключей записывается в числовом виде. |
Loopback wrote: |
Ну да, я же про это и писал. |
Loopback wrote: |
Ок, поддержку допкнопок добавлю. |
Loopback wrote: |
В смысле? Разве Set не для этого? |
Loopback wrote: |
Тем не менее это не делает сами параметры числовыми. |
Flasher wrote: |
Т.е. "не работает". Как если бы строк в конфиге не было. |
Flasher wrote: |
Гуд. Только бы ещё завелось это всё.
Кстати, а хэндлы ты получаешь только при запуске плагина? После скрытия/показа компонентов окна ТС они обновятся — и привет. |
Loopback wrote: |
+ в выражениях добавлена поддержка ключевых слов "not", "true", "false"
+ более детальная обработка ошибок в выражениях + в выражениях добавлен ключевой символ "&" для конкатенации |
Loopback wrote: |
проще оказалось сделать "вычисляемость" единообразно для всех параметров (не переключателей!). Вычисления производятся при указании % непосредственно перед кавычками. |
Loopback wrote: |
т.е. если строка не содержит зарезервированных символов и не является ключевым словом, ее можно не брать в кавычки |
Loopback wrote: |
Справка пока не обновлялась, т.к. возможны изменения. |
Loopback wrote: |
Ну не знаю, без этого кода у меня вкладки колесом не переключаются, а с ним да. |
Loopback wrote: |
Добавил дополнительные кнопки, можешь попробовать |
Code: |
ControlSetMouseAction /X1 "" 3 CMD 321 |
Loopback wrote: |
если окно полученное ранее не существует. |
Flasher wrote: |
А можно по примерчику? Not же ты давно добавил. |
Code: |
|
Flasher wrote: |
Т. е. предложение поизгаляться и прикрутить "костыль" силу таки возымело. |
Flasher wrote: |
Можно конкретизировать по символам и ключевым словам? |
Flasher wrote: |
И тем не менее новая порция в ЛС от меня последовала (по новинкам — в меньшей степени). |
Flasher wrote: |
Не, ни в какую плагин не хочет заводиться. |
Flasher wrote: |
Ранее — это на момент запуска плагина? Я же пишу про switch-команды в процессе работы ТС. Нужно всегда получать, конечно. |
Loopback wrote: |
Пример... ну поэкспериментируй с разной арифметикой и выражениями |
Loopback wrote: |
для чего-то ты же хотел эту возможность? |
Code: |
%'"Pa&ram_" & (%aaa%+1)' --> Pa&ram_2 (при %aaa% = 1) |
Loopback wrote: |
но быстро стало понятно, что это мазохизм и вообще криво. |
Loopback wrote: |
что синтаксис немного поменялся, неиспользуемый "" убрал. |
Loopback wrote: |
Но кстати говоря, именно 3 и 4 скорее всего не заработают, потому что: |
Code: |
ControlSetMouseAction /X1 28 CMD 321 |
Loopback wrote: |
По "/QUEUEBTN" - кнопку "В очередь" необходимо добавлять в любом случае, даже если не планируете ее перемещать, поскольку по ее наличию определяется тип диалога ("Создать ярлык" имеет тот же класс, ох уж эта гислеровская экономия). |
Loopback wrote: |
/QUEUEBTN давно упразднён и не работает в коде. |
Flasher wrote: |
А, ты меня не так понял. StrPos Name+1 ... — хотелось не Name1 как новое имя переменной, а %Name% далее должно вернуть <значение позиции + 1>. |
Flasher wrote: |
Сам не понял, зачем тут лишний пустой параметр. |
Flasher wrote: |
Попробовал на тулбар натравить — результат тот же: |
Flasher wrote: |
А с учётом появления вычислений в переменных, будет кстати появление динамической переменной с индексом 1000 (WM_USER+50) для выяснения, какой является активная панель (1/2). Пару примеров в скриптах уже приводил. Актуально и для случая с прокруткой табов только в соотв. расположению указателя панели: 28-%var% = 26/27.
|
Avada wrote: |
Предполагаю, что должно быть не 9.21a, а 9.22a, иначе весь диапазон версий не перекрывается. |
Flasher wrote: |
А что же теперь делать с диалогом создания ярлыка? У меня там кнопка ОК на следующую наезжает. |
Flasher wrote: |
Что касаемо ControlSetMouseAction /X1|2. Кнопки работают, но только совместно с дефолтным переходом по истории. Поэтому тут требуется ключ переопределения, иначе в таком виде это теряет смысл. Вероятно, это поможет и с прокруткой табов. |
Flasher wrote: |
И в отношении /R нужно сделать нечто, запрещающее вызов контекстных меню. |
Loopback wrote: |
Да без разницы, возможно и так и этак |
Loopback wrote: |
Варианта только два - либо у тебя тотал < 9.00 (сомневаюсь), либо какие-то другие плагины конфликтуют. |
Loopback wrote: |
Не особо понял. |
Loopback wrote: |
но ее значение будет получаться только при загрузке, после уже не поменяешь. |
Code: |
ControlSetMouseAction /W:F %"28-@" CMD 3005 |
Loopback wrote: |
А условия для чего? |
Loopback wrote: |
Что за ключ переопределения не понял. |
Loopback wrote: |
т.к. фактически нарушает нормальное функционирование программы. |
Flasher wrote: |
вариант с равными и переставленными (двумя) кнопками для 9.50+ x32 |
BeTeP wrote: |
А я себе сделал диалог копирования/перемещения с кнопками, равномерно распределенными по ширине диалога. |
Flasher wrote: |
росто писать формулу типа %Name+1? Или %(Name+1)? Или %"Name+1"? |
Flasher wrote: |
Это не годится. Я пишу о динамической. Ты же получаешь хэндлы не только на старте. Вот и эту переменную нужно. |
Flasher wrote: |
Перекрывающий ТС-шное поведение при кликах и встроенных хоткеях. Не знаю, можно ли их сделать неглобальными при этом. |
Loopback wrote: |
Если объяснишь, какого конкретно результата надо добиться - тогда скажу. |
Flasher wrote: |
хотелось не Name1 как новое имя переменной, а %Name% далее должно вернуть <значение позиции + 1>. |
Loopback wrote: |
Если сделать здесь, будет вычислено значение в момент запуска этой команды. |
Loopback wrote: |
Хэндлы получаются при запуске и в процессе работы в случае, если окно полученное ранее не существует. |
Loopback wrote: |
Ну можно ключ ввести, какой-нибудь /DEC, который будет вычитать результат (0/1) из идентификатора, заданного в команде. Наверно. |
Loopback wrote: |
Уже посмотрел, не вижу простого способа. Да и сложного не вижу. |
Flasher wrote: |
А я разве не объяснил? |
Flasher wrote: |
Что мешает в процессе вычислять и с подобной переменной? |
Flasher wrote: |
Если тебе с ключом проще работать, то пожалуйста. Я за оптимальность. Только 1000 даёт не 0/1, а 1/2. |
Flasher wrote: |
Т. е. от /X1 и /X2 можно смело избавляться. |
Flasher wrote: |
А про DisableMarkedMenuItems ты что-нибудь расскажешь? Как это выглядит и работает ли с подпунктами? |
Code: |
MENUITEM "`Header", 0 |
Code: |
DisableMarkedMenuItems "`" |
Loopback wrote: |
А я пытался понять, но не смог. |
Code: |
StrPos Name-1 abc c |
Loopback wrote: |
Как только скрипт передал значение команде, какие еще могут быть вычисления? |
Flasher wrote: |
И тут сразу напрашивается 0 на главное (всё) окно ТС. Сделаешь? |
Loopback wrote: |
Угу, а я-то, из вредности, против оптимальности. |
Loopback wrote: |
Ну да, конечно, раз тебе не нужно - избавляемся. Именно так и поступим. |
Loopback wrote: |
Если в главном меню будут пункты типа такого: |
Code: |
|
Flasher wrote: |
Я свой вариант решения твоему не противопоставлял в данном случае. Это вытекает из условия "Если тебе с ключом проще работать". Разве нет? |
Code: |
|
Flasher wrote: |
с абсолютно ненужной ему сменой путей в активной панели (по ходу истории каталогов) |
Flasher wrote: |
Под "выглядеть" я имел в виду внешнее отличие (осветление текста или что там) от дефолтного состояния. Так а подпункты можно будет прикрутить, чтобы em_0 не вешать? В верхних пунктах даже не знаю, зачем это может понадобиться. |
Flasher wrote: |
И тут сразу напрашивается 0 на главное (всё) окно ТС. Сделаешь? |
Loopback wrote: |
Нет, такой вариант, разумеется, не работает. |
Loopback wrote: |
по другому, со всякими "динамическими" переменными в параметрах просто не получится. |
Loopback wrote: |
Получается фигня: при вращении колеса над неактивной панелью вкладок переключаются вкладки на активной панели. |
Code: |
ControlSetMouseAction /W:F %"25+@" CMD 3005 |
Loopback wrote: |
Так они что, эти кнопки глобально работают? Т.е. если нажать не на списках, тоже историю мотает? |
Loopback wrote: |
Делаются неактивные все пункты меню (и подменю) в которых в начале текста есть заданный маркер. |
Code: |
DisableMarkedMenuItems "'" |
Code: |
MENUITEM "'F11\tРежим: Полный экран", em_0 |
Loopback wrote: |
Только не всё окно, а его неклиентская часть, потому что клиентская закрыта контролами. |
Flasher wrote: |
Т. е. с ключом аля /DEC, судя "по другому", получится? Есть же плагины, работающие в динамике, подстраиваясь под изменения контролов, в т. ч. определяя активность панели. |
Flasher wrote: |
Спутал индексы. Так: |
Flasher wrote: |
Это системная навигация. Аналогично — в проводнике, браузерах и т. д. |
Flasher wrote: |
Гм. Я себе это несколько иначе представлял. Т. е. нужно блокировать только пункты с маркером, а не меню, в которых находится хотя бы один такой. |
Flasher wrote: |
И желательно искать подстроку не только в начале, но и по всей строке. |
Flasher wrote: |
Никакой реакции. MNU в UTF-8 без ВОМ. C "`" тоже пробовал. |
Loopback wrote: |
Если про ModifyDialogs |
Loopback wrote: |
Но вкладки крутятся в одну сторону вне зависимости от направления колеса. |
Loopback wrote: |
зачем размещать маркер в разных частях строки? |
Loopback wrote: |
Маркер при этом из текста удаляется. |
Flasher wrote: |
Сделать рельно/нет? |
Flasher wrote: |
Так это уже косяк плагина, а не конфликт в приёме с вычислением. |
Flasher wrote: |
В такой ситуации текущее условие годится. Но пока не работает. Стоит первой командой в большом конфиге. После неё там явно больше 200 мс проходит. Поставил 2000 — то же самое. Кодировка точно не влияет? |
Loopback wrote: |
Если речь про инкремент результата WM_USER+1000, то да, можно. |
Loopback wrote: |
ввести виртуальные идентификаторы типа 3 и 4, т.е. например для панели табов: 100 - активная панель табов, 101 - неактивная |
Loopback wrote: |
Элемент затеняется, но маркер не убирается. |
Code: |
|
Flasher wrote: |
Речь про все текущие в момент кликов хэндлы. И текущий инкремент для 9 текущих пар. |
Flasher wrote: |
Ну, и про 0 для активного окна ТС безотносительно положения указателя мыши ты не ответил.
|
Flasher wrote: |
Я думал о добавке 9 индексов, но сперва мне такой вариант показался избыточным. И тебе тогда переменную с индексом придётся отдельно обрабатывать, а не подставлять сразу заданный. Впрочем, хозяин — барин, главное, чтобы работало.
|
Quote: |
#10017 - активная панель вкладок
ControlSetMouseAction /W:R 10017 CMD 3005 ControlSetMouseAction /W:F 10017 CMD 3006 |
Flasher wrote: |
У меня и затенения не происходит. А там не осветление с вдавленностью? Я так понял на скриншоте это ===Separator===. |
Loopback wrote: |
+ в выражениях добавлена прямая поддержка команд, возвращающих выражения, в виде: StrPos(["switch",] str, substr) |
Loopback wrote: |
Один раз я такое исключение уже сделал, когда добавил функции, которые можно использовать в выражениях (вариант, кстати, очень ограниченный). Больше таких ошибок делать не буду.
... Вычислений на месте тоже не будет. Отдельная конкатенация в Autorun вообще не нужна, переменные разворачиваются в тексте. ... Это бессмысленная трата времени и нагромождение кучи кода, поскольку имеющийся парсер принципиально не может решить задачу работы с ними. А ради чего? Ради нескольких функций, которые будут использоваться в лучшем случае пару раз на скрипт? ... Угу, т.е. я сейчас начну переписывать с нуля парсер, только чтобы сделать красиво строчные функции? Здорово придумано ... Т.е. под каждый вид функционала свой парсер. Нет, это не вариант. Всё должно обрабатываться единообразно. |
Loopback wrote: |
Вкратце выглядит сейчас всё так: |
Loopback wrote: |
Текущие получались уже в прошлой версии. |
Loopback wrote: |
Есть, можно назначать обработку на разные зоны. |
Code: |
ControlSetMouseAction /R /H:2 /K:C 0 CMD 321 |
Loopback wrote: |
c точки зрения скорости и простоты обработки этот вариант лучший. |
Loopback wrote: |
Я не знаю, почему у тебя не затеняет. Может меню не видимо при запуске ТС? В таком случае помочь ничем нельзя. |
Flasher wrote: |
Опять 7 лет, но уже сделал то, что категорически не хотел делать. |
Flasher wrote: |
Без /H берёт только клиентскую часть, а хотелось бы всё окно. Но желательно, если это возможно, и за его пределами, т. е. чтобы клики с клавишными модификаторами не переключались на окно под указателем, как если бы мы жали только клавишные хоткеи. Или это сложно? |
Flasher wrote: |
И возможность комбинировать зоны по сумме флагов тоже не помешала бы. Т. е. не 1, 2, 3, ..., 20, а 1, 2, 4, 16 ... как для ключей ini (c вычислением по логическому "И"). В таком виде /H:1 /H:2 пока тоже не работает. |
Flasher wrote: |
А с /R так и не вышло что-то сделать?: |
Flasher wrote: |
ОК. А можно объяснить, почему такие странные числа (10001-10018) выбраны? |
Flasher wrote: |
Может, это связано с тем, что в заголовках присутствуют юникодные символы (типа как под 3-м пунктом)? |
Loopback wrote: |
Ну, наверно лучше не обещать, но сделать, чем наоборот? |
Loopback wrote: |
Хотя иногда и хочется |
Loopback wrote: |
Но может быть можно окно и целиком задействовать. |
Loopback wrote: |
нужен глобальный хук. Это уже выходит за пределы назначения плагина |
Loopback wrote: |
Наверно можно и сделать, правда тогда придется уйти от прямого задания индекса зоны. Понять бы зачем. |
Loopback wrote: |
Если про подавление меню - нет. |
Loopback wrote: |
Честно - с потолка. Ну вдруг Кристиан еще что-нибудь надумает сделать. Это чтобы потенциально не пересечься. |
Loopback wrote: |
Какая в принципе теперь разница, если схема все равно не работает с кастомными меню. |
Loopback wrote: |
Но в любом случае, функцию можно убирать, или нужно переделывать. |
LonerD wrote: |
Создавалась переменная ADMIN, которой присваивалось значение *. |
LonerD wrote: |
C ShellExec тоже что-то изменилось? |
Flasher wrote: |
И сейчас создаётся. |
LonerD wrote: |
В том-то и дело, что нет. |
Flasher wrote: |
Хотелось бы. |
Flasher wrote: |
Ну как зачем. Допустим: |
Flasher wrote: |
Да и для контролов такое точно не помешает |
Flasher wrote: |
знает как быстро подавлять отрисовку |
Flasher wrote: |
А переделать не пробовал? |
Loopback wrote: |
Ок, без /H будет применяться к окну целиком.
Ок, в принципе можно и так. |
Loopback wrote: |
Наверно, это может решить и проблему с кнопками х1,х2. |
Loopback wrote: |
не уверен, что оно стоит возни. |
Loopback wrote: |
либо просто поиск по тексту. |
Loopback wrote: |
Может где-то в другом месте что-то с выражениями? |
Code: |
LoadLibrary Plugins\Autorun_Sysinfo.dll |
Flasher wrote: |
Если учитывать, что правую кнопку удобно использовать в качестве модификатора (гор. прокрутка в ScrollTC как пример), то, видимо, стоит. |
Flasher wrote: |
А ты ищешь в mnu или в интерфейсе? |
Code: |
ControlSetMouseAction /R 10017 |
Code: |
LoadLibrary Plugins\Autorun_Tweaks.dll |
Loopback wrote: |
либо просто поиск по тексту. |
Flasher wrote: |
А почему бы не заменить на поиск пробела или табуляции с конца взамен начала? Внешне же это будет практически неразличимо. |
Flasher wrote: |
А пока некоторые наброски |
Flasher wrote: |
1. Ты мог бы сделать поддержку команд ТС с параметрами для CommandExec/SendCommand? Вероятно, это запрашивали, уже не помню. |
Flasher wrote: |
2. Для TwinKey был запрос на установку языка ввода для указанных папок. Автор так и не родил. По хорошему это, конечно, Гислеру надо в стилях оформления делать, но пока дальше ключа KeyboardID у него за зашло. Возьмёшься? |
Loopback wrote: |
Маркер "-" я так понимаю, "не работает". |
Loopback wrote: |
Имеется в виду OPENTABS и прочие или последние нововведения типа cm_RereadSource? |
Loopback wrote: |
что мне лично никогда не пригодится. |
Code: |
С:\Коллекция\*|rus |
Flasher wrote: |
И как тебе в целом мой наборчик? Успел что-то юзабильное для себя выделить? |
Flasher wrote: |
Те, что перечислены в блоке "Команды с параметрами". И CommandExec я не просто так отметил, т. к. параметризация там точно доступна (функция tem у TCFS2 как пример, у самой команды — /CD), т. е. на базе созданных юзеркоманд с %A в параметрах получаем некий аналог. |
Flasher wrote: |
Т. е. ты хочешь сказать, что у тебя все каталоги, куда ты в течении суток заглядываешь, имеют строго доминирующий язык в именах содержимого? |
Loopback wrote: |
Версия Tweaks с исправленной работой колеса на Win7. |
Code: |
LoadLibrary Plugins\Autorun_Tweaks.dll |
Loopback wrote: |
Прокрутку колесом вкладок оставлю. Возможно блокировку вкладки. Установка равных размеров панелей - вот это точно да. |
Loopback wrote: |
меня больше интересует использование дополнительных меню. |
Loopback wrote: |
Ладно, ближе к делу посмотрим. |
Loopback wrote: |
У всех свои сценарии работы. |
Flasher wrote: |
Увы, с обновкой ситуация не изменилась. |
Flasher wrote: |
Кстати, блокировка пунктов у меня не заработала и на исходном меню без иконок: |
Flasher wrote: |
Помимо этих для себя я вижу большую пользу в обратной сортировке, открытии "Мой компьютер" для доп. устройств, переключением между гл. меню и текущим видом окна. |
Flasher wrote: |
А ты предусмотрел отсутствие выделения и автофокус на файле под указателем? Для этого ведь скрипт или утилита требуется, т. к. твой плагин жимоклики не производит, хотя мог бы, особенно для безкомандных случаев. |
Loopback wrote: |
32-битную все никак не соберусь поставить. |
Loopback wrote: |
может у тебя система выдает значение версии, отличное от заданного сейчас 6.1 |
Loopback wrote: |
при запуске должно появиться сообщение с версией системы. |
Loopback wrote: |
Для сортировки имхо ничуть не сложнее ткнуть в заголовок |
Loopback wrote: |
сейчас же, когда устройства появляются в списке дисков, я его у себя даже из меню уберу. |
Loopback wrote: |
Третье - это твой сценарий работы, не использую. |
Code: |
IniRead /R LNG %COMMANDER_INI% Configuration LanguageIni WCMD_ENG.LNG |
Loopback wrote: |
Пока никаких неудобств от отсутствия или наличия перечисленного не испытывал. |
Loopback wrote: |
на неподдерживаемой системе 11-летней давности |
Flasher wrote: |
Что-то мне давно подсказывает, что закавыка именно в этом. |
Flasher wrote: |
Только почему-то у меня не получается завести его через ShellExec. Что я делаю не так? |
Flasher wrote: |
Ты меню не для выбранного, где клик должен соответствовать координатам указателя в файловых панелях, используешь? А для чего тогда? Сторонних вызовов? |
Flasher wrote: |
Не спешу баловаться обновками, когда они приносят не столько ощутимой пользы, сколько вреда. |
Loopback wrote: |
Попробуй эту версию, вроде исправил. |
Quote: |
:F | То же самое, но по вращению вперед.
:R | То же самое, но по вращению назад. |
Loopback wrote: |
Не знаю, если в скрипте ShellExec работает, то ничего не мешает ему работать и здесь. |
Code: |
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "tem(`em_Lang Wcmd_rus.lng`)" |
Flasher wrote: |
Вперёд = вниз, назад = вверх. А у тебя наоборот сделано. Исправь, пож-та.
И для согласованности с F (Forward) я бы предпочёл B (Backward) вместо R (Reverse). Или U/D (Up/Down). |
Flasher wrote: |
С DisableMarkedMenuItems ситуация не изменилась. Эти настройки могут влиять? |
Flasher wrote: |
Что-то в парсере с обработкой параметров не чисто. |
Flasher wrote: |
На вопрос про задержку так и не ответил. |
Flasher wrote: |
И по панели диск. пространства что там? Насколько я понял, проблема в этом. Т. е. плагином это не вылечить? |
Loopback wrote: |
Майкрософт считает иначе |
Loopback wrote: |
тестировал везде - и везде работает. |
Loopback wrote: |
Индекс 10007 и возвращает эту панель - leftinfo/rightinfo. |
Loopback wrote: |
А то, что у тебя обведено зеленым, не возвращает ни один из индексов 1-29 |
Flasher wrote: |
А тебе важнее, что майкрософт считает, или всё же как пользователь будет ориентироваться по нативному поведению скроллинга в окнах? Двигаем колесо вниз, окно прокручивается вправо/вниз/вперёд/далее по списку/рабочей области, вверх — наоборот — назад к началу. Я вдобавок и предложил U/D, чтобы не было разночтения. |
Flasher wrote: |
На вопрос про стопорение ответишь?
|
Flasher wrote: |
Хм. И на XP/2k/9x тоже? |
Flasher wrote: |
Неясно, какой практический смысл в этих "скрытых" элементах Гислер увидел для разрабов, что из них вообще первично и почему элемента с тем же заголовком по сути два для одной панели. Может, он вообще их перепутал, когда внедрял в WM_USER+50? |
Flasher wrote: |
А так же, как с прокруткой, починить тут "неправильный хэндл" нельзя? |
Loopback wrote: |
Вот когда вкладки колесом крутятся - это вверх или вниз? |
Loopback wrote: |
что понимается под "стопорением параллельной прокрутки в файловой панели". |
Loopback wrote: |
Ну не докапывайся к словам. |
Loopback wrote: |
Что перепутал сомневаюсь, зачем бы тогда делать скрытую дублирующуюся панель. |
Flasher wrote: |
Правда, наверное, где-то посередине. |
Flasher wrote: |
При вращении колеса на вкладках параллельно происходит вращение списка в файловой панели, что воспринимается как баг из-за потери фокуса и неудобства для последующей навигации. |
Flasher wrote: |
Многие тестируют своё ПО на всяких системах. |
Flasher wrote: |
Так а смысл скрытия в чём конкретно? Я его не вижу. |
Loopback wrote: |
не вижу смысла это менять. |
Loopback wrote: |
Ну я же предупреждал здесь об ограничениях. |
Loopback wrote: |
Я тоже. |
Flasher wrote: |
Допиши тогда в скобках так: ... вперед (от себя) / ... назад (на себя). |
Flasher wrote: |
Понятно. И судя по тому, что себе решил эти методы поставить, тебя это устраивает? |
Flasher wrote: |
Добавка команды нажатий клавиш (в т. ч. для вызовов в отсутствие команд-аналогов). |
Flasher wrote: |
Смена языка ввода для заданных каталогов. |
Loopback wrote: |
В десятке этого ограничения нет. Кстати, в Win7 x64 тоже нормально работает. |
Loopback wrote: |
Это еще что такое? Не помню, чтобы я что-то такое обещал. |
Flasher wrote: |
твой плагин жимоклики не производит, хотя мог бы, особенно для безкомандных случаев. |
Loopback wrote: |
Даже в потенциале не подписывался. |
Flasher wrote: |
Может, дело в битности, а не в 10-ке? |
Flasher wrote: |
Не подписывался, это не значит, что у меня нет права ожидать. |
Flasher wrote: |
с учётом того, что кода для этого по моим представлениям требуется совсем немного |
Flasher wrote: |
что ты даёшь заднюю |
Flasher wrote: |
2All |
Loopback wrote: |
Ну так вперед, реализуй. |
Loopback wrote: |
Заднюю можно дать если до этого была "передняя". |
Loopback wrote: |
Вот только давить не надо, ок? |
Flasher wrote: |
У тебя же по ряду фич тоже не было личного интереса, но ты же реализовал. |
Flasher wrote: |
Представляю, если бы Гислер |
Loopback wrote: |
вернул опционально старый вариант задания контролов |
Quote: |
<instance> | При использовании переключателя /C — экземпляр класса контрола. |
Loopback wrote: |
Время было другое, времени было больше. |
Loopback wrote: |
Для него это работа и источник дохода, для меня хобби (одно из). |
Flasher wrote: |
А про старый вариант ты вроде ничего раньше не писал. |
Flasher wrote: |
Внёс правки в примеры. |
Flasher wrote: |
Что-то надумал про запрос LonerD на последовательное выполнение команд? |
Flasher wrote: |
А мне наоборот показалось, что во время карантина время таки появилось. Иначе откуда взяться реализации запросов 7-летней древности. |
Flasher wrote: |
Есть миллионы фришных разрабов (местные в частности), которых мотивирует число запросов. |
Loopback wrote: |
В самом первом сообщении упоминал. |
Loopback wrote: |
И наверно, для справки не подойдут варианты, завязанные на em-команды |
Loopback wrote: |
а в вечную бету скатываться не хочется. |
Loopback wrote: |
Да вот и удивило, что на мне свет клином сошелся при таком изобилии. |
Flasher wrote: |
Можно отдельным блоком выделить и подписать чем-то вроде "Идеи для вызова пользовательских команд.". |
Flasher wrote: |
А команды с параметрами в текущей ждать?
|
Code: |
|
Loopback wrote: |
Лучше уж тогда с примером самих em-команд. |
Loopback wrote: |
А через em-враппер в версии 2.0.11 должно работать |
Code: |
ControlSetMouseAction /R /K:A /H:64 0 CommandExec em_CurrentLang IniRead(LNG, %COMMANDER_INI%, Configuration, LanguageIni) |
Flasher wrote: |
А в предыдущих работало? |
Flasher wrote: |
А можно сделать отложенное возвращение переменных? Это касаемо выражений. Их подставлять таким образом нельзя?: |
Code: |
ControlSetMouseAction /R /K:A /H:64 0 CommandExec em_CurrentLang %"IniRead(%COMMANDER_INI%, Configuration, LanguageIni)" |
Flasher wrote: |
И что по части команд с ключами? Ключи же в скобках не запишешь. |
Loopback wrote: |
Так чтобы вычислялось при каждом выполнении действия - нельзя. |
Loopback wrote: |
Здесь про это есть. |
Flasher wrote: |
Ха, а у меня в таком виде работает при каждом. |
Code: |
# Следующие две команды включают em_Lang, где OPENLANGUAGEFILE прописано в поле "Команда:", а %A в поле "Параметры:": |
Loopback wrote: |
А никаких сообщений об ошибках разве не выдавалось? Спасибо за тест, проблему нашел, как и думал в условиях: переменная в выражении бралась только внутренняя, а нужно было еще смотреть переменные окружения. Вечером выложу исправленную версию. |
Code: |
If Not ProcessExist Prog.exe Then |
Code: |
#If Not %"ProcessExist('~/F', '%COMMANDER_PATH%\Utils\Everything\Everything.exe')" Then |
Flasher wrote: |
Почему-то скроллинг с Alt игнорируется в угоду скроллингу без оного. |
Flasher wrote: |
И после применения Alt для переключения на скроллинг без оного нужно обязательно отправлять сообщение об активации файловой панели (кликом в неё, по дабл-Tab или иными способами). |
Flasher wrote: |
Также c последними версиями у меня перестала работать связка Alt+Shift+скролл для Volumouse при позициониронии указателя на окне ТС (даже если команды с ключом /W закомментированы). |
Flasher wrote: |
Кстати, всё хотел спросить: %PROCESS_ISELEVATED% = %AUTORUN_ISADMIN% ? |
Flasher wrote: |
Ещё такой вопрос созрел: если включать стиль ws_visible для скрытых идентификаторов (11, 12, 15, 16) перед выполнением ControlSetMouseAction, ситуация изменится?
|
LonerD wrote: |
Сейчас он не отрабатывает. |
Flasher wrote: |
У меня и на современный вариант ругается: |
Code: |
|
Loopback wrote: |
Не уверен, что с этим получится что-то сделать. |
Loopback wrote: |
В последних, в которых фикс для Win7? |
Loopback wrote: |
Нет. Админ - это наличие административных привилегий. |
Loopback wrote: |
А elevated - запущен ли процесс под чужой учетной записью, которая может и не быть администраторской. |
Loopback wrote: |
условиях выражение используется без кавычек и %: |
Flasher wrote: |
Нет, с появлением команды. |
Flasher wrote: |
Т. е. %PROCESS_RUNASADMIN% = %AUTORUN_ISADMIN% ? |
Flasher wrote: |
Т. е. повышение своей не учитывается? На 10-ке же это обязаловка для выполнения прог, требующих админ. прав. |
Flasher wrote: |
А в справке не написано. |
Loopback wrote: |
Volumouse поставил, ошибку, мешающую ее работе нашел, но она относится чисто к фиксу для Win7. |
Loopback wrote: |
На десятке и так всё работало. |
Loopback wrote: |
Также должно быть исправлено "скроллинг с Alt игнорируется в угоду скроллингу без оного". |
Loopback wrote: |
Хотя может еще и придется с процентом делать |
Flasher wrote: |
Но это не значит, то проблема имела отношение к фиксу, а не 7-ке. |
Flasher wrote: |
Активацию сис. меню побороть не удалось? |
Flasher wrote: |
И что по Not? |
Loopback wrote: |
придется с этим жить |
Loopback wrote: |
с not правильно не работает ни legacy, ни новый код. |
Code: |
# ПКМ по панели дискового места = открытие 'Рабочий стол' в соотв. панели: |
Flasher wrote: |
Ещё эти команды почему-то падючими оказались: |
Loopback wrote: |
Они сейчас ищутся один раз при первом выполнении команды. |
Loopback wrote: |
По условиям пока все не получается поправить. |
Flasher wrote: |
А при чём тут хэндлы, если идёт обращение по классу и порядковому номеру экземпляра? |
Flasher wrote: |
Не может же дескриптор записаться для другой панели? Инстанс не меняется, да и в текущий момент уже не учитывается, судя по тому, что о хэндлах заговорил. |
Flasher wrote: |
А по Alt? |
Loopback wrote: |
будет менее эффективно |
Loopback wrote: |
если добавляется или удаляется контрол с тем же классом. |
Flasher wrote: |
Добавление же не меняет текущие номера по логике. А если играться с FullScreen-ом, то те же инстансы должны присваиваться аналогично исходному положению. А вот с потерей хэндлов уже ничего не поделаешь. |
Loopback wrote: |
если перед существующим контролом |
Flasher wrote: |
В дереве? Если изначально в полноценном окне они идут под 1 и 2 номерами, как в данном случае, то, по логике, добавка перед уже невозможна. Или есть варианты? |
Loopback wrote: |
не думаю что это очень уж распространенный сценарий. |
Loopback wrote: |
Попробуй эту версию, сделал поиск при каждом вызове. |
Loopback wrote: |
+ в выражениях теперь должны работать команды из плагинов |
Loopback wrote: |
- исправлена поддержка "старых" условий с командами и "not" |
Loopback wrote: |
но делать лучше |
Flasher wrote: |
А раньше не могли? |
Flasher wrote: |
Что делать? |
Code: |
|
Loopback wrote: |
Иногда пункт меню выделяется, иногда нет, визуальный такой косячок. |
HEXFIX wrote: |
Любая команда, которая работает по принципу тумблера, срабатывает по клику в любом месте, хотя задаю по двойному. |
Code: |
ControlSetMouseAction /L /K:R 23 SendCommand 2944 |
Flasher wrote: |
Можешь его подавить (или отправить сообщение на отпускание кнопки)? |
Code: |
|
Loopback wrote: |
ControlSetMouseAction /R 29 |
Flasher wrote: |
Увы, не помогает, хоть где ставь. |
Code: |
|
Loopback wrote: |
Нет, т.к. тут это не обрабатываемая клавиша, а модификатор. |
Code: |
ControlSetMouseAction /W:F 26 CommandExec 4001,3006 |
LonerD wrote: |
А что насчёт выполнения последовательности команд? Не планируется к релизу? |
Flasher wrote: |
А сможешь поддержку иконок (как в TCmenu) сделать? |
Loopback wrote: |
Наверно когда-нибудь сделаю, когда придет вдохновение |
Flasher wrote: |
PopSel (+ TCFS2) — годный вариант |
Flasher wrote: |
Какой может быть профит? |
Code: |
|
Loopback wrote: |
как-то слишком уж неспешно. |
Loopback wrote: |
... ShowPopupMenu |
Loopback wrote: |
+ дополнения в документации |
Flasher wrote: |
А где их смотреть?
Примеры не мешало бы в help_en.chm тоже исправить. |
Flasher wrote: |
AltGr=Alt, чтобы реестр не трогать. |
LonerD wrote: |
назначил в секции [Shortcuts] на все команды с A+ аналогичные команды с CA+. |
Loopback wrote: |
и мысли не возникает тянуться к правому альту, когда есть левый |
Avada wrote: |
И что такое"версия плагина"? |
Avada wrote: |
Если у вас есть проблемы |
asmadeus wrote: |
не вижу плагина. |
asmadeus wrote: |
Не стартует то, что прописано. |
Flasher wrote: |
Папка для обеих битностей тестируемого ТС общая? |
Flasher wrote: |
Тут конкретика нужна. |
Code: |
shellexec "%COMMANDER_PATH%\TCIMG.exe" "menux=1||em_Grey" |
Code: |
shellexec "%COMMANDER_PATH%\TCIMG.exe" "close=punto.exe" |
Code: |
If %AUTORUN_TCARCH% = 32 Then |
Code: |
If %AUTORUN_TCARCH% = 32 Then |
Flasher wrote: |
Вот бы ещё для безмышиного вызова такое. |
Flasher wrote: |
P.S.: Шапку потом будешь править? |
Loopback wrote: |
В смысле? Экзешник отдельный? |
Flasher wrote: |
Вижу косяк. |
Loopback wrote: |
учитывая что меню сейчас вызывается только мышью. |
Code: |
ControlSetMouseAction /L:U /C:TButtonBar 1 ShowPopupMenu %COMMANDER_PATH%\Profile\tools\MenuPopup\TCMenuSystem.mnu |
Flasher wrote: |
Страница GetSystemMetrics опустела. |
Flasher wrote: |
В англ. справке |
Loopback wrote: |
Да, надо бы это сразу править |
Quote: |
# Shift+??? anywhere = switch to main toolbar, |
Code: |
For var = 1 To 5 [Step x] |
Code: |
Func FuncName([ByRef] var1, var2, var3 = 1) |
Code: |
var = expression |
Code: |
var = expression_1 + _ |
Code: |
Pragma Include "path_to_include" (алгоритм аналогичен LoadLibrary, но работают только переменные окружения) |
Code: |
MsgBox 123 Title - OK |
Code: |
ex = FileExist "c:\Total\NoClose.exe" - работать не будет |
Flasher wrote: |
Так и? |
Loopback wrote: |
добавлена возможность однострочного If .. Then |
Loopback wrote: |
Добавлены пользовательские функции |
Loopback wrote: |
Переменные в функциях локальны |
Loopback wrote: |
Поддержка загрузки подключаемых файлов (includes) |
Loopback wrote: |
В целом, совместимость со старыми скриптами сохраняется. |
Loopback wrote: |
есть желание убрать директиву AutorunLoadInSubrocess |
Loopback wrote: |
Наверно, придется немного переделать. |
Loopback wrote: |
Обновил, последний раз |
Flasher wrote: |
Быстро же ты синтаксис в приоритет над последними хотелками вывел. |
Flasher wrote: |
Наконец-то! А сделать, чтобы такая запись заработала в качестве параметра ControlSetMouseAction, можно?
А вызывать их как? Через Call, со скобками, без? Интерактивно (ControlSetMouseAction) можно? |
Code: |
|
Flasher wrote: |
А если они объявлены до вызова? |
Flasher wrote: |
Имеется в виду скриптов с синтаксисом autorun? |
Flasher wrote: |
Это очень хорошо |
Flasher wrote: |
А тут только и остаётся добавить флаг в качестве последнего параметра. |
Code: |
ControlSetMouseAction /L:U /K:A 17 /B:4 SendCommand 509 |
Loopback wrote: |
На самом деля я вроде и не давал каких-то конкретных обещаний. |
Loopback wrote: |
Да и что-то та тема уже несколько поднадоела |
Loopback wrote: |
Можно без скобок командой (если не нужно возвращаемое значение), можно со скобками: |
Loopback wrote: |
Но что-то мне подсказывает, что сейчас оно как-то не как задумано работает... |
Loopback wrote: |
но как выяснилось, возможны менее болезненные варианты. |
Quote: |
В дистрибутив уже включены три плагина. |
Flasher wrote: |
Какая та? |
Flasher wrote: |
Вызов списка команд |
Flasher wrote: |
А под "можно сделать" я имел в виду запрос, а не нынешнюю правку конфига. |
yozhik wrote: |
Вызываю Распаковку архива кликом по кнопке F6 с зажатым Alt |
yozhik wrote: |
Ну, и «три» бампнуть |
Loopback wrote: |
Если не критично... именно по отпусканию... |
Code: |
Copy <click> |
Loopback wrote: |
Меню по комбинациям кнопок. |
Loopback wrote: |
Если имеется в виду это, то сейчас как раз легко решается функциями. |
Loopback wrote: |
Не понял. |
yozhik wrote: |
Сделал с просто /L — работает замечательно |
Flasher wrote: |
но и в короткой записи по аналогии с ТС. |
Flasher wrote: |
Ну, ты объясняешь, что сейчас нельзя сделать. |
yozhik wrote: |
В качестве идеи |
Loopback wrote: |
а тут шашечки |
Loopback wrote: |
только функциональным |
Loopback wrote: |
Да и скорее всего, от классического метода совсем придется отказаться. |
Flasher wrote: |
Это разве плохо? |
Flasher wrote: |
В контексте параметра или вообще во всём синтаксисе конфига? |
Loopback wrote: |
Не делать же в парсере исключение под одну конкретную функцию. |
Code: |
ControlSetMouseAction /L /K:S 17 /B:7 CommandExec em_TCRestart |
Loopback wrote: |
а на функциональных клавишах не заработает точно |
Code: |
|
Quote: |
DisableMarkedMenuItems рапространялся и на менюшки ShowPopupMenu |
yozhik wrote: |
чтоб DisableMarkedMenuItems рапространялся и на менюшки ShowPopupMenu? Тогда можно было бы шпаргалку из неактивных пунктов сделать. |
Loopback wrote: |
Что за подкомандные не знаю. |
Code: |
ControlSetMouseAction /R /K:A /H:64 0 if(%"IniRead('~/R',%COMMANDER_INI%,Configuration,LanguageIni)"=WCMD_RUS.LNG,CommandExec(em_Lang),CommandExec('em_Lang Wcmd_rus.lng')) |
Loopback wrote: |
Занятно, у меня работает. |
Code: |
ControlSetMouseAction /L /K:A 17 /B:4 SendCommand 509 |
Flasher wrote: |
Я на днях тоже об этом думал |
Flasher wrote: |
Отдельно написанная if-функция под команды, не из блочного синтаксиса: |
Code: |
|
yozhik wrote: |
А оказывается дело-то было в пробелах! |
Loopback wrote: |
тогда можно будет так записать: |
Code: |
ControlSetMouseAction /L /K:A 17 /B:6 CommandExec em_MENU_F8_BGDelete |
Code: |
ControlSetMouseAction /L /K:A /K:S 17 /B:6 CommandExec em_FASTCOPY_Delete |
Code: |
ControlSetMouseAction /R /K:A /H:64 0 CommandExec em_Lang %"IniRead('~/R', %COMMANDER_INI%, Configuration, LanguageIni)" |
Code: |
If Not ProcessExist('~/F', '%COMMANDER_PATH%\Utils\Everything\Everything.exe') Then |
Code: |
If %COMMANDER_LANGINI% = wcmd_eng.lng OR %COMMANDER_LANGINI% = "" Then |
Quote: |
Также возможно задавать переменные без предварительного определения: |
Code: |
Set Name Text |
Quote: | ||
Параметр задается специальным значением «…»
|
Code: |
ControlSetMouseAction /L /K:C 17 /B:3 |
Code: |
ControlSetMouseAction /L /K:C /K:S 17 /B:3 SendCommand 1004 |
Flasher wrote: |
Так ты поддержку старого синтаксиса поубирал что ли? |
Flasher wrote: |
Без кавычек нельзя, апострофы не поддерживаются. |
Flasher wrote: |
Вот так намудрил. Впервые такое вижу |
yozhik wrote: |
Следующий момент: |
Loopback wrote: |
в процессе отключил поддержку строчных литералов без кавычек |
Code: |
If %OSVer% = 2000 Or %OSVer% = XP Or %OSVer% = 2003 Or %OSVer% = 2003R2 Then |
Loopback wrote: |
И скорее всего, включу ее по умолчанию. |
Loopback wrote: |
Хотя, во втором примере все равно косяк. Многострадальный not |
Loopback wrote: |
Что за апострофы, которых тут так не хватает? |
Loopback wrote: |
Всё давно придумано до нас. |
Flasher wrote: |
А почему тогда на эту строку не ругалось? |
Flasher wrote: |
Забыл ещё написать, что сперва появляется окно только с текстом 'Load'. С чем это может быть связано? |
Flasher wrote: |
A = 'Text' |
Flasher wrote: |
Что-то не вижу там ничего толкового про многоточие. |
yozhik wrote: |
Следующий момент: |
Loopback wrote: |
Исправил. |
Loopback wrote: |
И что же мешает их использовать? |
Flasher wrote: |
Появляется, если присвоение без кавычек. А вот на этой строке 'If %COMMANDER_LANG% = eng Then' не только появляется, но потом и крашит ТС с окном 'Runtime error 216 at 754D8449' |
Loopback wrote: |
Скорее всего у тебя все же какая-то старая версия грузится. |
Flasher wrote: |
Tweaks 100% новый |
Loopback wrote: |
А вот основной плагин я выкладывал утром версию здесь. |
Code: |
CL = %COMMANDER_LANG% |
Quote: |
---------------------------
COMMANDER_LANG %COMMANDER_LANG% --------------------------- |
Code: |
If %AUTORUN_TCARCH% = 32 Then _ |
Loopback wrote: |
С вложенными If-ами нет проблем. |
Code: |
A = 1 |
Quote: |
[15] If A = 1 Then If B = 2 Then If C = 3 Then MsgBox Успех
Undefined command of function name: If |
Quote: |
Ещё есть проблема с переносом строки. |
Quote: |
Я бы так не сказал |
Quote: |
Блин, я же не ту переменную подсовываю. |
Quote: |
Т. е. в If попадало COMMANDER_LANG или %COMMANDER_LANG%. Так? В чём же тогда причина краха? |
Quote: |
И почему в одном случае есть проценты, а в другом нет? |
Quote: |
И почему не вернуло пустые значения? |
Loopback wrote: |
Сделано только для того, чтобы при разрыве в строке текста не появлялся лишний пробел. |
Loopback wrote: |
Разумеется, это не относится к однострочным If-ам. |
Loopback wrote: |
Да и какой смысл в такой гирлянде, если можно собрать условие с and? |
Loopback wrote: |
При его отсутствии я тоже пробовал и тоже было всё норм. |
Loopback wrote: |
А вот это как раз "благодаря" отсутствию обязательных кавычек. |
Code: |
A = '%Empty%' |
Quote: |
---------------------------
%Empty% \Empty --------------------------- |
Code: |
CL = '%AUTORUN_TCLANG%' |
Code: |
--------------------------- |
Flasher wrote: |
Почему это лишний? |
Flasher wrote: |
Следующее условие напрямую зависит от предыдущего, чтобы не столкнуться с ошибками. К тому же в случае несрабатывания предыдущего условия не будет тратиться время на выполнение лишнего кода в последующих условиях. У меня в куче кодов такой подход.
|
Flasher wrote: |
Получается только с Set возращается значение. |
Code: |
|
Flasher wrote: |
только сюда ещё \ затесался |
Loopback wrote: |
во всех полноценных языках в случае нескольких выражений через and, проверка идет слева направо и сразу прекращается, если условие false. |
Loopback wrote: |
Про какие коды не знаю, но тот же Autoit не позволяет городить лесенки в однострочных if-ах. |
Loopback wrote: |
Autorun к нему близок по своей сути, и многие подходы (и ограничения) такие же. |
Loopback wrote: |
ты присвоил переменной строку с именем переменной |
Loopback wrote: |
"благодаря" отсутствию обязательных кавычек |
Code: |
CL = AUTORUN_TCLANG |
Loopback wrote: |
У меня %Empty% %Empty%, как и ожидается. |
Flasher wrote: |
Т. е. vb, по-твоему, неполноценный? |
Flasher wrote: |
Ну, если с And там работают прерывания, то ему это и не нужно. |
Flasher wrote: |
Я согласен, но я лишь ориентировался на твои слова: |
Code: |
|
Flasher wrote: |
О, а где ещё беспроцентный вариант можно использовать? В командах, например. |
Flasher wrote: |
У меня так. И почему ожидается-то, если вопрос был о пустых значениях? |
Code: |
ControlSetMouseAction /R 17 /B:1 MsgBox(%AUTORUN_TCHANDLE%) |
yozhik wrote: |
то не читайте |
yozhik wrote: |
Я не понял, где применяется новый синтаксис команд (тот, который со скобками), а где нет. Вот такая запись (ниже) должна работать? У меня не работает. |
Code: |
|
yozhik wrote: |
В чём разница между этими двумя хэндлами? |
Loopback wrote: |
и надо ли вообще |
Loopback wrote: |
вызывающая какие-то другие команды |
Loopback wrote: |
17 должна идти после /B:1 |
Loopback wrote: |
Обязательных кавычек для строк, а не всего выражения. |
Code: |
Проблема в такой записи: |
Code: |
ControlSetMouseAction /R /K:A /H:64 0 %"MsgBox('Alt+ПКМ')" |
Code: |
# Shift+ЛКМ по вкладкам = переключение на первую вкладку в соотв. панели: |
Loopback wrote: |
В том числе для команд при использовании вычисляемых строк, например так: %'COMMANDER_PATH & "\Main.bar"'. |
Loopback wrote: |
Пустые значения при отсутствии переменной не могут выдаваться, т.к. неизвестно, переменная ли это. |
Flasher wrote: |
Почему проблема-то? |
Flasher wrote: |
Как это всё понимать? |
Flasher wrote: |
где вместо %LNG% ожидается пустое значения для правильного срабатывания |
Flasher wrote: |
вообще без шифта стали работать |
Code: |
ControlSetMouseAction /L /K:S /B:7 17 CommandExec em_TCRestart |
Loopback wrote: |
Уже много раз повторял - из-за строк без кавычек. |
Loopback wrote: |
Раз уж появился функциональный синтаксис, нельзя было в нем разрешать такие вольности со строками. |
Loopback wrote: |
сейчас не поддерживается функциональный синтаксис тут напрямую, только так, как выше приводил пример. |
Loopback wrote: |
Тут вообще похоже он неприменим будет, т.к. функция с параметрами переданная в качестве параметра в ControlSetMouseAction, будет выполняться один раз при вызове ControlSetMouseAction, поскольку параметры вычисляются при входе в нее. |
Loopback wrote: |
Что мне и не нравится, т.к. фактически это ошибка пользователя в скрипте. |
Code: |
MsgBox Var |
Code: |
Prog = "Program" |
Loopback wrote: |
исправил модификаторы |
Loopback wrote: |
Надеюсь теперь окончательно. |
Code: |
ControlSetMouseAction /R /K:L 1 ShowPopupMenu ... |
Code: |
SetEnv Manufacturer %"GetCPUInfo('CPUString')" |
Quote: |
Так вот, на русском при нажатии Alt+ПКМ вместо обновления языка стала выполняться смена. И только на английском обновление стало срабатывать. |
Code: |
ControlSetMouseAction /R /K:A /H:64 0 CommandExec "em_Lang IniRead('~/R', %COMMANDER_INI%, 'Configuration', 'LanguageIni')" |
Flasher wrote: |
Ну, да ты заявил, что старому синтаксису новый не повредит, что я и отметил как положительный момент, иначе у кучи пользователей создалось бы кучу проблем с необходимостью переписывать свои конфиги. |
Flasher wrote: |
При чём тут напрямую? Это никак не объясняет, почему приведённые команды стали срабатывать без Alt и почему сообщение появляется при запуске ТС. |
Flasher wrote: |
Не согласен. Если переменная не задана, и мы её подставляем, то логично, что она должна вернуть пустое значение. Взять тот же vbs: |
Flasher wrote: |
Команды выполняются без модификаторов. |
Loopback wrote: |
но тогда это еще доставляло проблем. |
Loopback wrote: |
Третьего я не вижу. |
Loopback wrote: |
А вместо имени тут вычисляемая строка, которая при считывании выполняется. |
Loopback wrote: |
то для меня такое поведение дико. |
Loopback wrote: |
Интересно, как они работали, если их явной обработки вообще не было. |
Flasher wrote: |
Частица "не" не пропущена? |
Flasher wrote: |
Ну делай так, только оставь текущий вариант умолчательным. |
Flasher wrote: |
Ох, как всё сложно... |
Code: |
|
Flasher wrote: |
тоже переменные в ряде случае можно не объявлять |
Flasher wrote: |
Не понимаю, о чём ты. Ты меня по ним сам консультировал. |
Loopback wrote: |
маловероятно, что кто-то (кроме новых пользователей) вообще узнает про более оптимальный вариант. |
Loopback wrote: |
а что если бы она была включена по умолчанию? |
Loopback wrote: |
Ну можно и какой-нибудь AutorunX или Neo сделать |
Loopback wrote: |
это параметры ControlSetMouseAction, предназначенные для последующей передачи в функцию, имя которой задано перед этими параметрами |
Loopback wrote: |
но все равно, с точки зрения возможных ошибок, кажется это не совсем правильным. |
Loopback wrote: |
Интересно, кроме VBS есть еще языки, где такое разрешено? |
Loopback wrote: |
но я уже опасаюсь что-то говорить |
Loopback wrote: |
Короче проехали, верну чтобы не съедался. |
Flasher wrote: |
А так они узнают о ней, в основном благодаря получению ошибок, что тоже не айс. |
Flasher wrote: |
Так не была же. А если бы была, то посыпались бы жалобы, само собой. О том и речь. |
Flasher wrote: |
Это заставит плагин не выполнять вычисляемую строку без соотв. жимокликов? |
Flasher wrote: |
А ты можешь хотя бы Dim добавить, чтобы не присваивать пустую строку и не писать Global/Local? |
Flasher wrote: |
С гл. меню проблема осталась. |
Code: |
|
Flasher wrote: |
Так вот, на русском при нажатии Alt+ПКМ вместо обновления языка стала выполняться смена. И только на английском обновление стало срабатывать.
|
Code: |
ControlSetMouseAction /R /H:64 0 CommandExec em_Lang %"IniRead('~/R', %COMMANDER_INI%, Configuration, LanguageIni)" |
Flasher wrote: |
Также плагин не различает последовательности нажатия модификатора/кнопки. Что я правую зажму, нажав левую, что наоборот, результат аналогичный. |
Code: |
|
Flasher wrote: |
Забыл? |
Loopback wrote: |
Кто не читает - сам себе злобный буратино. |
Loopback wrote: |
маловероятно, что кто-то (кроме новых пользователей) вообще узнает про более оптимальный вариант. |
Loopback wrote: |
В любом случае это прямая аналогия. |
Loopback wrote: |
не знаю даже, как теперь ее совместить с ФЗ (давай я буду сокращать, надоело писать полностью). |
Loopback wrote: |
Чем Global/Local хуже Dim? |
Loopback wrote: |
В этом коде всё работает |
Loopback wrote: |
то не подтверждаю, всё различается. |
Flasher wrote: |
То же самое можно ответить на: |
Flasher wrote: |
Перед сокращением обычно приводят расшифровку. |
Flasher wrote: |
Длиннее. |
Flasher wrote: |
В AutoIt же есть. |
Flasher wrote: |
С мессагой работает, а с исходной командой — нет. |
Code: |
|
Flasher wrote: |
Не знаю. Зажимаю ЛКМ, потом жму ПКМ — и команда срабатывает. |
Loopback wrote: |
Функциональная Запись. |
Loopback wrote: |
Где смайл facepalm? |
Loopback wrote: |
В справке его не рекомендуют к использованию.
|
Loopback wrote: |
Ну может потому, что ты свой же пример неправильно записал? |
Flasher wrote: |
мне так привычней, удобней, сподручней |
Flasher wrote: |
Где? Тут не вижу. |
Flasher wrote: |
Так, я уже запутался с этими кавычками, не/поддержкой старых записей и т. п. %"<>" останется или нет? Внутри неё кавычки/апострофы для строчных параметров будут нужны или нет? |
Loopback wrote: |
Тут, раздел Объявление переменных. |
Loopback wrote: |
Ну давай подведем краткое резюме. |
Loopback wrote: |
Только так
ControlSetMouseAction ... SendCommand 123 Или так ControlSetMouseAction( ... , SendCommand, 123) |
Code: |
ControlSetMouseAction /L /K:C /K:S /B:3 17 SendCommand 1004 |
Code: |
ControlSetMouseAction(/L, /K:C, /K:S, /B:3, 17, SendCommand, 1004) |
Code: |
ControlSetMouseAction /R /K:A /B:1 17 ShellExec %AUTOIT% "%COMMANDER_PATH%\Profile\scripts\FButtonHint.au3 /f3" |
Code: |
ControlSetMouseAction('~/R /K:A /B:1 17', ShellExec, %AUTOIT%, "%COMMANDER_PATH%\Profile\scripts\FButtonHint.au3 /f3") |
Flasher wrote: |
В справке, надеюсь, это всё отражено будет. |
Flasher wrote: |
Сейчас у нас не КЗ/ФЗ, а КЗ+ФЗ? Или как? На КЗ новинки (функции, циклы и т. д.) заведуться или надо между прагмами переключаться? |
Code: |
|
Code: |
|
Loopback wrote: |
в командной записи FileExist/ProcessExist в условиях, но она, что очевидно, провалилась. ... (возможно что-то упустил) |
Flasher wrote: |
Вот это упустил. Как с этим будет в каждом режиме? |
Loopback wrote: |
Но в условиях запись только в ФЗ |
Flasher wrote: |
В формате или режиме? |
Flasher wrote: |
Так мы говорим не про то, как сейчас (КЗ+ФЗ), а как будет (КЗ/ФЗ) с прагмами |
Loopback wrote: |
Будет точно так же, КЗ+ФЗ. |
Code: |
If Not ProcessExist('~/F', '...') Then |
Code: |
|
Loopback wrote: |
если нужен именно этот результат, проще записать команду в командном виде. |
Flasher wrote: |
Виде? |
Flasher wrote: |
У LegacyExpressions свитч-то есть? Ты же обещал 2 прагмы. Иначе смысл? |
Code: |
|
Loopback wrote: |
В общем, как в приведенном примере. |
Loopback wrote: |
Две-то зачем? |
Flasher wrote: |
Так без LegacyExpressions он не работает. |
Flasher wrote: |
Как это зачем? Сперва пишу в LegacyExpressions, а потом отключаю и пишу в умолчательном, что избежать проблем старого режима. В этом и суть. |
Loopback wrote: |
Естественно |
Loopback wrote: |
Ничего не понял Зачем что-то писать в режиме LegacyExpressions, если всё что у тебя есть - и так в нём написано? |
Flasher wrote: |
А если после надо какую-то часть написать в ФЗ |
Loopback wrote: |
Ты вроде тут писал, что стало понятно. |
Flasher wrote: |
Да и ты мой нужник наверняка тоже. |
Flasher wrote: |
Любая прагма работает с места, а не по всему коду |
Loopback wrote: |
И нафига бы это мне? Слишком много лишнего времени, что захотелось поразвлекаться перепиской на несколько страниц? |
Loopback wrote: |
Вот это была большая ошибка так думать. До сих пор единственная прагма, работающая в конкретном месте - это была FinalizeSection. |
Quote: |
Директивы выполняются на этапе предварительной обработки скрипта, результат их обработки действует на протяжении всего времени выполнения скрипта. |
Quote: |
Часть скрипта после этой директивы обрабатывается при завершении Total Commander. |
Loopback wrote: |
если бы не совместимость, сейчас я бы лучше сделал специальную функцию "OnExit" |
Flasher wrote: |
Нафига тебе понимать мою нужду? Хороший вопрос, но не ко мне он, не телепат я. ) |
Flasher wrote: |
Такие противоречия заставляют задуматься, что там да как на самом деле. |
Flasher wrote: |
Совместимость уже поломалась в синтаксисе, поэтому можно делать не глядя. |
dueus_minor wrote: |
Спасибо, что откликнулись на мою "затею". Что ж, буду ожидать очередного релиза.
Возможно, конечно, это описка, логичнее функцию назвать GetEnv, по аналогии с SetEnv. |
dueus_minor wrote: |
логичнее функцию назвать GetEnv, по аналогии с SetEnv. |
dueus_minor wrote: |
Возможно, нашёлся баг в команде StrPart. |
Code: |
|
Code: |
AddControl /W:100 "TMyComboBox" 2 |
Code: |
|
Code: |
# Alt+ПКМ по табуляторам активной панели = настроить текущий набор колонок: |
Loopback wrote: |
+ Tweaks: добавлена команда SetHotkeyAction |
Quote: |
Основное преимущество данной команды над стандартным функционалом горячих клавиш в Total Commander в том, что установленные сочетания также работают в командной строке, а не только в панелях. |
Loopback wrote: |
например Win+C |
Code: |
RegWrite "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "d:\\TESTING\\hwmonitor\\HWMonitor_x64.exe" REG_SZ "RUNASINVOKER" |
Code: |
d:\\TESTING\\hwmonitor\\HWMonitor_x64.exe |
Code: |
MsgBox(ProcessExist("Everything64.exe")) |
Code: |
MsgBox(ProcessExist("~/F", "c:\totalcmd\utils\Everything64.exe")) |
Quote: |
Остальные варианты возвращают 0 (хотя должно быть 1, ведь процесс то есть): |
Loopback wrote: |
работает изначально вариант 1 |
yozhik wrote: |
Назрела хотелка. |
yozhik wrote: |
на функциональные кнопки (клавиши) теперь можно навесить много всего полезного |
sa wrote: |
навесить установку языка |
yozhik wrote: |
Речь про установку языка в TC |
sa wrote: |
Нет, языка в системе. |
Code: |
|
Code: |
|
Loopback wrote: |
Язык-то всё равно меняется на уровне приложения. |
Loopback wrote: |
С помощью вспомогательного скрипта можно сделать. |
Loopback wrote: |
- функции реестра не работали с именами параметров, содержащими "\" |
Code: |
IniRead CRNTLNG "%COMMANDER_INI%" "Configuration" "LanguageIni" |
yozhik wrote: |
Или смириться с тем что под 64бит сей комбобокс несгибаем? |
Code: |
RegDelete [\K] <ключ> [<параметр>] |
Code: |
While var > 0 |
CommandExec wrote: |
Выполнить пользовательскую команду em_* или установить в панелях заданные пути. |
Code: |
# открывает диалог настроек |
CommandExec wrote: |
Параметры отправки внутренней команды |
Code: |
RunThread <funcname> [<param1> [.. <paramN>] |
Code: |
StrPart(<str>, <delim>, <index> [, <casesense>] |
Code: |
sDay = StrPart("Понедельник|Вторник|Среда|Четверг|Пятница|Суббота|Воскресенье" "|", nDay) |
yozhik wrote: |
Вы AkelPad пользуетесь? Я сделал для него подсветку синтаксиса autorun.cfg.
|
yozhik wrote: |
Хорошо, но чем тогда CommandExec отличается от SendCommand? |
yozhik wrote: |
В описаниях строчных ф-ций намёк на то, что вместо casesense требуется подставлять boolean есть только в StrReplace. Может в др., там где casesense используется, тоже стоит добавить? |
yozhik wrote: |
Не хватает запятой перед delim |
yozhik wrote: |
Поэтому, без лишних слов, вот бы часть самых полезных избранных ф-ций из TWinKey реализовать в субплагинах Autorun. |
Loopback wrote: |
Я ее в принципе и собирался выложить после релиза |
yozhik wrote: |
чем тогда CommandExec отличается от SendCommand? Только тем, что во 2й внутренние команды TC можно передавать числами? |
yozhik wrote: |
Поэтому, без лишних слов, вот бы часть самых полезных избранных ф-ций из TWinKey реализовать в субплагинах Autorun. |
Loopback wrote: |
Пользуюсь эпизодически, как вторым редактором. |
Loopback wrote: |
Он совсем сырой, я им практически не занимался. Ну если очень надо, то вот |
Loopback wrote: |
В любом случае, сейчас тут уже поздно что-то менять, lеgacy и всё такое |
Loopback wrote: |
Хотя не стану скрывать, переписывать то, что уже имеется |
Loopback wrote: |
переложить это на возможности скриптинга встроенными средствами... при определенном наборе универсальных функций (в Runtime) можно и эту хотелку будет реализовать |
Loopback wrote: |
есть скриптовый вариант запрашиваемого |
Quote: |
в SendCommand имеется ограничение для параметра - только число |
yozhik wrote: |
что-то другое имели в виду |
help_ru.chm wrote: |
параметр Опциональный числовой параметр для поддерживающих параметры команд (cm_100Percent, cm_Select и т.д.) . |
yozhik wrote: |
Понял потому, что в справке к Autorun нет индекса, а он необходим для работы скрипта ChmKeyword.js. С ним если в коде выделить команду или ключевое слово и нажать хоткей (любой назначенный, например у меня это Shift+F1), то справка откроется аккурат на странице этой команды. |
yozhik wrote: |
А-я-яй, недокументированное расширение *.aucfg для файла конфигурации )) |
yozhik wrote: |
поскольку не понятна политика предпочтений для остальных команд |
yozhik wrote: |
Обратите, пожалуйста, внимание, я сделал у себя ещё подсветку распространённых ошибок. |
yozhik wrote: |
также «покраснеет» ФЗ запись для Set |
yozhik wrote: |
внутри chm файл sysinfo_funcs.html |
yozhik wrote: |
наблюдая за одним TC, и Autorun, и TWinkey, теперь ещё и AutoHotkey запускать только ради одной ф-ции |
yozhik wrote: |
сделать средствами Autorun. |
Loopback wrote: |
в истории изменений упоминал |
Loopback wrote: |
Надо заполнить ключевые слова, тогда и индекс появится. |
Loopback wrote: |
это даже не ограничение, точно так же можно и в ФЗ ее записать, просто смысла ноль |
Loopback wrote: |
какого-то существенного влияния на производительность это всё не окажет |
Loopback wrote: |
не думаю, что имеющихся функций хватит на реализацию такого... |
sa wrote: |
У меня не про команду, а про параметр |
Code: |
If StrPos(%CRNTLNG%, "RUS") > 0 Then |
Code: |
If StrPos(%CRNTLNG%, "RUS") > 0 Then |
yozhik wrote: |
При запуске 64-битного TC не работает MsgBox! |
yozhik wrote: |
А в справке нет. |
yozhik wrote: |
Т.е. в 64-бит контролы определяются не по их instance, как по идее должно было быть, а по счёту в дереве (не знаю, насколько внятно получилось описать). Это нормальная ситуация? |
Loopback wrote: |
С этим лазарусом, смотрю, постоянно какой-то бардак |
Loopback wrote: |
В 10.51. |
Loopback wrote: |
Меньше всего на свете хочется тратить время на все эти диалоги. |
Code: |
SetHotkeyAction /K:C /K:S /H:N SendCommand cm_Config |
Quote: |
Внутренняя команда Autorun. Если не задана, то никакого действия выполняться не будет, а имеющееся действие данного сочетания будет заблокировано. |
yozhik wrote: |
Много ли пользователей будут этот путь проходить? Обычно же как: справку прочёл, сделал как написано, если не работает, то прости-прощай. |
yozhik wrote: |
В 32-бит работает до N раза. |
yozhik wrote: |
Т.е. при записи «SetHotkeyAction /K:C /K:S /H:N» ничего не должно происходить |
yozhik wrote: |
скрипт ChmKeyword.js |
Loopback wrote: |
нет времени, чтобы с этим разбираться |
Loopback wrote: |
- Tweaks: исправлена работа модификатора Alt в SetHotkeyAction |
Code: |
SetHotkeyAction /K:C /K:S /H:N MsgBox "Message received" |
Code: |
SetHotkeyAction /K:C /K:S /H:N MsgBox("Message received") |
Code: |
Func MyMessageFunc() |
Code: |
TOTALCMD#BAR#DATA |
Code: |
[284] SetMessageAction 55555 MyMessageFunc |
Quote: |
Быстрый просмотр со следующим плагином
Чтобы при быстром просмотре в TC выбрать для файла под курсором следующий подходящий LS-плагин, приходится сначала переместить фокус из файловой панели в окно быстрого просмотра (на месте другой файловой панели), там нажать один или несколько раз клавишу 4, а для продолжения навигации по файлам снова вернуться в исходную панель. Предлагаемая функция позволяет во время быстрого просмотра переключаться с клавиатуры (например, той же клавишей 4) на другой подходящий плагин внутреннего просмотрщика, не покидая исходной файловой панели. Способ вызова команды NextQuickView определите на странице Клавиши и команды. |
Code: |
S message:0x046A [User-defined:WM_USER+106] wParam:075BC371 lParam:0013EC80 |
Code: |
# пробовал по отдельности, и КЗ |
Code: |
tcfs2.exe /ef "msg(1130, 123454321, 1305728)" |
yozhik wrote: |
А вот так не срабатывает: |
Code: |
SetHotkeyAction /K:C /K:S /H:N Eval 'MsgBox("Message received")' |
yozhik wrote: |
В 32-бит срабатывает только самый первый вызов: MsgBox появляется. При последующих вызовах MsgBox не появляется. И так до перезагрузки Windows. После перезагрузки опять 1й срабатывает, остальные нет. |
yozhik wrote: |
А на 64-бит вызывает ошибку: |
Quote: |
В 32-бит работает до N раза. Нажимаю — открывает окно Конфигурация, как и должен.
|
yozhik wrote: |
что что-то там передаётся и даже куда-то попадает, но не туда и не то, что нужно |
Code: |
|
sa wrote: |
В Win10 Pro, TC 10.51x64 возникла проблема с закрытием окон TC, запущенных отдельным процессом. Можно проверить, вызвав поиск отдельным процессом (Alt+Shift+F7). При попытке закрытия окна появляется сообщение "(Не отвечает)". Воспроизводится, начиная с 2.2.8_beta. Причём в TC x32 всё нормально. Может кто-то подтвердить, или проблема только у меня?
P.S. Показалось, что вызывать поиск надо из папки самого запущенного тотала. |
Loopback wrote: |
Тут пока версия с исправлением |
Quote: |
при запуске отдельными процессами синхронизации каталогов |
Quote: |
/S=S Запускает отдельным процессом инструмент синхронизации каталогов без открытия основного окна TC. В параметрах командной строки можно указать либо непосредственно два пути, либо шаблон в форме /S=S:имя_шаблона
Если параметр начинается со знака равенства "=" (например, /S=S:=имя_шаблона), сравнение начнётся сразу после открытия диалога. Если знак равенства указан без имени шаблона (т. е. /S=S:=), то для сравнения будут взяты каталоги, переданные через командную строку, и последние использовавшиеся настройки. |
Code: |
[em_SyncStandalone] |
yozhik wrote: |
Но после тестов выяснилось, что с номерами выше 5-значных связка просто не работает. Чем это объясняется? |
MVV wrote: |
В TCFS2 есть возможность отправки сообщений с такими кодами через функцию regmsg. |
Code: |
/ef "msg(regmsg(MyMessage), 0, 0)" |
MVV wrote: |
Насколько я понимаю, коды выше 0xFFFF официально не поддерживаются, т.к. изначально параметр кода сообщения был 16-битным, поэтому там никто ничего не гарантирует. |
Loopback wrote: |
наиболее безопасный способ с регистрируемыми сообщениями |
Loopback wrote: |
на пустой конфигурации |
Quote: |
...причем с любым конфигурационным файлом: хоть переименованный example идущий в составе плагина, хоть полностью пустой файл Autorun.cfg (0 байт). |
Code: |
|
Loopback wrote: |
LonerD
проще через пользовательскую функцию (в бете): |
Loopback wrote: |
Ключ /N снимает флаг FR_PRIVATE у функции AddFontResourceEx, т.е. с этим ключом шрифт доступен не только процессу, но и в системе. Предположу, что какие-то системные процессы могут использовать этот шрифт, блокируя тем самым выгрузку. |
Quote: |
Его никак не повесить на em-команду? |
Code: |
SetMessageAction "MyMessage" ShowPopupMenu ... |
Loopback wrote: |
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). |
! | CaptainFlint: |
The link is now working.
Оживил ссылку. |
Loopback wrote: |
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. --- Интересно, но на моих файлах не воспроизводится. Было бы неплохо увидеть проблемный файл. |
Loopback wrote: |
можно, например, сделать макрос, возвращающий число существующих окон тотала (именно окон, не процессов), если оно 0 - можно выгружать. Минус такого решения |
LonerD wrote: |
... мой Тотал ... несколько копий моего Тотала ... |
LonerD wrote: |
запоминать или записывать в отдельный файл все PID запускаемого процесса ТС и время от времени опрашивать их. Если все PID выгружены - то выгружается и программа-скрипт. |
Code: |
#NoTrayIcon |
LonerD wrote: |
Или плагин Autorun выгружается? (по какой причине это может происходить? командой выгрузки плагинов не пользуюсь). Или работа назначенных при запуске переменных не зависит от него? |
Loopback wrote: |
Если при возникновении проблемы посмотреть переменные плагином EnvVariables, их содержимое выглядит нормально? |
Code: |
SetEnv /A /EV PATH ;%commander_path% |
Code: |
SetEnv /A PATH %commander_path%; |
Code: |
;D:\TCDL;D:\TCDL\System;D:\TCDL;D:\TCDL\System;D:\TCDL;D:\TCDL\System;D:\TCDL;D:\TCDL\System; |
LonerD wrote: |
Запускаю последовательно несколько команд, потом оп - через пару секунд следующая уже не запускается. Посмотрел плагином EnvVariables - добавленные значения в переменной PATH пропали. Перезапустил Тотал, попробовал снова, воспроизвести пропадание не удалось. |
LonerD wrote: |
1. Для чего у меня было /EV - не знаю. |
LonerD wrote: |
2. Точку с запятой правильнее ставить в конце пути, иначе в тексте переменной получится ;; |
LonerD wrote: |
Оказывается, в конце переменной PATH накапливаются записи вида |
Code: |
SetEnv /A PATH %commander_path%;%commander_path%\System; |
LonerD wrote: |
Может, Windows время от времени запускает внутреннюю проверку состояния системы, обнаруживает это непотребство и удаляет подозрительные записи. |
Loopback wrote: | ||
Т.е. чтобы всё сработало, надо устанавливать весь текст одной командой:
|
Code: |
AddControl "Button" 0 "" |
Code: |
AddControl /X:-5 /W:5 "Button" 1 "" #MD5 |
Code: |
AddControl /W:-40 "TButton" 3 %ICON%,8 |
yozhik wrote: |
Вписал в код вызов нулевого — всё встало на места. |
yozhik wrote: |
а не трудоёмко ли будет добавить в AddControl возможность вместо текста назначать иконку? |
Loopback wrote: |
Я так понимаю, это только в x64? |
Loopback wrote: |
выделить минимальный код, при котором проблема повторяется... |
Loopback wrote: |
Без сложностей иконку можно поставить только на стандартные кнопки и static-контролы. |
LonerD wrote: |
Другими словами немного подробней.
Есть мой Тотал, настроенный. В Autorun прописан запуск программы, она запускается и работает в фоне. Я могу запускать несколько копий моего Тотала и закрывать их. Всё это время программа должна быть запущена. Когда я закрою последнюю копию моего Тотала - программа должна выгрузиться. В то же время параллельно я могу запускать чистый Тотал или чужие сборки. Они никак не должны влиять на запуск и закрытие программы. |
Code: |
autorun.cfg |
Code: |
# Диалог упаковки cm_PackFiles Alt+F5 |
Code: |
# Диалог упаковки cm_PackFiles Alt+F5 |
Code: |
|
Loopback wrote: |
половинчатое решение вроде как-то не очень |
Loopback wrote: |
Попробовал сам отрисовать значок, бесполезно |
Loopback wrote: |
yozhik
Похоже, в тёмной теме тотал сам управляет отрисовкой всех контролов. |
lz57005 wrote: |
даркмод нужно учитывать как отдельную сущность |
Code: |
AddControl "TButton" 1 "?" "%WCMICONS%,56" #Help |
lz57005 wrote: |
взял и изобрёл |
Loopback wrote: |
вроде бы что-то и получилось |
Loopback wrote: |
надо тестировать |
Loopback wrote: |
значок+текст... смысла в нём мало |
Loopback wrote: |
переключателем /I:nn (он будет обязателен) |
Loopback wrote: |
ModifyDialogs 2023-08-12 |
Code: |
ControlSetMouseAction /B:1 17 |
Code: |
ControlSetMouseAction /M:U /B:1 17 ShowPopupMenu %COMMANDER_PATH%\Language\WCMD_RUS.MNU |
Code: |
ControlSetMouseAction /M:U /B:1 17 ShowPopupMenu "%COMMANDER_PATH%\Language\WCMD_RUS.MNU" |
Code: |
ControlSetMouseAction /M:U /B:1 17 MsgBox "TEST" |
yozhik wrote: |
или можно обойтись имеющимися средствами |
Code: |
ControlSetMouseAction /M:U /B:1 17 ShowPopupMenu /A:16 %COMMANDER_PATH%\Language\HINTS.MNU |
Code: |
MENUITEM "Переименовать\tF2 ", em_hotkey |
Code: |
AddDialog DIALOG_COPYMOVE |
Code: |
AddDialog DIALOG_COPYMOVE_PINNED |
yozhik wrote: |
При вызове диалога создания ярлыка CS+F5 на кнопках отображалось B2, B3, B4. |
yozhik wrote: |
При вызове диалога создания ярлыка CS+F5 с пришпиленной доп-панелькой на кнопках отображалось B2P, B3P, B4P. |
yozhik wrote: |
Сейчас получается, что DIALOG_COPYMOVE_PINNED работает только в паре с DIALOG_COPYMOVE. |
Loopback wrote: |
Мы же отфильтровали диалог копирования, так что для этого диалога надо делать отдельный обработчик с помощью AddDialog. |
Loopback wrote: |
Исключение для панельки реализовано только для диалога копирования... |
Loopback wrote: |
Кстати, тут обнаружился интересный баг тотала |
Loopback wrote: |
Фильтры для pinned и post не работают, фильтрация определяется... Пожалуй, это и правда недостаточно документированный момент. |
yozhik wrote: |
Беда то в том, что при введении отдельного обработчика для диалога ярлыков (ДЯ) он наследует настройки PINNED из предыдущего обработчика, т.е. из диалога копирования (ДК). |
Code: |
AddDialog DIALOG_COPYMOVE |
yozhik wrote: |
Но вообще с этими PINNED хорошо бы разобраться. Из истории с вышеупомянутым багом видно, что ДК и ДЯ — взаимозависимы, по факту это вообще один и тот же диалог, только видимость некоторых элементов различается. Если я пришпилил ДК, а затем сразу же вызвал ДЯ, то у меня и ДЯ тоже отобразится пришпиленным. Такие вот дела. |
yozhik wrote: |
Ну, и в 64-бит настройки для DIALOG_COPYMOVE_PINNED не работают. |
Loopback wrote: |
И что теперь - делать еще одно исключение для диалога ярлыков? |
Loopback wrote: |
Да вроде код из этого поста - работает нормально. |
Loopback wrote: |
Добавил |
Loopback wrote: |
в x64 номера экземпляров контролов в тёмной и светлой теме, оказывается, тоже могут различаться |
Code: |
AddDialog "TINPCOMBODLG" |
Code: |
|
Code: |
AddDialog DIALOG_COPYMOVE |
yozhik wrote: |
тестовый конфиг можно использовать также для наглядного определения элементов |
Code: |
ShellExec %COMSPEC% "/K echo.Отладка, шаг 1" |
Quote: |
Расширение не влияет. |
jentoso wrote: |
Версия Autorun 2.2.8 |
lz57005 wrote: |
через патч таблицы импорта totalcmd.exe |
lz57005 wrote: |
я думал она выполняется в момент выгрузки плагина как обычной dll, на условное событие OnProcessDetach |
Loopback wrote: |
И как тотал реагирует на такую модификацию? В нем же вроде защита присутствует. |
Loopback wrote: |
Так и есть, остановка по DLL_PROCESS_DETACH, по крайней мере в последних версиях. Пробовал когда-то делать выгрузку в ContentPluginUnloading, но кажется там были какие-то проблемы, в итоге вернулся к этому методу. |
lz57005 wrote: |
при закрытии тотала, отрабатывает только MessageBox из prepare.dll. |
Quote: |
LoadLibrary Plugins\Autorun_Tweaks.dll # Функция, которая будет выполнена при получении сообщения Func MyMessageFunc() SetEnv ENV_NAME "Новый текст переменной" EndFunc # Привязываем функцию к сообщению, регистрируемому строкой "MyMessage" SetMessageAction "MyMessage" MyMessageFunc |
Code: |
|
Code: |
|
Code: |
FileExist(%COMMANDER_PATH% & "\NoClose.exe") |
Code: |
FileExist(%COMMANDER_PATH% & "\NoClose.exe") |
Code: |
|
Orion9 wrote: |
Но что делать с: |
Code: |
|
Orion9 wrote: |
Немного путано, конечно |
Orion9 wrote: |
Спасибо вам и Flasher за большой проделанный труд. |
Orion9 wrote: |
местами не достаточно примеров, а порой они совсем отсутствуют |
Orion9 wrote: |
Если в файле конфигурации есть секция Pragma AutorunFinalizeSection с завершающими командами, то что будет если подключить файл через Pragma Include <filename>, в котором тоже будет эта директива? |
Quote: |
Если на примете есть функции, к которым пример просто напрашивается - пишите, добавлю |
Quote: |
Думаю, ничего хорошего |
Orion9 wrote: |
В общем, примеров нужно больше. |
Orion9 wrote: |
Простая директива Pragma Include example.aucfg не работает. Пишет "Не найден подключаемый файл: example.aucfg". |
Quote: |
Просто так такое количество сделать непросто, поскольку желательно чтобы примеры не были абстрактными и демонстрировали что-то полезное |
Quote: |
Весьма странно, попробовал такой простейший вариант, example.aucfg рядом с основной конфигурацией - находит. |
Orion9 wrote: |
MsgBox с вариантами ответов |
Orion9 wrote: |
функции вызова всплывающей подсказки, типа ToolTip |
Quote: |
Да уж, сам иногда удивлюсь, во что превратился изначально ни на что особенное не претендующий плагин |
Quote: |
Первая - вопрос совместимости |
Quote: |
Но тут важнее вторая проблема - у MsgBox до сих пор остаются нерешенные сложности с работой на x64 версии. |
Quote: |
Не совсем понятно, что, где и как должно вызываться? |
Orion9 wrote: |
чем я занимался в последнее время |
Orion9 wrote: |
А одно из основных отличий AutoHotkey v1 от AutoHotkey v2 - как раз в командой и функциональной записи |
Orion9 wrote: |
Возможно, и вам придется делать такой переход рано или поздно |
Orion9 wrote: |
Можно найти интересные применения |
Quote: |
Успел, глянул. |
Quote: |
К слову, в еще не выложенной версии SysInfo добавлены кое-какие нативные функции для получения системной информации, в том числе загрузки процессора, можно будет уменьшить число запросов |
Quote: |
Да, будучи большим поклонником Autoit |
Code: |
ControlSetMouseAction /L /K:C 3 ShowItemHint |
Code: |
|
Quote: |
сомневаюсь, что потребуются кардинальные изменения синтаксиса. Все необходимые управляющие структуры уже есть. Не хватает только какого-нибудь простейшего массива. Дальнейшее развитие скорее будет направлено на расширение функционального обвеса. |
Quote: |
тут сложность даже не в самом тултипе, а в том, как его вызывать |
Orion9 wrote: |
Кстати, я все правильно сделал в этом примере выше, или есть другие способы? |
Orion9 wrote: |
А еще почему-то есть глюк с длинными именами файлов. |
Orion9 wrote: |
А разве нужно что-то по наведению? |
Code: |
|
Code: |
|
Code: |
MIME-Version: 1.0 |
Orion9 wrote: |
Но вызывает вопрос параметр 100. По идее здесь должно быть точное количество байт, полученное через WM_GETTEXTLENGTH? |
Orion9 wrote: |
Попробовал довести задачу до цели через скрипт AutoHotkey, чтобы посмотреть, как оно будет выглядеть в действительности. |
Orion9 wrote: |
Думаю, тултип Autorun нужен. |
Quote: |
Тут еще можно подумать, Runtime пока сыроват. |
Quote: |
Да, смотрится симпатично, только задержка стала более ощутима. И еще тултип перекрывается тоталовским тултипом. |
Quote: |
Если что, вот тут версия плагина с исправлением ProcessExecGetOutput |
Quote: |
Немного посмотрел тултипы, да, показать несложно, сложнее скрыть. |
Orion9 wrote: |
Может, сделать пару вспомогательных функций, которые сразу будут возвращать имя файла и путь в нужной панели |
Orion9 wrote: |
Если тултип будет вызываться через Autorun, это не поможет ему показываться поверх тоталовского? |
Orion9 wrote: |
По сути, применение у тултипа такое же, что и у MsgBox, только оформление другое. |
Code: |
ControlSetMouseAction /L /K:C 3 ShowInfoHL |
Code: |
ControlSetMouseAction /L /K:C 3 ShowInfoHL |
Code: |
--------------------------- |
Code: |
ProcessExecGetOutput hl %uwdx% "NTLinks.wdx ""%f%"" 0" "%COMMANDER_PATH%\Plugins\wdx\NTLinks\" |
Orion9 wrote: |
Может, с путями к uwdx что-то не так? |
Code: |
ControlSetMouseAction /L /K:C 3 ShowFileInfo |
Code: |
--------------------------- |
Orion9 wrote: |
Вот тут uwdx выдает "Test file does not exists.", если под курсором не файл/каталог. |
Code: |
If FileExists(%f%) Then |
Code: |
MyFunc(123, 456, 789) |
Code: |
--------------------------- |
Code: |
Local uwdx = %COMMANDER_PATH% & "\Plugins\uwdx\uwdx.exe" |
Code: |
Func ShowFileInfo |
Quote: |
Теперь скрипт просто добавляет полезную информацию к заголовку ТС, не трогая оригинального текста. |
Orion9 wrote: |
Приводит к ошибке |
Code: |
Global JustTitle = WinGetText(), VarTitle = JustTitle |
Loopback wrote: |
Тултип или что-то похожее скорее всего будет |
Code: |
ControlSetMouseAction /R /H:2 0 TitleBarMenu |
Quote: |
При командной записи, если в параметрах вызываемой команды cmd есть вычисляемая строка, то она будет пересчитываться каждый раз при выполнении команды cmd. Напрямую реализовать такую логику в функциональной записи нельзя, поскольку в ней любые выражения в параметрах вычисляются только один раз в момент вызова SetHotkeyAction и не будут пересчитываться при выполнении привязанного действия. Таким образом, чтобы достигнуть результата, аналогичного использованию вычисляемых строк в командной записи, необходимо использовать в качестве команды дополнительную пользовательскую функцию, в которой выполнять требуемое выражение. |
Code: |
ShowHint("text" [, x, y]) |
Code: |
ControlSetHint [/B:nn] <id> <text> |
Code: |
|
Orion9 wrote: |
Просто меня приколол консольный вывод в тултип, а если при этом не использовать консольный шрифт, то все рушится (визуально) и не имеет большого смысла. |
Orion9 wrote: |
А что делать с тем, что Тотал перекрывает своим тултипом чужой тултип |
Orion9 wrote: |
Но вот с файлом tweaks_20230825.zip (версия плагина 1.2.1.3) возникла проблема. |
Orion9 wrote: |
возникает ошибка Символ "_" не разрешён в этом месте. |
Orion9 wrote: |
В справке к команде SetMessageAction присутствует целый абзац, который, очевидно, принадлежит другой команде |
Code: |
ProcessExecGetOutput /OEM icacl "%COMMANDER_PATH%\Plugins\uwdx\uwdx.bat" """%f%""" |
Quote: |
Проверил указанный код на сегодняшней версии, вроде всё работает. |
Code: |
ControlSetMouseAction /R /H:2 0 TitleBarMenu |
Code: |
[em_title_menu] |
Code: |
ControlSetMouseAction /L /K:C 3 ShowConsoleHint 0 |
Orion9 wrote: |
приводит к ошибке Отсутствует закрывающая кавычка для строки: |
Orion9 wrote: |
На тулбар есть ограничение на количество символов? Я тут сделал более-менее рабочий вариант, в MsgBox все окей, а вот в тулбаре явный срез. |
Orion9 wrote: |
Судя по всему, не срабатывает ShowPopupMenu |
Orion9 wrote: |
По поводу стиля и шрифтов, не заморачивайтесь. Я просто спросил, потому как не был уверен, насколько это сложно было бы реализовать. |
Code: |
ControlSetMouseAction /L /K:A 3 ShowAltHint 0 |
Orion9 wrote: |
Новый тултип во всей красе с вызовом по Alt+Click и анализом файла под курсором утилитой TrID |
Orion9 wrote: |
Кстати, почему-то в темном режиме текст у тултипа выглядит немного блекло на фоне стандартного тоталовского. |
Orion9 wrote: |
А как задать тултипу координаты, чтобы он не у курсора мыши всплывал, а файлового курсора активной панели? |
Quote: |
Версия от 14.04.2024 |
Quote: |
Возможно, что исправятся и меню, и возможные зависания. |
Quote: |
По поводу установки визуальных настроек тултипа. Наверно сделаю отдельную функцию, позволяющую отдельно установить шрифт и цвета. Установленные параметры будут действовать на все последующие вызовы. Разумеется, менять можно будет неоднократно. |
Quote: |
Вполне вариант, хотя скоро такими темпами не останется комбинаций с кликами |
Quote: |
Зная индекс элемента, нужно отправить списку сообщение LB_GETITEMRECT и далее рассчитать нужные координаты |
Orion9 wrote: |
тултип скрывается за панелью задач, когда вызывается для файлов внизу списка |
Orion9 wrote: |
а вот функция ShowPopupMenu так и не заработала |
Orion9 wrote: |
Строчка кода f = StrPart(ItemAtCursor('text'), auTAB, 1) валит 32-битный Тотал |
Code: |
If FileExist(BarPath) Then |
Orion9 wrote: |
Функции ShowPopupMenu не нравятся пробелы в пути. |
Orion9 wrote: |
Поскольку функции, по всей видимости, не нравятся не только пробелы в пути, но и в самих пунктах меню: те пункты, которые в своем названии имеют пробелы, функция не показывает. |
Code: |
IniRead OCRPATH "%COMMANDER_PATH%\Utils\IrfanView\i_view32.ini" "OCR" "TS_EXE" "" |
Code: |
|
jentoso wrote: |
роде "рабочая" еще не выкладывалась? |
jentoso wrote: |
Если значение ключа в INI совпадает, значит и недолжна срабатывать команда IniWrite. |
Code: |
|
Quote: |
это только свойство функций, которые явно подразумевают разворачивание переменных в строковых параметрах |
Loopback wrote: |
Версия от 18.04.2024
- исправлена работа с пробелами в путях - тултип теперь не прячется под панелью задач - исправлены (вроде) спонтанные падения при использовании ControlSetHint |
Orion9 wrote: |
С панелью разобрался. |
Orion9 wrote: |
А не желаете сделать команду, которая будет отображать статус Autorun - основную версию, загруженные модули (и их версии), даты изменений, информацию о загруженных потоках и т.д. |
Quote: |
но хотелось бы чтобы от этого была какая-то практическая польза. |
Quote: |
HELP_BREAK
POPUP "" END_POPUP MENUITEM "Reboot", em_exit_1 MENUITEM ":::", em_TCFullScreen |
Code: |
SetHintParam("CSH" | "SH", <param_id>, <param1> [, <param2> ... <param5>] |
Code: |
SetHintParam("SH", "Font", 9, "Courier New") |
Orion9 wrote: |
А какая практическая польза от окна About? |
Orion9 wrote: |
Вообще, я люблю смотреть в окна About, особенно когда в них все видно |
Orion9 wrote: |
Хотел бы, чтобы там еще и Autorun был |
Orion9 wrote: |
Вот только проверить, выполняется ли такой поток и получить с него статус о таймере - это отдельные танцы. |
Orion9 wrote: |
А хотелось бы, чтобы сразу в специальном окне Autorun была информация о всех запущенных потоках |
Quote: |
SetHintParam(1, "Font", 9, "Consolas")
SetHintParam(1, "BackColor", 0x000000) SetHintParam(1, "Text", 0xFFFFFF) |
Quote: |
Но это все же удел графических приложений. |
Quote: |
Можно подумать, но явно не сейчас, учитывая огромное количество недоделанного. |
Quote: |
Ну что-то (версии, даты), если очень хочется, вполне можно сделать скриптом: пройти по файлам и получить данные из versionInfo. Там дел-то на десять минут. Со статусом загрузки dll чуть сложнее, но не намного. |
Quote: |
Поток, пока не будет явно произведен выход из цикла, находится всегда в запущенном состоянии. При необходимости можно, например, сделать глобальную переменную, установить ее при запуске потока и проверять. |
Quote: |
А вот что понимается под "статус о таймере" я так и не понял. |
Orion9 wrote: |
А вот как, хотя бы теоретически, заставить появляться хинт над определенной кнопкой панели инструментов, и можно ли? |
Orion9 wrote: |
Это и есть те самые танцы, о которых я писал. |
Orion9 wrote: |
А если поток вылетит и переменная не изменится, может быть такое в теории? |
Orion9 wrote: |
Как проверить, сколько осталось до следующего форматирования диска? |
Code: |
|
Code: |
[PortableConfig] |
Code: |
IniRead PP %COMMANDER_PATH%\wincmdUser.ini PortableConfig PortablePath |
Code: |
msgbox %portable% -> вывод: %commander_path%\Portable |
jentoso wrote: |
были изменения и нам об этом уже неоднократно выше указывали |
Code: |
%COMMANDER_PATH% & "\Portable" |
Code: |
SetEnv portable "%COMMANDER_PATH%\Portable" |
Code: |
|
Code: |
SetEnv portable %"%PP%" |
Quote: |
Нет, узнать надежно какая кнопка нельзя. Ну я во всяком случае не представляю, как это можно сделать. Максимум что можно, наверно, это например найти 5 кнопку слева. Но толку от этого никакого нет. Да и смысл, у кнопок панелей свои настраиваемые подсказки. |
Quote: |
Ну хорошо, как вы себе это представляете, без "танцев"? Ну вот хотя бы в виде псевдокода, или пример из другого языка живой. Просто мне кажется мы по-разному понимаем эти вещи. |
Orion9 wrote: |
Хотелось бы задать координаты хинту так, чтобы он всплывал под нужной кнопкой при вызове. |
Orion9 wrote: |
Мне просто хотелось бы, чтобы плагин имел возможность сообщать о своем статусе в диалоговом окне: версии, даты, пути, что загружено и что выполняется - вот и все. |
Quote: |
Если при вызове, то для этого Autorun вообще не нужен. Скриптовые языки лучше подойдут. |
Quote: |
Расчёт нижней границы строки я делал в одном проекте для меню. Координата X гуляет в пределах ширины кнопки, но меня это устраивает. Вот код (Autoit): |
Quote: |
Так что отложим до появления конкретики. |
Orion9 wrote: |
Больше всего мне в ваших скриптах нравятся английские комментарии |
Orion9 wrote: |
Но я все-таки расчитывал, что как-то можно найти иконку по пикселям. |
Quote: |
В AHK есть функции ImageSearch, PixelSearch. Но это настолько малонадежный и медленный способ, что я никогда его серьезно не рассматривал. |
Orion9 wrote: |
А в этой функции все работает так, как ожидается. |
Quote: |
Ладно, это шутка, понятно, что пока на нее нет нормальной документации. |
Quote: |
Можно, конечно, попробовать сделать по аналогии с ShowPopupMenu, добавить ключ, чтобы текст трактовался как функция, которая должна вернуть текст подсказки. Вот только где и зачем это может понадобиться? |
Quote: |
Да и по производительности есть определенные опасения. |
Orion9 wrote: |
При наведении на заголовок |
Orion9 wrote: |
можно было задавать задержку отдельному хинту, не затрагивая другие. |
Quote: |
А я разве делал и заявлял возможность подсказок на заголовке окна? |
Quote: |
Выглядит это как баг. |
Quote: |
Хорошо бы увидеть код, как создается хинт. |
Quote: |
Уже писал выше, что отдельную задержку сделать очень проблематично. |
Code: |
If IsPressed (0x11) Then |
Orion9 wrote: |
Тем не менее, она есть! |
Orion9 wrote: |
побольше бы таких багов! |
Orion9 wrote: |
Вот если бы хотя бы сделать, чтобы хинт при наведении на кнопку сворачивания окна не всплывал, уже было бы здорово... |
Orion9 wrote: |
Что-то не понятно на счёт IsPressed, эта функция работает или нет? |
Quote: |
Не надо никаких багов, таких в том числе. Какой смысл в неправильно работающем коде? |
Quote: |
Исправлять - только убирать эту ветку совсем... |
Orion9 wrote: |
А что там неправильно работает? |
Orion9 wrote: |
Но если всё сделать быстро, то и этого не произойдет. |
Quote: |
Версия Tweaks от 12.05.2024 |
Quote: |
- дополнительные проверки для скрытия csh-подсказки, когда она не должна появляться |
Quote: |
Также добавил проверки, чтобы csh-хинт не появлялся при определенных условиях (например, окно не на переднем плане), залипаний должно стать меньше. |
Quote: |
Хотя в большой полезности этого сомневаюсь, я бы себе подсказки на заголовок и системные кнопки точно не стал навешивать. |
Code: |
Title |
Orion9 wrote: |
что еще можно вывести в заголовок |
Quote: |
вторник, 14 мая, 10:37 |
Orion9 wrote: |
Не хотел я сбрасывать еще сырую и не до конца доделанную и отлаженную версию |
Orion9 wrote: |
Что-то не понятно на счёт IsPressed, эта функция работает или нет? |
Code: |
RequestCopyDataInfo(<command>) |
Code: |
ControlSetHint /B:1 17 "FButtonsHintText" |
Quote: |
Кстати, первоначальный вызов TitleLaunch вполне можно тоже оставить в Title.aucfg, тогда будет достаточно в основной файл подключить только его. Ну и загрузку плагинов, конечно. |
Quote: |
Runtime от 13.05.2024 |
Orion9 wrote: |
Как-то барахлит вывод тултипа над функциональными клавишами: срабатывает даже не через раз, а больше. |
Loopback wrote: |
надо будет исключить возможность повторной загрузки плагинов |
Orion9 wrote: |
реализовывали это как-то так |
Code: |
Set hintF3 "View File" |
yozhik wrote: |
а тултип — нет |
Code: |
ControlSetHint /B:1 17 "View file" |
Code: |
ControlSetHint /B:1 17 "My Hint" & auLF & "line 2" |
Code: |
Set hintF3 "View File" |
Code: |
ControlSetHint /B:1 17 "My Hint" & auLF & "line 2" |
Orion9 wrote: |
срабатывает даже не через раз, а больше |
yozhik wrote: |
Эх, похоже да, не работают в ControlSetHint с ф-ми кнопками ни переменные, ни вывод пользовательских Func, ни спец-символы (auTAB, etc.), ни даже конкатенация (&). А как же теперь?
|
Code: |
ControlSetHint /B:1 17 %'"My Hint" & auLF & "line 2"' |
yozhik wrote: |
А вот такое показывает только половину, т.е. всё после "My Hint" уже не показывает: |
Code: |
If Not IsPressed (0x11) Then |
Code: |
ControlSetHint /F /B:1 17 "FButtonsHintText" |
Loopback wrote: |
Не могу подтвердить. Фокус тотала ничто не перехватывает? Подсказки не будут отображаться на несфокусированном окне. |
Quote: |
Вариант подсветки для AkelPad. Скромная-сырая-недоделанная — но поскольку это состояние перманентно, то что есть, то есть: |
Loopback wrote: |
надо обернуть в вычисляемую строку |
Orion9 wrote: |
при заходе "снизу" вероятность появления тултипа возрастает |
Orion9 wrote: |
Вот что еще хотелось бы по этому поводу отметить: если функция возвращает пустой текст, то хинт по идее не должен всплывать совсем. |
Orion9 wrote: |
Можно еще к функции добавить обработку параметра, хотя бы одного? |
Orion9 wrote: |
Пробую сейчас на Win11 Pro, может, в этом дело. |
sa wrote: |
Откуда идёт заход не имеет значения: важно, где остановить указатель – в верхней (плохо) или нижней (хорошо) половине кнопки. |
Quote: |
ариант подсветки для AkelPad. Скромная-сырая-недоделанная — но поскольку это состояние перманентно, то что есть, то есть: |
Quote: |
Наверно можно, только этим закрывается потенциальная возможность добавить еще параметры в ControlSetHint, останутся только ключи. В принципе никто ведь не мешает сделать под каждый вызов свою функцию. |
Orion9 wrote: |
зря жирным сделаны функции, непривычно как-то |
Code: |
ShowHint("text" [, x, y]) |
Code: |
ControlSetHint [/F] [/O] [/R] [/D:<ms>] [/H:<area>] [/B:<1..7>] <id> <text> |
Code: |
ControlSetHint /B:1 17 "My hint" |
Code: |
SetHintParam("CSH" | "SH", <param_id>, <param1> [, <param2> ... <param5>]) |
Code: |
SetHintParam("SH", "Font", 9, "Courier New") |
Orion9 wrote: |
Да, уже убедился. Достаточно чуть-чуть сдвинуть указатель в нижней части и хинт всплывает исправно |
sa wrote: |
Кажется, проблемы возникают при отключённой командной строке. |
Quote: |
Кстати, CSMA ведь тоже этому подвержена, но за столько лет никто этого не заметил. |
Quote: |
Помимо вкуса это ещё ж и от шрифта зависит. Если разница в толщине между начертаниями невелика и сбалансирована, то норм. У меня, к примеру, Iosevka Curly. |
Quote: |
Пока подготавливается справка, пускай конспект повисит здесь:
|
Loopback wrote: |
Кстати, CSMA ведь тоже этому подвержена, но за столько лет никто этого не заметил. |
Orion9 wrote: |
Нужна последняя версия библиотеки |
Orion9 wrote: |
По-сути, можно повесить полезные менюшки повсюду "где хошь", например на той же F3 |
sa wrote: |
Эх, какая фича-то, оказывается была: на нижние половинки функциональных кнопок можно было свои команды навесить |
Loopback wrote: |
Ну, фича-то сомнительная, попадать в нужную половину кнопки вслепую |
Quote: |
Но мне бы хотелось совсем убрать жирный текст, как это сделать? А то я в этом деле совсем не разбираюсь, AkelPad юзаю "как-есть" с их сайта, так и не нашел время в нем поковыряться.) |
Loopback wrote: |
Собственно, с этого всё и начиналось, для этого в первую очередь и делалось. Это уже потом разрослось до универсального решения. |
Orion9 wrote: |
Но мне бы хотелось совсем убрать жирный текст, как это сделать? |
Orion9 wrote: |
а вот сделать, чтобы можно было переключаться между двумя подсветками на одном .aucfg файле, как оказалось, не так уж. |
Quote: |
Версия Tweaks от 15.05.2024 |
Code: |
"Autorun" Call("Coder::Settings", 1, "aucfg") |
Loopback wrote: |
Версия Tweaks от 15.05.2024 |
Orion9 wrote: |
а вы от идеи окна About не отказались? |
sa wrote: |
Спасибо! Теперь и при скрытой командной строке позиционирование мышки на функциональных кнопках работает исправно. |
Code: |
[em_timedate_cpl] |
Quote: |
Будет универсальная функция, возвращающая некоторую статусную (и отладочную) информацию. В данный момент это список переменных в текущем контексте. Скорее всего, добавится список загруженных библиотек/плагинов, т.к. для реализации идеи с блокировкой повторной загрузки плагинов всё равно придется переписать эту часть. |
Quote: |
Остальное если и будет добавляться, то постепенно и с низким приоритетом. |
Orion9 wrote: |
Добавил туда дату и время |
Orion9 wrote: |
добавил Ctrl+Click по заголовку с парой пунктов меню... Можете отключить эту фичу |
sa wrote: |
Спасибо! Убрал годы и секунды, перевёл на русский и всё стало, как раньше. |
Code: |
prec := Format("{:.2f}", json["current"]["precipitation"]) . ' ' . json["current_units"]["precipitation"] |
sa wrote: |
Для этого делаю щелчок правой кнопкой в области заголовка и быстро переношу мышь в требуемую зону.
Просьба не бороться с таким поведением! |
Orion9 wrote: |
Надо будет попробовать. |
Code: |
SetHotkeyAction /H:F1 F1HintText |
Code: |
SetHintParam("ShowHint", "Font", 9, "Consolas") |
sa wrote: |
Не думаю, что тут стоит заниматься какими-то добавлениями или доработками |
Orion9 wrote: |
не использоать баг как фичу |
sa wrote: |
Значит, будут "бороться с таким поведением!" |
Code: |
ControlSetMouseAction /L K:C 1 ShowCtrlHint |
Code: |
SetMessageAction "BarMessage" SetBarLines |
Code: |
[Macros] |
Code: |
Func SetBarLines() |
Code: |
bbltd3=msg($0B, 0, 0) msg(regmsg(BarMessage), 0, 0) msg($0B, 1, 0) run_item(update) |
Orion9 wrote: |
Такое ощущение, что новая функция RequestCopyDataInfo не работает |
Orion9 wrote: |
Теперь при вызове из TCFS2 наблюдаются попытки что-то загладить и перерисовать, но смотрятся они очень плохо, словно не дорабатывают до конца. |
Orion9 wrote: |
Можно ли в Autrun добится того же эффекта гладкости, что и в TCFS2, есть варианты? |
Loopback wrote: |
Такое ощущение, что функция ShowCtrlHint не запускается Потому что слеш в установке модификатора потерян: ControlSetMouseAction /L K:C 1 ShowCtrlHint. |
Loopback wrote: |
Ну так после блокировки перерисовки окно все равно как-то надо перерисовать, тем более после таких изменений. |
Loopback wrote: |
Не знаю, честно говоря, сильно думать в этом направлении не очень хочется Неудивительно, что TCFS2 справляется лучше, она делалась именно для целей работы с окнами ТС. Можно ли сделать что-то - наверно можно, но это время на тесты и исследования. |
Loopback wrote: |
Можете пока попробовать релизовать то же самое на ahk, чтобы понять, чего ему не хватет. |
Loopback wrote: |
А я, пожалуй, лучше сосредоточусь на допиливании основного модуля, а то последнему релизу уже полтора года. |
Orion9 wrote: |
Всё работает, но... |
Code: |
TCFS2.exe /ef "msg($0B, 0, 0) msg(regmsg(BarMessage), 0, 0) tcm(2901) tcm(2901) msg($0B, 1, 0) run_item(update)" |
Orion9 wrote: |
А если в Autorun добавить свою функцию Redraw, поможет это как-то решить проблему? |
Orion9 wrote: |
А всякие сроки и и дэдлайны - это всегда лишний стресс.) |
sa wrote: | ||
Разве только перенести команду 2901 из функции в вызов TCFS2?
|
Loopback wrote: |
Могу для пробы сделать обёртку для RedrawWindow. Не знаю, поможет ли. |
Loopback wrote: |
А то получается, что было много исправленных багов, но версию выложить не могу из-за сырости. |
Orion9 wrote: |
Теперь она не только переключает строки на главной панели |
sa wrote: |
Скрипт работает, только у себя для развёрнутого вида панели инструментов указал количество строк 0 вместо 2. |
sa wrote: |
Ну и задержку появления подсказки для заголовка (/D:10) вернул к первоначальной /D:350. |
sa wrote: |
Подсказка непосредственно из Title.ahk тоже вызывается теперь в привычном стиле. Это приятно! |
Code: |
SetHotkeyAction /H:F1 F1HintText |
Orion9 wrote: |
Наткнулся на проблемы с функцией StrLeft |
Orion9 wrote: |
Особенно когда в них меняют внутренний механизм уже более-менее рабочих функций. |
Orion9 wrote: |
Это я к тому, что нет необходимости 1,5-2 года доводить до ума очередную версию готового релиза, все-равно до конца безупречной она не будет. |
Orion9 wrote: |
А тем временем, довёл до ума функцию показа только тех переменных окружения, которые создаются во время работы/старта ТС плагином Autorun. |
Code: |
ControlSetHint /F /D:100 /H:2 0 "TitleHintText" |
Orion9 wrote: |
но все же не то... |
sa wrote: |
Удобнее просто замереть (если рука крепка). |
sa wrote: |
Наверное, я слишком многого хочу |
Quote: |
Вроде выглядит и неплохо, но не уверен, стоит ли делать так по умолчанию |
Loopback wrote: |
а почему бы и нет |
Orion9 wrote: |
но этот ключ нарушает привычную логику |
Orion9 wrote: |
А что имеется в виду "с опцией /O работать не будет"? |
sa wrote: |
Я подозревал, что с Autorun всё возможно |
sa wrote: |
Работает немного иначе, чем в варианте с тоталовскими подсказками |
Loopback wrote: |
При включенной опции /O этот метод работать не будет, т.к. фокус уходит к подсказке. |
yozhik wrote: |
а где эта опция /O |
yozhik wrote: |
Возможно ли это как-то отследить, чтобы при открытом меню хинт не всплывал? |
yozhik wrote: |
Где-то что-то я опять прозевал... а где эта опция /O ? |
sa wrote: | ||
Здесь и здесь (под другим флагом). |
Quote: |
В ControlSetHint. Временно переводит фокус на подсказку, чтобы скрыть уже имеющуюся у контрола. |
Quote: |
Да, выглядит некрасиво, надо устранить. |
Loopback wrote: |
Кроме того с опцией /O работать не будет. |
jentoso wrote: |
В одной сборке подсмотрел конфиг для просмотра файла средней кнопкой мыши |
sa wrote: |
Вроде, работает /R и в этой комбинации. |
Loopback wrote: |
тестировал на панели дисков, контролы номер 24, 25, не работает |
Loopback wrote: |
устранено всплывание подсказки после вызова меню |
Loopback wrote: |
Версия Tweaks от 02.06.2024
Изменения минимальны, только устранено всплывание подсказки после вызова меню. |
Orion9 wrote: |
У меня не работает на заголовке, или оно там и не должно работать? |
Orion9 wrote: |
А разве в MNU файле не возможности вызвать em_ команду с параметрами? |
Loopback wrote: |
заменил файлы во вчерашнем |
Code: |
txt = txt & 'MENUITEM "Time - ' & ShowTime & '", em_title_reboot1' & auCRLF |
output generated using printer-friendly topic mod. All times are GMT + 4 Hours