36
Код,
запускаемый
не
под
управлением
среды,
называется
неуправляемым
. Примером неуправляемого кода могут служить COM-
компоненты, Microsoft ActiveX интерфейсы и функции API Win32.
Microsoft .NET Framework позволяет взаимодействовать с COM-
компонентами, COM+-службами, внешними типами библиотек и разными
службами операционной системы.
Платформа .NET Framework предлагает две службы взаимодействия
управляемого кода с неуправляемым — Platform Invoke и COM
interoperability, которые используют реальные возможности проекта.
1. Создайте новое Windows-приложение и назовите его
.
2.
Добавьте на форму элементы OpenFileDialog и
MenuStrip.
3. Установите следующие свойства формы
Form1:
Свойство
Значение
Text
Обозреватель документов в формате PDF
WindowState Maximized
4. Свойство
FileName элемента
OpenFileDialog сделайте пустым.
5. Добавьте пункт меню верхнего уровня
File c командами
Open и
Exit.
6.
Выберите Tools | Choose Toolbox Items…
7. На вкладке
COM Components выберите
Adobe Acrobat (PDF)
Reader (этот компонент появляется после установки программы Adobe
Acrobat Reader)
и нажмите
OK. Убедитесь, что на панели Toolbox этот ЭУ
действительно появился.
8. Перенесите
Adobe Acrobat Reader на форму и установите
свойству
Dock значение
Fill, а свойству
(Name) –
axAcroPDF1 (от имени
объекта будет
вызываться нужные нам методы, в принципе имя может
быть любым).
9. Добавьте обработчик пункта меню
Open:
private void openToolStripMenuItem_
Click (object sender,
System.EventArgs e)
{
openFileDialog1.Filter = "Файлы pdf|*.pdf";
openFileDialog1.ShowDialog();
axAcroPDF1.LoadFile(openFileDialog1.FileName);
}
10. Реализуйте обработчик события
Click для пункта меню
Exit.
11. Постройте и запустите приложение. При открытии документа в
формате pdf происходит, по сути, встраивание в
форму интерфейса
программы Adobe Acrobat Reader.
Упражнение
2. Вызов
функции
API
Службы Platform Invoke позволяют управляемому коду запускать
функции неуправляемого кода, которые находятся в файлах библиотек
динамической компоновки (DLL).
37
Эти службы предоставляют механизмы обнаружения и запуска
неуправляемых функций и преобразование
типов данных входящих и
исходящих аргументов функции.
Когда управляемый код запускает функцию неуправляемого кода,
локализованную в DLL-файле, службы Platform Invoke находят этот DLL
файл, загружают его в оперативную память и находят адрес функции в
памяти. После этого службы передают входящие
аргументы функции в
стек,
преобразовывают
данные,
которые
необходимо
перевести,
эмулируют
сборку
мусора
и
передают
управление
по
адресу
неуправляемой функции в памяти.
Первым шагом в запуске неуправляемой функции является
объявление функции. Функция должна быть статической (static) и внешней
(extern). Далее следует импорт библиотеки, содержащей эту функцию.
Импортировать библиотеку нужно, используя атрибут
DllImport,
который находится в пространстве имен System.Runtime.InteropServices.
1. Создайте новое приложение и назовите его WinAnim.
2. Расположите на форме три кнопки и установите следующие
свойства формы и кнопок:
Свойство
Значение
Достарыңызбен бөлісу: