如何在Windows任务栏中创建文本框?

时间:2013-11-24 13:39:17

标签: c# .net windows user-interface taskbar

我正在制作一个应用程序,它将从用户那里获取搜索查询并显示结果。为了使界面更加用户友好,我想在任务栏中创建一个接受输入的文本框,然后在新窗口中显示结果。我已经在SO以及其他网站上查看过相同问题的链接  基于我通过谷歌和其他网站发现我们需要使用Bands来实现这一点  有人可以解释一下上面问题的解决方案(Bands),你也可以指出任何好的链接或者一些文章,或者你可以写一个代码示例来解释。 我只是想要足够的信息让我开始解决这个问题。

1 个答案:

答案 0 :(得分:2)

“您应该在新开发中使用缩略图工具栏代替桌面乐队,从Windows 7开始不支持这些工具栏。” - MSDN

不幸的是,微软似乎不鼓励像你所说的那样创建任务栏内的GUI。替代选项是使用任务栏扩展,如所讨论的here。 MSDN确实在任务栏扩展页面上提供了一些相互矛盾的信息,将开发人员引导到IDeskBand2页面(顶部的引用来自)。为了将来的兼容性,我仍然建议不要使用它。

如果您已经死定,或者您出于某种原因仅定位xp(或vista),则以下内容可能会有所帮助:

虽然它们可以像普通窗口一样使用,但band对象是容器中存在的COM对象。浏览器栏包含在Internet Explorer中,桌面栏包含在Shell中。虽然它们提供不同的功能,但它们的基本实现非常相似。主要区别在于如何注册band对象,而对象又控制对象及其容器的类型。本节讨论所有band对象共有的实现方面。有关其他实现详细信息,请参阅自定义浏览器栏的简单示例。 除了IUnknown和IClassFactory之外,所有band对象都必须实现以下接口:
  - IDeskBand
  - IObjectWithSite
  - IPersistStream

除了注册其类标识符(CLSID)之外,还必须为相应的组件类别注册Explorer Bar和桌面带对象。注册组件类别可确定对象类型及其容器。工具带使用不同的注册过程,并且没有类别标识符(CATID)。需要它们的三个波段对象的CATID是:
  - 带类型:组件类别
  - 垂直浏览器栏:CATID_InfoBand
  - 水平浏览器栏:CATID_CommBand
  - 桌面乐队:CATID_DeskBand

您可以找到所有您需要了解的内容here