-
Файлы ассоциированы с приложением. Как открывать по одному - понятно, но вот как определить что пользователь выбрал несколько файлов.
-
> [0] Efir (31.03.08 22:17)
А чуточку подробнее можно?
-
> что пользователь выбрал несколько файлов
и нажал ентер?
В прочем.... где выбрал, как открыть пытается?
-
> {RASkov} © (31.03.08 22:21) [2]
Ну в общем да, выбрал неск. файлов и нажал Enter.
-
Выбрал в проводнике.
-
> [3] Efir (31.03.08 23:53)
> Ну в общем да, выбрал неск. файлов и нажал Enter.
Тогда запуститься столько же раз ассоциированная программа...
В программе нужно предотвратить работу более одной копии а при старте передавать имя в первую копию...
-
Что-то как-то несуразный получился ответ :( ...но думаю понятно, что я имел в виду)
Т.е. при старте программы нужно проверить, нет ли уже работающего экземпляра этой же программы и если есть, то передать тому экземпляру имя файла находящееся в ParamStr(1) и закрыться....
-
Я это в общем и сделал, но т.к. программа - плеер, то хотелось узнать, можно ли сразу скопом загрузить все файлы, как например это делает Winamp.
-
> Efir (01.04.08 00:16) [7]
>
> Я это в общем и сделал, но т.к. программа - плеер, то хотелось
> узнать, можно ли сразу скопом загрузить все файлы, как например
> это делает Winamp.
>
Что ты именно "в общем и сделал"? И что означает "как это делает WinAmp"?
-
> Германн © (01.04.08 00:32) [8]
> Т.е. при старте программы нужно проверить, нет ли уже работающего
> экземпляра этой же программы и если есть, то передать тому
> экземпляру имя файла находящееся в ParamStr(1) и закрыться.
> ...
-
> Германн © (01.04.08 00:32) [8]
Нет ли возможности призагрузке копии прогрыммы определить, что выделенно несколько файлов и сразу все загрузить. По-моему Winamp так и делает.
-
> Efir (01.04.08 00:35) [9]
Во-первых ты не сказал как сделал. Во-вторых не ответил на мой второй вопрос. А WinAmp, имхо так и делает. Перед Германн © (01.04.08 00:32) [8] лично проверил.
-
> Efir (01.04.08 00:38) [10]
>
>
> > Германн © (01.04.08 00:32) [8]
>
>
> Нет ли возможности призагрузке копии прогрыммы определить,
> что выделенно несколько файлов и сразу все загрузить. По-
> моему Winamp так и делает.
1. Нет.
2. Нет. см. Германн © (01.04.08 00:39) [11]
-
Здесь есть один нюанс, как узнать, что при загрузке следующего файла предыдущий тоже был загружен из выделенных файлов (т.е. определить, очищать плейлист или добавить). Я решил проблему засекая время с момента последней загрузки, и если прошло менее 100 мс, добавлял файл, иначе очищал плейлист. Но мне кажнтся это кривоватый способ.
Вот и решил узнать есть ли более эффективый способ.
-
> Efir (01.04.08 00:49) [13]
>
> Здесь есть один нюанс, как узнать, что при загрузке следующего
> файла предыдущий тоже был загружен из выделенных файлов
> (т.е. определить, очищать плейлист или добавить). Я решил
> проблему засекая время с момента последней загрузки, и если
> прошло менее 100 мс, добавлял файл, иначе очищал плейлист.
> Но мне кажнтся это кривоватый способ.
> Вот и решил узнать есть ли более эффективый способ.
>
Хм. Не твой ли был вопрос про "Открыть с помощью"?
Если и есть более эффективный, то я его не знаю.
-
> Хм. Не твой ли был вопрос про "Открыть с помощью"?
Вроде не я.
-
-
> Leonid Troyanovsky © (01.04.08 09:38) [16]
Это уже интересней, но по результату работы не сильно отличается от
при старте программы нужно проверить, нет ли уже работающего
экземпляра этой же программы и если есть, то передать тому
экземпляру имя файла находящееся в ParamStr(1) и закрыться.
-
> Efir (01.04.08 21:42) [17]
> Это уже интересней, но по результату работы не сильно отличается
Тебе шашечки или ехать?
Указанная ссылка объясняет, как открыть несколько выделенных
в проводнике файлов, ассоциированных с приложением.
Кста, приложение там запускается единожды, а все остальное -
за счет взаимодействия с проводником.
--
Regards, LVT.
-
При взгляде на загрузку того же Winamp'a видно, что приложение загружает одну копию о добавляет все файлы сразу (при добавлении файлов курсор показывает загрузку только один раз - во время загрузки первой копии программы).
В приведённых примерах файлы добавляются по очереди (по одному), что затрудняет определиние последнего загруженного файла.
-
> Efir (01.04.08 22:11) [19]
>
> При взгляде на загрузку того же Winamp'a видно, что приложение
> загружает одну копию о добавляет все файлы сразу
Плохой взгляд. Я когда сам проверял, выделил несколько файлов и нажал в проводнике Энтер, увидел два окна с предложением обновить версию WinAmp'а. Что никак не согласуется с версией о только одной копии.
-
> Германн © (02.04.08 00:07) [20]
Ладно, возможно, но нужно отловить момент загрузки последнего файла.
-
> Efir (02.04.08 00:19) [21]
>
>
> > Германн © (02.04.08 00:07) [20]
>
>
> Ладно, возможно, но нужно отловить момент загрузки последнего
> файла.
>
Тут эта. Возможно есть в проводнике способ узнать количество выделенных файлов, возможно нет такого способа я не знаю. По ссылке LVT ничего подобного не было?
-
> Германн © (02.04.08 00:54) [22]
> Тут эта. Возможно есть в проводнике способ узнать количество
> выделенных файлов, возможно нет такого способа я не знаю.
> По ссылке LVT ничего подобного не было?
Как узнать количество выделенных по той ссылке нет, хотя,
думаю, что найти оную информацию на просторах msdn можно.
Однако, среди выделенного могут быть как нецелевые файлы,
так и, скажем, ярлыки на нужные, что до их запуска установить
не просто, а уж средствами DDE - весьма сомнительно.
Да и проблема в том, что никакого "последнего" файла не
существует, бо после выделенного в одном экз. проводника
можно пустить из другого или из планировщика или и т.д.
Для самого общего случая, включая запуск из комстроки и
пакетных файлов, задача далеко нетривиальна и, понятно, что
DDE здесь не пригодится.
--
Regards, LVT.
-
> Leonid Troyanovsky © (02.04.08 22:59) [23]
>
>
Значит Efir (02.04.08 00:19) [21] желает странного.
-
Кстати. Только что попытался провести ещё один эксперимент с WinAmp'ом. Дык он вообще при выделении в проводнике 5 файлов mp3 открыл мне 5 окон с настройками DFX, 5 окон с предложением купить этот DFX и 5 окон собственно проигрывателя! И это несмотря на то, что опция "Allow multiple instances of Winamp to start" не выбрана.
P.S. Версия WinAmp'а конечно старая 3.0d. Но с 2002-го мало что изменилось.
Так что ещё раз подтверждаю мысль о том, "задача далеко нетривиальна".