Сайт для программистов

суббота, 24 октября 2009 г.

Фотоотчет о посещении офиса Microsoft

Утро 23 октября 2009 было мерзким. На улице шел противный дождь. Еще вчера я взял отгул в счет отпуска на работе и мог спокойно спать. Но пришлось вставать. Ведь отгул я брал не просто так. У меня было запланировано посещение офиса мегакорпорации Microsoft. Дело в том, что меня попросили возглавить московское представительство Microsoft. Впрочем, нет, Билл Гейтс и Стив Балмер еще не созрели для такого предложения.

Я поперся туда в такую погоду по другой причине - Microsoft проводила очередной семинар Techdays в Москве.

В прошлом году семинар проходил в Бауманском Доме Культуры (или как он там называется). На этот раз устроители пригласили разработчиков к себе в логово. Упускать такой шанс было нельзя.

Преодолев стойкое желание поспать, я встал и стал собираться. Холодильник был пустой, если не считать замороженного мяса. Мясо предназначалось коту, я не имел права отнимать у него последний кусок. Попил пустой чай и поехал через всю Москву в Крылатское. Вся надежда была на Microsoft, которая не даст умереть с голоду разработчика под платформу Windows.

Мои надежды оправдались - в фойе, где проходила регистрация, были накрыты столы с пирожками, а также стояли термосы с чаем/кофем. Семинар проходил целый день с 10.00 до 19.00. Через каждый час устраивались перерывы - народ ломился из учебного зала, чтобы подкрепиться. Тут Microsoft не подкачал. Молодые девушки и юноши успевали к каждому такому перерыву обновлять содержимое стола. Кроме пирожков, появились также вкусные бутерброды, соки, минеральная вода.

Во время перерыва я изобразил из себя праздношатающего зеваку и стал обследовать офис. Конечно, в закрытые двери ломиться я стал, а просто прошелся по коридору. И, неожиданно, оказался в кафе для сотрудников и посетителей Windows Vista Cafe. В кафе оказалось четыре компа (два не работало), подключенных к интернету. Также имелась пара автоматов XBox. Повсюду были шарики по случаю релиза Windows 7 и Visual Studio 2010 beta.

На семинаре одному из участников достался приз - фирменная банка пива Windows 7. Интересно, можно ее купить где-нибудь?

О самом семинаре рассказывать не буду. Все равно все материалы устроители выложат на сайте.

После окончания семинара всех также угостили пивом и фирменными тортами с надписями MSDN и Windows 7. Решение объединить два продукта мне показалось спорным (я о пиве и торте). Лично я сначала выпил бокал пива, а потом уже стал пить чай с тортом. Рядом со мной находился человек, который совершал обряд в обратном порядке. Не знаю, не знаю.

Заинтересовался также бумажками, вывешенными в туалете. Удивило, что в московском представительстве тексты была набраны на английском и напрочь отсутствовала локализованная версия. Видимо, тексты предназначались только для иностранцев. Вникать в содержание плакатов не было желания, но иллюстрации на первой картинке напоминали азбуку жестов для глухонемых.

По традиции всех участников одарили блокнотами, ручками, брошюрами. А вот футболки стали приятным сюрпризом. Только почему-то всегда дарят белые футболки (ворчу про себя).

Подписывать фотки я не стал. Думаю, что после прочтения данного поста, вы и сами разберетесь, что к чему.

Спасибо, Microsoft. Было очень вкусно.










четверг, 22 октября 2009 г.

WM_APPCOMMAND

Недавно в справочник по функциям Windows API я добавил новый материал - описание сообщения WM_APPCOMMAND. Предлагаю вашему вниманию рассказ об этом интересном сообщении в сжатом виде. Само сообщение объявляется следующим образом:

private const int WM_APPCOMMAND = 0x319;

Сообщение WM_APPCOMMAND уведомляет окно о том, что пользователь создал командное событие прикладной программы, например, щелкнул на кнопке в приложении, используя мышь, или нажал на клавиатуре клавишу управления приложением.

С помощью данного сообщения можно, например, отключить системный микшер, значок которого находится в области уведомлений рядом с часиками.

private const int APPCOMMAND_VOLUME_MUTE = 0x8 * 0x10000;

private void button2_Click(object sender, EventArgs e)
{
// выключаем/включаем микшер
SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_MUTE);
}

Обратите внимание, что микшер включается или выключаетя циклически, т.е. для включения микшера нужно еще раз послать данное сообщение.

Также можно увеличивать или уменьшать уровень громкости микшера(константы APPCOMMAND_VOLUME_DOWN и APPCOMMAND_VOLUME_UP). Кроме того, среди используемых констант можно найти управление микрофоном, браузером или универсальным проигрывателем. Вот как можно поставить на паузу Windows Media Player из своей программы:

private const int APPCOMMAND_MEDIA_PLAY_PAUSE = 0x14 * 0x10000;

SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_MEDIA_PLAY_PAUSE);

Полный список доступных констант вы найдете в справочнике. Хочу обратить ваше внимание, что все значения констант в сообщении WM_APPCOMMAND необходимо умножить на 0x10000, что я и сделал в предыдущих примерах. Используются ли данные константы без умножения в других сообщениях , я не знаю. Кто в курсе - отзовитесь.

Кстати, при изучении документации MSDN, я обнаружил еще одну интересную константу APPCOMMAND_DWM_FLIP3D, который включает режим FLIP 3D в Windows 7 (Кстати, сегодня первый день розничной продажи Windows 7).

Удачного вам программирования!