Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

28.05.2009 13:11 | alexkiev

Как уже упоминалось ранее при обсуждении библиотек Windows 7 .NET Interop Sample Libraries, большинство API для Windows 7 написаны на C, C++ и COM и не имеют аналогов на .Net. Это немного осложняет жизнь разработчиков управляемого кода, вынуждая их создавать собственные интероперабельные слои, обеспечивающие обмен информацией между .NET и собственными API Windows. Некоторыми собственными API можно легкостью пользоваться с помощью управляемого кода - для этого необходима функциональная совместимость, достигаемая добавлением ссылок в библиотеку типов COM. Однако, не всегда все так просто и для работы с проблемными библиотеками потребуется неплохое знание программирования "Win32". Собственно, для этого и был создан Windows API Code Pack для Microsoft .NET Framework.

В статье о библиотеках Windows 7 .NET Interop Sample Libraries мы привели несколько примеров кода, демонстрирующих как получить доступ к панели задач, библиотекам, сенсорам и multi-touch из .NET, а также обещали рассказать о новом проекте Windows API Code Pack для библиотек Microsoft .NET Framework. Команда SDK Windows разработала Windows API Code Pack, чтобы обеспечить .NET-разработчикам простой доступ к функциям Windows 7, облегчая работу тем, кому будет достаточно и того, что они доберуться до приложений клиентской версии Windows 7. В общем, это самая полезная вещь, которая понадобится .NET-разработчику для управления кодом Windows 7.

Windows API Code Pack (Code Pack) намного мощнее в смысле функциональных возможностей и качества, чем его предшественник Windows Vista Bridge. Code Pack содержит широкий спектр API, включая исчерпывающий набор объектов Windows Shell, Windows Taskbar, библиотеки и набор расширенных лингвистических служб Windows 7. Вот лишь краткий перечень API из Windows API Code Pack:

  • Поддержка объектов пространства имен Windows Shell, включая:

    • Библиотеки Windows 7
    • Известные папки (от англ. Known Folders)
    • Контейнеры, не относящиеся к файловой системе

  • Диалоги задач для Vista и Windows 7
  • Поддержка элементов управления Windows 7 Explorer Browser
  • Поддержка подсистемы свойств Shell
  • Windows 7 Taskbar
  • Поддержка общих файловых диалогов в Vista и Windows 7
  • Поддержка Direct3D 11.0 и DXGI 1.0/1.1 API
  • API платформы сенсоров
  • Расширенные лингвистические службы Windows 7


После того, как вы загрузите и разархивируете файл v0.85, вы увидите папку с примерами - папку Samples. Эта папка содержит примеры, демонстрирующие все API, входящие в состав API Code Pack. Там же вы найдете папку WindowsAPICodePack, которая содержит весь исходный код для этой библиотеки. Это обеспечивает хорошую возможность понять взаимодействие библиотек, предоставляя полную свободу в изменении исходного кода.

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


WPF Explorer Browser
Прежде, чем вдаваться в детали этого примера, давайте поговорим о Windows Shell. Windows Shell - это основной фронт взаимодействия пользователя с Windows. Многие пользователи считают, что Windows Explorer это и есть "Windows", однако, это всего лишь часть всей оболочки Windows Shell. Оболочка включает и другие элементы пользовательского интерфейса, такие как панель задач, меню Start, окна Windows Explorer, корзину и даже результаты поиска. Самые обычные и известные объекты оболочки - файлы и папки. Однако, есть также и другие виртуальные объекты, такие как корзина, принтеры, библиотеки и т.д. Объекты оболочки организованы в иерархической системе пространства имен, которая охватывает файловую систему.

Правильное понимание устройства пространства имен оболочки и получения доступа к верхнему уровню системы Shell - рабочему столу - вы можете понять всю структуру компьютера, включая файлы и папки, принтеры, шрифты, программные файлы и записанные телепередачи. Используя пространство имен, разработчики могут обращаться ко всем файлам и папкам и всем известным папкам, которые были упомянуты в статье "За кулисами библиотек").

До последнего времени все эти действия были недоступны .Net-разработчиков. Однако, новый Code Pack предлагает элемент управления Explorer Browser, а также набор предопределенных объектов, свойства и API, необходимых для работы в пространстве имен. В разделе, относящейся к оболочке (Shell project) вы найдете элементы управления Explorer Browser для WPF и WinForms, равно как и все функциональные возможности, необходимые для операций с известными папками и такими объектами, как ShellObject, ShellLink, ShellFolder, ShellItem, ShellCollection, ShellThumbnail и т.д. Реализации панели задач и библиотек также используют многие из этих объектов оболочки. Как показано на следующем изображении, в примере Explorer Browser акцентируется внимание на элементе управления Explorer Browser, который помогает визуализировать пространство имен.



