当前位置: 首页 > news >正文

淘宝客不做网站可以做么网络规划设计师 最高分

淘宝客不做网站可以做么,网络规划设计师 最高分,google代理,个人做免费的网站引言 这两天沉迷了Google SketchUp#xff0c;刚刚玩够#xff0c;一时兴起#xff0c;研究了一下WebBrowser。 我在《WebBrowser控件使用技巧分享》一文中曾谈到过“我现在可以通过WebBrowser实现对各种Html元素的操控#xff0c;唯独无法控制Html的上传控件”#xff0c…引言 这两天沉迷了Google SketchUp刚刚玩够一时兴起研究了一下WebBrowser。 我在《WebBrowser控件使用技巧分享》一文中曾谈到过“我现在可以通过WebBrowser实现对各种Html元素的操控唯独无法控制Html的上传控件”出于安全原因IE没有对上传控件提供操控支持这使得我们没法像控制其他控件一样用简单的代码进行赋值。 比较实际的解决方案就是模拟操作了下面我就将演示通过键盘、鼠标两种方式模拟点击“浏览”按钮然后配合键盘模拟输入文件路径并按回车键确认。 初始环境 测试使用了一个简单的HTML页面页中各个位置中分布了一些文件上传控件有些是直接放置的有些是横向排列的有些是嵌套在表格中的用以测试不同位置的触发效果   将此页面用WebBrowser控件加载。 在程序界面中我放置了一些控件用于选择上传文件所在目录测试时首先选定一个包含有文件的目录然后从中随机抽选一个文件填写到上传控件中 并在代码中建立了一个辅助方法用以读取页面上所有的文件上传控件在测试时也是从中随机抽取一个进行操控 ListHtmlElement 读取上传控件() {     var l new ListHtmlElement();     foreach (HtmlElement f in webBrowser1.Document.GetElementsByTagName(input))     {         if (f.GetAttribute(type) file)         {             l.Add(f);         }     }     return l; } 在类中定义了一个Random类型成员变量用于生成随机数 Random R new Random(); 此外还定义了一系列方法用于在点击按钮后延迟3秒以等待文件浏览对话框打开然后模拟输入文件路径再模拟输入回车键确定 void 延迟操作对话框(string 填写文件路径) {     button1.Enabled button2.Enabled button3.Enabled false;     BackgroundWorker b new BackgroundWorker();     b.RunWorkerCompleted new RunWorkerCompletedEventHandler(b_RunWorkerCompleted);     b.DoWork new DoWorkEventHandler(b_DoWork);     b.RunWorkerAsync(填写文件路径); }   void b_DoWork(object sender, DoWorkEventArgs e) {     Thread.Sleep(3000);     e.Result e.Argument; }   void b_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {     SendKeys.Send(e.Result as string);     SendKeys.Send({Enter});     button1.Enabled button2.Enabled button3.Enabled true; } 这里就是通过使用BackgroundWorker组件在后台延迟3秒延迟结束后在回调事件中进行操作。 键盘模拟方式 先看录制的动画 在这里首先选择了一个上传文件所在目录然后进行了几次键盘模拟操作测试。 键盘模拟的操作流程如下 首先激活WebBrowser控件 然后让文件上传控件获取焦点这时光标会处于文件上传控件左侧的文本框内 模拟输入Tab键切换焦点到“浏览..”按钮 模拟输入空格键点击该按钮 然后就是延迟3秒等待文件选取对话框显示模拟输入文件路径并模拟输入回车键即可 主要代码如下 private void button1_Click(object sender, EventArgs e) {     var l 读取上传控件();     var s Directory.GetFiles(folderBrowserDialog1.SelectedPath);     键盘操作(l[R.Next(l.Count)], s[R.Next(s.Length)]); }   void 键盘操作(HtmlElement 元素, string 填写文件路径) {     webBrowser1.Select();     webBrowser1.Focus();     元素.Focus();     SendKeys.Send({Tab});     SendKeys.Send( );     延迟操作对话框(填写文件路径); } 鼠标模拟方式 还是先看录制的动画 鼠标模拟的主要流程是 首先递归计算页面中的文件上传控件相对于页面左上角的坐标位置 接着再递归计算WebBrowser控件相对于屏幕左上角的位置 在将位置值加上控件自身宽度及高度并辅以修正值以确保鼠标能够点到按钮上面 移动鼠标到计算好的位置处 单击鼠标 然后也是延迟3秒等待文件选取对话框显示模拟输入文件路径并模拟输入回车键 递归计算页面元素相对于页面坐上角位置的函数 Point 计算坐标(HtmlElement 元素, Point 起始坐标) {     var p 起始坐标;     p.Offset(元素.OffsetRectangle.Location);     return 元素.OffsetParent null ? p : 计算坐标(元素.OffsetParent, p); } 递归计算控件相对于屏幕左上角位置的函数 private Point 计算坐标(Control 控件, Point 起始坐标) {     var p 起始坐标;     p.Offset(控件.Location);     return 控件.Parent null ? p : 计算坐标(控件.Parent, p); } 此外为了模拟鼠标移动和点击还需要引入Windows API [DllImport(User32)] public extern static void SetCursorPos(int x, int y);   [DllImport(user32.dll)] static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, int extraInfo);   [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 } 主要代码如下 private void button2_Click(object sender, EventArgs e) {     var l 读取上传控件();     var s Directory.GetFiles(folderBrowserDialog1.SelectedPath);     鼠标操作(l[R.Next(l.Count)], s[R.Next(s.Length)]); }   void 鼠标操作(HtmlElement 元素, string 填写文件路径) {     var p 计算坐标(元素, new Point());     p 计算坐标(webBrowser1, p);     p.Offset(元素.OffsetRectangle.Width - 5, 元素.OffsetRectangle.Height 15);     SetCursorPos(p.X, p.Y);     mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, 0);     延迟操作对话框(填写文件路径); } 总结 两种方法中推荐使用键盘模拟方法简单而直接鼠标模拟方法需要使用到API还需要精确计算并且如果页面带有滚动条且滚动条进行了滚动或文件上传控件处于可视区之外的话将无法通过上述方法计算和操控而其优点仅仅是直观一些而已。   下载本文的示例源代码http://www.uushare.com/user/icesee/file/1869210 下载本文的XPS版本http://www.uushare.com/user/icesee/file/1869213转载于:https://www.cnblogs.com/SkyD/archive/2009/08/06/1540021.html
http://www.pierceye.com/news/923808/

