[DllImport("user32.dll")]
static extern int GetSystemMetrics(int nIndex);
這裡僅需要知道這個函式寫在哪個dll,以及傳入傳出的參數形態就可以
簡單的形態轉換可以參考Managed and Un-Managed Code in .NET
在這邊有幾個可以注意的地方
第一個是可以做函式名稱的轉換(為了統一命名規則之類的原因)
[DllImport("user32.dll") EntryPoint="GetSystemMetrics")]
static extern int gsm(int nIndex);
依照這樣的寫法就可以用一個gsm的函式呼叫原本在User32中叫做GetSystemMetrics的函式
另一個是如果回傳是BOOLEAN的型別,則需要用MarshalAs來轉換,例如
BOOLEAN BoolFunction();
就需要寫成
[DllImport("a.dll")]
[return: MarshalAs(UnmanagedType.U1)]
static bool BoolFunction();
--
參考資料
請以 MarshalAs 標記布林 P/Invoke 引數
指定進入點
Managed and Un-Managed Code in .NET
UnmanagedType 列舉型別
沒有留言:
張貼留言