在DELPHI中引用API函数,和使用DELPHI本身的函 数、过程几乎没有区别。在DELPHI目录下有一个WINDOWS.PAS文件,凡是在其中声明过的API 函数,都可在编程时直接引用而无须另加说明。只是要注意,标准API函数都是以C或C++为 标准进行数据结构定义的,而DELPHI使用的是OBJECTPASCAL语言,因此在引用时应特别注 意参数和函数本身的数据类型。如一个API函数若为布尔值,则在DELPHI中就应以TRUE、FALSE 而不能用0、非0来对返回值进行判断。
下面以三个小例子来说明API函数在DELPHI中的 使用。
一、本地化消息框
想让自己的消息框显示“OK”、“Cancel”还是“确定”、“ 取消”?如果想使程序彻底本地化,那么还是放弃MessageDlg和ShowMessage吧——都怪DELPHI 没有。用MessageBox这个API函数照样方便。
使用语法为:
MessageBox(HWND:hWND,lpMessage: PChar,lpCaption:PChar,uType:Cardinal);
各参数中,第一个为消息框所属的窗口句柄,第二 个为要显示的消息,第三个为消息框的标题,第四个为消息框的类型,函数返回值为整型数。
为使消息框有所归属,第一个参数设为当前窗口, 获取其句柄的方法是使用另一个API函数:GetActiveWindows(),且不需任何参数。
例1)Messagebox示例:
1.主要构件及属性的设置:
form1:caption:messagebox示例 bordericons:biMaximize和biHelp设为false panel1:caption:文字部分Alignment:taLeftJustify panel2:caption:图象部分Alignment:taLeftJustify button1~button12:caption分别为:确定、确定取消、 确定帮助取消、是否、重试取消、终止重试取消、 信息、提问、系统图标、警告、停止、组合方式 bitbtn1:kind:bkClose
如图一所示:
2.事件说明:(详见源程序,下仅举两例)
{文字部分以button2click()为例}
procedureTForm1.Button2Click(Sender:TObject);
begin
casemessagebox(getactivewindow(),
显示确定、取消框,例子,
okcancel)
ofidok:messagebox(getactivewindow(),
您按下的是“确定”按钮,
结果,mb_ok);
idcancel:messagebox(getactivewindow(),
您按下的是“取消”按钮,
结果,mb_ok);
end;
end;
{图象部分以button8click()为例}
procedureTForm1.Button8Click(Sender:TObject);
begin
messagebox(getactivewindow(),显示警告图标,例子,
mb_iconwarning)
end;
二、改进Windows9x的系统登录的安全性:
Win9x的“用户登录”窗口可谓来者不拒,密码不 对照样可以“登堂入室”,系统为用户保留的个人设置等信息也就毫无保密性可言,通过查 看Profiles目录,可轻松地将其复制或删除。虽然Win95、Win98的应用对象是个人用户,但 在某些场合下,还是让登录窗口起点作用的好。
要使系统登录具有安全性,对非法使用者真正能 拒之门外,不妨用两个API函数来实现此目的。