|
РАССЫЛКА САЙТА
RSDN.RU |
Здравствуйте, уважаемые подписчики!
Семинар для разработчиков Представительство Microsoft в СНГ и Центр Компьютерного Обучения "Специалист" при МГТУ им. Н.Э.Баумана объявляют о проведении очередного бесплатного технического семинара в рамках долгосрочной маркетинговой программы <Новейшие технологии Microsoft - взгляд в будущее >: "Microsoft Solutions Framework (MSF) - методология разработки ПО, проверенная временем" 3 апреля 2002 г. Семинар предназначен для программистов, разработчиков, менеджеров и руководителей проектов, - и посвящен внедрению и использованию Microsoft Solutions Framework (MSF). MSF - это набор концепций и рекомендуемых моделей, которые позволяют разрабатывать и внедрять распределенные информационные системы масштаба предприятия на основе технологий и инструментальных средств фирмы Microsoft. MSF базируется на практических результатах организации распределенных вычислений и применения клиент-серверных технологий, полученных как в самой фирме Microsoft, так и ее партнерами и заказчиками. Многие концепции MSF хорошо известны, однако основное достоинство MSF - это систематизация и структуризация информации в форме базы знаний, удобной для ознакомления и использования. На семинаре будут рассмотрены различные методологии разработки программного обеспечения и показан цикл разработки программных и инфраструктурных решений - от получения информации от заказчика до внедрения готового продукта. Также будет обсуждаться минимальный набор формальных процессов, отсутствие которых может превратить проект в безнадежный. Основные темы семинара:
Проведет семинар один из ведущих преподавателей Центра Александр Кораблин (MCSD, MCT), имеющий уникальный для России статус сертифицированного тренера Microsoft по программе Microsoft Solution Framework. Для участия в работе семинара необходимо заполнить регистрационную форму. Регистрационная форма может быть отправлена по факсу (095) 263 6237, а также Вы можете оформить заявку на сервере http://www.specialist.ru/events/microsoft/ В рамках данной акции планируется провести еще 4 технических семинара:
Семинары будут проводиться раз в месяц и призваны познакомить широкую аудиторию IT-специалистов с последними решениями Microsoft в области информатизации больших и средних предприятий. Семинары проведут ведущие преподаватели Центра, многие из которых прошли специальные тренинги по подготовке преподавателей по новым продуктам и технологиям Microsoft за рубежом. Среди участников семинаров будут разыграны призы, главный из которых бесплатное обучение на авторизованном курсе Microsoft, а также бесплатные сертификационные тесты, сувениры с символикой Microsoft.
Как подключиться к запущенным экземплярам Explorer'a? Автор: Тимофей ЧадовДемонстрационное приложение - 6 KB Объект SHDocVw::ShellWindowsНачиная с версии 4.71, оболочка содержит объект ShellWindows, который предоставляет доступ к коллекции уже запущенных экземпляров Internet Explorer'a. Назначение методов этого интерфейса вполне прозрачно. Свойство Count возвращает число элементов в коллекции. Метод Item позволяет получить указатель на интерфейс IWebBrowser2 соответствующего окна.
Таким образом, воспользовавшись этой коллекцией можно не только узнать, сколько и каких окон Explorer'а открыто, но и получить практически полный контроль над ними. Действительно, имея указатель на IWebBrowser2, мы вольны делать с объектами Explorer'a все что заблагорассудиться. Следующий пример просто закроет их. Нет, постойте, следующий пример закроет все окна Windows Explorer'a, а во всех окнах Internet Explorer'a изменит цвет фона на синий. Листинг 1. EnumExp.cpp #include <iostream> // для CComPtr #include <atlbase.h> // ShellWindows #include "exdisp.h" // MSHTML #include "mshtml.h" void main() { // Инициализируем COM CoInitialize(NULL); try { CComPtr<IShellWindows> spShWin; if (FAILED(spShWin.CoCreateInstance( __uuidof( ShellWindows)))) throw std::cout << "Couldn't create object SHDocVW::ShellWindows"; // Получаем количество открытых окон LONG nCount; spShWin->get_Count( &nCount); std::cout << ((nCount)?"Shell windows list:":"none ...") << std::endl; for (int i=0; i<nCount; i++) { // Получаем очередное окно CComPtr<IDispatch> pDisp; spShWin->Item( CComVariant(i), &pDisp); CComQIPtr<IWebBrowser2> pIE( pDisp); if (pIE == NULL) throw "Unable to query Internet Explorer object"; // Получаем URL закруженного документа (открытой папки) USES_CONVERSION; CComBSTR bsUrl; pIE->get_LocationURL( &bsUrl); LPTSTR lpstrUrl = W2T(bsUrl); // Пробуем получить html-документ CComPtr<IDispatch> pDispDoc; pIE->get_Document( &pDispDoc); CComQIPtr<IHTMLDocument2> pHtmlDoc( pDispDoc); // Если документ удается получить, значит это окно Internet Explorer'а if (pHtmlDoc) { std::cout << " Internet Explorer: " << lpstrUrl << std::endl; // Ради примера, меняем цвет фона на синий pHtmlDoc->put_bgColor( CComVariant( L"blue")); } // иначе это просто Explorer else { std::cout << " Window Explorer: " << lpstrUrl << std::endl; // Закроем окно pIE->Quit(); } } } catch(char* lpstrErr) { std::cout << lpstrErr << std::endl; } catch(...) { // Unknown error... std::cout << "Unknown error..." << std::endl; } CoUninitialize(); return; } События DShellWindowsEventsКроме этого, объект ShellWindows поддерживает событийный интерфейс DShellWindowsEvents, подключившись к которому можно своевременно получать уведомления обо всех изменениях в жизни окон Explorer'а. Этот интерфейс содержит всего два метода WindowRegistered и WindowRevoked, которые вызываются оболочкой соответственно при создании и закрытии очередного окна эксплорера. Вопросы подключения к событиям достаточно подробно рассмотрены в различных источниках (в том числе и на нашем сайте), поэтому не будем останавливаться на них отдельно. Пример реализации похожего примера с поддержкой событий DShellWindowsEvents можно найти здесь.
Это все на сегодня. Пока! Алекс Jenter jenter@rsdn.ru |