wifi共享dll的实现

现在笔记本建立wifi热点的软件比比皆是,那我们也来自己做一个试试看。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace ClassLibrary1
{
    public class Wifi
    {
        private string wifiname;
        private string wificode;
        public string WifiName
        {
            get
            {return wifiname;}
            set
            { wifiname=value; }
        }
        public string WifiCode
        {
            get
            { return wificode; }
            set
            { wificode=value; }
        }
        Process p = new Process();
        [DllImport("kernel32")]//这是两个API函数,用来读写ini文件。函数位于system32里面的kerne32.dll
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);//参数意义是:段名,关键字,关键字的值,ini文件的完整路径
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);//参数意义是:段名,关键字,缺省,缓冲区,缓冲区大小,ini完整路径
        public void startwifi()
        {
            p.StartInfo.FileName = "cmd.exe";//打开cmd.exe。
            p.StartInfo.UseShellExecute = false;//不使用shellexcute打开的
            p.StartInfo.RedirectStandardInput = true;//重输入,可以多次输入
            p.StartInfo.RedirectStandardOutput = true;//重输出
            p.StartInfo.CreateNoWindow = true;//不出现cmd窗口
            p.Start();//进程开始         
            p.StandardInput.WriteLine("netsh wlan set hostednetwork mode=allow ssid={0} key={1} keyusage=persistent",wifiname,wificode);
            p.StandardInput.WriteLine("netsh wlan start hostednetwork");//写入上述两句dos命令
            WritePrivateProfileString("wifiname", "name", wifiname, "c://a.ini");
            WritePrivateProfileString("wifipasswords", "passwords", wificode, "c://a.ini");//将wifi名和WiFi密码保存到Ini文件中
           
        }

        public void stopwifi()
        {
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StandardInput.WriteLine("netsh wlan stop hostednetwork");//关闭wifi
        }
        public void usersetting()
        {
            StringBuilder temp=new StringBuilder(255);
            int i = GetPrivateProfileString("wifiname", "name", "无法读取对应数值!", temp, 255, "c://a.ini");
            wifiname = temp.ToString();
            int j = GetPrivateProfileString("wifipasswords", "passwords", "无法读取对应数值!", temp, 255, "c://a.ini");
            wificode = temp.ToString();//程序启动后自动加载WiFi名和WiFi密码
        }
        
    }
}
编译完成后会产生一个dll文件,引用这个dll,就可以进行开发了!

下面是一个实例:

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 ClassLibrary1;

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
         Wifi wf = new Wifi();
        private void Form1_Load(object sender, EventArgs e)
        {
            wf.usersetting();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            wf.WifiName = textBox1.Text;
            wf.WifiCode = textBox2.Text;
            wf.startwifi();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            wf.stopwifi();
        }

    }
}

本人使用win8,校园网环境,wifi秒开!

如果你是第一次用这个程序建立热点,当你启动完wifi的时候,进入网络与共享中心,打开适配器设置,你会发现多了一个虚拟的托管适配器,记住它的名字。然后找到有网络连接的那个适配器(可能是本地连接,宽带连接等),右键——属性——共享——选择第一项,家庭组网络选择你记住的那个多出来的适配器的名字,一切都OK了!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值