20168

Использование функций WinAPI

Лекция

Информатика, кибернетика и программирование

DECLARE DLL Регистрирует функцию во внешней 32разрядной библиотеке динамических связей Windows . Чтобы удалить зарегистрированные функции из памяти выдайте команду CLEAR ALL или CLEAR DLLS.

Русский

2013-07-25

32.5 KB

16 чел.

ПРИМЕРЫ.

1. Использование функций WinAPI.

.dll – библиотеки интерфейса прикладного программирования (Application Program Interface). Библиотеки API-программ расширяют возможности языка и пользовательского интерфейса. Открыв внешнюю библиотеку API, вы можете пользоваться API-функциями точно также, как функциями VFP. С помощью команды Display Status или LIST STATUS можно отобразить список имеющихся в библиотеке функций.

DECLARE –DLL - Регистрирует функцию во внешней 32-разрядной библиотеке динамических связей Windows (.DLL).

Синтаксис:

DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName]

[cParamType1 [@] ParamName1,

 cParamType2 [@] ParamName2, ...]

Параметры:

cFunctionType

Указывает, имеет ли 32-разрядная .DLL-функция системы Windows возвращаемое значение. Аргумент cFunctionType включается, если функция имеет возвращаемое значение; в противном случае cFunctionType опускается.

cFunctionType может принимать следующие значения:

cFunctionType Описание

SHORT 16-разрядное целое число

INTEGER 32-разрядное целое число

SINGLE 32-разрядное число с плавающей запятой

DOUBLE 64-разрядное число с плавающей запятой

STRING Символьная строка

FunctionName

Задает имя 32-разрядной .DLL-функции Windows для регистрации в Visual FoxPro. Обратите внимание: в имени FunctionName важен регистр символов.

Имя 32-разрядной .DLL-функции Windows может отличаться от описания в документе Win32 API. Например, функцию MessageBox следует назвать MessageBoxA (для однобайтных символов) или MessageBoxW (для UNICODE). Если Visual FoxPro не может найти 32-разрядную .DLL-функцию Windows, заданную аргументом FunctionName, к концу имени функции присоединяется буква A, и Visual FoxPro повторяет поиск, используя новое имя.

Если имя заданной 32-разрядной .DLL-функции Windows совпадает с именем функции Visual FoxPro или является недопустимым именем Visual FoxPro, включите имя 32-разрядной .DLL-функции Windows в качестве FunctionName и присвойте этой функции допустимое имя Visual FoxPro с помощью предложения AS, описанного ниже.

IN LibraryName

Задает имя внешней библиотеки .DLL в Windows, которая содержит 32-разрядную .DLL-функцию Windows ѕ FunctionName. Если задать WIN32API в качестве LibraryName, Visual FoxPro ищет 32-разрядную .DLL-функцию Windows в библиотеках KERNEL32.DLL, GDI32.DLL, USER32.DLL, MPR.DLL и ADVAPI32.DLL.

AS AliasName

Задает псевдоним для имени 32-разрядной .DLL-функции Windows, которое совпадает с именем некоторой функции Visual FoxPro или является недопустимым именем Visual FoxPro. В качестве AliasName нельзя использовать зарезервированное слово Visual FoxPro или имя 32-разрядной .DLL-функции Windows, уже зарегистрированное в Visual FoxPro.

Пользуйтесь псевдонимом AliasName для вызова 32-разрядной .DLL-функции Windows. В AliasName несущественен регистр символов.

cParameterType1 [@] ParamName1, cParameterType2 [@] ParamName2, ...

Задает типы параметров, передаваемых в 32-разрядную .DLL-функцию Windows.

Аргумент cParameterType является обязательным; он задает тип параметра, ожидаемый 32-разрядной .DLL-функцией Windows. cParameterType может принимать одно из следующих значений:

cParameterType Описание

INTEGER 32-разрядное целое число

SINGLE 32-разрядное число с плавающей запятой

DOUBLE 64-разрядное число с плавающей запятой

STRING Символьная строка

Если параметры не принадлежат типу, ожидаемому 32-разрядной .DLL-функцией Windows, Visual FoxPro генерирует ошибку. Неопределенное значение может быть передано как символьная строка.

Чтобы при вызове функции передать параметр по ссылке, в данной команде после параметра cParameterType и в вызывающей функции перед соответствующей переменной нужно поставить символ @. Если не поставить @ в команде DECLARE и/или в вызывающей функции, параметр будет передан по значению. О .DLL-функциях, требующих включения @ для передачи параметров по ссылке, см. документ Microsoft Win32 Programmer's Guide.

Замечание  Имена параметров ParamName1, ParamName2 и т.д. не являются обязательными и не используются в Visual FoxPro или в 32-разрядной .DLL-функции Windows. Их можно задать для напоминания о том, какие имена и типы параметров получает функция.

Комментарии

Перед тем, как вызывать 32-разрядную .DLL-функцию Windows из Visual FoxPro, необходимо выдать команду DECLARE с именем этой функции, именем содержащей ее библиотеки .DLL и типами параметров, которые функция ожидает получить.

Чтобы отобразить имена зарегистрированных функций, выдайте команду DISPLAY STATUS или LIST STATUS. Чтобы удалить зарегистрированные функции из памяти, выдайте команду CLEAR ALL или CLEAR DLLS.

