Страница 1 из 1

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

Добавлено: Пн декабря 22, 2008 6:58 pm
Dmitry
Здравствуйте,

Решил написать маленький плагинчик "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.

Добавлено: Ср декабря 24, 2008 4:55 pm
Dmitry
Всем спасибо. Немного разобрался. Заработало!

Добавлено: Сб сентября 10, 2011 11:09 pm
Demitreus
Разобрался - поделись с людьми! Понимаю, что много времени прошло, с момента публикования поста, но у меня сейчас аналогичная проблемма с возвращением нуля функции и где копать не пойму

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

У меня сейчас так в 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. Что не так?