gpt4 book ai didi

c# - 查找鼠标指针所在的监视器/屏幕

转载 作者:行者123 更新时间:2023-11-30 13:12:55 27 4
gpt4 key购买 nike

我将从头开始,我正在开发一个跨越多个监视器的应用程序,每个监视器将包含一个 WPF 窗口,并且这些窗口使用一个 View 模型类进行控制。现在假设我在 200,300 (x,y) 处的所有窗口上都有一个按钮,我希望该按钮负责同一窗口上的一个工具,而其余的则负责应用程序。当我尝试获取当前鼠标位置或上次单击位置时,我会获取相对于当前显示器的位置,即在本例中为 200,300,无论我在哪个屏幕上。

按照我尝试获取鼠标位置的代码

  1. [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);
    }
  2. Point point = Control.MousePosition;

  3. 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 :(请帮助我获得适当的值(value)

最佳答案

你可以使用 Screen 静态类吗?

例如,像这样的东西:

Screen s = Screen.FromPoint(Cursor.Position);

或者使用以下方法从特定表单获取当前屏幕:

Screen s = Screen.FromControl(this);

this 作为您的表单控件。

http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.aspx

关于c# - 查找鼠标指针所在的监视器/屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26402955/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com