我正在开发一个控制鼠标的项目,在下面的代码中,我有点迷失。
我声明了对象所需的命名空间:
using System.Windows;
using System.Windows.Forms;
using System.Drawing;
并在此处的代码中:
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);
Cursor.Clip = new Rectangle(this.Location, this.Size);
它告诉我Cursor在上下文中不存在,但只在this.Cursor
中存在。同样适用于this.Loc
和this.Size
。谁知道为什么?我错过了名称空间吗?
编辑:确切代码:
public class MouseMove
{
[DllImport("user32.dll")] //TODO add block feature on screens that need it
private static extern bool BlockInput(bool block);
public static void Main()
{
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);
Cursor.Clip = new Rectangle(this.Location, this.Size);
}
}
答案 0 :(得分:1)
Position和Clip是Cursor
的静态属性。您无法使用实例访问它们。要使用静态变量,您需要使用以下语法:classname.variablename
。在您的情况下,代码应类似于:
static void Main(string[] args)
{
Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);
Cursor.Clip = new Rectangle(location, size);
}
正如我所考虑的那样,您从MSDN中获取了一个示例,但在示例中有一个WinForm应用程序,其表单具有游标 - this.Cursor
。
在Cursor.Position
行Cursor
上是一个类名,而不是一个实例。
private void MoveCursor()
{
//here Cursor is a form's property
this.Cursor = new Cursor(Cursor.Current.Handle);
// here Cursor is a class name, Position is a static variable.
Cursor.Position = new Point(Cursor.Position.X - 50, Cursor.Position.Y - 50);
// here Cursor is a class name, Clip is a static variable.
Cursor.Clip = new Rectangle(this.Location, this.Size);
}
答案 1 :(得分:1)
您正在做的是用自己替换系统的光标......
我建议这样的事情:
public static void Main()
{
Cursor myCursor = new Cursor(Cursor.Current.Handle);
myCursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);
myCursor.Clip = new Rectangle(this.Location, this.Size);
}
这样安全。但即便如此,我也不确定你要做什么......