日期:2014-05-18  浏览次数:20865 次

模拟鼠标点击问题 C#
我想做个 C#程序 
程序运行时 
自动 点击某网页的 固定坐标

50分求详细代码

------解决方案--------------------
mouse_event 
更方法的是使用WebBrowser控件

------解决方案--------------------
up
------解决方案--------------------
使用WebBrowser控件,在里面容易搞点
------解决方案--------------------
C# code

[DllImport("user32.dll")]
        private static extern void mouse_event
        (
        UInt32 dwFlags, // motion and click options
        UInt32 dx, // horizontal position or change
        UInt32 dy, // vertical position or change
        UInt32 dwData, // wheel movement
        IntPtr dwExtraInfo // application-defined information
        );

private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
        private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;



        public void Click()
        {
            m_Browser.Visible = true;
            
            Point pp = new Point(CurrentTask.X, CurrentTask.Y);

            Point screenPoint = m_MainForm.PointToScreen(pp);
            screenPoint.X += m_Browser.Left;
            screenPoint.Y += m_Browser.Top;

            Cursor.Position = screenPoint;

            mouse_event(MOUSEEVENTF_LEFTDOWN, (UInt32)pp.X, (UInt32)pp.Y, 0, new IntPtr());

            for (int i = 0; i < 19; i++)
            {
                Thread.Sleep(20);
                Application.DoEvents();
            }

            mouse_event(MOUSEEVENTF_LEFTUP, (UInt32)pp.X, (UInt32)pp.Y, 0, new IntPtr());

            m_Browser.Visible = false;
            m_State = ClickerState.Clicked;

            m_CurrentTask = null;
            
            Thread.Sleep(100);
            
            //The element the browser clicked is not a link
            if(m_State != ClickerState.Navigating)
            {
                m_State = ClickerState.WaitingTask;
                Navigate(m_Manager.GetTask());
            }
        }

------解决方案--------------------
探讨
m_Browser是什么啊 在哪定义的
m_State 是什么 在哪定义的
m_CurrentTask 是什么 在哪定义
m_Manager 是什么 在哪定义


------解决方案--------------------
最好是在WebBrowser中实现,比你模拟鼠标点击强的多!
------解决方案--------------------
探讨
哦~~
那 我怎么接受网页呢

我想实现在网页中电击一下

大侠多费费心  我初学

------解决方案--------------------
只是刷票吗?
------解决方案--------------------
当运行 Windows 窗体时,它将创建新窗体,然后该窗体等待处理事件。该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。在代码处理事件时,应用程序并不响应。例如,当将另一窗口拖到该窗口前面时,该窗口不重新绘制。

如果在代码中调用 DoEvents,则您的应用程序可以处理其他事件。例如,如果您有向 ListBox 添加数据的窗体,并将 DoEvents 添加到代码中,那么当将另一窗口拖到您的窗体上时,该窗体将重新绘制。如果从代码中移除 DoEvents,那么在按钮的单击事件处理程序执行结束以前,您的窗体不会重新绘制。

与 Visual Basic 6.0 不同,DoEvents 方法不调用 Thread.Sleep 方法。

通常,您在循环中使用该方法来处理消息。

------解决方案--------------------
不知道你点的啥,如果是按钮的话,在WebBrowser中要比你模拟按键方便的多!
------解决方案--------------------
探讨
16楼的大哥
这段话我看过了。。
可是我不懂啊

我用Application.DoEvents();


可是并没有出现新窗体
能不能在详细点

------解决方案--------------------
1.用Hook捕捉到鼠标点击
2.用GetCursorPos获鼠标点击时的坐标
3.用SetCursorPos设置鼠标的坐标
4.用mouse_event模拟鼠标点击
------解决方案--------------------