【问题标题】:Programmatically sort folders on Windows 8在 Windows 8 上以编程方式对文件夹进行排序
【发布时间】:2015-07-07 03:06:55
【问题描述】:

Windows 8 似乎不会在单个文件夹上保留排序顺序。我猜 explorer.exe 何时终止(例如重新启动时)这些首选项会被丢弃?打败我,我只知道一段时间(比如几天)后,这些偏好完全消失了。

有没有办法在 Windows 资源管理器中复制以编程方式排序的文件夹(在上下文菜单中选择“排序依据”选项之一)?

这样,假设我在 Windows UI 中打开了一个文件夹。假设文件夹当前设置为按“名称”排序,在运行将按大小排序的程序后,我再次检查 Windows 资源管理器中的排序顺序,现在显示“大小”?

我有一个特定的大文件夹结构,我希望它的所有及其子文件夹都按大小永久排序。所以我想在查看它们之前运行这个程序,而不必先单独手动重新排序它们。谢谢!

【问题讨论】:

  • 跟我没关系。
  • 我猜这个问题属于超级用户。
  • 嗯,答案很可能是编程答案,我认为可能是。

标签: windows windows-8.1 windows-explorer


【解决方案1】:

排序顺序属于视图,而不是文件夹。您可以在同一个文件夹中打开两个 Windows 资源管理器窗口,每个窗口都有不同的排序顺序。

要在 Windows 资源管理器导航到特定文件夹时强制排序,首先将 DShellWindowsEvents::WindowRegistered 事件挂钩到 shellwindows 对象,然后每次触发 WindowRegistered 事件时,枚举 shell 窗口列表并与您的现有枚举以查找新的 Windows 资源管理器实例。掌握新实例后,为该实例连接 DWebBrowserEvents2::DocumentComplete 事件以收听其导航。

导航完成后,DocumentComplete 事件将为您提供目标 URL,您可以使用该 URL 来检测目标是否在您的大文件夹结构中。如果是这样,请从 Windows 资源管理器实例中查询 IShellBrowser 服务,然后调用 QueryActiveShellView 以获取 shell 视图。获得 shell 视图后,对 IFolderView2 进行 QI,然后调用 SetSortColumns

The Automate the Active Windows Explorer or Internet Explorer Window sample on codeproject 拥有大部分代码,只是它最后调用IShellView::SelectItem 来模拟SHOpenFolderAndSelectItems

【讨论】:

  • 如果我想以编程方式创建一个文件夹,然后给它一个特定的列布局,我是否必须使用这样的技术(使用 IColumnManager)?或者有没有办法为一个总是粘住的文件夹设置一个列布局?
  • 创建一个自定义库并将您的文件夹添加到其中。
【解决方案2】:

您可以通过按住 CTRL 并单击右上角的 X 来保存资源管理器排序设置。

http://blog.chron.com/helpline/2009/01/saving-explorer-sort-order/

【讨论】:

    猜你喜欢
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2017-03-07
    • 2012-11-12
    • 2015-03-25
    相关资源
    最近更新 更多