none
關於[DllImport]的應用 RRS feed

  • 問題

  • 最近看到這個東西

    到底是在做什麼的呢?

    看了幾個網上範例 ,舉一個:

     [DllImport("User32.dll", CharSet=CharSet.Unicode)] 
     public static extern int MessageBox(int h, string m, string c, int type); 
    


    這樣就可以印出String

    MessageBox(0, String, "MessageBox", 0); 

    那這樣跟我直接用  MessageBox.Show(String);

    這兩者有什麼差別呢????

    謝謝!!

    2013年12月3日 上午 09:08

解答

  • 這是引用Windows 系統中內建API的作法,在電腦中的系統資料夾底下有許多的DLL檔,那部分的DLL檔是Windows 提供的API可以在我們撰寫程式時引用近來使用,譬如可以透過這些API來控制滑鼠、模擬鍵盤、尋找視窗、幫助電腦鎖定、幫助電腦鎖定...等,使用的範圍相當廣泛,這可以讓我們寫程式時省去許多時間自訂方法來達成某個目的,因為WIN API已經幫我們做好這些副程式了,我們只需要利用DllImport將外部的DLL引入進來,就可以直接使用這些DLL內已經寫好的副程式,來幫我們完成許多事。

    Windows API 請參閱:http://zh.wikipedia.org/wiki/Windows_API

     
    2013年12月4日 上午 04:05
  • 那個是呼叫 Win32 API 的作法。

    一般來說,如果 .NET Framework 內有就不需要再呼叫,只有在 .NET Framework 中沒有的才要用。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2013年12月3日 上午 09:11
    版主
  • 詳述平台叫用

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年12月3日 下午 01:11
    版主
  • 功能上沒有差別, 但.NET平台有的功能就不需要再呼叫Windows的功能, 否則不但沒有好處, 而且您的程式不但必須在有安裝.NET平台的電腦執行, .NET平台的底層還必須是Windows作業系統

    2013年12月5日 上午 09:29

所有回覆

  • 那個是呼叫 Win32 API 的作法。

    一般來說,如果 .NET Framework 內有就不需要再呼叫,只有在 .NET Framework 中沒有的才要用。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2013年12月3日 上午 09:11
    版主
  • 詳述平台叫用

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年12月3日 下午 01:11
    版主
  • 這是引用Windows 系統中內建API的作法,在電腦中的系統資料夾底下有許多的DLL檔,那部分的DLL檔是Windows 提供的API可以在我們撰寫程式時引用近來使用,譬如可以透過這些API來控制滑鼠、模擬鍵盤、尋找視窗、幫助電腦鎖定、幫助電腦鎖定...等,使用的範圍相當廣泛,這可以讓我們寫程式時省去許多時間自訂方法來達成某個目的,因為WIN API已經幫我們做好這些副程式了,我們只需要利用DllImport將外部的DLL引入進來,就可以直接使用這些DLL內已經寫好的副程式,來幫我們完成許多事。

    Windows API 請參閱:http://zh.wikipedia.org/wiki/Windows_API

     
    2013年12月4日 上午 04:05
  • 功能上沒有差別, 但.NET平台有的功能就不需要再呼叫Windows的功能, 否則不但沒有好處, 而且您的程式不但必須在有安裝.NET平台的電腦執行, .NET平台的底層還必須是Windows作業系統

    2013年12月5日 上午 09:29