Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Indigo Rose AutoPlay Media Studio (часть 5)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191

Открыть новую тему     Написать ответ в эту тему

Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AutoPlay Media Studio





  AutoPlay Media Studio - мощная программа для создания меню автозагрузки CD/DVD. Эта программа создаст все необходимые файлы для автозапуска и его графическую оболочку, и даже сама встроит в нее использованные в проекте нестандартные шрифты. Пользователю останется лишь записать готовый проект на свой CD/DVD.
  AutoPlay Media Studio не требует от пользователя никаких особых знаний и очень прост в освоении, имеет дружественный и интуитивно понятный интерфейс. Приложение, которое будет создано AutoPlay Media Studio в конце работы, представлено в виде объектной модели. Эта модель состоит из группы отдельных страниц. На этих страницах можно размещать объекты, которые могут представлять собой графику, музыку, текст, видео, Flash, HTML и пр. Любому элементу можно назначить определенное действие. Например, при наведении на рисунок курсора мыши, может возникать текст с комментариями, при нажатии на кнопку "Play" начнет проигрываться фильм и т.д. Программа предоставляет сотни различных действий, которые можно связать с объектами. В AutoPlay Media Studio присутствует большое количество уже готовых шаблонов.
  AutoPlay Media Studio имеет широкие возможности и богатый набор инструментов для разработки мультимедийных проектов. Использовать программу можно не только для создания файлов автозапуска, но и, например, для разработки интерактивного обучающего софта или мультимедийной презентации.

Язык интерфейса: Английский
Страница загрузки: AutoPlay Media Studio Commerical Trial 8.6


Скриптовый язык LUA:
на Lua.Org (Official) - на Lua.Ru

