Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.05.22;
Скачать: CL | DM;

Вниз

Как выделить нужный файл в открываемой папке?   Найти похожие ветки 

 
dmitry_12_08_73 ©   (2009-06-23 12:12) [0]

Открываю папку функцией ShellExecute(Application.Handle, "open", PChar("с:\"), nil, nil, SW_SHOWNORMAL). Как подсветить нужный фай в открываемой папке?


 
RWolf ©   (2009-06-23 14:36) [1]

запустить EXPLORER.EXE с ключом /select,нужный_файл


 
dmitry_12_08_73 ©   (2009-06-23 16:42) [2]

спасибо, запускаю
winexec(PChar("explorer /select," + "Нужная папка"+"нужный файл"), SW_RESTORE)
нормально работает, если "Нужная папка" не открыта. Если же она была открыта до запуска winexec, то "нужный файл" не подсвечивается. Можно как-то решить эту проблему?


 
brother ©   (2009-06-24 04:41) [3]

перед запуском проверь: открыта ли папка, если да - закрой ее)


 
RWolf ©   (2009-06-24 09:50) [4]


> Можно как-то решить эту проблему?

Можно, добавить ключ /n

explorer /n,/select,файл


 
dmitry_12_08_73 ©   (2009-06-24 11:18) [5]

Спасибо большое за "explorer /n,/select,файл". Но при выполнении этой команды оесли папка уже открыта, открывается её копия, а мне надо, чтобы в уже открытой папке подсвечивался нужный файл


 
Rouse_ ©   (2009-06-24 11:35) [6]

uses ..., SHDocVw;

function OpenExplorerAndSelectFile(Path: String): Boolean;

 function ParceURLName(const Value: String): String;
 const
   scFilePath: array [0..7] of Char = ("f", "i", "l", "e", ":", "/", "/", "/");
 begin
   if CompareMem(@scFilePath[0], @Value[1], 8) then
   begin
     Result := Copy(Value, 9, Length(Value));
     Result := StringReplace(Result, "/", "\", [rfReplaceAll]);
     Result := StringReplace(Result, "%20", " ", [rfReplaceAll]);
     Result := IncludeTrailingBackslash(Result);
   end
   else
     Result := Value;
 end;

var
 iShellWindow: IShellWindows;
 iWB: IWebBrowserApp;
 spDisp: IDispatch;
 I: Integer;
 S, FilePath, FileName: String;
begin
 Result := FileExists(Path);
 if not Result then Exit;
 FilePath := AnsiUpperCase(ExtractFilePath(Path));
 FileName := ExtractFileName(Path);
 iShellWindow := CoShellWindows.Create;
 for I := 0 to iShellWindow.Count - 1 do
 begin
   spDisp := iShellWindow.Item(I);
   if spDisp = nil then Continue;
   spDisp.QueryInterface(IWebBrowserApp, iWB);
   if iWB <> nil then
   begin
     S := ParceURLName(iWB.LocationURL);
     if AnsiUpperCase(S) = FilePath then
     begin
       SendMessage(iWB.HWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
       Break;
     end;
   end;
 end;
 ShellExecute(0, "open", "explorer.exe",
   PChar("/select, " + FileName), PChar(FilePath), SW_SHOWNORMAL);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if not OpenExplorerAndSelectFile("c:\windows\notepad.exe") then
   ShowMessage("Файл не найден.");
end;


 
Andy BitOff ©   (2009-06-25 15:29) [7]

Розыч как всегда поражает своими глубокими познаниями.
Спасибо. В мемориз.


 
Stranger   (2009-09-30 13:38) [8]

А как выделить в папке несколько файлов?


 
Омлет   (2009-09-30 23:00) [9]

> А как выделить в папке несколько файлов?

Мне тоже интересно.
Гугл большую часть результатов выдает на китайском :(



Страницы: 1 вся ветка

Текущий архив: 2011.05.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
2-1297808037
TempUser142
2011-02-16 01:13
2011.05.22
Вызов InternetSetStatusCallback из TThread


3-1259081869
Anatoly Podgoretsky
2009-11-24 19:57
2011.05.22
Явное против неявного


1-1254853805
Delphir
2009-10-06 22:30
2011.05.22
Internet Explorer Plugin


6-1237262725
alshtam
2009-03-17 07:05
2011.05.22
вопрос по Indy


3-1259290992
Diplomat
2009-11-27 06:03
2011.05.22
Поиск заданного значения в БД