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

» Indigo Rose AutoPlay Media Studio

Автор: collagen
Дата сообщения: 11.09.2015 05:03
KerberX

Цитата:
DLL создал какой-то японец из оригинального 7-Zip. Документацию перевёл другой человек.

У вас есть перевод на русский язык?
А то я нашел перевод с японского на английский, сделанный M.R. Poeschl. Но, на мой взгляд, он крайне "мутный", похоже с немецким акцентом. Попробовал перевести на русский, но не хватило ни знаний, ни терпения, поэтому забросил.
Может кто-нибудь возьмется закончить его. Вот мой черновик перевода.
Автор: KerberX
Дата сообщения: 11.09.2015 08:16
У меня нет перевода, да он мне и не требуется. Но если хочешь могу попробовать перевести.
Автор: Pazan
Дата сообщения: 11.09.2015 08:53
Приветствую,
есть презентация с фоновой музыкой, запуск которой происходит через On Show страницы:

Код: Audio.Load(CHANNEL_NARRATION, "AutoPlay\\Audio\\bgsnd.mp3", true, true);
Автор: Pus21
Дата сообщения: 11.09.2015 12:53
KerberX
Цитата:
Zip, 7z (LZMA, LZMA2, BZip2, PPMd). RAR и RAR5 не поддерживается.
Звучит как песня, хотя когда жмёшь звук, RARы полезны.

Цитата:
Можно. Вот изменённый проект. Проверить On Startup. https://yadi.sk/d/cDVy59K9izsv2
При нажатии на "7Z (LZMA2) - (ProgressBar)" распаковывается в тихом режиме, но "Progress1" не двигается.

collagen
Цитата:
У вас есть перевод на русский язык?

Открываете файл "\AutoPlay\Scripts\7-ZIP.dll" в любом редакторе EXE\DLL, к примеру "Resource Tuner" или "Restorator", да их сотни, и в ветке "Dialog" пишете что угодно.

Pazan
Цитата:
Приветствую, есть презентация с фоновой музыкой, запуск которой происходит через On Show страницы:
Я мож чё не понял, а почему бы не сделать воспроизведение музыки через "OneStartup" всего проекта:

Audio.Load(CHANNEL_BACKGROUND, "AutoPlay\\Audio\\Music1.ogg", false, true);
Audio.Load(CHANNEL_USER1, "AutoPlay\\Audio\\Music2.ogg", false, true);
Audio.Play(CHANNEL_BACKGROUND);

В "On Show" четвертой страницы написать:

Audio.Pause(CHANNEL_BACKGROUND);
Audio.Play(CHANNEL_USER1);

или

Audio.SetVolume(CHANNEL_BACKGROUND, 0);
Audio.Play(CHANNEL_USER1);

А чтобы вернуть Music1.ogg:

Audio.Stop(CHANNEL_USER1);
Audio.Play(CHANNEL_BACKGROUND);

или

Audio.Stop(CHANNEL_USER1);
Audio.SetVolume(CHANNEL_BACKGROUND, 255);

____________________________________________________________________________________________________________
Добавлено:
Вопрос по штатному архиватору zip.

Нужно чтобы в архив попадали не только файлы, но и директории, пишу:

local tFiles = File.Find(_SourceFolder.."\\Folder\\", "*", true, true, nil, nil);
if tFiles ~= nil then
Zip.Add(_SourceFolder.."\\File.zip", tFiles, true, "", 9, nil, false);
end

Но сохраняются только файлы.

ПЛЗ! Нелп!
Автор: KerberX
Дата сообщения: 11.09.2015 15:29

Цитата:
Нужно чтобы в архив попадали не только файлы, но и директории, пишу:

В таком случае только они и не должны нормально сохраняться. И нормального способа я не знаю. Можно скопировать найденные файлы с сохранением структуры в другую папку и потом её всю архивировать. Тогда архив получится с нормальной файловой структурой.


Цитата:
При нажатии на "7Z (LZMA2) - (ProgressBar)" распаковывается в тихом режиме, но "Progress1" не двигается.

На тестовом архиве плохо видно. Используй архив где много файлов.


