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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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.5


Скриптовый язык 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, 13:30 23-09-2023
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ruCapcha и AntiCaptcha - это самые популярные сервисы человеческого разгадывания капчи. У них есть api  вот я спрашиваю как их использовать в ams
     
    Добавлено:

    Цитата:
    Быстрее чем здесь уже не получится, по крайней мере в Lua и с текущей реализацией MemoryEx. Очевидно, требуется MemoryEx.  
    https://yadi.sk/d/hFrg8prs3EGMUc

    в примере меняется быстро. а вот попробуй сделать матрицу из 49 элементов....

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



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

    Цитата:
    ruCapcha и AntiCaptcha - это самые популярные сервисы человеческого разгадывания капчи. У них есть api  вот я спрашиваю как их использовать в ams  

    С этого и надо было начинать. Ищи как использовать их API.
     

    Цитата:
    в примере меняется быстро. а вот попробуй сделать матрицу из 49 элементов....

    А у тебя что-то очень критичное по времени что что одной секунды для 49 пикселей тебе мало? В общем GetPixel работает долго если обращаться ко всему экрану. Для конкретного окна работает намного быстрее.

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    у меня около 2-3 секунд. Я делал лупу. С такой задержкой не очень комфортно пользоваться
     
    Добавлено:

    Цитата:
    Для конкретного окна работает намного быстрее.

    так ведь не встречал нормальных функций для конкретного окна. Там ведь не hwnd  требуется а DC...я так и не понял как его узнать

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



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

    Цитата:
    Там ведь не hwnd  требуется а DC...я так и не понял как его узнать

    Функция GetDC из User32.dll принимает HWND окна и возвращает его Device Context. Если HWND - 0, то возвращает DC всего экрана.

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KerberX спасибо, наконец-то всё получилось
    Хочу наладить обмен данными с clickermann. С буфером обмена связываться уже как-то некомильфо. Но в MemoryEx ничего не понимаю. Помогите послать в clickermann данные.  
    Вот из справки к clickermann:
    READMEM (pid, "addr", [size]) - считывает целое значение из памяти процесса  
    Параметры  
    pid - идентификатор процесса
    addr - строка, адрес памяти
    size - тип значения (1,2,4,8)
     
    Возвращаемые параметры  
    $_return1 - прочитанное значение
     
    Пример  
    readmem(2080, "0006F2B7")
    logwrite($_return1)
     
    Примечания  
    идентификатор процесса (PID) можно узнать в диспетчере задач либо в самом кликере, в области "Оконный режим"
    Адрес представлен строкой шестнадцатеричного числа
    Параметр size указывает на размер целого значения: 1, 2, 4 или 8 байт. Если данный параметр опущен, то он принимается за 4
    Полученное значение возвращается в переменную $_return1
     
     

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 09:01 28-02-2017 | Исправлено: Pahuchiy1, 09:07 28-02-2017
    Pahuchiy1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ещё вопрос: как нарисовать прямоугольник без заливки с толщиной контура 1 пиксель чёрного цвета с помощью winapi?

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



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

    Цитата:
    Хочу наладить обмен данными с clickermann. С буфером обмена связываться уже как-то некомильфо. Но в MemoryEx ничего не понимаю. Помогите послать в clickermann данные.  
    Вот из справки к clickermann:
    ...

    Пора бы уже самому WinAPI изучить. Советую написать что-нибудь простое на C или C++ с использованием WinAPI. Понимание придёт не сразу, зато потом MemoryEx будет очень просто пользоваться. Потому что тут сущая ерунда, используются всего две функции.
     
    Это в глобальные функции:

    Код:
    hKernel32 = Library.Load("Kernel32.dll");
    NULL = 0;
    TRUE = 1;
    FALSE = 0;
    PROCESS_VM_READ = 0x0010;
     
    function READMEM(nPID, pAddress, nSize)
        assert(pAddress ~= 0, "null pointer dereferencing");
        assert(nSize > 0 and nSize == 1 or nSize == 2 or nSize == 4 or nSize == 8, "invalid block size: "..nSize);
     
        local nValue;
        local hProcess = hKernel32.OpenProcess(PROCESS_VM_READ, FALSE, nPID);
        if (hProcess ~= NULL) then
            local tBuffer = MemoryEx.AllocateEx(nSize);
            if (hKernel32.ReadProcessMemory(hProcess, pAddress, tBuffer:GetPointer(), nSize, NULL) ~= 0) then
                if (nSize == 1) then
                    nValue = tBuffer:Byte();
                elseif (nSize == 2) then
                    nValue = tBuffer:WORD();
                elseif (nSize == 4) then
                    nValue = tBuffer:DWORD();
                elseif (nSize == 8) then
                    nValue = tBuffer:QWORD();
                end
            end
            tBuffer:Free();
            hKernel32.CloseHandle(hProcess);
        end
        return nValue;
    end

     
    Использовать так:

    Код:
    Dialog.Message("", READMEM(4348, 0x00010060, 4)); -- Адрес представлен как число
    Dialog.Message("", READMEM(4348, tonumber("00010060", 16), 4)); -- Адрес представлен как строка с шестнадцатеричными цифрами без префикса "0x"

    Функция возвращает nil если не может прочитать данные и вызывает исключение при некорректных параметрах.



    Цитата:
    Ещё вопрос: как нарисовать прямоугольник без заливки с толщиной контура 1 пиксель чёрного цвета с помощью winapi?

    Ты замучаешься его рисовать. Для этого тебе придётся импортировать несколько функций из User32.dll и GDI32.dll. Сначала получаешь HDC окна на котором тебе нужно рисовать. Потом выбрать ручку (Pen) которой будет рисоваться контур и кисть (Brush) для заливки внутренностей фигуры. Можно использовать системные ручки и кисти (GetStockObject). По идее NULL_PEN и NULL_BRUSH должны работать как прозрачные. По умолчанию ручки рисуют линии толщиной в 1 пиксель, если не ошибаюсь. После этого рисуешь прямоугольник используя функцию Rectangle. Но оконный менеджер может в любой момент выбросить всё что ты нарисовал во время следующего цикла перерисовки окна. Так что тебе нужно перехватывать сообщение WM_PAINT и рисовать там. Модуль Subclass из MemoryEx может помочь тебе с этим. В его справке есть пример.
     
    А вот пример того, как это выглядит в C:
    https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd145096(v=vs.85).aspx

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

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

    Цитата:
    Пора бы уже самому WinAPI изучить

    все примеры в основном на С. Я же кроме lua ничего не знаю.

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



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

    Цитата:
    все примеры в основном на С. Я же кроме lua ничего не знаю.

    А надо хотя бы немного знать. Очень поможет. C не такой сложный как ты можешь думать. Да и С++ тоже если не лезть в дебри шаблонов и всего остального что появилось начиная с C++11.

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

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

    Цитата:
    А надо хотя бы немного знать

    Я всегда думаю так: "моих знаний в программировании мне для моих скромных целей достаточно"  
    а потом приходится изучать, изучать....надеюсь уже скоро действительно будет достаточно)))

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



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

    Цитата:
    надеюсь уже скоро действительно будет достаточно)))

    Не будет. Всегда найдётся что-нибудь что потребует дополнительного изучения.

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    никак не могу понять как получить ID процесса (тот что возвращается при выполнении System.EnumerateProcesses()) , зная hwnd
    Пробовал GetWindowLong(Application.GetWndHandle(), GWL_HINSTANCE) - Это оно? - выдаёт ошибку: аргумент 2 должен быть строкой

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pahuchiy1
    Нет, это не то. Так ты получишь дескриптор модуля, которому принадлежит окно. Тебе понадобится функция GetWindowThreadProcessId. Если же нужно узнать ID текущего процесса, то есть функция GetCurrentProcessId.

    Код:
    hUser32 = Library.Load("User32.dll");
    hKernel32 = Library.Load("Kernel32.dll");
     
    function GetWindowProcessID(hWnd)
        local tBuffer = MemoryEx.AllocateEx(4);
        hUser32.GetWindowThreadProcessId(hWnd, tBuffer:GetPointer());
        local nPID = tBuffer:DWORD();
        tBuffer:Free();
        return nPID;
    end
    function GetCurrentProcessID()
        return hKernel32.GetCurrentProcessId();
    end

     
    Пример использования.

    Код:

    Dialog.Message(GetCurrentProcessID(), GetWindowProcessID(Application.GetWndHandle()));

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KerberX спасибо, как всегда безупречно!. И ещё: Есть окно в котором много всяких hwnd. Так вот мне нужна функция, которая всегда бы возвращала  hwnd верхнего бордюра , не смотря на то над какой именно частью окна в данный момент курсор.
    Если ещё проще: Как зная один из hwnd приложения получить hwnd его бордюра.  
    Собственно говоря, под бордюром я имел ввиду прежде всего hwnd с самыми верхними левыми координатами. (то есть мне нужен hwnd верхнего левого угла приложения)

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pahuchiy1
    Я тебя не совсем понял. Вот окно программы AutoIt и список всех контролов в этом окне. Что именно ты хочешь узнать?
    Подробнее...

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Собственно говоря, под бордюром я имел ввиду прежде всего hwnd с самыми верхними левыми координатами. (то есть мне нужен hwnd верхнего левого угла приложения)
     
    Добавлено:
    что-то я запутался немного, разберусь - напишу

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pahuchiy1
    Есть функция WindowFromPoint, которая по указанным координатам возвращает HWND окна, если оно не скрыто и не отключено. Она также есть в плагине WinApi (WinApi.WindowFromPoint).

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо, она и требовалась. я конечно про неё знал, просто запутался мал-мал...
     
    Добавлено:
    Всётаки, я правильно вопрос ставил.
    Если сделать функцию (с помощью WindowFromPoint) которая бы возвращала hwnd под курсором, и начать ползать по какому-нибудь приложению, то hwnd будет постоянно меняться. Потому как в окне (в обывательской терминологии) любого приложения обычно несколько hwnd. Так вот что мне нужно: что бы мне всегда возвращался hwnd верхнего левого угла всего приложения (обычно это hwnd бордюра)
     
    Добавлено:
    Я знаю, что есть иерархия среди hwnd. Возможно, тот hwnd о котором я пишу имеет какой-то особый статус? Скажем, "верхнего уровня"...

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pahuchiy1
    То есть ты хочешь всегда получать HWND главного окна программы, которое Top-Level Window? В Windows 7 есть недокументированная функция IsTopLevelWindow (в User32.dll, я думаю она принимает только один аргумент - HWND окна). Или можно использовать GetAncestor(hWnd, GA_ROOT). Она должна вернуть NULL (0) если у этого окна нет родителя. Или если функция вернёт HWND окно рабочего стола, тогда то окно тоже окно верхнего уровня.

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    так?:
    1. узнать координаты и размеры всех Top-Level Window
    2. проверить над каким из этих окон курсор

    Всего записей: 168 | Зарегистр. 11-01-2015 | Отправлено: 21:06 02-03-2017 | Исправлено: Pahuchiy1, 21:07 02-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