Общие принципы создания плагинов и их взаимодействие с NetView
Плагины для нетвью могут быть двух типов:
 |
Любые процессы в системе могут взаимодействовать с нетвью
версии 2.80 и выше посредством функций
экспортируемый nvapi.dll которая копируется в
системный каталог SYSTEM или SYSTEM32 во время
установки NetView. Почитать про эти функции
можно здесь. |
 |
Динамически присоединяемые библиотеки .dll загружаемые NetView и экспортирующие три
функции. Обязательные из них только две:з>
 |
NVPluginGetInfo - вызывается при запуске NetView. Имеет
единственный параметр - указатель на структуру NVPLUGININFO. При вызове функции нетвью сам выделяет память для этой
структуры, так же устанавливает поле nvver равное своей версии. На основании этого плагин может вернуть из
функции значение 0 и он не появится в списке досупных плагинов (например если установленная версия нетвью не
поддерживает некоторые необходимые функции), либо - 1 тогда плагин будет доступен для загрузки. Плагин так же
должен установить в поле retver свою версию и скопировать в plname и retstr строки размером в 63 и 127 символов
максимум, первоя строка - имя плагина а вторая - краткое описание. Остальные поля при вызове этой
функции не инициализированы и не должны использоваться. Примерный код этой функции:
 |
DWORD WINAPI NVPluginGetInfo(LPNVPLUGININFO nvpi)
{
nvpi->retver.hi=1;nvpi->retver.lo=0;//Версия нашего плагина - 1.0
strcpy(nvpi->plname,"Cool plugin");//Название плагина. 63 символа максимум
strcpy(nvpi->retstr,"Sample NetView plug-in by Killer{R}");//Краткий комментарий. 127 символов максимум
return ((nvpi->nvver.hi>2)||(nvpi->nvver.lo>71));//Плагин может работать на NetView выше 2.71
} |
|
 |
NVPluginGo - собственно функция, запускающая исполнение плагина, при возврате из
этой функции ( или при исключении в ней) нетвью считает что плагин был выгружен. Для вызова этой функции
нетвью создает новый поток. Параметр функции - указатель на структуру NVPLUGINGOINFO, подробное описание полей
которой Вы можете узнать из nvplugn.h файла. В этой структуре поле nvmainwnd - хэндл основного окна нетвью. Может
использоваться как Parent окно для плагинов. nvwnd - хэндл окна-обработчика сообщений плагина. Плагин общается с
нетвью посредством Windows messages. Нетвью шлет сообщения потоку плагина через PostThreadMessage, плагин может слать
сообщения окну nvwnd. При этом для завершения выполнения плагина нетвью шлет ему сообщение WM_QUIT после
получения которого плагин должен совершить все процедуры своей деинициализации и завершить
выполнение функции NVPluginGo. Примерный вид NVPluginGo:
 |
DWORD WINAPI NVPluginGo(LPNVPLUGINGOINFO plgi)
{ init();//основные действия инициализации MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) ) {
TranslateMessage( &msg );
workmessage(msg.message,msg.wParam,msg.lParam);//наша функция обработки сообщений от нетвью
DispatchMessage( &msg );
}
deinit();//деинициализация
return 0;
}
|
|
|
На верх
|