鱼C论坛

 找回密码
 立即注册
查看: 3367|回复: 1

[技术交流] 怎样在DELPHI中使用API函数

[复制链接]
发表于 2017-6-14 10:17:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实际上,在DELPHI中调用WIN32 API函数与在C或C++中调用WIN32 API函数没有大的区别。DELPHI中将C或C++中引用 的WINDOWS.H头文件改写为WINDOWS.PAS单元,使WINDOWS API函数的定义符合PASCAL语法。而其他的头文件在DELPHI中也都有相应的.PAS单元一一对应,所以在DELPHI中调用API函数时,只须将相应的API函数单元加入到USES语句的单元之中,便可直接调用相应的函数了。

下面我们来看一个简单的例子,程序的作用是改变桌面墙纸:
unitUnit1;
  interface
  {Windows.PAS是DELPHI提供的标准单元,我们要调用API函数,需要引用这个单元}
  usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls;
  type
    TForm1 =class(TForm);
    Button1:TButton;
    procedureButton1Click(Sender: TObject);
    private{ Private declarations }
    public {Public declarations }
  end;
  var Form1:TForm1;        
  implementation{$R *.DFM}
  procedureTForm1.Button1Click(Sender: TObject);
  varfilename1:string;
  begin
    filename1:='c:\windows\mywallpaper.bmp';
    {调用API函数SystemParametersInfo来设置桌面墙纸的图片文件为'c:\windows\mywallpaper.bmp'}
    SystemParametersInfo(SPI_SETDESKWALLPAPER,0,pchar(filename1), SPIF_UPDATEINIFILE);
  end;
  end.

  其中SystemParametersInfo函数的参数的意义如下表:

参数: 意义
uActionLongint,指定要设置的参数。参考uAction常数表
uParamLongint,参考uAction常数表
lpvParam不定,按引用调用的Integer、Longint和数据结构。
fuWinIni参数规定了在设置系统参数的时候,是否应更新用户设置参数
常数SPIF_UPDATEINIFILE表示更新

下面是本例的uAction常数,和使用它的方法:

参数 意义和使用方法
SPI_SETDESKWALLPAPER设置桌面背景墙纸,用法为:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0, 图片路径, 1)

好了在DELPHI中调用API函数就是这样简单,我们需要知道的只是API函数的意义和参数列表,然后把它用到程序中就可以了。需要提醒的是C的数据类型可能会与DELPHI的数据类型有些不同,而调用API函数时必须保证类型一致才行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-10 08:12:17 | 显示全部楼层
支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-4 02:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表