以编程方式对Windows 8

时间:2015-07-07 03:06:56

标签: windows windows-8.1 windows-explorer

Windows 8似乎不会在单个文件夹上保留排序顺序。我猜测explorer.exe什么时候终止(比如重启时)这些首选项会被丢弃?打败我,我所知道的是经过一段时间(比如几天),这些偏好完全失去了。

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

这就是说,我在Windows界面中打开了一个文件夹。假设该文件夹当前设置为按名称排序'并且在运行将按大小对其进行排序的程序之后,我再次检查Windows资源管理器中的排序顺序,它现在显示'尺寸'?

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

1 个答案:

答案 0 :(得分:8)

排序顺序属于视图,而不属于文件夹。您可以在同一文件夹上打开两个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