Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2011.05.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
15-1297149231
aka
2011-02-08 10:13
2011.05.22
Вопрос знатокам HTML


15-1296342105
@!!ex
2011-01-30 02:01
2011.05.22
Delphi ломает hadl linkи


1-1254906944
Aleks
2009-10-07 13:15
2011.05.22
Как вычислить матем.значение в Edit?


2-1297437513
novai
2011-02-11 18:18
2011.05.22
как правильно описать функцию с разными выходами?


15-1297002098
aka
2011-02-06 17:21
2011.05.22
Delphi &amp; Flash





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский