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.

来自为知笔记(Wiz)

附件列表

Delphi调用Dll的的2种写法

时间: 2024-10-18 04:30:16

Delphi调用Dll的的2种写法的相关文章

java中调用dll文件的两种方法

一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNative地址:http://www.jb51.net/article/35232.htm JNA方法: 介绍 给大家介绍一个最新的访问本机代码的Java框架—JNA. JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架

QT 调用 DLL 方法(三种方法)

Qt调用DLL方法一:使用Win32 API 在显式链接下,应用程序必须进行函数 调用以在运行时显式加载 DLL.为显式链接到 DLL,应用程序必须:? 调用 LoadLibrary(或相似的函 数)以加载 DLL 和获取模块句柄.? 调用 GetProcAddress,以获 取指向应用程序要调用的每个导出函数的函数指针.由于应用程序是通过指针调用 DLL 的函数,编译器不生成外部引 用,故无需与导入库链接.? 使用完 DLL 后调用 FreeLibrary.例如:typedef UINT (C

javascript立即调用的函数表达式N种写法(第二篇)

上一篇博客我谈到将函数声明转换为函数表达式最常见的一种写法是:通过括号()将匿名函数声明转换为函数表达式即(function(){})(); 言外之意就是还有其他方式,记住:任何消除函数声明和函数表达式间歧义的方法,都可以被解析器正确识别!它们可以分为5类,超过10多种: (function(){})(); //最常见的写法 下文没特殊指明就是指它 (function(){}); //容易与上面的混淆 [function()()]; //一元运算符 ~function(){}; +functio

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) Button1: TButton; procedure Button1Click(Sender

delphi编写与调用DLL

delphi编写DLL 下面在delphi中编写一个简单的dll,在该dll中只有一个max函数,返回2个数中的大数(Delphi 5.0) 1.New->DLL;取名为DLL_0001,编写代码: library dll_0001; uses  SysUtils,  Classes; {$R *.RES} function max(x,y:integer):integer;stdcall;begin    if(x>y) then     max :=x     else     max :

delphi 基础之三 编写和调用dll文件

delphi 编写和调用dll文件   Windows 的执行文件可以划分为两种形式程序和动态连接库 (DLLs).一般程序运行是用.EXE文件,但应用程序有时也可以调用存储在DLL的函数. 在如下几种情况下,调用DLL 是合理的: 1) 不同的程序使用相同的DLL ,这样只需要将DLL 在内存中装载一次,节省了内存的开销. 2) 当某些内容需要升级的时候,如果使用DLL 只需要改变DLL 就可以了,而不需要把整个程序都进行变动. 3) 由于DLL 是独立于语言的,所以,当不同语言习惯的人共同开

Delphi编写DLL(以及静态和动态方式调用)

Delphi编写DLL(以及静态和动态方式调用) 作者/cadenza7 什么是DLL? DLL是Dynamic Link Library(动态链接库)的缩写形式.DLL 是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件,动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数,函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译.链接并与使用它们的进程分开存储的函数.DLL 还有助于共享数据和资源,多个应用程序可同时访问内存中单个DLL 副本的内容

C#调用Delphi的dll之详解

C#调用Delphi接口方法,有两种解决办法: 一.将Delphi程序编译成一个COM组件,然后在C#里引用COM组件. 二.非托管调用Dephi的DLL文件. 这里我们主要讲解一下第二种方法,讲第二种方法之前首先讲解下DllImport. DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息. DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称.     DllImpor

在Delphi中静态调用DLL 引用外部Dll External Dll 导入Dll

  调用一个DLL比写一个DLL要容易一些.首先给大家介绍的是静态调用方法,稍后将介绍动态调用方法,并就两种方法做一个比较.同样的,我们先举一个静态调用的例子. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton;