首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 模拟鼠标 键盘 的有关问题

2013-08-01 
C# 模拟鼠标 键盘 的问题最近想偷懒 批量下载一些东西用C#启动一个软件 然后模拟鼠标单击里边的新建按钮,

C# 模拟鼠标 键盘 的问题
最近想偷懒 批量下载一些东西  用C#启动一个软件 然后模拟鼠标单击里边的新建按钮,我的思路是:那个软件启动后在屏幕上的位置是固定的,我得到那个按钮的坐标,然后把鼠标移动到上边 模拟单击。以下是我写的,但是好像只是定位成功了,单击没有效果。
  请问各位前辈,这是因为窗口句柄的问题?  是因为当前的单击是作用于正在运行的Form1,根本没有操作我启动的那个软件?可是我启动那个软件之后,它就在最前端了啊?
  以下是我已经写得,如果前辈要调试可以用QQ作替换
        using System.Runtime.InteropServices;

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

        [DllImport("user32.dll")]
        static extern void mouse_event(MouseEventFlag flags,int dx, int dy, uint data, UIntPtr extraInfo);

        [DllImport("user32.dll")]
        protected static extern IntPtr FindWindow(char[] lpClassName, char[] lpWindowName);

        [DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        public static extern bool SetForegroundWindow(IntPtr hwnd);


        

        [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


        }

   
       private void button1_Click(object sender, EventArgs e)
        {
            Process executeTask = new Process();
            executeTask.StartInfo.FileName = "D:\\硕鼠\\nano.exe";
            executeTask.Start();
            
            int x, y;
            x = 882;
            y = 216;
            SetCursorPos(x, y);
            mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
            mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);

            
        }
[解决办法]
mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);

热点排行