Esempio n. 1
0
		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 ( ) );
		}
Esempio n. 4
0
        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);");
        }
Esempio n. 5
0
        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( ));
        }
Esempio n. 6
0
 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( ));
        }
Esempio n. 11
0
        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
                }
            }
        }
Esempio n. 12
0
        //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");
            //}
        }
Esempio n. 13
0
		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 ( ) );
		}
Esempio n. 14
0
		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;
			}

		}
Esempio n. 15
0
        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;
            }
        }