Главная страница
    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.46 MB
Время: 0.003 c
15-1297157881
reni
2011-02-08 12:38
2011.05.22
Где найти хорошее описание двухзвенки или трехзвенки DELPHI с MsS


15-1296566174
oxffff
2011-02-01 16:16
2011.05.22
Есть интересная задача


2-1297715273
Чайник
2011-02-14 23:27
2011.05.22
Настройка Д2010


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


15-1297011378
artem
2011-02-06 19:56
2011.05.22
Заработок на учебных заведениях





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский