|
|
РАССЫЛКА САЙТА
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 |