我当前正在创建一个非常小的应用程序,这使我无法在Minecraft服务器上被踢。它的工作方式是每x秒钟来回移动鼠标一次。 即使从技术上讲它可以正常工作,但是当我在Minecraft中时,它也不会移动我的鼠标。如果光标实际上是可见的,它只会移动我的鼠标。在游戏中时,光标处于隐藏状态,因此无法正常工作。 实际使用以下命令移动鼠标即时通讯
:Point location = new Point(System.Windows.Forms.Cursor.Position.X+moveAmount, System.Windows.Forms.Cursor.Position.Y);
System.Windows.Forms.Cursor.Position = location;
有人知道吗,为什么它在Minecraft中不起作用,我该如何解决?
我在stackoverflow上找到了这个问题,但那还是行不通的:
[DllImport("user32.dll")]
static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
private const int MOUSEEVENTF_MOVE = 0x0001;
public static void Move(int xDelta, int yDelta)
{
mouse_event(MOUSEEVENTF_MOVE, xDelta, yDelta, 0, 0);
}
答案 0 :(得分:0)
好吧,我实际上设法做到了。 经过研究并尝试了许多不同的方法,这是有效的:
[Flags]
public enum MouseEventFlags {
LeftDown = 0x00000002,
LeftUp = 0x00000004,
MiddleDown = 0x00000020,
MiddleUp = 0x00000040,
Move = 0x00000001,
Absolute = 0x00008000,
RightDown = 0x00000008,
RightUp = 0x00000010
}
[DllImport("user32.dll")]
private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
public static void MouseEvent(MouseEventFlags value, MousePoint position2) {
MousePoint position = position2;
mouse_event
((int)value,
position.X,
position.Y,
0,
0)
;
}
[StructLayout(LayoutKind.Sequential)]
public struct MousePoint {
public int X;
public int Y;
public MousePoint(int x, int y) {
X = x;
Y = y;
}
}
如何调用方法:
MouseEvent(MouseEventFlags.Move, new MousePoint { X = 100, Y = 100 });