На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Открытие файлов из проводника
    Извеняюсь но не то, это я уже понел как делать, какроче Winamp так может, при выдилении файлов и папок winampу как то передаются все файлы и папки, а у меня файлы передаются, а папки открываются просто в эксплоере, а мне надо еще передать путь папки своей программе.

    ПС: Надеюсь теперь понятно)
    Сообщение отредактировано: PIKACHU -
      Все еще жду ответа(

      ПС: Бедный мой реестр)
        Цитата PIKACHU @
        Извеняюсь но не то, это я уже понел как делать, какроче Winamp так может, при выдилении файлов и папок winampу как то передаются все файлы и папки, а у меня файлы передаются, а папки открываются просто в эксплоере, а мне надо еще передать путь папки своей программе.

        для решения этой проблемы просто нужно добавить команду "Открыть в "XXX Explorer" ..." и для ассоциированных файлов и пользоваться ей ... помнится Winamp добавляет пункт "Открыть в Winamp ..." ...

        код меняется только для процедур регистрации и открытия переданного параметра и будет таким ....

        ExpandedWrap disabled
          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)
          Не понели вы меня), это отдельный случай, его я уже давно сделал.


          При выделении файлов .ххх, только файлов, все работает. А если в эту группу выделеных файлов выделить и папку, то пути файлов передаются в программу открываются, а папка нет. Передача файлов и папок доложна передаватся за одно действие, а не отдельно папки и файлы. Тоесть пользователь выделил папку и файл нажал Enter и все файлы и папки, которые он выделил, параметром захватывались моей программе.
            Цитата
            Тоесть пользователь выделил папку и файл нажал Enter и все файлы и папки

            пользователь нажимает Ентер в проводнике, проводник выполняет действия проассоциированными с этими объектами: файл откроет в твоей программе, папку - в окне (в текущем или новом).
              Цитата PIKACHU @
              Не понели вы меня),

              Это ты понять не хочешь, что папки в отличие от файлов не имеют типов\расширений и соотв-но действие по умолчанию для всех папок - это Открыть в эксплорере. Если тебе удастся каким-то способом изменить это поведение, и заставить по enter и даблклику по папке запускать вместо обзора папки твою прогу, то тогда ты не сможешь нормально открывть папки в проводнике. Ты уверен, что тебе и особенно тем, кто будет юзать твою прогу (если конечно таковые найдутся) именно это и нужно ?
              PS: Для автозапуска ассоциированных программ при клике на конкретных папках юзаются файлы autorun.inf - если эксплорер при открытии папки находит этот файл, то он может запустить прогу, прописанную в авторане, да и то в зависимости от настроек конкретного компа\юзера, т.к. безопасность и свобода личности превыше всего ;)
                Цитата antonn @
                Цитата
                Тоесть пользователь выделил папку и файл нажал Enter и все файлы и папки

                пользователь нажимает Ентер в проводнике, проводник выполняет действия проассоциированными с этими объектами: файл откроет в твоей программе, папку - в окне (в текущем или новом).

                Если вы хотите сказать что это не возможно, могу огорчить вас, Winamp же это как то делает.

                Добавлено
                Допетрило)))))))))), благодоря andrew.virus(спосибо огроооооооомное), надо было заменить
                ExpandedWrap disabled
                  .xxx\shell\open\command


                на

                ExpandedWrap disabled
                  .xxx\shell\Открыть в "ХХХ Explorer"\command



                Эксплоеру видимо обезательно чтобы в Directory\shell присудствовала строка точно такая же с каким типом файлов ее открываешь
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0315 ]   [ 15 queries used ]   [ Generated: 18.05.24, 04:27 GMT ]