主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.07.29;
下载:[xml.tar.bz2];

向下

帮助dll 找到类似的分支


c0pYc@t   (2002-07-15 14:11) [0]

我尝试使用DLL任何问题:

可以动态连接包含我尝试在非模态中显示的表单的DLL。
模态窗口显示没有问题。

Dll代码

库ProjDll;

使用
SysUtils单元,
类,
“DllFormU.pas”{DLLForm}中的DllFormU;
{$ R * .res}
出口
Showform,FreeForm;
开始
结束。

单位Dll

单位DllFormU;

接口

使用
Windows,消息,SysUtils,变体,类,图形,控件,表单,
对话,StdCtrls;
类型
TDLLForm = class(TForm)
ListBox1:TListBox;
procedure FormClose(Sender:TObject; var Action:TCloseAction);
私立
{私人声明}
公开
{公开声明}
结束;
程序ShowForm(Appl,Form:THandle);
程序FreeForm;
VAR
DLLForm:TDLLForm;
CallForm:THandle;
履行

{$ R * .dfm}
程序ShowForm(Appl,Form:THandle);
开始
Application.Handle:= Appl;
DllForm:= TDllForm。创建(应用程序);
CallForm:= Form;
DllForm.Show;
结束;
程序FreeForm;
开始
DllForm.Free
结束;
过程TDLLForm.FormClose(Sender:TObject; var Action:TCloseAction);
开始
如果CallForm <> 0那么
SendMessage(CallForm,wm_User,0,0)
结束;
结束。

程序本身的代码

单位TestU;

接口

使用
Windows,消息,SysUtils,变体,类,图形,控件,表单,
对话,StdCtrls;
类型
TForm1 = class(TForm)
Button1:TButton;
Button2:TButton;
过程Button1Click(Sender:TObject);
过程Button2Click(Sender:TObject);
私立
{私人声明}
公开
{公开声明}
结束;
VAR
Form1:TForm1;
LibHandle:LongWord;
showForm:procedure(Appl,Form:THandle); stdcall;
freeForm:procedure; stdcall;
履行
{$ R * .dfm}
过程TForm1.Button1Click(Sender:TObject);
开始
@ShowForm:= nil;
{试图加载库}
LibHandle:= LoadLibrary(“ProjDll.DLL”);
{如果一切正常}
如果LibHandle> = 32则开始
{...然后尝试获取库中函数的地址}
@ShowForm:= GetProcAddress(LibHandle,“ShowForm”);
{如果一切正常}
如果@ShowForm <>那么
{...然后调用此函数并显示结果}
showForm(Application.Handle,Self.Handle);
结束;
Button2.Enabled:= true;
Button1.Enabled:= false;
结束;
过程TForm1.Button2Click(Sender:TObject);
开始
自由曲面;
Button1.Enabled:= true;
Button2.Enabled:= false;
结束;
结束。



Digitman   (2002-07-15 14:47) [1]

当然可以。 不仅可能,而且在某些情况下是可取的。

实际上问题是什么?



c0pYc@t   (2002-07-16 08:15) [2]

Digitman所以,当你点击出现的Btn1窗口时,但是当用ffffff等访问内存页面时会出错...



c0pYc@t   (2002-07-16 09:15) [3]

想想它,有点想象出魔法泡沫中的整个事情)))))

只是在指定函数的名称时,你不必忘记字母的情况,然后你无法弄清楚D与C的不同之处

PS并且还禁用调用程序中的函数的stdcall,它们仅用于静态加载



Alx2   (2002-07-16 10:18) [4]

> PS并且还禁用调用程序中的函数的stdcall,
> 只有静态加载才需要它们

完全错了。
将参数传递给函数的方法不依赖于加载DLL的方法。 所需要的只是主机和DLL的此规范之间的匹配。



Страницы: 1 整个分支

论坛:“主要”;
当前存档:2002.07.29;
下载:[xml.tar.bz2];

楼上









内存:0.57 MB
时间:0.031 c
14-95553
拼字课本
2002-07-04 04:43
2002.07.29
DelphiX for Delphi 6在哪里?


3-95266
UnDISCOvery
2002-07-08 14:15
2002.07.29
MS ADO。 如何确定是否安装?


3-95251
的Weare
2002-07-08 18:14
2002.07.29
提示网格视图


14-95564
莱昂
2002-07-04 12:35
2002.07.29
基本数据


3-95232
DKalinin
2002-07-08 17:13
2002.07.29
告诉我如何让DBGrid-e中的单元看起来像一个按钮?





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский