===================================================================== AJPscripts - CherryTree proxy Линда Кайе 2015-2019. Посвящается Ариэль ===================================================================== Этот скрипт призван бороться с непониманием программой CherryTree кириллицы в командной строке. Например, если попытаться открыть через командную строку файл "Вишня.ctd", то CherryTree запустится и покажет пустой документ вместо того, который мы хотели открыть. Чтобы исправить такое поведение, следует запускать данный скрипт с именем файла в командной строке. Скрипт запишет в конфиг CherryTree имя открываемого файла, как последний открытый файл, а так же включит соответствующую настройку программы, и сам запустит CherryTree, который при старте откроет желаемый файл. История создания ---------------- CherryTree умеет принимать имя файла через командную строку. Однако, в один момент выяснилось, что по какой-то причине он не открывает файлы с кириллицей и прочим юникодом в имени, только ANSI с латиницей. Расследование показало, что происходит это по ставшей уже привычной причине, когда разработчик говорит: "Я пишу кроссплатформенное приложение, у меня везде юникод, UTF-8 - форева!" - а потом берёт ANSI Win32 API и думает, что ему оттуда прилетит этот самый "юникод". В частности, программа использует GetCommandLineA() и без преобразований считает полученную строку UTF-8. В результате, переданная через командную строку латиница ещё походит на UTF-8, а вот кириллица - нет. Данные портятся, программа безо всяких сообщений об ошибках открывает пустой документ вместо файла. Так как багрепорт был запощен давно, но до сих пор не получил должного внимания, я не стала ждать милости от разработчика и написала вот такой костыль, использующий механизм открытия последнего файла. Позже выяснилось, что у данного метода есть неприятный недостаток, а именно невозможность открытия новых файлов при уже запущенном CherryTree. Тоесть открываешь один файл - грузится программа и в ней файл открывается. Открываешь другой файл - программа грузится, но с пустым документом. Должно быть, программа проверяет, запущена ли она уже, и, если да, не пытается открыть последний документ, имя которого конфиг записывал скрипт. Для преодоления этого недостатка был написан скрипт - CherryTree Proxy SL. Это не новая версия данного скрипта, а альтернативная реализация, у которой есть свои недостатки. История изменений ----------------- • 24.03.2015 Первая версия ^^ • 4.05.2019 [+] Код скрипта разбит на модули. [+] Теперь скрипт запускается файлом CherryTreeProxy.WSF, а не CherryTreeProxy.VBS. [+] Переписана почитайка. Использование ------------- Запуск производится как-то так: > WScript.EXE //NoLogo "C:\Scripts\CherryTreeProxy.WSF" "C:\Docs\Вишня.ctd" Если имя передаваемого файла содержит пробелы, то его обязательно нужно заключать в кавычки. Если нет - кавычки можно опустить. Если имя файла не указано, то скрипт просто запустит CherryTree без аргументов. > WScript.EXE //NoLogo "C:\Scripts\CherryTreeProxy.WSF" Настройка --------- ВНИМАНИЕ! Перед выполнением действий, указанных в этом разделе, рекомендуется создать резервную копию конфига CherryTree. Это файл config.cfg в каталоге программы (при портабельной установке), либо где-то в AppData. В начале работы придётся немного настроить скрипт. Для этого в файле Settings.VBS необходимо модифицировать значения следующих констант: • CFG_FILE_NAME - здесь указывается полное имя файла конфига: файл config.cfg и путь к нему. • EXE_FILE_NAME - здесь указывается полное имя исполняемого файла CherryTree: файл cherrytree.exe и путь к нему. Данные константы уже заполнены какими-то значениями, поэтому их придётся лишь аккуратно их поправить. Обратите внимание, что строки в VBScript начинаются и заканчиваются кавычкой, а кавычки внутри самой строки нужно задваивать. Например: > "Это ""пример"" строки" Маленький копирайт ------------------ 1. Программа и исходный код распространяются бесплатно. 2. Вы имеете право распространять их на тех же условиях. 3. Вы не имеете права использовать имя автора после модификации исходного кода. 4. При этом желательно указывать ссылку на автора оригинальной версии исходного кода. 5. Вы не имеете права на платное распространение исходного кода, а также программных модулей, содержащих данный исходный код. 6. Программа и исходный код распространяются как есть. Автор не несёт ответственности за любые трагедии или несчастные случаи, вызванные использованием программы и исходного кода. 7. Для любого пункта данного соглашения может быть сделано исключение с разрешения автора программы. 8. По любым вопросам, связанным с данной программой, обращайтесь по адресу lindaoneesama@gmail.com Контакты -------- Почта: lindaoneesama@gmail.com Сайт: https://www.lindachan.net