2010-06-24 93 views
3

我知道如何使用User32 SendInput方法來激發點擊,並且我需要的是類似的User32方法,但要獲取當前的鼠標按鈕狀態。如何使用Win32/User32庫檢查當前的鼠標按鈕狀態?

類似的東西來:

public static extern bool GetCursorPos(ref System.Drawing.Point lpPoint);

功能GetCursorPos給我的當前光標位置。我需要的是左鍵狀態(如果它被點擊或沒有)。有這樣的功能嗎?

+0

[檢查鼠標LButton是否已關閉]可能的重複(http://stackoverflow.com/questions/1275894/check-if-mouse-lbutton-is-down) – ST3 2013-09-16 12:27:10

回答

3

有一個名爲GetAsyncKeyState的方法。該方法的簽名如下:

[DllImport("user32.dll")] public static extern short GetAsyncKeyState(UInt16 virtualKeyCode);

然後你只需把它通過鼠標左鍵代碼(VK_LBUTTON = 0×01),和您去。

更多信息請直接從MSDN

+2

「然後你簡單地稱它爲傳遞左邊鼠標鍵碼(VK_LBUTTON = 0x01),然後離開。「 這真是讓人誤解。您必須分手並分析返回的短片以創建狀態數據。這使得這個問題的答案有些不完整。 – 2015-06-16 14:37:10

3

使用GetAsyncKeyState,引用MSDN:

的GetAsyncKeyState函數工作 用鼠標按鈕。但是,它會檢查 上的物理鼠標 按鈕的狀態,而不是物理按鈕 映射到的邏輯鼠標 按鈕。例如,呼叫 GetAsyncKeyState(VK_LBUTTON)總是 返回鼠標左鍵物理狀態 ,不管它是否將 映射到左或右邏輯 鼠標按鈕。通過調用 GetSystemMetrics(SM_SWAPBUTTON),您可以確定系統的物理 鼠標按鈕到邏輯鼠標按鈕 的當前映射。