Аналогичным образом пример Shell Hierarchy Tree демонстрирует возможность перемещения по содержимому компьютера с помощью пространства имен:




Сенсоры
Code Pack также включает API для доступа к сенсорам через платформу Sensor and Location в Windows 7. Проект Sensor содержит все необходимые определения для нормальной работы с сенсорами, включая SensorManager для выбора и получения сенсора и класс сенсора для работы, и конечно SensorReport, который предоставит доступ к данным сенсора. Пример Sensor включает два примера, иллюстрирующие работу двух сенсоров: освещения и движения. Можно воспользоваться Virtual Light Sensor из SDK к версии-кандидату Windows 7, чтобы смоделировать различные условия освещения, а приложение Ambient Light Level - для отображения суммарного количества света, определенного сенсором.




Расширенные лингвистические службы
Расширенные лингвистические службы (далее ELS) - это еще одна очень интересная технология в Windows 7. ELS - новая функция, которая позволяет разработчикам использовать этот же набор API для увеличения разнообразия расширенных лингвистических функций. С помощью ELS API разработчики могут использовать информацию, полученную при автоматическом определении языка любого участка текста Unicode, чтобы сделать работу пользователей по всему миру более удобной. Платформа ELS - это связь между вашим приложением и сервисами ELS. Она обеспечивает простое использование некоторых видов лингвистических функциональных возможностей с помощью API, которые позволяют приложению обращаться и использовать определенные службы. Для получения дополнительной информации о API обращайтесь к статье о расширенных лингвистических службах.

Класс MappingAvailableServices позволяет сделать запрос на определение языка, на котором написана строка. И вы можете либо проверить язык, на котором написана строка, либо узнать, на каком языке написана эта строка. Это может стать весь мощным инструментом в руках разработчиков многоязычных приложений.

К тому же она проста в использовании. Например, следующая строка кода определяет языки, используемые в строке:

scriptDetection.RecognizeText("This is English. АБВГД.", null))

e]
Результат будет выглядеть примерно так:

Recognized 2 script ranges
Range from 0 to 16, script Latn
Range from 17 to 22, script Cyrl



Панель задач и библиотеки
Code Pack содержит необходимые API для работы с панелью задач и библиотеками в Windows 7. Для панели задач вы можете:

  • Создавать и управлять всплывающими списками (от англ. JumpLists), включая разделе "Задачи" и "Элементы"
  • Отображать динамические многослойные иконки и панели миниатюр
  • Использовать прогресс-бар


На этом уровне разработке вы не можете управлять предварительным просмотром миниатюр и функцией, известной под названием AeroPeek. Для реализации этих функциональных возможностей потребуется Windows 7 Taskbar Sample .NET Interop Library.

Благодаря примеру с панелью задач вы научитесь полностью контролировать всплывающие списки, как показано на следующем изображении:



Code Pack также предлагает полную поддержку библиотек Windows 7, о которых более подробно мы поговорим в следующий раз.

Стоит отметить, что эта библиотека в настоящее время находится в разработке. Текущий номер версии - v0.85. Финальная версия этой библиотеки будет доступна к моменту релиза финальной версии Windows 7. Будем очень признательны, если вы поможете нам усовершенствовать библиотеку, загрузив исходный код и примеры и используя их в ваших приложениях. Сообщайте об обнаруженных ошибках или предлагайте возникшие у вас идеи через форму обсуждения и форму диагностики проблем.


Источник: http://blogs.msdn.com/windev
Перевод: alexkiev

Комментарии

Не в сети

28.05.09 15:59
0
Не в сети

Ну МС то молодцы, такую фишку придумал с супербаром и ждамплистами, но вот разработчики программного обеспечения так и не удосужились использовать этот функционал, хотя уже почти пол года Windows 7 доступна для всех. Видать они не понимают всех возможностей новой панели задач и библиотек...

28.05.09 21:51
0
Не в сети

Надеюсь с помощью этой штуковины мне удастся сделать на WinForms нормальные вистовские диалоги и мастера. Замучался уже по мсдн'ам ползать...иногда так подумаешь..ну вышел .нет, вроде решили все унифицировать, чтобы разработчикам жилось легче. А на деле получается тут недоработали, про этих забыли...Главно сами позиционируют C# как основной язык, а первым делом подгоняют все под неуправляемый код. Я недавно только начал осваивать студию и шарп и голова уже пухнет от обилия сходных технологий, которые в студии есть одновременно.

03.06.09 02:06
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.046 секунд (Общее время SQL: 0.03 секунд - SQL запросов: 59 - Среднее время SQL: 0.0005 секунд))
Top.Mail.Ru