如何把一個應用程序做成dll,在另一應用程序裡調用它。
主要是在接口部分如何實現的呀。 问题点数:20、回复次数:5Top
1 楼47522341(睡到8:30)回复于 2003-12-02 20:05:45 得分 0
dll文件的;dpr文件中更改如下;
library P_dll;
uses
Forms,
sysutils,
U_Main in 'U_Main.pas' {Frm_Main};
{$R *.res}
function dll_function(H: Thandle):integer;stdcall;export;
begin
Application.Handle := H;
Application.CreateForm(TFrm_Main, Frm_Main);
result := 1;
Frm_Main.Free;
application.Handle := 0;
end;
exports
dll_function index 1;
begin
end.Top
2 楼47522341(睡到8:30)回复于 2003-12-02 20:07:56 得分 0
在调用窗体里先定义调用函数;
T_Test = function(H: THandle):integer;stdcall;
然后按钮点击时处理如下:
try
H := loadlibrary(pchar(filename));
if (h <= 0) then
begin
showmessage('调用动态链接库失败!');
exit;
end;
@dzposreport := getprocaddress(h,pchar(funname));
dzposreport(application.Handle,connstr,titlename);
freelibrary(H);
except
showmessage('调用动态链接库失败!');
end;
Top
3 楼47522341(睡到8:30)回复于 2003-12-02 20:09:46 得分 20
sorry;参数传递那块有点失误;^_^;
应该是:
@dzposreport := getprocaddress(h,pchar(funname));
dzposreport(application.Handle);
呵呵;够详细了吧;给分;
Top
4 楼fxjpost(天外面還是天)回复于 2003-12-03 09:07:21 得分 0
thank you 給你分
此問題已結貼Top
5 楼fxjpost(天外面還是天)回复于 2003-12-03 10:02:52 得分 0
@dzposreport要先定義吧
另外:
@dzposreport := getprocaddress(h,pchar(funname));
dzposreport(application.Handle);
這兩句什麼意思Top




