Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
 Аватар для VIsuaL_DG
0 / 0 / 0
Регистрация: 01.01.2013
Сообщений: 26

Определить статус воспроизведения файла

05.07.2014, 16:19. Показов 5301. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствйуте!

Опишу ситуацию:

У меня есть программа в которой для воспроизведения аудио я использую библиотеки winmm.dll:

Visual Basic
1
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
а для воспроизведения собственно аудиофайла команду:
Visual Basic
1
Call mciExecute("play 1.mp3")
Вопрос:

Как по нажатии на Command1 узнать играет ли 1.mp3 или уже воспроизведение завершено?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2014, 16:19
Ответы с готовыми решениями:

Сделать зацикливание воспроизведения звукового файла
Здравствуйте! Работаю в Visual Basic 6. Работая со звуком столкнулся с проблемой - как сделать, что бы после проигрыша файла он начинал...

Как определить статус службы?
Добрый день всем. Подскажите пожалуйста, как определить статус службы? Знаю, что для определения текущего состояния службы...

Пример воспроизведения midi файла
Можете набрасать небольшой пример воспроизведения midi файла, в гугле нет рабочих примеров (QSound и phonon не робят в Qt 5.2 как я понял)

34
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
08.07.2014, 11:07
Студворк — интернет-сервис помощи студентам
При вызове A-версий функций происходит следующий список действий
  1. Строка конвертируется в ANSI посредством __vbaStrToAnsi
  2. ANSI cтрока передается в функцию
  3. Внутри строка конвертируется в UNICODE через RtlMultiBiteToUnicodeN
  4. Вызывается mciSendStringW
  5. После выполнения строка конвертируется в ANSI посредством RtlUnicodeToMultiByteN
  6. Строка конвертируется в UNICODE посредством __vbaStrToUnicode
При вызове W-версии функции:
  1. Вызывается mciSendStringW
2
 Аватар для VIsuaL_DG
0 / 0 / 0
Регистрация: 01.01.2013
Сообщений: 26
09.07.2014, 15:19  [ТС]
Всем огромнейшее спасибо за помощь!
Особенно Pro_grammer
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
13.07.2014, 21:49
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Я бы вообще не заморачивался тоже..
вызвал бы с помощью Shell плейер который по умолчанию в системе для MP3
и мониторил бы в таймере его движения
Специально для любителей таймеров:

Цитата Сообщение от Russinovich M., Solomon D., Ionescu A
However, the registry can be read at other times as well, such as in response to a modification of a registry value or key. Although the registry provides asynchronous callbacks that are the preferred way to receive change notifications, some applications constantly monitor their configuration set¬tings in the registry through polling and automatically take updated settings into account. In general, however, on an idle system there should be no registry activity and such applications violate best practices. {Process Monitor, from Sysinternals, is a great tool for tracking down such activity and the application or applications at fault.)
Тоже самое касается не только реестра.

Pro_grammer, имхо. Total Commander у тебя уже давно устарел.
Новая версия нормально обрабатывает и отображает символы юникода внутри RAR-контейнера.

Да и вообще, рекомендую почитать какое множество исправлений в 8.50. Поиск отдельным потоком.
На правах рекламы

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Может потому и нет у меня твоих проблем с кодировками и несовместимостью? Рекомендую.
Какой-то вредный совет.
У меня, кстати, тоже в музыкальной коллекции немалое кол-во файлов с юникодными именами.
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.07.2014, 22:58
Цитата Сообщение от Dragokas Посмотреть сообщение
У меня, кстати, тоже в музыкальной коллекции немалое кол-во файлов с юникодными именами.
А какой в этом смысл? Лично я кроме как на кириллице и латинице ни чего читать больше не умею. И если мне в автоматическом режиме всё это перекодировали из юникода в ASCII то я только этому рад. ИХМО это фича, а не баг! Или кого то радуют китайские или там арабские каракули в названиях?
1
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
13.07.2014, 23:14
Цитата Сообщение от Pro_grammer Посмотреть сообщение
А какой в этом смысл?
Смысл есть, есть много других символов помимо кириллицы и латиницы. Файловые операции на понимают мультибайтовую кодировку насколько мне известно (лень проверять), а это значит невозможность открыть файлы. Зря наверное Microsoft сделала поддержку юникода в Windows?
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Лично я кроме как на кириллице и латинице ни чего читать больше не умею.
А как же другие? И это не имеет отношения к файловым операциям. В ANSI можно и китайскими иероглифами писать без проблем с помощью мультибайтовых символов (аналог суррогатных пар в юникоде), но при работе с файлами используется заданный LCID (в основном это текущая локаль, но можно изменить) и все символы кодируются в нее с помощью аналога WideCharToMultibyte.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
ИХМО это фича, а не баг!
Это не фича и не баг, это побочное действие ANSI. Запусти файл в той локали в которой у тебя символы в имени файла - все разархивируется с нормальными именем. Но если в имени присутствуют символы из разных кодовых страниц, то уже работа будет невозможной, только в юникоде.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Или кого то радуют китайские или там арабские каракули в названиях?
Арабов и китайцев.
0
13.07.2014, 23:41

Не по теме:

Pro_grammer, ну дык. В каком виде мне скинули, в таком и пылиться на винте.
Ну а вообще, у меня есть один сборник и чисто на арабском.

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

0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
14.07.2014, 06:53
The trick, Dragokas, вы мне так объясняете, будто я только вчера узнал, что такое юникод и для чего он нужен
А я всего лишь всем говорю, что мне без надобности везде втыкать юникодные API только для того, что кто то за меня решил, что это правильно. Если я пишу что то и знаю, где и для чего это будет использовано, то правильно так, как я решил, и точка! И не надо рассказывать, какой это стандарт программисту на VB6, если "Стандартные контролы, стандартные файловые функции и еще по мелочи, да, не работают" с юникодом.
Любой инструмент надо применять при необходимости, а не на авось, что вдруг понадобится, и поверьте, если мне будет необходима поддержка юникода в моей программе, то я её реализую.
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
14.07.2014, 11:11
Цитата Сообщение от Pro_grammer Посмотреть сообщение
А я всего лишь всем говорю, что мне без надобности везде втыкать юникодные API только для того, что кто то за меня решил, что это правильно.
Да, это действительно правильно, иначе может быть трабла со считыванием файлов, как в примере который я показал выше.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
И не надо рассказывать, какой это стандарт программисту на VB6, если "Стандартные контролы, стандартные файловые функции и еще по мелочи, да, не работают" с юникодом.
Ну тык ты и нестандартно получаешь длину трека - через API. При чем тут работа с контролами? Почему бы не пользоваться преимуществом юникода чтобы это всегда работало везде, а специально делать так чтобы намеренно исключать эту возможность и включать возможные баги в программу? И ты так и не ответил:
Цитата Сообщение от The trick Посмотреть сообщение
В чем вообще проблема вместо Call func (String), написать Call func (StrPtr(String))? Или это считается граблями?
.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Любой инструмент надо применять при необходимости, а не на авось, что вдруг понадобится, и поверьте, если мне будет необходима поддержка юникода в моей программе, то я её реализую.
Никто не спорит, просто не нужно так категорично писать, на правильные поправки:
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Вот мне раеально ваши с Хакером заморочки по поводу юникода по барабану!
И уж тем более там, где это работает без всяких W
Я привел пример где это не работает, а Total Commander - это отговорка, я уже написал почему.
0
14.07.2014, 21:09

Не по теме:

Цитата Сообщение от Pro_grammer Посмотреть сообщение
The trick, Dragokas, вы мне так объясняете, будто я только вчера узнал, что такое юникод и для чего он нужен
Ну, со стороны оно именно так и выглядит.

Я только ответил на твой вопрос, приведя реальный пример.

