private void cmdInstallJavascript_Click ( object sender, EventArgs e ) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象, WebBrowser 的 Url 属性已经设置为 "about:blank". IEBrowser ie = new IEBrowser ( this.webBrowser ); // 定义 javascript 脚本, 声明一个 showMessage 函数. string showMessageScript = "function showMessage(message){alert('消息:' + message);}"; // 将脚本安装到 WebBrowser 中. ie.InstallScript ( showMessageScript ); // 执行脚本, 调用 showMessage 函数. ie.ExecuteScript ( "showMessage('哈哈!');" ); // 定义 javascript 脚本, 声明一个 add 函数. string addScript = "function add(num1, num2){return num1 + num2;}"; // 将脚本安装到 WebBrowser 中, id 为 jsAdd. ie.InstallScript ( addScript, "jsAdd" ); // 执行脚本, 调用 add 函数. ie.ExecuteScript ( "showMessage(add(1, 3));" ); // 安装本地 jquery 脚本, 需要生成目录中存在 jquery-1.5.min.js 文件. ie.InstallScript ( new Uri ( Path.Combine ( AppDomain.CurrentDomain.BaseDirectory, @"jquery-1.5.min.js" ) ) ); // 如果从网络位置载入脚本, 可以等待 5 秒钟, 以便脚本载入完毕. // ie.IEFlow.Wait ( 5 ); // 等待脚本载入完毕后, 执行一条 jquery 命令. ie.ExecuteScript ( "showMessage($('*').length);" ); }
private void cmdSub_Click(object sender, EventArgs e) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser(this.webBrowser); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm")); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait(new UrlCondition("wait", "ButtonClick.htm", StringCompareMode.EndWith)); // 根据按钮显示的文本模拟按钮点击. // 方法1: 安装搜索按钮的 javascript 函数 clickButton 来获取按钮并调用其 click 方法. // 安装 clickButton 函数. ie.InstallScript("function clickButton(text){for(var i=0;i<document.all.length;i++){if(document.all[i].value==text){document.all[i].click();break;}}}"); // 调用 clickButton 函数, 模拟点击文本为 Sub 的按钮. ie.InvokeScript("clickButton", new object[] { "Sub" }); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript(Properties.Resources.jquery_1_5_2_min); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery(JQuery.Create("'[value=Sub]:button'").Click( )); }
private void cmdSub_Click ( object sender, EventArgs e ) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate ( Path.Combine ( AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm" ) ); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait ( new UrlCondition ( "wait", "ButtonClick.htm", StringCompareMode.EndWith ) ); // 根据按钮显示的文本模拟按钮点击. // 方法1: 安装搜索按钮的 javascript 函数 clickButton 来获取按钮并调用其 click 方法. // 安装 clickButton 函数. ie.InstallScript ( "function clickButton(text){for(var i=0;i<document.all.length;i++){if(document.all[i].value==text){document.all[i].click();break;}}}" ); // 调用 clickButton 函数, 模拟点击文本为 Sub 的按钮. ie.InvokeScript ( "clickButton", new object[] { "Sub" } ); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace ( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript ( Properties.Resources.jquery_1_5_2_min ); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery ( JQuery.Create ( "'[value=Sub]:button'" ).Click ( ) ); }
private void cmdInstallJavascript_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象, WebBrowser 的 Url 属性已经设置为 "about:blank". IEBrowser ie = new IEBrowser(this.webBrowser); // 定义 javascript 脚本, 声明一个 showMessage 函数. string showMessageScript = "function showMessage(message){alert('消息:' + message);}"; // 将脚本安装到 WebBrowser 中. ie.InstallScript(showMessageScript); // 执行脚本, 调用 showMessage 函数. ie.ExecuteScript("showMessage('哈哈!');"); // 定义 javascript 脚本, 声明一个 add 函数. string addScript = "function add(num1, num2){return num1 + num2;}"; // 将脚本安装到 WebBrowser 中, id 为 jsAdd. ie.InstallScript(addScript, "jsAdd"); // 执行脚本, 调用 add 函数. ie.ExecuteScript("showMessage(add(1, 3));"); // 安装本地 jquery 脚本, 需要生成目录中存在 jquery-1.5.min.js 文件. ie.InstallScript(new Uri(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"jquery-1.5.min.js"))); // 如果从网络位置载入脚本, 可以等待 5 秒钟, 以便脚本载入完毕. // ie.IEFlow.Wait ( 5 ); // 等待脚本载入完毕后, 执行一条 jquery 命令. ie.ExecuteScript("showMessage($('*').length);"); }
private void cmdInvokeJavascript_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象, WebBrowser 的 Url 属性已经设置为 "about:blank". IEBrowser ie = new IEBrowser(this.webBrowser); // 安装定义函数 setName 和 getName 的函数到 WebBrowser. ie.InstallScript("var name;function setName(name){this.name = name;}function getName(){return this.name;}"); // 调用 setName 函数, 参数为 "jack". ie.InvokeScript("setName", new object[] { "jack" }); // 调用 getName 函数, 得到结果并弹出对话框. MessageBox.Show(ie.InvokeScript("getName").ToString( )); }
private void DebugConsole(string info) { Invoke(new MethodInvoker(delegate { try { ie.IEFlow.Wait(new UrlCondition("wait", @"", StringCompareMode.Contain), 1); ie.InstallScript("function _HasReceiver(){ if(window.__receive) return true; return false; }", "runner"); if ("True".Equals(ie.InvokeScript("_HasReceiver").ToString())) { ie.InvokeScript("__receive", new object[] { info }); } } catch (Exception e) { Log(e.Message); } })); }
private void cmdManaged_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser, scripting: new ManagedForScript( )); // 安装跟踪脚本, 执行 jquery 和调用托管代码必需. ie.InstallTrace( ); // 安装本地的 jquery 脚本. ie.InstallScript(Properties.Resources.jquery_1_5_2_min); // 得到搜索框的内容. string key = ie.ExecuteJQuery <string> (JQuery.Create("'[name=q]:text'").Val( )); // 通过 javascript 调用托管的对象 ManagedForScript 的 MakeCondition, 生成新的搜索内容, 其实可以直接调用 MakeCondition, 这里只是演示如何调用托管代码. key = ie.ExecuteManaged <string> ("MakeCondition", parameters: new string[] { "'" + key + "'" }); // 将新的搜索内容填写入搜索框. ie.ExecuteJQuery(JQuery.Create("'[name=q]:text'").Val("'" + key + "'")); }
private void cmdManaged_Click ( object sender, EventArgs e ) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser ( this.webBrowser, scripting: new ManagedForScript ( ) ); // 安装跟踪脚本, 执行 jquery 和调用托管代码必需. ie.InstallTrace ( ); // 安装本地的 jquery 脚本. ie.InstallScript ( Properties.Resources.jquery_1_5_2_min ); // 得到搜索框的内容. string key = ie.ExecuteJQuery<string> ( JQuery.Create ( "'[name=q]:text'" ).Val ( ) ); // 通过 javascript 调用托管的对象 ManagedForScript 的 MakeCondition, 生成新的搜索内容, 其实可以直接调用 MakeCondition, 这里只是演示如何调用托管代码. key = ie.ExecuteManaged<string> ( "MakeCondition", parameters: new string[] { "'" + key + "'" } ); // 将新的搜索内容填写入搜索框. ie.ExecuteJQuery ( JQuery.Create ( "'[name=q]:text'" ).Val ( "'" + key + "'" ) ); }
private void cmdAdd_Click ( object sender, EventArgs e ) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate ( Path.Combine ( AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm" ) ); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait ( new UrlCondition ( "wait", "ButtonClick.htm", StringCompareMode.EndWith ) ); // 模拟具有惟一 id 属性的按钮点击. // 方法1: 执行 javascript 脚本来获取按钮并调用其 click 方法. ie.ExecuteScript ( "document.getElementById('cmdAdd').click();" ); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace ( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript ( Properties.Resources.jquery_1_5_2_min ); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery ( JQuery.Create ( "'#cmdAdd'" ).Click ( ) ); }
private void cmdAdd_Click(object sender, EventArgs e) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser(this.webBrowser); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm")); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait(new UrlCondition("wait", "ButtonClick.htm", StringCompareMode.EndWith)); // 模拟具有惟一 id 属性的按钮点击. // 方法1: 执行 javascript 脚本来获取按钮并调用其 click 方法. ie.ExecuteScript("document.getElementById('cmdAdd').click();"); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript(Properties.Resources.jquery_1_5_2_min); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery(JQuery.Create("'#cmdAdd'").Click( )); }
private void mywebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) { for (int i = 0; i < listWeb.Count; i++) { #region 用IEBrowser方法执行JS IEBrowser ie = new IEBrowser(this.webBrowser1); ie.InstallTrace(); string js = "function myfn(tit,sou,con){" + "document.getElementById('InforReport1_txtTitle').value=tit;" + "document.getElementById('InforReport1_txtInfoFrom').value=sou;" + "editor.html(con);" + "" + "}"; ie.InstallScript(js); webBrowser1.Document.InvokeScript("myfn", new string[] { listWeb[i].Title, listWeb[i].Site, listWeb[i].Content }); HtmlElement WebSumbit = webBrowser1.Document.All["InforReport1_btn"]; WebSumbit.InvokeMember("Click"); //更改lab显示 labwebNum(i + 1); Thread.Sleep(2000); //标记已上报 mf.DS.upsend.FindByTitle(listWeb[i].Title).WebSend = "已报送"; //重新加载listview mf.WaitSendFmReload(); #endregion } } }
//http://www.sufeinet.com/forum.php?mod=viewthread&tid=6976&extra=page%3D1&page=1& private void btnlogin_Click(object sender, EventArgs e) { string loginUrl = "http://219.142.64.12/login.aspx"; IEBrowser ie = new IEBrowser(webBrowser1); ie.Navigate(loginUrl); ie.IEFlow.Wait(new UrlCondition("wait", loginUrl, zoyobar.shared.panzer.StringCompareMode.StartWith)); MainCookie Cc = new MainCookie(); string str = MainCookie.GetCookies(loginUrl); //获取得到的cookie string[] strs = str.Split(';'); //将cookie字符串处理成Cookie对象 for (int i = 0; i < strs.Length; i++) { try { Cookie ck = new Cookie(); ck.Name = strs[i].Split('=')[0].Trim(); ck.Value = strs[i].Split('=')[1].Trim(); ck.Domain = webBrowser1.Document.Domain; mf.cc.Add(ck); //这里的cc 是CookieContainer,这里我定义到了主窗体中。 如果处理成CookieCollection 也可,方法是一样的.这样自己构造一个cookie集合,. } catch { } } //由于构造静态变量,变量被申明以后是存在共享空间中,直到整个程序结束才被释放,所以拿来传递窗体间的值再合适不过.也不用写繁琐的委托.当然如果你明白该怎样处理委托,那么可以任选一种方法.. MainCookie.Cc = mf.cc; MainCookie.Cookie = str; //既然已经得到了cookie,那么就做你想做的事情去吧... // this.Dispose(); // MessageBox.Show(str.ToString());//这个截取后4位可以得到验证码。不用自己手动识别了,呵呵~~~ //截取文本后四位 HtmlElement name = webBrowser1.Document.GetElementById("UserLogin2_txtEmailName"); HtmlElement pwd = webBrowser1.Document.GetElementById("UserLogin2_txtPassword"); HtmlElement CheckCode = webBrowser1.Document.GetElementById("UserLogin2_txtDatabase"); HtmlElement subm = webBrowser1.Document.GetElementById("UserLogin2_ImgCmdLogin"); name.Focus(); name.SetAttribute("value", "*****@*****.**"); pwd.Focus(); pwd.SetAttribute("value", "770716"); CheckCode.Focus(); CheckCode.SetAttribute("value", str.Substring(str.Length - 4)); subm.Focus(); subm.SetAttribute("onclick", "javascript:return true;"); //todo:验证码变了,也要变 ie.InstallTrace(); string js = "function CheckData(){return true;}"; ie.InstallScript(js); webBrowser1.Document.InvokeScript("Passfn"); subm.InvokeMember("click"); // MessageBox.Show(str.ToString()); //此处用图象识别功能吧! //todo:web登录信息保存了xml以后更改 //string code = webBrowser1.Document.Cookie; //if (!string.IsNullOrEmpty(code)) //{ // //填入验证框 // HtmlElement chekcode = webBrowser1.Document.GetElementById("UserLogin2_txtDatabase"); // chekcode.Focus(); // chekcode.SetAttribute("value", code.Substring(66, 4)); // //模拟提交 // HtmlElement subm = webBrowser1.Document.GetElementById("UserLogin2_ImgCmdLogin"); // subm.Focus(); // subm.InvokeMember("click"); //} }
private void cmdInvokeJavascript_Click ( object sender, EventArgs e ) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象, WebBrowser 的 Url 属性已经设置为 "about:blank". IEBrowser ie = new IEBrowser ( this.webBrowser ); // 安装定义函数 setName 和 getName 的函数到 WebBrowser. ie.InstallScript ( "var name;function setName(name){this.name = name;}function getName(){return this.name;}" ); // 调用 setName 函数, 参数为 "jack". ie.InvokeScript ( "setName", new object[] { "jack" } ); // 调用 getName 函数, 得到结果并弹出对话框. MessageBox.Show ( ie.InvokeScript ( "getName" ).ToString ( ) ); }
public static void Discuz ( IEBrowser ie, string userName, string password, string url, string title, string content ) { // 导航到页面 dz 论坛的页面. ie.Navigate ( url ); // 等待 10 秒钟, 以便页面载入完毕. ie.IEFlow.Wait ( 10 ); // 安装资源中的 jquery 脚本. ie.InstallJQuery ( Properties.Resources.jquery_1_5_2_min ); // 解除 jquery 的 $ 定义, 但仍然可以只用 jQuery 定义. ie.ExecuteJQuery ( JQuery.Create ( false, true ).NoConflict ( ) ); // 安装 javascript 函数 clickLink, 根据超链接的文本点击超链接. ie.InstallScript ( "function clickLink(text) {" + " links = document.getElementsByTagName('a');" + " for(var index = 0; index < links.length; index++)" + " {" + " if(links[index].innerText == text)" + " {" + " links[index].click();" + " break;" + " }" + " }" + "}" ); // 是否存在已经登录后显示的短消息. if ( ie.ExecuteJQuery<int> ( JQuery.Create ( "'#pm_ntc'", false ).Length ( ) ) == 1 ) { // 调用 javascript 函数 clickLink, 模拟点击退出链接. ie.InvokeScript ( "clickLink", new object[] { "退出" } ); // 等待 3 秒钟, 以便退出完毕. ie.IEFlow.Wait ( 3 ); // 重新调用自身. Discuz ( ie, userName, password, url, title, content ); return; } // 设置用户名. ie.ExecuteJQuery ( JQuery.Create ( "'#ls_username'", false ).Val ( "'"+userName+"'" ) ); // 设置密码. ie.ExecuteJQuery ( JQuery.Create ( "'#ls_password'", false ).Val ( "'"+password+"'" ) ); // 密码框获得焦点. ie.ExecuteJQuery ( JQuery.Create ( "'#ls_password'", false ).Focus ( ) ); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait ( 5 ); // 获取验证码并显示给用户输入. FormVCode vCodeWindow = new FormVCode ( ); vCodeWindow.Image = ie.CopyImage ( "'vcodeimg1'" ); // 用户是否确认. if ( vCodeWindow.ShowDialog ( ) == DialogResult.OK ) { // 验证码框获得焦点. ie.ExecuteJQuery ( JQuery.Create ( "'#vcodetext_header1'", false ).Focus ( ) ); // 填写验证码并多加 1. ie.ExecuteJQuery ( JQuery.Create ( "'#vcodetext_header1'", false ).Val ( "'" + vCodeWindow.VCode + "1'" ) ); // 模拟一个退格键, 删除掉 1. SendKeys.Send ( "{Backspace}" ); // 等待 2 秒. ie.IEFlow.Wait ( 2 ); // 登录框提交. ie.ExecuteJQuery ( JQuery.Create ( "'#lsform'", false ).Submit() ); // 等待 5 秒, 以便登录完成. ie.IEFlow.Wait ( 5 ); // 是否是验证码错误. if ( ie.ExecuteJQuery<int> ( JQuery.Create ( "'p:contains(验证码错误)'", false ).Length ( ) ) == 1 ) { // 验证码错误重新登录. Discuz ( ie, userName, password, url, title, content ); return; } TOPIC: // 随机导航至某一话题. ie.Navigate ( "http://nt.discuz.net/showtopic-" + new Random ( ).Next ( 11000, 18000 ).ToString() + ".html" ); // 等待 5 秒, 以便页面完成. ie.IEFlow.Wait ( 5 ); // 安装 jquery 脚本的一系列操作. ie.InstallJQuery ( Properties.Resources.jquery_1_5_2_min ); ie.ExecuteJQuery ( JQuery.Create ( false, true ).NoConflict ( ) ); // 话题不存在则重新选择. if ( ie.ExecuteJQuery<int> ( JQuery.Create ( "'p:contains(该主题不存在)'", false ).Length ( ) ) == 1 ) goto TOPIC; // 切换源码编辑方式. ie.InvokeScript ( "clickLink", new object[] { "Code" } ); // 填写内容. ie.ExecuteJQuery ( JQuery.Create ( "'#quickpostmessage'", false ).Val ( "'" + content + "'" ) ); // 验证码框获得焦点. ie.ExecuteJQuery ( JQuery.Create ( "'#vcodetext1'", false ).Focus ( ) ); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait ( 3 ); // 获取验证码并显示给用户输入. vCodeWindow = new FormVCode ( ); vCodeWindow.Image = ie.CopyImage ( "'vcodeimg1'" ); // 用户是否确认. if ( vCodeWindow.DialogResult == DialogResult.OK ) { // 填写验证码并多加1. ie.ExecuteJQuery ( JQuery.Create ( "'#vcodetext1'", false ).Val ( "'" + vCodeWindow.VCode + "1'" ) ); // 模拟一个退格键, 删除掉 1. SendKeys.Send ( "{Backspace}" ); // 等待 2 秒. ie.IEFlow.Wait ( 3 ); // 提交. ie.ExecuteJQuery ( JQuery.Create ( "'#quickpostsubmit'", false ).Click ( ) ); } else { Discuz ( ie, userName, password, url, title, content ); return; } } else { Discuz ( ie, userName, password, url, title, content ); return; } }
public static void Discuz(IEBrowser ie, string userName, string password, string url, string title, string content) { // 导航到页面 dz 论坛的页面. ie.Navigate(url); // 等待 10 秒钟, 以便页面载入完毕. ie.IEFlow.Wait(10); // 安装资源中的 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 解除 jquery 的 $ 定义, 但仍然可以只用 jQuery 定义. ie.ExecuteJQuery(JQuery.Create(false, true).NoConflict( )); // 安装 javascript 函数 clickLink, 根据超链接的文本点击超链接. ie.InstallScript( "function clickLink(text) {" + " links = document.getElementsByTagName('a');"+ " for(var index = 0; index < links.length; index++)"+ " {"+ " if(links[index].innerText == text)"+ " {"+ " links[index].click();"+ " break;"+ " }"+ " }"+ "}" ); // 是否存在已经登录后显示的短消息. if (ie.ExecuteJQuery <int> (JQuery.Create("'#pm_ntc'", false).Length( )) == 1) { // 调用 javascript 函数 clickLink, 模拟点击退出链接. ie.InvokeScript("clickLink", new object[] { "退出" }); // 等待 3 秒钟, 以便退出完毕. ie.IEFlow.Wait(3); // 重新调用自身. Discuz(ie, userName, password, url, title, content); return; } // 设置用户名. ie.ExecuteJQuery(JQuery.Create("'#ls_username'", false).Val("'" + userName + "'")); // 设置密码. ie.ExecuteJQuery(JQuery.Create("'#ls_password'", false).Val("'" + password + "'")); // 密码框获得焦点. ie.ExecuteJQuery(JQuery.Create("'#ls_password'", false).Focus( )); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait(5); // 获取验证码并显示给用户输入. FormVCode vCodeWindow = new FormVCode( ); vCodeWindow.Image = ie.CopyImage("'vcodeimg1'"); // 用户是否确认. if (vCodeWindow.ShowDialog( ) == DialogResult.OK) { // 验证码框获得焦点. ie.ExecuteJQuery(JQuery.Create("'#vcodetext_header1'", false).Focus( )); // 填写验证码并多加 1. ie.ExecuteJQuery(JQuery.Create("'#vcodetext_header1'", false).Val("'" + vCodeWindow.VCode + "1'")); // 模拟一个退格键, 删除掉 1. SendKeys.Send("{Backspace}"); // 等待 2 秒. ie.IEFlow.Wait(2); // 登录框提交. ie.ExecuteJQuery(JQuery.Create("'#lsform'", false).Submit()); // 等待 5 秒, 以便登录完成. ie.IEFlow.Wait(5); // 是否是验证码错误. if (ie.ExecuteJQuery <int> (JQuery.Create("'p:contains(验证码错误)'", false).Length( )) == 1) { // 验证码错误重新登录. Discuz(ie, userName, password, url, title, content); return; } TOPIC: // 随机导航至某一话题. ie.Navigate("http://nt.discuz.net/showtopic-" + new Random( ).Next(11000, 18000).ToString() + ".html"); // 等待 5 秒, 以便页面完成. ie.IEFlow.Wait(5); // 安装 jquery 脚本的一系列操作. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); ie.ExecuteJQuery(JQuery.Create(false, true).NoConflict( )); // 话题不存在则重新选择. if (ie.ExecuteJQuery <int> (JQuery.Create("'p:contains(该主题不存在)'", false).Length( )) == 1) { goto TOPIC; } // 切换源码编辑方式. ie.InvokeScript("clickLink", new object[] { "Code" }); // 填写内容. ie.ExecuteJQuery(JQuery.Create("'#quickpostmessage'", false).Val("'" + content + "'")); // 验证码框获得焦点. ie.ExecuteJQuery(JQuery.Create("'#vcodetext1'", false).Focus( )); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait(3); // 获取验证码并显示给用户输入. vCodeWindow = new FormVCode( ); vCodeWindow.Image = ie.CopyImage("'vcodeimg1'"); // 用户是否确认. if (vCodeWindow.DialogResult == DialogResult.OK) { // 填写验证码并多加1. ie.ExecuteJQuery(JQuery.Create("'#vcodetext1'", false).Val("'" + vCodeWindow.VCode + "1'")); // 模拟一个退格键, 删除掉 1. SendKeys.Send("{Backspace}"); // 等待 2 秒. ie.IEFlow.Wait(3); // 提交. ie.ExecuteJQuery(JQuery.Create("'#quickpostsubmit'", false).Click( )); } else { Discuz(ie, userName, password, url, title, content); return; } } else { Discuz(ie, userName, password, url, title, content); return; } }