我有一个调用DLL文件的方式,希望能作成一个控件方便使用。(50分)

  • 主题发起人 主题发起人 JasonLaw
  • 开始时间 开始时间
J

JasonLaw

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个 DLL 文件 ,
调用方法如下:
在主程序中动态加载 HWU.dll
代码如下:
const
sApp_Version = 1.0

procedure TForm1.Button1Click(Sender: TObject);
type
TShow_UpWin = function(Phandle: Thandle): Boolean;
StdCall;
TMainInfo = function (APP_EXE_Name,APP_Version:PChar):Boolean;stdcall ;
var
DllName: string;
LibHandle: Thandle;
Show_UpWin: TShow_UpWin;
MainInfo:TMainInfo;
begin
LibHandle:=0;
{动态装载DLL}
DllName :=ExtractFilePath(ParamStr(0)) + 'HWU.DLL';
if not FileExists(dllname) then
begin
ShowMessage('不能找到动态连接库 '+ DllName);
Exit;
end;

try
LibHandle := LoadLibrary(pchar(DLLNAME));
except
end;

if LibHandle = 0 then
begin
raise Exception.Create('载入动态链接库文件错误!' + DLLNAME);
exit;
end;

try
@MainInfo :=GetProcAddress(LibHandle,'MainInfo');
//这个假设当前程序的版本是:1.0.0版,使用时,请处理。
if @MainInfo<>nil then
MainInfo(PChar(ExtractFileName(ParamStr(0))),'1.0.0');
@Show_UpWin := GetProcAddress(LibHandle, 'Show_UpWin');
if @Show_UpWin <> nil then
Show_UpWin(Self.Handle );
MainInfo := nil;
Show_UpWin := nil;
if LibHandle <> 0 then
begin
FreeLibrary(LibHandle);
// LibHandle := 0;
end;
except
end;

end;



//保存程序的版本,生成的 ver.ini 文件给HWU.DLL读取里面设置。
procedure TForm1.SaveSelfVersion;
var
MyIni:Tinifile;
begin
MyIni:=TIniFile.Create(ChangeFileExt(ParamStr(0),'.ini')) ;
try
MyIni.WriteString('Data','ver',sApp_Version);
finally
MyIni.free;
end;

MyIni:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'Ver.ini') ;
try
MyIni.WriteString('Data','ver',sApp_Version);
finally
MyIni.free;
end;
end;


怎么样将上面的 代码。作成一个控件一样。方便使用。
 
不明白,干嘛要做控件,写成一个Unit.pas,随时USES 然后就可以引用。
 
做成控件,其他开发的程序可以直接调用,方便!
 
后退
顶部