2011-05-23 115 views
0

我需要跟蹤鼠標位置。雖然我嘗試了幾種方法來做到這一點,但如果鼠標位於另一臺顯示器上,我無法跟隨/捕捉位置。Mutil監視器鼠標跟蹤

[DllImport("user32.dll")] 
    public static extern bool GetCursorPos(ref Point pt); 

    [DllImport("user32.dll")] 
    public static extern bool GetCursorInfo(out CURSORINFO pci); 

    public void GetPosition(out int X, out int Y) 
    { 
     Point pt = new Point(0, 0); 
     X = Y = 0; 

     if (MouseMonitor.GetCursorPos(ref pt)) 
     { 
      X = pt.X; 
      Y = pt.Y; 
     } 

這個工程,但只在一個屏幕上。我也讀過,我可能會嘗試GetCursorInfo。我已經嘗試過這一點,但總是會回來。 [DllImport(「user32.dll」)] public static extern bool GetCursorInfo(out CURSORINFO pci);

有什麼建議嗎?我的目標是追蹤鼠標位置(在我自己的應用程序之外),無論它在哪個屏幕上。

回答

0

示例代碼工作對我來說我的雙顯示器系統上...

您可以實際使用.NET Framework簡化事情不少:在System.Windows.Forms.Cursor類有一個靜態的位置屬性。

例如,我創建了一個新的Windows Forms項目,然後將一個System.Windows.Forms.Timer拖到窗體上。我Enabled屬性設置爲true,並添加該代碼Tick事件:

this.Text = string.Format("{0}, {1}", Cursor.Position.X, Cursor.Position.Y); 

然的項目和它的工作如預期在我的兩個顯示器...

+0

非常感謝您的建議。 – Jeff 2011-05-23 17:41:45

+0

此代碼是否提供了改進?如果不是,你能否提供關於光標跟蹤在另一臺監視器上不起作用的更多具體信息? – 2011-05-23 19:32:29