Страница 2 из 2

Добавлено: Чт окт 17, 2013 21:47
Вахмурка
TWinKey установлен? Если да, то ноги растут, скорее всего, оттуда. Отключи и попробуй. Сейчас лень искать (если надо, то найду) мои диалоги с VadiMGP по этому поводу.
А вот такие аццкие цифры появляются по воле доброхотов типа Petermad, которые стряпают отличные расширенные меню и присобачивают в языковый файл хренову гору собственных em_ команд.
Сейчас подсчитал - у меня около сотни своих и около двухсот - от Petermad'а. Хотя триста - это не 2000... После того, как VadiMGP подрихтовал TWinKey, у меня глюки прекратились. Может, он просто расширил границы, не решив проблему принципиально?

Добавлено: Чт окт 17, 2013 23:17
Maximus
[cut="LonerD"]Ты в личку заглядываешь хоть иногда? :)[/cut]

Добавлено: Пт окт 18, 2013 00:28
LonerD
Maximus
відповів


Вахмурка
Спасибо, но причина не в TWinKey. Он действительно установлен, но проблема проявляется и после его отключения, и в 64-х битном Тотале.

Добавлено: Пт окт 18, 2013 05:22
LonerD
Вот же, нашёл таки обсуждение. Утверждается про 2000 пользовательских команд.

Но у меня глюки начинаются раньше чем меню достигает этих команд.
Сократил количество пунктов меню.
Осталось 1899 em-команд и 99 cm-команд.
Не помогло.

Такс... Начали закрадываться сомнения. А ограничения ли это Тотала? Или всё же не совсем Тотала? Или совсем не Тотала?

MVV, у меня многие команды запускаются через TCFS2, фактически панели и построены на этой утилите. Так вот именно команды, вызываемые через TCFS2 и начинает колбасить. Причём команды на панели, которая вызывается первой, отрабатывают нормально, а дальше - чудеса в решете.
Провёл эксперимент. Поместил рядышком две команды:

em_Program
и
[em_Program_TCFS2]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe /ef tem(em_Program)

Если пунктов в меню указанное выше количество, то первая отрабатывает, вторая - нет.
Убираю часть пунктов из меню - вторая команда работает.

Добавлено: Пт окт 18, 2013 08:37
Avada
All
Во избежание ненужного дублирования темы объединены. Заголовок общей темы изменён на более универсальный.

Добавлено: Пт окт 18, 2013 10:02
MVV
LonerD,
Ну уж TCFS2 тут точно не при чем, она ж ничего сама не парсит, просто просит тотала выполнить команду...

Добавлено: Пт окт 18, 2013 14:38
LonerD
MVV писал(а):LonerD,
Ну уж TCFS2 тут точно не при чем, она ж ничего сама не парсит, просто просит тотала выполнить команду...
Согласен.
Попробовал вызвать скрипт с той же пользовательской командой - получаю аналогичное сообщение "File not found" :|
Причём если вызывать скрипт с панели напрямую
%COMMANDER_PATH%\Utilities\AutoHotkey\AutoHotkey.exe %COMMANDER_PATH%\Scripts\SendTCUser.ahk
то он отрабатывает.
А если назначить этот же скрипт на em_-команду и сделать кнопку для этой команды и разместить её не на главной панели, то не отрабатывает. Если эту же кнопку перенести на ту панель, которая загружается по умолчанию - тогда кнопка отрабатывает.

Получается, дело не только в главном меню, но и в количестве em-команд на панелях. :?: (у меня кнопки на панелях вызывают em-команды). Или даже в целом в общем количестве команд, которые видит Тотал.
На всякий случай проверил ещё одну теорию. Редактирование ini-файла с пользовательскими командами ничего не даёт, так что дело не в общем количестве прописанных команд, а в количестве так сказать загруженных в память.

Поправьте, плиз.
Я правильно понял принцип работы Тотала с командами?:
В памяти создаётся некий массив команд (всех или только em?). При загрузке Тотал вначале считывает файл главного меню и прописывает в этот массив все команды из меню. Также по мере выполнения прописываются все команды, вызванные в процессе работы другими средствами (через плагин autorun, через хоткеи, одна из другой и т.д...). При открытии панели инструментов Тотал перечитывает содержимое файла панели и тоже прописывает в массив все найденные на панели команды.
Размер массива с командами ограничен (сознательно Гислером или системные ограничения?). За один сеанс работы туда может быть прописано не более n-команд.

Добавлено: Пт окт 18, 2013 15:03
MVV
Если так подумать, из USERCMD.ini можно считывать команды средствами чтения INI-файлов, и знать нужно лишь их имена. С помощью Process Monitor можно посмотреть, к каким файлам тотал обращается при вызове команды. А хранит ли тотал команды в памяти, можно посмотреть, создавая команды с уникальными параметрами, чтобы искать их в памяти процесса.

Добавлено: Пт окт 18, 2013 16:21
LonerD
MVV
Смысл слов понял. Как проверить через Process Monitor - не понял
Проверил несколько другим способом.
Запустил Тотала, с помощью диспетчера задач сохранил дамп, перешёл в Тотале на вторую панель, сохранил дамп снова. Открыл дампы в гекс-редакторе. ЕМ-команды, прописанные на первой панели - встречаются в обоих дампах по два раза - один раз это фрагмент файла панели, а второй раз - это видимо загруженная в память команда. Прописанные на второй панели - встречаются в дампе только один раз как фрагмент файла панели.
Причём первые шесть команд второй панели - рабочие (и в дампе встречаются по два раза), а все команды что идут дальше - нет. То есть уже понятно, что Тотал прочитал файл панели, начал вносить встретившиеся em-команды в некий массив, но место в массиве закончилось.

Моя теория подтверждается. Чем больше em-команд встречает Тотал в процессе сеанса работы, тем больше переполняется его память, и начиная с некоторой встреченной команды все последующие встреченные команды уже не будут восприниматься.

Похоже, суммарно и получается лимит - 2000 пользовательских команд или около того.

Намеренное ли это ограничение для того, чтобы Тотал потреблял меньше памяти? Ненамеренные ограничения (Гислер прописал такое значение и не подумал, что кому-то может понадобиться больше)? Баг Тотала? Ограничения, накладываемые системой?

MVV
Можешь как-то донести эту мысль до Гислера, сформулировав её более правильно с точки зрения программиста (и самое главное - на английском) ?

Добавлено: Пт окт 18, 2013 18:30
MVV
Нарыл с ходу, наверное имеет смысл.

Добавлено: Пт окт 18, 2013 20:44
LonerD
Хм... А может Тахер и має рацію.
А может и нет. А может это лишь часть правды, а истина по прежнему где-то там...

Имена em-команд у меня занимают 37 Кб только для главного меню(даже если удалить все разделители между ними). И работают ведь. Именно в главном меню все команды работают. Значит, порог, похоже, всё же выше названных Тахером 32 кб.

У меня действительно имена комманд длинные, и составлены не просто из набора цифр, а "по смыслу".
Сильно длинные названия команд? ОК, все названия сложно перевести в циферки, как советует Тахер. Но в названиях многих команд у меня есть повторяющиеся символы. (em_prog_NazvaProgramy). Сделал кардинальное сокращение имён файлов (убрал приставку prog_ из названий) - везде, в меню, в пользовательских командах, в ассоциациях. Итого, суммарно имена всех em-команд сократились на 2000 символов. Что это дало? Ровным счётом - НИЧЕГО !!!. Если раньше работало меню, главная панель и первые несколько команд второй панели, то и теперь они же работают :? :? :?
Попробовал наоборот - удлиннить названия всех команд. Опять та же история.

Попробовал сосчитать количество всех команд. При таком количестве это проблемно... В главном меню часть пунктов повторяется в разных местах... На панелях инструментов имена уникальные (отличаются от главного меню). В ассоциациях и хоткеях ещё есть уникальные еm-команды, которые грузятся с Тоталом.
Но если прикинуть (плюс-минус 10-20 команд), то как раз и получается
ВЫВОД: За сеанс работы Тотал может работать только с первыми 2000 увиденными (загруженными в память) пользовательскими командами.

Добавлено: Пт окт 18, 2013 20:58
Skif_off

Добавлено: Пт окт 18, 2013 21:03
LonerD
Доу. Пока я считал и писал - Гислер таки подтвердил опасения по поводу вызова всего 2000 команд. Почему? Зачем? За что такая несправедливость?
Попросил его увеличить количество команд... Если откажет - то можно идти за верёвкой и мылом.

Добавлено: Сб окт 19, 2013 17:52
Andrey_A
LonerD писал(а):Пока я считал и писал - Гислер таки подтвердил опасения по поводу вызова всего 2000 команд.
Он подтвердил ещё в 2010. Поддержал как мог) на офф сайте, если нет, так нет. Если уберёт или расширит ограничение - будет хорошо.