Windows Vista的SideShow功能及其应用

SideShow是微软为Windows Vista操作系统开发的一项新特性,它允许开发者为具有小屏幕和有限交互模型的设备创建新的应用程序或扩展现有应用程序。这些应用程序被称为小工具(gadgets)。SideShow支持的设备包括但不限于:笔记本电脑上附加的显示屏、计算机前面板显示屏、键盘内嵌显示屏、手机、数字相框以及其他显示设备。

开发环境

在撰写本文时,SideShow框架处于测试阶段。测试环境包括:

文档末尾提供了一些有用的链接,以帮助安装Microsoft VirtualSideShow。

SideShow平台为开发者提供了一个全新的开发领域,使得他们可以为具有小屏幕和有限交互能力的设备创建应用程序。这些应用程序被称为小工具。

驱动程序和模拟器

要编译代码,必须安装SideShow SDK Beta,目前可以从微软的官方网站获取。要运行二进制文件,需要获取随Vista SDK一起提供的驱动程序和模拟器。安装后,将在'C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin'目录下找到模拟器驱动程序(WindowsSideShowVirtualDevice.exe)和模拟器(VirtualSideShow.exe)。

首先执行windowsSideShowvirtualdevice.exe /regserver,然后执行VirtualSideShow.exe。在控制面板中打开Windows SideShow,现在可以看到模拟器已安装。

使用VirtualSideShow

VirtualSideShow提供了多种操作选项:

  • 使用箭头键导航菜单
  • 使用OK按钮进入小工具及其菜单
  • 使用退格键返回

启动并注册WeatherSideShow.exe会在VirtualSideShow中添加一个名为'Weather SideShow Gadget'的新项目。内部菜单显示了一个菜单,其中第一项是从Web服务接收的数据,第二项是应用程序中存储的数据。

使用二进制文件

首先,必须按照上述说明打开VirtualSideShow.exe。之后,它将出现在模拟器的列表中。现在已准备好与天气小工具进行通信。

在应用程序中:必须使用'获取国家'按钮,使用Web服务将国家和城市添加到组合框中。这可能需要一分钟,具体取决于连接速度。然后可以选择喜欢的城市和国家,并查看所选项是否有可用的数据。

如果愿意,可以使用计时器自动刷新并保存所有选定的数据。SideShow会在'自动计时器'启动时以及每次点击'检查保存的数据的天气'时刷新。

使用代码

创建了这个项目作为一个C# Windows应用程序。通过这个应用程序,可以从使用的Web服务中检索所有城市和国家。选择一个并测试城市是否有天气数据。

如果愿意,可以设置一个计时器自动刷新应用程序和SideShow。可以保存数据并在下次会话中使用。

代码遵循以下思路:

  • MySideShowGadget:一个与SideShow通信的类
  • 注册表,用于保存和存储数据
  • 一个用于全球天气Web服务的类,以及一个XML解析器,用于将数据'翻译'为SideShow
  • 一个类(GadgetRegistration),用于注册和注销小工具
  • 一个类(Scf),用于将数据下载到虚拟设备
  • 一个用于自动刷新的计时器

这里,只描述了用于SideShow的调用。

信息:使用了WebserviceX.NET的免费Web服务。如果服务器繁忙,收到错误"服务不可用",可以在这里查看它是否正在工作。

所有必要的SideShow代码都在MySideShowGadget中。所有其他类都用于检索数据和操作数据。

使用了一个Guid m_sGadgetId用于注册和注销小工具,更重要的是创建ScfSideShowGadget。MySideShowGadget使用ScfSideShowGadget类将数据添加到SideShow页面。添加了一些方法,但最重要的有:

  • 注册:使用类GadgetRegistration注册小工具,如下面注释所述。使用GadgetRegistration.Register,新小工具被添加到SideShow列表中。
  • 注销:注销小工具,从小工具列表中删除小工具。
  • 默认内容:一目了然地显示文本。使用了AddGlanceContent方法添加内容。这个方法添加了一个可以在SideShow菜单中显示的描述中的小工具的字符串。
  • 将数据下载到设备:将存储在应用程序中的数据复制到SideShow。这个方法使用AddGlanceContent和AddContent向SideShow显示添加页面。

以下是添加到SideShow的示例代码:

// 注册小工具 GadgetRegistration.Register( false, m_sGadgetId, ScfSideShowGadget.ScfEndpointId, m_sGadgetFriendlyName, null, null, false, GadgetCachePolicies.KeepNewest, null ); // 注销小工具 GadgetRegistration.Unregister( false, m_sGadgetId); // 默认内容 m_oScfSideShowGadget.AddGlanceContent( "Updated on: {0:D}\n {0:T}", DateTime.Now ); // 下载数据到设备 m_oScfSideShowGadget.AddContent(MyXMLPage);
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485