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

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

谢谢!

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

【问题讨论】:

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

标签: c# console-application cursor-position mouse-position


【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-13
        • 1970-01-01
        • 1970-01-01
        • 2013-09-22
        • 2020-05-11
        • 1970-01-01
        相关资源
        最近更新 更多