В dll у меня лежит пустая форма и написан такой код | Код | procedure show(handle:thandle; index:integer);export;stdcall; begin application.Handle:=handle; Form1:=TForm1.Create(nil); Form1.ShowModal; Form1.Free; end; exports show name 'show'; |
А в exe следующий код: | Код | type tmyproc = procedure(h: hwnd; ind: integer);stdcall; ... private h: thandle; fp: TFarProc; myprocedure: tmyproc; ... procedure TForm1.Button1Click(Sender: TObject); begin h:=LoadLibrary(PChar('test.dll')); if h=0 then exit else fp:=GetProcAddress(h, 'show'); myprocedure:=tmyproc(fp); myprocedure(handle, 0); freelibrary(h); end;
|
В общем все работает, но если нажать ALT при открытой из dll формы, то вылетает ошибка: Access violation at address 00451513 in module 'PROJECT1.EXE'. Read of address FFFFFFFF. Что у меня не правильно?
|