Цитата:
Открываете файл "\AutoPlay\Scripts\7-ZIP.dll" в любом редакторе EXE\DLL, к примеру "Resource Tuner" или "Restorator", да их сотни, и в ветке "Dialog" пишете что угодно.

Имеется виду перевод документации по API.
Автор: Pazan
Дата сообщения: 11.09.2015 15:29
Pus21

Цитата:
В "On Show" четвертой страницы написать:

Код: Audio.Pause(CHANNEL_BACKGROUND);
Audio.Play(CHANNEL_USER1);

Автор: Pus21
Дата сообщения: 11.09.2015 16:10
Pazan

Цитата:
музыка будет проигрываться сначала, а не продолжаться с Страница 4 или нет?
Да, про страницу 5 я не знал.
Я не силён в Autoplay Media Studio, поэтому ищу обходные пути проблем.
Я бы сделал так:
- Создал одну страницу;
- Загрузил в проект музыку;
Audio.Load(CHANNEL_USER1, "AutoPlay\\Audio\\Music1.ogg", false, true);
Audio.Load(CHANNEL_USER2, "AutoPlay\\Audio\\Music2.ogg", false, true);
Audio.Load(CHANNEL_USER3, "AutoPlay\\Audio\\Music3.ogg", false, true);

- А страницы презентации сделал бы не страницами, а диалогами (Dialog1, Dialog2, Dialog3...), по функционалу, они не уступают страницам, а при их смене, музыка не прерывается.

- А на в четвертом диалоге, в "On Show", написал бы:
Audio.Stop(CHANNEL_ALL);
Audio.Play(CHANNEL_USER2);

И тогда она будет играть, пока кровь из ушей не пойдет.

Добавлено:
KerberX
Цитата:
Можно скопировать найденные файлы с сохранением структуры в другую папку и потом её всю архивировать. Тогда архив получится с нормальной файловой структурой.
Я бы точно победил в конкурсе: "Главный дебил галактики "Млечный путь"". Спасибо.


Цитата:
На тестовом архиве плохо видно. Используй архив где много файлов.
Ааа, да, знаю такие "Progress", у плохих инсталляторов типа "Smart Install Maker" он такой же, полоса отсчитывает количество файлов в архиве, поэтому, когда они большие, непонятно, то ли комп завис, то ли еще распаковывает.

Буду использовать для большого количества мелких файлов. Если будут какие ни будь обновления, обязательно отпишитесь, а то вещь то ценная.
Автор: KerberX
Дата сообщения: 11.09.2015 23:26

Цитата:
Ааа, да, знаю такие "Progress", у плохих инсталляторов типа "Smart Install Maker" он такой же, полоса отсчитывает количество файлов в архиве, поэтому, когда они большие, непонятно, то ли комп завис, то ли еще распаковывает.

Вообще это не совсем верно. Зависит от ситуации. Я сам много где использую эту библиотеку и она ведёт себя как надо.
Автор: Pus21
Дата сообщения: 12.09.2015 14:07
KerberX

Цитата:
Вообще это не совсем верно. Зависит от ситуации. Я сам много где использую эту библиотеку и она ведёт себя как надо.

Я запаковал 4 файла по 200мб, и, при распаковке, полоса прогресса у меня переместилась 4 раза: четверть, половина, три четверти, и финал.

Если тот же архив распаковывать 7zip или is7z.dll, то полоса прогресса перемещается плавно.

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


Цитата:
Я сам много где использую эту библиотеку


И я буду использовать, не в полосе прогресса счастье.
Автор: AntiWinLockerLive
Дата сообщения: 12.09.2015 14:31

Цитата:
Если тот же архив распаковывать 7zip или is7z.dll, то полоса прогресса перемещается плавно.
Подскажите как полосу прогресса прикрутить к 7Zip
Что то я не пойму что там считывать, для определения хода выполнения.
Я использую, обычно 7zG.exe (вывод окна извлечения 7zip)
И еще... Могу ли я как то программно уменьшить окно вывода информации 7zG.exe
Это уже реализовано на AutoIt...

Посмотрел файл в редакторе ресурсов... Можно форму отредактировать уменьшив... Но как то неправильно это...
В смысле авторских прав.

