zoukankan      html  css  js  c++  java
  • delphi 开发扩展(一)

    {主程序}

    unit Unit2;


    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, ADODB;

    type
      TPluginName = Function:string; stdcall;
      TShowPerSN  = function(AHandle:THandle;ADOConn:TADOConnection;ACaption:String):BOOL;StdCall;

    type
      TForm2 = class(TForm)
        ListBox1: TListBox;
        ADOConnection1: TADOConnection;
        procedure FormCreate(Sender: TObject);
        procedure ListBox1DblClick(Sender: TObject);
      private
        LibHandle: HMODULE;
        procedure LoadPlugins;
        procedure LoadPlugin(sr: TSearchRec);
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form2: TForm2;

    implementation

    {$R *.dfm}


    procedure TForm2.FormCreate(Sender: TObject);
    begin
      LibHandle:=0;//初始化LibHandle的值。
      LoadPlugins;//调入LoadPlugins过程。
    end;

    procedure TForm2.LoadPlugins;
    var
      sr: TSearchRec;
      path: string;
      Found: Integer;
    begin
      path := ExtractFilePath(Application.Exename);
      try
        Found := FindFirst(path + '*.DLL', 0, sr);
        while Found = 0 do//查找文件。
        begin
          LoadPlugin(sr);
          Found := FindNext(sr);
        end;
      finally
        FindClose(sr);
      end;
    end;



    procedure TForm2.ListBox1DblClick(Sender: TObject);
    var k:TPluginName;ShowPerSN:TShowPerSN;
    begin
      if ListBox1.ItemIndex<>-1 then
      begin
        if LibHandle<>0 then
          FreeLibrary(LibHandle);

        LibHandle:= LoadLibrary(Pchar(self.ListBox1.Items[self.ListBox1.ItemIndex]));
        if LibHandle <> 0 then
        begin
          try
            @k:= GetProcAddress(LibHandle, 'GetName');
            self.Text:=k;

            @ShowPerSN:= GetProcAddress(LibHandle,'GetForm');
            if not (@ShowPerSN   =   nil)   then
            begin
               ShowPerSN(application.Handle,ADOConnection1,'');
               Invalidate;
            end;
          Except
            FreeLibrary(LibHandle);
            LibHandle:=0;
          end;
        end
        else
          ShowMessage('loading Dll file error!');
      end;
    end;



    procedure TForm2.LoadPlugin(sr: TSearchRec);
    var
      iLibHandle: HMODULE;
    begin
      iLibHandle := LoadLibrary(Pchar(sr.Name));
      if iLibHandle <> 0 then
      begin
        try
           ListBox1.Items.Add(sr.Name);
        finally
          FreeLibrary(iLibHandle);
        end;
      end else
        ShowMessage('loading Dll file error!');
    end;

    end.

  • 相关阅读:
    FreeCAD二次开发-makeChamfer创建倒角
    FreeCAD二次开发-makeFillet创建倒圆
    FreeCAD二次开发-Gui.Selection.getSelectionEx() 遍历选中的对象
    FreeCAD二次开发-Part.Ellipse创建椭圆
    FreeCAD二次开发-Part.makePolygon创建多边形
    FreeCAD二次开发-face.extrude创建拉伸
    FreeCAD二次开发-Part.Face创建面
    FreeCAD二次开发-Part.Shape合并几何元素,生成拓扑形状
    FreeCAD二次开发-Part.LineSegment创建直线
    FreeCAD二次开发-Part.Arc创建圆弧
  • 原文地址:https://www.cnblogs.com/azhai/p/1595107.html
Copyright © 2011-2022 走看看