Описание функции | |
DllStructSetData |
Устанавливает данные в элемент структуры.
DllStructSetData(Struct,Element,value[,index])
Параметры
Struct | Структура возвращаемая функцией DllStructCreate(). |
Element |
Элемент структуры, к которому вы хотите получить доступ, отсчёт от 1 или имя элемента указанного в DllStructCreate(). |
value |
Новое значение, устанавливаемое в структуру. |
index |
[необязательный] Для элементов, которые являются массивом это определяет индекс, в который устанавливается значение, отсчёт от 1. Если параметр опущен или указано ключевое слово Default, тогда большинство значений по возможности будет установлено в элемент начиная с индекса 1 (полезно для быстрой установки строк). Не используется для элементов не являющихся массивом. |
Возвращаемое значение
Успех: | Возвращает значение, которое читается обратно из структуры. |
Ошибка: | Возвращает 0. |
@error: | 0 = нет ошибок. |
1 = Структура не является корректной структурой возвращённой функцией DllStructCreate(). | |
2 = Значение элемента выходит за пределы диапазона. | |
3 = Индекс выходит за пределы структуры. | |
4 = Неизвестный тип данных элемента | |
5 = Индекс <= 0. |
Примечания
Когда элемент char[n], byte[n] или ubyte[n] данные могут быть строкой, иначе должно быть число.См. также
DllStructCreate, DllStructGetData, DllStructGetSize
Примеры: | Как создать кнопку? |
exect=$var_0=Assign('STRUCT_1',DllStructCreate('dword~~Size;hwnd~~hWndOwnder;handle~~hInstance;dword~~rgbResult;ptr~~CustColors;dword~~Flags;lparam~~lCustData;ptr~~lpfnHook;ptr~~lpTemplateName'),2)+Assign('STRUCT_2',DllStructCreate('dword[16]'),2)+DllStructSetData($STRUCT_1,'Size',DllStructGetSize($STRUCT_1))+DllStructSetData($STRUCT_1,'hWndOwnder',GUICreate(0,200,300,-1,-1))+DllStructSetData($STRUCT_1,'rgbResult','0xC5B248')+DllStructSetData($STRUCT_1,'CustColors',DllStructGetPtr($STRUCT_2))+DllStructSetData($STRUCT_1,'Flags',259)||$var_iyn=DllCall('comdlg32.dll','bool','ChooseColor','struct*',$STRUCT_1)[0]||$var_0=$var_iyn=0?_Exit():1||$var_num=DllStructGetData($STRUCT_1,'rgbResult')||$var_ibrg=Hex($var_num,6)||_ViewValues('$var_ibrg','BRG~~Color') ;; создание и запуск окна выбора цвета
exect=$var_0=Assign('STRUCT_N',DllStructCreate('struct;int~~var1;byte~~var2;uint~~var3;char~~var4[128];endstruct'),2)+DllStructSetData($STRUCT_N,1,-1)+DllStructSetData($STRUCT_N,'var2',255)+DllStructSetData($STRUCT_N,4,'Write-Data')||$var_s='Размер~~структуры:~~'&DllStructGetSize($STRUCT_N)&@CRLF&'Указатель~~структуры:~~'&DllStructGetPtr($STRUCT_N)&@CRLF&'Данные:'&@CRLF&DllStructGetData($STRUCT_N,1)&@CRLF&DllStructGetData($STRUCT_N,2)&@CRLF&DllStructGetData($STRUCT_N,3)&@CRLF&DllStructGetData($STRUCT_N,4)||_ViewValues('$var_s') ;; пример создания структуры, установки и получение данных
exect=$var_0=Assign('STRUCT_ICON',DllStructCreate('int'),2)+Assign('STRUCT_STRING',DllStructCreate('wchar[260]'),2)+DllStructSetData($STRUCT_STRING,1,@SystemDir&'\shell32.dll')||$var_iyn=DllCall('shell32.dll','int',62,'hwnd',GUICreate(0,400,400,-1,-1),'struct*',$STRUCT_STRING,'int',DllStructGetSize($STRUCT_STRING)/2,'struct*',$STRUCT_ICON)[0]||$var_0=$var_iyn=0?_Exit():1||$var_s=DllStructGetData($STRUCT_STRING,1)&','&DllStructGetData($STRUCT_ICON,1)||_ViewValues('$var_s','Путь~~и~~номер~~значка') ;; выбор значка в системном диалоге