动态加载dll
2012-08-16 15:58
309 查看
type
TPrintProc = function(DataPrint: integer; PrintFile: WideString; PrintMode: Integer = 1): Integer; safecall; //根据动态库中的函数来自定义类型
////////////////////////////////////////////////////////////函数中///////////////////////////////////////////////////////////////////////////////////////////////////
procedure TTechSingleGridForm.PrintDataSet(PrintMode: Integer);
var
PrintProc: TPrintProc;
PrintHand: HMODULE;
begin
PrintHand := LoadLibrary('com_PrintReport.dll');
try
if PrintHand > 0 then
begin
@PrintProc := GetProcAddress(PrintHand, 'PrintByDataSet');
if Assigned(PrintProc) then
begin
try
PrintProc(Integer(ClientDataSet), Context.PageCode + '.rtm', PrintMode);
except
on E: Exception do
Case PrintMode of
0 : ComCommon.Prompt('打印预览失败,可能是如下的原因:' + #10#13 + E.Message);
1 : ComCommon.Prompt('读取打印格式失败,可能是如下的原因:' + #10#13 + E.Message);
2 : ComCommon.Prompt('打印失败,可能是如下的原因:' + #10#13 + E.Message);
end;
end;
end;
end
else ComCommon.Prompt('装载com_PrintReport.dll失败或缺少该动态库!');
finally
FreeLibrary(PrintHand);
end;
end;
TPrintProc = function(DataPrint: integer; PrintFile: WideString; PrintMode: Integer = 1): Integer; safecall; //根据动态库中的函数来自定义类型
////////////////////////////////////////////////////////////函数中///////////////////////////////////////////////////////////////////////////////////////////////////
procedure TTechSingleGridForm.PrintDataSet(PrintMode: Integer);
var
PrintProc: TPrintProc;
PrintHand: HMODULE;
begin
PrintHand := LoadLibrary('com_PrintReport.dll');
try
if PrintHand > 0 then
begin
@PrintProc := GetProcAddress(PrintHand, 'PrintByDataSet');
if Assigned(PrintProc) then
begin
try
PrintProc(Integer(ClientDataSet), Context.PageCode + '.rtm', PrintMode);
except
on E: Exception do
Case PrintMode of
0 : ComCommon.Prompt('打印预览失败,可能是如下的原因:' + #10#13 + E.Message);
1 : ComCommon.Prompt('读取打印格式失败,可能是如下的原因:' + #10#13 + E.Message);
2 : ComCommon.Prompt('打印失败,可能是如下的原因:' + #10#13 + E.Message);
end;
end;
end;
end
else ComCommon.Prompt('装载com_PrintReport.dll失败或缺少该动态库!');
finally
FreeLibrary(PrintHand);
end;
end;
相关文章推荐
- Unity3D的坑系列:动态加载dll
- delphi中dll综合运用的例子(动态加载插件)
- C#动态加载DLL(转)
- VB.NET动态加载C#或VB.NET生成的DLL文件调用动画教程[黑白智慧写](动态调用DLL).txt
- C++动态加载dll
- c# 动态加载dll文件,并实现调用其中的方法(推荐)
- C#中动态加载和卸载DLL(转)
- C#中动态加载和卸载DLL
- 动态加载DLL(C#)
- c#实现动态加载Dll
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)5-----Assembly.Unload
- 动态加载MATLAB生成的dll并反射dll里的函数,实现多返回值的功能
- C#动态加载DLL,通过配置文件实现对程序集的即插即用
- C#中动态加载和卸载DLL
- 关于Qt动态加载dll时,函数指针取地址OK,使用时却有问题
- 动态加载Dll时,通过Type生成类对象
- BCB(C++ Builder)创建动态库(DLL,接口导出和调用),动态加载DLL
- 动态加载和卸载 DLL
- 如何在托管程序中动态加载dll并且调用其中的函数
- 动态加载dll调试