在.NET中輕鬆快樂叫用Win32 API

開發.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程式碼中,接著寫一小段程式去叫用它。
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
 
8. OK! That is Very easy,要這樣寫程式才會快樂咩,往後不管連線或是離線,都可以使用Visual Studio開發應用程式時,快速低使用pInvoke.net來查詢出所要設計的API程式法,程式執行後的結果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值