Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.10;
Скачать: CL | DM;

Вниз

DLL вызывает процедуру в основной проге...   Найти похожие ветки 

 
Dimedrol ©   (2001-12-22 13:30) [0]

Коллеги, не подскажете как можно из ДЛЛ запустить процедуру главной программы (допустим WriteHello;), дождаться окончания ее работы и затем продолжить свою работу... ?


 
brkut   (2001-12-22 17:01) [1]

Zdrastvuite, izvinite za latin,

mozhno peredat v dll proceduru adres tvojei funkciji:

DLL

type
UserProc = procedure;
procedure StartUserProc(Proc: UserProc);
begin
showmessage("DLL stuff");
Proc;
showmessage("Again DLL stuff");
end;
exports
StartUserProc;
begin
end.


Main

type
UserProc = procedure;

procedure StartUserProc(proc: UserProc); StdCall;external "Project1.dll";
procedure Test;
begin
showmessage("Application stuff");
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
StartUserProc(@Test);
end;


Vsio kazhetsia rabotajet, no est bug - Test procedura pochemu to zapuskajetsa dva raza. Pochemu neznaju, no chotel bi uznat ...
any ideas ?

Eshchio navernoje mozhno zapustyt application proceduru vizivaja WM.
No, pochemu to SendMessage(LoadLibrary("my.dll"), MY_MESSAGE, wparam, lparam) nesrabotalo :(


 
Dimedrol ©   (2001-12-22 19:42) [2]

Решение конечно интересное, но у меня будет 1 проблема...
Я пишу плагины (вот из-за чего все это ;-))
Так что я заранее не могу знать какая ДЛЛ-ка будет вызывать
процедуру в основной программе, так что строка
procedure StartUserProc(proc: UserProc); StdCall;external "Project1.dll";

не сработает, т.к. этого -> "Project1.dll" не будет...


 
Иван Шихалев ©   (2001-12-22 19:54) [3]

Ё-моё. А callback чем не устраивает? Благо в Pascal есть такая замечательная вещь как процедурные типы.


 
brkut   (2001-12-23 13:19) [4]

Nu v takom sluchae, vsio zavisit ot konkretnovo prilozhenija.
Developeri tebe dolzhni dat SDK, o tam uzhe vsio budet jasno ...

nu koroche tebe nado
MainApp handle, togda ti smozhesh ejo kontrolerovat cherez windows messages ... (mozhesh posmotret kak eto delajetsia v Winampe)

udachi,
Ainis



Страницы: 1 вся ветка

Текущий архив: 2002.01.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.007 c
1-28470
JankinDoll
2001-12-21 20:07
2002.01.10
Как посмотреть выделенный символ в Richedite является символом переноса или нет?


1-28458
Aleksandr
2001-12-21 14:33
2002.01.10
Как корректно уничтожить из дестрактора компоненты ScrollBar


1-28449
Knyaz17
2001-12-21 11:47
2002.01.10
Как наследовать метод не родителя, а родителя родителя?


14-28528
Васильев П.
2001-11-09 23:01
2002.01.10
Прибалтийцы и живущие в дальнем зарубежье!


1-28477
Kost
2001-12-22 10:02
2002.01.10
Как поворвчивать bitmap