* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Вызов функций Windows API
8 февраля 2009

После появления .NET Framework возможность напрямую работать с встроенными
функциями операционной системы уже не так важна, как раньше. Для ключевых
функций Windows API созданы оболочки в виде .NET-классов. обеспечивающие
контроль типов и исключающие ошибки при вызове функций ОС.
Тем не менее время от времени вызывать неуправляемые функции все же при-
ходится. Для импорта встроенных функций ОС служит ключевое слово Declare (в
Visual Basic .NET) и атрибут DHImportAttribute (в Visual C#). Импортированную фун-
кцию можно использовать в своем приложении, как обычную. Например, объявить
функцию Windows API Beep:
Visual Basic .NET
Private Declare Function Beep Lib "kerne!32" (ByVal dwFreq As
Integer, ByVal dwDuration As Integer) As Integer
Visual C#
[System. Runtime.InteropServices.DllI[Hport("kernel32")]
private static extern int Beep(int dwFreq, int dwDuration);
Это объявление включает модификатор доступа (Private или private), определяю-
щий уровень доступа к этой функции в приложении. В Visual Basic .NET внешнюю
функцию указывают с помощью ключевого слова Declare, а в Visual C# — с помо-
щью ключевых слов static и extern (для объявления функций API необходимы оба
этих слова). В Visual C# любую внешнюю функцию необходимо предварять атрибу-
том Dill'троп'Attribute, указывающим имя библиотеки, в которой находится импор-
тируемая функция. В Visual Basic .NET имя DLL задают в виде строки после ключе-
вого слова Lib. Объявление также включает имя функции (в данном случае Веер),
под которым она существует в DLL (это имя чувствительно к регистру). Кроме того,
сигнатура и тип возвращаемого значения у внешней и внутренней функций долж-
ны быть идентичными.
Примечание В Visual Basic .NET имена многих типов изменились по сравнению с
Visual Basic 6 (например, прежний тип Long теперь стал Integer) — не забывайте об
этом при объявлении внешних функций.
Внешнюю функцию разрешается вызвать, как обычную функцию.
> Как объявить внешнюю функцию на Visual Basic .NET
Для этого применяют ключевое слово Declare. Ключевое слово Lib указывает DLL,
из которой импортируют функцию, имя и сигнатура этой функции должны быть
полностью идентичными таковым внешней функции.
> Как объявить внешнюю функцию на Visual C#
Воспользуйтесь атрибутом DlllmportAttribute из пространства имен System.Runtime.InteropServices,
чтобы указать DLL, откуда импортируется функция. В объявлении
функции необходимы ключевые слова static и extern, а ее имя и сигнатура должны
быть идентичными таковым внешней функции.

Теги: .NET

Статьи по теме:

Массивы
Делегаты
Установка и извлечение динамических свойств вручную
Специальные возможности и элементы управления Windows Forms
Декларативная защита по правам доступа к коду
Создание обработчика для группы событий
Работа с фокусом ввода
Towards Cleaner Code II, a C# GUI Invoke/Async Helper
Редактор файловой системы
Применение элемента управления PrintPreviewControl
Сборщик мусора
Изменение меню во время выполнения
Добавление формы к проекту
Замыкания (closure)
Отображение текста
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Вызов функций Windows API. Регион сайта: Москва и Санкт-Петербург