Статьи / Программирование / Windows 7 Libraries и API / Windows Vista Bridge Sample Library - управляемые API для Windows 7
Windows Vista Bridge Sample Library - управляемые API для Windows 7Просмотров: 1971
20.04.2009 12:09
 
У многих читателей возникает вопрос, почему мы так часто говорим о Windows Vista в блоге Windows 7 для разработчиков? Все очень просто: мы говорим о Windows Vista, так как Windows 7 построена на базе Windows Vista и обладает обратной совместимостью с программной моделью Windows Vista. Это, несомненно, является огромным преимуществом для разработчиков.

Ни для кого не секрет, что операционная система Windows написана на С и С++, и, как следствие, использует наследственную программную модель, известную как WinAPI или Win32 API. Windows API представляет собой либо чистый C API или COM-based API. Это делает использование API очень простым и удобным для тех, кто программирует на C или C++. Но что мы можем предложить разработчикам управляемого кода? Есть ли какие-либо API управляемого кода в Windows Vista или Windows 7?

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

Хорошим примером является компонент (так называют библиотеки в .NET) .NET WinForms, который содержит набор интерфейсных классов, которые используют традиционный Win32 API для создания и обработки окон в Windows. Абстрагируя встроенный API, .NET WinForms гарантирует, что нам не нужно напрямую работать с указателями (HWND), обработчиками (HINSTANCE) или другими собственными Windows API конструкциями. В противном случае код выглядел бы следующим образом:


Да, WinForms основан на HWND. Разработчики на .NET могут легко получить доступ к HWND, используя свойство класса System.Windows.Interop в компоненте WindowsBase (WindowsBase.dll).

Но несмотря на всесторонние связи .NET Framework, данная среда исполнения не предлагает управляемые API для всех собственных Windows API. Поэтому у разработчиков управляемого кода нет никаких управляемых API для работы с UAC API, Restart Manager API или новым Windows Vista Search API. Это всего лишь несколько примеров собственных Windows API, для работы с которыми в .NET Framework нет каких-либо интерфейсов, но которые играют ключевую роль при развертывании некоторых приложений в Windows.

Windows Vista Bridge Sample Library (VBSL) является развитием одной из идей команды Microsoft SDK по созданию своеобразного моста между .NET framework и Windows API. VBSL является библиотекой классов, которая облегчает разработчикам управляемого кода доступ к наиболее важным функциям Windows Vista без необходимости заботиться об уровне взаимодействия. Vista Bridge 1.3 предлагает разработчикам набор классов, библиотек и примеров, написанных на .NET, которые позволяют разработчику использовать такие функции Vista, как UAC, Power Management, Restart & Recovery, Restart Manager, Network, Aero Glass и многие другие. Необходимо отметить, что управляемые библиотеки Vista Bridge 1.3 отлично работают и с Windows 7 API и будут работать в будущих релизах по мере того, как команда SDK будет продолжать поддержку данного проекта.

Vista Bridge Sample Library входит в состав Windows SDK, но мы считаем, что этот проект достаточно важен для того, чтобы быть размещенным в MSDN Code Gallery. В будущих статьях мы подробней расскажем о некоторых новых функциях, упомянутых выше, чтобы продемонстрировать, каким образом сегодня можно использовать преимущества Windows Vista, чтобы в дальнейшем облегчить переход на Windows 7.

Одной из областей, в которых VBSL может облегчить труд разработчиков - это диалоговые окна. Windows Vista предлагает вам множество диалоговых окон для разных целей. Например, если вы используете Windows Vista, то вам, вероятно, знаком следующий формат пользовательского интерфейса:


или такой:


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

Вот пример типичного набора командных ссылок:


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

Используя Windows Vista Bridge Sample Library, вы можете создать симпатичные диалоги Task Dialog, которые будут выглядеть следующим образом:


Диалог Task Dialog является объектом Vista Bridge Sample Library, Microsoft.SDK.Samples.VistaBridge.Library.TaskDialog и не имеет свойств времени. Именно поэтому вы должны настроить диалоговое окно. Но это просто и мы докажем это на следующем примере.

Во-первых, создайте Task Dialog:

Код:

TaskDialog td = new TaskDialog();

После чего начните настраивать его атрибуты - заголовок, инструкции, основную область и основную иконку:

Код:

//main content section
td.Caption = "Fancy \"Vista\" Task Dialog on Win 7";
td.Instruction = "Your instructions go here";
td.Content = "Download Windows Vista Bridge Library";
td.MainIcon = TaskDialogStandardIcon.Information;


Теперь добавьте опциональный нижний колонтитул и иконку:

Код:

td.FooterText = "Footer text goes here"; t
d.FooterIcon = TaskDialogStandardIcon.Shield;


Но самое интересное начнется, когда вы начнете разбираться с TaskDialog.Controls - коллекцией элементов управления TaskDialog -DialogControlCollection<TaskDialogControl>, r которому вы можете добавить объект TaskDialogControl:

Код:

td.Controls.Add(new TaskDialogCommandLink("new tdcl", "main text here"

В дополнение к добавлению командных ссылок, Task Dialog также может выводить набор событий, которые позволят вам манипулировать и взаимодействовать с пользователем во время его работы с диалоговым окном. Объекты Task Dialog используют событие Tick для работы с индикатором выполнения задачи, Open и Closing, а также HelpInvoked и HyperLinkClick для управления пользовательскими запросами о помощи и информации.

Код:

//events that you can catch
td.Tick += new EventHandler<TaskDialogTickEventArgs>(OnMyTick);
td.Opened += new EventHandler(OnOpenInvoked);
td.HelpInvoked += new EventHandler(OnHelpInvoked);


Также вы можете добавить компоненты Progress Bar, CheckBox и Radio Button. По сути, Windows Vista Task Dialogs API является мини-версией среды исполнения Dialog, который позволяет вам сохранить много времени при работе с мастерами и диалоговыми окнами.

Код вышеприведенного примера:

Код:

1:  td = new TaskDialog();
   2:  
   3:  //
   4:  td.StartupLocation = TaskDialogStartupLocation.CenterOwner;
   5:  td.Cancelable = true;
   6:  
   7:  //main content section
   8:  td.Caption = "Fancy \"Vista\" Task Dialog on Win 7";
   9:  td.Instruction = "Your instructions go here";
  10:  td.Content = "Download Windows Vista Bridge Library Sample";
  11:  td.MainIcon = TaskDialogStandardIcon.Information;
  12:  
  13:  //setting footer content
  14:  td.FooterText = "Footer text goes here";
  15:  td.FooterIcon = TaskDialogStandardIcon.Shield;
  16:  
  17:  //Command Links
  18:  td.Controls.Add(new TaskDialogCommandLink("new tdcl", "Main text here", "Instruction"));
  19:  td.Controls.Add(new TaskDialogCommandLink
          ("Another new tdcl", " Another main text here", "More instruction"));
  20:  
  21:  //Expanding
  22:  td.ExpansionMode = TaskDialogExpandedInformationLocation.ExpandContent;
  23:  td.ExpandedControlText = "Expanded Control Text";
  24:  td.ExpandedText = "This is some expanded text, only visible when expanded";
  25:  td.CollapsedControlText = "Collapsed Control Text";
  26:  td.HyperlinksEnabled = true;
  27:  
  28:  //Prograss Bar
  29:  TaskDialogProgressBar tdpb = new TaskDialogProgressBar();
  30:  tdpb.Name = "myPrograssBar1";
  31:  tdpb.Minimum = 0;
  32:  tdpb.Maximum = 100;
  33:  td.ProgressBar = tdpb; //adding to main Task Dialog
  34:  
  35:  // Check Box
  36:  td.CheckBoxChecked = true;
  37:  td.CheckBoxText = "This is a checkbox, we can register to listen for its events";
  38:  
  39:  //events that you can catch
  40:  td.Tick += new EventHandler<TaskDialogTickEventArgs>(OnMyTick);
  41:  td.Opened += new EventHandler(OnOpenInvoked);
  42:  td.HelpInvoked += new EventHandler(OnHelpInvoked);
  43:  td.Closing += new EventHandler<TaskDialogClosingEventArgs>(OnDialogClosing);
  44:  td.HyperlinkClick += new EventHandler<TaskDialogHyperlinkClickedEventArgs>(td_HyperlinkClick);
  45:  
  46:  td.Show();
Источник: www.thevista.ru