Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > GoToFile (В окне explorer'a)


Автор: 0FF 9.1.2004, 22:47
Есть такая тема в Explorer'e|

В свойствах ярлыка есть кнопочка "Найти объект" неподскажители какой функцией или процедурой она пользуется

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


Код

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

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

Автор: stab 10.1.2004, 12:33
Долго искал, но наконец нашел эту функцию:

Код

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.

Автор: 0FF 10.1.2004, 16:27
Cully , Спасибо только ты понял вопрос.

Автор: 0FF 10.1.2004, 16:57
Кстати прочитал про этот способ MSDN там написанно что только под XP

Автор: stab 10.1.2004, 17:43
0FF, будем думать smile.gif

Автор: Alex 24.1.2004, 09:13
Я уже и правда стал верить в то, что это нельзя сделать, но интуиция меня не подвела, держите

Код
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 - универсальное соглашение по именованию файлов), т. е. содержащими полный путь, что обеспечивает доступ к сетевым ресурсам, расположенным вне локальных дисков.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)