我將從頭開始,我將在跨越多個監視器的應用程序上工作,每個監視器將包含一個WPF窗口,並且這些窗口使用單個viewmodel類進行控制。現在可以說我在200,300(x,y)的所有窗口上都有一個按鈕,我希望這個按鈕應該在同一個窗口中負責工具,而所有其餘部分都負責應用程序。 當我嘗試獲取當前鼠標位置或最後一次點擊位置時,我獲取相對於當前監視器的位置,即在本例中爲200,300,而不管在我處於何種屏幕上。查找監視器/屏幕上存在鼠標指針
以下SRE我嘗試了讓下面的鼠標位置
[DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool GetCursorPos(ref Win32Point pt); [StructLayout(LayoutKind.Sequential)] internal struct Win32Point { public Int32 X; public Int32 Y; }; public static Point GetMousePosition() { Win32Point w32Mouse = new Win32Point(); GetCursorPos(ref w32Mouse); return new Point(w32Mouse.X, w32Mouse.Y); }
Point point = Control.MousePosition;
Mouse.GetPosition(null);
的代碼是應該返回我的屏幕沒有代碼。
private int ConvertMousePointToScreenIndex(System.Windows.Point mousePoint)
{
//first get all the screens
System.Drawing.Rectangle ret;
for (int i = 1; i <= System.Windows.Forms.Screen.AllScreens.Count(); i++)
{
ret = System.Windows.Forms.Screen.AllScreens[i - 1].Bounds;
if (ret.Contains(new System.Drawing.Point((int)mousePoint.X, (int)mousePoint.Y)))
return i - 1;
}
return 0;
}
我總是屏幕0 :( 請幫我在得到合適的值
'Cursor.Position'將返回非相對位置 - (X,Y)... +(X,Y) – 2014-10-16 11:22:23