如何在 C# 中的控制台应用程序中设置鼠标光标的位置?

Posted

技术标签:

【中文标题】如何在 C# 中的控制台应用程序中设置鼠标光标的位置?【英文标题】:How do I set the position of the mouse cursor from a Console app in C#? 【发布时间】:2011-10-06 16:10:10 【问题描述】:

我找到了很多关于如何在 C# windows forms 项目中设置鼠标位置的文章 - 我想在控制台应用程序中执行此操作。如何在 C# windows console 应用程序中设置绝对鼠标位置?

谢谢!

提示:不是Console.setCursorPosition,只是设置文本光标在控制台中的位置。

【问题讨论】:

为什么您的控制台应用程序需要设置 Windows 鼠标光标的位置?至少可以说,这是一种非常不寻常的情况。 @Cody 公平地说,很少次您应该控制鼠标 - 即使它是 Windows 应用程序也会很奇怪 :) 既然你有解决方案,你能用更多的代码分享它吗?我正在尝试做同样的事情,但我对 C# 不是很有经验 【参考方案1】:

这是一个旧线程,但为了完成它可以这样做......

use System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern bool SetCursorPos(int X, int Y);

然后在方法中您希望的任何位置,例如

  SetCursorPos(500, 500);

【讨论】:

【参考方案2】:

在您的控制台应用程序中,添加对 System.Windows.Forms.dll 的引用并使用您读过的其他技术。控制台与 Windows exe 的选择仅影响 PE 标头(可能是默认代码模板,但您可以轻松破解);您仍然可以在控制台 exe 中使用完整的框架。

您要控制的鼠标在窗口中,而不是控制台中。

【讨论】:

【参考方案3】:

您可以简单地分配给Cursor.Position

但是,在控制台应用程序中,您需要添加对 WinForms 程序集的引用,因为默认情况下控制台应用程序项目不包含对 WinForms 的引用。

您需要添加System.Windows.FormsSystem.Drawing,后者才能访问Point 类。

【讨论】:

请注意,这仅在您首先向控制台应用程序添加对 System.Windows.Forms 库的引用时才有效。 (话又说回来,控制台应用程序不应该首先弄乱 Windows 光标......) 哦,我明白了。编辑:C# 没有找到 System.Windows.Forms。 @Cody 好吧,我想当然地认为任何使用 System.Windows.Forms 中的东西的人都会添加对它的引用! 这个问题一开始是说他找到了很多关于如何从WinForms应用程序执行此操作的文章,但不知道如何从控制台应用程序执行此操作。我已经学会了不要把这里的任何事情视为理所当然...... 首先从文件浏览器窗口添加一个引用,然后你可以在你的主类中使用 System.Windows.Forms【参考方案4】:

修复了 Chaz unswer 中的小错误:

using System.Runtime.InteropServices;


namespace ConsoleImageWorker

    public static class Mouse
    

        [DllImport("user32.dll")]
        static extern bool SetCursorPos(int X, int Y);

        public static void SetCursorPosition(int x, int y)
        
            SetCursorPos(x, y);
        
    

之后,您可以在任何课程中调用:

Mouse.SetCursorPosition(100, 100);

【讨论】:

以上是关于如何在 C# 中的控制台应用程序中设置鼠标光标的位置?的主要内容,如果未能解决你的问题,请参考以下文章

在 Win32 控制台应用程序中设置光标位置

苹果系统如何设置鼠标指针的大小?

Qt 应用程序的默认鼠标图标

翻转mxcsr寄存器中的位

如何在 Gtk3 可选标签中设置光标颜色?

如何在 ipad 中使用 jquery 加载页面后在文本框中设置光标