Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2014, 12:44   #1
JoLan
Delphi XE7
Пользователь
 
Аватар для JoLan
 
Регистрация: 26.07.2010
Сообщений: 74
Печаль Развернуть папку в проводнике

Здравствуйте. Имеется задача открыть некую директорию в проводнике из моего приложения и выделить требуемый файл.

Если с этим вопросом более менее понятно
Код:
ShellExecute(0, 'open', 'EXPLORER', PChar('/select, '+Filename), nil, SW_RESTORE)
То остаётся открытым другой вопрос: если текущая папка уже открыта, как её просто развернуть / переместить на неё фокус, а не открывать новый экземпляр?

Шалости с первым параметром ShellExecute, а так же гугление не дали результата.
JoLan вне форума Ответить с цитированием
Старый 20.10.2014, 13:17   #2
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

параметром функции укажи полный файловый путь и тогда проводник не просто откроет папку, где файл находится, но и выделит тебе его(проверено!).
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 20.10.2014, 13:25   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

саша40, читай внимательно:
Цитата:
если текущая папка уже открыта, как её просто развернуть
Т.е. нужно не новое окно открывать а в открытом выделить нужное.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.10.2014, 13:34   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
саша40, читай внимательно:

Т.е. нужно не новое окно открывать а в открытом выделить нужное.
Представим тогда так:
1. Закрываем окно в с открытой нужной папкой.
2. Открываем новое с помощью команды, но там уже будет выделенно.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 20.10.2014, 13:45   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
1. Закрываем окно в с открытой нужной папкой.
Как-то нелогично звучит )
Закрыть чтоб открыть...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.10.2014, 13:52   #6
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

Цитата:
Сообщение от JoLan Посмотреть сообщение
Шалости с первым параметром ShellExecute, а так же гугление не дали результата.
Предположу, что тут нужен уже не ShellExecute, а интерфейс, IShellView какой-нибудь.

Подобным образом умеет открывать файлы/папки µTorrent. Если бы его исходники были открыты, можно было бы в них посмотреть. Если вдруг у кого есть аналогичный опыт с другими торрент-клиентами, у которых исходники открыты, не грех и подсмотреть, как там сделано.
Vapaamies вне форума Ответить с цитированием
Старый 20.10.2014, 18:43   #7
JoLan
Delphi XE7
Пользователь
 
Аватар для JoLan
 
Регистрация: 26.07.2010
Сообщений: 74
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Представим тогда так:
1. Закрываем окно в с открытой нужной папкой.
2. Открываем новое с помощью команды, но там уже будет выделенно.
Говнокод же, простите.

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Предположу, что тут нужен уже не ShellExecute, а интерфейс, IShellView какой-нибудь.

Подобным образом умеет открывать файлы/папки µTorrent. Если бы его исходники были открыты, можно было бы в них посмотреть. Если вдруг у кого есть аналогичный опыт с другими торрент-клиентами, у которых исходники открыты, не грех и подсмотреть, как там сделано.
Можете чуть по подробней? Нужно описать свой интерфейс?
JoLan вне форума Ответить с цитированием
Старый 20.10.2014, 19:06   #8
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

Цитата:
Сообщение от JoLan Посмотреть сообщение
Говнокод же, простите.
На плохом форуме хорошего не посоветуют. Кроме меня, конечно.

Интерфейсы IShellFolder, IShellBrowser и IShellView уже описаны в модуле ShlObj, остается лишь его подключить. Вот внятного примера найти не могу. Сам не использовал, к сожалению. Описание интерфейсов есть в MSDN.

Еще где-то в Delphi когда-то были компоненты ShellControls, они шли в качестве экспериментальных, и для них еще патчи какие-то качать нужно было, чтобы не глючили. Их можно было кидать на форму и получать сразу встроенный "Проводник". Можно поискать и подсмотреть в коде, как используются интерфейсы...
Vapaamies вне форума Ответить с цитированием
Старый 20.10.2014, 19:23   #9
JoLan
Delphi XE7
Пользователь
 
Аватар для JoLan
 
Регистрация: 26.07.2010
Сообщений: 74
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Еще где-то в Delphi когда-то были компоненты ShellControls, они шли в качестве экспериментальных, и для них еще патчи какие-то качать нужно было, чтобы не глючили. Их можно было кидать на форму и получать сразу встроенный "Проводник". Можно поискать и подсмотреть в коде, как используются интерфейсы...
Если Вы имеете ввиду ShellListView и ShellTreeView, то этот вариант ниразу не вариант. В моём случае программа открывает некий бинарный файл по структуре, причем может открыть их несколько и для быстрого нахождения данного файла на харде, собственно, и было все это затеяно.
JoLan вне форума Ответить с цитированием
Старый 20.10.2014, 19:54   #10
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

Цитата:
Сообщение от JoLan Посмотреть сообщение
Если Вы имеете ввиду ShellListView и ShellTreeView, то этот вариант ниразу не вариант.
Мы все бараны. Достаточно было прочитать справку по "Проводнику", чтобы найти решение. Из командной строки у меня получилось так:
Код:
explorer /select,C:\Delphi\Bin\coreide60.bpl
Если свернуть окно "Проводника" и вызвать команду повторно, окно разворачивается, а не открывается новое.

Расписать это в виде параметров ShellExecute оставляю в качестве домашнего задания. К слову сказать, строчка '/select,"%s"' находится поиском в utorrent.exe.
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Treeview как в проводнике windows Viiktorrr Помощь студентам 0 21.04.2014 16:20
Создание кнопки в проводнике dubailand Общие вопросы Delphi 10 22.03.2012 23:12
Реестрация в проводнике nXs Общие вопросы Delphi 2 08.05.2010 11:21
Как через дельфи открыть папку в проводнике? t3ns0r Общие вопросы Delphi 6 28.03.2009 21:32
Дерево как в проводнике, реестре Valdis Общие вопросы Delphi 1 04.10.2007 00:02