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

webbrowsers中模拟鼠标键盘事件复制不成功,该怎么处理

2012-12-18 
webbrowsers中模拟鼠标键盘事件复制不成功想在webbrowsers中通过自动点击鼠标或者模拟键盘输入复制选定的

webbrowsers中模拟鼠标键盘事件复制不成功
想在webbrowsers中通过自动点击鼠标或者模拟键盘输入复制选定的内容,然后通过系统剪切板读出所需要的文本数据。
鼠标点击跟键盘模拟组合键都测试过,执行了,可是系统剪切板就是没有内容。
尝试过直接手动按CTRL+C/右键+左键点击复制(代替模拟输入),则能够读到系统剪切板的数据。
求帮助,代码在下面。

        /// <summary>
        /// 鼠标选取指定区域后copy
        /// </summary>
        /// <param name="first">起始位置</param>
        /// <param name="second">结束位置</param>
        /// <returns>copy结果</returns>
        static internal string GetClipboardInfo(string first, string second)
        {
            string result = "";
            SetCursorPos(Convert.ToInt32(first.Split('|')[0]), Convert.ToInt32(first.Split('|')[1]));  //取需要的区域开始的坐标
            mouse_event(0x0002, 0, 0, 0, 0);//按下鼠标左键
            SetCursorPos(Convert.ToInt32(second.Split('|')[0]), Convert.ToInt32(second.Split('|')[1]));//取需要的区域结束的坐标
            mouse_event(0x0004, 0, 0, 0, 0);//放开鼠标左键
            System.Threading.Thread.Sleep(5000);  //为了调试方便
            //keybd_event(0x1d, 0, 0, 0);
            //keybd_event(0x2e, 0, 0, 0);
            //keybd_event(0x2e, 0, 2, 0);
            //keybd_event(0x1d, 0, 2, 0);
            SetCursorPos(172, 128);     //把鼠标移到选中文本上
            keybd_event(17, 0, 0, 0);  //按下ctrl
            keybd_event(67, 0, 0, 0);  //按下C
            keybd_event(67, 0, 2, 0);  //放开C
            keybd_event(17, 0, 2, 0);  //放开ctrl
            mouse_event(0x0008, 0, 0, 0, 0);//按下右键
            mouse_event(0x0010, 0, 0, 0, 0);//放开右键
            System.Threading.Thread.Sleep(5000);
            SetCursorPos(225, 259);//鼠标移动到复制选项上
            mouse_event(0x0002, 0, 0, 0, 0);//按下左键
            mouse_event(0x0004, 0, 0, 0, 0);//放开左键
            //SendKeys.SendWait("^c");
            System.Threading.Thread.Sleep(5000);


            result = Clipboard.GetData(DataFormats.Text).ToString();  //读剪切板
            return result;
        }


[解决办法]
求帮助啊,感觉脑子打结了。

我用键盘模拟CTRL+A,webbrowsers里面的文本确实全选了,证明模拟点击的方法执行了,可是到了CTRL+C之后,就是死活没有在系统剪切板里找到东西。是我哪里设置没正确么?
webbrowsers.WebBrowserShortcutsEnabled我也设置了true,实在想不到其他的原因了,google也没看到类似的问题。

热点排行