【C#】Winform工具-閃訊下快速分享Wifi(源碼)

 

A.工具簡介

       最近忙着改論文,但迫於手機沒有流量,反覆共享電腦wifi的操做已經讓我忍無可忍,而「獵豹wifi」「360wifi分享」等工具曾致使電腦屢次睡死(多是臺式機的USB網卡兼容性問題)。所以抽空寫了個便利工具,徹底利用windows自帶功能實現,主要合併了「命令提示符」的若干指令:html

  1. 設置windows自帶wifi熱點;
  2. 開啓、關閉wifi;
  3. 自動關機與取消;(主要是本人喜歡睡前趴牀上再玩會手機,又懶得起身關電腦)

        以及部分.NET對系統進行管理:git

  1. 關閉閃訊進程(避免閃訊鎖定共享功能);
  2. 利用windows自帶的庫實現自動共享,避免手動設置。(不少人可能卡在這步上)

        經測試,本工具不影響閃訊心跳驗證,上網穩定,不會像手動共享那樣在幾分鐘後就會斷網。github

        固然,若是不是浙江一帶的校園網用戶可能不須要閃訊這類進行撥號,直接開啓熱點進行分享便可。正則表達式

    M[AVEDG@)2W%]ZD$IJ4FQOO

        Github源程序(項目文件): https://github.com/Blz-Galaxy/Tools-Wifi-Sharingwindows

 


 

B.指令與執行

相關命令提示符(也能夠用BAT腳本方式調用)網絡

  • 設置系統自帶的虛擬網卡Microsoft Virtual WiFi Miniport Adapter,從而建立熱點(只需在首次使用前配置):
    netsh wlan set hostednetwork mode=allow ssid=Blz_Galaxy key=1234567890

      此處熱點標識爲Blz_Galaxy,密碼爲1234567890,請自行修改。工具

  • 開啓分享的Wifi熱點
    netsh wlan start hostednetwork
  • 關閉Wifi熱點
    netsh wlan stop hostednetwork
  • 定時關機(3600秒後關機):
    shutdown -s -t 3600
  • 設定關機後也能夠取消關機計劃
    shutdown -a

 

  • C#調用控制檯指令方式
    System.Diagnostics.Process _pCmd;
    
    _pCmd = new System.Diagnostics.Process();
    _pCmd.StartInfo.FileName = "cmd.exe";
    _pCmd.StartInfo.UseShellExecute = false;
    _pCmd.StartInfo.RedirectStandardOutput = true;
    _pCmd.StartInfo.RedirectStandardInput = true;
    _pCmd.StartInfo.CreateNoWindow = true;
    _pCmd.Start();
    
    //執行目標指令
    _pCmd.StandardInput.WriteLine("shutdown -a");

      再一例:測試

  • Regex reg = new Regex(@"[\u4e00-\u9fa5]");//正則表達式
    if (reg.IsMatch(textBox1.Text) || reg.IsMatch(textBox2.Text))
    {
        MessageBox.Show("不能含有漢字");
        return;
    }
    if (textBox2.Text.Length < 8)
    {
        MessageBox.Show("密碼8位以上");
        return;
    }
    
    _strWrite = String.Format("netsh wlan set hostednetwork mode=allow ssid={0} key={1}", this.textBox1.Text, this.textBox2.Text);
    _pCmd.StandardInput.WriteLine(_strWrite);

 

C.經過C# (.NET) 進行系統管理

  • 自動關閉指定進程(如閃訊的「singleNet」進程)

     取代了人工在任務管理器中查找進程,解救密集恐懼症患者~this

  • Process[] processes = Process.GetProcessesByName(ProcessName);
    foreach (Process instance in processes)
    {
        try
        {
            if (instance.ProcessName == ProcessName)
                instance.Kill();;
        }
        catch { }

     

    具體能夠參看:  【C#】指定進程關閉&閃訊下的Wifi共享spa

 

  • 調用\Windows\system32\hnetcfg.dll,即能使用「NETCONLib」實現自動共享 (關鍵)
    try
    {
        string connectionToShare = this.textBox3.Text; // 被共享的網絡鏈接
        string sharedForConnection = this.textBox4.Text; // 須要共享的網絡鏈接
    
        NetSharingManager manager = new NetSharingManager();
        var connections = manager.EnumEveryConnection;
    
        foreach (INetConnection c in connections)
        {
            var props = manager.NetConnectionProps[c];
            var sharingCfg = manager.INetSharingConfigurationForINetConnection[c];
            if (props.Name == connectionToShare)
            {
                sharingCfg.EnableSharing(tagSHARINGCONNECTIONTYPE.ICSSHARINGTYPE_PUBLIC);
            }
            else if (props.Name == sharedForConnection)
            {
                sharingCfg.EnableSharing(tagSHARINGCONNECTIONTYPE.ICSSHARINGTYPE_PRIVATE);
            }
        }
    }
    catch
    {
        MessageBox.Show("請打開網絡和共享中心·查看是否是已經鏈接Internet!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

      取代手動進入「網絡共享中心->更改適配器設置->singleNetPPPoE屬性->共享->勾選容許分享internet->選擇分享目標」這一連串操做,懶人福音~

      

相關文章
相關標籤/搜索