Информационные технологииStfw.Ru 🔍

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

🕛 29.05.2009, 01:28
Как уже упоминалось ранее при обсуждении библиотек 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, включая: o Библиотеки Windows 7 o Известные папки (от англ. Known Folders) o Контейнеры, не относящиеся к файловой системе
* Диалоги задач для 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. Будем очень признательны, если вы поможете нам усовершенствовать библиотеку, загрузив исходный код и примеры и используя их в ваших приложениях. Сообщайте об обнаруженных ошибках или предлагайте возникшие у вас идеи через форму обсуждения и форму диагностики проблем.

Windows 7   Теги: Api, Windows

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