|
Вопрос # 686/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Как передать имя/имена файлов программе, когда она запускается через меню файла, либо по двойному щелчку. А также все файлы каталога и подкаталогов по выборе команды из меню этого каталога.
Аналог: выделить файлы mp3 -> команда Enqueue -> добавляет все файлы в плейлист Winamp-а.
 |
Вопрос задал: Фамилия Имя Отчество (статус: Посетитель)
Вопрос отправлен: 30 июня 2007, 19:00
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Матвеев Игорь Владимирович
Здравствуйте, Emfs!
А Вы откройте regedit.exe, найдите в HKCR ключ Winamp.File и посмотрите что находится у него в подключах command ключей в ключе shell.
P.S. Explorer просто выполняет строку, в параметре по-умолчанию ключа command, передав в параметры список выделенных файлов/каталогов. Допустим в command Вы дописали ключ /add, тогда при запуске проверяете есть ли этот ключ, если есть и копия Вашей программы уже запущенна - передать ранее запущенной копии список файлов (ParamStr(Int)) и завершиться. Если же это первая копия программы - просто добавить файлы в "Плей лист".
Ответ #2. Отвечает эксперт: min@y™
Добавлю насчёт каталогов.
Допустим, программа через командную строку с параметрами получила имя объекта, который может быть как файлом, так и каталогом. Поэтому нужна проверка по атрибутам, т.е. требуется получить любым из известных способов атрибуты переданного объекта и сравнить (if attr and faDirectory <> 0 then...).
Если это оказалась директория, нужно построить список файлов, отфильтрованных по нужному расширению (включая, если требуется, и файлы из всех подкаталогов). Это простейший рекурсивный алгоритм (примеров в инете полно, могу также прислать парочку своих).
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 2 июля 2007, 08:34
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|