限制

當一個程式在執行的時都需要一個環境,而這樣的環境卻也是程式在執行時的一個限制。比方說,我們要在Word中開發並增加其功能,這時候我們就必須依照windows的環境所規範的限制。所以說,我們在開發任何程式時,必須去遵循環境限制,並在這個限制下完成我們要的擴增功能。

那要如何完成這件事呢?我們必須先瞭解兩件事情,首先,我們要完成的是一個視窗程式,所以要先瞭解在Windows環境下面,如何去做程式開發。第二,我們要增加的是Word的擴增系統,因此要也要瞭解如何在Word下面去做程式開發。

那先來聊聊第一件事情,也就是Windows的環境。一般來說Windows的環境就是一個視窗的環境。而視窗的環境中,我們可以使用的輸入裝置即是滑鼠跟鍵盤。那要如何讓鍵盤與系統去做溝通呢?先來看看這件事,系統最底層有一個Driver,而這個Driver主要負責接收輸出入裝置所產生的事件,例如:使用者鍵盤打的字、滑鼠移動的方向或距離。當Driver接收到這些事件時,會再去和系統中的kernel溝通,因此,kernel便接收使用了那些輸出入裝置,及輸出入了那些事件。再回到開發Windows的程式時。首先必須要先跟Windows註冊,註冊後,我們即進入一個迴圈。在這個環圈內,系統會隨時記錄,看看目前有什麼樣的輸出入。所以,只要在有註冊的Windows系統內,只要是屬於我們的事件,Windows就會傳遞給我們看。這時候你可能會想問,要怎麼確定顯示出的事件是屬於我的呢?我們可以用視窗是否Active來判斷,及目前focus的視窗本身是否為Active。當Windows判斷是Active時,即會回傳此時的鍵盤或滑鼠的事件給我們。

第二件事情則是,Word的限制。Word本身已是一個應用程式了,因此,若要在這個應用程式內再加入擴充功能時,這時候我們就會進入這個系統內的另外一個小迴圈。在這個迴圈中,系統會去詢問及了解目前有哪些功能是屬於Active的狀態,並傳遞相關事件給我們。

在進行系統開發時,不管事增添Windows還是Word的 add in,Windows其實都有一些規範。早期,Windows的規範主要是採用MFC的架構,他是一個OLE的架構。OLE的架構是一個物件在這個物件中可以去提供一些function,經過使用者註冊之後,系統會偵測function再告知使用者。而在新的技術中,Windows主要推行的是dotnet作為Windows平台溝通的主要介面。因此,Word 本身就將其sdk以dotnet這種形式當作發布,下面將會簡介何謂以sdk當作發佈。

Last updated