0
14.07.2014, 22:25

Не по теме:

Меня тоже, все эти юникоды напрягают :)
Ansi = 256 символов
Unicode = 65536 символов

0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
14.07.2014, 22:54
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Ansi = 256 символов
Unicode = 65536 символов
Что за ересь? Читай, читай.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
14.07.2014, 23:12
Пусть сначала это освоит: http://ru.wikipedia.org/wiki/UTF-8
2
14.07.2014, 23:25

Не по теме:

Ну понятно, один UTF-8 = от одного и более байт :)
тоесть до этого я был уверен что для юникода требуется 2 байта,
а юникоды еще и разные бывают %-)

0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
14.07.2014, 23:57
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Ну понятно, UTF-8 = от одного до 6 байт
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Unicode = 65536 символов
Не видишь противоречие? По ссылке которую я дал есть такая строчка
Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 231 (2 147 483 648) кодовых позиций, было принято решение использовать лишь 1 112 064 для совместимости с UTF-16. Впрочем, даже и этого на текущий момент более чем достаточно — в версии 6.0 используется чуть менее 110 000 кодовых позиций (109 242 графических и 273 прочих символов).
Цитата Сообщение от Антихакер32 Посмотреть сообщение
тоесть до этого я был уверен что для юникода требуется 2 байта, просто юникоды еще и разные бывают
Ты ссылки читал вообще?
Поскольку в UTF-16 можно отобразить только 220+216−2048 (1 112 064) символов, то это число и было выбрано в качестве окончательной величины кодового пространства Юникода (диапазон кодов: 0x000000-0x10FFFF)
UTF-8 - это уже способ кодирования юникода. А как ты там будешь его хранить не важно, можно и UTF-16 или UTF-32 и даже просто байтовый массив хранить. В Windows, в частности в W-функциях используется UTF-16.
Тоже самое и с ANSI, не думай что 1 байт = 1 символ. Есть многобайтовые кодировки, там один символ может кодироваться несколькими байтами. В Windows обычно используют DBSC кодировку от 1 до 2-х байт на символ, в VB6 используется именно эта. Это позволяет стандартными контролами отображать китайские, арабские иероглифы. Как выдернуть функцию локализации приложения в отдельную функцию из имеющегося проекта
И вообще вот хорошая статья по этому поводу.
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
15.07.2014, 09:45
Да, статья интересная, мне особенно понравилось это:
Пожалуйста, не пишите ни одной строки кода, пока вы не закончите читать эту статью.
и это
вы не намного лучше, чем доктор, который не верит в микробов
мой словарный запас обогатился

Добавлено через 39 минут
Ну идея статьи вобщем-то понятна,
коротко я бы обозначил так, существуют кодовые страницы
в которых может по разному отображаться набор символов старше 128 байта
в частности для UTF-8, первый байт побитово 0, 10, 110, 1110, 11110, 111110, 111111
где 0 означает конец признака продолжения байта, всё, пойду дальше кодить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.07.2014, 09:45

Ошибка воспроизведения последнего файла
Всем здрасте =) как и ожидалось, за проект (МП3-плеер) я получил 5, на следующем курсе надо будет дорабатывать =/ однако стала...

WMPLib определить состояние воспроизведения
Собственно написал маленькое онлайн радио с использованием этой библиотеки. Как определить состояние воспроизведения? (например если...

Ошибка во время воспроизведения mp3 файла
Всем доброго времени суток:) Написал недавно программу для курсового проекта, тема там была с разработкой и наследованием TrackBar, но дело...

Изменение темпа воспроизведения аудио файла
Ребята подскажите как можно изменить темп воспроизведения файла? Хочу написать аудио проигрыватель меняющий темп с некоторым шагом во...

Вывод времени воспроизведения файла в MediaElement
Здравствуйте! Объясните, как правильно выводить время воспроизведения файла? Мой способ не совсем корректен, выводит например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru