пятница, 25 ноября 2011 г.

APGuard. Следим за AdvertisePro.

К сожалению программам иногда свойственно зависать или падать, особенно если они работают круглосуточно. Не является исключением и наша программа вывода видео на табло - AdvertisePro. Чтобы сделать нашу жизнь чуточку проще :) - я написал службу, которая следит за тем, чтобы наша программа всегда была запущена и по возможности определяет, что программа продолжает трудится и не отлынивает зависнув. Необходимо уточнить, что программа будет запущенна сразу после входа пользователя в систему (имя пользователя можно указать). Поэтому может понадобиться настройка системы на автологон при рестарте или запуске компьютера. Также наша служба может следить и за некоторыми другими службами, которые нужны для программы - первый кандидат служба nibus. Итак, встречайте AdvertisePro Guard (APGuard)
Перед установкой убедитесь, что установлен .NET Framework 2.0, скачайте файл msi и установите его. После установки служба APGuard будет автоматически запускаться после рестарта, поэтому необходимо внести все настройки в конфигурационный файл APGuard.exe.config расположенном в папке с установленной программой. Рекомендую сделать резервную копию перед внесением изменений. После внесения изменений можно запустить службу командой net start apguard.

Теперь подробнее про файл APGuard.exe.config.

Открываем его текстовым редактором и находим нужный нам раздел.
Красным подчеркнут полный путь к наше программе, зеленым выделено пустое значение, а синим показан элемент списка названий служб, за которыми нам надо следить, просто добавьте такую же строчку, поменяв название службы, если необходимо следить еще за какой-нибудь службой. Временной интервал задается в формате ЧЧ:ММ:СС. Теперь описания каждого параметра:
  • AdvertiseProFile - полный путь к программе.
  • WorkingDir - рабочая папка. Если не задана, то папка с программой.
  • GuardTimerInterval - интервал проверки работоспособности, здесь каждые 10 сек.
  • CommandLineArgs - параметры для запуска программы.
  • WatchIpgm - проверять зависший ipgm.exe (если вы не знаете для чего это - оставьте).
  • IpgmMaxDuration - время в течении которого ожидается завершение выполнения ipgm.exe.
  • WatchApplication - выполнять наблюдение (True/False).
  • UserName - имя пользователя, при входе которого будет начато наблюдение и запущена программа. Если не указано, то для любого.
  • AppMoniker - название префикса моникера для нахождения запущенного экземпляра программы. Задается в файле конфигурации AdvertisePro.cfg, пример: <process priority="default" autonomous="false" debug_level="0" moniker="AdvertisePro:"></process>. Необязательный параметр. В случае задания позволяет лучше определить работоспособность программы AdvertisePro.
  • ShedulerName - имя компонента Планировщик (см. статьи про Планировщик и компоненты). Необязательный параметр. В случае задания позволяет лучше определить работоспособность программы AdvertisePro. Работает при указании AppMoniker.
  • RestartDelay - задержка при перезапуске программы. Необходима, так как при быстром рестарте предыдущий экземпляр программы не успевает выгрузиться и блокирует новый.
  • WatchedServices - список служб для наблюдения.
После внесения изменений запустите службу командой net start apguard. Если вы все указали правильно, то программа должна запуститься.
Служба APGuard хранит файл с журналом сообщений в папке .\logs в которую у нее должен быть доступ (касается особенно для систем Vista+ с активным UAC).

вторник, 22 ноября 2011 г.

VLC в роли проигрывателя

VLC - кроссплатформенный мультимедиа плеер с открытым исходным кодом. Для воспроизведения файлов мультимедиа не требуется установка дополнительных кодеков, они уже «встроены» в программу. VLC может воспроизводить DVD и потоковое незашифрованное (без DRM) видео (IPTV). Для удалённого управления программой можно использовать интерфейсы telnet, HTTP. Подробнее о VLC.
Я написал дополнение nidirectx (Nata-Info DirectX (DirectDraw) video output) которое позволяет использовать VLC для проигрывания плейлиста одновременно на двух мониторах. В качестве второго монитора используется видеоэкран (аналогично поступает и AdvertisePro). Данный плагин работает на ОС Windows XP и выше. Также используя это дополнение можно воспроизводить потоковое видео или устройство видеозахвата.

Установка.

  • Установите VLC (проверял версии 1.1.x)
  • Найдите папку plugins в месте установки VLC, скопируйте туда дополнение libnidirectx-plugin.dll
  • Чтобы не задавать каждый раз параметры в командной строке откройте файл конфигурации, расположенный в %APPDATA%\VLC\vlcrc. Учтите, что перевод строки там как в *NIX, поэтому в Блокноте строки не разделены, но FAR на F4 умеет разделять строки.
  • Найдите строку начинающуюся на #clone-vout-list= и измените на clone-vout-list=,nidirectx
    (удалите "решетку" в начале строки и не забудьте запятую в значении параметра)
  • Найдите строку #vout-filter= и измените ее на vout-filter=clone
  • Найдите строку начинающуюся на #width= измените на width=320 Вместо 320 поставьте ваше разрешение экрана по горизонтали.
  • Найдите строку начинающуюся на #height= измените на height=240, вместо 240 поставьте ваше разрешение экрана по вертикали
  • Чуть ниже будет строка начинающаяся на #crop= также убираем символ комментария и заменяем на crop=4:3 (320:240 -> 4:3). Для Вашего разрешения укажите свои пропорции.
  • В конец файла добавьте строки
    [nidirectx]
    nidirectx-device=\\.\DISPLAY2
  • В настройках экрана не забудьте расширить рабочий стол на второй монитор (режим DualView), отключить хранители экрана, задать черный фон для рабочего стола.