文档章节

怎样在DELPHI中使用API函数

 金笛子
发布于 2015/12/02 17:30
字数 496
阅读 15
收藏 0

实际上,在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函数时必须保证类型一致才行。

转自bbs.sendsms.cn


本文转载自:

共有 人打赏支持
粉丝 1
博文 81
码字总数 30552
作品 0
海淀
私信 提问
如何模拟输入用户名、密码来访问网络邻居

如何模拟输入用户名、密码来访问网络邻居 基本原理 在Windows 环境下,应用程序使用Windows 网络函数(WNet)来实现网络功能 而不用关心网络的供应商及具体实现,因为WNet 函数是独立于网络的...

vga
2014/03/04
0
0
Delphi中调用API函数经验点滴(二)

二、弹出模式化对话框   在Delphi中,提供模式化对话框的方法很多,现对几种比较常用的方法做如下比较:   1) 直接调用Windows API 函数MessageBox   该方法一般情况下使用正常,而且根...

金笛子
2015/12/23
10
0
Delphi中调用API函数经验点滴

在Delphi中调用Windows API 函数十分方便,只需在单元的uses段加入Windows单元名即可(对于由Delphi自动创建的单元,该项工作已经完成)。单元Windows.pas已经由Delphi编写并直接提供开发者引...

金笛子
2015/12/21
25
0
HOOK API DLL 注入

一、 序言对大多数的Windows开发者来说,如何在Win32系统中对API函数的调用进行拦截一直是项极富挑战性的课题,因为这将是对 你所掌握的计算机知识较为全面的考验,尤其是一些在如今使用RAD...

长平狐
2012/09/03
2.8K
0
[转] Java中调用Delphi编写的DLL

有些时候,要写一些程序,在 JAVA 里面好难实现, 但如果使用其它编程语言却又比较容易时,我们不妨通过 JNI 来让不同语言的程序共同完成. JNI 的教程, 网上 C 的比较多,Java 也提供了 javah.ex...

鉴客
2010/10/28
2.4K
1

没有更多内容

加载失败,请刷新页面

加载更多

浅析微信支付:开通免充值产品功能及如何进行接口升级指引

本文是【浅析微信支付】系列文章的第十五篇,主要讲解如何开通免充值产品功能流程和其中的注意事项,对于接口升级会重要讲解,避免爬坑。 浅析微信支付系列已经更新十五篇了哟~,没有看过的...

YClimb
44分钟前
2
0
看看ArrayDeque源码

之前看了其他实现Deque接口的类,这里再看看ArrayDeque吧,下图可以看到这个类设计的结构层次,其实Deque接口是继承了Queue接口的。用可调整大小的数组实现Deque接口。没有容量限制,他们根据...

woshixin
44分钟前
2
0
如何存储登录cookie,发送一个post类型的api请求?

其实发送post请求和get请求一样,主要就是不知道如何存储登录cookie进行发送请求,请教xx得到如下解决办法 点击右下方的cookies,填写cookies信息,如图 1填写登录的cookie名,2填写cookie的...

七曦777
45分钟前
1
0
利用cefSharp实现网页自动注册登录的需要注册的一些事项

最近朋友有个需要自动注册登录点击的事,我帮着写了写,好久没写过这东西了,在写的过程中总结了需要注意的一些事项。 一、换IP之后要测试一下速度,我目前用的最简单的测试方法就是20-30秒加...

我退而结网
53分钟前
2
0
Go语言中使用 BoltDB数据库

boltdb 是使用Go语言编写的开源的键值对数据库,Github的地址如下: https://github.com/boltdb/bolt boltdb 存储数据时 key 和 value 都要求是字节数据,此处需要使用到 序列化和反序列化。...

Oo若离oO
53分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部