![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подключение DLL по ходу выполнения програмы. [D7, Win95/98]
sashok © (2004-07-11 13:28:00)У меня в dll такая процедура:
Procedure AA(Form:TForm; str:tstringgrid);
Var MyForm:TDllForm;
Begin
MyForm:=TDLLForm.Create(Form.Owner);
MyForm.ShowModal;
str.Cells[1,1]:=MyForm.Edit1.Text;
MyForm.Free;
End;
Если из своей програмы я подключаю жостко dll - работает:
Procedure AA(Form:TForm; str:tstringgrid);
External 'dll.dll';
А если я делаю так:
Type TAA=Procedure(Form:TForm; str:tstringgrid);
...
var dllhandle:HMODULE;
AA:TAA;
...
dllhandle:=LoadLibrary(PChar('dll.dll'));
AA:=TAA(GetProcAddress(dllhandle,'AA'));
AA(Form1, StringGrid1);
FreeLibrary(dllHandle);
То пишет Access violation in module 'dll.dll'
Как мне правильно подключить по ходу программы dll так, чтобы процедура нормально работала?
Rouse_ (2004-07-11 22:54:00) [1]var
TA:Procedure(Form:TForm; str:tstringgrid); stdcall;
...
@TA := GetProcAddress(dllhandle,'AA');
sashok (2004-07-11 14:53:00) [2]Это роли не играет
GrayFace (2004-07-11 14:26:00) [3]В примере по Hooks это делается так: @AA:=GetProcAddress(dllhandle,'AA'); И еще эта dll может отсутсвовать, тогда dllhandle будет иметь соответствующие значение.