<?xml version="1.0" encoding="utf-8"?>
<HmsProcessMediaConfig version="3.52">
  <ProcessMediaItemList>
    <ProcessMediaItem>
      <HotKey>0</HotKey>
      <Description>Запуск текущего выделенного элемента в Ace Player</Description>
      <Name>Запуск в Ace Player</Name>
      <ButtonName></ButtonName>
      <Button>-1</Button>
      <Script>///////////////////////////////////////////////////////////////////////////////
// Проверка, является ли ссылка ссылкой на медиа-файл или нет (ugly! but fast)
bool itsAFile(string sLink) {
  HmsRegExMatch("^(.*?)\\?", sLink, sLink);
  string sMime = HmsGetMimeType(ExtractFileExt(sLink));
  return ((sMime != "") || (Pos(".m3u8", sLink) &gt; 0));
}

///////////////////////////////////////////////////////////////////////////////
// Запуск команды в системе
void RunCmd(string sCmd) {
  try { Variant objShell = CreateOleObject(&apos;WScript.Shell&apos;); } except { }
  if (VarType(objShell)==varDispatch) objShell.Run(sCmd);
  else ShowMessage("Ошибка создания объекта ActiveX WScript.Shell для запуска командной строки.");
}

///////////////////////////////////////////////////////////////////////////////
// Получение http адреса HMS сервера
string GetHttAddressHMS() {
  THmsScriptUPnPDeviceList DeviceList = THmsScriptUPnPDeviceList.Create(udtDeviceMediaServer);
  if (DeviceList.Count &gt; 0) {
    THmsScriptUPnPDevice Device = DeviceList.Items[0];
    Result = "http://" + Device.HttpServerAddr;
  }
  DeviceList.Free();
  return Result;
}

///////////////////////////////////////////////////////////////////////////////
// Получение ссылок выделенных элементов и запуск их в VLC
void RunWithACE() {
  string sParams, sLink, sServer, sData, sAcePath;
  int i; THmsScriptMediaItem Item; THmsScriptMediaItemList ItemList;
  
  try {
    HmsShowProgress("Запуск ссылки в Ace Player...");

    if (HmsCurrentMediaListSelection.Count == 0) {
      ShowMessage("Не выделен ни один медиа файл.");
      return;
    }

    sAcePath = ExtractShortPathName(IncludeTrailingBackslash(RegistryRead(&apos;Software\\AceStream\\InstallDir&apos;)));
    if (sAcePath==&apos;\\&apos;) { ShowMessage(&apos;Не установлен AceStream player!&apos;); return; }
    sAcePath += &apos;Player\\ace_player.exe&apos;;  

    sServer = GetHttAddressHMS();
    
    for (i=0; i &lt; HmsCurrentMediaListSelection.Count; i++) {
      Item = HmsCurrentMediaListSelection.Items[i];
      
      sLink = Item[mpiFilePath];
      if (!itsAFile(sLink)) {
        sLink = Item[mpiMediaResourceSource];
      }
      
      if (sLink=="") { ShowMessage("Ошибка получения ссылки на медиа-файл. Пустая ссылка."); return; }
      
      if ((LeftCopy(sLink, 2)=="-i") || (LeftCopy(sLink, 4)=="\\\\.\\")) {
        sLink = sServer + Item.WebLink(Item.ItemOrigin);
        if (Pos(".asx", sLink) &gt; 0) {
          sData = HmsDownloadURL(sLink);
          HmsRegExMatch(&apos;HREF="(.*?)"&apos;, sData, sLink, 1, PCRE_CASELESS);
        }
      }
      if (HmsRegExMatch(&apos;torrent:([^?&amp;]+)&apos;, sLink, sLink)) sParams += &apos;--access=p2p_access&apos;;
      sParams += &apos; "&apos; + sLink + &apos;"&apos;;
      HmsSetProgress(Round(100 / HmsCurrentMediaListSelection.Count * (i+1)));
    }
    
    RunCmd(Format(&apos;"%s" --playlist-autostart %s&apos;, [sAcePath, sParams]));
    
  } finally { HmsHideProgress(); }
}

///////////////////////////////////////////////////////////////////////////////
//                     Г Л А В Н А Я   П Р О Ц Е Д У Р А                     //
{
  
  RunWithACE();
  
}
</Script>
      <ScriptSyntaxType>C++Script</ScriptSyntaxType>
      <ScheduleActive>0</ScheduleActive>
      <Schedule>
        <TaskName></TaskName>
        <TaskParams></TaskParams>
        <Occurs>0</Occurs>
        <DailyMode>0</DailyMode>
        <DailyDaysInterval>1</DailyDaysInterval>
        <WeeklyDaysOfWeek>127</WeeklyDaysOfWeek>
        <WeeklyWeekInterval>1</WeeklyWeekInterval>
        <MonthlyMode>0</MonthlyMode>
        <MonthlyDayOfMonth>1</MonthlyDayOfMonth>
        <MonthlyWeekOfMonth>0</MonthlyWeekOfMonth>
        <MonthlyDayOfWeek>0</MonthlyDayOfWeek>
        <MonthlyMonths>4095</MonthlyMonths>
        <DailyFrequency>0</DailyFrequency>
        <OnceAtTime>0</OnceAtTime>
        <ExecuteTimeList></ExecuteTimeList>
        <TimeUnit>0</TimeUnit>
        <TimeInterval>3600</TimeInterval>
        <TimeStart>0</TimeStart>
        <TimeEnd>86399</TimeEnd>
        <DateStart>42672</DateStart>
        <NoEndDate>-1</NoEndDate>
      </Schedule>
    </ProcessMediaItem>
  </ProcessMediaItemList>
</HmsProcessMediaConfig>
