我有一台装有 Windows 7 的超轻型 PC,每天上下班都会用它。由于处理器速度有限,我正在寻找一种在未连接到 WiFi 网络时禁用/启用 Dropbox 的方法。(Dropbox 似乎在无法同步任何内容时占用了大量 CPU。)
有一个选项可以通过 Dropbox 托盘图标禁用同步,但我希望这个功能尽可能无缝。我是一名 .NET 开发人员,因此编写代码是一种选择。到目前为止,我考虑过:
- 当我通过硬件开关启用/禁用 WiFi 卡时触发的 Windows 任务。这可以运行批处理文件来启动/停止 Dropbox 进程。不过,我找不到触发事件。
- 一个 Autohotkey 宏来启动/停止进程。太手动了。
- 一个可以检测网络连接并启动/停止 Dropbox 的 C# 应用。编写起来似乎很麻烦。
我是否忽略了其他选项?如果有人能指出可以帮助我实现类似功能的资源,我将不胜感激。
答案1
你可以看看这个文章。它是关于跟踪改变的网络连接并使用 Win32-api。
还有用于网络变化的 .Net 事件。但正如本文所述StackOverflow 问题,它们速度不快或不可靠。
除此之外,可用的网络连接并不总是等于可用的互联网连接。您必须测试互联网连接是否已建立。
我不知道如何检查互联网连接,但据我所知,微软正在 ping 自己的网站以确定是否有可用连接并更新系统托盘中的网络连接图标。对于您的目的,以下代码片段可以完成工作:
try
{
System.Net.IPHostEntry = System.Net.Dns.GetHostByName("www.google.com");
return true;
}
catch
{
return false; // host not reachable.
}
答案2
您是否愿意使用快捷方式来禁用无线,而不是使用笔记本电脑开关?
如果是这样,请尝试使用 powershell 和 devcon 来查询/启用/禁用无线适配器,以及在启用/禁用时执行适当的 dropbox 启动/停止操作:
关闭:
taskkill /f /im Dropbox.exe /t
启动:
cd C:\Users\[WindowsUsername]\AppData\Roaming\Dropbox\bin
start Dropbox.exe
Devcon 和 PowerShell 示例: