1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

DLL ISPicture2 13-02-2014

Библиотека для вставки видео в инсталлятор Inno Setup.

  1. Безумный Лорд Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    671
    Симпатии:
    946
    Пол:
    Мужской
    Пользователь Shegorat разместил новый ресурс:

    ISPicture2 - Библиотека для вставки видео в инсталлятор Inno Setup.

    Узнать больше об этом ресурсе...
     
    Comancheros, DICI BF, aibek1996 и 17 другим нравится это.
  2. Борода Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    718
    Симпатии:
    534
    Пол:
    Мужской
    От себя скажу. В планах - как и в старой версии - видео так-же как и в старой версии будет грузится из самой длл, в далеких планах - сделать единственный формат - бинк-видео, дабы вообще не зависеть от кодеков.
    Дополнительно планирую бмп-кнопки - пнг даже пробовать не буду - для этого есть botva2.dll.
    Совместимость с той-же botva2.dll невозможно, по техническим причинами. Единственное, по просьбам могу добавить возможность вставлять изображения через нее, но не кнопки.
    Ну и главное, чем я сейчас занимаюсь - это активное общение с лабораторией DrWeb, надеюсь к финалу они учтут некоторые особенности кода и срабатываний на эту длл-ку от них не будет.

    Ну и нужно добавить - не откажусь от любой посильной помощи :)
     
    Последнее редактирование: 14 июн 2012
    Adil, SaintPaul и ARS_23 нравится это.
  3. Ветеран Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    647
    Симпатии:
    253
    Новая версия.
    Добавлено воспроизведение видео.

    Тестируем. Отписываемся ;)
     
    sergey3695, DeVezor, Zimbo и 4 другим нравится это.
  4. Борода Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    718
    Симпатии:
    534
    Пол:
    Мужской
    Добавлено управление громкостью и воспроизведением, полная совместимость с Анси и Юникод.
    Решена проблема ложного срабатывания антивируса Доктор Веб.
     
    sergey3695, Winst@n, vint56 и 2 другим нравится это.
  5. Борода Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    718
    Симпатии:
    534
    Пол:
    Мужской
    Допилил и вылизал код воспроизведения видео, теперь уже навсегда избавился от потери рендера при выхода с рабочего стола.
     
  6. Ветеран

    Регистрация:
    1 авг 2012
    Сообщения:
    28
    Симпатии:
    0
    Any help Help is appreciated get this error in above script: Unknown identifier 'TTrackBar'

    I doesn't change anything in script!!
     
  7. Борода Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    718
    Симпатии:
    534
    Пол:
    Мужской
    Используй расширенную версию.
     
    Evilboy нравится это.
  8. Ветеран

    Регистрация:
    1 авг 2012
    Сообщения:
    28
    Симпатии:
    0
    can you give link plz!!
     
  9. Ветеран Проверенный

    Регистрация:
    19 дек 2011
    Сообщения:
    351
    Симпатии:
    401
    Evilboy нравится это.
  10. Ветеран

    Регистрация:
    1 авг 2012
    Сообщения:
    28
    Симпатии:
    0
    First of all thnx for helping me!!But the link you provided I download that software and install all 4 types : Ansi :Advanced,Standard Unicode:Advanced,Standard

    But getting this error in all :http://imgur.com/2ccYA

    Any help!!
     
  11. Ветеран Проверенный

    Регистрация:
    19 дек 2011
    Сообщения:
    351
    Симпатии:
    401
    Evilboy, author (Gnom) fixed this bug. redownload innoultra and try to reinstall.
     
    ferrum нравится это.
  12. Ветеран

    Регистрация:
    1 авг 2012
    Сообщения:
    28
    Симпатии:
    0
    Mailchick give me link to new one!!plz
     
  13. Ветеран Проверенный

    Регистрация:
    19 дек 2011
    Сообщения:
    351
    Симпатии:
    401
  14. Ветеран

    Регистрация:
    1 авг 2012
    Сообщения:
    28
    Симпатии:
    0
  15. Ветеран

    Регистрация:
    1 авг 2012
    Сообщения:
    28
    Симпатии:
    0
    Guys it worked now and compiled the script but it doesn't show anything!!


    Hey Mailchick an you give a sample !!
    I mean a rar in which there is video and required files which is working properly!!



    Thnx in advance!!
     
  16. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    У меня тоже видяхи нет, а Инка еще и выругалась матом при деинициализации....
     
    Последнее редактирование: 18 сен 2012
  17. Ветеран

    Регистрация:
    1 авг 2012
    Сообщения:
    28
    Симпатии:
    0
    PLz anyone give a example script with video which is working!!

    When I try to compile it get compiled but video doesn't load don't know hat's the problem!!
     
  18. Борода Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    718
    Симпатии:
    534
    Пол:
    Мужской
    Можно использовать модуль подгрузки кодека от South. Видео нет по единственной причине - нет кодека, который должен его воспроизвести.
    Код (Text):
    [Files]
    Source: compiler:Dll Pack\xvidcore.dll; Flags: dontcopy
    Source: compiler:Dll Pack\xvidvfw.dll; Flags: dontcopy
    [Code]
    //Created by South.Tver 08.2010
    //модуль проверяющий наличие в системе пользователя видеокодека XVID и устанавливающий его в случае отсутствия
    // !!! для записи в системный каталог и в реестр необходимы права администратора !!!
    var
      CanUseXvid,                 //флаг показывающий сможет ли в системе пользователя воспроизводиться видео,
                                  //  т.е. либо кодек уже был, либо его не было, но мы его успешно установили, т.е. кодеком можно пользоваться
                                  //в своем скрипте, после вызова XvidInstall, нужно использовать флаг CanUseXvid
                                  //  т.к. вероятность того, что кодек в системе отсутвует и мы его тоже не смогли установить
                                  //  хоть и не большая, но все-таки существует
                                  //например
                                  //...
                                  //if CanUseXvid then begin
                                  //  mciSendString('open myvideo.avi alias MyVideo parent '+IntToStr(WizardForm.Handle)+' style child','',0,0);
                                  //  mciSendString('put MyVideo window at 0 0 704 272','',0,0);
                                  //    mciSendString('play MyVideo repeat','',0,0);
                                  //end;
                                  //...
      XvidInstalled : boolean;    //локальная переменная для данного модуля, показывающая устанавливали мы кодек или нет. используется в XvidUnInstall
                                  //XvidInstalled=False кодек в системе пользователя уже установлен или мы не смогли его установить,
                                  //  т.е. при закрытии инсталла делать ничего не нужно
                                  //XvidInstalled=True кодека в системе не было, но мы его успешно установили,
                                  //  т.е. надо будет за собой прибраться при закрытии инсталла
    procedure XvidDelete;
    //тупо удаление кодека из системы
    begin
      DeleteFile(ExpandConstant('{sys}\xvidcore.dll'));
      DeleteFile(ExpandConstant('{sys}\xvidvfw.dll'));
      RegDeleteValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32','VIDC.XVID');
    end;
    procedure XvidInstall;
    //для проверки установлен ли кодек и его установки, в случае отсутствии кодека в системе, вызвать XvidInstall.
    //например
    //  procedure InitializeWizard;
    //  begin
    //    XvidInstall;
    //  end;
    //или
    //  function InitializeSetup:boolean;
    //  begin
    //    XvidInstall;
    //  end;
    var
      f:boolean;
    begin
      CanUseXvid:=False;    //пока кодеком нельзя пользоваться
      XvidInstalled:=False; //мы еще не устанавливали кодек
      //если кодек отсутствует или не корректно установлен
      if not (FileExists(ExpandConstant('{sys}\xvidcore.dll')) and
              FileExists(ExpandConstant('{sys}\xvidvfw.dll')) and
              RegValueExists(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32','VIDC.XVID')) then
        //попытемся установить кодек
        try
          XvidDelete; //на всякий случай чистим систему от остатков кодека, если была не удачная установка
          ExtractTemporaryFile('xvidcore.dll');
          ExtractTemporaryFile('xvidvfw.dll');
          //устанавливаем кодек - кладем dll'ки в %SystemRoot%\system32\ (из другого места работать не будет) и пишем необходимый ключик в реестр
          f:=FileCopy(ExpandConstant('{tmp}\xvidcore.dll'),ExpandConstant('{sys}\xvidcore.dll'),False);
          f:=f and FileCopy(ExpandConstant('{tmp}\xvidvfw.dll'),ExpandConstant('{sys}\xvidvfw.dll'),False);
          f:=f and RegWriteStringValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32','VIDC.XVID','xvidvfw.dll');
          if f then begin //если установка прошла успешно
            XvidInstalled:=True; //кодек мы поставили сами и его нужно будет потом удалить
            CanUseXvid:=True;    //кодек можно использовать
          end else XvidDelete;   //не удачная попытка установки кодека, чистим за собой на всякий случай
        except
        end
      else CanUseXvid:=True; //кодек уже существует в системе, можно пользоваться
    end;
    procedure XvidUnInstall;
    //при завершении приложения обязательно вызвать XvidUnInstall,
    //  если мы установили кодек в систему пользователя, то мусор в системе после себя оставлять очень плохо.
    //например
    //  procedure DeinitializeSetup;
    //  begin
    //    XvidUnInstall;
    //  end;
    //к тому же XvidInstall производит не полноценную установку кодека и в реестр вносятся не все записи.
    //  т.е. видео сможет воспроизводится, но конвертировать видео файл из какого-нибудь формата в xvid при такой устновке не получится
    begin
      //если XvidInstall устновил кодек, то удаляем его
      //если кодек уже был в системе или отсутствовал, а мы не смогли его установить, то ничего не делаем
      if XvidInstalled then XvidDelete;
    end;
    Модуль достаточно понятно разъяснен, чтобы им мог воспользоваться даже начинающий. но самое главное - идея - подобным образом можно задействовать любой кодек, зная его файлы и то, какие библиотеки должны быть временно зарегистрированы в системе. Естественно, формат видео должен соответствовать используемому кодеку.
     
  19. Ветеран

    Регистрация:
    16 сен 2012
    Сообщения:
    312
    Симпатии:
    64
    Пол:
    Мужской
    Ошибка тут c9373afbfe.jpg
     
  20. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    896
    Симпатии:
    613
    Shift85, просто видео нету, хотя прописаны действия. вот я закомментил ненужное. чтобы было видео, нужна проверка на кодеки (постом выше скрипт) ну и сами файлы (*.avi & xvidcore.dll & xvidvfw.dll)
    Код (Text):
    [Setup]
    AppName=My Application
    AppVersion=1.5
    DefaultDirName={pf}\My Application

    [Files]
    Source : IsPicture2.dll; Flags : dontcopy;
    ;Source: fon.avi; Flags: dontcopy
    Source: fon.bmp; Flags: dontcopy

    [ code]
    //----------------------------------------------------------------------------------\\
    const   // жирность шрифта
      FW_DONTCARE   = 0;
      FW_THIN       = 100;
      FW_ULTRALIGHT = 200;
      FW_LIGHT      = 300;
      FW_NORMAL     = 400;
      FW_MEDIUM     = 500;
      FW_DEMIBOLD   = 600;
      FW_BOLD       = 700;
      FW_ULTRABOLD  = 800;
      FW_BLACK      = 900;

    procedure IsPicInit(Handle : HWND);
       external 'IsPicInit@files:IsPicture2.dll stdcall delayload';
      // начало работы
     
    procedure IsPicAddImg(fName : AnsiString);
       external 'IsPicAddImg@files:IsPicture2.dll stdcall delayload';
      // изображение на заднем фоне
     
    procedure IsPicAddVideo(fName : AnsiString; l, t, w, h : Integer);
       external 'IsPicAddVideo@files:IsPicture2.dll stdcall delayload';
      // видео на заднем фоне
     
    function IsPicReFont(height, Weight : Integer; Italic : Boolean) : HWND;
       external 'IsPicReFont@files:IsPicture2.dll stdcall delayload';
      // подмена шрифта для борьбы с артефактами сглаживания
      // height - Font.Height
      // Weight - жирность
      // Italic - наклонность
     
    procedure IsPicStopVideo;
       external 'IsPicStopVideo@files:IsPicture2.dll stdcall delayload';
      // остановка воспроизведения видео - после этой команды
      // видео будет перемотано на начало и поставлено на паузу
     
    procedure IsPicPauseVideo(play : Boolean);
       external 'IsPicPauseVideo@files:IsPicture2.dll stdcall delayload';
      // пауза видео
      // play -
      // если значение True, то продолжаем воспроизводить
      // если значение False, то ставим на паузу
     
    procedure IsPicSetVolume(volume : Integer);
       external 'IsPicSetVolume@files:IsPicture2.dll stdcall delayload';
      // громкость видео от -10000 до 0.
      // -10000 - минимальное значение
      // 0 - максимальное значение
     
    procedure IsPicDeInit;
       external 'IsPicDeInit@files:IsPicture2.dll stdcall delayload';
      // не забываем вызвать в DeinitializeSetup
    //----------------------------------------------------------------------------------\\

    procedure RunStop(Sender: TObject);
    begin
    //  IsPicPauseVideo(TNewCheckBox(Sender).Checked);
    end;

    procedure SetVolume(Sender: TObject);
    begin
    //  IsPicSetVolume(TTrackBar(Sender).Position);
    end;

    procedure InitializeWizard();
    begin
      ExtractTemporaryFile('fon.bmp');
    //  ExtractTemporaryFile('fon.avi');
      with WizardForm do
      begin
        WizardBitmapImage.Free;
        WizardBitmapImage2.Free;
       
    //----------------------------------------------------------------------------------\\
      // подменяем шрифты
        Font.Handle := IsPicReFont(Font.Height, FW_DEMIBOLD, False);
        WelcomeLabel1.Font.Handle := IsPicReFont(WelcomeLabel1.Font.Height, FW_BOLD, False);
        PageNameLabel.Font.Handle := IsPicReFont(PageNameLabel.Font.Height, FW_BOLD, False);
        FinishedHeadingLabel.Font.Handle := IsPicReFont(FinishedHeadingLabel.Font.Height, FW_BOLD, False);
    //----------------------------------------------------------------------------------\\
     //----------------------------------------------------------------------------------\\
       // цвет прозрачности - $000008. Указываем его для элементов,которые должны быть прозрачными
        Color := $000008;
        WelcomePage.Color := $000008;
        InnerPage.Color := $000008;
        FinishedPage.Color := $000008;
        MainPanel.Color := $000008;
        DirEdit.Color := $000008;
        ReadyMemo.Color := $000008;
    //----------------------------------------------------------------------------------\\
        Font.Color := clYellow;
        // запускам
        IsPicInit(Handle);
      end;
    //----------------------------------------------------------------------------------\\
      // добавляем изображение на задний фон
      IsPicAddImg(ExpandConstant('{tmp}\fon.bmp'));
      // добавляем видео на задний фон
    //  IsPicAddVideo(ExpandConstant('fon.avi'), 137, 113, 360, 200);
    //----------------------------------------------------------------------------------\\

    //----------------------------------------------------------------------------------\\
      // чекбокс - Пуск - Пауза
      with TNewCheckBox.Create(WizardForm) do
      begin
        Parent := WizardForm;
        SetBounds(ScaleX(24), ScaleY(330), ScaleX(90), ScaleY(14));
        Caption := 'Пуск - Пауза';
        Checked := true;
        OnClick := @RunStop;
      end;
      // трекбар - Громкость
      with TTrackBar.Create(WizardForm) do
      begin
        Parent := WizardForm;
        SetBounds(ScaleX(152), ScaleY(320), ScaleX(100), ScaleY(37));
        Min := -5000;
        Max := 0;
        Position := -3000;
        TickMarks := tmBoth;
        TickStyle := tsNone;
        OnChange := @SetVolume;
      end;
    //  IsPicSetVolume(-3000);
    //----------------------------------------------------------------------------------\\
    end;

    procedure DeinitializeSetup();
    begin
      // завершаем работу
      IsPicDeInit;
    end;
     
    Shift85 нравится это.

Поделиться этой страницей