现在笔记本建立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了!