0%

Pinvoke 介紹

自從進入職場工作後,除了使用C#之外還會用到一些Win32 API來做一些事情,像是程式之間的溝通或是Listen System Event等等,但是有用過Win32 API就知道,這是開放給C/C++使用,但是C#也不是不能用,只是需要一些轉換,而本篇會以PostMessage這個API為例來介紹Pinvoke這個網頁。

  • 這邊看到的是MSDN中所會出現的API介紹,我們在這邊將”PostMessage”這個API名稱複製下來

    C++

    1
    2
    3
    4
    5
    6
    BOOL 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);