自從進入職場工作後,除了使用C#之外還會用到一些Win32 API來做一些事情,像是程式之間的溝通或是Listen System Event等等,但是有用過Win32 API就知道,這是開放給C/C++使用,但是C#也不是不能用,只是需要一些轉換,而本篇會以PostMessage這個API為例來介紹Pinvoke這個網頁。
- 這邊看到的是MSDN中所會出現的API介紹,我們在這邊將”PostMessage”這個API名稱複製下來
C++
1
2
3
4
5
6BOOL PostMessageA(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
- 透過 Pinvoke 中左邊的地方查詢,就可以得到中間轉換C#可以使用的程式碼了。
C#
1
2
3[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool PostMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);