Delphi调用Dll的的2种写法

    
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
//定义类型要与原函数一样
function GetUserDefaultUILanguage():Integer;external 'Kernel32.DLL';

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
    if GetUserDefaultUILanguage() = $0804 then
    begin
      Caption:='简体中文';
    end
    else
    begin
      Caption:='英文';
    end;
end;
    

//方法2 使用LoadLibrary
procedure TForm1.Button2Click(Sender: TObject);
var
   h:THandle;
   pFunc:function():Integer;stdcall;
begin
   h:=LoadLibrary(PChar('Kernel32.DLL'));
   if h=0 then Exit;
   pFunc:= GetProcAddress(h,PChar('GetUserDefaultUILanguage'));
   if Assigned(pFunc) then

    if pFunc() = $0804 then
    begin
      Caption:='简体中文';
    end
    else
    begin
      Caption:='英文';
    end;

   FreeLibrary(h);
end;
 
 
procedure TForm1.Button3Click(Sender: TObject);
var
   h:THandle;
   pFunc:function():Integer;stdcall;
begin
   h:=LoadLibrary('Kernel32.DLL');
   if h=0 then Exit;
   @pFunc:= GetProcAddress(h,'GetUserDefaultUILanguage');
   if Assigned(pFunc) then

    if pFunc() = $0804 then
    begin
      Caption:='CHS';
    end
    else
    begin
      Caption:='ENGLISH';
    end;

   FreeLibrary(h);
end;


end.




附件列表

    原文地址:https://www.cnblogs.com/xe2011/p/3876098.html