Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.86.154] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Извеняюсь но не то, это я уже понел как делать, какроче Winamp так может, при выдилении файлов и папок winampу как то передаются все файлы и папки, а у меня файлы передаются, а папки открываются просто в эксплоере, а мне надо еще передать путь папки своей программе.
ПС: Надеюсь теперь понятно) |
Сообщ.
#17
,
|
|
|
Все еще жду ответа(
ПС: Бедный мой реестр) |
Сообщ.
#18
,
|
|
|
Цитата PIKACHU @ Извеняюсь но не то, это я уже понел как делать, какроче Winamp так может, при выдилении файлов и папок winampу как то передаются все файлы и папки, а у меня файлы передаются, а папки открываются просто в эксплоере, а мне надо еще передать путь папки своей программе. для решения этой проблемы просто нужно добавить команду "Открыть в "XXX Explorer" ..." и для ассоциированных файлов и пользоваться ей ... помнится Winamp добавляет пункт "Открыть в Winamp ..." ... код меняется только для процедур регистрации и открытия переданного параметра и будет таким .... procedure TForm1.WMCopyData(var Msg: TWMCopyData); var str_tmp: string; begin if (Msg.CopyDataStruct^).lpData = nil then str_tmp:=''; setLength(str_tmp, Msg.CopyDataStruct^.cbData); str_tmp:=pChar((Msg.CopyDataStruct^).lpData); if (extractfileext(str_tmp) = '.xxx') and fileexists(str_tmp) then NewTabData(str_tmp) else if directoryexists(str_tmp) then OpenFilesFromFolder(str_tmp) end; procedure TForm1.RegButtonClick(Sender: TObject); var reg: TRegistry; begin reg:=TRegistry.Create; // регистрация ассоциирования файлов с данной программой .... reg.RootKey:=HKEY_CLASSES_ROOT; reg.LazyWrite:=false; reg.OpenKey('.xxx\shell\open\command', true); // имя файла будет передавать в приложение как первый параметр reg.WriteString('', Application.ExeName + ' %1'); reg.CloseKey; reg.OpenKey('.xxx\shell\Открыть в "ХХХ Explorer"\command', true); // имя папки будет передаваться в приложение как первый параметр reg.WriteString('', Application.ExeName + ' %1'); reg.CloseKey; // добавляем отображаемую иконку reg.OpenKey('.xxx\DefaultIcon',true); // для отображения используем первую иконку в нашем приложении reg.WriteString('', Application.ExeName + ',0'); reg.CloseKey; // добвление пункта меню для папки с целью обработки её моей программой .... reg.OpenKey('Directory\shell\Открыть в "ХХХ Explorer"\command', true); // имя папки будет передаваться в приложение как первый параметр reg.WriteString('', Application.ExeName + ' %1'); reg.CloseKey; reg.free end; з.ы.: в прилагаемом архиве пример с последними изменениями ... Прикреплённый файлxxx_explorer_2009.05.01.zip (14.58 Кбайт, скачиваний: 97) |
Сообщ.
#19
,
|
|
|
Не понели вы меня), это отдельный случай, его я уже давно сделал.
При выделении файлов .ххх, только файлов, все работает. А если в эту группу выделеных файлов выделить и папку, то пути файлов передаются в программу открываются, а папка нет. Передача файлов и папок доложна передаватся за одно действие, а не отдельно папки и файлы. Тоесть пользователь выделил папку и файл нажал Enter и все файлы и папки, которые он выделил, параметром захватывались моей программе. |
Сообщ.
#20
,
|
|
|
Цитата Тоесть пользователь выделил папку и файл нажал Enter и все файлы и папки пользователь нажимает Ентер в проводнике, проводник выполняет действия проассоциированными с этими объектами: файл откроет в твоей программе, папку - в окне (в текущем или новом). |
Сообщ.
#21
,
|
|
|
Цитата PIKACHU @ Не понели вы меня), Это ты понять не хочешь, что папки в отличие от файлов не имеют типов\расширений и соотв-но действие по умолчанию для всех папок - это Открыть в эксплорере. Если тебе удастся каким-то способом изменить это поведение, и заставить по enter и даблклику по папке запускать вместо обзора папки твою прогу, то тогда ты не сможешь нормально открывть папки в проводнике. Ты уверен, что тебе и особенно тем, кто будет юзать твою прогу (если конечно таковые найдутся) именно это и нужно ? PS: Для автозапуска ассоциированных программ при клике на конкретных папках юзаются файлы autorun.inf - если эксплорер при открытии папки находит этот файл, то он может запустить прогу, прописанную в авторане, да и то в зависимости от настроек конкретного компа\юзера, т.к. безопасность и свобода личности превыше всего |
Сообщ.
#22
,
|
|
|
Цитата antonn @ Цитата Тоесть пользователь выделил папку и файл нажал Enter и все файлы и папки пользователь нажимает Ентер в проводнике, проводник выполняет действия проассоциированными с этими объектами: файл откроет в твоей программе, папку - в окне (в текущем или новом). Если вы хотите сказать что это не возможно, могу огорчить вас, Winamp же это как то делает. Добавлено Допетрило)))))))))), благодоря andrew.virus(спосибо огроооооооомное), надо было заменить .xxx\shell\open\command на .xxx\shell\Открыть в "ХХХ Explorer"\command Эксплоеру видимо обезательно чтобы в Directory\shell присудствовала строка точно такая же с каким типом файлов ее открываешь |