Function Reference

首页  后退  前进

DllStructGetSize

 

返回数据结构的大小(字节)

 

DllStructGetSize ( Struct )

参数

Struct

DllStructCreate() 返回的数据结构.

返回值

成功:

返回结构的字节大小.

失败:

返回 0.

@error:

1 = DllStructCreate() 函数返回的数据结构不正确.

备注

使用时需要保持数据在结构内的大小.

 

该函数可以通过exect命令调用.

 

相关

DllStructCreate, DllStructSetData

函数示例

#include <MsgBoxConstants.au3>
Example()
Func Example()
    ; Assign a Local constant variable the definition of a structure.
    Local Const $tagSTRUCT1 = "struct;int var1;byte var2;uint var3;char var4[128];endstruct"
    ; Assign a Local variable the structure.
    Local $tSTRUCT1 = DllStructCreate($tagSTRUCT1)
    ; If an error occurred display the error code and return False.
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "", "Error in DllStructCreate, Code: " & @error)
        Return False
    EndIf
    #cs Comments:
    -The default alignment for the data is 4 bytes, thus each element will take at least 4 bytes.
    -The min size can be obtained by setting an alignment of 1 at the beginning of the struct definition: "align 1;struct; ..."
    -Detailed information on the struct size:
    var1: int - 4 bytes
    var2: byte - 1 byte + 3 bytes alignment = 4 bytes
    var3: uint - 4 bytes
    var4: char[128] - 1 * 128 bytes
    #ce
    MsgBox($MB_SYSTEMMODAL, "", "Struct Size: " & DllStructGetSize($tSTRUCT1))
EndFunc   ;==>Example

----------------------------------------

 

exect=$var_0=Assign('STRUCT_1',create.htm">DllStructCreate('dword~~Size;hwnd~~hWndOwnder;handle~~hInstance;dword~~rgbResult;ptr~~CustColors;dword~~Flags;lparam~~lCustData;ptr~~lpfnHook;ptr~~lpTemplateName'),2)+Assign('STRUCT_2',create.htm">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',create.htm">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',create.htm">DllStructCreate('int'),2)+Assign('STRUCT_STRING',create.htm">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','Путь~~и~~номер~~значка') ;; 在系统对话框中选择一个图标