C#网页刷票器(实现代理IP投票)

        
分类:             【C#    学 习笔记】             【 我的作品集 】                   326人阅读     评论(5)     收藏     举报    

和@陈宇翔的修行录忙了一个星期写了个刷票器来交软件测试课的作业

PPT不是很好传,放到资源里面去,PPT地址:

源码地址:http://download.csdn.net/detail/a8887396/5344103

投票效果:

C#网页刷票器(实现代理IP投票)_第1张图片


刷票地址: (有效期半年)

http://mwangbobo.jingdianet.com/Default.aspx

主要代码:

[cpp] view plain copy print ?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9. using System.IO;  
  10. using mshtml;  
  11. using System.Net;  
  12. using System.Runtime.InteropServices;  
  13.   
  14. namespace 刷票  
  15. {  
  16.     public partial class Form1 : Form  
  17.     {  
  18.   
  19.         [DllImport(@"wininet",  
  20.     SetLastError = true,  
  21.     CharSet = CharSet.Auto,  
  22.     EntryPoint = "InternetSetOption",  
  23.     CallingConvention = CallingConvention.StdCall)]  
  24.   
  25.         //即时刷新IE设置  
  26.         public static extern bool InternetSetOption(  
  27.             int hInternet,  
  28.             int dmOption,  
  29.             IntPtr lpBuffer,  
  30.             int dwBufferLength  
  31.         );  
  32.   
  33.         //是否可以连接到internet  
  34.         [DllImport("wininet.dll")]   
  35.         public extern static bool InternetGetConnectedState(out int Description, int ReservedValue);  
  36.         //返回false就是能连接到internet  
  37.         public static bool IsConnectedToInternet()   
  38.         {  
  39.             int Desc; return InternetGetConnectedState(out Desc, 0);   
  40.         }  
  41.   
  42.   
  43.   
  44.   
  45.         int count_all = 0; //投票次数  
  46.         bool is_start = false//开始标志  
  47.         bool is_interval = false//是否使用时间间隔  
  48.         bool is_proxy = false;  
  49.       //  bool is_ip_changed = false;  
  50.         string url_str = "http://mwangbobo.jingdianet.com/Default.aspx";  //投票的指定网址  
  51.        // string url_str = "http://localhost:4128/WebSite1/Default.aspx";  
  52.         string file_path; //代理IP的文本路径  
  53.         string[] ip = new string[1024]; //代理IP  
  54.      //   string[] port = new string[1024]; //代理IP的端口  
  55.         int count_ip = 0; //代理IP个数  
  56.           
  57.   
  58.         public Form1()  
  59.         {  
  60.             InitializeComponent();  
  61.             webBrowser1.Navigate(url_str); //跳转到页面  
  62.   
  63.         }  
  64.   
  65.   
  66.         /* ==================            投票模块                    ================== */  
  67.          
  68.   
  69.         //点击开始按钮  
  70.         private void btn_start_Click(object sender, EventArgs e)  
  71.         {  
  72.             if (!IsConnectedToInternet()) //检查网卡状态 是否连接到internet 如你把网线拔了就会出错, 不包括设置代理IP错误导致不能开网页的情况  
  73.             {  
  74.                 MessageBox.Show("不能连接到internet");  
  75.                 return;  
  76.             }  
  77.   
  78.        //     if (is_start || webBrowser1.Url == null || webBrowser1.Url.ToString() != url_str) //开始之后不能再点开始无效 或者 当前页面不是投票页面无效  
  79.             {  
  80.        //         return;  
  81.             }  
  82.             is_start = true;  
  83.               
  84.             int interval = 0;  
  85.             bool i = int.TryParse(text_interval.Text, out interval);//获取刷新间隔  
  86.             if (!i || interval == 0)    
  87.             {  
  88.                //获取间隔失败 或者间隔为0 不使用计时器  
  89.                 is_interval = false;  
  90.                 complete_timer.Interval = 3000; //网页加载计时器 防止网页出现无法载入的情况。  
  91.             }  
  92.             else  
  93.             {  
  94.                 vote_timer.Interval = interval * 1000; //因为是微秒   
  95.                 is_interval = true;  
  96.                 complete_timer.Interval = interval * 1000 + 3000; //网页加载计时器   
  97.             }  
  98.   
  99.   
  100.             
  101.   
  102.             if (check_ip.Checked)  
  103.             {  
  104.                 is_proxy = true;  
  105.             }  
  106.   
  107.          
  108.             if (int.TryParse(text_count.Text.ToString(), out count_all)) //如果输入的是有效数字  
  109.             {  
  110.   
  111.                 if (count_all > 0) //刷票次数大于0  
  112.                 {  
  113.                     if (is_proxy) count_all++;  
  114.                     //第一次投票不管是不是代理IP都不使用代理IP 所以加一次  
  115.   
  116.                     
  117.                     text_remain.Text = Convert.ToString(count_all);  
  118.                    // complete_timer.Enabled = true;//开始加载完成计时  
  119.   
  120.                     if (is_interval)  
  121.                     {  
  122.                         vote_timer.Enabled = true//启动计时器  
  123.                     }  
  124.                     else  
  125.                     {  
  126.                         vote();                 //不使用计时器时 直接投票  
  127.                     }    
  128.                      
  129.                 }  
  130.             }  
  131.             else  
  132.             {  
  133.                 is_start = false;  
  134.                 is_interval = false;  
  135.                 is_proxy = false;  
  136.                 vote_timer.Enabled = false;  
  137.                 vote_timer.Enabled = false;  
  138.             }  
  139.               
  140.         }  
  141.   
  142.         //计时器事件 进行投票  
  143.         private void vote_timer_Tick(object sender, EventArgs e)  
  144.         {  
  145.             if (!is_start || count_all == 0) return;  
  146.             vote_timer.Enabled = false;      
  147.             vote();  
  148.         }  
  149.   
  150.   
  151.   
  152.   
  153.        //姓名 号码  
  154.         string[] xing = { "赵"," 钱""孙""李""周""吴""郑""王","冯""陈""楮""卫""蒋""沈""韩""杨",  
  155.                          "朱""秦""尤""许""何""吕""施""张","孔""曹""严""华""金""魏""陶""姜",  
  156.                          "戚""谢""邹""喻""柏""水""窦""章","云""苏""潘""葛""奚""范""彭""郎"};  
  157.   
  158.         string[] ming = { "昌睿""泉龙""建利""泰福""长财""红良""昌逊""卓臻""昌哲""承哲""卓逊""武隆",  
  159.                         "冰姿""斌""书琪""季方""元峰""美茹""雪莉""娜芮""茜茹""沛秀""敬瑶""依洁""巧梅",  
  160.                        "卿青""政光""思远""卿清""志昆""锡俊""婉柔""文雅""俊刚""祝赢""蕾""禧""齐""兮" };  
  161.   
  162.         string[] haomaf = { "138""139""150" };  
  163.   
  164.   
  165.         //投票: 选checkbox 填表格 点提交  
  166.         private void vote()  
  167.         {  
  168.             //如果已经刷票次数用完了  初始化这些值 然后停止  
  169.             if (count_all <= 0)  
  170.             {  
  171.                 //is_start = false;  
  172.                 return;  
  173.             }  
  174.   
  175.      
  176.            text_remain.Text = Convert.ToString(--count_all); //剩余次数-1 并显示到剩余次数文本上  
  177.   
  178.            if (is_proxy && count_all > 0)  
  179.            {  
  180.                setProxy(ip[count_all -1]);  
  181.            }  
  182.   
  183.   
  184.             Random r = new Random();   
  185.             string q = xing[r.Next(48)]; //随机选择的姓氏  
  186.             string k = ming[r.Next(39)]; //随机选择的名字  
  187.             Application.DoEvents();   
  188.   
  189.             string haoma = haomaf[r.Next(3)];//随机生成号码头三位  
  190.             for (int i = 0; i < 8; i++) //号码后8位生成  
  191.             {  
  192.                 haoma += r.Next(10);  
  193.             }  
  194.   
  195.             complete_timer.Enabled = true//开始网页加载计时  
  196.   
  197.               
  198.             try  
  199.             {  
  200.   
  201.   
  202.                 //下面的代码有一定几率抛出异常  即在网页加载不到所需要的元素的时候.    
  203.                 // 异常时  直接结束 但在上面网页加载计时已经开始   
  204.   
  205.                 //选择第二个选项 动作click  
  206.                 webBrowser1.Document.GetElementById("MainContent_RadioButtonList1_2").InvokeMember("click");  
  207.                 // Application.DoEvents();  
  208.                 //填表 随机的名字  
  209.                 webBrowser1.Document.GetElementById("MainContent_UserName").InnerText = q + k;  
  210.                 // Application.DoEvents();  
  211.                 //填表 随机的号码  
  212.                 webBrowser1.Document.GetElementById("MainContent_UserPhone").InnerText = haoma;  
  213.                 // Application.DoEvents();  
  214.   
  215.                 //选择提交按钮 动作click  
  216.                 webBrowser1.Document.GetElementById("MainContent_OKButton").InvokeMember("click");  
  217.                 Application.DoEvents();  
  218.             }  
  219.             catch (System.Exception ex)  
  220.             {  
  221.                // is_start = false;  
  222.                  
  223.                 //MessageBox.Show("页面中未找到投票对象","错误");  
  224.                   
  225.             }  
  226.   
  227.         }  
  228.   
  229.   
  230.         //网页加载成功阶段 webBrowser1_DocumentCompleted 此时判断是否处于刷票中,是则再投一次。  
  231.         private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)  
  232.         {  
  233.             complete_timer.Enabled = false//kai  
  234.             if (!is_start) return;  
  235.             if (count_all > 0) //继续投票  
  236.             {  
  237.                 if (is_interval)  
  238.                 {  
  239.                     //如果使用间隔计时器 那开始间隔计时  
  240.                     vote_timer.Enabled = true;  
  241.                 }  
  242.                 else  
  243.                 {  
  244.                     //没有使用间隔计时器 直接开始投票  
  245.                     vote();  
  246.                 
  247.                 }  
  248.             }  
  249.             else //投完票了,  
  250.             {  
  251.                 is_start = false//投票标志清0  
  252.                 is_interval = false;  
  253.                 if (is_proxy)  
  254.                 {  
  255.                     disProxy();  
  256.                     is_proxy = false;  
  257.                 }           
  258.                 vote_timer.Enabled = false//不管有没有计时器 计时器标志清0  
  259.                 complete_timer.Enabled = false;  
  260.                 MessageBox.Show("投票完成");  
  261.                   
  262.             }  
  263.         }  
  264.   
  265.   
  266.         //WebBrowser Navigated阶段 :  控制项已巡览至新文件且已开始载入新文件时  另外还有Navigating 表示寻觅开始前  
  267.         private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)  
  268.         {  
  269.             IHTMLWindow2 win = (IHTMLWindow2)webBrowser1.Document.Window.DomWindow;  
  270.             string s = @"function confirm() {";  
  271.             s += @"return true;";  
  272.             s += @"}";  
  273.             s += @"function alert() {}";  
  274.             win.execScript(s, "javascript");  
  275.   
  276.         }  
  277.   
  278.   
  279.         //结束按钮  
  280.         private void btn_end_Click(object sender, EventArgs e)  
  281.         {  
  282.             is_start = false;  
  283.             is_interval = false;  
  284.             is_proxy = false;  
  285.              disProxy();  
  286.             vote_timer.Enabled = false;  
  287.             MessageBox.Show("投票终止");  
  288.   
  289.         }  
  290.   
  291.   
  292.   
  293.   
  294.   
  295.         /* ================            代理IP模块              ==================== 
  296.             1 导入代理IP 
  297.          *  2 使用代理IP 
  298.         */  
  299.   
  300.         //导入代理IP的按钮 文本格式必须是IP:PORT才可以正确读取  
  301.         private void btn_ip_Click(object sender, EventArgs e)  
  302.         {  
  303.             OpenFileDialog fileDialog1 = new OpenFileDialog(); //文件选择框  
  304.             fileDialog1.InitialDirectory = "d://";       // 默认打开的路径,可更改  
  305.             fileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";  
  306.             fileDialog1.FilterIndex = 1;  
  307.             fileDialog1.RestoreDirectory = true;  
  308.             if (fileDialog1.ShowDialog() == DialogResult.OK)//点击OK选择文件  
  309.             {  
  310.                 file_path = fileDialog1.FileName;  
  311.             }  
  312.             else  
  313.             {  
  314.                 // file_path = null;  
  315.                 return;  
  316.             }  
  317.   
  318.             //  打开文件 获取IP与端口  
  319.             if (file_path.Length != 0)  
  320.             {  
  321.   
  322.                 FileStream fs = new FileStream(file_path, FileMode.Open);  //打开文件  
  323.                 StreamReader m_streamReader = new StreamReader(fs); //读取文件  
  324.                 m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin); //定位文件读取位置  
  325.                 string strLine = m_streamReader.ReadLine(); //读取第一行  
  326.                 int i = 0;  
  327.                 do  
  328.                 {   
  329.                     ip[i] = strLine.Split('@')[0];  
  330.                    // textBox1.Text += ip[i];  
  331.                     strLine = m_streamReader.ReadLine();//读取下一行  
  332.                     i++;  
  333.                 } while (strLine != null && strLine != "");  
  334.                 m_streamReader.Close(); //关闭读取器  
  335.                 m_streamReader.Dispose(); //释放资源  
  336.                 fs.Close(); //关闭文件流  
  337.                 fs.Dispose();//释放资源  
  338.                 count_ip = i; //记录代理IP个数  
  339.   
  340.   
  341.   
  342.            }  
  343.        }  
  344.   
  345.         //点击代理IP的checkbox ,如果是使用代理IP,则将代理IP个数写到 刷票次数中   
  346.         private void check_ip_CheckedChanged(object sender, EventArgs e)  
  347.         {  
  348.             if (check_ip.Checked == true)  
  349.             {  
  350.                 text_count.Text = Convert.ToString(count_ip);  
  351.                 text_count.Enabled = false;  
  352.             }  
  353.             else  
  354.             {  
  355.                 text_count.Enabled = true;  
  356.             }  
  357.         }  
  358.   
  359.   
  360.         //设置代理IP  
  361.         private void setProxy(string ip)  
  362.         {  
  363.             if (ip == null || ip == ""return//如果ip是空的 返回  
  364.   
  365.             try  
  366.             {  
  367.          
  368.                  //获取注册表对象  
  369.                 Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings"true);  
  370.                 //设置代理可用   
  371.                 rk.SetValue("ProxyEnable", 1);  
  372.                 //设置代理IP和端口   
  373.                 rk.SetValue("ProxyServer", ip);  
  374.                 rk.Flush();  
  375.                 rk.Close();  
  376.                 //使立即生效  
  377.                 InternetSetOption(0, 39, IntPtr.Zero, 0);  
  378.                 InternetSetOption(0, 37, IntPtr.Zero, 0);  
  379.   
  380.                // InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, NULL);  
  381.                // InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL, NULL);  
  382.   
  383.                // is_ip_changed = true;  
  384.                 //webBrowser1.Refresh();  
  385.                // webBrowser1.Document.ExecCommand("Refresh", false, null);  
  386.   
  387.             }  
  388.             catch (System.Exception ex)  
  389.             {  
  390.   
  391.             }  
  392.   
  393.   
  394.           
  395.   
  396.         }  
  397.   
  398.         private void disProxy()  
  399.         {  
  400.             try  
  401.             {  
  402.                 Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings"true);  
  403.                 //设置代理可用   
  404.                 rk.SetValue("ProxyEnable", 0);  
  405.                 //设置代理IP和端口   
  406.                 rk.SetValue("ProxyServer""");  
  407.                 rk.Flush();  
  408.                 rk.Close();  
  409.             //    is_ip_changed = false;  
  410.                 //使立即生效  
  411.                 InternetSetOption(0, 39, IntPtr.Zero, 0);  
  412.                 InternetSetOption(0, 37, IntPtr.Zero, 0);  
  413.             }  
  414.             catch (System.Exception ex)  
  415.             {  
  416.                   
  417.             }  
  418.   
  419.         }  
  420.   
  421.         private void complete_timer_Tick(object sender, EventArgs e)  
  422.         {  
  423.             //count_all--;  
  424.             complete_timer.Enabled = false;  
  425.             disProxy();  
  426.             webBrowser1.Navigate(url_str);  
  427.             //webBrowser1_DocumentCompleted(null, null);  
  428.             //MessageBox.Show("加载超时");  
  429.         }   
  430.     }  
  431. }  
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using mshtml;
using System.Net;
using System.Runtime.InteropServices;

