Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсключение к файловому менеджеру FAR 
:(
    Опции темы
Syltan
Дата 21.2.2010, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: нет
Всего: -2



Подскажите пожалуйста, как сделать этот код более функциональным, чтоб он ещё что-то делал.  Никогда не писал плагины. Пробовал искать, все нерабочие коды, на студии 2008 не компилятся. Мне нужно написать плагин к ФАРУ. Подскажите, как сделать, чтоб этот плагин что-то делал.
Вот исходник:

Файл SimpleFP.cpp
Код

/*
* SimpleFP - простой plug-in к Far-у. (С) 2000 Phoenix, Moscow
*/
#include <stdio.h> // для вызова sprintf
#include <windows.h> // для функций Windows
#include "plugin.hpp" // для функций Far
#define PLUGIN_NAME L"Open windows" // Название plug-in-а
#define WINDOW_HEAD L"Open windows list" // Заголовок меню

//
// Описываем функции Far, которые с которыми мы работаем.
//
extern "C" {
void WINAPI _export SetStartupInfo(struct PluginStartupInfo *Info);
HANDLE WINAPI _export OpenPlugin(int OpenFrom,int Item);
void WINAPI _export GetPluginInfo(struct PluginInfo *Info);
};

static struct PluginStartupInfo Info; // Информация о нашем plug-in-е
//
// Информация о модуле определена нами в структуре Info
//

void WINAPI _export SetStartupInfo(struct PluginStartupInfo *Info) {
::Info=*Info;
}

// Эта функция вызывается для получения информации о plug-in.
// Мы должны заполнить поля структуры Info.
//
void WINAPI _export GetPluginInfo(struct PluginInfo *Info) {
Info->StructSize=sizeof(*Info); // Размер структуры Info
Info->Flags=0; // Это нам не нужно
Info->DiskMenuStringsNumber=0; // Это нам тоже не нужно

// Определяем строку с названием модуля
static wchar_t *PluginMenuStrings[1]; 
PluginMenuStrings[0]= PLUGIN_NAME;
// Определяем название plug-in модуля

Info->PluginMenuStrings=PluginMenuStrings;
Info->PluginMenuStringsNumber=sizeof(PluginMenuStrings)/
sizeof(PluginMenuStrings[0]);
Info->PluginConfigStringsNumber=0; // Это нам не нужно
}

// Эта функция вызывается при запуске plug-in модуля.
//
HANDLE WINAPI _export OpenPlugin(int OpenFrom,int Item) {
HWND hwnd; // Используем для получения handle
wchar_t p[128], o[128]; // Для создания строк меню
int i=0; // Счетчик
struct FarMenuItem MenuItems[64]; // Описание меню, которое
// создаст для нас Far
memset(MenuItems,0,sizeof(MenuItems)); // Инициализируем наше меню
MenuItems[0].Selected=TRUE;
hwnd = GetDesktopWindow(); // Получаем handle для desktop
hwnd = GetWindow(hwnd, GW_CHILD); // Получаем его handle
while (hwnd !=0) { // Пока оно не последнее
hwnd = GetWindow(hwnd, GW_HWNDNEXT); // получим handle окна
GetWindowText(hwnd,p,128); // и его заголовок
if (lstrlen(p)>0) { // если заголовок есть
wsprintf(o,L"%0.8xld %s", hwnd, p); // сделаем строчку
// скопируем эту строчку в массив MenuItems
lstrcpy((wchar_t*)MenuItems[i++].Text, o); 
}
}
// вызываем созданное нами меню, получаем номер выбранного
// пункта - MenuCode
//
int MenuCode=Info.Menu(Info.ModuleNumber, 
-1,-1,0,
FMENU_AUTOHIGHLIGHT/FMENU_WRAPMODE,
WINDOW_HEAD,
NULL,
L"Menu content",
NULL,
NULL,
MenuItems,
i);
return(INVALID_HANDLE_VALUE);
}



Файл SimpleFP.def

Код

LIBRARY
EXPORTS
GetPluginInfoW=_GetPluginInfo@4
OpenPluginW=_OpenPlugin@8
SetStartupInfoW=_SetStartupInfo@4



Вот ссылка, по которой лежит мой проект с портативным фаром:
http://www.sharemania.ru/0170733
При запуске фара ,а затем нажатии на F11, выдаёт вот такое окно. Вот фото, вложил.
Создавал плагин, по статье, правда пришлось подкоректировать чучуть в некоторых местах,
так как код не компилился. Статья по этой ссылке расположена: http://www.interface.ru/home.asp?artId=22198

Проблемма в том, что плагин вроде ничего не делает, хотя должен отображать список открытых окон виндоус
Я создал файл SimpleFP.cpp, SimpleFP.def кинул их в папку Plugins. 
Подскажите пожалуйста, что можно дописать, чтоб этот плагин хоть что-то делал. Заранее благодарю.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  clip_image002.jpg 39,86 Kb
PM MAIL   Вверх
xvr
Дата 25.2.2010, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



А строка 73 (FMENU_AUTOHIGHLIGHT/FMENU_WRAPMODE) не должна быть несколько другой?
Код

FMENU_AUTOHIGHLIGHT | FMENU_WRAPMODE

Кроме того, не уверен, что Info.Menu будет работать в OpenPlugin

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.