#c# #.net #winapi #widget #windows-desktop-gadgets
#c# #.net #winapi #виджет #windows-desktop-гаджеты
Вопрос:
Я пытаюсь встроить виджеты боковой панели Windows в свои собственные.Сетевое приложение (WPF и C #), но я действительно не знаю, с чего начать. Я немного погуглил, но нашел только SDK и руководства по разработке виджетов. Я обнаружил, что в Windows есть небольшая служба, запускающая виджеты. Я подумал, что, возможно, я мог бы подделать этот сервис и предоставить его функции в моей программе, чтобы я мог запускать и показывать виджеты.
У кого-нибудь есть несколько советов о том, как это сделать? Или есть какой-то опыт в этом? Возможно, есть даже какая-то библиотека для такого рода вещей?
Если это невозможно, также можно переключиться на widged-manager с открытым исходным кодом для использования этого widgeds, но это только экстренное решение, и Windows-гаджеты были бы очень признательны.
Некоторая информация о моей системе:
Я написал какой-то небольшой windowmanager для дочерних окон в своем приложении. И поверх этого я хочу показать виджеты в каком-то HostWindow.
Любой намек будет оценен.
PS: Я был бы готов поделиться результатами, если у меня (или у нас) это заработает 🙂
Ответ №1:
Я никогда не видел библиотеку для размещения гаджетов, но поскольку это в основном просто веб-сайты, вы могли бы использовать компонент MSHTML для размещения любого произвольного гаджета в теории.
Нельзя сказать, что это будет легко.
Вам нужно будет извлечь гаджет в какой-нибудь временный каталог, запустить что-нибудь, содержащее MSHTML (в WinForms было бы удобно использовать WebBrowser), перейти к соответствующему файлу в этом временном каталоге (обнаруженному путем синтаксического анализа gadget.xml ) и вставить в гаджет что-то похожее на объект System.
В качестве отправной точки внедрите какой-нибудь скрипт, который устанавливает System = window.external;
onload и WebBrowerser.ObjectForScripting = new FakeGadgetSystem()
.
FakeGadgetSystem
потребуется [ComVisible(true)]
и для реализации приличного количества материала. Я бы посоветовал взять один или два виджета для тестирования с помощью этого, мягко используя Gadget API, а затем медленно выполнять вызовы, которые они выполняют. Это будет долгий путь к 100% совместимости с официальной службой хостинга гаджетов.
Комментарии:
1. Что ж, звучит как отличный способ начать