20168

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

Лекция

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

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

Русский

2013-07-25

32.5 KB

13 чел.

ПРИМЕРЫ.

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


 

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

35280. Тема: Використання покажчиків для роботи з функціями Ціль роботи: виробити практичні навички в написанні п 56.5 KB
  Використовувати покажчики для виклику відповідних функцій.Чи можна використовувати покажчики для передачі даних у функції 2.Чи можна використовувати покажчики для роботи з функціями різного типу 7.Як використовувати покажчики для виклику функції 10.
35281. Тема: Розробка програм з використанням класів Ціль роботи: вивчити синтаксичні конструкції для оголошення. 66.5 KB
  Відповідно до індивідуального завдання розробити структуру класу зробити визначення функційчленів класу clss розробити алгоритм використання об'єктів і покажчиків на об'єкти класу для доступу до даних і функцій членам. Перевірити можливість доступу до членів класу в розділах privte public protected.Дайте визначення поняттям: об'єкт клас данчлени класу функціїчлени класу.У чому відмінність між класом і об'єктом класу 3.
35282. Тема: Використання конструкторів і деструкторів Ціль роботи: вивчити і навчитися використовувати механізм. 64.5 KB
  Лабораторна робота № 31 Тема: Використання конструкторів і деструкторів Ціль роботи: вивчити і навчитися використовувати механізм роботи з конструкторами і деструкторами. Відповідно до індивідуального завдання для попередньої лабораторної роботи розробити конструктори і деструктор для заданого класу. Здійснити ініціалізацію об'єктів класу різними конструкторами. 7 Базовий клас Похідний клас Похідний клас транспортний засіб літак дельтоплан Контрольні запитання Навіщо використовуються конструктори і деструктори Яке ім'я має конструктор і...
35283. Використання спадкування для створення ієрархії класів 71.5 KB
  Відповідно до індивідуального завдання розробити структуру базового класу і спадкоємців не менш 3х похідних класів на двох рівнях ієрархії.Скільки базових класів може бути в похідного класу 6.Чи можна задавати специфікатори для базових класів при спадкуванні оголошення довільного класу 8.Як змінюється доступ до елементів базового класу при спадкуванні з різними специфікаторами доступу: з розділів класу із програми з інших класів 9.
35284. Використання віртуальних і покажчиків для роботи з обєктами класів 60.5 KB
  Відповідно до індивідуального завдання на базі лабораторної роботи №22 розробити алгоритм роботи з обєктами базових і похідних класів з використанням покажчиків на базові і похідні класи. 3.При необхідності довести ієрархію класів до 3-4-х рівнів.
35285. Тема. Побудова багаточлена Лагранжа. 43 KB
  Побудова багаточлена Лагранжа. Навчитися будувати багаточлен Лагранжа скласти програму. Індивідуальне завдання Знайти наближене значення функції при даному значенні аргументу за допомогою інтерполяційного багаточлена Лагранжа. Що називають вузлами інтерполяції і як вони Яка ідея методу інтерполяції за допомогою багаточлена Лагранжа.
35286. Анализ медико-демографических показателей и оценка оказания медицинской помощи населению Тарусского Н-ской области за 2009 год 359 KB
  Население Тарусского района Н-ской области в данном году 87500, в том числе женщин в возрасте 15-49 лет – 25300. В райцентре в городе Таруссе проживает 36500. Остальное население в районе – сельское.
35287. Тема. Формули Нютона через кінцеві різниці Мета. 65.5 KB
  Формули Нютона через кінцеві різниці Мета. Навчитися обчислити значення функції при даному значенні аргумента використовуючи формули Нютона через кінцеві різниці. Індивідуальна робота x y 0115 865729 0120 829329 0125 795829 0130 764893 0135 736235 0140 709613 0145 684815 0150 661659 0155 639986 0160 619658 0165 600551 0170 582558 0175 565583 0180 549543 № варіанта х1 х2 16 01168 01745 Контрольні питання: Дати визначення кінцевої різниці 1го кго порядку Поставте задачу інтерполяції функції Запишіть...
35288. Организационно-экономическая характеристика организации 720 KB
  Основная цель анализа – выявление и оценка тенденций развития финансовых процессов на предприятии. Менеджеру эта информация необходима для разработки адекватных управленческих решений по снижению риска и повышению доходности финансово-экономической