ПРИМЕР: Пользователь запускает программу и набирает пароль (МАША – регистр русский). Ответ ему- пароль неверный. Приходится сначала переключиться в английский регистр, а затем снова набрать пароль. Избежать этого можно, если использовать следующую процедуру. Вызываться она может, например, в методе Activate формы.

DECLARE SHORT GetKeyboardLayoutName IN user32.dll STRING @lpr

lpr = ‘  ’

= GetKeyboardLayoutName(@lpr)

DECLARE SHORT ActivateKeyboardLayout IN user32.dll INTEGER HKL, INTEGER flags

if not ‘419’ $lpr

=ActivateKeyboardLayout(1,0)

endif


 

А также другие работы, которые могут Вас заинтересовать

25678. Спинной мозг 40 KB
  На периферии спинного мозга располагается более светлое белое вещество. В процессе развития спинного мозга из нервной трубки образуются нейроны группирующиеся в 10 слоях или в пластинах пластины Рекседа. Такое деление на пластины дополняет организацию структуры серого вещества спинного мозга основывающейся на локализации ядер. Серое вещество спинного мозга состоит из тел нейронов безмиелиновых и тонких миелиновых волокон и нейроглии.
25679. центральный орган лимфо. 45.5 KB
  Из костномозговых предшественников Тлимфоцитов в нем происходит антигеннезависимая дифференцировка их в Тлимфоциты разновидности которых осуществляют реакции клеточного иммунитета и регулируют реакции гуморального иммунитета. Удаление тимуса тимэктомия у новорожденных животных вызывает резкое угнетение пролиферации лимфоцитов во всех лимфатических узелках кроветворных органов исчезновение малых лимфоцитов из крови резкое уменьшение количества лейкоцитов и другие характерные признаки атрофия органов кровоизлияния и пр. На 1112...
25680. Ткань 34 KB
  Эпителиальная ткань образует кожные покровы и выстилает изнутри полые внутренние органы выполняя защитную функцию функцию обмена веществ между организмом и внешней средой. Соединительная ткань состоит из клеток и неклеточного вещества с преобладанием последнего. В эту группу входят: собственно соединительная ткань костная жировая а также хрящ сухожилия связки кровь и лимфа. Хрящ состоит из разнообразных плотных волокон и клеток вместе с костной тканью придает прочность позвоночнику и другим частям скелета.
25681. Толстая кишка 38.5 KB
  Одной из функций толстой кишки является выделительная. Через слизистую оболочку этой кишки выделяется ряд веществ например кальций магний фосфаты соли тяжелых металлов и т. Эпителий ободочной кишки и тазовой части прямой кишки развивается из энтодермы. В кожной и промежуточной зонах анальной части прямой кишки эпителий имеет эктодермальное происхождение.
25682. Тонкая кишка 57.5 KB
  Клетки кишечного эпителия у 4недельного эмбриона не дифференцированы и характеризуются высокой пролиферативной активностью. В это время среди эндокриноцитов преобладают переходные клетки с недифференцированными гранулами выявляются ЕСклетки Gклетки и Sклетки. В плодном периоде преобладают ЕСклетки большинство из которых не сообщается с просветом крипт закрытый тип; в более позднем плодном периоде появляется открытый тип клеток. Крипты содержат камбиальные элементы эпителия и дифференцирующиеся из них клетки.
25683. солевом обмене веществ. 44.5 KB
  Кроме того эти ткани принимают участие в водносолевом обмене веществ. Хрящевые ткани входят в состав органов дыхательной системы суставов межпозвоночных дисков и др. В свежей хрящевой ткани содержится около 7080 воды 1015 органических веществ и 47 солей.
25684. Эмбриогенез 239.5 KB
  Вместе с тем появляются особенности отличающие развитие человека от развития других представителей позвоночных. Процесс внутриутробного развития зародыша человека продолжается в среднем 280сут 10 лунных месяцев. Эмбриональное развитие человека принято делить на 3 периода: начальный 1я неделя зародышевый 2 8я неделя плодный с 9й недели развития до рождения ребенка.
25685. Эпителиальные ткани. Поверхностные эпителии 36 KB
  Питание эпителиоцитов осуществляется диффузно через базальную мембрану со стороны подлежащей соединительной ткани с которой эпителий находится в тесном взаимодействии. В соответствии с формой клеток составляющих однослойный эпителий последние подразделяются на плоские сквамозные кубические и призматические столбчатые. 1Однослойный эпителий может быть однорядным и многорядным. Такой эпителий называют еще изоморфным.
25686. Яички 60 KB
  В постнатальном периоде в семенных канальцах гоноциты размножаются а эпителий половых шнуров сохраняется в качестве поддерживающих клеток. Базальный слой внутренний волокнистый слой расположенный между двумя базальными мембранами сперматогенного эпителия и миоидных клеток состоит из сети коллагеновых волокон. Непосредственно к миоидному слою примыкает неклеточный слой образованный базальной мембраной миоидных клеток и коллагеновыми волокнами. За ними расположен слой состоящий из фибробластоподобных клеток прилежащий к базальной...