在delphi中调用api的问题(50分)

  • 主题发起人 主题发起人 bestluo
  • 开始时间 开始时间
B

bestluo

Unregistered / Unconfirmed
GUEST, unregistred user!
谁可以告诉我在delphi中如何调用api
如果有实力那就更好了
我的mail是:0791l@sina.com
谢谢
 
想用windows自带的API?好办!绝大多数的API都被DELPHI包括进来了,需要的话
你只要查一下帮助就好(大部份可以直接使用,小部分需声明调用的动态库)
 
一般来讲,在Delphi中调用Windows API可直接进行,
如果是调用DLL中的函数可采用下列方式
function checkpwd(pwd:string):boolean;external 'project1.dll' ;//函数说明

如果这些你觉得不够,请看下面转载的一篇文章:

Delphi调用API函数实例

[ 作者: 胡勇智 添加时间: 2001-8-30 7:54:12 ]




来源:www.ccidnet.com

什么是API函数
Win32 API即为Windows应用程序编程接口(Application Programming Interface)。所有在Win32平台上运行的应用程序都可以调用这些函数。

早期的PC机内存非常少,Windows的设计者们不仅要把大量的代码和资源放入,而且还要留出足够的空间让应用程序运行,解决这种矛盾的方法就是通过让多个程序共享常用的代码来实现,这些被共享的代码就是今天所说的API函数。

随着软件技术的不断发展,在Windows平台上出现了很多优秀的可视化编程环境,程序员可以采用“所见即所得”的编程方式来开发具有精美用户界面和功能的应用程序。这些可视化编程环境操作简便、界面友好,比如:Visual C++、Delphi和Visual Basic等。在这些工具中提供了大量的控件,实现了API的部分功能,加速了Windows应用程序的开发。但程序员要想开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数。

API函数的分类

分类
单元
功能及库文件

基本管理
windows
操作系统的基本功能,提供分配内存、
管理任务、装入资源、文件操作等

shell例程
shellapi
win32提供的外壳例程,
如加载其它程序、管理登录等

mci接口
mmsystem
多媒体mci编程接口(winmm.dll)

注册表管理
regstr
win32系统中注册表的管理

消息传送接口
mapi
微软消息传送系统的编程接口(mapi32.dll)

winsocket
winsock
winsocket网络编程接口(wsock32.dll)

标准对话框
comdlg
win32的标准对话框,如打开文件、
打印等(comdlg32.dll)

activex
activex
对象连接与嵌入ole函数

win32外壳扩展
shlobj
针对系统外壳的编程接口,
对资源管理器的某些功能或对象进行扩展



API函数按不同功能被存放在不同的动态链接库文件中,这些动态链接库文件一般是以DLL为扩展名。在上表中,列举出了编程时较常用的几大类API函数及其主要功能、库文件名和对应的Delphi单元。

Delphi调用API函数实例
Delphi中定义了相应单元,给出了所有Win32 API函数的接口。Delphi调用API函数非常简单,甚至不需要声明外部引用,只需将使用的单元名放在Uses子句中就可以,其它的工作全部由系统定义的单元完成。下面,我们给出几个Delphi中使用API函数的实例,帮助大家理解。

1、在“文档”菜单中添加新项及清空项目
在Windows的开始菜单中有一个文档菜单,保存了最近处理过的文档信息,如何增加新项或将其清空呢?我们可以利用API函数SHAddtoRecentDocs()来实现,它定义在Shlobj单元中,使用前要先在Uses中加以说明。下面为处理方法:

uses shlobj;
procedure TForm1.Button1Click(Sender: TObject);
begin
SHAddtoRecentDocs(SHARD_PATH, Pchar('c:/mydir/aaa.txt')); //增加新的一项
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SHAddtoRecentDocs(SHARD_PATH, nil); //清空文档菜单
end;

2、使窗口标题栏闪烁
在Windows中,常用窗口标题栏的闪烁来提醒用户,向你的程序中加入这一功能一定很有意思。API函数Flash Windows( )可以使一个特定的窗口闪动一次,如果将其放在计时器中调用,标题栏闪烁就很容易实现。

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval:=500; //计时器的间隔时间,每500毫秒触发一次
Timer1.Enabled:=Not Timer1.Enabled; //切换计时器的激活或停止状态
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
FlashWindow(Form1.Handle,TRUE); //闪烁标题栏
end;

FlashWindows()有两个参数:第一个参数指明窗口的句柄;第二个参数指定窗口是闪动还是恢复始状态。这个函数定义在Windows单元中,是Delphi的缺省单元,故不必再用Uses子句进行说明。

3、在程序中播放WAV声音文件
Windows启动时那声嘹亮的号角声是否让你感到振奋。OK!让我们在自己的程序中来实现它。仅仅播放一个WAV声音文件,当然不需要劳驾MediaPlayer构件,API函数SndPlaySound()就可以很好地完成这一工作。它定义在MMSystem单元中,有两个参数:第一个指明WAV文件的路径、文件名;第二个指明播放方式。实例如下:

uses MMSystem;
procedure TForm1.FormCreate(Sender: TObject);
begin
SndPlaySound('c:/windows/media/tada.wav',SND_ASYNC)
end;

API函数数量众多,在平时的学习使用中不断积累,加深理解,编程水平一定会有一个大的提高。


 
很简单嘛,比如显示一个窗口
ShowWindow(Handle,SW_SHOW);
根本不用声明,只要引用了Windows单元就可以了
 
不论调用什么API﹐首先必须引用shellapi,然后按照该API的语法就可调用。
 
如果使用Windows所戴的API,应当引用Windows,Delphi的应当引用ShellApi
 
多人接受答案了。
 
后退
顶部