Ru-Board.club
← Вернуться в раздел «Программы»

» Autoplay Media Studio

Автор: tavria2
Дата сообщения: 21.05.2010 08:40
2All
Пример SlideShow с различными эффектами, используется IsSlideShow.dll v1.02 от ExpeditoR.
Автор: LEDRA
Дата сообщения: 21.05.2010 14:02
Подскажите еще такой момент.
в процессе выполнения кода - удаляются файлы и папки - так задуманно
потом создаются новые
а потом я эти новые не могу удалить, пока не закрою программу, подскажите куда копать?
Автор: lorents
Дата сообщения: 21.05.2010 20:13
tavria2
благодарю. Вы бы не могли бы помочь, мне надо сделать проверку отдельного приложения, т.е. запущен он или нет, если нет, то мой проект его запускает, если он запущен, то выдвинуть на переднее окно.
еще один вопрос, как пользоваться новым таймером, что-то я ни как не могу понять как это сделать в AMS8?

и последний вопрос:
мне надо сделать презентацию на все окно (Style у меня параметр Kiosk), и я не знаю как сделать чтобы моя презентация увеличивалась пропорционально размеру окна.
один словом мне надо сделать также как PowerPoint

Пожалуйста, помогите мне это очень надо.
Автор: tavria2
Дата сообщения: 21.05.2010 22:01
lorents

Цитата:
Вы бы не могли бы помочь, мне надо сделать проверку отдельного приложения, т.е. запущен он или нет, если нет, то мой проект его запускает, если он запущен, то выдвинуть на переднее окно.

Для поиска окна отдельного приложения используй Window.EnumerateProcesses - получишь дескриптор (hWnd) этого приложения.
Выдвинуть окно отдельного приложения... - ты это уже делал с окном своего проекта, подставляй полученный дескриптор окна отдельного приложения и делай то же самое.

Цитата:
как пользоваться новым таймером, что-то я ни как не могу понять как это сделать в AMS8?

Ничего сложного, при создании таймера теперь нужно указывать его идентификатор (ID), что позволяет создать несколько таймеров с разными идентификаторами.
В событии On Timer добавилась переменная e_ID, которая содержит идентификатор таймера вызвавшего это событие.
Например, создаем два таймера с идентификаторами 1 и 2 и интервалом 3 и 5 секунд:

Page.StartTimer(3000, 1);
Page.StartTimer(5000, 2);

В событии On Timer пишем скрипт для каждого таймера:

if (e_ID == 1) then
-- здесь скрипт для таймера с идентификатором 1
elseif (e_ID == 2) then
-- здесь скрипт для таймера с идентификатором 2
end


Цитата:
я не знаю как сделать чтобы моя презентация увеличивалась пропорционально размеру окна.
один словом мне надо сделать также как PowerPoint

Я никогда не пользовался PowerPoint и как оно выглядит, понятия не имею.
Если тебе нужен пропорциональный ресайз объектов, то это недавно уже обсуждалось, поищи где-то в конце 3-й части - был пример...
Предупреждаю сразу, что при большом кол-ве объектов - при ресайзе обеспечены тормоза.
Автор: lorents
Дата сообщения: 22.05.2010 09:28
tavria2
спасибо за все, все получилось.

Цитата:
Предупреждаю сразу, что при большом кол-ве объектов - при ресайзе обеспечены тормоза.

понятно, у меня как раз объектов море, придется все-таки на PowerPoint'е

Вы бы не могли бы посмотреть пример WaterMark.apz он у меня не работает в AMS 8, просто пример классный, я раньше его через флеш делал.

и последняя просьба, Вы бы не могли посмотреть что с этим кодом не так, AMS 7 все работает как надо, а в AMS 8 не хочет.
ошибка следующая:



