Ho deciso di accettare il suggerimento di Paulo e provare a utilizzare Powershell/la riga di comando. Ho trovato un article sulla connessione a una rete tramite la riga di comando.
Dalla riga di comando, si può fare:
netsh wlan connect <profile-name> [name=<ssid-name>]
... dove la parte name=<ssid-name>
è facoltativo ed è necessariamente solo se il profilo contiene SSID multipli.
Tuttavia, sembra che il profilo debba già esistere sulla macchina affinché funzioni la riga di comando. Ho trovato uno forum post sulla creazione di un profilo in modo programmatico, ma non avevo voglia di passarci sopra.
Se il nome del profilo esiste già, poi da Python si può fare qualcosa di simile a quanto segue:
import subprocess
def connect_to_network(name):
process = subprocess.Popen(
'netsh wlan connect {0}'.format(name),
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
# Return `True` if we were able to successfully connect
return 'Connection request was completed successfully' in stdout
Si tratta di una soluzione imperfetta, e non sono del tutto sicuro se funzionerà in tutti i casi , ma ha funzionato per il mio caso particolare. Ho pensato di pubblicare ciò che mi è venuto in mente nel caso qualcuno volesse provare a modificarlo per renderlo migliore.
Significa collegarsi a una rete wireless? –
@FarukSahin: Sì, mi dispiace, questo è quello che intendevo. Modificherò la domanda. – Michael0x2a