Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GoToFile (В окне explorer'a) 
:(
    Опции темы
0FF
Дата 9.1.2004, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 10.8.2003

Репутация: нет
Всего: нет



Есть такая тема в Explorer'e|

В свойствах ярлыка есть кнопочка "Найти объект" неподскажители какой функцией или процедурой она пользуется
PM MAIL   Вверх
DriveSoftware
Дата 9.1.2004, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4



Может я конечно не правильно понял вопрос, но открыть папку с нужными тебе файлами можно так


Код

var
 S: String // имя файла
 Path: String;
begin
 Path:=ExtractFileDir(S); // отбрасываем название программы. Остается путь.
 if Path[Length(Path)]<>'\' then Path:=Path+'\';
 ShellExecute (Handle, 'open', PChar('C:\Путь к папке'), nil, nil, SW_SHOW );  
end;


в uses не забудь прописать ShellApi
PM MAIL WWW ICQ   Вверх
Alex
Дата 10.1.2004, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Я думаю так по проще будет:
Код
uses
 ShellApi;
var
 S: String // имя файла
 Path: String;
begin
 Path:=ExtractFilePath(S); // отбрасываем название программы. Остается путь со "\".
 ShellExecute (Handle, 'open', PChar(Path), nil, nil, SW_SHOW );  
end;


Это сообщение отредактировал(а) alex-co - 10.1.2004, 09:27


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
stab
Дата 10.1.2004, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Долго искал, но наконец нашел эту функцию:

Код

uses ShellAPI, ShlObj;

type
 PPItemIDList = ^PItemIDList;

function SHOpenFolderAndSelectItems(pidlFolder: PItemIDList; cidl: UINT; apidl: PPItemIDList; dwFlags: DWORD): HRESULT; stdcall; external shell32;

procedure OpenFolderAndSelectItem(Path: WideString);
var
 desk: IShellFolder;
 iidl: PItemIDList;
 attrs, che: Cardinal;
begin
 SHGetDesktopFolder(desk);
 desk.ParseDisplayName(0, nil, PWideChar(Path), che, iidl, attrs);
 SHOpenFolderAndSelectItems(iidl, 0, nil, 0);
end;

// использовать так:
procedure TForm1.Button1Click(Sender: TObject);
begin
 OpenFolderAndSelectItem('C:\Program Files\Internet Explorer\IEXPLORE.EXE');
end;


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

з.ы. 2 Vit вроде в ФАКе такого нет... ;)
з.з.ы. Перед использованием требует вызова CoInitialize или CoInitializeEx, обычно дельфя это делает за нас, но все таки может потребоваться. Так же не надо забывать про вызов CoUninitialize.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
0FF
Дата 10.1.2004, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 10.8.2003

Репутация: нет
Всего: нет



Cully , Спасибо только ты понял вопрос.
PM MAIL   Вверх
0FF
Дата 10.1.2004, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 10.8.2003

Репутация: нет
Всего: нет



Кстати прочитал про этот способ MSDN там написанно что только под XP
PM MAIL   Вверх
stab
Дата 10.1.2004, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



0FF, будем думать smile.gif


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Alex
Дата 24.1.2004, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Я уже и правда стал верить в то, что это нельзя сделать, но интуиция меня не подвела, держите

Код
ShellExecute(Handle, nil, 'explorer.exe', '/e, Пупь к папке, /select, Имя файла', Путь к папке ОБЯЗАТЕЛЬНО, SW_RESTORE)


EXPLORER.EXE [/n] [/e] [,/ROOT,OBJECT] [[,/SELECT],SUBOBJECT]

Если EXPLORER.EXE вызывается без последующих параметров или с ключом /e, утилита Windows Explorer запускается точно так, как при ее вызове из Меню запуска. Если в строке имеются другие параметры, а ключ /e не используется, то на вашем "рабочем столе" открывается указанная папка. Когда нужная вам папка уже открыта, EXPLORER.EXE не станет открывать второй экземпляр - если только не установлен ключ /n.
Ключ /ROOT задает верхний уровень отображения папок на дереве утилиты Explorer. По умолчанию ROOT соответствует папке Desktop (т. е. всему "рабочему столу"), куда включены все файлы вашей машины (папка My Computer - "Мой компьютер") и вашей сети (папка Network Neighborhood - "Соседи по сети"). Чтобы изменить установку по умолчанию, необходимо к подстроке /ROOT добавить параметр OBJECT, который является именем конкретной папки (становящейся корнем). Включение параметра SUBOBJECT заставит Explorer открыться на соответствующей вложенной папке, расположенной ниже уровня ROOT; если SUBOBJECT не задан, то начальной (верхней) папкой останется ROOT. Ключ /SELECT позволяет в качестве SUBOBJECT вместо папки использовать файл, но без возможности применять символы-заменители (* и ?).

Имена файлов в командной строке утилиты Explorer могут быть полными UNC-именами (Universal Naming Convention - универсальное соглашение по именованию файлов), т. е. содержащими полный путь, что обеспечивает доступ к сетевым ресурсам, расположенным вне локальных дисков.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.