读书人

webbrowsers中模拟鼠标键盘事件复制不

发布时间: 2012-12-18 12:43:41 作者: rapoo

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也没看到类似的问题。

读书人网 >C#

热点推荐