Звук Lua в фоновом режиме

Страницы: 1
RSS
Звук Lua в фоновом режиме
 

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

Код
os.execute('powershell -c (New-Object Media.SoundPlayer "c:\\windows\\media\\tada.wav").PlaySync();')
Но звук будет проигран не в фоновом режиме. Обычно воспроизведение звука занимает 5-10 секунд, что останавливает основную работу скрипта. Можно ли как-то проиграть данную команду в фоновом режиме. Либо как-то запустить проигрыватель VLC.exe для проигрывания звука в фоновом режиме?  
Торговый привод на Lua http://iv-litovchenko.ru/
 
Тема звука в фоновом режиме по прежнему актуальна.
Торговый привод на Lua http://iv-litovchenko.ru/
 
Нашел на форуме "start /i /min /b":
Код
os.execute ('start /i /min /b C:\\VideoLAN\\VLC\\vlc.exe -I dummy --dummy-quiet C:\\windows\\media\\tada.wav');
Но хотелось бы также что бы можно было остановить звук.
То получается могут проигрываться два параллельны звука.
Торговый привод на Lua http://iv-litovchenko.ru/
 
Цитата
Иван написал:
Нашел на форуме " start /i /min /b ":
Код
  os.execute ( 'start /i /min /b C:\\VideoLAN\\VLC\\vlc.exe -I dummy --dummy-quiet C:\\windows\\media\\tada.wav' );
  
Но хотелось бы также что бы можно было остановить звук.
То получается могут проигрываться два параллельны звука.
Добавил:
Код
-- /i Передает начальные установки среды интерпретатора Cmd.exe в новое окно командной строки.
-- /min Запускает новое окно командной строки в свернутом виде.
-- /b Запускает приложение без открытия нового окна командной строки. Обработка комбинации клавиш CTRL+C не производится, пока приложение не разрешит обработку CTRL+C. Для прерывания приложения следует использовать CTRL+BREAK.
      
Торговый привод на Lua http://iv-litovchenko.ru/
 
Вот держите. Положить луа и длл в одну папку с вашим скриптом, включить файл qPlaySound через require, вызывать функцию qPlaySound(filename). Пример
Код
require "qPlaySound"

local run = true

function main()
   while run do
      sleep(3000)
      qPlaySound("c:\\windows\\media\\tada.wav")
   end
end

function OnStop()
   run = false
end
 
Пример очень хороший, но посмотреть бы что внутри этой dll-библиотеки, т.к. не нашел в сети иинформации по ней.
Торговый привод на Lua http://iv-litovchenko.ru/
 
Цитата
Иван написал:
не нашел в сети иинформации по ней.
И не найдете, я ее только что спешл фор ю слепил. Что внутри можно посмотреть дизасмом, ежли паранойка. Там очень мало чего.
 
Цитата
Anton написал:
Цитата
Иван написал:
не нашел в сети иинформации по ней.
И не найдете, я ее только что спешл фор ю слепил. Что внутри можно посмотреть дизасмом, ежли паранойка. Там очень мало чего.
Можно пожалуйста сюда исходный код выложить.
Торговый привод на Lua http://iv-litovchenko.ru/
 
Цитата
Anton написал:
qPlaySound("c:\\windows\\media\\tada.wav")
69: attempt to call a nil value "package.loadlib(getScriptPath() .. "\\qPlaySound.dll", "qload")();"
Торговый привод на Lua http://iv-litovchenko.ru/
 
Версия квика меньше 8.5, полагаю? Собрано под 8.5, с новым луа.
 
Вот со старым (не тестил)
 
Цитата
Иван написал:
исходный код
Всегда забавляет, когда люди внимательно изучают сорцы на гитхабе, а потом скачивают готовый бинарник с какого-то левого сайта. Почему они считают, что бинарник собран именно из тех сорцев, что им показали, для меня загадка. Впечатляющий прорыв творческой мысли, не правда ли?
Код
static int qPlaySound(lua_State * s)
{
   PlaySoundA(lua_tostring(s, -1), NULL, SND_FILENAME | SND_ASYNC | SND_NODEFAULT);
   return 0;
}
 
Да это забавно - согласен.
Речь была не про это - а про то, что бы посмотреть. У меня он так и не запустился.
Единственная библиотека которую я смог запустить для звуков это w32.dll.
Торговый привод на Lua http://iv-litovchenko.ru/
 
Цитата
Иван написал:
У меня он так и не запустился.
Так а версию квика-то назовите, может у вас вообще седьмая какая-нибудь. Скрипт qPlaySound.lua должен лежать рядом с вашим скриптом и рядом же должна лежать qPlaySound.dll.
 
7.27
Торговый привод на Lua http://iv-litovchenko.ru/
 
Цитата
Иван написал:
7.27
Нуштошвысразунесказали ) Ща...
 
Цитата
Anton написал:
Цитата
Иван написал:
7.27
Нуштошвысразунесказали ) Ща...
И еще почему ищу именно библиотеку.
Что бы в коробке были функции play(), stop().
Торговый привод на Lua http://iv-litovchenko.ru/
 
Вот под седьмую версию и раньше (тоже не тестил)
 
Цитата
Иван написал:
Что бы в коробке были функции play(), stop().
В данном случае стопом будет qPlaySound(nil)
 
Не найден указанный модуль.
Торговый привод на Lua http://iv-litovchenko.ru/
 
Что-то не так разложили. Рядом с вашим скриптом должны лежать qPlaySound.lua (из первого варианта) и qPlaySound.dll, ваш скрипт должен require("qPlaySound"). Вот для удобства все содержимое тестовой папки (ага, спецом поставил седьмой квик и проверил). Распакуйте архив, перенесите папку lua целиком в папку квика, в квике добавьте и запустите qplay.lua. Должен квакать раз в две секунды. Если все ок, qplay.lua можно выкинуть и дальше пользоваться как хочется.
 
Вот проигрывание в фоновом режиме
https://quik2dde.ru/viewtopic.php?id=79

Всё подробно написано как устанавливать. Надеюсь, у вас не 8.5 версия (где Lua версию изменили)
 
Цитата
swerg написал:
Вот проигрывание в фоновом режиме
https://quik2dde.ru/viewtopic.php?id=79

Всё подробно написано как устанавливать. Надеюсь, у вас не 8.5 версия (где Lua версию изменили)
Да эту библиотеку видел w32. Но пока решил отказаться от звуков для кнопочек, т.к. опять проблема совместимости начинается в 8.
Решил оставить только звуки для важных событий - а на них не вижу страшным что экран будет черный показываться и скрываться по крайней мере на данном этапе работ.
Код
os.execute ('start /i /min /b C:\\VideoLAN\\VLC\\vlc.exe -I dummy --dummy-quiet C:\\windows\\media\\tada.wav');
Торговый привод на Lua http://iv-litovchenko.ru/
 
Цитата
swerg написал:
Вот проигрывание в фоновом режиме
https://quik2dde.ru/viewtopic.php?id=79

Всё подробно написано как устанавливать. Надеюсь, у вас не 8.5 версия (где Lua версию изменили)
Пока решил остаться на Quik 7 - поэтому библиотека w32.dll оказалась очень кстати.
Единственный нюакнс который заметил - как полагаю на время запуска звука приостанавливает работу скрипта. Может ошибаюсь - но все же это доли секунд.
Торговый привод на Lua http://iv-litovchenko.ru/
 
Цитата
Иван написал:
Единственный нюакнс который заметил - как полагаю на время запуска звука приостанавливает работу скрипта. Может ошибаюсь - но все же это доли секунд.
Проигрывать файлы - затратно. Даже если само проигрывание идет асинхронно, надо до возврата из функции загрузить указанный файл (чтобы знать случилось ли это успешно), проинициализировать звуковую карту и разные прочие накладные расходы. На это время, понятно, всё приостанавливается.

PS
Сборка w32.dll для QUIK 8.5 уже выложена
Страницы: 1
Читают тему (гостей: 1)
Наверх