日期:2014-05-17  浏览次数:20957 次

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