Доклад: Как самому сделать plug-in к FAR на Visual C++

Трудно найти человека, которые не знает или не использует 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.

/*

* SimpleFP - простой plug-in к Far-у. (С) 2000 Phoenix, Moscow

*/

#include // для вызова sprintf

#include // для функций Windows

#include "plugin.hpp" // для функций Far

#define PLUGIN_NAME "Open windows" // Название plug-in-а

#define WINDOW_HEAD "Open windows list" // Заголовок меню, которое мы сделаем

//

// Описываем функции Far, которые с которыми мы работаем.

//

extern "C"

{

void WINAPI _export SetStartupInfo(struct PluginStartupInfo *Info);

HANDLE WINAPI _export OpenPlugin(int OpenFrom,int Item);

--> ЧИТАТЬ ПОЛНОСТЬЮ <--

К-во Просмотров: 225
Бесплатно скачать Доклад: Как самому сделать plug-in к FAR на Visual C++