|
DllCallAddress
Динамически вызывает функцию по указанному адресу памяти.
Параметры
| 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 неверный параметр. |
Примечания
По умолчанию, AutoIt использует метод вызова 'stdcall'. Для использования метода 'cdecl' вставьте ':cdecl' после возвращаемого типа.
Если вызов функции вызвал сбой, то @error устанавливается не равным нулю. Иначе возвращается массив, который содержит возвращаемое функцией значение и копирует все параметры (включая параметры, которые функция может изменить при передаче ссылок).
$return[0] = возвращаемое значение функции
$return[1] = параметр_1
$return[2] = параметр_2
...
$return[n] = параметр_n
См. также
DllCall, DllCallbackFree, DllCallbackGetPtr, DllCallbackRegister, DllOpen, DllClose, DllStructCreate, DllStructGetPtr
Источник: http://dayzev.ucoz.ru/
|