zoukankan      html  css  js  c++  java
  • Delphi 调用DLL中的窗体

    library Project1;

    uses
    SysUtils,
       Classes,Forms,windows,dialogs,
      Unit1 
    in 'Unit1.pas' {Form1};

    {$R *.res}
    function showform(formname:string):boolean;stdcall;
    var
      TheClass: TPersistentClass;
      aForm: TForm;
    begin
    result:
    =false;
    {如果您的Dll中有很多FORM,请在这儿注册哦
    RegisterClasses([TForm1,TForm2,TForm3,...]);
    }
    RegisterClasses([TForm1]);
    TheClass :
    = GetClass('T' + FormName);
    if (TheClass = nil) then   exit;
    if TheClass.InheritsFrom(TForm)  then
    begin
        aForm :
    = Tform(TheClass.Create).Create(nil);
        
    try
          aForm.ShowModal;
          result:
    =true;
        
    finally
          FreeAndNil(aForm);
        
    end;

    end;
    end;

    exports
    showform;
    begin
    end.


       
      
    ....


    procedure  RunDllForm(const DllFileName,DllFormName:String;const methodName:string);
    type
    TRunForm
    =function(formname:string):boolean;stdcall;
    var
      RunForm: TRunForm;
      GetDllHWND: HWND;
    begin
      GetDllHWND :
    = LoadLibrary(PChar(DllFileName));
      
    try
        
    if GetDllHWND < 32 then
        
    begin
          MessageBox(
    0, Pchar('没有找到'+DllFileName+'DLL文件!'),'加载DLL失败', MB_OK);
          Exit;
        
    end;
        @RunForm :
    = GetProcAddress(GetDllHWND,pchar(methodName));
        
    if @RunForm <> nil then
           
    try
             RunForm(DllFormName);
           
    except
             
    raise Exception.Create('对不起,找不到T' + DllFormName+ '窗体!');
           
    end
         
    else
         
    raise Exception.Create('无效的方法名调用');
      
    finally
        FreeLibrary(GetDllHWND);
      
    end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    RunDllForm(
    'project1.dll','form1','showform');
    end;

  • 相关阅读:
    动态分配内存与静态分配内存
    指针的指针
    cpp与其他语言相比较
    数组是什么
    cocos2d-x 2.1.4 项目配置过程
    显示隐藏文件 osx 10.10
    Windows 10 SDK 10.0.10158
    Office 2016 (Preview)
    Windows 10 SDK 10.0.10069 : The installer failed. User cancelled installation. Error code: -2147023294
    用系统工具sxstrace检查缺少的VC运行时组件
  • 原文地址:https://www.cnblogs.com/Values/p/3232262.html
Copyright © 2011-2022 走看看