- PVSM.RU - https://www.pvsm.ru -

Экономим затраты на интернет от Yota

Пролог

Пару месяцев назад в моем городе запустил свою LTE сеть оператор беспроводной связи Yota. Немного поколебавшись, я решил, что стоит попробовать – в надежде, что с LTE Yota дела обстоят лучше, чем с 3G от операторов большой тройки. И, должен сказать, что пока ничуть не разочаровался в своем решении.

И дело не только в том, что скорость выше, а покрытие города ничуть не хуже. Используя интернет от Yota я трачу меньше денег, чем раньше. Ведь есть в личном кабинете такой замечательный регулятор скорости, который можно поставить на минимум, и увеличивать скорость только тогда, когда это действительно необходимо.

Да, делать это через браузер не очень удобно. Таким образом мы перешли к сути поста.

Автоматизация

Итак, было принято решение написать клиент для управления скоростью модема. В качестве языка программирования использовался C#. Каюсь, пошел самой простой дорогой – использовал компонент WebBrowser. Первая версия была на Windows Forms, но недавно я переписал проект на WPF. Сама программа и проект в Visual Studio – в конце поста. А сейчас я бы хотел остановить внимание на некоторых аспектах.

Первое, с чем мне пришлось столкнуться – для отображения страниц в WebBrowser используется старая версия Internet Explorer, и для того, чтобы использовать, к примеру, 8 версию, необходимо добавить в раздел реестра HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION ключ с именем, соответствующим названию программы, содержащий значение DWORD 8000. Я выделил для этого маленький класс:

using Microsoft.Win32;
using System;

class BrowserEmulation
{
  private BrowserEmulation() { }

  /// <summary>
  /// Активация эмуляции новой версии
  /// </summary>
  /// <param name="appName">Название файла приложения</param>
  public static void Enable(string appName = null)
  {
    if (appName == null) appName = AppDomain.CurrentDomain.FriendlyName;
    RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"SoftwareMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION", true);
    if (regKey != null)
    {
      try
      {
        regKey.GetValue(appName).ToString();
      }
      catch
      {
        regKey.SetValue(appName, 8000, RegistryValueKind.DWord);
      }
    }
  }

  /// <summary>
  /// Дезактивация эмуляции новой версии
  /// </summary>
  /// <param name="appName">Название файла приложения</param>
  public static void Disable(string appName = null)
  {
    if (appName == null) appName = AppDomain.CurrentDomain.FriendlyName;
    RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"SoftwareMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION", true);
    if (regKey != null)
    {
      try
      {
        regKey.DeleteValue(appName);
      }
      catch { }
    }
  }
}

Как добавлять программу в автозагрузку написано практически на любом заборе, так что описывать это смысла не имеет.

По поводу рестарта WPF приложения, для этого у меня есть совсем крошечный класс:

using System.Windows.Forms;

class Restart
{
  private Restart() { }

  public static void Go()
  {
    Application.Restart();
    System.Windows.Application.Current.Shutdown();
  }
}

Стоит признать, что, в общем-то, ничего интересного в коде программы нет.

Результат

Окно авторизации:
Экономим затраты на интернет от Yota

Идет загрузка:
Экономим затраты на интернет от Yota

Управление скоростью:
Экономим затраты на интернет от Yota

Окно настроек:
Экономим затраты на интернет от Yota

Вы можете загрузить: Всегда последняя версия программы [1] или Проект Visual Studio 2012 [2]

Автор: ratswolf

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/lte/25190

Ссылки в тексте:

[1] Всегда последняя версия программы: http://flatrow.com/Develop/YotaRoot.zip

[2] Проект Visual Studio 2012: http://ratswolf.com/wp-content/uploads/2013/01/Source1105.zip

[3] Источник: http://habrahabr.ru/post/166285/