Функция DllCallAddress

         Описание функции


DllCallAddress

Динамически вызывает функцию по указанному адресу памяти.

Внимание: Это расширенная функция. Неправильное использование этой функции может привести к краху AutoIt. Перед использованием этой функции убедитесь, что DllCall() не делает то, что вам нужно.

DllCallAddress ( "return type", address [, type1, param1 [, type n, param n ]] )

Параметры

return type Тип возвращаемого значения функции (смотрите ниже).
address Адрес функции. Если это значение будет неверным ваш скрипт завершится крахом!
type1 [необязательный] Тип параметра (смотрите примечания).
param1 [необязательный] Значение параметра (смотрите примечания).
type n [необязательный] Тип n-ого параметра (смотрите примечания).
param n [необязательный] Значение n-ого параметра (смотрите примечания).


Допустимые типы:

Тип Описание
none нет значения (только для возвращения типа параметра - эквивалентно void в C)
BYTE беззнаковое 8 битное целое
BOOLEAN беззнаковое 8 битное целое
short 16 битное целое
USHORT беззнаковое 16 битное целое
WORD беззнаковое 16 битное целое
int 32 битное целое
long 32 битное целое
BOOL 32 битное целое
UINT беззнаковое 32 битное целое
ULONG беззнаковое 32 битное целое
DWORD беззнаковое 32 битное целое
INT64 64 битное целое
UINT64 беззнаковое 64 битное целое
ptr общий указатель (void *)
HWND дескриптор окна (pointer)
HANDLE дескриптор (pointer)
float число одинарной точности с плавающей точкой
double число двойной точности с плавающей точкой
INT_PTR, LONG_PTR, LRESULT, LPARAM большое целое число, достаточное для хранения указателя при запуске x86 или x64 версии AutoIt.
UINT_PTR, ULONG_PTR, DWORD_PTR, WPARAM беззнаковое большое целое число, достаточное для хранения указателя при запуске x86 или x64 версии AutoIt.
str ANSI строка (минимум выделяется 65536 символа).
wstr UNICODE широкий символ строки (минимум выделяется 65536 символа).
struct Структура созданная функцией DllStructCreate()
* Добавьте * в конце другого типа, чтобы передать его ссылкой. Например "int*" передает указатель на тип "int".



Преобразование типов "Windows API" в тип AutoIt:

Типы в WINDOWS API Типы в AutoIt
LPCSTR/LPSTR str
LPCWSTR/LPWSTR wstr
LPVOID ptr
LPxyz xyz*
HINSTANCE handle
HRESULT long
LONGLONG/LARGE_INTEGER INT64
ULONGLONG/ULARGE_INTEGER UINT64
SIZE_T ULONG_PTR

Для использования вложенных структур внутри структуры необходимо заново определить вложенную структуру. Например, структура, содержащая две POINT структуры ("long;long") должна быть объявлена как "long;long;long;long". Первые два long значения соответствуют первой POINT структуре, а вторые два значения соответствуют второй POINT структуре.

Подробности типов "Windows API" смотрите MSDN.

Возвращаемое значение

Успех:@error = 0.
Ошибка:Устанавливает @error
@error:2 неизвестный возвращаемый тип (return type).
4 неверное количество параметров.
5 неверный параметр.
See remarks.

Примечания

По умолчанию, AutoIt использует метод вызова 'stdcall'. Для использования метода 'cdecl' вставьте ':cdecl' после возвращаемого типа.

Если вызов функции вызвал сбой, то @error устанавливается не равным нулю. Иначе возвращается массив, который содержит возвращаемое функцией значение и копирует все параметры (включая параметры, которые функция может изменить при передаче ссылок).
$return[0] = возвращаемое значение функции
$return[1] = параметр_1
$return[2] = параметр_2
...
$return[n] = параметр_n

См. также

DllCall, DllCallbackFree, DllCallbackGetPtr, DllCallbackRegister, DllOpen, DllClose, DllStructCreate, DllStructGetPtr