namespace 刷票
{
    public partial class Form1 : Form
    {

        [DllImport(@"wininet",
    SetLastError = true,
    CharSet = CharSet.Auto,
    EntryPoint = "InternetSetOption",
    CallingConvention = CallingConvention.StdCall)]

        //即时刷新IE设置
        public static extern bool InternetSetOption(
            int hInternet,
            int dmOption,
            IntPtr lpBuffer,
            int dwBufferLength
        );

        //是否可以连接到internet
        [DllImport("wininet.dll")] 
        public extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
        //返回false就是能连接到internet
        public static bool IsConnectedToInternet() 
        {
            int Desc; return InternetGetConnectedState(out Desc, 0); 
        }




        int count_all = 0; //投票次数
        bool is_start = false; //开始标志
        bool is_interval = false; //是否使用时间间隔
        bool is_proxy = false;
      //  bool is_ip_changed = false;
        string url_str = "http://mwangbobo.jingdianet.com/Default.aspx";  //投票的指定网址
       // string url_str = "http://localhost:4128/WebSite1/Default.aspx";
        string file_path; //代理IP的文本路径
        string[] ip = new string[1024]; //代理IP
     //   string[] port = new string[1024]; //代理IP的端口
        int count_ip = 0; //代理IP个数
        

        public Form1()
        {
            InitializeComponent();
            webBrowser1.Navigate(url_str); //跳转到页面

        }


