是否可以在自己的.Net应用程序中嵌入Windows边栏小部件

时间:2011-05-16 08:48:40

标签: c# .net winapi widget windows-desktop-gadgets

我正在尝试将Windows-Sidebar-Widgets嵌入到我自己的.Net应用程序(WPF和C#)中,但我不知道从哪里开始。我google了一下,但只找到了用于小部件开发的SDK和教程。我发现Windows中有一个小服务,运行小部件。我的想法是,我可以假装这个服务,并在我的程序中提供他的功能,这样我就可以运行并显示小部件。

有没有人有关于如何做到这一点的一些提示?或者这样做的一些经验?对于那种东西,或许甚至有某种类型的图书馆?

如果这不可能,也可以选择切换到OpenSource widged-manager来使用这个小部件,但这只是一个紧急解决方案,非常感谢windows-gadged。

有关我系统的一些信息:

我已经在我的应用程序中为childwindows编写了一些小窗口管理器。最重要的是,我想在某种HostWindow中显示小部件。

任何提示都将受到赞赏。

P.S。:如果我(或我们)让这项工作得以实现,我愿意分享结果: - )

1 个答案:

答案 0 :(得分:1)

我从未见过用于托管小工具的图书馆,但由于它们基本上只是网站,因此您可以使用MSHTML组件来理论托管任意任意小工具。

这并不是说这很容易。

你需要将一个小工具提取到一些临时目录,然后启动托管MSHTML的东西(在WinForms WebBrowser中会很方便),导航到该临时目录中的相应文件(通过解析{{3发现)将类似gadget.xml对象的内容推送到小工具中。

作为起点,请注入一些设置System = window.external; onload和WebBrowerser.ObjectForScripting = new FakeGadgetSystem()的脚本。

FakeGadgetSystem需要[ComVisible(true)]并实施相当数量的内容。我建议抓取一两个小部件来测试温和地练习Gadget API,然后慢慢实现他们所做的调用。与官方小工具托管服务100%兼容将是一件长期的事情。