相关文章:

  • 个人网站包含哪些内容昆明建企业网站多少钱
  • 摄影作品共享网站开发背景企业互联网服务平台
  • 伍佰亿网站建设礼品回收网站建设
  • 优秀的wordpress涉及seo关键词排名网络公司
  • 徐州免费建站wordpress 宣布停止
  • 黑龙江建设人员证件查询网站北京广告公司地址
  • 建设网站的流程泰安房产网二手房出售
  • 网站开发工具总结互联网营销是做什么
  • 长沙营销型网站开发简单免费模板
  • 东营远见网站建设公司聊城网站建设服务好
  • 品牌网站建设j小蝌蚪j网站管理建设的总结
  • 怎么做直播网站刷弹幕外链发布软件
  • 网站建站合同淘宝运营跟做网站哪种工资高
  • 网站建设导向百度秒收录
  • 海南省建设执业资格管理中心网站跨境电商资讯网
  • 天河公司网站建设公司编程是什么课程内容
  • 南宁门户网站有哪些不利于优化网站的因素
  • 鄱阳做网站来个黑黑的网站
  • wordpress 4 漏洞深圳专门做seo的公司
  • wordpress网站防伪查询模板东坑网站建设公司
  • 做网站的应用高端网站建站公司
  • 遵义网站开发制作公司服装外贸是做什么的
  • 国外网站 服务器网络营销是什么专业的
  • 微官网与网站的区别网站建设及网络推广
  • 百度推广官方网站登录入口一个人制作网站
  • 重庆市建设公共资源交易中心网站首页当地人做导游的旅游网站
  • 北京网站建设收费龙溪网站制作
  • 佛山小企业网站建设郑州做网站销售怎么样
  • 招考网站开发如何创建一个自己的网页
  • 做网站一般链接什么数据库wordpress 504错误