Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2011, 18:25   #1
dab00
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 46
По умолчанию SilverLight 4.0 + COM API. Breaking the habit...[статья]

Как известно, из SilverLight-приложения достучаться до файловой системы непросто, что вполне логично с точки зрения безопасности. Нет, ну добраться до файла в каталоге "Мои документы" - нет проблем, в ином месте - приходится изобретать велосипед. В этой статье я опишу устройство подобного велосипеда.
На днях писал одно SilverLight-приложение, в котором было необходимо при создании в базе данных новой записи создавать на файл-сервере каталог с соответствующим названием, добавлять/удалять файлы в/из каталог(а) и пасти информацию обо всех файлах, находящихся в целевом каталоге. Скажем, что-то отдаленно напоминающее систему управления версиями.
И вот когда, наконец, убив несколько дней на разработку я приступил к реализации функционала работы с файловой системой... сначала мне показалось, что я выбрал не ту технологию. Даже всерьез рассматривал вариант переноса пользовательских каталогов "Мои документы" на сервер - куда деваться - неужели столько времени потрачено впустую...

А ларчик просто открывался - на помощь пришла старая добрая технология COM.
Достаточно было импортировать в проект пространство имен System.Runtime.InteropServices.Auto mation, дальше - песня.

Хочешь - FileSystemObject:
Dim fso As Object = AutomationFactory.CreateObject("Scr ipting.FileSystemObject")

Хочешь - Shell.Application:
Dim sh As Object = AutomationFactory.CreateObject("She ll.Application")

Хочешь WshShell:
Dim wshShell As Object = AutomationFactory.CreateObject("WSc ript.Shell")

Со всеми вытекающими свойствами и методами. Просто праздник какой-то .

На всякий случай можно проверить, как там дышит AutomationFactory:
If AutomationFactory.IsAvailable Then

И дело в шляпе. Easy peasy lemon squeezy . Хорошо что приложение было внебраузерным - если бы такие фокусы прокатили в браузере, разработчиков мелкомягких можно было бы смело расстрелять раз несколько.
В общем, как добрался я до COM API, отпустило меня . Такая вот история.

P.S. В Silverlight 5 можно обойтись и без "велосипеда". Правда в настоящий момент (11.11.11) доступна только RC-версия.
dab00 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Контролы SilverLight Elkenos WPF, UWP, WinRT, XAML 1 12.02.2011 10:23
статья - Перехват API функций. Основы. Delphi Pblog Обсуждение статей 0 23.06.2010 05:13
silverlight dampirik WPF, UWP, WinRT, XAML 3 16.02.2010 18:14
Silverlight 3 DataBinding Cat_Kira Общие вопросы .NET 0 19.11.2009 15:58