Come scrivere il codice per creare un hotspot in un computer portatile usando il linguaggio C
Creazione di un hotspot Wifi con l'aiuto di CMD e C#
Introduzione
Ci sono molte applicazioni su internet che possono convertire il tuo computer portatile o in un hotspot Wifi come Conectify. Questo è ciò che farà questa applicazione, ma senza funzioni avanzate come la condivisione di internet. Tuttavia la creazione è molto semplice, basta specificare l'SSID e una chiave e il gioco è fatto!
Come funziona
Il principio di base è che l'effettiva creazione è nascosta dietro il comando DOS che dobbiamo emettere, questa applicazione è il front end (versione GUI) di questa irritante procedura di emissione dei comandi. così senza entrare nel pasticcio di accedere direttamente all'hardware e ai servizi, possiamo raggiungere il nostro scopo.
Sfondo
Lo sfondo di base del DOS è buono e anche della conoscenza di base del C# per implementare il codice.
Using the Code
Assuming you have created the project and in Windows Form there are two text boxes, two labels and a button, copy and paste the following code in the Click event handler of Button.
string ssid = textBox1.Text, key = textBox2.Text;
if (!connect)
{
if (textBox1.Text == null || textBox1.Text == "")
{
MessageBox.Show("SSID cannot be left blank !",
"Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (textBox2.Text == null || textBox2.Text == "")
{
MessageBox.Show("Key value cannot be left blank !",
"Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (key.Length >= 6)
{
Zedfi_Hotspot(ssid, key,true);
textBox1.Enabled = false;
textBox2.Enabled = false;
button1.Text = "Stop";
connect = true;
}
else
{
MessageBox.Show("Key should be more then or Equal to 6 Characters !",
"Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
else
{
Zedfi_Hotspot(null, null, false);
textBox1.Enabled = true;
textBox2.Enabled = true;
button1.Text = "Start";
connect = false;
}
Following is the method. Just copy it in your project to use it.
private void Zedfi_Hotspot(string ssid, string key,bool status)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = false;
Process process = Process.Start(processStartInfo);
if (process != null)
{
if (status)
{
process.StandardInput.WriteLine("netsh wlan set hostednetwork mode=allow
ssid=" + ssid + " key=" + key);
process.StandardInput.WriteLine("netsh wlan start hosted network");
process.StandardInput.Close();
}
else
{
process.StandardInput.WriteLine("netsh wlan stop hostednetwork");
process.StandardInput.Close();
}
}
}
One thing to remember these DOS commands work only if the application has admin privileges. If the application has no privileges, then the hotspot will not be created so to solve this problem, we have to check whether we have privileges or not. The following method is for this purpose.
public static bool IsAdmin()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal p = new WindowsPrincipal(id);
return p.IsInRole(WindowsBuiltInRole.Administrator);
}
This method will return false or true accordingly. If this returned false then it means we have no privileges so we have to restart the application in admin mode to restart. The following code must be copied in your project.
- public void RestartElevated()
- {
- ProcessStartInfo startInfo = new ProcessStartInfo();
- startInfo.UseShellExecute = true;
- startInfo.CreateNoWindow = true;
- startInfo.WorkingDirectory = Environment.CurrentDirectory;
- startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
- startInfo.Verb = "runas";
- try
- {
- Process p = Process.Start(startInfo);
- }
- catch
- {
- }
- System.Windows.Forms.Application.Exit();
- }
Now the last step is to create the form Load event where we actually want to check the privileges and do something accordingly copy the following code into form Load event.
- if (!IsAdmin())
- {
- RestartElevated();
- }
Also it is desired that if we close the application, then the Hotspot should also be stopped for this. Just copy the following code into the form Closing event.
Zedfi_Hotspot(null,null,false);
Application.Exit();
Now all is done.
Otherwise in c
in Windows 7, Windows 10 x64 and x86
#include
#include
#include
#include "icservice.h"
#include "wlanhost.h"
extern WCHAR *adapter_id;
int main(int argc, char** argv)
{
printf("Starting WiFi Hotspot..\n");
start_wifi_hotspot("TITAN_WORLD", "im_a_titan");
Sleep(1500);
printf("Share connection...\n");
share_connection(adapter_id);
printf("Press any key to stop Wifi Hotspot\n");
getchar();
stop_wifi_hotspot();
printf("bye\n");
return EXIT_SUCCESS;
}
try it!!!
Articoli simili
- Qual è la differenza tra linguaggio macchina, linguaggio assembly e linguaggio di alto livello nei computer?
- Quali sono le differenze tra codice macchina, codice byte, codice oggetto e codice sorgente?
- È una buona idea scrivere un motore di gioco in Python? Se no, qual è il miglior linguaggio per scrivere un motore di gioco?
- Qual è la differenza tra bytecode, codice nativo, codice macchina e codice assembly?