其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI中使用API函数的方法


发布日期:2018年11月06日
 
DELPHI中使用API函数的方法

DELPHI的文章已经很多了大家是不是被它强大的开发功能所折服?可视化编程的出现使很多朋友圆了程序梦的确几个控件的搭配再加上几条语句也许一个软件就出来了但是你是否已不满足使用别人的元件?想更深入的了解windows的编程?更换的掌握DELPHI?OK请继续往下看

DOS下的INTH对于开发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

单元windowspas(该单元DELPHI会自行在USES里加上下同)

作用判断屏幕上是否存在任何弹出式窗口

返回值BOOL如存在弹出式菜单则返回TRUE

注解对该函数来说弹出式菜单包含所有可见的包容顶级窗口无论弹出式还是重叠窗口

示例

procedure TFormButtonClick(Sender Tobject)

begin

if (AnyPopup) then

LabelCaption=Pop-ups found TRUE

else

LabelCaption=Pop-ups found FALSE

end

②语法EnableWindow(hWnd HWND bEnable BOOL) BOOL单元windowspas

作用指定的窗口里允许或禁止所有鼠标及键盘输入

返回值BOOL如果返回真WINDOWS已经禁止否则返回假

示例

procedure TFormButtonClick(Sender TObject)

begin

if (IsWindowEnabled(EditHandle)) then

begin

EnableWindow(EditHandleFALSE)

ButtonCaption=Enable Window

EditText=This window is disabled

end

else

begin

EnableWindow(EditHandleTRUE)

ButtonCaption=Disable Window

EditText=This window is enabled

end

end

③语法FlashWindow(hWnd HWND bInvert BOOL) BOOL

单元windowspas

作用闪烁显示指定窗口这意味着窗口的标题和说明文字会发生变化似乎从活动切换到非活动状态或反向切换通常对不活动的窗口应用这个函数引起用户的注意

返回值BOOL如窗口在调用前处于活动状态则返回TRUE [Page]

注解该函数通常与一个计数器组合使用生成连续的闪烁效果

在windows NT及windowsfor workgroup中bInvert参数会被忽略

但在windows 中不会忽略

示例

procedure TFormTimerTimer(Sender TObject)

begin

FlashWindow(FormHandle TRUE)

FlashWindow(Applicationhandle TRUE)

end

④语法SetWindowText(hWnd HWNDlpString PChar) BOOL

单元windowspas

作用设置窗口的标题文字或控件的内容

返回值设置成功返回TRUE否则返回FALSE

示例

procedure TFormButtonClick(Sender TObject)

var

TheText PChar

TextLen Integer

begin

TextLen=GetWindowTextLength(FormHandle)

GetMem(TheTextTextLen)

GetWindowText(FormHandleTheTextTextLen+

EditText=string(TheText)

FreeMem(TheText)

end

procedure TFormButtonClick(Sender TObject)

begin

SetWindowText(FormHandle PChar(EditText))

end

⑤语法IsWindow(hWnd HWND) BOOL

单元windowspas

作用判断一个窗口句柄是否有效

返回值有效返回TRUE否则返回FALSE

示例

procedure TFormButtonClick(Sender TObject)

begin

if (IsWindow(ButtonHandle)) then

ButtonCaption=TRUE

else

ButtonCaption=FALSE

end

怎么样还过瘾吧?今天是第一次就介绍些较容易接受的函数否则朋友们肯定会喊吃不消不知道朋友们对这样的编排形式能够接受吗?还有我会按照API函数的分类(控件与消息函数/硬件与系统函数/菜单函数/文本和字体函数/打印函数等等)分别介绍但我不会介绍全部的API函数否则大有骗稿费之嫌疑而且本人的水平也难做到每个语句都有示例只介绍平常用得上的本人经常使用的函数有时也会介绍一下比较隐秘但却非常有用的API函数

附tips(DELPHI技巧)一个

如果有这样一个目录

cwindowsmediatempabcsoundchimewav

我希望它能缩短成

cwindows……soundchimewav

如何写程序呢?

回答

用下面的过程试试

function shortenfilename(s string) string

var drivecurdrive string[

dircurdir string[

name string[ [Page]

ext string[

i byte

begin

for i= to length(s) do s[i]=upcase(s[i])

s=fexpand(s)

fsplit(sdirnameext)

drive=copy(dir

dir=copy(dirlength(dir)-

getdir(curdir)

curdrive=copy(curdir

curdir=copy(curdirlength(curdir)-)+

if drive=curdrive then begin

if copy(dirlength(curdir))=curdir then begin

i=length(curdir)

if length(dir)<>i then dir=dir+

shortenfilename=copy(diri+length(dir)-i-)+name+ext

end else shortenfilename=copy(slength(s)-

end else shortenfilename=s

end

本文只为提高DELPHI能力的朋友所写非一般入门级的教程所以文中所有DELPHI的自身函数和一些基本技巧不再说明请朋友查阅DELPHI的联机帮助手册

               

上一篇:从细节了解Delphi的命令行参数

下一篇:用Delphi2005学设计模式之工厂方法篇