2009年11月11日 星期三

在.NET中輕鬆快樂叫用Win32 API –2 (.NET easy Call API - 2)

在上一篇文章中,亞當斯介紹使用.NET Call API可以透過http://www.pinvoke.net/ 網站所提供的資訊快速設計,對開發Win32 API的開發者來說,這網站保證一用就上癮。

但亞當斯覺得其實這還不過癮,怎說呢?因為在 .NET中輕鬆快樂叫用Win32 API –1 介紹的前提是必須在連線機制下,才能得到的參考資訊,假設您現在的地方並沒有網路,那麼不就回到原點,躊躇不前了。

別擔心,這個網站有提供貼心的Visual Studio addin的小工具,以下幾個簡單的步驟帶各位來把這小工具裝起來使用:

1. 首先,可以在http://www.red-gate.com/pinvoke/download這個網址下載pinvoke.net所提供的Visual Studio add-in工具。下載完成之後,會看到一個名為pInvoke VS addin.exe的安裝執行檔。(PS:目前這版本只支援到Visual Studio 2005,根據亞當斯實際測試Visual Studio 2008無法Work)

2. 接著針對pInvoke VS addin.exe執行安裝(請注意,安裝過程當中請先將您的Visual Studio關閉,否則可能會發生不預期的錯誤)。

clip_image002

3. 安裝完成之後,開啟Visual Studio開發應用程式時,就可以在選單處看到一個已經安裝完成的「pInvoke.net」選單。

clip_image004

4. 打開一個測試的Winform專案,在撰寫程式碼的表單中,選取「pInvoke.net」選單à點選「Insert PInvoke signatures」,以開啟查詢視窗。

假設我們要查詢的是user32.dll這個Win32 API下的MessageBox方法的話,只需直接輸入MessageBox並按下Search即可查到您所想要的API在.NET中的宣告方式。

clip_image002[1]

1. pInvoke.net設計的非常友善,還可以讓你挑選不同的語言唷,以下是挑選C#後的顯示結果。

clip_image004[1]

2. 將pInvoke.net所查詢出來的win32 API程式定義放入我們的.NET程式碼中,接著寫一小段程式去叫用它。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

MessageBox(New IntPtr(0), "Text", "Caption", Convert.ToUInt32(MessageBoxButtons.OK))

End Sub

3. OK! That is Very easy,要這樣寫程式才會快樂咩,往後不管連線或是離線,都可以使用Visual Studio開發應用程式時,快速低使用pInvoke.net來查詢出所要設計的API程式法,程式執行後的結果:

clip_image006

沒有留言: