2012-12-29 21 views
7

我想寫一個Python腳本,可以讓我的電腦聯想到無線接入點的WiFi AP間,定名爲作爲一個字符串。例如,我可能會指定我想連接到linksys,並且我的腳本會使計算機執行此操作。將我的Windows電腦來使用Python

我看着this問題,但無法瞭解什麼不去看提供的鏈接。

有人可以指出我正確的方向嗎?

+0

你的意思是連接到無線網絡? –

+0

@FarukSahin:是的,對不起,這就是我的意思。我將編輯該問題。 – Michael0x2a

回答

4

我決定把保羅的建議,並嘗試使用PowerShell /命令行。我找到了一個關於通過命令行連接到網絡的article

在命令行中,你可以這樣做:

netsh wlan connect <profile-name> [name=<ssid-name>] 

...其中name=<ssid-name>部分是可選的,不一定只在配置文件包含多個SSID。

但是,它看起來像個人資料,以便在機器上必須已經存在的命令行的東西的工作。我確實在編程上創建了一個forum post配置文件,但我不想通過它進行拉票。

如果配置文件名已經存在,那麼從Python中,你可以做類似如下的內容:

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   

這是一個完美的解決方案,而我不能完全肯定是否會在任何情況下工作,但它確實適用於我的特殊情況。我想我會發布我想出來的,以防別人想要嘗試修改它以使其更好。

+0

請注意,'subprocess.call()'比'subprocess.communicate()'更容易... ...另請參閱[本答案](http://stackoverflow.com/questions/12381733/how-to-run-cmd-窗口-的netsh-命令使用的Python) –

1

您鏈接的答案有關從Windows API調用低級C函數的問題。擺弄低級別的東西會讓我的大腦受傷。

a .Net wrapper around the native C calls,你可以直接從IronPython使用更高級別的API。不幸的是,它沒有很好的記錄,但是查看C#示例和挖掘源代碼應該比調用基礎API更容易。這是一個非常以Windows爲中心的解決方案,所以你可能會更好served by powershell

相關問題