У меня есть сверхлегкий ПК с Windows 7, который я использую во время своей ежедневной поездки на работу шины. Так как скорость процессора ограничена, я ищу способ отключить/разрешить Dropbox, когда я не подключен к сети WiFi. (Dropbox, кажется, использует устойчивый блок моего ЦП, даже когда он ничего не может синхронизировать.)
Существует опция отключить синхронизацию через значок панели задач Dropbox, но я хотел бы, чтобы это было максимально бесшовным. Я - разработчик.NET, таким образом, написание кода является опцией. До сих пор, что я рассмотрел:
Есть ли какие-либо опции, которые я пропускаю? Если бы кто-то мог бы указать на меня на ресурс, который помог бы мне реализовать что-то подобное, я буду ценить его.
Вы могли смотреть на эту статью. Это об отслеживании измененных сетевых соединений и использует API Win32.
Существуют также события.NET для изменений сети. Но, как описано в этом StackOverflow-вопросе, они не быстры или не надежны.
Кроме этого, доступное сетевое соединение не всегда равно доступному интернет-соединению. Необходимо протестировать, если интернет-соединение устанавливается.
Я не знаю, как проверить интернет-соединение, но afaik Microsoft проверяет с помощью ping-запросов его собственный сайт, чтобы определить, существует ли доступное соединение, и обновите сетевой значок подключения в systray. Для Вашей цели, после кода-snipet мог сделать работу:
try
{
System.Net.IPHostEntry = System.Net.Dns.GetHostByName("www.google.com");
return true;
}
catch
{
return false; // host not reachable.
}
Вы были бы готовы использовать ярлык для отключения беспроводной связи вместо того, чтобы использовать переключатель ноутбука?
Если так, попытайтесь использовать powershell, и devcon для запрошенного/разрешения/запрещения беспроводного адаптера, наряду с соответствующим Dropbox запускают/останавливают действие при включении/отключении:
Завершение работы:
taskkill /f /im Dropbox.exe /t
Запуск:
cd C:\Users\[WindowsUsername]\AppData\Roaming\Dropbox\bin
start Dropbox.exe
Devcon и примеры PowerShell: