![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DLL вызывает процедуру в основной проге... [D5, Win95/98, Win2k]
Dimedrol © (2001-12-22 13:30:00)Коллеги, не подскажете как можно из ДЛЛ запустить процедуру главной программы (допустим WriteHello;), дождаться окончания ее работы и затем продолжить свою работу... ?
brkut (2001-12-23 13:19:00) [1]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
Иван Шихалев (2001-12-22 19:54:00) [2]Ё-моё. А callback чем не устраивает? Благо в Pascal есть такая замечательная вещь как процедурные типы.
Dimedrol (2001-12-22 19:42:00) [3]Решение конечно интересное, но у меня будет 1 проблема...
Я пишу плагины (вот из-за чего все это ;-))
Так что я заранее не могу знать какая ДЛЛ-ка будет вызывать
процедуру в основной программе, так что строка
procedure StartUserProc(proc: UserProc); StdCall;external "Project1.dll";
не сработает, т.к. этого ->"Project1.dll"не будет...
brkut (2001-12-22 17:01:00) [4]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 - Testprocedura pochemu to zapuskajetsa dva raza. Pochemu neznaju, no chotel bi uznat ...
any ideas ?
Eshchio navernoje mozhno zapustyt application proceduru vizivaja WM.
No, pochemu toSendMessage(LoadLibrary("my.dll"), MY_MESSAGE, wparam, lparam)nesrabotalo :(