* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Вызов функций 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, а ее имя и сигнатура должны быть идентичными таковым внешней функции.