2019/08/18

【Unity】呼叫WinAPI的GetCursorPos例子

雖然Unity的語法是以C#為基礎編程,但沒有提供完整的C#功能,要實現某些功能的時候還是要繞過Unity本身的C#,通過呼叫WinAPI的方式。
這裡我們紀錄一下如何使用GetCursorPos以及SetCursorPos這兩個函式。

//首先要使用這個命名空間才能辨識DllImport
using System.Runtime.InteropServices;

[DllImport("User32.Dll")]
public static extern long SetCursorPos(int x, int y);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetCursorPos(out POINT lpPoint);

//由於Unity中處理座標都是以3維方式儲存,我們要重新定義一個struct才能儲存GetCursorPos回傳的2D座標
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;

public POINT(int x, int y)
{
this.X = x;
this.Y = y;
}
}

//使用例子
POINT cursorPos;
GetCursorPos(out cursorPos);

沒有留言: