Как выделить файлы в Проводнике?
01.01.2007
Просто открыть окно, и выделить в нём файлы|папки
Да в принципе путь то нам известен? Известен, посему делаем финт хвостом:
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 TForm18.Button4Click(Sender: TObject); begin if not OpenExplorerAndSelectFile('c:\windows\notepad.exe') then ShowMessage('Файл не найден.'); end;
Это проще чем искать по заголовку.
Взято из https://forum.sources.ru