Форум: "Основная";
Текущий архив: 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]
> Можно как-то решить эту проблему?
Можно, добавить ключ /nexplorer /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