![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загразка имён .mp3 файлов в ListBox моего проигрывателя [D6, WinXP]
Тёма © (2004-06-09 18:25:00)Здравствуйте!Хочу спросить опытных программистов об одном вопросе, который мучает меня уже долгое время.
Я создаю мультимедиа проигрыватель (в общем уже почти создал). И вот появилась такая необходимость, чтобы при выделении, например, 20 файлов .mp3 и нажатии кнопки "Enter" запускался мой проигрыватель и в его список ListBox добавлялись имена 20-ти .mp3 файлов.
Формат .mp3 ассоциировал с моим проигрывателем. В проигрывателе обработал функцию ParamStr. Запретил запуск второй копии программы (если это не сделать, запускается 20 проигрывателей). Но в ListBox добавляется только имя последнего двадцатого файла. И к тому же появляется это надоедливое окно "Вы собираетесь открыть 20 файлов, это может занять длительный процесс...".
Вот у Windows Media Playerи WinAmp(версия 2.8) все работает отлично - " никаких окон, никаких длительных процессов".
Пожалуйста, если кто-то знает, что делать в данной ситуации, помогите.
Mim1 (2004-06-18 08:56:00) [1][14] MUHAMOR (18.06.04 08:26)
С чего вы взяли что вы пошевелили мозгами? Вы и не нашли ничего оригинального. Такая идея была еще в [3].
Задача была в нахождении не самого простого решения а наиболее красивого.
Без эффекта описанного автором
> же появляется это надоедливое окно "Вы собираетесь открыть
> 20 файлов, это может занять длительный процесс...".
Вообщем можно было не бросаться кодить а просто написать сюда алгоритм. Ваше решение с записью параметров в реестр уж простите никак красивым не назову.
MUHAMOR (2004-06-18 08:26:00) [2]Нет в нем ничего ценного. Просто в итоге все оказалось намного проще....
И почемуто комуто лень мозгами шевелить
http://muhamorchik.narod.ru/distrib/Export.zip
Mim1 (2004-06-17 17:57:00) [3]
> [12] MUHAMOR (16.06.04 22:04)
> А вот и результат, будут вопросы пиши на мыло...
Гениально!
Более достойный результат сожно скачать с зарекомендовавшего себя сайта
http://www.winamp.com:)
А при взягляде на ваше exe есть нехорошие подозрение. Думаю всех мама учила что попало не запускать :)
А что код настолько ценен что его жалко выложить?
MUHAMOR (2004-06-16 22:04:00) [4]А вот и результат, будут вопросы пиши на мыло...
http://muhamorchik.narod.ru/distrib/RunAll.zip
MUHAMOR (2004-06-14 18:19:00) [5]Кстати тут пришло еще одно решение.........
Результат будут позже...
MUHAMOR (2004-06-14 10:19:00) [6]Вот глянь что у меня получилось.
http://muhamorchik.narod.ru/distrib/RunAll.zip
Кустарно конечно, но иногдасрабатывает. Идея вроде ничего но надо еще поработать. Такчто я и тебе оставил поработать немного, а то совсем неинтересно получится...
GuAV (2004-06-14 00:45:00) [7]Поделюсь своим наблюдением:
Винамп ищет себя при запуске и если разница между временем запуска копии меньше <константы не знаю, где-то 0.5 сек>, то он передаёт сообщение (или не сообщение?) старой копии. Вот так тупо.
G_U_N (2004-06-13 21:00:00) [8]Удалено модератором
Примечание: Зажай вопрос в своей ветке
Тёма (2004-06-11 09:00:00) [9]И ещё один вопрос - последний.
Вот если я, например, с помощью реестра ассоциировал с форматом .mp3 свои иконки, то как сделать так, чтобы .mp3-шки приняли мои иконки без перезагрузки компьютера. Опять, наверное, какую-то функцию обновления надо использовать.
Заранее благодарен!
Тёма (2004-06-10 11:56:00) [10]Всё-таки непростая вещь - этот DropTarget.Я уже до этого пробовал изменять в реестре ключи с "winamp.exe" на свой "player.exe". Проигрыватель запускается, но в ListBox довабляется "-Embedding" и папка, откуда я запускаю .mp3 файлы, зависает. Создавал свои ключи и записывал в них "winamp.exe", WinAmp запускается, в его список файлов ничего не добавляется, а папка опять зависает.
Выходит, что в моём плеере надо использовать какую-то функцию (в MSDN написано про какую-то WM_DDE_EXECUTE), но я про неё ничего не знаю. Может кто-то подкинет мне умную мысль.
Тёма (2004-06-10 09:05:00) [11]Спасибо всем!
Сейчас начну разбираться с DropTarget. Но вот насчёт (Иван Ширко) обмена сообщениями не уверен. Ведь, кажется, с использованием DropTarget не будет запускаться вторая копия программы. Поэтому здесь надо будет подумать.
Mim1 (2004-06-10 03:27:00) [12]
> это надоедливое окно "Вы собираетесь открыть 20 файлов
Смотрите DropTarget, LocalServer32
http://www.google.com/search?q=%44%72%6F%70%54%61%72%67%65%74%20%4C%6F%63%61%6C%53%65%72%76%65%72%33%32
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/fileassociations/fa_verbs.asp
Иван Ширко (2004-06-09 22:19:00) [13]Здесь можно использовать обмен сообщениями между версиями твоей проги (wm_copydata, например):
Запускается прога, если это её первый экземпляр, то работаем, иначе посылаем имя файла первому экземпляру и закрываемся. должно работать.
Удачи!
Тёма (2004-06-09 21:51:00) [14]Если бы было всё так просто!Конечно же я пишу "for i:=0 to...". Да только вот вся проблема в том, что Windows посылает имя каждого из 20-ти .mp3 файлов не в один проигрыватель (как надо), а в каждый проигрыватель по одному имени. Поэтому, мне кажется, что здесь, скорее всего, надо использователь не только ParamStr, а что-то ещё. Для WinApm, например, в реестре я нашёл, что он использует какую-то функцию DropTarget, а Windows Media Player вообще использует .dll библиотеку.
Уже несколько месяцев я в тупике, никто ничего вразумительного не может сказать. Help!
Kto-to (2004-06-09 19:15:00) [15]Мне кажется, что ты пишешь так:
ListBox.Items.Add(ParamStr(ParamCount)); //я прав?
Попробуй так:
for i := 0 to ParamCout {-1?} do
ListBox.Items.Add(ParamStr(i)); //может быть получится
Хотя я не уверен...