Ejemplo n.º 1
0
        private void cmdSearch_Click(object sender, EventArgs e)
        {
            string keyWord = this.txtKeyWord.Text.Trim( );

            if (keyWord == string.Empty)
            {
                this.lblInfo.Text = "请填写关键字";
                return;
            }

            this.isStop = false;

            this.cmdSearch.Enabled = false;
            this.cmdStop.Enabled   = true;
            this.cmdSpider.Enabled = false;

            this.txtKeyWord.Enabled       = false;
            this.numericPageCount.Enabled = false;

            this.results.Clear( );
            this.listPage.Items.Clear( );

            this.currentPageIndex = 1;
            (this.searchState.StartActions[0] as ExecuteJQueryAction).JQuery = JQuery.Create("'input[name=q]'").Val(string.Format("'{0}'", keyWord));
            this.ie.IEFlow.JumpToState(loadGoogleStateName);
        }
        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( ));
        }
Ejemplo n.º 3
0
        private void cmd163Blog_Click(object sender, EventArgs e)
        {
            // 从当前的 WebBrowser 控件创建 IEBrowser 对象.
            IEBrowser ie = new IEBrowser(this.webBrowser);

            // 此处修改为您的 163 博客地址.
            ie.Navigate("http://<163 博客地址>");
            ie.IEFlow.Wait(3);

            // 安装 jquery 脚本.
            ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min);

            // 弹出登录框.
            ie.ExecuteJQuery(JQuery.Create("'a:contains(登录)'").Attr("'id'", "'denglu'"));
            ie.ExecuteScript("document.getElementById('denglu').click();");

            // 填写用户信息并登录.
            ie.ExecuteJQuery(JQuery.Create("'.ztxt:text'").Val("'<用户名>'"));
            ie.ExecuteJQuery(JQuery.Create("'.ztxt:password'").Val("'<密码>'"));
            ie.ExecuteJQuery(JQuery.Create("'.wbtnok:button'").Attr("'id'", "'dl'"));
            ie.ExecuteScript("document.getElementById('dl').click();");
            ie.IEFlow.Wait(5);

            // 安装 jquery 脚本.
            ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min);

            // 跳转到日志页面.
            ie.ExecuteJQuery(JQuery.Create("'a:contains(日志)' ").Attr("'id'", "'rz'"));
            ie.ExecuteScript("document.getElementById('rz').click();");
            ie.IEFlow.Wait(5);

            // 安装 jquery 脚本.
            ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min);

            // 跳转到编辑日志页面.
            ie.ExecuteJQuery(JQuery.Create("'a:contains(写日志)' ").Attr("'id'", "'xrz'"));
            ie.ExecuteScript("document.getElementById('xrz').click();");
            ie.IEFlow.Wait(5);

            // 安装 jquery 脚本.
            ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min);

            // 填写日志内容.
            ie.ExecuteJQuery(JQuery.Create("'.ztag:text'").Val("'<标题>'"));
            ie.ExecuteJQuery(JQuery.Create("'#ne-auto-id-source'").Trigger("'click'"));

            ie.ExecuteJQuery(JQuery.Create("'textarea.ztag'").Val(string.Format("'{0}'", IEBrowser.EscapeCharacter("<日志 html 代码>"))));

            ie.ExecuteJQuery(JQuery.Create("'#ne-auto-id-source'").Trigger("'click'"));

            ie.ExecuteScript("document.getElementById('key-093402170-autotag').click();");
            ie.IEFlow.Wait(5);

            // 发布日志.
            ie.ExecuteJQuery(JQuery.Create("'.fc09:button'").Attr("'id'", "'fb'"));
            ie.ExecuteScript("document.getElementById('fb').click();");
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 从 Ajax 设置创建一个 JQuery 实例, 如果设置中的请求地址为空, 则返回 null.
        /// </summary>
        /// <param name="setting">Ajax 相关设置.</param>
        /// <returns>JQuery 实例.</returns>
        public static JQuery Create(AjaxSetting setting)
        {
            if (string.IsNullOrEmpty(setting.Url))
            {
                return(null);
            }

            string quote;

            if (setting.IsSingleQuote)
            {
                quote = "'";
            }
            else
            {
                quote = "\"";
            }

            string data;
            bool   isWebService = !string.IsNullOrEmpty(setting.MethodName);

            if (!string.IsNullOrEmpty(setting.Data))
            {
                data = setting.Data;
            }
            else if (string.IsNullOrEmpty(setting.Form))
            {
                data = makeParameterExpression(setting.Parameters, isWebService, quote);
            }
            else
            {
                data = JQuery.Create(setting.Form, false).Serialize( ).Code;
            }

            string map = string.Format("url: {0}{1}{0}, dataType: {0}{2}{0}, data: {3}, type: {0}{4}{0}",
                                       quote,
                                       setting.Url + (isWebService ? "/" + setting.MethodName : string.Empty),
                                       setting.DataType,
                                       data,
                                       setting.Type
                                       );

            if (!string.IsNullOrEmpty(setting.ContentType))
            {
                map += string.Format(", contentType: {0}{1}{0}", quote, setting.ContentType);
            }

            foreach (Event @event in setting.SettingHelper.Events)
            {
                if (@event.Type != EventType.none && @event.Type != EventType.__init && !string.IsNullOrEmpty(@event.Value))
                {
                    map += ", " + @event.Type + ": " + @event.Value;
                }
            }

            return(JQuery.Create(false, false).Ajax("{" + map + "}"));
        }
Ejemplo n.º 5
0
        //工作流程
        private void SignAll()
        {
            //IEBrowser
            IEBrowser ie = new IEBrowser(wb);

            //JQUERY统计链接数
            ie.InstallJQuery(JQuery.CodeMin);
            ie.ExecuteJQuery(JQuery.Create("'a'"), "__jBs");
            int fav_count = ie.ExecuteJQuery <int>(JQuery.Create("__jBs").Length());

            //将我喜欢的吧放到List
            List <string> fav_bar = new List <string>();

            for (int index = 0; index < fav_count; index++)
            {
                ie.ExecuteJQuery(JQuery.Create("__jBs").Eq(index.ToString()), "__jB");
                string fav_text = ie.ExecuteJQuery <string>(JQuery.Create("__jB").Text());
                if (fav_text != "发言记录" && fav_text != "贴吧" && fav_text != "百度")
                {
                    string fav_url = "http://wapp.baidu.com/m?kw=" + UrlEncode(fav_text);
                    fav_bar.Add(fav_url);
                }
            }

            //历遍每个吧,查找签到的链接URL,打开。
            int num = 0;

            foreach (string bar_url in fav_bar)
            {
                num++;
                tips.Text = "签到进度:" + num + "/" + fav_bar.Count;

                ie.Navigate(bar_url);
                ie.IEFlow.Wait(new UrlCondition("wait", bar_url, StringCompareMode.StartWith), 10);

                ie.InstallJQuery(JQuery.CodeMin);
                ie.ExecuteJQuery(JQuery.Create("'a'"), "__jCs");
                int sign_count = ie.ExecuteJQuery <int>(JQuery.Create("__jCs").Length());
                for (int index = 0; index < sign_count; index++)
                {
                    ie.ExecuteJQuery(JQuery.Create("__jCs").Eq(index.ToString()), "__jC");
                    string sign_text = ie.ExecuteJQuery <string>(JQuery.Create("__jC").Text());
                    string sign_url  = "http://wapp.baidu.com" + ie.ExecuteJQuery <string>(JQuery.Create("__jC").Attr("'href'"));

                    if (sign_text == "签到")
                    {
                        ie.Navigate(sign_url);
                        ie.IEFlow.Wait(new UrlCondition("wait", sign_url, StringCompareMode.StartWith));
                    }
                }
            }
            if (num != 0)
            {
                Environment.Exit(0);
            }
        }
Ejemplo n.º 6
0
        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 + "'"));
        }
Ejemplo n.º 7
0
        private void cmdNoConflict_Click(object sender, EventArgs e)
        {
            // 从当前的 WebBrowser 控件创建 IEBrowser 对象.
            IEBrowser ie = new IEBrowser(this.webBrowser);

            // 导航到页面 http://nt.discuz.net/, 此页面中已经定义了 $, 将和 jquery 的 $ 冲突.
            ie.Navigate("http://nt.discuz.net/");

            // 等待 5 秒钟, 以便页面载入完毕.
            ie.IEFlow.Wait(5);

            // 安装资源中的 jquery 脚本.
            ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min);

            // 解除 jquery 的 $ 定义, 但仍然可以只用 jQuery 定义.
            ie.ExecuteJQuery(JQuery.Create(false, true).NoConflict( ));

            // 执行 jquery 脚本 jQuery('*').length, 获得页面上总元素个数.
            Console.WriteLine("页面上共有 {0} 个元素", ie.ExecuteJQuery(JQuery.Create("'*'", false).Length( )));
        }
Ejemplo n.º 8
0
        private void ieStateCompleted(FlowState <WebPageAction, WebPageCondition> state, ref bool isStop)
        {
            if (this.isStop)
            {
                isStop = true;
                return;
            }

            switch (state.Name)
            {
            case resultPageInstallJQueryStateName:
                this.ie.ExecuteJQuery(JQuery.Create("'li.g'"), "__jlis");

                int resultCount = this.ie.ExecuteJQuery <int> (JQuery.Create("__jlis").Length( ), "__jfSearch");

                for (int index = 0; index < resultCount; index++)
                {
                    this.ie.ExecuteJQuery(JQuery.Create("__jlis").Eq(index.ToString( )), "__jli");

                    string title = this.ie.ExecuteJQuery <string> (JQuery.Create("__jli").Find("'.r'").Text( ), "__jfSearch");
                    string url   = this.ie.ExecuteJQuery <string> (JQuery.Create("__jli").Find("'a.l'").Attr("'href'"), "__jfSearch");

                    if (!string.IsNullOrEmpty(title) && !string.IsNullOrEmpty(url) && !this.results.ContainsKey(url))
                    {
                        this.listPage.Items.Add(title + "-" + url);
                        this.results.Add(url, title);
                    }
                }

                (this.nextPageState.StartActions[0] as ExecuteJavaScriptAction).Code = string.Format("window.location = '{0}';", this.ie.ExecuteJQuery <string> (JQuery.Create("'#pnnext'").Attr("'href'"), "__jfSearch"));

                if (this.currentPageIndex++ >= this.numericPageCount.Value)
                {
                    this.stopSearch( );
                    isStop = true;
                }

                break;
            }
        }
Ejemplo n.º 9
0
        private void cmdExecuteJQuery_Click(object sender, EventArgs e)
        {
            // 从当前的 WebBrowser 控件创建 IEBrowser 对象.
            IEBrowser ie = new IEBrowser(this.webBrowser);

            // 导航到页面 http://www.google.com.hk/.
            ie.Navigate("http://www.google.com.hk/");

            // 等待页面载入完毕.
            ie.IEFlow.Wait(new UrlCondition("wait", "http://www.google.com.hk", StringCompareMode.StartWith));

            // 安装本地的 jquery 脚本.
            ie.InstallJQuery(JQuery.CodeMin);

            // 执行 jquery 脚本 $('*').length, 获得页面上总元素个数.
            Console.WriteLine("页面上共有 {0} 个元素", ie.ExecuteJQuery(JQuery.Create("'*'").Length( )));

            // 执行 jquery 脚本 $('a'), 获得页面上所有的 a 元素并将结果保存在 __jAs 变量中.
            ie.ExecuteJQuery(JQuery.Create("'a'"), "__jAs");

            // 得到 __jAs 变量中包含的 a 元素的个数.
            int count = ie.ExecuteJQuery <int> (JQuery.Create("__jAs").Length( ));

            for (int index = 0; index < count; index++)
            {
                // 得到 __jAs 变量中索引为 index 的 a 元素, 并保存在 __jA 变量中.
                ie.ExecuteJQuery(JQuery.Create("__jAs").Eq(index.ToString( )), "__jA");

                // 输出 a 元素的 innerText 和 href 属性.
                Console.WriteLine(string.Format(
                                      "a[{0}], '{1}', '{2}'",
                                      index,
                                      ie.ExecuteJQuery <string> (JQuery.Create("__jA").Text( )),
                                      ie.ExecuteJQuery <string> (JQuery.Create("__jA").Attr("'href'"))
                                      )
                                  );
            }
        }
Ejemplo n.º 10
0
        private void button1_Click(object sender, System.EventArgs e)
        {
            string strAnswer = FindAnswer(webBrowser_Main);

            if (strAnswer != "")
            {
                //J_AnswerInput
                //try-detail-buy
                IEBrowser ie = new IEBrowser(webBrowser_Main);

                ie.InstallJQuery(Properties.Resources.jquery_1_6_4_min);
                if (ie.IsJQueryInstalled)
                {
                    ie.ExecuteJQuery(JQuery.Create("'#J_AnswerInput'").Val("'" + strAnswer + "'"));
                    //点击免费申请按钮
                    ie.ExecuteJQuery(JQuery.Create("'a.try-detail-buy'").Attr("'id'", "'trybuy'"));
                    ie.ExecuteScript("document.getElementById('trybuy').click();");

                    //thTest = new Thread(new ThreadStart(aaa));
                    //thTest.Start();
                }
            }
        }
Ejemplo n.º 11
0
        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( ));
        }
Ejemplo n.º 12
0
        private string analyse(string title, string publishDateString, string content, out string deliverySpot, out string steelType, out DateTime publishDate, out SortedList <int, string> columns, out List <List <string> > valueLists)
        {
            deliverySpot = null;
            steelType    = null;
            publishDate  = DateTime.Now;
            columns      = new SortedList <int, string> ();
            valueLists   = new List <List <string> > ();

            if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(publishDateString) || string.IsNullOrEmpty(content))
            {
                return("title, publishDateString 或者 content 为空");
            }

            if (!title.Contains("日") || !title.Contains("市场") || !title.Contains("价格"))
            {
                return("无法分析的标题");
            }

            try
            {
                if (publishDateString.Length > 10)
                {
                    publishDate = Convert.ToDateTime(publishDateString);
                }
                else
                {
                    publishDate = Convert.ToDateTime(publishDateString + DateTime.Now.ToString(" hh:mm:ss"));
                }
            }
            catch
            { return("发布日期无效"); }

            this.ie.ExecuteJQuery(JQuery.Create("'body'").Html(content));

            this.ie.ExecuteJQuery(JQuery.Create("'tr'"), "trJQuery");

            int tdCount = this.ie.ExecuteJQuery <int> (JQuery.Create("trJQuery").Children("'td'").Length());

            int thCount = this.ie.ExecuteJQuery <int> (JQuery.Create("'tr:first-child'").Children("'td'").Length());

            if (tdCount % thCount != 0)
            {
                return("table 中每个 tr 包含的 td 个数可能不同");
            }

            int usableThCount = 0;

            for (int tdIndex = 0; tdIndex < thCount; tdIndex++)
            {
                string text = this.ie.ExecuteJQuery <string> (JQuery.Create("trJQuery").Children(string.Format("'td:eq({0})'", tdIndex)).Text());

                usableThCount++;

                if (text.Contains("品名"))
                {
                    columns.Add(columns.Count, "sv");
                }
                else if (text.Contains("规格"))
                {
                    columns.Add(columns.Count, "ss");
                }
                else if (text.Contains("材质"))
                {
                    columns.Add(columns.Count, "sq");
                }
                else if (text.Contains("产地"))
                {
                    columns.Add(columns.Count, "pa");
                }
                else if (text.Contains("价格"))
                {
                    columns.Add(columns.Count, "p");
                }
                else if (text.Contains("涨跌"))
                {
                    columns.Add(columns.Count, "r");
                }
                else if (text.Contains("备注"))
                {
                    columns.Add(columns.Count, "re");
                }
                else
                {
                    columns.Add(columns.Count, columns.Count.ToString());
                    usableThCount--;
                }
            }

            if (usableThCount < 7)
            {
                return("符合标准的字段不足 7 个");
            }

            try
            {
                deliverySpot = title.Substring(title.IndexOf("日") + 1, title.IndexOf("市场") - title.IndexOf("日") - 1);
                steelType    = title.Substring(title.IndexOf("市场") + 2, title.IndexOf("价格") - title.IndexOf("市场") - 2);
            }
            catch
            { return("标题分析错误"); }

            if (string.IsNullOrEmpty(deliverySpot) || string.IsNullOrEmpty(steelType))
            {
                return("城市或者种类为空");
            }

            if (deliverySpot.Length > 5)
            {
                return("城市名称过长");
            }

            List <string> values = null;

            for (int tdIndex = thCount; tdIndex < tdCount; tdIndex++)
            {
                string text = this.ie.ExecuteJQuery <string> (JQuery.Create("trJQuery").Children(string.Format("'td:eq({0})'", tdIndex)).Text());

                if (tdIndex % thCount == 0)
                {
                    values = new List <string> ();
                    valueLists.Add(values);
                }

                values.Add(text);
            }

            return(string.Empty);
        }
