Виджет для Windows 7 c использованием ActiveX компонентов

13 Ноя
2011

Здравствуйте, уважаемые Блогавчане. Хочу поделиться опытом создания виджета для Windows 7 с использованием компонентов .Net.
Пользовательский интерфейсЗадача: необходимо создать виджет с простым интерфейсом, содержащим поле для ввода текстового значения (например размер изображения в пикселях) и поля для отправки файла-изображения. Интерфейс должен содержать кнопку «отправить», при нажатии на которую на сервер POST запросом виджет должен отправить значения параметров с формы. Такой виджет может использоваться например для загрузки файлов на хостинг изображений.

Решение: Аякс отправка информации с формы виджета средствами javascript не проходит, поскольку это допускается в пределах одного домена. Поэтому можно создать свой компонент для отправки информации на сервер и вызвать его из javascript кода виджета. Пример взаимодействия JavaScript и .Net можно посмотреть здесь .NET Interop for Gadgets – A C# GMail Inbox Reader Example.
Написанная в приведенном примере библиотека позволяет использовать свой ActiveX компонент, подключая его на лету, Далее можно обращаться к методам компонента в коде виджета.

По нажатию на кнопку «загрузить» выполняется следующее:
1. Cоздаем предоставленный в примере вспомогательный объект, позволяющий «подцепить» наш компонент
var builder = new GadgetBuilder();
builder.Initialize();

2. Собираем значения из полей формы
— Путь до файла
var path = document.getElementById('file1').value;

— Размер изображения
var size = parseInt(document.getElementById('thumb-size').value,10);

3. Подключаем наш компонент.
— Составляем путь к нашей библиотеке
var assemblyLocation = System.Gadget.path + "\\bin\\InteropTestProject.dll";

— Создаем экземпляр нашего компонента
var Test4Instance = builder.LoadTypeWithParams(assemblyLocation, "InteropTestProject.ImgLoader", false); 

— Обращаемся к нему, передавая нужные параметры. Тем самым отправляем на сервер данные из формы.
Test4Instance.Send('http://host/index.php',path,size);

Приведу класс InteropTestProject.ImgLoader для отправки POST запроса тут. Думаю, найдутся те, кому будет интересна реализация метода Post на C#.
На этом все. Успехов!
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх