zoukankan      html  css  js  c++  java
  • delphi 在DLL中添加窗体.

    方案一:

      在DLL工程中新建一个FORM窗体.在窗体中加入如下代码:

      1.首先需要再 implementation 之前声明下以下函数.

     1  procedure SynApp(App:THandle);stdcall;
     2 
     3    begin
     4 
     5     Application.Handle := App ;   
     6 
     7    end;
     8 
     9 
    10   Procedure ShowForm;stdcall ;
    11 
    12   begin
    13 
    14     MainForm := TMainForm.Create(Application);
    15 
    16     MainForm.show ;
    17 
    18   end;

      2.在DLL文件中导出表写入:

      

    1 exports 
    2 
    3   SynApp,
    4 
    5   ShowForm;

      3.让窗口显示需要传入进程句柄.

    1 SynApp(Application.Handle);
    2 
    3   ShowForm;

      完成.

    方案二.此方案来自郁金香老师.

      1.新建DLL.在DLL文件中添加一个FORM.

      先在DLL文件中添加如下关键代码:

      

     1 if Form1 = nil then begin Form1.:= TForm1.Create(nil);
     2 
     3   Form1.Visable: = not From1.Visable ;
     4 
     5   end;
     6 
     7       //但是这样子会有问题..如果卸载这个DLL的时候,相应的程序也会跟着退出.
     8 
     9   //所以必须写一个加载卸载处理函数
    10 
    11   procedure DllEnterProc(reason:integer);
    12 
    13   begin
    14 
    15     case reason of
    16 
    17     windows.DLL_PROCESS_ATTACH: begin end;
    18 
    19     windows.DLL_PROCESS_DETACH:begin Form1.Free;Form1.nil; end;
    20 
    21   end;
    22 
    23   

      在最后一个end.  之前添加如下关键代码:

      

    1 dllProc:=@DllEnterProc ;

      完成..这样既可创建含有窗体的DLL文件.

      

  • 相关阅读:
    axios基本用法
    Iframe父子窗口之间的跨域事件调用和传值
    js 比较两个日期的大小
    小程序webview实践
    小程序入口构造工具&二维码测试工具
    小程序无限层级路由方案
    TypeScript基础类型,类实例和函数类型声明
    小程序多业务线融合【完整分包业务接入】
    浅谈React16框架
    CSS Modules 与 scoped 的不一样
  • 原文地址:https://www.cnblogs.com/Mckk/p/5272648.html
Copyright © 2011-2022 走看看