<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; HTA: воспроизведение AVI-видео]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=1255&amp;type=atom" />
	<updated>2008-03-13T09:01:04Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=1255</id>
		<entry>
			<title type="html"><![CDATA[HTA: воспроизведение AVI-видео]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=9745#p9745" />
			<content type="html"><![CDATA[<p>HTA-скрипт проигрывает AVI-ролик в дочернем окне немодального диалога IE, работает только с несжатыми AVI.<br />Используются библиотеки <a href="http://www.script-coding.com/dynwrap.html">dynwrap.dll</a> и <a href="http://www.script-coding.com/AutiItX.html">AutoItX3.dll</a>.<br />Автор примера - <strong>Poltergeyst</strong>.<br />Во вложении поста - AVI-файл для примера воспроизведения.<br /></p><div class="codebox"><pre><code>&lt;HTML&gt;
&lt;META HTTP-EQUIV=Content-Type content=&#039;text/html;charset=windows-1251&#039;&gt;
&lt;TITLE&gt;AVI_CLASS&lt;/TITLE&gt;
&lt;HEAD&gt;
    &lt;HTA:APPLICATION
        ID=&quot;AVI_CLASS&quot;
        APPLICATIONNAME=&quot;AVI_CLASS&quot;    
            CAPTION=&quot;YES&quot;
        SYSMENU=&quot;YES&quot;
        MAXIMIZEBUTTON=&quot;NO&quot;
            MINIMIZEBUTTON=&quot;NO&quot;
               SINGLEINSTANCE=&quot;YES&quot;
        /&gt;
    &lt;STYLE type=text/css&gt;
        P        {border: 2px;border-style: groove;}
        BODY        {font-family: Lucida Console; font-size: 14px; color: white; cursor: hand;background-color: #0080ff;}
    &lt;/STYLE&gt;
&lt;/HEAD&gt;
 
&lt;BODY SCROLL=&quot;NO&quot;&gt;
&lt;CENTER&gt;&lt;P&gt;Щелкните по области окна чтобы запустить ролик&lt;/P&gt;&lt;/CENTER&gt;
&lt;SCRIPT&gt;
    //---------------------------------------------------------------------------------
    //Нет гарантий!Используете на свой страх и риск!
    //---------------------------------------------------------------------------------
    //Скрипт проигрывает AVI-ролик в дочернем окне немодального диалога IE.
    //Работает только с несжатыми AVI
    //---------------------------------------------------------------------------------
    //    Lang.:JavaScript
    //    Используется библиотека dynwrap.dll
    //    Используется библиотека AutoItX3.dll,v3.2.0.1
    //    ОС Win98/Me
    //---------------------------------------------------------------------------------
    //Область объявления общих переменных и констант
    //---------------------------------------------------------------------------------
        var WM_USER            =eval(&#039;0x0400&#039;)
        var SW_SHOWNORMAL             =1

    //---------------------------------------------------------------------------------
    //Стили окна
        var WS_BORDER            =eval(&#039;0x00800000&#039;)
        var WS_CHILD            =eval(&#039;0x40000000&#039;)
        var WS_VISIBLE            =eval(&#039;0x10000000&#039;)

    //---------------------------------------------------------------------------------
    //Сообщения для SysAnimate32
        var ACS_CENTER            =eval(&#039;0x0001&#039;)
        var ACS_TRANSPARENT        =eval(&#039;0x0002&#039;)
        var ACS_AUTOPLAY        =eval(&#039;0x0004&#039;)
        var ACM_OPENA            =WM_USER+100
        var ACM_OPENW            =WM_USER+103
        var ACM_PLAY            =WM_USER+101
        var ACM_STOP            =WM_USER+102
        var ACN_START                   =1
        var ACN_STOP                    =2
    
    //---------------------------------------------------------------------------------
    //Параметры общего назначения
        dlgTitle=&#039;Воспроизведение AVI&#039;
        var aHwnd
        var TIMESET_STATE

    //---------------------------------------------------------------------------------
    //Вызовы API
        var CreateWindowExA_CALL    =new ActiveXObject(&quot;DynamicWrapper&quot;)
        CreateWindowExA_CALL.Register    (&quot;USER32.DLL&quot;,&quot;CreateWindowExA&quot;,&quot;i=lsslllllllll&quot;,&quot;f=s&quot;,&quot;r=h&quot;)
    //---------------------------------------------------------------------------------
        var SendMessage_CALL        =new ActiveXObject(&quot;DynamicWrapper&quot;)
        SendMessage_CALL.Register    (&quot;USER32.DLL&quot;,&quot;SendMessage&quot;,&quot;i=huuu&quot;,&quot;f=s&quot;,&quot;r=l&quot;)
    //---------------------------------------------------------------------------------
        var SM_CALL            =new ActiveXObject(&quot;DynamicWrapper&quot;)
        SM_CALL.Register        (&quot;USER32.DLL&quot;,&quot;SendMessageA&quot;,&quot;i=llls&quot;,&quot;f=s&quot;,&quot;r=l&quot;)
    //---------------------------------------------------------------------------------
        var ShowWindow_CALL        =new ActiveXObject(&quot;DynamicWrapper&quot;)
        ShowWindow_CALL.Register    (&quot;USER32.DLL&quot;,&quot;ShowWindow&quot;,&quot;i=ll&quot;,&quot;f=s&quot;,&quot;r=l&quot;)
    //---------------------------------------------------------------------------------
        var UpdateWindow_CALL        =new ActiveXObject(&quot;DynamicWrapper&quot;)
        UpdateWindow_CALL.Register    (&quot;USER32.DLL&quot;,&quot;UpdateWindow&quot;,&quot;i=l&quot;,&quot;f=s&quot;)
    //---------------------------------------------------------------------------------
    //Основные агрегатные объекты
        var ax3        =new ActiveXObject(&#039;AutoItX3.Control&#039;)
        var fsObj    =new ActiveXObject(&#039;Scripting.FileSystemObject&#039;)
    //---------------------------------------------------------------------------------
        window.resizeTo    (430,100)
        window.moveTo    (0,-200)
            
        //----------------------------------------------------------
        //Включение немодального диалога и изменение его параметров
        wDlg=window.showModelessDialog(&quot;about: &lt;HTML&gt;&lt;TITLE&gt;&quot;+dlgTitle+&quot;&lt;/TITLE&gt;&lt;meta http-equiv=Content-Type content=text/html; charset=windows-1251&gt;&lt;BODY BGCOLOR=#8000ff&gt;&lt;/BODY&gt;&lt;/HTML&gt;&quot;)
        with (wDlg.external)
        {
            dialogWidth    =20
            dialogHeight    =20
            dialogTop    =10
            dialogLeft    =10
        }
        //----------------------------------------------------------
        //Создание окна анимации
        hwnd=        eval(&#039;0x&#039;+ax3.WinGetHandle(dlgTitle,&#039;&#039;))
        aHwnd=CreateWindowExA_CALL.CreateWindowExA(0,
                            &quot;SysAnimate32&quot;,
                            &quot;&quot;,
                            ACS_AUTOPLAY|ACS_CENTER|WS_BORDER|WS_CHILD|WS_VISIBLE, //ACS_CENTER|WS_BORDER|WS_CHILD|WS_VISIBLE
                            10,55,300,200,
                            hwnd,0,0,0)
        ax3.sleep(100)
        //----------------------------------------------------------
        //Это заставит окно обновится и перерисоваться
        ShowWindow_CALL.ShowWindow(hwnd,SW_SHOWNORMAL)
        UpdateWindow_CALL.UpdateWindow(hwnd)
        ax3.sleep(100)
        ax3.WinSetState(dlgTitle,&#039;&#039;,ax3.SW_HIDE)
        ax3.sleep(200)
        ax3.WinSetState(dlgTitle,&#039;&#039;,ax3.SW_SHOW)
        //----------------------------------------------------------
        //Открытие AVI-клипа из текущего каталога
            file=fsObj.GetFile(window.document.location.pathname).ParentFolder+&#039;\\action.avi&#039;
            res=SM_CALL.SendMessageA(aHwnd,ACM_OPENA,0,file)
        ax3.sleep(100)
        //----------------------------------------------------------
        //Запуск воспроизведения
        //Этот набор инструкций можно отменить если присвоить окну SysAnimate32 стиль ACS_AUTOPLAY
        //Тогда ролик будет проигрываться автоматически
/*
            var STEP    =-1    //Шаг воспроизведения
            var INIT_FRAME    =1    //Начальный кадр
            var END_FRAME    =40    //Конечный кадр
            res=SendMessage_CALL.SendMessage(aHwnd,ACM_PLAY,STEP,INIT_FRAME+eval(&#039;0x10000&#039;)*END_FRAME)
        ax3.sleep(100)
        */
        checkAVIState()
        //----------------------------------------------------------
        
    //---------------------------------------------------------------------------------
    function checkAVIState()        //Проверка на существование окна с роликом
    {
        TIMESET_STATE=window.setTimeout(&#039;checkAVIState()&#039;,100)
        if (!ax3.WinExists(dlgTitle,&#039;&#039;)){window.moveTo(0,0);return window.clearTimeout(TIMESET_STATE)}
    }            
    
    //---------------------------------------------------------------------------------
    //Обработчики событий

    function document.onclick()        {return location.reload()}
    //---------------------------------------------------------------------------------
    function document.oncontextmenu()    {return false}
    //---------------------------------------------------------------------------------
    function window.onresize()        {window.resizeTo(430,100)}
    //---------------------------------------------------------------------------------
    //Poltergeyst
&lt;/SCRIPT&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2008-03-13T09:01:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=9745#p9745</id>
		</entry>
</feed>
