微軟軟體開發技術二十年回顧之API

iDotNetSpace發表於2008-09-11
隨著Windows作業系統開始佔據主導地位,開發Windows平臺下的應用程式成為人們的需要。當然,這也為傳統的DOS程式設計師提供了一種新的程式設計方法—一種不受裝置限制並由事件驅動的程式設計方法。另一方面,Windows GUI的開發迫使傳統的DOS程式設計師的程式設計方法發生了變化。當時,大多數DOS軟體以過程方式編寫,即一個函式呼叫另一個函式,主程式始終處於控制之下,而事件驅動的程式設計模式使得程式放棄它們的全部控制權,等待外部事件發生並對外部事件作出響應,以便將它們的函式全部提供給終端使用者。結果是,今天的Win32(當然包括早期的Win16)GUI程式的結構仍然與1987年時的結構相同。圖1展示了Windows GUI應用程式的基本結構。

微軟軟體開發技術二十年回顧之API
1.Windows GUI應用程式的基本結構。
    

  其中,每一個程式都包含一個進入點、主視窗建立、一個訊息迴圈和主視窗撤消。此外,都有一個函式與主視窗過程相關聯,稱為視窗過程,它包含用於處理系統事件和應用事件(如鍵盤輸入、滑鼠移動和點選、定時器報警、選單選擇和按鈕點選)的程式碼。

  在Windows程式設計初期,Windows程式設計師所能使用的程式設計工具唯有API(應用程式程式設計介面)函式,這些函式是Windows提供給應用程式與作業系統的介面,它們猶如“積木塊”一樣,可以搭建出各種介面豐富功能靈活的應用程式。所以,可以認為API函式是構築整個Windows框架的基石,在它的下面是Windows的作業系統核心,而它的上面則是各種功能的Windows應用程式。當時,因為缺乏良好的Windows程式設計平臺,程式設計師想編寫具有Windows風格的軟體,必須藉助API,API也因此而被賦予至高無上的地位。相應地,程式設計師還必須熟記一大堆常用的API函式,而且還得對Windows作業系統有深入的瞭解。

  隨著軟體技術的不斷髮展,在Windows平臺上很快出現了很多優秀的視覺化程式設計環境(諸如VB、VC ++、DELPHI等),程式設計師可以採用“即見即所得”的程式設計方式來開發具有精美使用者介面和功能強大的應用程式。但實際上,要真正開發出更靈活、更實用、更具效率的應用程式,必然要涉及到直接的API函式呼叫;對於比較複雜和特殊的功能來說,使用類庫和控制元件往往難以實現,這時就需要採用API函式來實現。

  【提示】關於鉤子技術

  Windows作業系統是建立在事件驅動機制之上的,系統各部分之間的溝通也都是通過訊息的相互傳遞而實現的。但在通常情況下,應用程式只能處理來自程式內部的訊息或是從其他程式發過來的訊息,如果需要對在程式外傳遞的訊息進行攔截處理就必須採取一種被稱為HOOK(鉤子)的技術。鉤子是Windows作業系統中非常重要的一種系統介面,用它可以輕鬆截獲並處理在其他應用程式之間傳遞的訊息,並由此可以完成一些普通應用程式難以實現的特殊功能。鉤子的本質是一段用以處理系統訊息的程式,通過系統呼叫,將其掛入到系統。值得注意的是,鉤子技術成為許多種Windows軟體的核心技術,例如螢幕抓詞、垃圾郵件過濾、軟體介面高階定製等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-442871/,如需轉載,請註明出處,否則將追究法律責任。

相關文章