Набор Windows 7 API для управляемого кода

Источник: realcoding

Как уже упоминалось ранее при обсуждении библиотек 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))

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

Код:
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://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=22874