怎样打开DLL中的Form? dll本身Export的函数,可以打开Form,这样就可以了。但是如果要从dll中获得FORM对象,然后打开,似乎有点难度。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DLL中的函数如下:function aaaaa(aaa):xxxxx;var Form1:TForm1;begin Form1 := TForm1.Create(Application) ; Form1.ShowModal;end; 编译提示Application无法识别的标识,编译不通过啊?有没有实际成功过的例子呢? 那就不用Application试试。用self或者什么别的。 //DLL工程文件library Project1;uses SysUtils, Classes, Unit1 in 'Unit1.pas' {Form1};exports aaa;end.//窗体单元文件unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit;procedure aaa(ahandle:handle);implementation{$R *.DFM}procedure aaa(ahandle:handle);var form1:tform1;begin Application.handle:=ahandle; form1:=tform1.create(application); form1.showmodal;end;end.如果还有问题我一头载下去! 在DLL程序中定义exports showDLLWindow,function showDLLWindow :LongInt的实现:var DllForm :Tfrm1;begin Application.Handle := AHandle; DLLForm := Tfrm1.Create(Application); Result := Longint(DLLForm); DLLForm.Caption := ACaption; DLLForm.ShowModal;end调用程序中:function showCutPaperWindow(AHandle: THandle; ACaption: String): Longint;stdcall;external 'aaaa.DLL';var fform:TForm;.............. if not Assigned(FFormRef) then FFormRef := TForm(showDLLWindow(Application.Handle, Caption));DLL窗体的释放应在DLL中用Release. 把这个过程声明放在TYPE上面procedure aaa(ahandle:handle);export;TYPE。另外你一开始少了一个BEGIN library MyDll;uses SysUtils, Classes, Forms, Windows, UnDllColor in 'UnDllColor.pas' {FrmColor};{$R *.RES}Procedure ShowColor(AHandle:THandle;ACaption:string);stdcall;var FrmColor:TFrmColor;begin Application.handle:=AHandle; try FrmColor:=TFrmColor.Create(Application); FrmColor.Caption:=ACaption ; FrmColor.showmodal; finally FrmColor.Free; end;end;exports ShowColor;beginend. 谢谢各位的帮助,还是把代码发给我吧,我这里运行时打不开窗口,我也没办法了,一定给分回报大家:[email protected] almeidar: 程序发出,你试试!应该是可以的 win2000+delphi6 sorry!上次忘了贴附件!现在发出了!400k左右! 后续的问题,在DLL中的FORM里放入ActiveX控件,为何就无法运行该窗口,甚至编译不通过? 好,我有空再试试![email protected]也行! 如何对MP3边下边播? 关于获取网页选中区域代码的问题 看看这个语句有什么错误 如何将buffer里的每两个字节组成有符号的整数呢 如何自定义多参数事件 极其简单的入门问题!再线!!!! ***高手请进,超高难报表问题,如果解决不了,做散分处理*** 如何改变控件的先后位置? 什么叫vcl怎样理解?高手请进!! 怎样做一个DLL,然后我调用里面的函数,就可以EXE动态的添加DLL里面的菜单? 请问静态调用的DLL是否需要Free,怎样Free? 析构出错???!!!以前用C++体系,对Delphi的对象体系不太熟,大侠帮看看.
function aaaaa(aaa):xxxxx;
var
Form1:TForm1;
begin
Form1 := TForm1.Create(Application) ;
Form1.ShowModal;
end;
library Project1;
uses
SysUtils,
Classes,
Unit1 in 'Unit1.pas' {Form1};
exports
aaa;
end.
//窗体单元文件
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure aaa(ahandle:handle);
implementation
{$R *.DFM}
procedure aaa(ahandle:handle);
var
form1:tform1;
begin
Application.handle:=ahandle;
form1:=tform1.create(application);
form1.showmodal;
end;
end.
如果还有问题我一头载下去!
var
DllForm :Tfrm1;
begin
Application.Handle := AHandle;
DLLForm := Tfrm1.Create(Application);
Result := Longint(DLLForm);
DLLForm.Caption := ACaption;
DLLForm.ShowModal;
end调用程序中:
function showCutPaperWindow(AHandle: THandle; ACaption: String):
Longint;stdcall;external 'aaaa.DLL';var
fform:TForm;
.......
...
....
if not Assigned(FFormRef) then
FFormRef := TForm(showDLLWindow(Application.Handle, Caption));
DLL窗体的释放应在DLL中用Release.
另外你一开始少了一个BEGIN
uses
SysUtils,
Classes,
Forms,
Windows,
UnDllColor in 'UnDllColor.pas' {FrmColor};{$R *.RES}
Procedure ShowColor(AHandle:THandle;ACaption:string);stdcall;
var
FrmColor:TFrmColor;
begin
Application.handle:=AHandle;
try
FrmColor:=TFrmColor.Create(Application);
FrmColor.Caption:=ACaption ;
FrmColor.showmodal;
finally
FrmColor.Free;
end;
end;exports
ShowColor;
begin
end.
分回报大家:[email protected]
程序发出,你试试!应该是可以的
win2000+delphi6
上次忘了贴附件!现在发出了!400k左右!
[email protected]也行!