科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道Vista开发人员案例 Windows Shell 开发

Vista开发人员案例 Windows Shell 开发

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

WindowsShell 是用以提供整个 Windows Vista用户界面 (UI) 的容器,这些 UI 包括任务栏、桌面、Windows 资源管理器以及许多对话框和界面控件。

作者:zdnet安全频道 来源:论坛整理 2008年9月10日

关键字: Windows Vista Vista

  • 评论
  • 分享微博
  • 分享邮件

  简介

  WindowsShell 是用以提供整个 Windows Vista用户界面 (UI) 的容器,这些 UI 包括任务栏、桌面、Windows 资源管理器以及许多对话框和界面控件。

  在 MicrosoftWindows 3.0 版中,原始 Shell 是以具有相应 API 的本机 Win16 DLL 形式实现的。它具有多个重叠窗口以及用于浏览和管理文件系统的程序管理器。在 Microsoft Windows 95中,已具有许多 UI 改进、一个新的 Windows 资源管理器以及一个基于 COM 的新平台和相应 API。Microsoft InternetExplorer版本 3 添加了 Internet 快捷键和浏览器扩展。Windows 和 Internet Explorer 的每个后续版本都产生了一些其他功能以及 Win32 和 COM API 的相应扩展。Shell 的运行库是通过许多动态链接库 (DLL) 分发的。有关详细信息,请参阅 Windows 软件开发工具包 (SDK) 中的“Windows Shell 蓝图”。

  Windows Vista 中涉及数据和元数据的 Shell 功能包括同步管理器、Live Icon、Rich Preview 和属性处理程序。“针对控制面板开发”在 Windows SDK 中“基础知识”的“Windows Vista 管理”部分中进行讨论。有关详细信息,请参阅 MSDN Library 中的“针对控制面板开发”。

  本文提供有关以下方面变化的信息:

  使用公共文件对话框开发 - 介绍如何对公共对话框进行编程实现:一般文件、文件打开和文件保存。这些对话框是 Windows Vista 中新增的。

  针对桌面窗口管理器 (DWM) 开发 - 介绍用于管理窗口在桌面上的可视布局和显示的新引擎,并引入一组新的 Shell API。

  使用 Windows 资源管理器开发 - 介绍新 Windows Vista 资源管理器的体系结构以及开发人员如何充分利用其组件。“使用 Internet Explorer (IE) 开发”介绍了 IE 平台和开发人员如何利用该平台,并列出了 IE 7 中的主要变化。

  使用 Internet Explorer 开发 - 介绍了 IE 7 中 UI 和功能的主要变化,并说明了软件开发人员如何扩展 IE 和与其进行交互。

  新增 Shell 接口 - 按类别列出 Windows Vista 新增的 Shell 接口。

  新增 Shell 函数 - 提供 Windows Vista 中新增 Shell 函数的分组列表。

  使用公共文件对话框开发

  Windows Vista 提供了公共文件对话框的更新版本,以满足大多数开发人员的需要。它不仅功能强大,而且支持自定义和可扩展性。Windows Vista Shell 通过 IFileDialog 和相关接口提供对这些新文件对话框的访问。Windows Vista 的 .NET Framework3.0 应用程序可以通过 Windows SDK 中的互操作性支持来访问此功能。有关详细信息,请参阅 MSDN Library 中的“互操作性和迁移”。

  使用公共文件对话框对象

  应用程序必须获取以下接口之一,才能创建公共文件对话框实例:

  IFileDialog - 最一般的接口,是下面两个接口的父接口。

  IFileOpenDialog - 扩展 IFileDialog,使应用程序可控制特定于打开操作的某些方面(如选择多个项)。

  IFileSaveDialog - 处理“另存为”操作以及使用元数据。

  所有文件对话框都是模式对话框。开发人员可以使用这些类中的方法,以获取和设置对话框的 UI 元素(如 SetTitle、SetDefaultFolder、SetFileTypes 和 GetCurrentSelection),在使用对话框时,这些元素是典型元素。通过一组位标志,可以使用 GetOptions 和 SetOptions 方法控制对话框的许多标准化行为。这些选项只能在显示对话框之前进行设置;否则,SetOptions 方法将返回错误。使用 GetResult 方法,或者在启用 FOS_ALLOWMULTISELECT 选项的情况下使用 IFileOpenDialog,可以检索最终的用户选择。

  处理文件对话框事件

  虽然实例化文件对话框对象可提供相应公共文件对话框的主要 UI 和功能,但是在一些客户端中,实际使用这些对话框时,要求开发人员访问由对话框操作或对话框的单个控件生成的事件。

  IFileDialogEvents 接口提供了指示用户操作的方法和可在公共文件对话框中通知事件的方法。有关处理文件对话框事件的详细信息,请参阅可下载的帮助文件(可从此处下载)。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 WindowsShell (Windows Vista),然后展开并单击 Developing for Windows Shell。

  自定义公共文件对话框

  除了可以通过主要对话框接口和事件接口进行 UI 和行为自定义外,开发人员还可以通过所提供的 IFileDialogCustomize 接口将其他公共控件添加到该对话框的一组标准控件之上或之下。这些控件包括 PushButton、ComboBox、EditBox、CheckBox 和 RadioButtonList。有关自定义公共文件对话框的详细信息,请参阅可下载的帮助文件(可从此处下载)。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 Windows Shell (Windows Vista),然后展开并单击 Developing for Windows Shell。

  针对桌面窗口管理器 (DWM) 开发

  桌面窗口管理器 (DWM) 是 Windows Vista 中的新增组件,用于管理 Windows Vista 桌面的可视布局和显示,以及协调应用程序窗口的显示。在 Windows 早期版本中,应用程序直接绘制到显示设备。DWM 先使用“桌面组合”将某个表面(如应用程序的窗口)绘制到屏幕外的缓冲区,然后再将该表面与所有其他表面组合呈现到桌面。有关针对 DWM 开发的详细信息,请参阅可下载的帮助文件。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 Windows Shell (Windows Vista),然后展开并单击 Developing for Windows Shell。

  使用 Windows资源管理器开发

  Windows Vista中的 Windows 资源管理器是一个功能强大的资源浏览和管理应用程序。通过 Explorer.exe或 IExplorerBrowser Shell 接口,可以将 Windows 资源管理器作为一个集成整体来访问。

  使用 ShellExecuteEx 或类似的函数,可以将 Windows 资源管理器 (Explorer.exe) 作为一个单独进程生成。Microsoft帮助和支持站点上的“Windows 资源管理器命令行选项”一文中对命令行选项进行了介绍。

  使用 IShellWindows/CLSID_ShellWindows 可以发现打开的资源管理器窗口并对其进行编程;使用 IWebBrowser2/CLSID_ShellBrowserWindow 可以创建 Windows 资源管理器的新实例。

  在可下载的帮助文件(可从此处下载)中,可以找到介绍如何使用 Windows 资源管理器自动模型来创建和发现正在运行的资源管理器窗口的 C++代码示例。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 Windows Shell (Windows Vista),然后展开并单击 Developing for Windows Shell。

  使用 IExplorerBrowser Shell 接口可以承载 Windows 资源管理器客户端区域。Windows 资源管理器客户端和命名空间树控件是 Windows Vista 的标准组件,这些接口是公共接口。因此,开发人员可以将这些接口作为构建组件重用。这些控件的一个常见用途是,创建适合于问题领域的自定义资源管理器。

  Windows 资源管理器中的控件按功能分为以下几类:导航控件、命令控件、属性和预览控件、筛选和视图控件以及 Listview 控件。

  导航控件

  导航控件可帮助用户确定上下文和导航关联的逻辑域空间(称为页面空间)。例如,Windows 资源管理器的页面空间是 Shell 命名空间。页面空间由零个或多个页面组成。

  下表列出并说明在 Windows Vista 操作系统的 Windows 资源管理器中可用的导航控件。

  导航控件说明

  Address Bar(Breadcrumb 控件)显示页面空间中当前页面的地址。可以单击 Breadcrumb 按钮向上导航到页面空间中的任何上级。用户仍然可以键入要导航的 URL 和路径。

  Folder Tree提供为大型页面空间优化的新版本树控件。

  Travel允许通过 Web 样式按钮(如“后退”和“前进”)进行相对导航。

  Title显示当前的资源管理器名称和上下文。

  Pagespace显示页面空间的当前分支。可以按不同条件对页面进行排序。用户可以单击某个页面以导航到该页面。

  命令控件

  命令控件向用户播发资源管理器的特性和功能,它们执行常规操作或特定于一个或多个选定项的操作。

  命令控件说明

  Toolbar显示常用命令的按钮(新版本的命令工具栏)。自定义选项包括下拉按钮、拆分按钮、可选的说明性文字和溢出区域。

  Hero显示为工具栏中心的可选、单一自定义控件。表示当前上下文的主要命令。

  Menu Bar通过菜单提供命令(Windows 资源管理器中的原有控件)。

  Context Menu列出因单击鼠标右键而显示的可用命令的上下文相关子集。

  属性和预览控件

  属性和预览控件用于预览项,以及查看和编辑项属性。

  控件说明

  Preview显示选定项的预览,如缩略图或 Live Icon。

  Properties显示选定项的属性。对于多项选择,它显示选定的一组项的属性摘要。对于空选择,它显示当前页(列表视图的内容)的属性摘要。

  筛选和视图控件

  筛选和视图控件用于操作列表视图中的一组项,以及更改列表视图中项的演示。

  控件说明

  Filter依据以列的形式列出的属性,对列表视图中的项进行筛选或排列。单击某一列将按该列属性进行排序。

  Wordwheel依据输入的文本字符串,以动态方式和增量方式筛选列表视图中显示的项。

  View使用户可以更改 Listview 控件的视图模式。此外,可以使用滑块确定图标的大小。

  Listview 控件

  Listview 控件用于按以下四种视图模式之一查看一组项:“详细信息”、“平铺”、“图标”或“概览”。用户还可以使用 Listview 控件,通过选择和激活与一个或多个项进行交互。

  注意事项 虽然其中一些控件具有与在 System.Windows.Controls 命名空间中找到的标准 Windows Presentation Foundation (WPF) 控件类似的名称和/或功能,但它们是截然不同的类。

  这些单独的控件主要通过由用户交互或控件本身生成的事件关联在一起。三种主要事件类别包括:

  事件类别示例

  导航从一个页面转到另一个页面

  选择更改列表视图中的当前选择

  视图更改更改列表视图中的演示顺序或查看模式

  通过基于这样一组内容丰富的、功能强大的控件,开发人员可以侧重于说明其页面空间和实现与其内容关联的行为。

  在撰写本文时,Windows SDK 尚未包含有关这些资源管理器控件的文档;但是,在 Samples 目录中提供了 ExplorerBrowserAPI 示例。

  使用 InternetExplorer 开发

  MicrosoftInternet Explorer (IE) 除了是首要 Web 浏览器以外,还是适用于独立软件开发的、功能强大的综合平台。开发人员可以通过许多方法和技术与 IE 进行交互和对其进行扩展,其中包括:

  生成的实例

  自动化的实例

  异步可插入协议

  浏览器扩展

  浏览器帮助程序对象 (BHO)

  组件下载

  远程应用程序执行

  组件重用

  生成的实例

  许多应用程序生成 IE 实例以查看已知资源,例如,浏览到网页或显示本地 HTML 文件。通过使用 ShellExecute 函数直接执行 IExplore.exe,或者通过在当前计算机上间接打开与 IE 关联的数据文件(例如 .html 文件),可以做到这一点。后一种方法假定 IE 是默认浏览器。通过使用 System.Diagnostics.Process.Start,同样可以在托管应用程序中做到。

  自动化的实例

  通过 InternetExplorer COM 自动化对象,可以获得比 IE 实例更好的控件。

  异步可插入协议

  通过基于 COM 的 API,可以创建自定义的可插入协议处理程序、MIME 筛选器和命名空间处理程序。这样,可以将 IE 扩展为理解新的通信协议和文档格式。

  浏览器扩展

  开发人员可以通过浏览器扩展来修改 IE 的用户界面,方法是:添加自定义资源管理器栏、新的上下文菜单项、“工具”菜单命令和关联的工具栏按钮。

  浏览器帮助程序对象 (BHO)

  浏览器帮助程序对象 (BHO) 通过自定义的进程中 COM 组件实现对 IE 的扩展。每次启动 IE 时都会加载 BHO,而且它们可以在可用 IE 窗口和模块上执行任何操作,包括自定义浏览器 UI、处理事件、挂接消息和解释自定义数据格式。

  组件下载

  可以使用 IE 将组件(如 MicrosoftActiveX 控件 (.ocx)、动态链接库文件 (.dll)、可执行文件和 Java类文件或小程序)分发到客户端计算机,以用于按需使用方案或永久安装方案。IE 支持签名的 CAB 文件 (.cab) 以便打包分发集,支持信息文件 (.inf) 以提供安装说明,以及支持开放软件说明 (OSD) 文件以说明软件组件及其关系。

  远程应用程序执行

  通过利用客户端-服务器技术(如 Microsoft ASP.NET或终端服务远程桌面Web 连接 ActiveX 控件),IE 可以承载运行(至少部分运行)在服务器上的应用程序。

  组件重用

  IE 的模块化体系结构为开发人员提供了许多功能强大的、可以在独立应用程序中使用的可重用 ActiveX 控件。其中最常见的是 WebBrowser 控件 (Shdocvw.dll),该控件提供具有导航和历史记录功能的微型浏览器以及 Mshtml.dll(处理 HTML 显示和分析的核心引擎)。

  此外,还有许多功能以及关联的服务和工具与 IE 关联,如 MSHTML 编辑器、Microsoft XML 核心服务 (MSXML) 分析器和超链接体系结构。有关详细信息,请参阅 MSDN Library 中的“Internet Explorer 开发”以及访问 Internet Explorer 开发中心。

  IE 7 的整个 UI 和功能都进行了许多主要更改。更改尤其表现在安全性和更新协议以及标准支持方面。

  以下更改是为软件开发人员进行的:

  新增 Web 源支持 - IE 7 在其接口中和通过它与 MicrosoftWeb 源 API 的集成中显着地支持 RSS 和 ATOM 源。有关详细信息,请参阅 MSDN Library 中的“Windows Vista中的 RSS”。

  Microsoft 网络钓鱼诈骗筛选器 - IE 7 包括防止用户受到恶意网站的网络钓鱼诈骗攻击的功能。在适用于所有平台的 IE 7 中都提供了完整的网络钓鱼诈骗筛选器(包括系统管理员设置整个网络的组策略的功能)。正常运转的网站的开发人员会大大受益于网络钓鱼诈骗筛选器,因为用户将会信任他们对其环境的额外控制。

  选项卡式浏览器 - 在对 IE 的文档对象模型 (DOM) 和关联的 API 的更改中,还提供了这一通常为用户所使用的 UI 改进。有关详细信息,请参阅 MSDN Library 中的“用于开发人员的选项卡式浏览”。

  对现有标准的更好支持 - 改进了对国际化域名 (IDN)、HTML 4.0.1、层叠样式表和可移植网络图形 (PNG) 的支持。

  保护模式 - 在 Windows Vista 中,通过消除利用软件漏洞以静默方式安装恶意代码的功能,保护模式降低了对 IE 和在 IE 中运行的扩展的威胁的严重程度。IE 7 使用 Windows Vista 完整性机制和用户界面权限隔离 (UIPI) 阻止 IE 与具有更高完整性的系统资源和应用程序的交互。虽然 Windows Vista 和 IE 包含支持早期版本应用程序的功能,但是应该在带有 IE 7 的 Windows Vista 上全面测试所有新应用程序和现有应用程序。

  本机 XMLHTTP 支持 - IE 7 实现了本机的、可编写脚本的对象(而不只是对象)的 XMLHTTP 版本。现在,用户可以将 ActiveX 控件关闭但仍维持与服务器的客户端连接,以便使用 XML 数据的动态事务可以继续在后台运行。这样,就可以将动态检索的新数据插入到当前(否则为静态)HTML 页。

  无窗口的选择控件 - 虽然此更改使 z-order 和缩放可正常工作,但是必须重新编写依赖于此控件的 HWND 的现有应用程序,才能使用 DOM。

  有关详细信息,请参阅 MSDN Library 中的“Internet Explorer 7 的新增功能”。

  Windows Vista 新增的 Shell 接口

  Windows Vista 的 Shell 中添加了大量 COM 接口,它们大大扩展了其内置功能。有关 Windows Vista 新增的 Shell 接口的详细信息,请参阅可下载的帮助文件(可从此处下载)。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 Windows Shell (Windows Vista),然后展开并单击 Developing for Windows Shell。

  Windows Vista 新增的 Shell 函数

  Windows Vista 的 Shell API 中添加了大量用于 Win32(Microsoft Windows 操作系统的非托管编程模型)的函数。有关 Windows Vista 新增的 Shell 函数的详细信息,请参阅可下载的帮助文件(可从此处下载)。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 Windows Shell (Windows Vista),然后展开并单击 Developing for Windows Shell。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章