DELPHI中使用API函数详解
2008-04-09 04:29:59来源:互联网 阅读 ()
DOS下的INT21H对于开发DOS程序很重要,而对于在WINDOWS下开发程序,了解API函数是很有必要的。元件就像招式,而API函数就好比内功心法,有了高深的内力,那么学习招式就易如反掌啦。所以,掌握的API函数越多,你就越可能成为DELPHI高手,甚至WINDOWS编程高手。所以,无论是C++,VB还是DELPHI都无一例外的支持API函数的调用,C++和DELPHI是全面支持API函数,而VB仅支持部分API函数(部分也不少了,已经有几百条之多),尤其是DELPHI调用API函数最方便,已经达到与API函数合二为一的境界,调用API函数和使用自身的函数几乎一样。下面我将为大家详细讲解API函数在DELPHI中的使用,每条语句我都会写个小例子,让大家更能明白其是如何使用的。如果你认真看完本文后,相信大家一定会对DELPHI编程有更深的了解。但是千万不要半途而废,畏难怕繁,记住:欲练神功,必下苦功!学编程,可不是玩游戏,不能弄个FPE啥作弊的。
(一)控件与消息函数
①语法:AnyPopup: BOOL;
单元:windows.pas(该单元DELPHI会自行在USES里加上,下同)
作用:判断屏幕上是否存在任何弹出式窗口
返回值:BOOL,如存在弹出式菜单,则返回TRUE
注解:对该函数来说,弹出式菜单包含所有可见的包容顶级窗口,无论弹出式还是重叠窗口
示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (AnyPopup) then
Label1.Caption:=‘Pop-ups found: TRUE''''
else
Label1.Caption:=‘Pop-ups found: FALSE'''';
end;
②语法:EnableWindow(hWnd: HWND; bEnable: BOOL): BOOL;单元:windows.pas
作用:指定的窗口里允许或禁止所有鼠标及键盘输入
返回值:BOOL,如果返回真,WINDOWS已经禁止,否则返回假
示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (IsWindowEnabled(Edit1.Handle)) then
begin
EnableWindow(Edit1.Handle,FALSE);
Button1.Caption:=‘Enable Window'''';
Edit1.Text:=‘This window is disabled'''';
end
else
begin
EnableWindow(Edit1.Handle,TRUE);
Button1.Caption:=‘Disable Window'''';
Edit1.Text:=‘This window is enabled'''';
end;
end;
③语法:FlashWindow(hWnd: HWND; bInvert: BOOL): BOOL;
单元:windows.pas
作用:闪烁显示指定窗口。这意味着窗口的标题和说明文字会发生变化,似乎从活动切换到非活动状态、或反向切换。通常对不活动的窗口应用这个函数,引起用户的注意
返回值:BOOL,如窗口在调用前处于活动状态,则返回TRUE
注解:该函数通常与一个计数器组合使用,生成连续的闪烁效果。
在windows nt及windowsfor workgroup中,bInvert参数会被忽略。
但在windows 95中不会忽略
示例:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
FlashWindow(Form1.Handle, TRUE);
FlashWindow(Application.handle, TRUE);
end;
④语法:SetWindowText(hWnd: HWND;lpString: PChar): BOOL;
单元:windows.pas
作用:设置窗口的标题文字或控件的内容
返回值:设置成功返回TRUE,否则返回FALSE
示例:
procedure TForm1.Button1Click(Sender: TObject);
var
TheText: PChar;
TextLen: Integer;
begin
TextLen:=GetWindowTextLength(Form1.Handle);
GetMem(TheText,TextLen);
GetWindowText(Form1.Handle,TheText,TextLen+1);
Edit1.Text:=string(TheText);
FreeMem(TheText);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SetWindowText(Form1.Handle, PChar(Edit1.Text));
end;
⑤语法:IsWindow(hWnd: HWND): BOOL;
单元:windows.pas
作用:判断一个窗口句柄是否有效
返回值:有效返回TRUE,否则返回FALSE
示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (IsWindow(Button1.Handle)) then
Button1.Caption:=‘TRUE''''
else
Button1.Caption:=‘FALSE'''';
end;
怎么样,还过瘾吧?今天是第一次,就介绍些较容易接受的函数,否则朋友们肯定会喊吃不消。不知道朋友们对这样的编排形式能够接受吗?还有,我会按照API函数的分类(控件与消息函数/硬件与系统函数/菜单函数/文本和字体函数/打印函数等等)分别介绍,但我不会介绍全部的API函数,否则大有骗稿费之嫌疑,而且本人的水平也难做到每个语句都有示例,只介绍平常用得上的,本人经常使用的函数,有时也会介绍一下比较隐秘但却非常有用的API函数。
附TIPS(DELPHI技巧)一个:
如果有这样一个目录:
c:\windows\media\temp\abc\sound\chime.wav
我希望它能缩短成:
c:\windows\..\sound\chime.wav
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:对PE资源的研究
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash