Сообщения

Сообщения за июнь, 2008

Знаете ли вы, что…

… среди блогов MSDN появился блог Сары Форд, переведенный на русский (за что огромное спасибо Виталию Зайко). Сара Форд (ее оригинальный блог здесь ) работает в инженером по тестированию Visual Studio, а так же ведет блог по различным How-to и Did you know по использованию различных версий студии. Сара экстремально активный блогер, каждый день она как правило публикует по статье, так что скучать не придется :).

Shell Extension Handlers на .NET

Вчера разбирался с Shell Extension-ами нашего проекта. Мне предстояло сделать что-бы контекстное меню для определённой иконки на десктопе формировалось динамически. Решил погуглить на счет примера реализации системного интерфейса IContextMenu на .net и вот какую вешь обнаружил. Оказывается Майкрософт крайне не рекомендует реализовывать Shell Extension Handler-ы на .net, и особенно те которые могут загружаться в процессы (in-process shell extensions). Вот ссылка на на оригинальное сообщение Jesse Kaplan , (одного из CLR Program Manager), а ниже мой вольный перевод его слов: К сожалению, единственный способ реализовать их – это неуправляемый С++ . Создание расширителей оболочки, которые загружаются в процесс (in-process shell extensions), это в действительности очень опасная вешь, поскольку таким образом вы можете внедрить управляемый код (и .NET Framework) в каждое приложение на машине, у которого есть стандартный Windows-диалог для открытия файлов. Проблемы возникают из-за того

Как стать экспертом

На днях искал как поставить ударение над символом, при наборе текста в ворде. Попробовал метод научного тыка, но не нашел. Решил погулить и наткнулся на замечательный сайт полезных советов по ворду -- WordExpert.ru . Уверен, что у каждого время от времени возникают подобные вопросы, поэтому надеюсь, что ссылка окажется полезной.

GUI Шпионы (информация к размышлению)

Изображение
В этой статье я попытался сделать краткий обзор инструментов, которые помогают исследовать пользовательский интерфейс Windows-приложений, и с которыми мне в той или иной мере доводилось работать самому. Для иллюстрации работы инструментов я буду использовать простую форму с кнопкой и пустым (и по этому невидимым в рантайме) PictureBox. Вот как эта форма выглядит в дизайн-тайме (первый) и в рантайме (второй). Итак, встречайте: Spy ++, The Customiser, Managed Spy и WfSpy . Первые два инструмента рассчитаны на работу с native Win32 приложениями, так как были созданы до появления технологии .NET, однако работу свою выполняют хорошо и с managed-приложениями. Естественно, всех свойств и событий для .NET контролов они не покажут, но наиболее важные, такие как: координаты, размеры, текст, доступность (enable/disable) - будут. Spy ++ (Microsoft, Win32) Пожалуй, самый известный в своем роде. Этим инструментом я пользуюсь постоянно и по сей день, поскольку это самый надежный инструмент из пе

Скромный пожиратель ресурсов

В состав Visual Studio входит небольшая утилитка командной строки consume. exe , которая предназначена для загрузки ресурсов системы при нагрузочном тестировании. Найти ее можно по следующему пути: VSInstallDir \Common7\Tools\Bin. VSInstallDir – это путь где у Вас установлена студия. Основная задача этой утилиты – на определенное время основательно занаять какой-либо ценный ресурс системы (например, оперативную память, процессорное время, дисковое пространство и т.д). Формат работы утилиты следующий: consume RESOURCE [-time SECONDS] RESOURCE – как можно догадаться по имени параметра, это ресурс системы который надо занять. Он может принимать одно из следующих значений: -physical-memory -page-file -disk-space - cpu -time -kernel-pool SECONDS – а это время в секундах на которое надо занять ресурс.

Как быстро закрыть 23 Internet Explorer’а

Не знаю, кто как, а я для подобных целей использую утилиту Windows taskkill вот с такими параметрами: taskkill /f /im iexplore.exe Чтобы не ошибиться с набором имени процесса, можно вывести список всех процессов в консоль утилитой tasklist и потом воспользоваться командами Mark/Paste . Я постоянно пользуюсь этой командой для закрытия нашего клиентского приложения, потому как что бы закрыть его обычным способом приходится делать слишком много движений и кликов мыши: 1. В System Tray найти иконку приложения. 2. Открыть у него контекстное меню. 3. В меню выбрать команду Exit. 4. И наконец, подтвердить, закрытие приложение. И когда приходится по 20 раз на день запускать/закрывать клиента, я всегда держу открытым консольное окно с командой для запуска и закрытия приложения.