加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

打开Windows资源管理器目录,选择一个特定的文件(在delphi中)

发布时间:2020-12-14 04:34:07 所属栏目:Windows 来源:网络整理
导读:我有一个过程在 Windows资源管理器中打开一个文件夹,通过一个目录路径: procedure TfrmAbout.ShowFolder(strFolder: string);begin ShellExecute(Application.Handle,PChar('explore'),PChar(strFolder),nil,SW_SHOWNORMAL);end; 有没有办法通过这个文件名(
我有一个过程在 Windows资源管理器中打开一个文件夹,通过一个目录路径:
procedure TfrmAbout.ShowFolder(strFolder: string);
begin
   ShellExecute(Application.Handle,PChar('explore'),PChar(strFolder),nil,SW_SHOWNORMAL);
end;

有没有办法通过这个文件名(完整的文件名路径或只是名称扩展名),并在Windows资源管理器中打开该文件夹,但也被突出显示/选择?我将要有多个文件的位置,然后我需要在Windows中操作该文件.

是的,您可以在调用explorer.exe时使用 /select flag:
ShellExecute(0,'explorer.exe','/select,C:WINDOWSexplorer.exe',SW_SHOWNORMAL)

一个更有趣(也许更可靠)的方法(使用ShellAPI,ShlObj):

const
  OFASI_EDIT = $0001;
  OFASI_OPENDESKTOP = $0002;

{$IFDEF UNICODE}
function ILCreateFromPath(pszPath: PChar): PItemIDList stdcall; external shell32
  name 'ILCreateFromPathW';
{$ELSE}
function ILCreateFromPath(pszPath: PChar): PItemIDList stdcall; external shell32
  name 'ILCreateFromPathA';
{$ENDIF}
procedure ILFree(pidl: PItemIDList) stdcall; external shell32;
function SHOpenFolderAndSelectItems(pidlFolder: PItemIDList; cidl: Cardinal;
  apidl: pointer; dwFlags: DWORD): HRESULT; stdcall; external shell32;

function OpenFolderAndSelectFile(const FileName: string): boolean;
var
  IIDL: PItemIDList;
begin
  result := false;
  IIDL := ILCreateFromPath(PChar(FileName));
  if IIDL <> nil then
    try
      result := SHOpenFolderAndSelectItems(IIDL,0) = S_OK;
    finally
      ILFree(IIDL);
    end;
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读