zoukankan      html  css  js  c++  java
  • C# 使用Win32 API模拟键盘鼠标操作网页

    在webbrowser控件中的document complete 事件中设置链接到自身

            private void ieFrame_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                foreach (HtmlElement link in ieFrame.Document.Links)
                {
                    link.SetAttribute("target", "_self");
                }

                foreach (HtmlElement form in ieFrame.Document.Forms)
                {
                    form.SetAttribute("target", "_self");
                }
            }

    使用下面封装完的函数模拟操作即可

    #region 系统API申明区域
            [DllImport("user32.dll")]
            public static extern bool SetCursorPos(int x, int y);

            [Flags]
            public enum MouseEventFlag : uint
            {
                ABSOLUTE = 0x8000,
                MOVE = 0x0001,
                LEFTDOWN = 0x0002,
                LEFTUP = 0x0004,
                RIGHTDOWN = 0x0008,
                RIGHTUP = 0x0010,
                MIDDLEDOWN = 0x0020,
                MIDDLEUP = 0x0020,
                XDOWN = 0x0080,
                XUP = 0x0100,
                WHEEL = 0x0800,
                HWHEEL = 0x01000,
                VIRTUALDESK = 0x4000
            }

            [DllImport("user32.dll")]
            public static extern bool mouse_event(MouseEventFlag dwFlags, int dx, int dy, uint cButton, UIntPtr dwExtraInfo);

            [DllImport("user32.dll")]
            public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, UIntPtr dwExtraInfo);
            /// <summary>
            /// 模拟按左键
            /// </summary>
            /// <param name="x"></param>
            /// <param name="y"></param>
            public void LeftClick(int x, int y)
            {
                Point p = Control.MousePosition;
                SetCursorPos(x, y);
                mouse_event(MouseEventFlag.LEFTDOWN, 0, 0, 0, UIntPtr.Zero);
                mouse_event(MouseEventFlag.LEFTUP, 0, 0, 0, UIntPtr.Zero);
                SetCursorPos(p.X, p.Y);
            }
            /// <summary>
            /// 模拟键盘操作
            /// </summary>
            /// <param name="k"></param>
            public void PressKey(Keys k)
            {
                keybd_event((byte)k, 0, 0, UIntPtr.Zero);
                keybd_event((byte)k, 0, 0x2, UIntPtr.Zero);
            }
            #endregion

  • 相关阅读:
    PHP输出中文乱码的问题(转)
    phpmyadmin导出数据库为什么是php文件
    phpmyadmin登陆提示#2002 无法登录 MySQL 服务器和设置自增
    phpMyAdmin配置及 错误 缺少 mysqli 扩展。请检查 PHP 配置
    利用eclipse开发php<转>
    apache 2.4 You don't have permission to access / on this server
    (转)如果“打开方式”里面没有想要的打开方式,怎样创建一种文件打开方式?
    (转)安装 Apache 出现 <OS 10013> 以一种访问权限不允许的方式做了一个访问套接字的尝试
    关于ISAPI和CGI限制,这个要设为允许
    Sqlserver数据库日志太大如何快速删除
  • 原文地址:https://www.cnblogs.com/soundcode/p/12523905.html
Copyright © 2011-2022 走看看