Программируем для Windows 7

Проверка версии Windows

В статье Проверка версии Windows рассказывается о том, как правильно проводить проверку работоспособности программы в разных операционных системах.

Вызвать режим Fip 3D программно

Вы можете вызвать режим Flip 3D из своей программы при помощи сообщения WM_APPCOMMAND с параметром APPCOMMAND_DWM_FLIP3D


private const int APPCOMMAND_DWM_FLIP3D = 0x36 * 0x10000;

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

Новинки для программиста

Windows Touch

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

Дополнительная информация

Команда разработки Windows 7 : Прикасаясь к Windows 7

Windows Touch Samples (Windows) - примеры

Windows Biometric Framework

В Windows 7 появилась служба для взаимодействия с биометрическими устройствами – Windows Biometrics Framework. Теперь нет необходимости использовать специальное программное обеспечение, поставляемое производителями биометрических устройств. Все операции по взаимодействию возьмет на себя служба Windows Biometric Service. В составе операционной системы присутствует специальное приложение, позволяющее управлять процессом считывания отпечатков пальцев и устанавливать соответствующие политики безопасности. Так, для каждого пользователя можно закрепить "определенный палец". Успешное считывания отпечатка будет предоставлять пользователю вход в Windows или домен.

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

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

На сегодняшний день осуществлена поддержка девайсов для считывания отпечатков пальцев.

Дополнительная информация

Windows Biometric Framework API (Windows) - информация в MSDN

Windows Sensor and Location Platform

Windows Sensor and Location Platform - платформа, созданная для обеспечения взаимодействия ОС с различными датчиками устройств. Основное ее назначение - дать возможность разработчикам создавать "умные" приложения, способные приспосабливаться к условиям среды, в которой работает пользователь, или даже к его географическому местоположению.
Например, ты можешь использовать технологию при создании "умного" пользовательского интерфейса. "Снимай" показания датчика освещения и, в зависимости от их значений, предоставляй юзеру определенный вид интерфейса. Когда пользователь работает при солнечном свете, то разумнее всего сделать интерфейс приложения более контрастным и с увеличенными шрифтами (на глянцевом дисплее при солнечном свете контрастный шрифт будет смотреться лучше), или наоборот, если вокруг темень, – применить к интерфейсу насыщенные цвета.

Location Platform - платформа, позволяющая работать с устройствами определения географического местонахождения объекта. Типичный пример - GPS.

Все возможности этих платформ доступны в виде огромного числа API-функций (С++/управляемый код). В SDK производители устройств найдут спецификацию разработки драйверов устройств, а разработчики прикладных решений – интересные примеры использования технологий. Для тех, у кого нет никаких датчиков, в SDK припасены соответствующие эмуляторы.

Дополнительная информация

Windows Sensor And Location Platforms - Home - документация, примеры

Windows Ribbon

Интерфейс Ribbon, впервые представленный в MS Office 2007, понравился многим пользователям. Начиная с Windows 7, Ribbon стал неотъемлемой частью операционной системы. Это означает, что теперь можно создавать приложения с современным интерфейсом как на управляемом коде, так и используя привычный Win32 API.

Дополнительная информация

Windows Ribbon Framework: Developer Resources - Home

Что нужно знать о Windows 7

С появлением Windows Vista/Windows 7 изменились некоторые принципы и правила программирования, которые необходимо знать программисту.

Очень многие программы по-прежнему копируют свои файлы в папки Program
Files, Windows или в корень системного диска (обычно диск C:). Также программы вносят изменения в реестр, используя ветку HKLM/Software. Но в Windows 7 возникает одна проблема: файлы или значения параметров в реестре не создаются или не обновляются. В чем дело?

Итак, обычные симптомы проблем:

  • ваша программа пытается писать в указанных папках или ветке реестра, но файлы там не появляются.
  • вы переключаетесь на другую учетную запись и ваше приложение не может найти файлы, записанные в папках Program Files, Windows или в корне системного диска
  • После отключения или включения User Account Control (UAC) ваше приложение не может найти файлы в папках Program Files или Windows

Эти проблемы возникают из-за виртуализации (UAC Virtualization). До выхода Windows Vista, обычно все работали с правами администратора и программы могли свободно переписывать системные файлы, значения в реестре и т.д. В Windows Vista принцип работы был изменен, и обычный пользователь с правами админа фактически работал уже с правами стандартного пользователя. Как это выглядело на практике.

Предположим, ваше приложение пытается внести изменения в файле C:\Program
Files\Contoso\Settings.ini, но обычный пользователь не имеет доступа к папке Program Files, и операция записи перенаправляется в файл C:\Users\Username\AppData\Local\VirtualStore\Program
Files\Contoso\settings.ini
. Аналогично, если приложение пытается записать что-то в разделе реестра HKEY_LOCAL_MACHINE\Software\Contoso\, то запись перенаправляется в ветку HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\Software\Contoso или
HKEY_USERS\UserSID_Classes\VirtualStore\Machine\Software\Contoso.

