Проблема в написании Плагина

Описание: Вопросы, связанные с каталогизатором книг All My Books
Модератор: Автор

Dmitry
Пользователь
Dmitry
Пользователь
Репутация: 0
С нами: 9 лет 7 месяцев

Сообщение #1 Dmitry » Пн декабря 22, 2008 6:58 pm

Здравствуйте,

Решил написать маленький плагинчик "Usual". Пишу под Visual C++. Мои функции вызываются. Здесь все нормально. Но не могу вызвать функции модуля "All My Books". Происходит следующее. При загрузки AllMyBooks вызывается ТРИ раза функция Init4, и притом каждый раз с новым значением. После вызова из меню "Плагины" запускается функция AMB_PluginStart4. Я хочу выполнить функцию Вашего модуля. Выполняю:

myProc = (MYPROC) GetProcAddress(theApp.pOwner, "FirstBook");

но он мне на отрез возвращает NULL. Пробовал подставлять все три значения pOwner, которые передаются в Init4 - результат аналогичный.

Может сможете подсказать, в чем может быть проблема. "All My Books" пока не регистрированный, так как его покупка зависит, смогу я написать данный плагин или нет (будет он работать или нет). Мне нужна некоторая дополнительная функциональность с файлами книг, которых у Вас нет. (Я думаю мало кому она будет интересна :) ).

P.S. Естественно в процедуре Init4 я сохраняю pOwner.

Dmitry
Пользователь
Dmitry
Пользователь
Репутация: 0
С нами: 9 лет 7 месяцев

Сообщение #2 Dmitry » Ср декабря 24, 2008 4:55 pm

Всем спасибо. Немного разобрался. Заработало!

Demitreus
Пользователь
Demitreus
Пользователь
Репутация: 0
С нами: 6 лет 11 месяцев

Сообщение #3 Demitreus » Сб сентября 10, 2011 11:09 pm

Разобрался - поделись с людьми! Понимаю, что много времени прошло, с момента публикования поста, но у меня сейчас аналогичная проблемма с возвращением нуля функции и где копать не пойму

Нужно в описании разработки плагина сделать примерчики для С++ не все программируют на Делфи.

У меня сейчас так в Borland Builder

Код: Выделить всё

typedef int __stdcall (*iGetPChar)(char * &s);

void __stdcall Init4(int Owner)
{
    OwnerApp = Owner;
}

void __stdcall AMM_PluginStart4()
{
    TFirstForm *frm = new TFirstForm(Application);
    frm->ShowModal();
    delete frm; 
}

__fastcall TFirstForm::TFirstForm(TComponent* Owner)
{
    char *s = new char[500];
    iGetPChar fun = (iGetPChar)GetProcAddress((HMODULE)OwnerApp, "GetLocalPath");
    int i=0;
    if(fun){
        i = fun(s);
    }
    delete[] s;
}

Так вот fun равен NULL. Что не так?


Вернуться в «All My Books»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость