Using DllCall in AutoIt given you enormous power to extend the functionality of AutoIt. It allows you to implement almost everyting in AutoIt that you can implement in C++.
However, one of the most difficult things when working with DllCall is to know how to type the variables that you pass to DllCall.
The table below show how to convert C++ and Windows API types to AutoIt types:
| C++ | 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 |
| wchar_t | str* |
| PBYTE | struct* (pointer to a struct created with StructCreate(byte[xxx]) ) |
| NCRYPT_PROV_HANDLE | handle |
| &NCRYPT_PROV_HANDLE | handle* |
| LPCWSTR wchar_t |
wstr* |