我有一个程序。主窗体为了漂亮和使用没有用mdiform所有的功能窗体都封装在dll中有一个标准的接口run。在调用的时候由主窗体传递dll中form所需要的参数。并且每个功能窗体打开后动态的创建一个窗口采单,但是如何才能在关闭窗体时同时也将对应的动态采单删除,自定义消息不能解决窗体名称参数问题。
附代码:《如有问题和错误请指出》
dll中的代码:
procedure Run(AppHandle:THandle;CS_PAR:Tcommservice);stdcall
var Form:TFrmTest;
pp:Pointer;
begin
Application.Handle:=AppHandle;
Form:=TFrmtest.Create(Application);
Form.cs:=cs_par;
Form.Show;
end;
exports
run;
begin
end.
//
//窗体中的代码
procedure TFrmDeskTop.RunModal(Path: string);
type
TRun=procedure(AppHandle:THandle;CS_PAR:Tcommservice);stdcall;
var
Run:Trun;
PrgH:Thandle;
begin
PrgH:=Loadlibrary(pChar(Path));
if PrgH<>0 then begin
@Run:=GetProcAddress(PrgH,'Run');
if @run<>nil then
begin
run(Application.Handle,DCS);
end;
end
else
FreeLibrary(PrgH);
end;
附代码:《如有问题和错误请指出》
dll中的代码:
procedure Run(AppHandle:THandle;CS_PAR:Tcommservice);stdcall
var Form:TFrmTest;
pp:Pointer;
begin
Application.Handle:=AppHandle;
Form:=TFrmtest.Create(Application);
Form.cs:=cs_par;
Form.Show;
end;
exports
run;
begin
end.
//
//窗体中的代码
procedure TFrmDeskTop.RunModal(Path: string);
type
TRun=procedure(AppHandle:THandle;CS_PAR:Tcommservice);stdcall;
var
Run:Trun;
PrgH:Thandle;
begin
PrgH:=Loadlibrary(pChar(Path));
if PrgH<>0 then begin
@Run:=GetProcAddress(PrgH,'Run');
if @run<>nil then
begin
run(Application.Handle,DCS);
end;
end
else
FreeLibrary(PrgH);
end;
解决方案 »
- 帮我看看这个代码怎么改,谢谢!
- 如何在DELPHI中验证远程机器密码
- 帮忙,快救我呀。
- 急急急!!!怎样实例化一个类,并且可以让它在应用程序的运行过程中都有效,就像Application.createform建立form那样。
- ActiveForm不显示画面,只有鼠标按下后,才会一一显示,急!!!
- 请教socket的问题
- 关于2个快捷键同时出发一个过程
- 我定义了一个静态数组,怎么知道我用了几组了?
- Ha,Ha,送分题
- 大虾请告诉我DelPhi中为什么不能直接调用API函数ShellExecute?
- 怎样实现 Fast Report 的DBGrid表格打印?
- 提问:如何把一个通过6000端口访问的应用程序改成其他的端口?
删除不就很容易
begin
Action := caFree;
end;