private void GetTaskInfo(cGlobalParas.RunTaskType rType, string TaskName, string TaskPara)
        {
            ListViewItem Litem = new ListViewItem();

            Litem.Text = cGlobalParas.ConvertName((int)rType);
            Litem.SubItems.Add(TaskName);
            Litem.SubItems.Add(TaskPara);

            this.listTask.Items.Add(Litem);
        }
        //�˷���ר�����޸�taskrun.xml�вɼ�����ֵʹ�ã��������������ʹ��
        //�˷�����ͨ�ã���ǰ��xml��������������⣬������Ҫ�������
        //ͬʱ��Ҫ����Urlcount��Ҳ�����ֵ���Ǻ�׼ȷ�������ɼ���������ǣ������ˢ��
        public void EditTaskrunValue(string TaskID,cGlobalParas.TaskState tState, string GUrlCount,string GTrueUrlCount, string GErrUrlCount,string GTrueErrUrlCount, string TrueUrlCount)
        {
            XmlNodeList fathernode = objXmlDoc.GetElementsByTagName("Tasks");
            XmlNodeList nodes = fathernode[0].ChildNodes;

            for (int i = 0; i < nodes.Count; i++)
            {
                for (int j = 0; j < nodes[i].ChildNodes.Count; j++)
                {
                    //for (int m=0;
                    if (nodes[i].ChildNodes[j].Name == "TaskID" && nodes[i].ChildNodes[j].InnerText == TaskID)
                    {
                        XmlNode nod = nodes[i].SelectSingleNode("TaskState");
                        nod.InnerText = ((int)tState).ToString ();
                        nod = null;

                        nod = nodes[i].SelectSingleNode("TrueUrlCount");
                        nod.InnerText = TrueUrlCount;
                        nod=null;

                        nod = nodes[i].SelectSingleNode("GatheredUrlCount");
                        nod.InnerText = GUrlCount;
                        nod = null;

                        nod = nodes[i].SelectSingleNode("GatheredTrueUrlCount");
                        nod.InnerText = GTrueUrlCount;
                        nod=null;

                        nod = nodes[i].SelectSingleNode("ErrUrlCount");
                        nod.InnerText = GErrUrlCount;
                        nod =null;

                        nod = nodes[i].SelectSingleNode("TrueErrUrlCount");
                        nod.InnerText = GTrueErrUrlCount;
                        nod = null;

                        return;
                    }
                }

            }
        }
        private DataTable GatherTestData(string Url,List<cWebpageCutFlag> gCutFlags, cGlobalParas.WebCode webCode, string cookie, string startPos, string endPos, string sPath, bool IsAjax)
        {
            Gather.cGatherWeb gData = new Gather.cGatherWeb();
            gData.CutFlag = gCutFlags;
            DataTable dGather = new DataTable();
            try
            {
                dGather = gData.GetGatherData(Url, webCode ,cookie ,startPos ,endPos , sPath, IsAjax);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(rm.GetString ("Error4") + ex.Message, rm.GetString("MessageboxError"), MessageBoxButtons.OK, MessageBoxIcon.Error);
                return null;
            }

            return dGather;
        }
        private string GetNavUrl(string webLink, List<cNavigRule> NavRule, cGlobalParas.WebCode webCode, string cookie)
        {
            List<string> Urls;

            Urls = gUrl.ParseUrlRule(webLink, NavRule,webCode ,cookie );

            if (Urls == null || Urls.Count ==0)
                return "";

            string isReg="[\"\\s]";
            string Url="";

            for (int m=0 ;m<Urls.Count ;m++)
            {
                if (!Regex.IsMatch (Urls[m].ToString (),isReg ))
                {
                    Url = Urls[m].ToString();
                    break ;
                }
            }

            string PreUrl = "";

            //��Ҫ�ж���ҳ��ַǰ����ڵ����Ż�˫����
            if (Url.Substring(0, 1) == "'" || Url.Substring(0, 1) == "\"")
            {
                Url = Url.Substring(1, Url.Length - 1);
            }

            if (Url.Substring(Url.Length - 1, 1) == "'" || Url.Substring(Url.Length - 1, 1) == "\"")
            {
                Url = Url.Substring(0, Url.Length - 1);
            }

            //ȥ���������ַ��ʾ��ͨ����������ж�
            if (string.Compare (Url.Substring (0,4),"http",true)!=0)
            {
                if (Url.Substring(0, 1) == "/")
                {
                    PreUrl = webLink.Substring(7, webLink.Length  - 7);
                    PreUrl = PreUrl.Substring(0, PreUrl.IndexOf("/"));
                    PreUrl = "http://" + PreUrl;
                }
                else
                {
                    Match aa = Regex.Match(webLink, ".*/");
                    PreUrl = aa.Groups[0].Value.ToString();
                }
            }

            return PreUrl + Url;
        }
        //����ָ����ַ�жϵ�ǰҳ��ı���
        public static string GetWebpageCode(string url,cGlobalParas.WebCode WebCode)
        {
            string charSet = "";

            WebClient myWebClient = new WebClient();

            myWebClient.Credentials = CredentialCache.DefaultCredentials;

            //����Դ�������ݲ������ֽ����顣����@����Ϊ��ַ�м���"/"���ţ�
            byte[] myDataBuffer = myWebClient.DownloadData(url);
            string strWebData = Encoding.Default.GetString(myDataBuffer);

            //��ȡ��ҳ�ַ�����������Ϣ
            Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)\"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
            string webCharSet = charSetMatch.Groups[2].Value;
            if (charSet == null || charSet == "")
                charSet = webCharSet;

            return charSet;
        }
        //��Url���IJ��ֽ��б��룬���ر�����Url��
        //ע�⣺ֻ�����Ľ��б���
        public static string UrlEncode(string Url, cGlobalParas.WebCode uEncoding)
        {
            string DemoUrl = Url;

            Regex re = new Regex("[\\u4e00-\\u9fa5]", RegexOptions.None);
            MatchCollection mc = re.Matches(DemoUrl);

            switch (uEncoding)
            {
                case cGlobalParas.WebCode.utf8:
                    foreach (Match ma in mc)
                    {
                        DemoUrl = DemoUrl.Replace(ma.Value.ToString(), HttpUtility.UrlEncode(ma.Value.ToString(), Encoding.UTF8));
                    }
                    break;
                case cGlobalParas.WebCode.gb2312:
                    foreach (Match ma in mc)
                    {
                        DemoUrl = DemoUrl.Replace(ma.Value.ToString(), HttpUtility.UrlEncode(ma.Value.ToString(), Encoding.GetEncoding("gb2312")));
                    }
                    break;
                case cGlobalParas.WebCode.gbk:
                    foreach (Match ma in mc)
                    {
                        DemoUrl = DemoUrl.Replace(ma.Value.ToString(), HttpUtility.UrlEncode(ma.Value.ToString(), Encoding.GetEncoding("gbk")));
                    }
                    break;
                case cGlobalParas.WebCode.big5:
                    foreach (Match ma in mc)
                    {
                        DemoUrl = DemoUrl.Replace(ma.Value.ToString(), HttpUtility.UrlEncode(ma.Value.ToString(), Encoding.GetEncoding("big5")));
                    }
                    break;
                default:
                    foreach (Match ma in mc)
                    {
                        DemoUrl = DemoUrl.Replace(ma.Value.ToString(), HttpUtility.UrlEncode(ma.Value.ToString(), Encoding.UTF8));
                    }
                    break;
            }

            return  DemoUrl;
        }
 private void UpdateStatebarTaskState(cGlobalParas.TaskState tState)
 {
     switch (tState)
     {
         case cGlobalParas.TaskState .UnStart :
             this.StateInfo.Text = rm.GetString ("Label7");
             break;
         case cGlobalParas.TaskState .Stopped :
             this.StateInfo.Text = rm.GetString ("Label8");
             break;
         case cGlobalParas.TaskState.Completed :
             this.StateInfo.Text = rm.GetString ("Label9");
             break;
         case cGlobalParas.TaskState.Failed :
             this.StateInfo.Text = rm.GetString ("Label10");
             break;
         case cGlobalParas.TaskState.Pause :
             this.StateInfo.Text = rm.GetString ("Label11");
             break;
         case cGlobalParas.TaskState.Running :
             this.StateInfo.Text = rm.GetString ("Label12");
             break;
         case cGlobalParas.TaskState.Started :
             this.StateInfo.Text = rm.GetString ("Label13");
             break;
         case cGlobalParas.TaskState.Waiting :
             this.StateInfo.Text = rm.GetString ("Label14");
             break;
         case cGlobalParas.TaskState.Publishing :
             this.StateInfo.Text = rm.GetString ("Label15");
             break;
         default:
             break;
     }
 }
        //�������񷢲���ɵĹ���
        public void UpdateTaskPublished(Int64 TaskID,cGlobalParas.GatherResult tState)
        {
            //���Ѿ���ɷ�����������ӵ��������������ļ���
            Task.cTaskComplete t = new Task.cTaskComplete();
            t.InsertTaskComplete(TaskID, tState);
            t = null;

            //ɾ��taskrun�ڵ�
            cTaskRun tr = new cTaskRun();
            tr.LoadTaskRunData();
            tr.DelTask(TaskID);

            //�޸�Tabҳ������

            //ɾ��run�е�����ʵ���ļ�
            string FileName = Program.getPrjPath() + "Tasks\\run\\" + "Task" + TaskID + ".xml";
            System.IO.File.Delete(FileName);

            if (this.treeMenu.SelectedNode.Name == "nodPublish")
            {
                for (int i = 0; i < this.dataTask.Rows.Count; i++)
                {
                    if (this.dataTask.Rows[i].Cells[1].Value.ToString() == TaskID.ToString())
                    {
                        this.dataTask.Rows.Remove(this.dataTask.Rows[i]);
                        break;
                    }
                }
            }
            else if (this.treeMenu.SelectedNode.Name == "nodComplete")
            {
                //���¼���������������Ϣ
                LoadCompleteTask();
            }
        }
        public void UpdateRunTaskState(Int64 TaskID, cGlobalParas.TaskState tState)
        {
            if (this.treeMenu.SelectedNode.Name == "nodRunning")
            {
                for (int i = 0; i < this.dataTask.Rows.Count; i++)
                {
                    if (this.dataTask.Rows[i].Cells[1].Value.ToString() == TaskID.ToString())
                    {
                        switch (tState)
                        {
                            case cGlobalParas.TaskState.Running:
                                this.dataTask.Rows[i].Cells[0].Value = imageList1.Images["started"];
                                break;
                            case cGlobalParas.TaskState.Stopped:
                                if ((int.Parse(dataTask.Rows[i].Cells[7].Value.ToString()) + int.Parse(dataTask.Rows[i].Cells[8].Value.ToString())) > 0)
                                {
                                    this.dataTask.Rows[i].Cells[0].Value= imageList1.Images["pause"];
                                }
                                else
                                {
                                    this.dataTask.Rows[i].Cells[0].Value = imageList1.Images["stop"];
                                }
                                break;
                            default:
                                this.dataTask.Rows[i].Cells[0].Value = imageList1.Images["stop"];
                                break;
                        }
                        this.dataTask.Rows[i].Cells[2].Value = tState;
                        break;
                    }
                }

            }
        }
        public void SetTaskShowState(Int64 TaskID, cGlobalParas.TaskState tState)
        {
            //���ҵ�ǰ���б���ʾ������
            //�����жϵ�ǰѡ�е����νڵ��Ƿ����������Ľڵ�
            if (this.dataTask.Rows.Count > 0 && this.dataTask.Rows[0].Cells[3].Value.ToString() == "nodRunning")
            {
                for (int i = 0; i < this.dataTask.Rows.Count; i++)
                {
                    bool IsSetToolbutState = false;

                    if (this.dataTask.Rows[i].Cells[1].Value.ToString() == TaskID.ToString())
                    {
                        if (i == this.dataTask.CurrentRow.Index)
                        {
                            IsSetToolbutState = true;
                        }

                        switch (tState)
                        {
                            case cGlobalParas.TaskState.Started:

                                break;
                            case cGlobalParas.TaskState.Failed:
                                this.dataTask.Rows[i].Cells[0].Value = imageList1.Images["error"];
                                if (IsSetToolbutState == true)
                                {
                                    SetValue(this.toolStrip1.Items["toolStartTask"], "Enabled", true);
                                    SetValue(this.toolStrip1.Items["toolRestartTask"], "Enabled", false);
                                    SetValue(this.toolStrip1.Items["toolStopTask"], "Enabled", false);

                                }

                                break;
                            case cGlobalParas.TaskState.Completed:
                                this.dataTask.Rows[i].Cells[0].Value = imageList1.Images["stop"];
                                if (IsSetToolbutState == true)
                                {
                                    SetValue(this.toolStrip1.Items["toolStartTask"], "Enabled", true);
                                    SetValue(this.toolStrip1.Items["toolRestartTask"], "Enabled", false);
                                    SetValue(this.toolStrip1.Items["toolStopTask"], "Enabled", false);
                                }

                                break;
                            case cGlobalParas.TaskState.UnStart:

                                break;
                            case cGlobalParas.TaskState.Pause:

                                break;
                            default:

                                break;
                        }

                        break;
                    }
                }
            }
        }
        //�������񣬿��Լ���������Ϣ���������е�����
        //ע�⣬������ص����������������򲻿��Խ����������������
        //��ǰ�жϵ������ǣ�����DZ༭�������ж�����汾�Ƿ���ϵ�ǰ�汾
        //Լ����������ǣ�����������������������������������Ƿ�����
        //�汾Լ��������������������
        private void LoadTaskInfo(string FilePath, string FileName ,cGlobalParas.FormState fState)
        {
            frmTask ft=null ;

            LoadAgain:

            try
            {
                ft = new frmTask();
                ft.EditTask(FilePath, FileName);
                ft.FormState = fState;
                ft.RShowWizard = ShowTaskWizard;
                ft.rTClass = refreshNode;
                ft.ShowDialog();
                ft.Dispose();
            }
            catch (cSoukeyException)
            {
                if (fState == cGlobalParas.FormState.Browser)
                {
                    MessageBox.Show(rm.GetString("Info19"), rm.GetString("MessageboxInfo"), MessageBoxButtons.OK, MessageBoxIcon.Information);
                    ft = null;
                    return;
                }

                if (MessageBox.Show(rm.GetString("Quaere4"), rm.GetString("MessageboxQuaere"), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                {
                    ft = null;

                    return;
                }
                else
                {
                    ft = null;

                    frmUpgradeTask fu = new frmUpgradeTask(FilePath + "\\" + FileName);
                    fu.ShowDialog();
                    fu.Dispose();
                    fu = null;
                    return;

                }
            }
        }
 private void GetExitPara(cGlobalParas.ExitPara ePara)
 {
     m_ePara = ePara;
 }
        private void ExportData(string FileName,cGlobalParas.PublishType pType)
        {
            cExport eTxt = new cExport();
            string tName = this.tabControl1.SelectedTab.Tag.ToString();
            DataGridView tmp = (DataGridView)this.tabControl1.SelectedTab.Controls[0].Controls[0].Controls[0];
            this.PrograBarTxt.Visible = true;
            this.PrograBarTxt.Text =rm.GetString ("Info37") + "��" + tName + " " + "0/0";
            this.ExportProbar.Visible = true;

            //����һ����̨�߳����ڵ������ݲ���
            ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress);

            cExport eExcel = new cExport(this, showProgress, pType, FileName, (DataTable)tmp.DataSource);
            Thread t = new Thread(new ThreadStart(eExcel.RunProcess));
            t.IsBackground = true;
            t.Start();
            ShowInfo( rm.GetString("Info38"),rm.GetString("Info37"));

            tName = null;
        }