DELPHI中使用API函数的方法

如题所述

第1个回答  2022-10-16

  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