Intranet Downloader - NItra

Введение

       Предположим ваш компьютер входит в состав некоторой одноранговой сети (домашная сеть, сеть общажития и т.п.), то есть такой, в которой все коипьютеры равноправны и нет отдельный выделенных ресурсов типа файловых или каких-либо других серверов. Такие файлообменные сети как правило обладают одним существенным недостатком: каждый пользователь может отключиться в любое время, отключить вас от своих ресурсов и как следсвие, прерванный на самом интересном месте фильм оставит самый неприятный осадок в настроении.

      У данной проблемы есть два решения: либо выделять отдельный сервер на котором будут храниться фильмы, либо пользоваться дополнительными программами (закачивалками типа ReGet, FlashGet и т.п.), поскольку разработчики Windows не встроили возможность докачки файлов в операционную систему. Однако, существующие программы заточены для закачки из Internet, обладают богатыми настройками, которые в локальной сети не имеют никакого значения и перегружают интерфейс пользователя.

Описание

      Данная программа решает все проблемы с докачкой больших файлов в локальной сети, обладает очень простым и симпатичным интерфейсом. Ниже перечислены ее основные возможности:

  • Автоматическое продолжение закачки в случае обрыва соединения
  • Параллельная закачка нескольких файлов (до 60)
  • Добавление файлов в список при закачке
  • Закачка файлов в каталог по умолчанию
  • Сохранение списка закачиваемых файлов
  • Интеграция с Windows Explorer
  • Добавление файлов в список из командной строки

    Главное окно программы Интеграция с Windows Explorer

    Архитектура решения

    Список закачиваемых файлов сохраняется в xml-файле nitra.info. Выделено самостоятельное ядро закачки, для которого можно написать свой собственный интерфейс.

    Физически решение представлено 3-мя компонентами: собственно самой программой закачки, расширением Explorer-а для вставки дополнительных пунктов меню, а также "пусковиком" - COM-компонентом, при помощи которого можно, например, запускать закачку фильма из Internet Explorer-а, если в вашей сети предусмотрено представление списка фильмов на некотором сайте.

    Пример скрипта для добавления фильма в список закачки с HTML-страницы фильмового сервера:

    function on_download(what) 
    { 
    	try {
    		var starter = new ActiveXObject('Intradownloader.Starter');
    		
    		starter.startDownload("\"" + what + "\"");
    	}
    	catch(e)
    	{
    		alert('Данная операция станет доступной только после установки\n' + 
    			  'Intranet Downloader [NItra].\n\n' +
    			  'Место расположения: ...');
    	}
    	return false;
    }
    

    Исходные коды

          Программа распространяется в исходных кодах, где можно посмотреть примеры использования overlapped-операций (асинхронных чтения файлов, многопоточности, некоторых интерфейсных решений (прилипание главного окна к границам рабочего стола, диалог с настройками, добавление иконки в панель задач (с восстановлением в случае падения/закрытия Explorer), добавление панели инструментов на диалог и т.п.), добавление пунктов меню в контекстное меню Explorer.

     Evgeny Savitsky © 2002-2003