Нашел еще вот это:
app_handle = Application.GetWndHandle();
Window.SetSize(app_handle, 100, 150);
Только надо получить идентификатор окна.
Как можно его считать?
Автор: AntiWinLockerLive
Дата сообщения: 15.09.2015 12:56

Цитата:
Только надо получить идентификатор окна.

Нашел на форуме, но не работало...
Допилил сам:

Запускаю с параметрами: 7zg.exe
File.Run("\""..my7zip.."\" x \""..ImageIso.."\" -o\""..qemudrive.."\" -y -xr@\""..listEx.."\"", "", "", SW_SHOWNORMAL, false) , далее выполняю код:

Код: instances_of_file = 0;
processes = Window.EnumerateProcesses(); -- Получаем список запущенных процессов
for j, file_path in pairs(processes) do -- Цикл, поиск нужного процесса
file = String.SplitPath(file_path); -- Резка пути на составляющие
if (String.Lower(file.Filename..file.Extension)) == "7zg.exe" then -- Переводит имя файла в нижний регистр и сравнивает (7zg.exe пишем в нижнем регистре. Обязательно!)
instances_of_file = instances_of_file + 1; -- Если процесс существует то глумимся над окном
hWnd = j; -- Тут назначается значение hWnd окна (из 6 цифр)
break; -- Прерываем цикл
end
end
if instances_of_file > 0 then -- Запуск глумления
Window.SetPos(hWnd, 30, 30); -- Координаты окна программы: 7zG
Window.SetSize(hWnd, 370, 400); -- Размер окна
Window.SetText(hWnd, "New Title"); -- Новое название программы
Window.SetOrder(hWnd, HWND_TOP); -- Установка поверх всех окон
end
Автор: AntiWinLockerLive
Дата сообщения: 20.09.2015 19:16
Может кто нибудь подскажет, как подождать завершение процесса.
Это нужно, для последующего выполнение скрипта, но после закрытия 7zip процесса
File.Run в данном случае не должен ждать, так как я не смогу изменить размер окна и положение...
Автор: KerberX
Дата сообщения: 27.09.2015 21:20

Цитата:
Я запаковал 4 файла по 200мб, и, при распаковке, полоса прогресса у меня переместилась 4 раза: четверть, половина, три четверти, и финал.
 
Если тот же архив распаковывать 7zip или is7z.dll, то полоса прогресса перемещается плавно.
 
Вы же сами сказали что в примере плохой архив, а плох он тем, что там один большой файл, при распаковке которого полоса прогресса вообще не двигается.


Изменённая Callback функция отображает прогресс и для одного файла. Эта функция находится в файле "ServiceFunctions.lua".


Код: function Archive.ARCHIVERPROC(hWnd, uMsg, nState, lpExInfo)
    if (nState == ARCEXTRACT_BEGIN or nState == ARCEXTRACT_INPROCESS or nState == ARCEXTRACT_OPEN or nState == ARCEXTRACT_COPY) then
        local EXTRACTINGINFO = MemoryEx.AssignStruct(lpExInfo, Archive.EXTRACTINGINFO);
        local pPointer = EXTRACTINGINFO:GetPointer();
        --
        local nTotal = EXTRACTINGINFO.dwFileSize;
        local nProceed = EXTRACTINGINFO.dwWriteSize;
        --
        local sSourceFile = MemoryEx.String(pPointer+EXTRACTINGINFO:Offset("szSourceFileName"), -1, MEMEX_ASCII);
        local sOutFile = MemoryEx.String(pPointer+EXTRACTINGINFO:Offset("szDestFileName"), -1, MEMEX_ASCII);
        --
        if Archive.UserCallback ~= nil then
            Archive.UserCallback(nProceed, nTotal, UTF8.ToANSI(sSourceFile), UTF8.ToANSI(sOutFile));
        end
    elseif (nState == ARCEXTRACT_END) then
        if Archive.UserCallback ~= nil then
            Archive.UserCallback(100, 100, "", "");
        end
    end
    return Var.ToNumber(not Archive.Stop);
end
Автор: AntiWinLockerLive
Дата сообщения: 29.09.2015 23:32
Подскажите пожалуйста, можно ли на объект Image навесить на левый клик мыши, функцию, как на заголовке окна - движение положения окна (захват) Я даже правильно выразится не могу как это называется... В общем у меня системной рамки у окна нет. Я включил функцию, при которой можно захватить окошко и таскать его по рабочему столу, но сверху пришлось добавить дополнительно картинку. а за нее не таскается, вот мне и надо на этот объект навесить функцию передвижения окна.
Реально это сделать?
Автор: KerberX
Дата сообщения: 30.09.2015 00:36
AntiWinLockerLive
Наскоро придумал способ (в On Mouse Move). Он работает, но у него есть один громадный недостаток - окно при перетаскивании сильно мерцает и я пока что не придумал как от этого избавиться.

Код: if System.IsKeyDown(1) == true then
    Window.SetPos(hAppWnd, e_X, e_Y);
end
Автор: AntiWinLockerLive
Дата сообщения: 30.09.2015 08:24
KerberX, что то у меня не получилось...

Вот окно: О программе.

В нем есть двигающийся текст (снизу вверх)
Есть одна проблема, он двигается от самого нижнего края окна, до самого верхнего...
Отодвинуть от краев текст, так и не получилось. Пересмотрел все проекты с бегущей строкой.
У tavria2 тоже с боков начинается, но он применил два изображения скрыв края текста.
Так сделал и я, но теперь я не могу двигать окно программы по рабочему столу.
Помогите разобраться.
Может есть еще какая нибудь реализация прокрутки текста, или передвижения окна???
Автор: KerberX
Дата сообщения: 30.09.2015 10:44
AntiWinLockerLive
Не получается потому что я забыл написать вот это. В On Show.

Код: hAppWnd = Application.GetWndHandle();
Автор: AntiWinLockerLive
Дата сообщения: 30.09.2015 11:25
Пошло. Не не красиво и с тормозами.
Автор: LTJBukem
Дата сообщения: 10.10.2015 13:31
Добрый день. Ответьте, пожалуйста, не знающему человеку на 2 вопроса:

1. Команда File.GetCRC выдаёт значения отличающиеся от значений по CRC-файлу из например Total Commander или HashTab. Можно ли добиться от команды File.GetCRC значений равных Total Commander или HashTab?

2. Пытаюсь обойти решение первого вопроса созданием текстового файла с контрольной суммой в формате Autoplay Media Studio. Сделал выбор файла, для которого требуется подсчитать контрольную сумму, но столкнулся с проблемой, как сделать автоматическое сохранение текстового файла со значением контрольной суммы рядом с файлом и с тем же названием, который выбрали для подсчёта?


Код: file_result = Dialog.FileBrowse(true, "Locate File", _DesktopFolder, "All Files (*.*)|*.*|", "", "dat", false, false);
crc = String.ToNumber(File.GetCRC(file_result[1]));
TextFile.WriteFromString("C:\\CRC.txt", crc, false);
Автор: KerberX
Дата сообщения: 10.10.2015 16:44
LTJBukem

Цитата:
Команда File.GetCRC выдаёт значения отличающиеся от значений по CRC-файлу из например Total Commander или HashTab.

Функция File.GetCRC(); выдаёт десятичное значение CRC, а HashTab и Total Commander шестнадцатеричное.


Код: local tFiles = Dialog.FileBrowse(true, "Locate File", _DesktopFolder, "All Files (*.*)|*.*|", "", "dat", false, false);
if tFiles[1] ~= "CANCEL" then
    -- Получаем CRC и преобразуем его значение из десятичной формы в шестнадцатеричную. За это отвечает "%X" в строке формата функции string.format();
    local sCRC = string.format("%X", File.GetCRC(tFiles[1]));
    TextFile.WriteFromString(tFiles[1]..".crc", sCRC, false);
end
Автор: KerberX
Дата сообщения: 13.10.2015 02:04
Есть у кого-нибудь бинарник lua iconv? Мне нужен именно бинарник, iconv.dll.
Автор: AntiWinLockerLive
Дата сообщения: 13.10.2015 12:19
В этой штуке есть все примеры, исходники и плагины:
AMSSpecialist Tools 4.0 eng

Ну или тут: libiconv-1.9.1.dll.zip
Автор: KerberX
Дата сообщения: 13.10.2015 12:54
В AMSSpecialist его нет. А второй файл это не расширение для Lua. Его можно использовать, через Alien например, но хотелось бы именно вариант для Lua.
Автор: LTJBukem
Дата сообщения: 14.10.2015 21:21
KerberX, спасибо! Очень помогли.
Автор: LTJBukem
Дата сообщения: 17.10.2015 13:46
Подскажите, пожалуйста, можно ли реализовать следующее:
Имеется объект Input, куда вводятся цифровые значения, которые в дальнейшем перезаписываются в INI файле. Можно ли как-нибудь ограничить ввод для пользователя до следующих условий:
1. Ввод только цифр (никаких букв)
2. Ввод строго по шаблону -XX,XX
То есть в начале может быть (а может и не быть) знак - (минус), затем 2 цифры, дальше разделитель целой и дробной части в виде запятой и после 2 цифры.
?
Автор: KerberX
Дата сообщения: 17.10.2015 15:32
LTJBukem

Цитата:
1. Ввод только цифр (никаких букв)


Код: local sString = Input.GetText("Input1");
-- Так
if string.match(sString, "^[%d+]+$") == nil and string.match(sString, "^[%d%-]+$") == nil then
    Dialog.Message("", "Введите только цифры");
else
    Dialog.Message("", sString);
end
-- Или так
local sNumber = tonumber(sString);
if sNumber == nil then
    Dialog.Message("", "Введите только цифры");
else
    Dialog.Message("", sString);
end
Автор: Octanium
Дата сообщения: 19.10.2015 21:37
Всем доброй ночи!

В Autoplay Media Studio можно задать функцию которая будет выполнятся в фоновом режиме?

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

Проще говоря: запуск функции которая контролирует прогресс бар, и считывает размер файла, затем запуск программы которая будет обрабатывать файл. Разумеется у команды File.Run нет калбек =(


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

Спасибо!
Автор: KerberX
Дата сообщения: 19.10.2015 22:45

Цитата:
В Autoplay Media Studio можно задать функцию которая будет выполнятся в фоновом режиме?

Используй таймер.


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

Используй Callback функцию для копирования.
Автор: erickck
Дата сообщения: 20.10.2015 20:59
Всем привет! Работаю с библиотекой bass. Никак не могу получить целий заголовок icy tags из потока радио. Дело в том, что заголовок имеет тип char * которий является 0-терминированной строкой, через alien я указываю как string. Целый заголовок виглядит так - ICY 200 OK\0Bitrate\0\0.


Код: bass.BASS_ChannelGetTags:types{ret = "string", "ulong", "ulong", abi="stdcall"}
BASS.ChannelGetTags = function (hWnd)
icy = bass.BASS_ChannelGetTags(hWnd, 4) return icy end
Автор: Zloy_Gelud
Дата сообщения: 20.10.2015 21:54
erickck
bass.BASS_ChannelGetTags, согласно докам, должен возвращать не строку, а указатель на память, где хранится строковое значение. А дальше в цикле считывать значение из памяти.
С alien мне лень заморачиваться, но вот рабочий пример с плагином MemoryEx:

Код: BASS_TAG_ICY = 4;

Debug.ShowWindow(true);

local BASSDLL = Library.Load(_SourceFolder.."\\bass.dll");
if (BASSDLL.BASS_Init(-1, 44100, 0, 0, 0) ~= 0) then
    local hStream = BASSDLL.BASS_StreamCreateURL("http://listen.trance.fm/4/320", 0, 0, 0, 0);
    if (hStream ~= 0) then
        local pTags = BASSDLL.BASS_ChannelGetTags(hStream, BASS_TAG_ICY);
        local nLen, sTag
        while (pTags ~= 0) do
            nLen = tonumber(DLL.CallFunction("kernel32.dll", "lstrlen", pTags, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL));
            if (nLen <= 0) then break; end
            sTag = MemoryEx.String(pTags, -1, MEMEX_ASCII);
            if not sTag then break; end
            Debug.Print('ICY tag: '..sTag..'\r\n');
            pTags = pTags + nLen + 1;
        end
    end
    BASSDLL.BASS_Free();
end
BASSDLL:Close_();

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

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


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