Ресурсы, посвященные AMS (содержат коллекции примеров, дополнений, уроков):
  • icynorth.com
  • imagine-programming.com
  • mindquake.com.br

    Инструменты:
  • ScriptOMatic Tool - создает скрипт обращения ко всем свойствам выбранного WMI-класса

    Ответы на наиболее часто задаваемые вопросы


    Раскраска AMS-кода для публикации на форуме от UModeL: версия 1 и версия 2.

  • Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 06:17 05-08-2012 | Исправлено: Komandor, 12:11 30-03-2024
    KerberX



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pahuchiy1
    Можно и так. Только не забудь преобразовать координаты окон из клиентских координат в абсолютные (экранные).

    Всего записей: 597 | Зарегистр. 08-09-2011 | Отправлено: 21:12 02-03-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    окна могут перекрывать друг друга, значит, нужна ещё функция для выяснения перекрыто ли окно?
     
    Добавлено:

    Цитата:
    Можно и так.
    а какой самый шустрый вариант?
    хочу засунуть в фон (таймер 50мс) ...

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 21:14 02-03-2017 | Исправлено: Pahuchiy1, 21:19 02-03-2017
    KerberX



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Держи лучше код, так будет понятнее, я думаю. Нужен плагин WinApi и MemoryEx.
     
    Это в глобальные функции:

    Код:
    hUser32 = Library.Load("User32.dll");
    GA_PARENT = 1;
    GA_ROOT = 2;
    GA_ROOTOWNER = 3;
     
    function GetAncestor(hWnd, nFlags)
        return hUser32.GetAncestor(hWnd, nFlags);
    end
    function GetDesktopWindow()
        return hUser32.GetDesktopWindow();
    end
    G_DesktopHWND = GetDesktopWindow();

     
    Это в On Timer:

    Код:
    if (e_ID == 10) then
        local tPos = System.GetMousePosition(false, nil);
        local hWnd = WinApi.WindowFromPoint(tPos.X, tPos.Y);
        if (hWnd ~= 0) then
            local hRootWnd = GetAncestor(hWnd, GA_PARENT);
            if (hRootWnd == 0 or hRootWnd == G_DesktopHWND) then
                Paragraph.SetText("Paragraph1", string.format("%08X Top-Level Window (TLW): %s", hWnd, tostring(WinApi.GetWindowText(hWnd, 256))));
                return;
            end
            Paragraph.SetText("Paragraph1", string.format("%08X is not TLW: %s", hWnd, tostring(WinApi.GetWindowText(hWnd, 256))));
        end
        return;
    end

     
    Не забудь запустить таймер с нужным ID. Можно взять и больший интервал, 100 мс вполне достаточно, и нагрузка на систему меньше.

    Всего записей: 597 | Зарегистр. 08-09-2011 | Отправлено: 22:05 02-03-2017 | Исправлено: KerberX, 22:07 02-03-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KerberX спасибо
    или так:

    Цитата:
    function getTopLevelWin(hwnd)
        parWin=hwnd
        repeat currWin=parWin parWin=WinApi.GetParent(parWin)  
        until parWin==0
        return currWin
    end


    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 22:23 02-03-2017
    KerberX



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pahuchiy1
    В некоторых случаях GetParent может вернуть владельца окна, а не его родителя, а это не одно и то же. Но основная проблема в том, что твой код пройдётся по всей цепочке наследования и всегда дойдёт до окна верхнего уровня, тем самым твоя функция не годится для определения TLW это или нет. Потому что TLW по определению это окно у которого или нет родителя (сразу, а не через несколько уровней) или его непосредственным родителем является окно рабочего стола.

    Всего записей: 597 | Зарегистр. 08-09-2011 | Отправлено: 22:39 02-03-2017 | Исправлено: KerberX, 04:44 03-03-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    теперь у меня обратная задача: как зная pid получить hwnd(не важно какой именно: или таблицу из всех порождённых pid'ом или главное окно)

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 11:56 03-03-2017
    Pazan



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую,
    а можно как-то управлять Flash роликом в проекте? Интересуют события при клике, наведении курсора. Например, подсказка при наведении, загрузка ролика при клике.
    Спасибо.

    ----------
    Почему глупый, потому что бедный... Почему бедный, потому что глупый...

    Всего записей: 924 | Зарегистр. 17-11-2002 | Отправлено: 14:49 03-03-2017
    CryptoUsbtor



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pazan
    А что, справку посмотреть не хотите?

    Всего записей: 745 | Зарегистр. 24-04-2016 | Отправлено: 16:06 03-03-2017
    KerberX



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pahuchiy1
    Готово. Эта функция перебирает все окна, сравнивает PID породившего их процесса с требуемым PID и возвращает таблицу с их HWND или nil если ничего не находит.
    Тут я использую DLL.CallFunction для вызова GetWindowThreadProcessId так как вызов через MemoryEx почему-то не работал. Функция возвращала 0 и код ошибки был ERROR_INVALID_WINDOW_HANDLE, не знаю в чём дело. Даже переписал на C чтобы проверить, там всё работало. Видимо ошибка в MemoryEx или просто я что-то не заметил.
     

    Код:
    function GetProcessWindows(nPID, bTopLevelOnly)
        local tBuffer = MemoryEx.AllocateEx(4);
     
        if (bTopLevelOnly == nil) then
            bTopLevelOnly = true;
        end
     
        local tList = {};
        local tWindows = Window.EnumerateTitles(bTopLevelOnly);
        if (tWindows ~= nil) then
            for hWnd, y in pairs(tWindows) do
                DLL.CallFunction("User32.dll", "GetWindowThreadProcessId", string.format("%d,%d", hWnd, tBuffer:GetPointer()), DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
                local nWindowPID = tBuffer:DWORD();
     
                if (nWindowPID == nPID) then
                    tList[#tList+1] = hWnd;
                end
            end
        end
     
        tBuffer:Free();
        if (#tList ~= 0) then
            return tList;
        end
    end

    Всего записей: 597 | Зарегистр. 08-09-2011 | Отправлено: 19:10 03-03-2017 | Исправлено: KerberX, 19:42 03-03-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KerberX спасибо.
    странное дело: всё работает кроме clickermann (nil) Запускал с bTopLevelOnly=false

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 20:32 03-03-2017
    Pazan



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    А что, справку посмотреть не хотите?

    что именно смотреть? в свойствах объекта только OnFSCommand и OnFlashCall. Значит, нельзя

    Всего записей: 924 | Зарегистр. 17-11-2002 | Отправлено: 20:44 03-03-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    сбой какой-то был. перезапустил кликерман и всё сработало

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 20:46 03-03-2017 | Исправлено: Pahuchiy1, 21:14 03-03-2017
    KerberX



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    а можно как-то управлять Flash роликом в проекте? Интересуют события при клике, наведении курсора. Например, подсказка при наведении, загрузка ролика при клике.  

    В самом AMS нельзя, но так как Flash-объект является окном, то можно использовать модуль Subclass из MemoryEx чтобы обрабатывать нужные события.

    Всего записей: 597 | Зарегистр. 08-09-2011 | Отправлено: 21:25 03-03-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    if (e_ID == 10) then  
        local tPos = System.GetMousePosition(false, nil);  
        local hWnd = WinApi.WindowFromPoint(tPos.X, tPos.Y);  
        if (hWnd ~= 0) then  
            local hRootWnd = GetAncestor(hWnd, GA_PARENT);  
            if (hRootWnd == 0 or hRootWnd == G_DesktopHWND) then  
                Paragraph.SetText("Paragraph1", string.format("%08X Top-Level Window (TLW): %s", hWnd, tostring(WinApi.GetWindowText(hWnd, 256))));  
                return;  
            end  
            Paragraph.SetText("Paragraph1", string.format("%08X is not TLW: %s", hWnd, tostring(WinApi.GetWindowText(hWnd, 256))));  
        end  
        return;  
    end  

    этот код проверяет является ли окно окном верхнего уровня. А мне нужно было другое: даже если курсор не над окном верхнего уровня, вернуть соответствующее ему окно верхнего уровня

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 07:13 04-03-2017
    Pazan



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

    согласен, но нужных знаний для этого у меня, к сожалению, нет

    Всего записей: 924 | Зарегистр. 17-11-2002 | Отправлено: 11:04 04-03-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как создать bmp файл имея таблицу цветов?

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 11:39 04-03-2017
    KerberX



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pazan
    Сделал пример использования Subclass. Требуется MemoryEx. Сама функция в глобальных функциях. Код применения на кнопке. Windows не генерирует событие "On Enter", его нужно извлекать вручную, но у меня не получилось. Так что обработчик события WM_MOUSEHOVER будет вызываться при каждом движении мыши внутри объекта. Для WM_MOUSELEAVE (On Leave) работает как надо.
    https://yadi.sk/d/aE17ci1U3F2k42
     
    Список оконных сообщений можно посмотреть здесь и ещё здесь.
     
    Pahuchiy1

    Цитата:
    как создать bmp файл имея таблицу цветов?

    Когда-то давно я написал код для этого. Он крайне не оптимален и может долго работать для больших изображений, но для маленьких (около 300x300) достаточно. По хорошему надо бы использовать WinAPI, но для него надо ещё написать код, а это уже готово.
     
    Это в глобальные:
    Код
     
    Примеры:

    Код:
    -- Пример 1
    local s1 = ";0+?3.D62D73A30G73<5-C73>3/J>:F<7702K?<E<:.12@8:";
     
    -- Пример 2
    local s2 = {";0+", "?3.", "D62", "D73", "A30", "G73", "<5-", "C73", ">3/", "J>:", "F<7", "702", "K?<", "E<:", ".12", "@8:"};
     
    -- Пример 3
    local t =
    {
        0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
        0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,
        0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
        0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF
    };
    for x, y in ipairs(t) do
        t[x] = string.char(y);
    end
    local s3 = table.concat(t, "");
     
    -- Создание BMP файла
    local sBMP = CreateBMP(4, 4, s1);
     
    -- Запись на диск. Записывать только так, TextFile.WriteFromString не подойдёт.
    local hFile = io.open(_DesktopFolder.."\\123.bmp", "wb+");
    hFile:write(sBMP);
    hFile:close();

    Всего записей: 597 | Зарегистр. 08-09-2011 | Отправлено: 20:28 04-03-2017 | Исправлено: KerberX, 20:53 04-03-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KerberX спасибо
    хочу установить luarocks, ты не мог бы объяснить как это сделать? (офиц. справку не осилил)

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 20:46 04-03-2017
    KerberX



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    хочу установить luarocks, ты не мог бы объяснить как это сделать? (офиц. справку не осилил)  

    Нет, я его себе не устанавливал так что не могу ничего подсказать. Возможно в пакете Lua for Windows есть уже настроенный дистрибутив.

    Всего записей: 597 | Зарегистр. 08-09-2011 | Отправлено: 20:49 04-03-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    я когда раньше пытался всякие библиотеки устанавливать - намусорил (ненужные файлы лежат где-попало) По этому не знаю где по умолчанию "Location where Lua is installed" - в папке проекта или в папке AMS? куда его устанавливать нуно будет?

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 21:02 04-03-2017
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191

    Компьютерный форум Ru.Board » Компьютеры » Программы » Indigo Rose AutoPlay Media Studio (часть 5)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru