DELPHI中使用API函数的方法
DELPHI的文章已经很多了 大家是不是被它强大的开发功能所折服?可视化编程的出现 使很多朋友圆了程序梦 的确 几个控件的搭配再加上几条语句 也许一个软件就出来了 但是 你是否已不满足使用别人的元件?想更深入的了解windows的编程?更换的掌握DELPHI?OK 请继续往下看
DOS下的INT H对于开发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 TForm Button Click(Sender Tobject)
begin
if (AnyPopup) then
Label Caption = Pop-ups found TRUE
else
Label Caption = Pop-ups found FALSE
end
②语法 EnableWindow(hWnd HWND bEnable BOOL) BOOL 单元 windows pas
作用 指定的窗口里允许或禁止所有鼠标及键盘输入
返回值 BOOL 如果返回真 WINDOWS已经禁止 否则返回假
示例
procedure TForm Button Click(Sender TObject)
begin
if (IsWindowEnabled(Edit Handle)) then
begin
EnableWindow(Edit Handle FALSE)
Button Caption = Enable Window
Edit Text = This window is disabled
end
else
begin
EnableWindow(Edit Handle TRUE)
Button Caption = Disable Window
Edit Text = This window is enabled
end
end
③语法 FlashWindow(hWnd HWND bInvert BOOL) BOOL
单元 windows pas
作用 闪烁显示指定窗口 这意味着窗口的标题和说明文字会发生变化 似乎从活动切换到非活动状态 或反向切换 通常对不活动的窗口应用这个函数 引起用户的注意
返回值 BOOL 如窗口在调用前处于活动状态 则返回TRUE [Page]
注解 该函数通常与一个计数器组合使用 生成连续的闪烁效果
在windows NT及windowsfor workgroup中 bInvert参数会被忽略
但在windows 中不会忽略
示例
procedure TForm Timer Timer(Sender TObject)
begin
FlashWindow(Form Handle TRUE)
FlashWindow(Application handle TRUE)
end
④语法 SetWindowText(hWnd HWND lpString PChar) BOOL
单元 windows pas
作用 设置窗口的标题文字或控件的内容
返回值 设置成功返回TRUE 否则返回FALSE
示例
procedure TForm Button Click(Sender TObject)
var
TheText PChar
TextLen Integer
begin
TextLen =GetWindowTextLength(Form Handle)
GetMem(TheText TextLen)
GetWindowText(Form Handle TheText TextLen+ )
Edit Text =string(TheText)
FreeMem(TheText)
end
procedure TForm Button Click(Sender TObject)
begin
SetWindowText(Form Handle PChar(Edit Text))
end
⑤语法 IsWindow(hWnd HWND) BOOL
单元 windows pas
作用 判断一个窗口句柄是否有效
返回值 有效返回TRUE 否则返回FALSE
示例
procedure TForm Button Click(Sender TObject)
begin
if (IsWindow(Button Handle)) then
Button Caption = TRUE
else
Button Caption = FALSE
end
怎么样 还过瘾吧?今天是第一次 就介绍些较容易接受的函数 否则朋友们肯定会喊吃不消 不知道朋友们对这样的编排形式能够接受吗?还有 我会按照API函数的分类(控件与消息函数/硬件与系统函数/菜单函数/文本和字体函数/打印函数等等)分别介绍 但我不会介绍全部的API函数 否则大有骗稿费之嫌疑 而且本人的水平也难做到每个语句都有示例 只介绍平常用得上的 本人经常使用的函数 有时也会介绍一下比较隐秘但却非常有用的API函数
附tips(DELPHI技巧)一个
如果有这样一个目录
c window *** ediatempabcsoundchime wav
我希望它能缩短成
c windows……soundchime wav
如何写程序呢?
回答
用下面的过程试试
function shortenfilename(s string) string
var drive curdrive string[ ]
dir curdir string[ ]
name string[ ] [Page]
ext string[ ]
i byte
begin
for i = to length(s) do s[i] =upcase(s[i])
s =fexpand(s)
fsplit(s dir name ext)
drive =copy(dir )
dir =copy(dir length(dir)- )
getdir( curdir)
curdrive =copy(curdir )
curdir =copy(curdir length(curdir)- )+
if drive=curdrive then begin
if copy(dir length(curdir))=curdir then begin
i =length(curdir)
if length(dir)<>i then dir =dir+
shortenfilename =copy(dir i+ length(dir)-i- )+name+ext
end else shortenfilename =copy(s length(s)- )
end else shortenfilename =s
end
lishixinzhi/Article/program/Delphi/201311/8422