65.9K
CodeProject 正在变化。 阅读更多。
Home

Windows API Code Pack v1.1 发布!

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (10投票s)

2010年9月13日

Ms-PL

3分钟阅读

viewsIcon

46813

Windows API Code Pack v1.1

上周二 (2010年8月31日),微软发布了优秀托管库的新版本,Windows API Code Pack

对于那些不了解的人来说,这个库充当了许多 Windows API 的托管包装器,这些 API 并没有包含在 .NET 框架中,特别是来自 Windows Vista 和 Windows 7 的新特性。

我一直在使用这个库一段时间了,我必须说它是“.NET 缺失的部分”。 许多在 .NET 中不存在的 Windows 功能触手可及,无需自己处理所有 Interop 相关的事情。

随着 .NET Framework v4.0 的到来,它支持并行执行,我们终于可以编写托管的 shell 扩展,而无需担心已安装的 CLR 之间的竞争条件。 还有什么能比 Windows API Code Pack 更好地作为此类 shell 扩展的起点呢?

新功能是什么?

那么,此版本中有哪些新功能?

嗯,官方网站表示,除了错误修复之外,主要的新功能是

  • Shell 对象监视器
  • 预览处理程序 API
  • 缩略图处理程序 API

让我们试着理解一下它的含义…

Shell 对象监视器

ShellObjectWatcher 是 Windows API Code Pack 中的一个新类,它提供关于 shell 中所有元素的通知,包括:文件、文件夹、虚拟文件夹(库、搜索结果、网络项目)等。

使用此类,您可以获得以下通知:创建、删除、重命名、共享、驱动器已添加等。
魔术是通过使用 Win32 API SHChangeNotifyRegister完成的。

托管 API 相当简单,并且有一个 WPF 示例应用程序,演示了如何获取用户选择的路径的所有事件

image

在图片中,我们看到了 Shell 对象监视器示例应用程序在插入 USB 驱动器、在 C:\ 上创建和重命名文件夹以及在该文件夹中创建新文本文件时的行为。

Shell Extensions

Shell 扩展是 Windows 操作系统(或更具体地说,shell)的自定义扩展。 不同类型的 shell 扩展扩展了 Windows shell 的不同部分。
shell 的许多部分都可以扩展,例如,Windows API Code Pack 提供了对以下 shell 扩展的支持

  • 预览处理程序 – 允许您自定义 Windows 资源管理器中预览窗口在特定文件扩展名上的行为方式。
  • 缩略图处理程序 – 允许您自定义具有特定文件扩展名的文件的缩略图。

值得注意的是,所有 shell 扩展通常都是基于 COM 的组件。 但是,使用 COM Interop,我们可以使用 .NET Framework 实现它们。

它的工作方式通常如下所示

  • 首先,您需要编写符合特定、预定义接口的代码。 interface取决于您要扩展的 shell 部分。
  • 其次,您需要在注册表的特定部分注册您的对象。 不同类型的 shell 扩展在注册表的不同位置注册。
  • 最后,您只需转到您扩展的 shell 部分并在其中看到它的运行,即可使用您的 shell 扩展。

预览处理程序 API

预览处理程序是一种 shell 扩展。 它允许您自定义 Windows 资源管理器中特定文件扩展名的预览窗口。

在下图中,我们可以在右侧看到文件扩展名为 xyz2 的自定义预览处理程序。

在此示例中,预览处理程序从 xyz2 文件中读取信息并显示它。 这是文件 SampleFile.xyz2 的内容

<?xml version="1.0" encoding="utf-8" ?>
<XyzFile>
  <XyzFileProperties>
    <Name>Handler Sample File</Name>
    <Author>Jon Harkness</Author>
    <Rating>45</Rating>
    <Region>Seattle, Wa</Region>
  </XyzFileProperties>
  <EncodedImage>Qk22MQQAAAAAAEYAAAA4AAAAOUAAAAB... </EncodedImage>
  <Content>Windows? API Code Pack for Microsoft... </Content>
</XyzFile>

当然,您可以为任何文件扩展名制作预览处理程序,无论文件格式如何。

缩略图处理程序 API

缩略图处理程序是另一种 shell 扩展。 它允许您自定义 Windows 资源管理器中文件扩展名的缩略图。

例如,在下图中,我们可以看到文件 SampleFile.xyz2 的缩略图显示了该文件内部编码的图像。

image

暂时就到这里,
Arik Poznanski

© . All rights reserved.