Здравствуйте, уважаемые Хабравчане. Хочу поделиться опытом создания виджета для Windows 7 с использованием компонентов .Net.
Решение: Аякс отправка информации с формы виджета средствами javascript не проходит, поскольку это допускается в пределах одного домена. Поэтому можно создать свой компонент для отправки информации на сервер и вызвать его из javascript кода виджета. Пример взаимодействия JavaScript и .Net можно посмотреть здесь .NET Interop for Gadgets – A C# GMail Inbox Reader Example.
Написанная в приведенном примере библиотека позволяет использовать свой ActiveX компонент, подключая его на лету, Далее можно обращаться к методам компонента в коде виджета.
По нажатию на кнопку «загрузить» выполняется следующее:
1. Cоздаем предоставленный в примере вспомогательный объект, позволяющий «подцепить» наш компонент
2. Собираем значения из полей формы
— Путь до файла
— Размер изображения
3. Подключаем наш компонент.
— Составляем путь к нашей библиотеке
— Создаем экземпляр нашего компонента
— Обращаемся к нему, передавая нужные параметры. Тем самым отправляем на сервер данные из формы.
Приведу класс InteropTestProject.ImgLoader для отправки POST запроса тут. Думаю, найдутся те, кому будет интересна реализация метода Post на C#.
На этом все. Успехов!
Задача: необходимо создать виджет с простым интерфейсом, содержащим поле для ввода текстового значения (например размер изображения в пикселях) и поля для отправки файла-изображения. Интерфейс должен содержать кнопку «отправить», при нажатии на которую на сервер 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#.
На этом все. Успехов!