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

» Indigo Rose AutoPlay Media Studio

Автор: Zloy_Gelud
Дата сообщения: 10.02.2013 21:33
25Gnom25 -- теперь понятно.

Код: Image.HideAll = function (tImages)
if not tImages then
tImages = {};
local tObjects = Page.EnumerateObjects();
if tObjects then
for i, sObject in pairs(tObjects) do
if (Page.GetObjectType(sObject) == OBJECT_IMAGE) then
tImages[#tImages + 1] = sObject;
end
end
end
end
if (#tImages > 0) then
for i = 1, #tImages do
Image.SetVisible(tImages[i], false);
end
end
end

-- скрывает изображения Image2 и Image3
Image.HideAll({'Image2', 'Image3'});
-- скрывает все изображения на странице
--Image.HideAll();
Автор: 25Gnom25
Дата сообщения: 10.02.2013 21:39
Спасибо огромное
Автор: Lana2010
Дата сообщения: 11.02.2013 06:17
Здравствуйте! Помогите пожалуйста. Мне надо сделать так, чтобы при нажатии на кнопку открывался xtml файл в браузере (он воспроизводит видео). Вообщем есть видео урок, который надо запустить в браузере. Я совсем новичок, пыталась выбирать действия на вкладке "быстрое действие" - не получается, в браузере открывается html, а видео не проигрываться. ЧТО и ГДЕ надо прописать чтобы все работало? Буду благодарна за помощь, ну очень надо сделать, а я полный чайник в этом....(((((
Автор: ra700
Дата сообщения: 11.02.2013 18:52
Lana2010, а если просто в браузере открыть html файл, то фильм запускается? Если да, то проблем запуска в AMS не должно быть через быстрый выбор файла. Если фильм не запускается при выборе html-файла, то надо разбираться с ним. Предполагаю, что файлы созданы в программе Camtasia?
Автор: Lana2010
Дата сообщения: 11.02.2013 19:41
Если просто в браузере открыть html файл, то фильм запускается, все нормально показывает, а вот в AMS почему то не хочет....показывает черный экран - видео не загружает. да файлы созданы в программе Camtasia
Автор: ra700
Дата сообщения: 11.02.2013 20:13
Быстрое действие - Open Document - выбираем файл html, который идет вместе с видеофайлом. Правда, в зависимости от размера видео нужно ждать подзагрузки.
Автор: Lana2010
Дата сообщения: 12.02.2013 11:29
Быстрое действие - Open Document - Я так делала не получается. А вот если выбрать действие View Website и указать путь к файлу html то видео проигрывается, но ведь так не правильно и при создании autorun.exe на моем компьютере все работает, а вот уже на другом компьютере выдает ошибку, что файл не найден (потому что там ссылка на файл который находиться на моем компьютере).
А размер видео маленький всего 3мб, грузиться быстро.
Автор: ra700
Дата сообщения: 12.02.2013 16:05
Lana2010, а Вы поместили видео и html в папку CD_Root\AutoPlay\Ваша папка? Видео должно лежать рядом с файлом html (так создает камтасия). Хотя, если и помещать папку с файлами вне CD_Root на вашем компьютере должно все открываться.

Попробуйте в "быстром выборе" оставить "нет", а в On Сlick написать путь к html-файлу:

File.Open("AutoPlay\\ваша папка\\имя файла.html", "", SW_MAXIMIZE);

не забыв поместить файлы в папку: AutoPlay/ваша папка

* в папке "ваша папка" лежат файл html и видео.

В моем случае код выглядит так:

File.Open("AutoPlay\\papka\\index.html", "", SW_MAXIMIZE);

папка "papka"с файлами "index.html" и "index.flv" лежит по адресу AutoPlay\\papka:

AutoPlay\\papka\\index.html
AutoPlay\\papka\\index.flv
Автор: Lana2010
Дата сообщения: 13.02.2013 05:04
Да файл html и видео лежали вместе. Куда я их только не помещала.... и все равно не получалось.
Попробовала прописать путь как Вы сказали. Теперь все работает!!!!!
Спасибо большое за помощь. Очень Вам благодарна.
Автор: ra700
Дата сообщения: 16.02.2013 17:55
Пожалуйста! Я сам такой же новичок ))). В свое время меня здесь тоже здорово поддержали. Причину того, почему не сработало быстрое открытие, понятия не имею. У меня срабатывало всегда. Может сборка программы "кривая"? Поделюсь своей, если хотите попробовать. Там кроме самой проги есть куча дополнений. Поэтому вся куча весит 273Mb.
Автор: AKKUMIS
Дата сообщения: 17.02.2013 13:09
Здравствуйте! Помогите мне пожалуйста. Я делаю электронный учебник. У меня в одной странице 5 кнопок.С ними я должна открыть 5 web-документов. Подскажите,как можно делать ,чтоб все эти документы открылись в одной же странице. с каким инстументов я должна пользоваться и как будет код? а то у меня все они открывается отдельно

Добавлено:
Алло где вы? Помогите мне
Автор: gfhctr
Дата сообщения: 17.02.2013 20:33
Здравствуйте!
Захотел приколхозить простенький интерфейс для монтажа контейнера TrueCrypt.
В Autiplay 8.1.0 прописал:
PASSWORD = Dialog.PasswordInput("Открытие контейнера", "Ваш пароль:");
result = File.Run("TrueCrypt.exe", "/q /v TCv.tc /lx /a /p PASSWORD /e /b", "", SW_SHOWNORMAL, true);
не срабатывает...-Не проходит пароль, т.е. переменная PASSWORD в блок параметров проги TrueCrypt.exe передается с ошибкой. Пробовал указывать в кавычках 'PASSWORD' (как Multimedia Builder) - не помогает.
Причем, если вместо переменной PASSWORD в блоке параметров прописываю сам пароль - подхватывается.
Подскажите, где засада, плз...
Автор: Octanium
Дата сообщения: 17.02.2013 20:43
Доброго времени, не подскажете как в Autoplay Media Studio создать интернет подключение автоматически? (с вводом логина и пароля)
Автор: tavria2
Дата сообщения: 17.02.2013 21:16
gfhctr

Цитата:
Причем, если вместо переменной PASSWORD в блоке параметров прописываю сам пароль - подхватывается.

В блоке параметров у тебя вместо переменной, указана строка PASSWORD...

Найди различия:

Код: PASSWORD = Dialog.PasswordInput("Открытие контейнера", "Ваш пароль:");
result = File.Run("TrueCrypt.exe", "/q /v TCv.tc /lx /a /p PASSWORD /e /b", "", SW_SHOWNORMAL, true);
Автор: collagen
Дата сообщения: 18.02.2013 12:16
У меня вопрос к счастливым обладателям лицензионной программы. В пункте меню Align (Выравнивание) есть последний пункт To Page/Dialog (По странице/диалоговому окну). В "пиратке" левее этой надписи стоит иконка (лист бумаги с "галкой"), а по логике работы и описанию в справке можно предположить, что на этом месте должен быть обычный "чекбокс", а иконка его только прикрывает. Верно ли мое предположение?
Автор: AKKUMIS
Дата сообщения: 18.02.2013 12:34
tavria2
[q][/q]
Спасибо большое большое! Все заработала.
Автор: tavria2
Дата сообщения: 18.02.2013 14:04
collagen

Цитата:
левее этой надписи стоит иконка (лист бумаги с "галкой"), а по логике работы и описанию в справке можно предположить, что на этом месте должен быть обычный "чекбокс", а иконка его только прикрывает. Верно ли мое предположение?

Нет, там действительно стоит иконка (лист бумаги с "галкой"). Скорее всего ты не понял как этим использоваться.
Выделяем объект или группу объектов которые нужно выровнять
В меню "Align" выбираем пункт "To Page/Dialog" (лист бумаги с "галкой")

После этого в меню "Align" становятся доступны пункты меню для выравнивания...

P.S. Я пользуюсь AMS Personal Edition 8.0.7.0
Автор: vazzzzz
Дата сообщения: 18.02.2013 14:38
Не дайте умереть в муках! Оч нужно пользовать функцию SetDIBitsToDevice из gdi32.dll в AMS (если это конечно возможно). Поделитесь опытом! Я не оч продвинутый программист. На сегодняшний день имею сведения о том, что необходимо выделить в памяти массив для bitmap (где? как? плагин MemoryEx сгодится для этого?). В функцию нужно передать handle этого массива (помимо прочих параметров), но самое главное - как можно передать в dll параметры в виде массива, который описывает структуру BITMAPINFO?? Через стандартный вызов функций dll средствами AMS как я понял передаются только параметры в виде "строковых" занчений - т.е. цифру или текст можно передать, а массив как?? Неужели придется в VB мастерить враппер (свою промежуточную dll или ocx - как раз давно делал такую для работы с FTDI устройством с поддержкой полного функционала, но если честно опять все вспоминать не хочется - верится, что можно и без промежуточной прокладки обойтись..) Оч нужно отрисовывать сравнительно быструю графику 800х600х8...32(в плане цвета - можно и урезанную, даже 256 бит сойдет). Поможите люди добрыя.. "сами мы не местныя", не шибко программист, начинающий вобщем Трижды спасибо заранее за наводящие пинки!
Автор: collagen
Дата сообщения: 18.02.2013 14:44
tavria2
Ничего не имею против.
Вот частичный перевод справки по АМС на русский язык.
http://rghost.ru/43894246
Этот пункт выравнивания работает так, как написано в справке. Просто я подумал, что если "галка" стоит - идет выравнивание по стороне страницы, если "галки" нет - по "доминирующему" объекту.
Есть еще вопрос по условному оператору if. Как правильно, с точки зрения программиста, перевести ключевое слово else - "ещё" или "иначе" (я склоняюсь ко второму варианту). То же самое с elseif - здесь я думаю перевод ещё-если.
И еще, я там перевел 10 урок в Руководстве пользователя про Основы написания скриптов. Хотелось чтобы кто-либо из знающих программирование это прочитал, с целью не наделал ли я при переводе логических ошибок. Заранее спасибо.
Автор: tavria2
Дата сообщения: 18.02.2013 16:16
collagen

Цитата:
Как правильно, с точки зрения программиста, перевести ключевое слово else - "ещё" или "иначе"

"Иначе", "в противном случае", ... - ну никак не "ещё".
Автор: Zloy_Gelud
Дата сообщения: 18.02.2013 16:38
vazzzzz

Цитата:
как можно передать в dll параметры в виде массива, который описывает структуру BITMAPINFO??

Например, так:

Код: local BITMAPINFO = MemoryEx.DefineStruct{ DWORD("Size");
INT ("Width");
INT ("Height");
WORD ("Planes");
WORD ("BitCount");
DWORD("Compression");
DWORD("SizeImage");
INT ("XPelsPerMeter");
INT ("YPelsPerMeter");
DWORD("ClrUsed");
DWORD("ClrImportant");
DWORD("RGBQuad");
};

local hBITMAPINFO = BITMAPINFO:New();
local pBITMAPINFO = hBITMAPINFO:GetPointer();
-- в функции StretchDIBits использовать pBITMAPINFO в качестве указателя на структуру BITMAPINFO
-- result = DLL.CallFunction("gdi32.dll", "StretchDIBits", ...
hBITMAPINFO:Free();
Автор: vazzzzz
Дата сообщения: 18.02.2013 21:28
Zloy_Gelud

Спасибо вам за информацию, только что приехал и попробовал наваять чего-нить. Но как-то не вышло сходу (хотя все до функции SetDIBitsToDevice "заработало" сразу и выдало уведомление об "успехе"). Но в итоге функция вернула "0" (( Что-то я не так делаю, прошу еще раз пендаль волшебный (взгляните на мои "труды" если не сложно).


Код:
local disp = {};
disp.Width = 800;
disp.Height = 600;
disp.Handle = Application.GetWndHandle();
disp.DevCH = DLL.CallFunction("User32.dll", "GetDC", disp.Handle, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
--создание структуры, описывающей bitmap изображение (BITMAPINFO)
local BITMAPINFO = MemoryEx.DefineStruct {
DWORD    ("biSize", disp.Width * disp.Height * 3);
INT        ("biWidth", disp.Width);
INT        ("biHeight", disp.Height);
WORD    ("biPlanes", 1);
WORD    ("biBitCount", 24);
DWORD    ("biCompression", 0);
DWORD    ("biSizeImage", 0);
INT        ("XPelsPerMeter"); --что это?
INT        ("YPelsPerMeter"); --что это?
DWORD    ("biClrUsed", 0);
DWORD    ("biClrImportant", 0);
DWORD    ("biRGBQuad", 0); --что это?
};
apper1 = Application.GetLastError();
--получение указателя на структуру BITMAPINFO
local hBITMAPINFO = BITMAPINFO:New();
apper2 = Application.GetLastError();
local pBITMAPINFO = hBITMAPINFO:GetPointer();
apper3 = Application.GetLastError();
--создание массива из disp.Width * disp.Height * 3 байт для указания цветов каждого пикселя
disp.BMHandle = MemoryEx.Allocate(disp.Width * disp.Height * 3);
apper4 = Application.GetLastError();
--
if (disp.Handle > -1 and disp.DevCH ~= "") then
    if (apper1 == 0 and apper2 == 0 and apper3 == 0 and apper4 == 0) then
        --если все OK
        disp.args = disp.DevCH .. ",0,0," .. tostring(disp.Width) .. "," .. tostring(disp.Height) .. ",0,0,0," .. tostring(disp.Height) .. "," .. disp.BMHandle .. "," .. pBITMAPINFO .. ",0";
        -- в функции StretchDIBits использовать pBITMAPINFO в качестве указателя на структуру BITMAPINFO
        dispIsOK = DLL.CallFunction("gdi32.dll", "SetDIBitsToDevice", disp.args, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
        apper1 = Application.GetLastError();
        hBITMAPINFO:Free();
        apper2 = Application.GetLastError();
        if (dispIsOK ~= "") then
            if (apper1 == 0 and apper2 == 0) then
                message = "Успешно!\n\n";
                message = message .. "Структура: " .. disp.DevCH .. "\n";
                message = message .. "BitmapInfo: " .. pBITMAPINFO .. "\n";
                message = message .. "Bitmap: " .. disp.BMHandle .. "\n";
                message = message .. "Результат: " .. dispIsOK;
                Dialog.Message("Уведомление", message, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
            else
                Dialog.Message("Ошибка", "Не удалось удалить структуру BITMAPINFO!", MB_OK, MB_ICONSTOP, MB_DEFBUTTON1);    
            end
        else
            Dialog.Message("Ошибка", "Не удалось вывести bitmap!", MB_OK, MB_ICONSTOP, MB_DEFBUTTON1);    
        end
    else
        Dialog.Message("Ошибка", "Не удалось выделить память!", MB_OK, MB_ICONSTOP, MB_DEFBUTTON1);    
    end
    if (DLL.CallFunction("User32.dll", "ReleaseDC", disp.Handle .. "," .. disp.DevCH, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL) == "") then
        Dialog.Message("Ошибка", "Не удалось удалить контекст устройства!", MB_OK, MB_ICONSTOP, MB_DEFBUTTON1);    
    end
else
    Dialog.Message("Ошибка", "Не удалось создать контекст устройства!", MB_OK, MB_ICONSTOP, MB_DEFBUTTON1);    
end

Автор: AKKUMIS
Дата сообщения: 19.02.2013 07:34
Здрастье еще раз! Как можно делать тесты. У кого есть примеры тестов? Подскажите пожалуйста
Автор: Zloy_Gelud
Дата сообщения: 19.02.2013 07:48
vazzzzz
Сразу можно сказать, что ты не правильно заполняешь структуры.
Надо как-то так:

Код: hBITMAPINFO.Size = MemoryEx.Size(BITMAPINFO); -- размер структуры
hBITMAPINFO.Width = tDisp.Width;
hBITMAPINFO.Height = (tDisp.Height * (-1));
hBITMAPINFO.BitCount = 24;
hBITMAPINFO.Planes = 1;
Автор: vazzzzz
Дата сообщения: 19.02.2013 10:27
Zloy_Gelud

Подскажите, правильно ли я понимаю в вопросе о структурах? Меня если честно настараживает получение двух управляющих заголовков для одной структуры BITMAPINFO - это hBITMAPINFO и hStruct.. Структура это как я понимаю не просто набор байт на низком уровне - это как associative array в AMS? И еще, взял из примера в справке MemoryEx.Allocate, неочень понимаю для чего это (видимо что-то связано с ограничением доступа к куску памяти других приложений, который я резервирую под структуру). Вобщем чего-то я начинаю запутываться от незнания мат.части языков высокого уровня (раньше на асме писал и в основном для железа, а не для Windows). Можно еще пнуть меня немного?


Код:
-- +------------------------------------------------------------------+
-- | Указываем типы данных в структуре и их имена для компилятора |
-- +------------------------------------------------------------------+
local BITMAPINFO = MemoryEx.DefineStruct {
DWORD ("Size");
INT ("Width");
INT ("Height");
WORD ("Planes");
WORD ("BitCount");
DWORD ("Compression");
DWORD ("SizeImage");
DWORD ("ClrUsed");
DWORD ("ClrImportant");
};
-- +------------------------------------------------------------------+
-- | Создаем структуру в памяти, получаем заголовок и указатель |
-- +------------------------------------------------------------------+
--получение заголовка на структуру BITMAPINFO
local hBITMAPINFO = BITMAPINFO:New();
--получение указателя
local pBITMAPINFO = hBITMAPINFO:GetPointer();
-- +------------------------------------------------------------------+
-- | Указываем сами значения в структуре |
-- +------------------------------------------------------------------+
local lpBuff = MemoryEx.Allocate(MemoryEx.StructSize(BITMAPINFO));
if(lpBuff)then
local hStruct = MemoryEx.AssignStruct(lpBuff, BITMAPINFO);
if(hStruct)then
hStruct.Size = disp.Width * disp.Height * 3;
hStruct.Width = disp.Width;
hStruct.Height = disp.Height;
hStruct.Planes = 1;
hStruct.BitCount = 24;
hStruct.Compression = 0;
hStruct.SizeImage = 0;
hStruct.ClrUsed = 0;
hStruct.ClrImportant = 0;
hStruct:Close();
end
MemoryEx.Free(lpBuff);
end
Автор: Zloy_Gelud
Дата сообщения: 19.02.2013 12:11
vazzzzz

Цитата:
Меня если честно настараживает получение двух управляющих заголовков для одной структуры BITMAPINFO - это hBITMAPINFO и hStruct..

А зачем тебе 2 раза получать указатель на структуру?
hBITMAPINFO - получили дескиптор структуры
pBITMAPINFO - получили указатель на буфер, содержащий структуру
Как изменять значения в структуре я приводил пример:

Цитата:
hBITMAPINFO.Size = MemoryEx.Size(BITMAPINFO); -- размер структуры
hBITMAPINFO.Width = tDisp.Width;
hBITMAPINFO.Height = (tDisp.Height * (-1));
hBITMAPINFO.BitCount = 24;
hBITMAPINFO.Planes = 1;


Цитата:
Структура это как я понимаю не просто набор байт на низком уровне - это как associative array в AMS?

Что-то типо того.

Цитата:
И еще, взял из примера в справке MemoryEx.Allocate, неочень понимаю для чего это

MemoryEx.Allocate - выделят буфер в памяти. В том числе для структур, помещения строк в память, чисел и т.д.
В аргументах DLL.CallFunction используется указатель на буфер pBITMAPINFO.
После всех действий необхрдимо память освободить.

Цитата:
ocal lpBuff = MemoryEx.Allocate(MemoryEx.StructSize(BITMAPINFO));
if(lpBuff)then
local hStruct = MemoryEx.AssignStruct(lpBuff, BITMAPINFO);
if(hStruct)then

Это зачем. Выше я написал как заполнить структуру.
Автор: AKKUMIS
Дата сообщения: 19.02.2013 12:29
У кого есть примеры тестов? Подскажите пожалуйста
Автор: vazzzzz
Дата сообщения: 19.02.2013 12:39
Zloy_Gelud

Благодарю тебя за терпение и подсказки. Вроде с записью данных в элементы структуры все срослось (попробовал прочитать из структуры с помощью MemoryEx.DWORD(pBITMAPINFO) - читает значение- УРА!).

Теперь видимо надо понять что не так я делаю с выделением области для занесения R-G-B значений для каждого пиксела (по байту на каждый цвет).

Я использую MemoryEx.Allocate(disp.Width * disp.Height * 3), эта функция возвращает указатель на начало буфера. Этот указатель и должен использоваться в функции SetDIBitsToDevice для определения точки начала считывания R-G-B кодов? api функция по прежнему возвращает 0 :'(

Мне достаточно на первом этапе просто выделить для rgb область?

Или обязательно нужно прописать значение каждого байта (мне для начала если честно пофиг какой там цвет получится, лишь хоть что-то вывело на экран)?

Кстати не нужно этот буфер защищать с помощью Lock-функций каких-нить?
Автор: Zloy_Gelud
Дата сообщения: 19.02.2013 13:02
vazzzzz

Цитата:
Мне достаточно на первом этапе просто выделить для rgb область?

Или обязательно нужно прописать значение каждого байта (мне для начала если честно пофиг какой там цвет получится, лишь хоть что-то вывело на экран)?

Без понятия. Я не программист. Да и не разбирался как работает функция SetDIBitsToDevice.
Можешь попробовать буффер, выделенный под RGB-массив, заполнить нулями MemoryEx.Zero. Может еще что...


Добавлено:

Цитата:
Кстати не нужно этот буфер защищать с помощью Lock-функций каких-нить?

Нет, не надо.
Автор: vazzzzz
Дата сообщения: 19.02.2013 14:01
закрадываются сомнения.. для того чтобы заставить светиться пиксели по-своему нужно создать несколько структур для bitmap.. уфф.. http://msdn.microsoft.com/ru-ru/library/windows/desktop/dd183392(v=vs.85).aspx

Добавлено:
и в данном случае нужно было создавать структуру в структуре, т.е. эти элементы структуры (biWidth, biHeight и пр.) - это элементы структуры BITMAPINFOHEADER, поинтер на которую, должен лежать в элементе bmiHeader структуры BITMAPINFO

Добавлено:
Zloy_Gelud

Не подскажешь как можно объявить структуру внутри структуры? Можно ли использовать нечто подобное:


Код:
MemoryEx.DefineStruct {
DWORD("biSize");
...
UNION {
...
};
};

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

Предыдущая тема: память не может быть written


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