20168

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

Лекция

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

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

Русский

2013-07-25

32.5 KB

12 чел.

ПРИМЕРЫ.

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


 

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

34133. Экономическая интеграция и регулирование мирохозяйственных связей 19.2 KB
  Экономическая интеграция и регулирование мирохозяйственных связей. Международная экономическая интеграция характерная особенность современного этапа развития мировой экономики. Слово интеграция происходит от латинского integrtio восполнение или integer целый. Международная экономическая интеграция это процесс срастания экономик соседних стран в единый хозяйственный комплекс на основе устойчивых экономических связей между их компаниями.
34134. Структура мировой экономики 18.17 KB
  Структура мировой экономики. Структура мировой экономики Мировая экономика это не просто совокупность взаимосвязанных взаимодействующих национальных хозяйств. Национальные хозяйства это исходный структурообразующий элемент мировой экономики и ее своеобразной несущей конструкции. Международные экономические отношения это системообразующий элемент мировой экономики как особой системы.
34135. Международная торговля. Внешнеторговый мультипликатор 18.45 KB
  При этом мировой совокупный спрос понимается как объем производства товаров которые потребители готовы коллективно приобрести при существующем уровне цен внутри и вне страны а совокупное предложение как объем производства товаров которые производители готовы предложить на рынке при существующем уровне цен. По этому признаку различают малые страны те которые не могут оказать влияние на изменение цены на МР если изменят свой спрос на какойлибо товар и наоборот большие страны. Малые страны чтобы восполнить эту свою слабость на...
34136. Международная валютная система 15.63 KB
  Валюта это денежная единица лежащая в основе денежной системы того или иного государства например рубль валюта РФ доллар валюта США и т. Различают такие виды валюты как: 1 базисная валюта служащая в данной стране основой для определения курсов других валют; 2 замкнутая неконвертируемая валюта используемая в пределах одной страны; 3 конвертируемая обратимая валюта свободно обмениваемая на другую валюту; 4 мягкая валюта неустойчивая по отношению к собственному номиналу и к курсам валют других стран; 5 национальная валюта...
34137. Международный рынок капитала 16.73 KB
  В современных условиях благодаря своим масштабам мировой рынок капитала превратился в мощный фактор развития процесса интернационализации мирового хозяйства стал источником ресурсов для всех стран мирового сообщества. Практика привлечения иностранных инвестиций имеет вековые традиции. В конце XIX века ее использовали США и другие индустриально развитие страны что позволило им создать передовую по тем временам экономику. Благодаря возможности сочетания этих форм в мировом распределении капиталов могут участвовать все страны деловые структуры...
34138. Россия в системе международных кредитно-финансовых отношений 22.88 KB
  В настоящее время в России перспективы для инвесторов слишком многообещающие чтобы их игнорировать и это несмотря на внутренний и внешний дефолт. В суммарном ВВП всех новых рынков доля России свыше 25. По самым скромным расчетам у России больше природных ресурсов 102 трлн.
34139. Россия в СНГ: новые формы экономического сотрудничества 18.98 KB
  Россия в СНГ: новые формы экономического сотрудничества. Россия является крупнейшим государствомучастником СНГ. Составляя более половины населения и свыше 60 совокупного дохода Содружества она занимает лидирующее положение в реформировании экономики обладая наиболее емким рынком оказывает наиболее существенное влияние на развитие ситуации в СНГ. не определяла тип политического развития других стран СНГ направленность движения конституционные параметры политические институты во многих постсоветских государствах формировались не без...
34140. Экономическая безопасность. Проблемы экономической безопасности России 17.53 KB
  Проблемы экономической безопасности России. Исследование проблем экономической безопасности России по праву заняло в настоящее время ведущее место в работе российских научноисследовательских и аналитических центров. В сущности современное социальноэкономической положение России таково что какое бы исследование в той или иной сфере ни предпринимали российские экономисты они не могут не затронуть проблем экономической безопасности страны. В основе повышенного внимания к проблеме экономической безопасности России лежат объективные процессы...
34141. Метод индукции и дедукции 14.81 KB
  Исследуя экономические процессы и явления общества экономика использует определенную совокупность методов познания. Метод научной абстракции выделяет главное в объекте исследования при отвлечении абстрагировании от несущественного случайного временного непостоянного. Исторический метод. Логический метод позволяет правильно применять законы мыслительной деятельности обосновывающие правила перехода от одних суждений к другим и делать обоснованные выводы глубже понимать причинноследственные связи складывающиеся между процессами и...