Как правильно вести себя в этих случаях? Виртуализация используется для совместимости с уже существующими программами. Если вы создаете свои новые программы, совместимые с  Windows 7, то вам следует избегать подобных случаев. Обязательно протестируйте свои программы под правами обычного пользователя, а не под правами администратора.

Если у вас уже есть старая программа, то измените ее в соответствии с новыми требованиями. Вам необходимо:

  • Удостовериться, что приложение сохраняет данные  только в пользовательских папках %alluserprofile% или в папках, имеющих полный доступ (настройки ACL).
  • Определить известную стандартную папку, в которую вы хотите записать данные. Данные, которыми будут пользоваться все пользователи, нужно записывать в соответствующие папки, доступные для всех. Данные для отдельного пользователя записываются в папку, доступную только этому пользователю.
  • Данные (логи, настройки, сохранение в играх) нужно сохранять в папку Documents
    (или указанную пользователем папку)
  • Не задавайте в коде жестко прописанные пути к файлам и папкам. Используйте стандартные функции для определения корректных путей к папке Windows и других известных папок: функция System.Environment.GetFolderPath позволяет получить пути к файлам Environment.SpecialFolder.CommonApplicationData
    Environment.SpecialFolder.LocalApplicationData
    Environment.SpecialFolder.ApplicationData.
    Также можно использовать следующие переменные среды:
    %ALLUSERSPROFILE%
    %LOCALAPPDATA%
    %APPDATA%

Используя Проводник, найдите ваши пропавшие файлы в папке VirtualStore, которая хранит перенаправленные файлы, которые вы пытались записать в запрещенные места.
Ищите эту папку в %localappdata%\VirtualStore. Если вы не можете найти эту папку, то попробуйте команду dir %userprofile%\yourfile.dat /s /a в командной строке (обычно папка находится в C:\Users\user name\AppData\Local\VirtualStore). Также файлы могут находиться в подпапках виртуализированной папки. Если там нашлись ваши файлы, то это служит лишним доказательством, что сработал механизм UAC virtualization и вам нужно принимать меры по исправлению ситуации.

 Дополнительные материалы

Вы можете скачать документацию и презентацию, описывающие UAC Virtualization, а также лабораторную работу:
скачать примеры! (англ.)

Windows API Code Pack

Windows API Code Pack для Microsoft .NET Framework - специальный пакет, призванный помочь разработчикам создавать приложения для Windows 7 (и частистно Windows Vista) с помощью .NET. Пакет представляет собой библиотеку исходных кодов, используемых для доступа к некоторым новым функциям Windows через управляемый код. Вот перечень функций, поддерживаемых в версии 1.0:

  • Списки переходов панели задач, многослойные иконки, прогресс-бары и панели миниатюр.
  • Библиотеки, известные папки Folders и контейнеры не файловой системы.
  • Поддержка Windows Shell Search API, иерархия элементов пространства имен оболочки, поддержка Drag and Drop для объектов оболочки.
  • Элемент управления Explorer Browser.
  • Система свойств оболочки.
  • Общие файловые диалоги Windows Vista и Windows 7, включая индивидуальные элементы управления.
  • Диалоги задач Windows Vista и Windows 7.
  • Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite и Windows Imaging Component (WIC) API (поддержка DirectWrite и WIC носит частичный характер)
  • API сенсорной платформы, API расширенных лингвистических служб, API управления питанием, API перезагрузки приложений и восстановления и API менеджера списка сетей.
  •  Элемент управления Command Link и определяемые системой иконки оболочки.

Microsoft также выпустила Windows 7 Training Kit for Developers (66.7Мб). Релиз включает примеры кода, презентации, практические уроки и демонстрации, призванные помочь разработчикам Win32 C++ и .NET создавать приложения, совместимые с Windows 7 RTM. Набор покажет, каким образом использовать ключевые функции Windows 7 (панель задач, библиотеки, multi-touch, платформу Sensors and Location, ленточный интерфейс, службы с триггерным запуском, а также ETW) и обеспечить совместимость (проверка версий, перенаправление данных UAC, изоляция сессии 0, определение инсталлятора, изоляция привилегий пользовательского интерфейса и поддержка High DPI).

Подготовка к работе с Windows API Code Pack

Распакуйте архив с файлами и запустите решение WindowsAPICodePack.sln. По умолчанию в качестве StartUp-проекта будет использоваться проект Shell. Нас это вполне устраивает, так как именно здесь находятся необходимые нам классы для работы с панелью задач. Выбираем в меню Build | Build Shell и получаем в папке ..\WindowsAPICodePack\Shell\bin\Debug файл Microsoft.WindowsAPICodePack.Shell.dll. Это и есть наша библиотека, которую мы будем использовать в своих проектах.

Примеры работы с Windows API Code Pack

Индикатор прогресса на панели задач

OverlayIcon - Наложение значков

Смотри также

Добавляем кнопки к миниатюре окна (Thumbnail) Windows 7 в WPF

Использование списков переходов (Jump List) в WPF

Реклама

Современные шины по хорошим ценам.;летняя резина;Видео Интересно и Полезно: фильмы.;порошковая покраска дисков