• delphi动态调用dll


    unit Unit1;

    interface

    uses

      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

    type

      TForm1 = class(TForm)

        Edit1: TEdit;

        Label1: TLabel;

        Button1: TButton;

        procedure Button1Click(Sender: TObject);

      private

        { Private declarations }

      public

        { Public declarations }

      end;

      SendPatientInfo = procedure(sParam:ansistring); stdcall;//无回参用procedure,有回参用function,我也不知道为什么

    var

      Form1: TForm1;

    implementation

    {$R *.dfm}

    var

      FDLL130Handle: THandle;

      DLL130Name: string = 'D:demodelphiMetabolism.dll';

      bStop: boolean;

    procedure TForm1.Button1Click(Sender: TObject);

    var

      sendPInf:SendPatientInfo;

    begin

      FDLL130Handle := Loadlibrary(Pchar(DLL130Name));

      if FDLL130Handle = 0 then

      begin

        ShowMessage(DLL130Name+'不存在');

      Exit;

      end;

      @sendPInf := GetProcAddress(FDLL130Handle, 'SendPatientInfo');

      if @sendPInf = nil then

      begin

        ShowMessage('SendPatientInfo 函数无法获得!');

      end else

      begin

        sendPInf(pchar(Edit1.Text));

      end;

    end;

    end.

  • 相关阅读:
    将查询语句创建新表
    java冒泡排序
    java三元运算符
    java中的>>>和>>>=
    i++和++i
    设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。
    System.out.println与System.err.println的区别
    try-catch-finally
    Java常见异常类
    Vue.js环境配置
  • 原文地址:https://www.cnblogs.com/zhaisd/p/13516818.html
Copyright © 2020-2023  润新知