        /* ==================            投票模块                    ================== */
       

        //点击开始按钮
        private void btn_start_Click(object sender, EventArgs e)
        {
            if (!IsConnectedToInternet()) //检查网卡状态 是否连接到internet 如你把网线拔了就会出错, 不包括设置代理IP错误导致不能开网页的情况
            {
                MessageBox.Show("不能连接到internet");
                return;
            }

       //     if (is_start || webBrowser1.Url == null || webBrowser1.Url.ToString() != url_str) //开始之后不能再点开始无效 或者 当前页面不是投票页面无效
            {
       //         return;
            }
            is_start = true;
            
            int interval = 0;
            bool i = int.TryParse(text_interval.Text, out interval);//获取刷新间隔
            if (!i || interval == 0)  
            {
               //获取间隔失败 或者间隔为0 不使用计时器
                is_interval = false;
                complete_timer.Interval = 3000; //网页加载计时器 防止网页出现无法载入的情况。
            }
            else
            {
                vote_timer.Interval = interval * 1000; //因为是微秒 
                is_interval = true;
                complete_timer.Interval = interval * 1000 + 3000; //网页加载计时器 
            }


          

            if (check_ip.Checked)
            {
                is_proxy = true;
            }

       
            if (int.TryParse(text_count.Text.ToString(), out count_all)) //如果输入的是有效数字
            {

                if (count_all > 0) //刷票次数大于0
                {
                    if (is_proxy) count_all++;
                    //第一次投票不管是不是代理IP都不使用代理IP 所以加一次

                  
                    text_remain.Text = Convert.ToString(count_all);
                   // complete_timer.Enabled = true;//开始加载完成计时

                    if (is_interval)
                    {
                        vote_timer.Enabled = true; //启动计时器
                    }
                    else
                    {
                        vote();                 //不使用计时器时 直接投票
                    }  
                   
                }
            }
            else
            {
                is_start = false;
                is_interval = false;
                is_proxy = false;
                vote_timer.Enabled = false;
                vote_timer.Enabled = false;
            }
            
        }

