背景
Windows 资源管理器维护一个文件操作列表,以便您可以撤消它们(XP 最多 10 个操作,Vista 最多 32 个)。您可以看到最后的无需打开即可执行操作编辑菜单,并突出显示撤消命令而无需选择它并查看状态栏(尽管这样,它通常不起作用并且只在状态栏中显示一个空白字符串)。
问题
不幸的是,这不仅会在状态栏中显示操作(默认情况下未启用),而且只显示最后一个操作。更糟糕的是,它只显示操作和文件的姓名,而不是路径。
用例场景
举个例子,如果您要重命名和移动一堆文件(尤其是名称相似的文件,如download1.png
、download2.png
等),然后意识到在重命名后忘记移动其中一个文件。查看最近修改的几个文件名和路径的列表可以让您找出遗漏了哪一个,而不必撤消所有后续操作,因为这可能会让事情变得一团糟。
问题
有谁知道获取 Windows 在其撤消缓冲区中存储的所有操作列表的方法吗?我见过可以挂接到 Windows 并执行不受支持的操作(如重新排列任务栏和托盘图标(XP 不支持))的程序,所以我希望有人能够使用撤消缓冲区执行相同的操作。
答案1
希望我能正确找到您要找的内容。如果是这样,似乎有 WinAPI 方法 -读取目录更改这可能会达到您所期望的效果。
我不确定以下方法是否适用于文件操作历史记录或仅显示使用后所做的更改,但是,由于这种方法并没有太大不同,可能会在您提供的场景中使用,我会提到即使它可能稍微偏离主题:
你可以连接文件系统观察器对象到文件夹(但链接的主题不同,这在我看来,它很好地概述了类的用途)——我知道它是 C# .NET 类,但 C# 可以用 PowerShell 制作,如下所示这个脚本来自微软的脚本中心。
您可以考虑第三方解决方案,例如Windows 资源管理器跟踪器似乎做了同样的事情(我相信他们宁愿使用(记录的)API 调用而不是逆向工程技术 - 但你似乎有点担心它们,所以我只查找了一个)。
最后但同样重要的是,你甚至可以考虑编写一个简单的WPF 应用程序基于文件系统观察器或者更复杂的 WPF 应用程序调用读取目录更改方法。