打印本文 打印本文 关闭窗口 关闭窗口
初探Delphi 7 中的插件编程
作者:武汉SEO闵涛  文章来源:敏韬网  点击数4829  更新时间:2009/4/23 18:26:40  文章录入:mintao  责任编辑:mintao
4.4.4        DLL窗口控制

正如4.4.3中的代码说明的那样,DLL窗口的打开和关闭只是在表象层,关闭窗口并没有真正释放DLL窗口,只是调用API函数FindWindow根据窗口标识(就是Form.name)获得窗体句柄,用SHOWWINDOW函数的nCmdShow参数控制窗口显示/隐藏。

其实这是我这个程序实现的不好的一个地方,如果在DLL窗口中使用Self.close方法会引起内存错误,实在能力有限没有办法解决,因此出此下策。所以每个DLL程序主窗口的关闭按钮都必须隐藏掉。 :-P

 

4.4.5        DLL库的释放

在程序退出时,必须根据插件信息实例逐一释放DLL库。释放DLL库的函数如下:

 

procedure TFormHall.ClosePlugin(aPLG:TMyPlugins);

var

    FreeDLLForm:TFreeDLLForm;

begin

    if aPLG.ProcAddr = 0 then exit;

    if aPLG.FuncFreeAddr = nil then exit;

    @FreeDLLForm:=aPLG.FuncFreeAddr;

    if not FreeDLLForm(Application.Handle,'''''''','''''''') then

         showMessage(''''err'''');

end;

 

5 小结

本实例程序运行效果如下:

 

我以上的方法中,因为有不少能力有限没有解决的问题,所以采用了一些看起来不太合理的掩饰方法,希望大家能在做了一点尝试后设计出更好的解决方法,我也希望能学到更多的好方法。

本文只给出了部分代码,如果您需要完整的代码可以写邮件给我。我也很欢迎各位能对我的方法提出建议和意见,这是我第一次尝试DLL编程的一点感受,希望能给同样也有兴趣的朋友一点线索。

 

 

上一页  [1] [2] [3] [4] [5] [6] [7] 

打印本文 打印本文 关闭窗口 关闭窗口