Программируем для 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 Biometric Framework
В Windows 7 появилась служба для взаимодействия с биометрическими
устройствами – Windows Biometrics Framework. Теперь нет необходимости
использовать специальное программное обеспечение, поставляемое
производителями биометрических устройств. Все операции по взаимодействию
возьмет на себя служба Windows Biometric Service. В составе операционной
системы присутствует специальное приложение, позволяющее управлять процессом
считывания отпечатков пальцев и устанавливать соответствующие политики
безопасности. Так, для каждого пользователя можно закрепить "определенный
палец". Успешное считывания отпечатка будет предоставлять пользователю вход
в Windows или домен.
Все возможности платформы доступны разработчикам в виде набора API-функций.
Для многих это будет приятным сюрпризом, так как создавать приложения для
взаимодействия с устройствами станет намного проще и, самое главное, есть
все шансы добиться универсальности. Поскольку работа с устройством
происходит через посредника (Windows Biometric Service), у программиста
отпадет необходимость заботиться о поддержке устройств определенных
производителей. Главное, чтобы Windows могла работать с ними.
Стоит заметить, что работа с устройством не напрямую, а через службу
обеспечивает, как минимум, еще один плюс - это безопасность. Клиентское
приложение не имеет прямого доступа к устройству, а раз так, то и
вероятность изменить конфиденциальные данные существенно снижается.
На сегодняшний день осуществлена
поддержка девайсов для считывания отпечатков пальцев.
Дополнительная информация
- информация в MSDN
Windows Sensor and Location Platform
Windows Sensor and Location Platform - платформа, созданная для
обеспечения взаимодействия ОС с различными датчиками устройств. Основное ее
назначение - дать возможность разработчикам создавать "умные" приложения,
способные приспосабливаться к условиям среды, в которой работает
пользователь, или даже к его географическому местоположению.
Например, ты можешь использовать технологию при создании "умного"
пользовательского интерфейса. "Снимай" показания датчика освещения и, в
зависимости от их значений, предоставляй юзеру определенный вид интерфейса.
Когда пользователь работает при солнечном свете, то разумнее всего сделать
интерфейс приложения более контрастным и с увеличенными шрифтами (на
глянцевом дисплее при солнечном свете контрастный шрифт будет смотреться
лучше), или наоборот, если вокруг темень, – применить к интерфейсу
насыщенные цвета.
Location Platform - платформа, позволяющая работать с устройствами
определения географического местонахождения объекта. Типичный пример - GPS.
Все возможности этих платформ доступны в виде огромного числа API-функций
(С++/управляемый код). В SDK производители устройств найдут спецификацию
разработки драйверов устройств, а разработчики прикладных решений –
интересные примеры использования технологий. Для тех, у кого нет никаких
датчиков, в SDK припасены соответствующие эмуляторы.
Дополнительная информация
- документация, примеры
Windows Ribbon
Интерфейс Ribbon, впервые представленный в MS Office 2007, понравился многим пользователям. Начиная с Windows 7, Ribbon стал неотъемлемой частью операционной системы. Это означает, что теперь можно создавать приложения с современным интерфейсом как на управляемом коде, так и используя привычный Win32 API.
Дополнительная информация
Что нужно знать о 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 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 также выпустила (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
Реклама
Современные шины по хорошим ценам.;летняя резина;Видео Интересно и Полезно: фильмы.;порошковая покраска дисков