        //计时器事件 进行投票
        private void vote_timer_Tick(object sender, EventArgs e)
        {
            if (!is_start || count_all == 0) return;
            vote_timer.Enabled = false;    
            vote();
        }




       //姓名 号码
        string[] xing = { "赵"," 钱", "孙", "李", "周", "吴", "郑", "王","冯", "陈", "楮", "卫", "蒋", "沈", "韩", "杨",
                         "朱", "秦", "尤", "许", "何", "吕", "施", "张","孔", "曹", "严", "华", "金", "魏", "陶", "姜",
                         "戚", "谢", "邹", "喻", "柏", "水", "窦", "章","云", "苏", "潘", "葛", "奚", "范", "彭", "郎"};

        string[] ming = { "昌睿", "泉龙", "建利", "泰福", "长财", "红良", "昌逊", "卓臻", "昌哲", "承哲", "卓逊", "武隆",
                        "冰姿", "斌", "书琪", "季方", "元峰", "美茹", "雪莉", "娜芮", "茜茹", "沛秀", "敬瑶", "依洁", "巧梅",
                       "卿青", "政光", "思远", "卿清", "志昆", "锡俊", "婉柔", "文雅", "俊刚", "祝赢", "蕾", "禧", "齐", "兮" };

        string[] haomaf = { "138", "139", "150" };


        //投票: 选checkbox 填表格 点提交
        private void vote()
        {
            //如果已经刷票次数用完了  初始化这些值 然后停止
            if (count_all <= 0)
            {
                //is_start = false;
                return;
            }

   
           text_remain.Text = Convert.ToString(--count_all); //剩余次数-1 并显示到剩余次数文本上

           if (is_proxy && count_all > 0)
           {
               setProxy(ip[count_all -1]);
           }


            Random r = new Random(); 
            string q = xing[r.Next(48)]; //随机选择的姓氏
            string k = ming[r.Next(39)]; //随机选择的名字
            Application.DoEvents(); 

            string haoma = haomaf[r.Next(3)];//随机生成号码头三位
            for (int i = 0; i < 8; i++) //号码后8位生成
            {
                haoma += r.Next(10);
            }

            complete_timer.Enabled = true; //开始网页加载计时

            
            try
            {


                //下面的代码有一定几率抛出异常  即在网页加载不到所需要的元素的时候.  
                // 异常时  直接结束 但在上面网页加载计时已经开始 

                //选择第二个选项 动作click
                webBrowser1.Document.GetElementById("MainContent_RadioButtonList1_2").InvokeMember("click");
                // Application.DoEvents();
                //填表 随机的名字
                webBrowser1.Document.GetElementById("MainContent_UserName").InnerText = q + k;
                // Application.DoEvents();
                //填表 随机的号码
                webBrowser1.Document.GetElementById("MainContent_UserPhone").InnerText = haoma;
                // Application.DoEvents();

                //选择提交按钮 动作click
                webBrowser1.Document.GetElementById("MainContent_OKButton").InvokeMember("click");
                Application.DoEvents();
            }
            catch (System.Exception ex)
            {
               // is_start = false;
               
                //MessageBox.Show("页面中未找到投票对象","错误");
                
            }

        }