Ejemplo n.º 13
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;
            }
        }
Ejemplo n.º 14
0
        private static string makeParameterExpression(Parameter[] parameters, bool isWebService, string quote)
        {
            if (null == quote)
            {
                quote = string.Empty;
            }

            if (null == parameters || parameters.Length == 0)
            {
                if (isWebService)
                {
                    return(quote + "{ }" + quote);
                }
                else
                {
                    return("{ }");
                }
            }


            string parameterExpression = string.Empty;

            foreach (Parameter parameter in parameters)
            {
                if (null != parameter && parameter.Value != string.Empty)
                {
                    switch (parameter.Type)
                    {
                    case ParameterType.Selector:

                        if (isWebService)
                        {
                            if (parameterExpression != string.Empty)
                            {
                                parameterExpression += string.Format(" + {0} ,{0}", quote);
                            }

                            parameterExpression += string.Format(" + {0}{1}: {0} + jQuery.panzer.encodeValue({2}, {3}, {0}{4}{0}, {5})", quote, parameter.Name, JQuery.Create(string.Format("jQuery.panzer.createJQuery({0})", UISetting.CreateJQuerySelector(parameter.Value))).Val( ).Code, parameter.Default, parameter.DataType.ToString( ).ToLower( ), parameter.Provider);
                        }
                        else
                        {
                            parameterExpression += string.Format(" {1}: jQuery.panzer.convert({2}, {3}, {0}{4}{0}, {5}),", quote, parameter.Name, JQuery.Create(string.Format("jQuery.panzer.createJQuery({0})", UISetting.CreateJQuerySelector(parameter.Value))).Val( ).Code, parameter.Default, parameter.DataType.ToString( ).ToLower( ), parameter.Provider);
                        }

                        break;

                    case ParameterType.Expression:

                        if (isWebService)
                        {
                            if (parameterExpression != string.Empty)
                            {
                                parameterExpression += string.Format(" + {0} ,{0}", quote);
                            }

                            parameterExpression += string.Format(" + {0}{1}: {0} + jQuery.panzer.encodeValue({2}, {3}, {0}{4}{0}, {5})", quote, parameter.Name, parameter.Value, parameter.Default, parameter.DataType.ToString( ).ToLower( ), parameter.Provider);
                        }
                        else
                        {
                            parameterExpression += string.Format(" {1}: jQuery.panzer.convert({2}, {3}, {0}{4}{0}, {5}),", quote, parameter.Name, parameter.Value, parameter.Default, parameter.DataType.ToString( ).ToLower( ), parameter.Provider);
                        }

                        break;
                    }
                }
            }

            if (isWebService)
            {
                parameterExpression = quote + "{" + quote + parameterExpression + " + " + quote + "}" + quote;
            }
            else
            {
                parameterExpression = "{" + parameterExpression.TrimEnd(',') + "}";
            }

            return(parameterExpression);
        }