開發.NET應用程式,整合也是一項重要的設計議題,在這篇文章中,亞當斯要介紹如何快速開發.NET應用程式叫用Win32 API。
基本上,使用Visual Studio開發工具設計.NET應用程式,不管是ASP.NET或是WinForm等,如果要在程式中叫用OS系統所提供的Win32 API,就必須先了解要叫用的是哪一個API,這個API當中又有多少個function (功能) 可使用,但是,開發者不可能將幾千個API所提供的function一個一個背起來,況且每一個function所需要傳遞的參數也不盡相同。 | |
那麼,到底要如何「快速」設計整合Win32 API的應用程式呢?此時,你可能會很直覺的想:「Visual Studio應該直接有提供可以查詢Win32 API的功能吧」,很遺憾的,Visual Studio有提供物件瀏覽器,卻沒有「預設」提供Win32 API瀏覽器,因此,對程式設計師來說,的確在叫用Win32 API時會造成一些困擾。 有鑑於此,首先在這邊介紹一個開發Win32 API非常棒的參考網站:http://www.pinvoke.net/。 | |
在這個網站中,它把所有的 Win32 API分門別類區分出來,那個dll中有哪些function,更重要的是,它有提供.NET叫用這些API的範例程式碼,也就是說你想要叫用哪一個功能,點選之後,網站會顯示出在.NET程式中宣告此Win32 API的方式,以及程式叫用的方法,這樣才能讓開發者快速開發。 | |
舉個例子,假設我現在想要叫用user32.dll中的MessageBox功能,那麼在此網站中查詢的結果如下圖所示,可以得知該如何在.NET中宣告對應的程式: | |
甚至連.NET應用程式如何叫用的範例程式,都有提供,請參考下圖: | |
對開發Win32 API的開發者來說,這網站保證一用就上癮。但亞當斯覺得其實這還不過癮,怎說呢?因為剛剛介紹的前提是必須在連線機制下,才能得到的參考資訊,假設您現在的地方並沒有網路,那麼不就回到原點,躊躇不前了。 | |
別擔心,這個網站有提供貼心的Visual Studio addin的小工具,以下幾個簡單的步驟帶各位來把這小工具裝起來使用: | |
1. 首先,可以在http://www.red-gate.com/pinvoke/download這個網址下載pinvoke.net所提供的 Visual Studio add-in工具。下載完成之後,會看到一個名為pInvoke VS addin.exe的安裝執行檔。 2. 接著針對pInvoke VS addin.exe執行安裝(請注意,安裝過程當中請先將您的Visual Studio關閉,否則可能會發生不預期的錯誤)。 | |
3. 安裝完成之後,開啟Visual Studio開發應用程式時,就可以在選單處看到一個已經安裝完成的「pInvoke.net」選單。 | |
4. 打開一個測試的Winform專案,在撰寫程式碼的表單中,選取「pInvoke.net」選單點選「Insert PInvoke signatures」,以開啟查詢視窗。 5. 假設我們要查詢的是user32.dll這個Win32 API下的MessageBox方法的話,只需直接輸入MessageBox並按下Search即可查到您所想要的API在.NET中的宣告方式。 | |
6. pInvoke.net設計的非常友善,還可以讓你挑選不同的語言唷,以下是挑選C#後的顯示結果。 | |
7. 將pInvoke.net所查詢出來的win32 API程式定義放入我們的.NET程式碼中,接著寫一小段程式去叫用它。 | |
| |
8. OK! That is Very easy,要這樣寫程式才會快樂咩,往後不管連線或是離線,都可以使用Visual Studio開發應用程式時,快速低使用pInvoke.net來查詢出所要設計的API程式法,程式執行後的結果: | |