各位,那有有关dll开发的源码或详细介绍。 各位,那有有关dll开发的源码或详细介绍。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 delphi 的目录下的demos里面有例子 Project1.DPR {主叫程序}Unit1.PAS {主叫程序单元} Project2.DPR {DLL}Unit2.PAS {DLL单元}{---------- DLL 主程序 Project2.DPR ----------}library Project2;usesSysUtils,Classes,Unit2 in 'Unit2.pas' {Form1};{$R *.RES}{ 下面的语句用于向调用该 DLL的程序提供调用接口 }exportsDoTest; { 过程来自单元Unit2 }beginend.{---------- DLL中的单元 Unit2.PAS ----------}unit Unit2;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Db, ADODB, StdCtrls, Menus;typeTForm1 = class(TForm)ADOConnection1: TADOConnection;{ 本地数据库连接 }Memo1: TMemo; { 用于显示信息 }privatepublicend;{ 该过程向外提供 }procedure DoTest(H: THandle; { 获得调用者的句柄 }AConn: TADOConnection;{ 获得调用者的数据库连接 }S: string; { 获得一些文本信息 }N: Integer); { 获得一些数值信息 }cdecl; { 指定调用协议 } implementation{$R *.DFM}procedure DoTest(H: THandle; AConn: TADOConnection; S: string; N: Integer);beginApplication.Handle := H; { 将过程的句柄赋值为调用者的句柄 }{ 上面语句的作用在于, DLL的句柄和调用者的句柄相同,在任务栏中就不会 }{ 各自出现一个任务标题了。 }with TForm1.Create(Application) do try{ 创建窗体 }Memo1.Lines.Append('成功调用'); { 显示一行信息 }ADOConnection1 := AConn; { 获得数据库连接的实例 }Memo1.Lines.Append(ADOConnection1.ConnectionString +' - ' + S + ' - ' + IntToStr(N)); { 根据得到的参数显示另一行信息 }ShowModal; { 模式化显示窗体 }finallyFree; { 调用结束时销毁窗口 }end;end;end.{---------- 调用者 Project1.DPR,很普通的工程文件 ----------}program Project1;usesForms,Unit1 in 'Unit1.pas' {Form1};{$R *.RES}beginApplication.Initialize;Application.CreateForm(TForm1, Form1);Application.Run;end.{---------- 调用者单元Unit1.PAS ----------}unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, Db, ADODB;typeTForm1 = class(TForm)Button1: TButton; { 按此按钮进行调用 }ADOConnection1: TADOConnection; { 本地数据库连接,将传递给 DLL }procedure Button1Click(Sender: TObject);{ 调用 DLL}privatepublicend;varForm1: TForm1;implementation{$R *.DFM}{ 外部声明必须和 DLL中的参数列表一致,否则会运行时错误 }procedure DoTest(H: THandle; { 传递句柄 }AConn: TADOConnection; { 传递数据库连接 }S: string; { 传递文本信息 }N: Integer); { 传递数值信息 }cdecl; { 指定调用协议 }external 'Project2.dll';{ 指定过程来源 }{ 调用过程 }procedure TForm1.Button1Click(Sender: TObject);beginDoTest(Application.Handle,ADOConnection1,'Call OK',256);end;end. restar(懒虫) ,感谢你,你这么热情,但我笨,需要时间按你的方法尝试,有空联系。 如果我要调用多个窗体,是不是要写多个dll,还是要写多个不同的dotest?? <Delphi5开发者指南>有详细介绍 delphi2007下用indy10的dSMTP1,IdMessage1发送邮件的问题?? C/S构架刷新的问题 高分求救,怎样在报表中打印网格?急!!! 请问如何确定局域网内某台机器是否开机? 何时使用事务?怎么用 期待你的帮助-不知道如何“用TdxDBGrid将固定格式文本文件导入其表格内” 汉字转换成UCS2编码? Tble组件连接Sql server数据库时,如何设置他的Databasename属性 一个小问题!请帮帮忙解决一个,有分相送! 这个软件每次输入一个员工的时候需要打开的grid都是空白的 dbgird的小问题 怎样给 ComboBox 赋值阿?
Unit1.PAS {主叫程序单元}
Project2.DPR {DLL}
Unit2.PAS {DLL单元}
{---------- DLL 主程序 Project2.DPR ----------}library Project2;uses
SysUtils,
Classes,
Unit2 in 'Unit2.pas' {Form1};{$R *.RES}{ 下面的语句用于向调用该 DLL的程序提供调用接口 }
exports
DoTest; { 过程来自单元Unit2 }begin
end.
{---------- DLL中的单元 Unit2.PAS ----------}unit Unit2;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, StdCtrls, Menus;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;{ 本地数据库连接 }
Memo1: TMemo; { 用于显示信息 }
private
public
end;{ 该过程向外提供 }
procedure DoTest(H: THandle; { 获得调用者的句柄 }
AConn: TADOConnection;{ 获得调用者的数据库连接 }
S: string; { 获得一些文本信息 }
N: Integer); { 获得一些数值信息 }
cdecl; { 指定调用协议 } implementation{$R *.DFM}procedure DoTest(H: THandle; AConn: TADOConnection; S: string; N: Integer);
begin
Application.Handle := H; { 将过程的句柄赋值为调用者的句柄 }
{ 上面语句的作用在于, DLL的句柄和调用者的句柄相同,在任务栏中就不会 }
{ 各自出现一个任务标题了。 }
with TForm1.Create(Application) do try{ 创建窗体 }
Memo1.Lines.Append('成功调用'); { 显示一行信息 }
ADOConnection1 := AConn; { 获得数据库连接的实例 }
Memo1.Lines.Append(
ADOConnection1.ConnectionString +
' - ' + S + ' - ' + IntToStr(N)); { 根据得到的参数显示另一行信息 }
ShowModal; { 模式化显示窗体 }
finally
Free; { 调用结束时销毁窗口 }
end;
end;end.
{---------- 调用者 Project1.DPR,很普通的工程文件 ----------}program Project1;uses
Forms,
Unit1 in 'Unit1.pas' {Form1};{$R *.RES}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
{---------- 调用者单元Unit1.PAS ----------}unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, ADODB;type
TForm1 = class(TForm)
Button1: TButton; { 按此按钮进行调用 }
ADOConnection1: TADOConnection; { 本地数据库连接,将传递给 DLL }
procedure Button1Click(Sender: TObject);{ 调用 DLL}
private
public
end;var
Form1: TForm1;implementation{$R *.DFM}{ 外部声明必须和 DLL中的参数列表一致,否则会运行时错误 }
procedure DoTest(H: THandle; { 传递句柄 }
AConn: TADOConnection; { 传递数据库连接 }
S: string; { 传递文本信息 }
N: Integer); { 传递数值信息 }
cdecl; { 指定调用协议 }
external 'Project2.dll';{ 指定过程来源 }{ 调用过程 }
procedure TForm1.Button1Click(Sender: TObject);
begin
DoTest(Application.Handle,
ADOConnection1,
'Call OK',
256);
end;end.