[more]
Код: if (e_ID == 1) then
    if (range < 100) then
        range = range + 1
        Progress.SetCurrentPos("Progress1", range);
    else
        Page.StopTimer();
        t1 = File.Find("AutoPlay", "*.*", true, false, nil, nil);
        --TextFile.WriteFromTable("AutoPlay\\Scripts\\file.dat", t1, false);
        t3 = {};
        error = Application.GetLastError();
        if error ~= 0 then
            Page.Jump("Page3");
        else
            t2 = TextFile.ReadToTable("AutoPlay\\Scripts\\file.dat");
            error = Application.GetLastError();
            if (error ~= 0) then
                Page.Jump("Page3");
            else
                bSuccess = true;
                for nIdx2, sValue2 in t2 do
                    bFound = false;
                    for nIdx1, sValue1 in t1 do
                        if sValue2 == sValue1 then
                            bFound = true;
                            break;
                        end
                    end
                    if not bFound then bSuccess = false;
                        Table.Insert(t3, Table.Count(t3)+1, sValue2);
                    end
                end
            end
        end
        if bSuccess then
            Application.LoadScript("AutoPlay\\Scripts\\flashax.lua");
            Application.LoadScript("AutoPlay\\Scripts\\ie.lua");
            strIEVer = ir_GetIEVersion();
            strFlashVer = ir_GetFlashAXVersion();
            IE = String.CompareFileVersions("6.0.0.0", strIEVer);
            Flash = String.CompareFileVersions("9.0.0.0", strFlashVer);
            if (IE == 1) or (Flash == 1) then
                Page.Jump("Page2");
            else
                File.Run("AutoPlay\\Docs\\Project.exe", "", "", SW_SHOWNORMAL, false);
                Window.Close(Application.GetWndHandle(), CLOSEWND_SENDMESSAGE);
            end
        else
            Page.Jump("Page4");
        end
    end
end
Автор: PAVELNEXT
Дата сообщения: 22.05.2010 09:40
Что нужно прописать в коде, чтобы одно из всех окон проекта имело возможность изменения размера окна (растягивание мышкой).


On Preload

-- Нужен код который будет разрешать изменение окна

On Close

-- после перехода на другое окно возращает "стандартный" размер проекта.
Window.SetSize(Application.GetWndHandle(), 635, 430);


Возможность растягивания на весь проект мне не подойдёт , нужно лишь на одно окно , если можете помогите пожалуйста.
Автор: hhoolloodd
Дата сообщения: 22.05.2010 10:39
помогите нубу, хочу создать небольшую программку для себя, при на ведении на кнопку высвечивалась картинка, полностью весь форум перечитать не риально,помогите буду очень признателен, пойму быстрее с шаблоном, у меня ams7. За ранние Спасибо!
Автор: tavria2
Дата сообщения: 22.05.2010 11:49
lorents
В функции WaterMark.Create удалить строку:
hWnd = FindWindowEx(hWnd, 0, 0, 0); -- дескриптор вложенного окна проекта

Цитата:
Вы бы не могли бы посмотреть пример WaterMark.apz он у меня не работает в AMS 8

Это ошибка теперь будет часто встречаться, т.к. в AMS изменился Lua-движок с 5.0 на 5.1, в котором другой подход в работе с таблицами.

Пример работы с таблицей для Lua 5.0: for n, Value in t do
Пример работы с таблицей для Lua 5.1: for n, Value in pairs(t) do


PAVELNEXT
Цитата:
Возможность растягивания на весь проект мне не подойдёт , нужно лишь на одно окно

Можно через WinApi:
On Preload растягиваемой страницы:

Код: hWnd = Application.GetWndHandle();
nStyle = DLL.CallFunction("user32.dll", "GetWindowLongA", hWnd..",-16", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
DLL.CallFunction("user32.dll", "SetWindowLongA", hWnd..",-16,"..nStyle+262144, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
Автор: lorents
Дата сообщения: 22.05.2010 12:57
tavria2
спасибо, все работает
надо будет теперь запомнить с циклами

Хотел спросить есть возможность перенести lua5.1.dll и lua51.dll в папку Plugins, просто раньше было лучше, когда был один экзешник?

hhoolloodd
в событии On Enter в кнопке пропиши

Код: Image.SetVisible("Image1", true);
Автор: tavria2
Дата сообщения: 22.05.2010 13:22
lorents

Цитата:
Хотел спросить есть возможность перенести lua5.1.dll и lua51.dll в папку Plugins

Нельзя, т.к. они нужны для работы проекта, раньше использовалась статическая Lua-библиотека, которая находилась в exe, теперь это динамическая Lua-библиотека.
Преимущество динамической в том, что появилась возможность подключать различные Lua-модули, как это делается, пока не знаю.

Цитата:
помоги пожалуйста, у меня опять проблемы с тем кодом, теперь ошибка

Я не знаю, откуда у тебя переменная ir_GetIEVersion принимает значения, возможно из подгружаемого тобой lua-скрипта ie.lua, если так, то ищи проблему в ie.lua.
Автор: lorents
Дата сообщения: 22.05.2010 13:35
tavria2
Вот мой проект
http://multi-up.com/276587
перемеренная ir_GetIEVersion берется из ie.lua, а ie.lua в свою очередь из IE.det (AutoPlay Media Studio 8.0\Plugins\Detect)
Автор: lerik2703
Дата сообщения: 22.05.2010 14:37
Ну я с внешними lua-скриптами не работал но разместив код из flashax.lua и ie.lua в глобальных функциях как бы строка File.Run("AutoPlay\\Docs\\Project.exe", "", "", SW_SHOWNORMAL, false); была выполнена !
Автор: hhoolloodd
Дата сообщения: 22.05.2010 14:51
tavria2

спасибо за помощь))
Автор: tavria2
Дата сообщения: 22.05.2010 15:06
lorents
У тебя ошибки в обоих Lua-файлах: ie.lua и flashax.lua.
Некорректная проверка полученных данных из реестра.
Например:
Код: strVersion = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer","Version",true);
if (Application.GetLastError() ~= 0) then    
...
Автор: lorents
Дата сообщения: 22.05.2010 15:24
tavria2
а почему в AMS 7 таких проблем не было?
если тебе не затруднит, ты бы не мог сделать ie.lua и flashax.lua
Автор: lerik2703
Дата сообщения: 22.05.2010 15:30
tavria2
данные скрипты были написаны программистами AMS ты хочешь сказать что это их косяк?но ведь это работает в глобальных функциях!
Автор: tavria2
Дата сообщения: 22.05.2010 15:37
lorents

Цитата:
а почему в AMS 7 таких проблем не было?

Видимо разработчики поправлили и я считаю, это логично.
Цитата:
если тебе не затруднит, ты бы не мог сделать ie.lua и flashax.lua

