Итак, дамы и господа, FAQ (ЧАВО то бишь). Здесь Вы
сможете (надеемся) найти ответы на некоторые сложные вопросы работы
плагинов и Far'а, и не писать
Евгению Рошалу
письма с вопросами типа 'А как его запустить...'.
Так же здесь вы сможете прочитать ЧаВО по мотивам эхи
far.support
От 21.06.2000
- Откуда взялся этот сайт?
- А откуда они-то взялись?
- Где мне взять последнюю версию FAR'а?
- Не пойму как использовать вновь загруженный плагин. Скопировал файлы и...
- "Свалил" все плагины в один каталог, но FAR их не видит. Что делать?
- Я решил сравнить директории при помощи ФАР команды compare. Но ФАР выд...
- Hаpод очень хотелось бы поиметь пpостейшие исходники плагинов к FAR`y ...
- Как мне спрятать курсор?
- А как перевести в нужную позицию?
- Если я не использую стандартную функцию работы с диалогом, то каким об...
- Если я использую Dialog, а в нем строку ввода, то будет ли работать фу...
- Можно ли динамически в Dialog менять элементы типа Static (их заголовк...
- Чтобы плагин работал и в редакторе и в shell (и на панели) что нужно с...
- Возможно динамическое отключение/подключение плагина не перезапуская F...
- Встречаются имена файлов состоящие из цифр (как в FIDO NetMail). При с...
- А если сотворить plugin на данную тему - работать будет или для этого ...
- Есть такая - утилита SED называется. Она позволяет делать замену одной...
- При копировании файлов в FAR`е, если исходный файл открываеть на чтени...
- Plug-in`ы в редакторе срабатывают только при активизации? А можно ли с...
- А можно в одном DLL-модуле держать несколько плагинов... Несколько фун...
- ... а потом различать что хотел пользователь по параметру Item в функц...
- Возможно ли при нынешнем API сделать плагин, работающий в фоновом режи...
- А как сделать, что-бы в меню выбора диска добавить клавишу доступа к д...
- Есть файл, котоpый можно откpыть плагином. Могy ли я как-то об этом yз...
- А как сделать переход на один уровень вверх по Backspace'у?
- А можно ли чтобы FAR работал только под DOS?
- Как бы это из плагинового модуля получить полный путь до него самого?....
- Помогите пеpевести стpyктypy INPUT_RECORD из WinAPI на Delphi.
- Как получить полный путь до редактируемого файла из плагина редактора?...
- Почему в Win95/98 FAR воспринимается как приложение DOS (нельзя закрыт...
- Можно ли из плагина управлять переключением фоновых экранов ФАРа?
- Кто-нибудь проверяет плагины на предмет безопасности? Например, не мож...
- Есть ли трянсляция фарового апи для Delphi? Дельфя нужна из-за огромно...
- Чем может быть вызвано, что я не вижу плагин (RecycleBin ver. 1.7.0.1)...
- А как фаp опpеделяет, что в клипбоpде лежит именно веpтикальный блок?
- Скажи, а что - никак нельзя узнать, на чем стоит курсор в текущей пане...
- Нельзя ли при перерисовке любой панели перерисовывать заголовок окна? ...
- Откуда FAR берет процедуры для копирования/удаления/... файлов?
- Как можно получить имя каталога, из которого запущен фар?
От 21.06.2000
- Откуда взялся этот сайт?
Взялся он из умов поклонников Far'а (и его плагинов) Валентина Скирдина и Игоря Русских. Первоначальная идея о WebRing'е переросла в более широкий проект.
- А откуда они-то взялись?
С такой развитой логикой только плагины и писать. Читайте ниже, если не знаете с чего начать.
- Где мне взять последнюю версию FAR'а?
Есть "куча" серверов, где вы сможете удовлетворить свои потребности:- http://www.rarsoft.com/ - официальный сайт автора FAR`а и RAR`а.
- Еще лучше произвести поиск на FTP-серверах: Русские FTP или Зарубежные FTP. Эти ссылки покажут Вам список сайтов, откуда можно скачать последнюю версию...
- Ну в крайнем случае можете использовать наш сайт - на нем так же должен храниться Far и плагины к нему.
- Не пойму как использовать вновь загруженный плагин. Скопировал файлы из архива в каталог far\plugins а что дальше, как он работает?
Все очень просто - Создаем в папке
far\plugins каталог "Имя архива с плагином" - Разваливаем туда архив
- Перезапускаем FAR
- Жмем
<F11> (вызов списка доступных плагинов) - Выбираем нужный и...
- "Свалил" все плагины в один каталог, но FAR их не видит. Что делать?
Просто скопировать файлы *.DLL, *.HLF & *.LNG в подкаталог PLUGINS не получится (все дело в том, что FAR при старте, найдя *.DLL в каталоге (подкаталоге) считает, что он один и... на этом поиск заканчивается) - для каждого плагина должна быть своя папка...
- Я решил сравнить директории при помощи ФАР команды compare. Но ФАР выделил почти половину "разных". Потом я понял, что он сравнил не только их имена (что мне и надо) но и размеры файлов (что мне как-раз токи и не надо). Как это обойти?
Для этой цели есть специальный плагин "Advanced compare". Он позволяет проводить сравнение панелей с учетом: - Process subfolders
- Compare time
- two seconds precision
- Compare size
- Compare contents
- Hаpод очень хотелось бы поиметь пpостейшие исходники плагинов к FAR`y на С С++ и какyю нибyдь инфy о том как они в пpинципе пишyтся.
А у тебя сам FAR стоит? Тогда в чем проблема? Там и исходники и дока по API. Причем ИМЕHHО на C++
- Как мне спрятать курсор?
Win32 console API: SetConsoleCursorInfo, только не забудь его потом вернуть на место.
- А как перевести в нужную позицию?
Там же: SetConsoleCursorPosition
- Если я не использую стандартную функцию работы с диалогом, то каким образом обрабатывать ввод данных? Самому писать?
Да.
- Если я использую Dialog, а в нем строку ввода, то будет ли работать функции ProcessEditorInput и ProcessEditorEvent для этого элемента управления?
Нет.
- Можно ли динамически в Dialog менять элементы типа Static (их заголовки)?
После создания диалога? Нет. Но можно из него выйти, заменить заголовок и создать диалог опять. Если это сделать сразу же, одно за другим, то будет достаточно быстро.
- Чтобы плагин работал и в редакторе и в shell (и на панели) что нужно ставить во флагах: Info->Flags=?????;
PF_EDITOR
- Возможно динамическое отключение/подключение плагина не перезапуская FAR?
Отключение невозможно. А зачем тебе его отключать? А подключением фар сам занимается. Другое дело, что фар можно попросить не кэшировать настройки для данного плагина, а грузить его в память каждый раз вместе с самим фаром, указав PF_PRELOAD. Но без реальной необходимости это лучше не делать - лишние тормоза и расход памяти.
- Встречаются имена файлов состоящие из цифр (как в FIDO NetMail). При сортировке по имени естественно файлы упорядочиваются по компьютерным правилам (1.msg, 10.msg,..., 2.msg, 20.msg,...). Возможно ли изменить алгоритм сортировки по имени так, чтобы в указанном выше примере файлы располагались в естественном порядке (1.msg, 2.msg,.... 10.msg,... 20.msg).
Это не настолько часто требуется, чтобы добавлять дополнительный режим сортировки.
- А если сотворить plugin на данную тему - работать будет или для этого необходимо менять саму оболочку?
Будет.
- Есть такая - утилита SED называется. Она позволяет делать замену одной подстроки на другую в группе файлов. Вот про нечто такое и идет речь. Можно и плюгин приделать, но в FAR`е это было-бы лучше ;-)
Это не та функция, которая заслуживает быть внесенной в сам фар.
- При копировании файлов в FAR`е, если исходный файл открываеть на чтение с атрибутом типа SEQUENTIAL_READ (или что-то наподобие, вообщем последовательное чтение), то NT`я не будет увеличивать размер дискового кэша для операции чтения. Увеличение размера кеша приводит к тормозам. Если ФАР, например, читает файл через сеть с другого компьютера, то на этом (с которого читаем) компьютере сильно увеличивается размер кэша, хотя в настройках NT стоит "Minimize Memory Used" для сетевых операций.
В FAR`е файлы так и открываются (если конечно не включена опция "Use system copy routine").
- Plug-in`ы в редакторе срабатывают только при активизации? А можно ли сварганить такой, чтобы в фоновом режиме работал?
Можно. Экспортировать ProcessEditorInput и ему будет приходить все нажатия клавиш в редакторе.
- А можно в одном DLL-модуле держать несколько плагинов... Несколько функций, так сказать... И чтобы каждый вызывался, как будто бы находился в отдельном DLL-файле (пусть даже с полной загрузкой всего DLL`я)...
Да. В PluginInfo можно указать несколько строк, добавляемых к plugins menu.
- ... а потом различать что хотел пользователь по параметру Item в функции OpenPlugin - правильно?
Правильно.
- Возможно ли при нынешнем API сделать плагин, работающий в фоновом режиме?
Разве что в редакторе. В панелях такое не поддерживается.
- А как сделать, что-бы в меню выбора диска добавить клавишу доступа к директории "My Documents" с учетом текущего юзера. По типу клавиш доступа к сетевому, FTP , и прочим плагинам.
Ну, проще всего написать плагин....
- Есть файл, котоpый можно откpыть плагином. Могy ли я как-то об этом yзнать? Лyчше всего отдать командy на cd тyда и полyчить ответ - смогли/не смогли.
Hет, api для взаимодействия между плагинами в фаре отсутствует. Тут одной проверкой на принадлежность файла не обойтись.
- А как сделать переход на один уровень вверх по Backspace'у?
Либо сделать макpос, пеpеназначающий BS на CtrlPgUp, либо запутить %FARDIR%\Addons\Macros\BS.reg
- А можно ли чтобы FAR работал только под DOS?
НЕТ. FAR - 32-разрядное консольное приложение,... и именно Win32. Поэтому не только под DOS, но и вообще под DOS эта программа работать не будет.
- Как бы это из плагинового модуля получить полный путь до него самого?...
В функцию SetStartupInfo() far передает указатель на структуру PluginStartupInfo. Полное имя модуля содержится в поле ModuleName оной структуры. Читайте plugins.hlp, там все написано.
- Помогите пеpевести стpyктypy INPUT_RECORD из WinAPI на Delphi.
uses Windows; // :-)
- Как получить полный путь до редактируемого файла из плагина редактора?
Очень просто. См. здесь
- Почему в Win95/98 FAR воспринимается как приложение DOS (нельзя закрыть по крестику без соответствующего предупреждения, и второй файл какой-то грузится Winlodap), а в NT все OK?
В Win9x "кривые" консоли (ведь FAR это консольное приложение). Это даже не фича... :-(
- Можно ли из плагина управлять переключением фоновых экранов ФАРа?
Нет.
- Кто-нибудь проверяет плагины на предмет безопасности? Например, не может ли FTP что-нибудь скачивать на свой адрес?
Нет. А как ты представляешь себе такую проверку?
- Есть ли трянсляция фарового апи для Delphi? Дельфя нужна из-за огромного количества наработок для Oracle.
Да. См. Delphi FAR API, PAFTDR.
- Чем может быть вызвано, что я не вижу плагин (RecycleBin ver. 1.7.0.1) ни по F11, ни по Alt-F1(Alt-F2)?
Есть пара причин:- У вас отсутствует какая-нить RunTime DLL (например, если плагин скомпилирован под Borland C++ 5.02 с 'Dimanic Link Library', то этому плагину требуется дополнительно cw3230.dll). Отройте плагин на просмотр (View, F3) и поищите подстроку '.DLL'...
- Плагин написан "криво" - содержит ошибки.
В любом случае нужно обратиться к разработчику.
- А как фаp опpеделяет, что в клипбоpде лежит именно веpтикальный блок?
У вертикального блока clipboard format - "FAR_VerticalBlock"
- Скажи, а что - никак нельзя узнать, на чем стоит курсор в текущей панели? Т.е. меня интересует - на каталоге или на файле...
Control(FCTL_GETANOTHERPANELINFO); Control(FCTL_GETPANELINFO); PanelInfo.PanelItems[PanelInfo.CurrentItem].FindData.dwFileAttributes
- Нельзя ли при перерисовке любой панели перерисовывать заголовок окна? По-моему, это будет проще и быстрее, чем плагину вызывать FCTL_REDRAWPANEL
Насчет быстрее - не факт. Если заголовок не изменен плагином, как оно обычно и бывает, FAR перерисует его вхолостую.
- Откуда FAR берет процедуры для копирования/удаления/... файлов?
Из Win32 API. Копирование: CreateFile+ReadFile+WriteFile+CloseHandle или CopyFile(Ex), в зависимости от ОС и опции "Use system copy routine". Удаление: DeleteFile или SHFileOperation в зависимости от опции "Delete to Recycle Bin"
- Как можно получить имя каталога, из которого запущен фар?
char lpName[_MAX_PATH], lpFullPath[_MAX_PATH]; LPTSTR lpFile; GetModuleFileName(NULL,lpName,sizeof(lpName)); GetFullPathName(lpName,sizeof(lpFullPath),lpFullPath,&lpFile); *lpFile='\0';
Источник plugring.farmanager.com
|