什麼是API函數
Win32 API即為Windows應用程序編程接口(Application Programming Interface)。所有在Win32平台上運行的應用程序都可以調用這些函數。
早期的PC機內存非常少,Windows的設計者們不僅要把大量的代碼和資源放入,而且還要留出足夠的空間讓應用程序運行,解決這種矛盾的方法就是通過讓多個程序共享常用的代碼來實現,這些被共享的代碼就是今天所說的API函數。
隨著軟件技術的不斷發展,在Windows平台上出現了很多優秀的可視化編程環境,程序員可以采用“所見即所得”的編程方式來開發具有精美用戶界面和功能的應用程序。這些可視化編程環境操作簡便、界面友好,比如:Visual C++、Delphi和Visual Basic等。在這些工具中提供了大量的控件,實現了API的部分功能,加速了Windows應用程序的開發。但程序員要想開發出更靈活、更實用、更具效率的應用程序,必然要涉及到直接使用API函數。
API函數的分類
分類
單元
功能及庫文件
基本管理
windows
操作系統的基本功能,提供分配內存、
管理任務、裝入資源、文件操作等
shell例程
shellapi
win32提供的外殼例程,
如加載其它程序、管理登錄等
mci接口
mmsystem
多媒體mci編程接口(winmm.dll)
注冊表管理
regstr
win32系統中注冊表的管理
消息傳送接口
mapi
微軟消息傳送系統的編程接口(mapi32.dll)
winsocket
winsock
winsocket網絡編程接口(wsock32.dll)
標准對話框
comdlg
win32的標准對話框,如打開文件、
打印等(comdlg32.dll)
activex
activex
對象連接與嵌入ole函數
win32外殼擴展
shlobj
針對系統外殼的編程接口,
對資源管理器的某些功能或對象進行擴展
API函數按不同功能被存放在不同的動態鏈接庫文件中,這些動態鏈接庫文件一般是以DLL為擴展名。在上表中,列舉出了編程時較常用的幾大類API函數及其主要功能、庫文件名和對應的Delphi單元。
Delphi調用API函數實例
Delphi中定義了相應單元,給出了所有Win32 API函數的接口。Delphi調用API函數非常簡單,甚至不需要聲明外部引用,只需將使用的單元名放在Uses子句中就可以,其它的工作全部由系統定義的單元完成。下面,我們給出幾個Delphi中使用API函數的實例,幫助大家理解。
1、在“文檔”菜單中添加新項及清空項目
在Windows的開始菜單中有一個文檔菜單,保存了最近處理過的文檔信息,如何增加新項或將其清空呢?我們可以利用API函數SHAddtoRecentDocs()來實現,它定義在Shlobj單元中,使用前要先在Uses中加以說明。下面為處理方法:
uses shlobj;
procedure TForm1.Button1Click(Sender: TObject);
begin
SHAddtoRecentDocs(SHARD_PATH, Pchar(c:mydiraaa.txt)); //增加新的一項
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SHAddtoRecentDocs(SHARD_PATH, nil); //清空文檔菜單
end;
2、使窗口標題欄閃爍
在Windows中,常用窗口標題欄的閃爍來提醒用戶,向你的程序中加入這一功能一定很有意思。API函數Flash Windows( )可以使一個特定的窗口閃動一次,如果將其放在計時器中調用,標題欄閃爍就很容易實現。
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval:=500; //計時器的間隔時間,每500毫秒觸發一次
Timer1.Enabled:=Not Timer1.Enabled; //切換計時器的激活或停止狀態
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
FlashWindow(Form1.Handle,TRUE); //閃爍標題欄
end;
FlashWindows()有兩個參數:第一個參數指明窗口的句柄;第二個參數指定窗口是閃動還是恢復始狀態。這個函數定義在Windows單元中,是Delphi的缺省單元,故不必再用Uses子句進行說明。
3、在程序中播放WAV聲音文件
Windows啟動時那聲嘹亮的號角聲是否讓你感到振奮。OK!讓我們在自己的程序中來實現它。僅僅播放一個WAV聲音文件,當然不需要勞駕MediaPlayer構件,API函數SndPlaySound()就可以很好地完成這一工作。它定義在MMSystem單元中,有兩個參數:第一個指明WAV文件的路徑、文件名;第二個指明播放方式。實例如下:
uses MMSystem;
procedure TForm1.FormCreate(Sender: TObject);
begin
SndPlaySound(c:windowsmedia ada.wav,SND_ASYNC)
end;
API函數數量眾多,在平時的學習使用中不斷積累,加深理解,編程水平一定會有一個大的提高。