Ты и сам поправишь, замени строки:
Код: переменная = Registry.GetValue(HKEY_LOCAL_MACHINE, ...
if (Application.GetLastError() ~= 0) then
Автор: lorents
Дата сообщения: 22.05.2010 15:44
tavria2
смотри я сделал так, но вот ошибка не исчезла

Код: function ir_GetIEVersion()
    local bOK = true;
    local strVersion = "0.0.0.0";
    
    -- Check to ensure key exists
    bOK = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer");
    
    if (bOK) then
        -- Get version of IE (4 and above)
        strVersion = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer","Version",true);
        if (strVersion == 0) then    
            -- Version 3 and lower are stored in a different reg value
            strVersion = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer","IVer",true);
            if (strVersion == 0) then    
                bOK = false;
            else
                -- assign correct version number based on value in registry
                if strVersion == "103" then
                    strVersion = "3.0";
                elseif strVersion == "102" then
                    strVersion = "2.5";
                elseif strVersion == "101" then
                    strVersion = "2.0";
                elseif strVersion == "100" then
                    strVersion = "1.0";
                end
            end
        end
    end
    return strVersion;
end
Автор: lerik2703
Дата сообщения: 22.05.2010 15:45
tavria2
Я на 8-ке тестирую 7-ка не принимает расширение .autoplay

Добавлено: lorents
и 0 по сути это ошибка зачем приравнивать к ошибке?
Автор: tavria2
Дата сообщения: 22.05.2010 15:54
lorents

Код: function ir_GetIEVersion()
local bOK = true;
local strVersion = "0.0.0.0";

-- Check to ensure key exists
bOK = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer");

if (bOK) then
-- Get version of IE (4 and above)
strVersion = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer","Version",true);
if (strVersion == "") then
-- Version 3 and lower are stored in a different reg value
strVersion = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer","IVer",true);
if (strVersion == "") then
bOK = false;
else
-- assign correct version number based on value in registry
if strVersion == "103" then
strVersion = "3.0";
elseif strVersion == "102" then
strVersion = "2.5";
elseif strVersion == "101" then
strVersion = "2.0";
elseif strVersion == "100" then
strVersion = "1.0";
end
end
end
end
return strVersion;
end
Автор: lerik2703
Дата сообщения: 22.05.2010 16:14

Цитата:
я сижу на Personal Edition 8.0.1.1

Это которую типа на халяву раздавали нет я на Professional 8.0.0.18 верней тока 2 файла о этой версии а устанавливал 8.0.0.16
Автор: tavria2
Дата сообщения: 22.05.2010 16:15
lerik2703
Мда, протестировал более тщательно - я оказался не прав.

Действительно разное поведение скриптов внутренних и внешних и по поводу
возвращения 0, если нет данных в реестре - я тоже не прав.
Так же неправ по поводу некорректности ir-скриптов.

Похоже на баг в работе AMS с внешними скриптами.
Автор: lorents
Дата сообщения: 22.05.2010 16:19
tavria2
вставил в проект скрипт, и проблема исчезла
а теперь какой код оставить, который ты дал или разработчики?
Автор: tavria2
Дата сообщения: 22.05.2010 16:27
lorents
Первоначальный ir-код абсолютно правильный - сделай, как сказал lerik2703 - перенеси функции из Lua-файлов в событие Global Functions, а загрузку скриптов из файлов удали или закомментируй:
--Application.LoadScript("AutoPlay\\Scripts\\flashax.lua");
--Application.LoadScript("AutoPlay\\Scripts\\ie.lua");
Автор: lorents
Дата сообщения: 22.05.2010 16:32
tavria2, lerik2703
Спасибо, все получилось
Автор: tavria2
Дата сообщения: 22.05.2010 16:40
Оказалось действие Application.LoadScript - вообще не работает .
Автор: lerik2703
Дата сообщения: 22.05.2010 19:52
tavria2
ну да даже HelloWorld не работает видимо поторопились они с 8-ой хотя это только проба пера при проверке на ошибку выдает сообщение "A runtime error occurred while calling the function." кстати lorents синтаксис при остановке таймера требует его ID жалко что нет команды остановки всех таймеров!
в плагине timer вроде есть...?
Автор: PAVELNEXT
Дата сообщения: 22.05.2010 20:46
tavria2 благодарю вас все получилось !
Автор: qqwwrr
Дата сообщения: 22.05.2010 22:46
Скажите, пожалуйста, как можно с помощью waterctrl.dll сделать так, чтобы на одной странице было несколько рисунков бмп с этим эффектом в разных местах???

И ещё вопрос. Скорость загрузки эффекта зависит от разрешения бмп (640*480) или от его веса (1 мб)?

И ещё один, простите за наглость...
Как сделать так, чтобы поиск по ключевым словам не искал по одному символу? Как можно сделать ограничение на кол-во символов при поиске?
А то введёшь в поиск букву А, и он выводит все страницы, где в ключевых словах встречается буква А (((

Заранее благодарю, с уважением...

Версия аутоплэй 7.5....
Автор: tavria2
Дата сообщения: 23.05.2010 08:51
qqwwrr

Цитата:
Скажите, пожалуйста, как можно с помощью waterctrl.dll сделать так, чтобы на одной странице было несколько рисунков бмп с этим эффектом в разных местах???

Применить эффект к нескольким картинкам нельзя - это ограничение dll.

Цитата:
И ещё вопрос. Скорость загрузки эффекта зависит от разрешения бмп (640*480) или от его веса (1 мб)?

Зависит от размера в пикселях.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140

Предыдущая тема: Media Player Classic - Home Cinema (MPC-HC)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.