熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI中使用API函數的方法

2013-11-11 21:04:34  來源: Delphi編程 

  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的聯機幫助手冊


From:http://tw.wingwit.com/Article/program/Delphi/201311/8422.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.