Руслан Ильгасов
Трудно найти человека, которые не знает
или не использует Far - IMHO лучший клон NC для
Windows. Кроме того, что это просто очень
хороший файл менеджер, к нему есть огромное
количество plug-in модулей. Plug-in модуль это DLL-файл,
который вместо стандартных Windows функций по
работе с монитором, клавиатурой и т.д.
обращается к функциям Far-а. Far поддерживает
весь набор функций для работы в текстовом
режиме. Установка plug-in модуля происходит
предельно просто - DLL файл и файлы данных
копируются в каталог в каталоге Far\Plugins и Far
перезапускается.
FAR распространяется с полным набором
файлов для написания самим plug-in на любом С
компиляторе для Windows. Темой этой статьи
является написание этих модулей самим на
Visual C++ (я использовал Visual C++ 5.0). При установке
в каталог Far копируется PlugDoc.rar, в нем есть
примеры plug-in-ов и header файл. Все примеры
используются Еще там есть VCReadme.txt, в котором
описываются тонкости работы с Visual C++. Потом
поразбираетесь с примерами.
Мы с вами напишем plug-in, который получает
список открытых окон Windows, он может
пригодиться как заготовка для своих. И
вообще - стоит начать - все это не так сложно,
как можно подумать. Вот, а теперь - поехали:
1) Запускает VC, делаем новый проект типа
"Win32 Dynamic-Link Library" по имени SimpleFP. Создает
файл simplefp.cpp - здесь, собственно, мы и будем
писать. В каталог SimpleFP копируем header файл
plugin.hpp из архива PlugDoc.rar.
2) Теперь нам надо сделать .def файл - это
файл, в котором описываются функции,
которые вызываются из внешних модулей. Мы
должны описать функции Far-а, которые мы
будем использовать в нашем модуле. Делаем
текстовый файл simplefp.def, в котором пишем:
LIBRARY
EXPORTS
GetPluginInfo=_GetPluginInfo@4
OpenPlugin=_OpenPlugin@8
SetStartupInfo=_SetStartupInfo@4
Здесь мы описываем 3 функции, которые нам
пригодятся. А теперь добавим simpledef.def к
файлам проекта (Project - Add to project - Files - simplefp.def).
3) Теперь пишем сам plug-in - работаем с файлом
simplefp.cpp. Я решил дать текст самой программы с
комментариями - можно скопировать в С++ и
начать с ним возиться. Но сначала о основах.
Far работает по тем же принципам, что и Windows -
вы ссылаетесь в программе на те функции, уже
имеющиеся в системе, которые хотите
использовать. Far предоставляет функции для
работы с экранными формами в режиме console
application. При запуске plug-in-а Far запускает
функцию OpenPlugin, мы будем ее рассматривать
как аналог main() или WinMain(). Но кроме этого надо
еще сообщить Far-у данные о нашем plug-in-е. Это
делает функция GetPluginInfo.
Компилируйте, копируйте в Far\Plugin и перезапускайте Far. В Far-е нажмите F11 - это список plug-in модулей. Теперь в нем должна появиться строка Open windows. Посмотрите на результат. Теперь можно развивать, например - обрабатывая результат MenuCode посылать выбранному окну сообщение WM_CLOSE, или сделать еще что-нибудь нетривиальное :) Создание plug-in модулей к Far-у документирована замечательно, разбирайтесь.
Литература по Microsoft Visual C++
|