想用c# 写个游戏脚本,普通的鼠标点击被游戏屏蔽了,网上查到用Winio来做,但是网上给的例子都是键盘输入的,鼠标输入的都不能用,求大神指点一二。

解决方案 »

  1.   

    mouse_event可以实现
    //设置鼠标按键和动作
            [DllImport("user32.dll")]
            static extern void mouse_event(MouseEventFlag flags, int dx, int dy,uint data, UIntPtr extraInfo); //UIntPtr指针多句柄类型
            //将枚举作为位域处理
            [Flags]
            enum MouseEventFlag : uint //设置鼠标动作的键值
            {
                Move = 0x0001,               //发生移动
                LeftDown = 0x0002,           //鼠标按下左键
                LeftUp = 0x0004,             //鼠标松开左键
                RightDown = 0x0008,          //鼠标按下右键
                RightUp = 0x0010,            //鼠标松开右键
                MiddleDown = 0x0020,         //鼠标按下中键
                MiddleUp = 0x0040,           //鼠标松开中键
                XDown = 0x0080,
                XUp = 0x0100,
                Wheel = 0x0800,              //鼠标轮被移动
                VirtualDesk = 0x4000,        //虚拟桌面
                Absolute = 0x8000
            }
            /// <summary>
            /// 屏幕宽
            /// </summary>
            private int px = Screen.PrimaryScreen.Bounds.Width;
            /// <summary>
            /// 屏幕高
            /// </summary>
            private int py = Screen.PrimaryScreen.Bounds.Height;获取当前鼠标X,Y坐标
    int x = MousePosition.X;
                int y= MousePosition.Y;
    移动示例
    mouse_event(MouseEventFlag.Move | MouseEventFlag.Absolute,x *65536 / px, y* 65536 / py, 0, UIntPtr.Zero);当前位置左单击示例
    mouse_event(MouseEventFlag.LeftUp | MouseEventFlag.LeftDown, 0,0,0, UIntPtr.Zero);
      

  2.   

    Winio一样被屏蔽
      

  3.   


     public static void MyMouseDown(VKKey vKeyCoad) {
                    int btScancode = 0;
                    btScancode = MapVirtualKey((byte)vKeyCoad, 0);
                    KBCWait4IBE(); // 'wait for buffer gets empty
                    SetPortVal(KBC_KEY_CMD, (IntPtr)0xD3, 1);// 'send write command
                    KBCWait4IBE();
                    SetPortVal(KBC_KEY_DATA, (IntPtr)(btScancode | 0x80), 1);// 'write in io
                }
                /// Simulate mouse up
                public static void MyMouseUp(VKKey vKeyCoad) {
                    int btScancode = 0;
                    btScancode = MapVirtualKey((byte)vKeyCoad, 0);
                    KBCWait4IBE(); // 'wait for buffer gets empty
                    SetPortVal(KBC_KEY_CMD, (IntPtr)0xD3, 1); //'send write command
                    KBCWait4IBE();
                    SetPortVal(KBC_KEY_DATA, (IntPtr)(btScancode | 0x80), 1);// 'write in io
                }