|
核心代码:
1 /**
2 * 利用cmd命令创建wifi热点
3 * */
4 private void btCreateWifi_Click(object sender, EventArgs e)
5 {
6 string hotSpotName = wifiName.Text.Trim();
7 string hotSpotPass = wifiPass.Text.Trim();
8 if (hotSpotPass.Length < 8)
9 {
10 MessageBox.Show("密码必须大于8位,请重新输入...");
11 wifiPass.Focus();
12 }
13 else
14 {
15 if (createHotSpot(hotSpotName, hotSpotPass))
16 MessageBox.Show("wifi热点创建成功\n热点名为:" + hotSpotName + "\n密码为:" + hotSpotPass);
17 else
18 MessageBox.Show("wifi热点创建失败");
19 }
20 }
21
22 /**
23 * 执行Cmd命令创建wifi热点
24 * */
25 public Boolean createHotSpot(string hotSpotName, string hotSpotPass)
26 {
27 //创建wifi热点三部曲,仅适用于win7下
28 string cmd1 = "netsh wlan set hostednetwork mode=allow";
29 string cmd2 = "netsh wlan set hostednetwork ssid=" + hotSpotName + " key=" + hotSpotPass;
30 string cmd3 = "netsh wlan start hostednetwork";
31
32 string[] cmd = new string[] { cmd1, cmd2, cmd3 };
33
34 string rs = execMutipleCmd(cmd);
35
36 cmdMsg.AppendText(rs);
37
38 return regexCheckIfSuccess(rs, "已启动承载网络");
39 }
40 /**
41 * 用正则匹配是否成功
42 * */
43 public Boolean regexCheckIfSuccess(string msg, string reg)
44 {
45 Regex r = new Regex(reg);
46 Match m = r.Match(msg);
47 if (m.Success)
48 return true;
49 else
50 return false;
51 }
52
53 private void stopWifi_Click(object sender, EventArgs e)
54 {
55 if (stopHotSpot())
56 MessageBox.Show("禁止wifi热点成功");
57 else
58 MessageBox.Show("禁止操作失败");
59 }
60
61 public Boolean stopHotSpot()
62 {
63 string cmd = "netsh wlan set hostednetwork mode=disallow";
64
65 string rs = execSingleCmd(cmd);
66 cmdMsg.AppendText(rs);
67 return regexCheckIfSuccess(rs, "承载网络模式已设置为禁止");
68 }
69 /**
70 * 执行单条命令
71 * */
72 public static string execSingleCmd(string cmd)
73 {
74 //因为cmd直接在window system32目录下,所以无需加路径
75 ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
76
77 //设置不显示cmd窗口
78 startInfo.CreateNoWindow = true;
79 startInfo.UseShellExecute = false;
80
81 startInfo.RedirectStandardInput = true;
82 startInfo.RedirectStandardOutput = true;
83
84 Process process = Process.Start(startInfo);
85 process.StandardInput.AutoFlush = true;
86
87 process.StandardInput.WriteLine(cmd);
88 process.StandardInput.WriteLine("exit");
89 //等待程序执行完退出进程
90 process.WaitForExit();
91 //截获输出流
92 string rs = process.StandardOutput.ReadToEnd();
93 process.Close();
94 return rs;
95 }
96
97 /**
98 * 执行多条命令
99 * */
100 public static string execMutipleCmd(string[] cmd)
101 {
102 //因为cmd直接在window system32目录下,所以无需加路径
103 ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
104
105 //设置不显示cmd窗口
106 startInfo.CreateNoWindow = true;
107 startInfo.UseShellExecute = false;
108
109 startInfo.RedirectStandardInput = true;
110 startInfo.RedirectStandardOutput = true;
111
112 Process process = Process.Start(startInfo);
113 process.StandardInput.AutoFlush = true;
114 for (int i = 0; i < cmd.Length; ++i)
115 process.StandardInput.WriteLine(cmd);
116 process.StandardInput.WriteLine("exit");
117 //等待程序执行完退出进程
118 process.WaitForExit();
119 //截获输出流
120 string rs = process.StandardOutput.ReadToEnd();
121 process.Close();
122 return rs;
123 }
|
|
|