中国程序员联盟 正在重新改版中ing 不便之处还请见谅 改版后将内容涉及java delphi .net php
 
  首页 | 数据库开发 | 网络通讯 | 多线程 | 多媒体开发 | 图像处理 | 程序人生 | 系统函数 | 控件开发 | Web服务
 
  当前位置:笨鱼delphi技术网>系统函数>文章内容

delphi 如何使用API

来源:站内 关于:bill 发布时间:2007-06-27   [收藏] [推荐]

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
  如何写程序呢?
  回答:
  用下面的过程试试:
  function shortenfilename(s : string) : string;
  var drive,curdrive : string[2];
  dir,curdir : string[80];
  name : string[20];
  ext : string[5];
  i : byte;
  begin
  for i:=1 to length(s) do s[i]:=upcase(s[i]);
  s:=fexpand(s);
  fsplit(s,dir,name,ext);
  drive:=copy(dir,1,2);
  dir:=copy(dir,4,length(dir)-3);
  getdir(0,curdir);
  curdrive:=copy(curdir,1,2);
  curdir:=copy(curdir,4,length(curdir)-3)+‘\';
  if drive=curdrive then begin
  if copy(dir,1,length(curdir))=curdir then begin
  i:=length(curdir);
  if length(dir)<>i then dir:=dir+‘\';
  shortenfilename:=copy(dir,i+1,length(dir)-i-1)+name
+ext;
  end else shortenfilename:=copy(s,3,length(s)-2);
  end else shortenfilename:=s;
  end;
  注:本文只为提高DELPHI能力的朋友所写,非一般入门级的教程,
所以文中所有DELPHI的自身函数和一些基本技巧不再说明,请朋友查
阅DELPHI的联机帮助手册。


[浏览: 次]   
上一篇:delphi 在 Delphi 中使用原生 ADO 控制数据库   下一篇:delphi Win32 API 使用的特殊情况
[收藏] [推荐] [返回顶部] [打印本页] [关闭窗口]  
    评论加载中…
google adsense热点文章
·delphi Delphi中ShellExecute的妙用
·delphi 如何快速读取文本文件
·delphi 在应用层截获键盘消息
·delphi 如何判断输入值是否中文
·delphi delphi实现服务开启与关闭
·delphi 实时记录事件日志
·delphi 使MEMO自动滚动
·delphi 如何区分键盘两个Enter键
·delphi 切换界面的方法
·delphi 汉字输入法的编程及使用
·delphi Delphi程序输入法自动切换最简
·delphi 消息是由谁来发出又由谁来完成
     delphi技术网 | firefox 下载 | Avant Browser下载 | dedecms 技术网 | drupal 爱好者 | php 技术网
  Copyright@www.delphichm.com,2006-2009.All Rights Reserved.
 
程序员联盟 | delphi Java .net|QQ:707102932