Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

AkulaBig писал(а):Теперь при запуске ТС сразу мелькает какое-то сообщение, хотя со вчерашней версией все работает.
Если версия x64, то возможно, проблему с закрывающимся диалогом ошибки так и не удалось до конца решить. Если попробовать 32-битную, там будет нормально?
AkulaBig писал(а): Но в данных случаях проценты ставить обязательно:

IcoNumber = "%COMMANDER_PATH%\Images\Enumeration\00.ico"
Не обязательно, это просто строка. Зависит от как дальнейшего её применения.
AkulaBig писал(а):Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\IcoNumber.aucfg
...
SetEnv /EV arc_7z %COMMANDER_PATH%\Archivers\7z\7z.exe
Директивы записываются в КЗ. Третья строка и есть КЗ.
AkulaBig писал(а):А в данном работать не будет:
А это ФЗ.
AkulaBig писал(а): Может тогда проценты убрать везде, кроме КЗ? Тогда будет все логично.
Так их сейчас и нет нигде, кроме КЗ.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback
Видимо, последнее обновление действительно весьма проблемное.

Сначала словил:

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

Ошибка в файле: D:\Portable\TC 11.51\Ini\Scripts\Environment.aucfg

[295] Func AssocWinSynс()

Недопустимое имя функции: AssocWinSynс
И это хорошо, потому что символ "c" на конце оказался русским. Нужно выявлять такие ошибки, и это соответствует исправлению "- не определялись некорректные символы в имени пользовательской функции"

А далее началось:

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

Ошибка в файле: D:\Portable\TC 11.51\Ini\Scripts\Environment.aucfg

[397] ShellExec %COMMANDER_EXE% '/S=L:Piclview "%f%""'

Данный синтаксис более не используется в выражениях. Пожалуйста, удалите символы % в имени %COMMANDER_EXE% для исправления ошибки. Это сообщение будет убрано в будущих версиях.
Ну, подумал, может, кавычка вторая не нравится, хотя так и было задумано в этой записи. Закомментировал строку и словил следующее:

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

Ошибка в файле: D:\Portable\TC 11.51\Ini\Title\Title.aucfg

[599] IniWrite %BarFile% "Buttonbar" "menu8"  %"'IP - '        & PingAddress"

Данный синтаксис более не используется в выражениях. Пожалуйста, удалите символы % в имени %BarFile% для исправления ошибки. Это сообщение будет убрано в будущих версиях.
В общем, дальше проверять нет смысла, поскольку у меня все команды по этому принципу записаны. Выходит, что неправильно? :shock:

AkulaBig прав. В х64 окно об ошибке мелькает и не даёт прочитать сообщение. В самом окне об ошибке в 32-битном Тотале кнопка "Править" не открывает скрипт, и клик по синей ссылке тоже ничего не даёт.

Посмотрел мельком справку. Хотелось бы пример на объект TextFile. Как в нём организовать построчное чтение файла в цикле?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а): Выходит, что неправильно?
Нет, эти записи правильные, мой косяк, в принципе уже понятно в чем дело. К сожалению до вечера ничего делать не смогу. Пока убрал релиз с сайта.
Orion9 писал(а):В х64 окно об ошибке мелькает и не даёт прочитать сообщение.
Очень печально, чувствую эту проблему так и не получится решить.
Orion9 писал(а): В самом окне об ошибке в 32-битном Тотале кнопка "Править" не открывает скрипт, и клик по синей ссылке тоже ничего не даёт.
Тут используется редактор, заданный в TC, но возможно, что-то не совместимо. Что у вас задано в качестве редактора и как?

Как вариант, можно в блокноте открывать, если не удастся выполнить заданную там команду.
Orion9 писал(а):Хотелось бы пример на объект TextFile. Как в нём организовать построчное чтение файла в цикле?
В простейшем варианте:

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

ff = TextFile(COMMANDER_INI)

While Not ff.AtEOF
    MsgBox(ff.ReadLine())
Wend

Free(ff)
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback писал(а):К сожалению до вечера ничего делать не смогу.
Да нам спешить некуда, лишь бы всё работало. Я просто подумал, что уже достаточно потренировался и рубанул как надо, не хотелось бы проходить через это ещё раз, тем более что сейчас нет такой возможности.
Loopback писал(а):Очень печально, чувствую эту проблему так и не получится решить.
Как говорил Джон Коннор: "Выжимать будем до последнего байта, а надеяться до последнего бита". Так что не спешите, пока еще не судный день)
Loopback писал(а):возможно, что-то не совместимо. Что у вас задано в качестве редактора и как?
Исключительно know-how ) Но видимо Autorun как раз doesn't know how to когда в качестве редактора задано такое ))

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

