2015-06-26 137 views
5

正如標題中所述,我一直在試圖通過使用Cursor.Position = new Point(58, 128);然後按住鼠標左鍵(向下)我試圖滾動到另一個方向(隨機方向)。例如,如果我要前往Google地球並將光標位置設置爲0,0,則光標將在地圖上滾動。如果任何人都可以幫忙,我一定會很感激。如何設置鼠標光標在X,Y座標,單擊鼠標左鍵並滾動左,右,上,下

感謝

解決方案:floatas,再次感謝您迴應這篇文章。我昨天和今天都在努力解決這個問題,並最終讓它工作。我會發布我的代碼,希望能夠幫助其他人。

+0

你能不能工作在更高,更語義層次?即使用[UI自動化框架](https://msdn.microsoft.com/en-us/library/ms747327(v = vs.110).aspx)或公開的API? –

+0

@JordanMiller請求者,不要編輯一個問題把答案放在裏面。如有必要,發佈自己的答案,然後驗證它。不要更新標題。 –

+0

@jordan在繼續使用SO之前,請先閱讀[faq]。這是*不是*論壇和規則完全不同。如果你想回答自己的問題,然後發佈答案。答案旁邊的複選標記用於選擇幫助您解決問題的答案。 – dandan78

回答

1

首先您需要導入一些功能。

要改變光標位置:

[DllImport("user32.dll", EntryPoint = "SetCursorPos")] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    public static extern bool SetCursorPos(
     [In] int X, 
     [In] int Y); 

要模擬鼠標事件:

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 
public static extern void mouse_event(
    [In] uint dwFlags, 
    [In] uint dx, 
    [In] uint dy, 
    [In] int dwData, 
    [In] uint dwExtraInfo); 

可能的鼠標事件:

public enum MouseEvents 
{ 
    MOUSEEVENTF_LEFTDOWN = 0x02, 
    MOUSEEVENTF_LEFTUP = 0x04, 
    MOUSEEVENTF_RIGHTDOWN = 0x08, 
    MOUSEEVENTF_RIGHTUP = 0x10, 
    MOUSEEVENTF_WHEEL = 0x0800, 
} 

您可以發送按下鼠標和鼠標了,模擬點擊:

mouse_event((uint)MouseEvents.MOUSEEVENTF_LEFTDOWN | (uint)MouseEvents.MOUSEEVENTF_LEFTUP, X, Y, 0, 0); 

沒有測試這一點,但應該按下鼠標,拖動和釋放:

mouse_event((uint)MouseEvents.MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0); 
SetCursorPos((int)X+10, (int)Y+10); 
mouse_event((uint)MouseEvents.MOUSEEVENTF_LEFTUP, X+10, Y+10, 0, 0); 
相關問題