        //网页加载成功阶段 webBrowser1_DocumentCompleted 此时判断是否处于刷票中,是则再投一次。
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            complete_timer.Enabled = false; //kai
            if (!is_start) return;
            if (count_all > 0) //继续投票
            {
                if (is_interval)
                {
                    //如果使用间隔计时器 那开始间隔计时
                    vote_timer.Enabled = true;
                }
                else
                {
                    //没有使用间隔计时器 直接开始投票
                    vote();
              
                }
            }
            else //投完票了,
            {
                is_start = false; //投票标志清0
                is_interval = false;
                if (is_proxy)
                {
                    disProxy();
                    is_proxy = false;
                }         
                vote_timer.Enabled = false; //不管有没有计时器 计时器标志清0
                complete_timer.Enabled = false;
                MessageBox.Show("投票完成");
                
            }
        }


        //WebBrowser Navigated阶段 :  控制项已巡览至新文件且已开始载入新文件时  另外还有Navigating 表示寻觅开始前
        private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            IHTMLWindow2 win = (IHTMLWindow2)webBrowser1.Document.Window.DomWindow;
            string s = @"function confirm() {";
            s += @"return true;";
            s += @"}";
            s += @"function alert() {}";
            win.execScript(s, "javascript");

        }


        //结束按钮
        private void btn_end_Click(object sender, EventArgs e)
        {
            is_start = false;
            is_interval = false;
            is_proxy = false;
             disProxy();
            vote_timer.Enabled = false;
            MessageBox.Show("投票终止");

        }





        /* ================            代理IP模块              ====================
            1 导入代理IP
         *  2 使用代理IP
        */

        //导入代理IP的按钮 文本格式必须是IP:PORT才可以正确读取
        private void btn_ip_Click(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog1 = new OpenFileDialog(); //文件选择框
            fileDialog1.InitialDirectory = "d://";       // 默认打开的路径,可更改
            fileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
            fileDialog1.FilterIndex = 1;
            fileDialog1.RestoreDirectory = true;
            if (fileDialog1.ShowDialog() == DialogResult.OK)//点击OK选择文件
            {
                file_path = fileDialog1.FileName;
            }
            else
            {
                // file_path = null;
                return;
            }

            //  打开文件 获取IP与端口
            if (file_path.Length != 0)
            {

                FileStream fs = new FileStream(file_path, FileMode.Open);  //打开文件
                StreamReader m_streamReader = new StreamReader(fs); //读取文件
                m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin); //定位文件读取位置
                string strLine = m_streamReader.ReadLine(); //读取第一行
                int i = 0;
                do
                { 
                    ip[i] = strLine.Split('@')[0];
                   // textBox1.Text += ip[i];
                    strLine = m_streamReader.ReadLine();//读取下一行
                    i++;
                } while (strLine != null && strLine != "");
                m_streamReader.Close(); //关闭读取器
                m_streamReader.Dispose(); //释放资源
                fs.Close(); //关闭文件流
                fs.Dispose();//释放资源
                count_ip = i; //记录代理IP个数



           }
       }

        //点击代理IP的checkbox ,如果是使用代理IP,则将代理IP个数写到 刷票次数中 
        private void check_ip_CheckedChanged(object sender, EventArgs e)
        {
            if (check_ip.Checked == true)
            {
                text_count.Text = Convert.ToString(count_ip);
                text_count.Enabled = false;
            }
            else
            {
                text_count.Enabled = true;
            }
        }


        //设置代理IP
        private void setProxy(string ip)
        {
            if (ip == null || ip == "") return; //如果ip是空的 返回

            try
            {
       
                 //获取注册表对象
                Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
                //设置代理可用 
                rk.SetValue("ProxyEnable", 1);
                //设置代理IP和端口 
                rk.SetValue("ProxyServer", ip);
                rk.Flush();
                rk.Close();
                //使立即生效
                InternetSetOption(0, 39, IntPtr.Zero, 0);
                InternetSetOption(0, 37, IntPtr.Zero, 0);

               // InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, NULL);
               // InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL, NULL);

               // is_ip_changed = true;
                //webBrowser1.Refresh();
               // webBrowser1.Document.ExecCommand("Refresh", false, null);

            }
            catch (System.Exception ex)
            {

            }


        

        }

        private void disProxy()
        {
            try
            {
                Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
                //设置代理可用 
                rk.SetValue("ProxyEnable", 0);
                //设置代理IP和端口 
                rk.SetValue("ProxyServer", "");
                rk.Flush();
                rk.Close();
            //    is_ip_changed = false;
                //使立即生效
                InternetSetOption(0, 39, IntPtr.Zero, 0);
                InternetSetOption(0, 37, IntPtr.Zero, 0);
            }
            catch (System.Exception ex)
            {
            	
            }

        }

        private void complete_timer_Tick(object sender, EventArgs e)
        {
            //count_all--;
            complete_timer.Enabled = false;
            disProxy();
            webBrowser1.Navigate(url_str);
            //webBrowser1_DocumentCompleted(null, null);
            //MessageBox.Show("加载超时");
        } 
    }
}

你可能感兴趣的:(【,学,我的作品集,】,【C#   ,习笔记】)