Editor=hidcon %COMMANDER_PATH%\Ini\Scripts\F4.bat
Loopback писал(а):Как вариант, можно в блокноте открывать, если не удастся выполнить заданную там команду.
Да, не помешало бы такое.
Loopback писал(а):В простейшем варианте:
Действительно простой и приятный вариант. Тогда ещё в справке можно сделать уточнение, что метод ReadLine передвигает указатель на следующую строку, а то не совсем понятно.

А чем работа с объектом TextFile лучше файловых функций? Есть какие-то очевидные отличия и преимущества?
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Loopback писал(а):Если версия x64, то возможно, проблему с закрывающимся диалогом ошибки так и не удалось до конца решить. Если попробовать 32-битную, там будет нормально?
Не было возможности ответить, но все уже разъяснили за меня. Так что ждем исправления. Насчет х64. Ведь до начала изменений окно ошибки отлично отрабатывало. Так что может его и оставить как было, только исправить сообщение.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а):Editor=hidcon %COMMANDER_PATH%\Ini\Scripts\F4.bat
Проверил, у меня открывает без проблем...

Если что есть директива AutorunErrorBoxEditor, но хотелось бы, чтобы по умолчанию максимально совместимо было.

Orion9 писал(а):А чем работа с объектом TextFile лучше файловых функций? Есть какие-то очевидные отличия и преимущества?
Функции File* - это простые функции, делающие только одну операцию за раз. Поскольку прочитать и записать файл целиком - наиболее частые сценарии. Чуть реже дозаписать. Сделаны исключительно для удобства простых действий.

TextFile - более продвинутое решение, если требуется работать с большими файлами. У него больше возможностей именно с этой точки зрения. Но на самом деле я не вижу много сценариев для него именно в Autorun.
AkulaBig писал(а): Ведь до начала изменений окно ошибки отлично отрабатывало. Так что может его и оставить как было, только исправить сообщение.
До начала каких изменений? И когда оно отлично отрабатывало? Окно ошибки под x64 регулярно самозакрывалось и раньше (чаще всего при выводе ошибки парсинга), и судя по всему, проблема осталась и сейчас.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Loopback писал(а):До начала каких изменений?
Когда я выложил скрин и вы написали, что неправильное сообщение об ошибки. То-есть о пустом значении.
Loopback писал(а):Окно ошибки под x64 регулярно самозакрывалось и раньше
Но на моей ошибки оно не самозакрывалось.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

AkulaBig писал(а):Но на моей ошибки оно не самозакрывалось.
Ну я же писал, что чаще это происходит при выводе ошибок парсинга. На скрине ошибка времени исполнения (у нее доступен ОК). Да и фикс, видимо, частично работает. После вчерашнего исправления ошибка поменялась на ошибку парсинга, а соответственно, стала чаще подвержена проблеме самозакрытия.

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

Добавлено спустя 1 час 23 минуты:

Хотфикс Autorun 2.2.18.1 beta

Надеюсь, что там где не нужно, сообщение больше появляться не будет.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Пара хороших новостей. Скопировал ключ в каталог ТС, окно перестало мелькать. Видимо, окно триала мешало окну Autorun.

Убрал пробелы из пути к ТС, кнопка "Править" заработала. А значит эту проблему можно решить. Ну, и будем надеятся, что теперь в х64 окно MsgBox будет работать. Предпосылки к этому вроде есть.
Loopback писал(а):Но на самом деле я не вижу много сценариев для него именно в Autorun.
Когда-то и для файловых операций особо не было сценариев, но с каждой новой версией возможностей становится больше, а вместе с ними и аппетитов. Сейчас с появлением DllCall сложно себе представить задачу в ТС, с которой Autorun бы не справился. Попалось тут на глаза, ну разве не круто? Надеюсь, Flasher будет и дальше заливать (и побольше!) примеров в справку, уверен, у него есть чем там поделиться.)

Добавлено спустя 33 минуты:
Loopback писал(а):Хотфикс Autorun 2.2.18.1 beta

Надеюсь, что там где не нужно, сообщение больше появляться не будет.
Всё запустилось и работает. Быстро пробежался по функционалу - пока проблем нет, кроме одной. Окно стало плохо перерисовываться, т.е. раньше все гладко было, а теперь артефакты на экране остаются:

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

IniRead lines %COMMANDER_INI% "Buttonbar" "BarLimitLines" 1    
If lines = 1 Then
   IniWrite %COMMANDER_INI% "Buttonbar" "BarLimitLines" 0
Else
   IniWrite %COMMANDER_INI% "Buttonbar" "BarLimitLines" 1     
Endif

SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
SendCommand 2901
SendCommand 2901
Sleep(50)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
WinRedraw(1)      
Завтра больше потестирую и лучше.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Update.

Проверил всё, что смог. Работает. Фактически только одна проблема была обнаружена с перерисовкой экрана. Думал, WinRedraw(0) поможет, но так стало только хуже. Вынужден был откатился на вариант с TCFS2:

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

ShellExec /SW_HIDE /WAIT:2000 %TCFS2% '/ef "msg($0B, 0, 0) tcm(2901) tcm(2901) msg($0B, 1, 0) run_item(update)"'
Но надеюсь функционал WinRedraw будет починен, т.к. с ним было глаже, чем с TCFS2. Хотя и TCFS2 меня тоже устраивает.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а): Видимо, окно триала мешало окну Autorun.
Весьма возможно.
Orion9 писал(а):Убрал пробелы из пути к ТС, кнопка "Править" заработала. А значит эту проблему можно решить.
Думаю, должно помочь простое окавычивание пути к батнику:

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

Editor=hidcon "%COMMANDER_PATH%\Ini\Scripts\F4.bat"
Я вообще стараюсь везде использовать кавычки, где потенциально могут появиться пробелы.
Orion9 писал(а):Ну, и будем надеятся, что теперь в х64 окно MsgBox будет работать.
На самом деле причина закрытия окна в x64 понятна и достаточно банальна: в процессе запуска в оконную функцию диалога иногда приходит сообщение WM_COMMAND с IDCANCEL, которое и закрывает стандартный диалог. К сожалению, этому подвержены и диалоги, созданные с DialogBoxParam. Но искать, где и почему тотал его отправляет, наверно, смысла мало, всё равно на это повлиять не получится. Возможно, это как раз что-то связано с окном триала.

Хотелось бы все-таки решить эту проблему без создания полностью своего окна. Так что попытки ещё будут.
Orion9 писал(а):Окно стало плохо перерисовываться, т.е. раньше все гладко было
Плагин Runtime не менялся с прошлой версии.

Но WinRedraw имеет еще флаг 2 (забыт, не документирован), который обновляет методом TCFS2. Может он поможет.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Loopback писал(а):Хотфикс Autorun 2.2.18.1 beta
Теперь и у меня все работает. Ругнулся на %If AUTORUN_TCARCH% = 32 Then, попросил убрать процентики и все. Только смутило надпись, что в будущем это сообщение уберут. Не понятно зачем.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback писал(а):Думаю, должно помочь простое окавычивание пути к батнику:
Не помогает, хотя вроде должно. Странно. Не открывает, даже если "hidcon" вообще убрать и взять оставшийся путь в кавычки. Мелькает окно консоли в таком случае, и в процессах создаются один за другим "OpenConsole.exe -Embedding", которые продолжают висеть, пока их вручную не снимешь. Один раз удалось отловить в зависшем окне консоли строку запуска:

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

C:\Windows\system32\cmd.exe /c ""D:\Portable\TC 11.51\Ini\Scripts\F4.bat" D:\Portable\TC 11.51\Ini\Scripts\Environment.aucfg"
Судя по всему, путь скрипта передается без кавычек в батник, поэтому и не работает.
Loopback писал(а): Возможно, это как раз что-то связано с окном триала.
Наверняка связано, только не понятно, почему в 32-битном ТС оно триала так не мешает.
Loopback писал(а):Плагин Runtime не менялся с прошлой версии.
Хотел было залить обновленную версию, но обнаружил, что и в старой такая же проблема. Не пойму, как я мог её пропустить. Видимо, сыграло роль, что я в развернутом окне всё делал, а как раз в развернутом окне ТС проблемы перерисовки с WinRedraw(1) нету. Знаю, что функция эксперементальная, но могли бы вы посмотреть в чём может причина? Ведь когда-то же всё работало (самая первая кнопка на тулбаре, и совершенно не к спеху, если что). Хотя я пользуюсь ТС в основном в развернутом виде, сомневаюсь, что мог пропустить такую проблему перерисовки.
Loopback писал(а):Но WinRedraw имеет еще флаг 2 (забыт, не документирован), который обновляет методом TCFS2. Может он поможет.
Помог. Пока остановился на таком варианте:

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

SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
SendCommand 2901
SendCommand 2901
Sleep(50)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
Sleep(10)
WinRedraw(2)  
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

AkulaBig писал(а): Только смутило надпись, что в будущем это сообщение уберут. Не понятно зачем.
Оно предполагалось как временное для переходного периода. Но может и оставлю.
Orion9 писал(а):Судя по всему, путь скрипта передается без кавычек в батник, поэтому и не работает.
Мда, выше сам же написал про добавление кавычек, а вот тут упустил...
Orion9 писал(а):Помог.
Это хорошо.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Loopback писал(а):Оно предполагалось как временное для переходного периода. Но может и оставлю.
Лучше оставьте. Все-же сейчас использование процентов стало совсем неочевидным. Видимо правильным, раз вы так считаете, но неочевидным. И для новичков (и для меня :oops: ) будет лучше, если это сообщение об ошибке останется.
Ответить