就是DLL如何和主程序进行数据通信。
主程序调用DLL,DLL为带窗体的,我想在DLL中调用主程序所提供的一个函数,不知道如何实现
主程序调用DLL,DLL为带窗体的,我想在DLL中调用主程序所提供的一个函数,不知道如何实现
解决方案 »
- 如何去掉MDI父窗体的滚动条?网上搜了一早上!!!!!
- 如何将导出的Excel的某行背景色变成兰色,谢谢
- TcpClient和TcpServer连接的问题!
- 如何屏蔽掉tedit控件KEYPRESS事件执行回车后发出的“当”的声音!!!急!!!
- 求救:我的qr在预览的时候,如果数据过多,例如超过一页就会抛出个“raised exception class EFCreateError with message'不能建立文件'”
- 为什么delphi下DBGrid的Column能改长度,但是delphi7下DBGrid的Column不能改长度?
- 请问:哪里有制作报表的资料下载 QReport,FastReport,Rave 都可以?
- 搞上位机一年多,大家都来聊一聊
- 关于输入输出语句
- 好久没来,CSDN改版了,呵呵,漂亮不少。送上100分哟
- 我的TADOTABLE今天出现一个奇怪的问题
- 文本框把字符串从右对齐开始排,用的属性是哪个?
GetModuleHandle找到主程序地址,然后GetProcAddress找到函数入口,然后调用,
一般的做法是把主程序里面的函数指针传给DLL,然后DLL里面就可以调用了哦!例子:library MyDLL;uses
SysUtils,
Classes;{$R *.res}var
Func: procedure (count: integer); //定义一个函数指针procedure SetCallbackProc(pFunc: Pointer);
begin
Func:=pFunc; //给函数指针赋值
Func(100); //调用函数
end;exports
SetCallbackProc;beginend.///////////////////////////////////////////////////////////////////program MyAPP;{$APPTYPE CONSOLE}uses
SysUtils;procedure SetCallbackProc(pFunc: Pointer); external 'MyDLL.dll';procedure Func(count: integer); //定义回调函数(在DLL里面调用)
begin
WriteLn(count);
end;begin
{ TODO -oUser -cConsole Main : Insert code here }
SetCallbackProc(@Func); //将函数指针传入DLL
ReadLn;
end.