Global $DlgStructInfo , $DlgStNu = 0 ;Resource File Formats ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms648007%28v=vs.85%29.aspx ;DLGTEMPLATE structure ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms645394%28v=vs.85%29.aspx ;DLGITEMTEMPLATE structure ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms644997%28v=vs.85%29.aspx ;Dialog Box Resources ;A dialog box is also one resource entry in the resource file. It consists of one ;DLGTEMPLATE dialog box header structure plus one DLGITEMTEMPLATE structure for each ;control in the dialog box. The DLGTEMPLATEEX and the DLGITEMTEMPLATEEX structures ;describe the format of extended dialog box resources. $iDlgStruct = CreateDlgStruct("Dlg",10,10,100,100) ;Dlg ==> Gui Name $Id1 = AddCtrlToDlgStruct($iDlgStruct,"Button","Button1",10,10,30,30,1342177281,0) ;Button Class $Id2 = AddCtrlToDlgStruct($iDlgStruct,"Button","Button2",10,50,30,30,1342177281,0) ;Button Class SetDlgOptions($iDlgStruct,"Microsoft Sans Serif",10,700,False,False,False,False,0xFF0000);Color 0xFF0000 SetDlgCtrlOptions($iDlgStruct,$Id1,"Microsoft Sans Serif",15,700,False,True,False,False) SetDlgCtrlOptions($iDlgStruct,$Id2,"Microsoft Sans Serif",13,700,False,False,True,False) DlgStructToResAutoitScriptCode($iDlgStruct,@ScriptDir & "\ResDlg") DlgStructToBinaryAutoitScriptCode($iDlgStruct,@ScriptDir & "\BinaryDlg") Func CreateDlgStruct($Title,$L,$T,$W,$H,$Style = -1,$ExStyle = -1) Local $tagDlgStruct ,$DlgStruct $tagDlgStruct = "INT DlgStNu;DWORD style;DWORD dwExtendedStyle;WORD cdit;" & _ "short x;short y;short cx;short cy;short menu;short windowClass;" & _ "WCHAR title[" & (StringLen($Title) + 1) & "];INT OptionsOfset" $DlgStruct = DllStructCreate($tagDlgStruct) if @error Then Return SetError(1,0,0) if ($Style = -1) Then $Style = 0x00CF0000 ; $WS_OVERLAPPEDWINDOW if ($ExStyle = -1) Then $ExStyle = 0 $DlgStNu += 1 DllStructSetData($DlgStruct,1,$DlgStNu) ;Dlg St Number DllStructSetData($DlgStruct,2,$Style) DllStructSetData($DlgStruct,3,$ExStyle) DllStructSetData($DlgStruct,4,0) DllStructSetData($DlgStruct,5,$L) DllStructSetData($DlgStruct,6,$T) DllStructSetData($DlgStruct,7,$W) DllStructSetData($DlgStruct,8,$H) DllStructSetData($DlgStruct,9,0) DllStructSetData($DlgStruct,10,0) DllStructSetData($DlgStruct,11,$Title) DllStructSetData($DlgStruct,12,DllStructGetSize($DlgStruct) - 4) ;4 ==> Size Of int OptionsOfset DlgStructToByteStruct($DlgStruct) if Not IsArray($DlgStructInfo) Then Dim $pDlgStructInfo[1][5] $DlgStructInfo = $pDlgStructInfo Else ReDim $DlgStructInfo[UBound($DlgStructInfo) + 1][5] EndIf $DlgStructInfo[UBound($DlgStructInfo) - 1][0] = $DlgStNu $DlgStructInfo[UBound($DlgStructInfo) - 1][1] = "Global $IDD_Dialog" & $DlgStNu & " = " & $DlgStNu & @CRLF $DlgStructInfo[UBound($DlgStructInfo) - 1][2] = "$IDD_Dialog" & $DlgStNu $DlgStructInfo[UBound($DlgStructInfo) - 1][3] = "Dialog" $DlgStructInfo[UBound($DlgStructInfo) - 1][4] = $DlgStNu Return SetError(0,0,$DlgStruct) EndFunc Func AddCtrlToDlgStruct(ByRef $DlgStruct,$StrCtrlClass,$Text,$L,$T,$W,$H,$Style,$ExStyle) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,0) $OptionsStruct = RemoveOptionsData($DlgStruct) if @error Then Return SetError(2,0,0) Local $SizeOfDlgStruct , $tagDlgStructItem , $pDlgStruct , $StructNumber Local $CLen = StringLen($StrCtrlClass) + 1 , $TLen = StringLen($Text) + 1 $SizeOfDlgStruct = DllStructGetSize($DlgStruct) $tagDlgStructItem = "INT DlgStNu;BYTE DlgStruct[" & $SizeOfDlgStruct - 4 & "];DWORD style;" & _ "DWORD dwExtendedStyle;short x;short y;short cx;short cy;WORD id;WCHAR Class["& $CLen &"];" & _ "WCHAR Text[" & $TLen & "];WORD extraCount" $pDlgStruct = DllStructCreate($tagDlgStructItem) if @error Then Return SetError(3,0,0) MoveMemory(DllStructGetPtr($DlgStruct),DllStructGetPtr($pDlgStruct),$SizeOfDlgStruct) $StructNumber = DllStructGetData($pDlgStruct,1) $Cdit = AddOneToCdit($pDlgStruct) if @error Then Return SetError(4,0,0) DllStructSetData($pDlgStruct,3,$Style) DllStructSetData($pDlgStruct,4,$ExStyle) DllStructSetData($pDlgStruct,5,$L) DllStructSetData($pDlgStruct,6,$T) DllStructSetData($pDlgStruct,7,$W) DllStructSetData($pDlgStruct,8,$H) DllStructSetData($pDlgStruct,9,$Cdit) DllStructSetData($pDlgStruct,10,$StrCtrlClass) DllStructSetData($pDlgStruct,11,$Text) DllStructSetData($pDlgStruct,12,0) $DlgStruct = $pDlgStruct DlgStructToByteStruct($DlgStruct) AddOptionsData($DlgStruct,$OptionsStruct) if @error Then Return SetError(5,0,0) ReDim $DlgStructInfo[UBound($DlgStructInfo) + 1][5] $DlgStructInfo[UBound($DlgStructInfo) - 1][0] = $StructNumber $DlgStructInfo[UBound($DlgStructInfo) - 1][1] = _ "Global $Dlg" & $DlgStNu & "_" & $StrCtrlClass & GetClassNu($StrCtrlClass,$DlgStNu) & " = " _ & $Cdit & @CRLF $DlgStructInfo[UBound($DlgStructInfo) - 1][2] = " Case $Dlg" & $DlgStNu & "_" & $StrCtrlClass & _ GetClassNu($StrCtrlClass,$DlgStNu) & @CRLF $DlgStructInfo[UBound($DlgStructInfo) - 1][3] = $StrCtrlClass $DlgStructInfo[UBound($DlgStructInfo) - 1][4] = $Cdit Return SetError(0,0,$Cdit) EndFunc Func SetDlgOptions(ByRef $DlgStruct,$FontName,$FontSize,$FontWeight, _ $Italic = False,$Underline = False,$Strikethru = False,$TRANSPARENT = False, _ $BkColor = Default,$TextColor = Default) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,0) Local $LenOfFontName = StringLen($FontName) + 1 Local $NewOptionsStruct,$PtrOfNewOptionsStruct,$SizeOfNewOptionsStruct Local $OptionsStruct,$PtrOfOptionsStruct,$SizeOfOptionsStruct,$TotalOptionsStruct Local $PtrOfTotalOptionsStruct,$SizeOfTotalOptionsStruct,$NewSize,$OutPtr Local $tagNewOptionsStruct = "int IsDlgOps;int LenOfFontName;WCHAR FontName[" & $LenOfFontName & "];" & _ "int FontSize;int FontWeight;int Italic;int Underline;int Strikethru;int TRANSPARENT;" & _ "int IsBkColor;int IsTextColor;int BkColor;int TextColor" $OptionsStruct = RemoveOptionsData($DlgStruct) if @error Then Return SetError(2,0,False) if IsDlgOps($OptionsStruct) Then $NewOptionsStruct = DllStructCreate($tagNewOptionsStruct,DllStructGetPtr($OptionsStruct)) if @error Then Return SetError(3,0,False) DllStructSetData($NewOptionsStruct,1,-100) DllStructSetData($NewOptionsStruct,2,$LenOfFontName) DllStructSetData($NewOptionsStruct,3,$FontName) DllStructSetData($NewOptionsStruct,4,$FontSize) DllStructSetData($NewOptionsStruct,5,$FontWeight) DllStructSetData($NewOptionsStruct,6,$Italic) DllStructSetData($NewOptionsStruct,7,$Underline) DllStructSetData($NewOptionsStruct,8,$Strikethru) DllStructSetData($NewOptionsStruct,9,$TRANSPARENT) DllStructSetData($NewOptionsStruct,10,Not($BkColor == Default)) DllStructSetData($NewOptionsStruct,11,Not($TextColor == Default)) DllStructSetData($NewOptionsStruct,12,$BkColor) DllStructSetData($NewOptionsStruct,13,$TextColor) AddOptionsData($DlgStruct,$OptionsStruct) if @error Then Return SetError(4,0,False) Return SetError(0,0,True) Else $NewOptionsStruct = DllStructCreate($tagNewOptionsStruct) if @error Then Return SetError(5,0,False) DllStructSetData($NewOptionsStruct,1,-100) DllStructSetData($NewOptionsStruct,2,$LenOfFontName) DllStructSetData($NewOptionsStruct,3,$FontName) DllStructSetData($NewOptionsStruct,4,$FontSize) DllStructSetData($NewOptionsStruct,5,$FontWeight) DllStructSetData($NewOptionsStruct,6,$Italic) DllStructSetData($NewOptionsStruct,7,$Underline) DllStructSetData($NewOptionsStruct,8,$Strikethru) DllStructSetData($NewOptionsStruct,9,$TRANSPARENT) DllStructSetData($NewOptionsStruct,10,Not($BkColor == Default)) DllStructSetData($NewOptionsStruct,11,Not($TextColor == Default)) DllStructSetData($NewOptionsStruct,12,$BkColor) DllStructSetData($NewOptionsStruct,13,$TextColor) $SizeOfNewOptionsStruct = DllStructGetSize($NewOptionsStruct) $PtrOfNewOptionsStruct = DllStructGetPtr($NewOptionsStruct) $SizeOfOptionsStruct = DllStructGetSize($OptionsStruct) $PtrOfOptionsStruct = DllStructGetPtr($OptionsStruct) $NewSize = $SizeOfNewOptionsStruct + $SizeOfOptionsStruct $TotalOptionsStruct = DllStructCreate("BYTE OptionsStruct[" & $NewSize & "]") if @error Then Return SetError(6,0,False) $PtrOfTotalOptionsStruct = DllStructGetPtr($TotalOptionsStruct) $SizeOfTotalOptionsStruct = DllStructGetSize($TotalOptionsStruct) MoveMemory($PtrOfNewOptionsStruct,$PtrOfTotalOptionsStruct,$SizeOfNewOptionsStruct) $OutPtr = $PtrOfTotalOptionsStruct + $SizeOfNewOptionsStruct MoveMemory($PtrOfOptionsStruct,$OutPtr,$SizeOfOptionsStruct) AddOptionsData($DlgStruct,$TotalOptionsStruct) if @error Then Return SetError(7,0,False) Return SetError(0,0,True) EndIf EndFunc Func SetDlgCtrlOptions(ByRef $DlgStruct,$CtrlId,$FontName,$FontSize, _ $FontWeight,$Italic = False,$Underline = False,$Strikethru = False, _ $TRANSPARENT = False,$BkColor = Default,$TextColor = Default) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,0) Local $LenOfFontName = StringLen($FontName) + 1 Local $tagNewOptionsStruct = "int CtrlId;int LenOfFontName;WCHAR FontName[" & $LenOfFontName & "];" & _ "int FontSize;int FontWeight;int Italic;int Underline;int Strikethru;int TRANSPARENT;" & _ "int IsBkColor;int IsTextColor;int BkColor;int TextColor" if Not(TestCdit($DlgStruct,$CtrlId)) Then Return SetError(2,0,0) $OptionsStruct = RemoveOptionsData($DlgStruct) if @error Then Return SetError(3,0,False) $MovePos = IsDlgCtrlOps($OptionsStruct,$CtrlId) if ($MovePos) Then $NewOptionsStruct = DllStructCreate($tagNewOptionsStruct,DllStructGetPtr($OptionsStruct) + $MovePos) if @error Then Return SetError(4,0,False) DllStructSetData($NewOptionsStruct,1,$CtrlId) DllStructSetData($NewOptionsStruct,2,$LenOfFontName) DllStructSetData($NewOptionsStruct,3,$FontName) DllStructSetData($NewOptionsStruct,4,$FontSize) DllStructSetData($NewOptionsStruct,5,$FontWeight) DllStructSetData($NewOptionsStruct,6,$Italic) DllStructSetData($NewOptionsStruct,7,$Underline) DllStructSetData($NewOptionsStruct,8,$Strikethru) DllStructSetData($NewOptionsStruct,9,$TRANSPARENT) DllStructSetData($NewOptionsStruct,10,Not($BkColor == Default)) DllStructSetData($NewOptionsStruct,11,Not($TextColor == Default)) DllStructSetData($NewOptionsStruct,12,$BkColor) DllStructSetData($NewOptionsStruct,13,$TextColor) AddOptionsData($DlgStruct,$OptionsStruct) if @error Then Return SetError(5,0,False) Return SetError(0,0,True) Else $NewOptionsStruct = DllStructCreate($tagNewOptionsStruct) if @error Then Return SetError(6,0,False) DllStructSetData($NewOptionsStruct,1,$CtrlId) DllStructSetData($NewOptionsStruct,2,$LenOfFontName) DllStructSetData($NewOptionsStruct,3,$FontName) DllStructSetData($NewOptionsStruct,4,$FontSize) DllStructSetData($NewOptionsStruct,5,$FontWeight) DllStructSetData($NewOptionsStruct,6,$Italic) DllStructSetData($NewOptionsStruct,7,$Underline) DllStructSetData($NewOptionsStruct,8,$Strikethru) DllStructSetData($NewOptionsStruct,9,$TRANSPARENT) DllStructSetData($NewOptionsStruct,10,Not($BkColor == Default)) DllStructSetData($NewOptionsStruct,11,Not($TextColor == Default)) DllStructSetData($NewOptionsStruct,12,$BkColor) DllStructSetData($NewOptionsStruct,13,$TextColor) $SizeOfNewOptionsStruct = DllStructGetSize($NewOptionsStruct) $PtrOfNewOptionsStruct = DllStructGetPtr($NewOptionsStruct) $SizeOfOptionsStruct = DllStructGetSize($OptionsStruct) $PtrOfOptionsStruct = DllStructGetPtr($OptionsStruct) $NewSize = $SizeOfNewOptionsStruct + $SizeOfOptionsStruct $TotalOptionsStruct = DllStructCreate("BYTE OptionsStruct[" & $NewSize & "]") if @error Then Return SetError(7,0,False) $PtrOfTotalOptionsStruct = DllStructGetPtr($TotalOptionsStruct) $SizeOfTotalOptionsStruct = DllStructGetSize($TotalOptionsStruct) MoveMemory($PtrOfOptionsStruct,$PtrOfTotalOptionsStruct,$SizeOfOptionsStruct - 4) ;4 ==> Size Of int OptionsOfset $OutPtrA = $PtrOfTotalOptionsStruct + ($SizeOfOptionsStruct - 4) ;4 ==> Size Of int OptionsOfset MoveMemory($PtrOfNewOptionsStruct,$OutPtrA,$SizeOfNewOptionsStruct) ;--------------------------------------------------------------- $OutPtrB = $PtrOfOptionsStruct + ($SizeOfOptionsStruct - 4) $OutPtrC = $PtrOfTotalOptionsStruct + ($SizeOfTotalOptionsStruct - 4) MoveMemory($OutPtrB,$OutPtrC,4) ;Copy int OptionsOfset ;------------------------------------------------------------------ AddOptionsData($DlgStruct,$TotalOptionsStruct) if @error Then Return SetError(8,0,False) Return SetError(0,0,True) EndIf EndFunc Func IsDlgOps($OptionsStruct) Local $DlgOpsSt if Not IsDllStruct($OptionsStruct) Then Return SetError(1,0,False) $DlgOpsSt = DllStructCreate("int IsDlgOps;int LenOfFontName",DllStructGetPtr($OptionsStruct)) if DllStructGetData($DlgOpsSt,1) = -100 Then Return SetError(0,0,True) Return SetError(2,0,False) EndFunc Func IsDlgCtrlOps($OptionsStruct,$CtrlId) if Not IsDllStruct($OptionsStruct) Then Return SetError(1,0,0) Local $MovePos,$PtrOfOptionsStruct,$SizeOfOptionsStruct Local $SizeOfDlgOps = 0 , $MovePos = 0 $PtrOfOptionsStruct = DllStructGetPtr($OptionsStruct) $SizeOfOptionsStruct = DllStructGetSize($OptionsStruct) $DlgOpsSt = DllStructCreate("int IsDlgOps;int LenOfFontName",$PtrOfOptionsStruct) if DllStructGetData($DlgOpsSt,1) = -100 Then $LenOfFontName = DllStructGetData($DlgOpsSt,2) Local $tagNewOptionsStruct = "int IsDlgOps;int LenOfFontName;WCHAR FontName[" & $LenOfFontName & "];" & _ "int FontSize;int FontWeight;int Italic;int Underline;int Strikethru;int TRANSPARENT;" & _ "int IsBkColor;int IsTextColor;int BkColor;int TextColor" $SizeOfDlgOps = DllStructGetSize(DllStructCreate($tagNewOptionsStruct)) EndIf $MovePos += $SizeOfDlgOps if ($SizeOfOptionsStruct - $SizeOfDlgOps) = 4 Then Return SetError(2,0,0) ;4 ==> Size Of int OptionsOfset While ($MovePos < ($SizeOfOptionsStruct - 4)) ;4 ==> Size Of int OptionsOfset $DlgCtrOpsSt = DllStructCreate("int CtrlId;int LenOfFontName",$PtrOfOptionsStruct + $MovePos) $iCtrlId = DllStructGetData($DlgCtrOpsSt,1) $LenOfFontName = DllStructGetData($DlgCtrOpsSt,2) if $CtrlId = $iCtrlId Then Return SetError(0,0,$MovePos) Local $tagNewOptionsStruct = "int CtrlId;int LenOfFontName;WCHAR FontName[" & $LenOfFontName & "];" & _ "int FontSize;int FontWeight;int Italic;int Underline;int Strikethru;int TRANSPARENT;" & _ "int IsBkColor;int IsTextColor;int BkColor;int TextColor" $MovePos += DllStructGetSize(DllStructCreate($tagNewOptionsStruct)) WEnd Return SetError(3,0,0) EndFunc Func AddOneToCdit(ByRef $DlgStruct) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,0) Local $tagDlgStruct = "INT DlgStNu;DWORD style;DWORD dwExtendedStyle;WORD cdit" Local $iStructDlgTemp,$Cdit $iStructDlgTemp = DllStructCreate($tagDlgStruct,DllStructGetPtr($DlgStruct)) if @error Then Return SetError(2,0,0) $Cdit = DllStructGetData($iStructDlgTemp,4) + 1 DllStructSetData($iStructDlgTemp,4,$Cdit) Return SetError(0,0,$Cdit + 2) EndFunc Func TestCdit(ByRef $DlgStruct,$CtrlId) if Not IsDllStruct($DlgStruct) Or $CtrlId < 3 Then Return SetError(1,0,0) ;$CtrlId Start From 3 Local $tagDlgStruct = "INT DlgStNu;DWORD style;DWORD dwExtendedStyle;WORD cdit" Local $iStructDlgTemp,$Cdit $iStructDlgTemp = DllStructCreate($tagDlgStruct,DllStructGetPtr($DlgStruct)) if @error Then Return SetError(2,0,0) $Cdit = DllStructGetData($iStructDlgTemp,4) + 2 ;add 2 See the AddOneToCdit Func {Return SetError(0,0,$Cdit + 2)} if ($Cdit < $CtrlId Or $CtrlId > $Cdit) Then Return SetError(3,0,0) Return SetError(0,0,$Cdit) EndFunc Func GetClassNu($StrCtrlClass,$DlgStNu) Local $ClassNumber = 1 For $i = 1 To UBound($DlgStructInfo) - 1 if $DlgStructInfo[$i][0] <> $DlgStNu Or Not (StringUpper($StrCtrlClass) _ == StringUpper($DlgStructInfo[$i][3])) Then ContinueLoop $ClassNumber += 1 Next Return $ClassNumber EndFunc Func AddOptionsData(ByRef $DlgStruct,$OptionsStruct) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,False) if Not IsDllStruct($OptionsStruct) Then Return SetError(2,0,False) Local $NewTag,$NewStruct,$SizeOfDlgStruct,$SizeOfOptionsStruct Local $SizeOfNewStruct $SizeOfDlgStruct = DllStructGetSize($DlgStruct) $SizeOfOptionsStruct = DllStructGetSize($OptionsStruct) $NewTag = "BYTE DlgStruct[" & $SizeOfDlgStruct + $SizeOfOptionsStruct & "]" $NewStruct = DllStructCreate($NewTag) if @error Then Return SetError(3,0,False) MoveMemory(DllStructGetPtr($DlgStruct),DllStructGetPtr($NewStruct),$SizeOfDlgStruct) MoveMemory(DllStructGetPtr($OptionsStruct),DllStructGetPtr($NewStruct) + $SizeOfDlgStruct, _ $SizeOfOptionsStruct) $SizeOfNewStruct = DllStructGetSize($NewStruct) $OutPtr = DllStructGetPtr($NewStruct) + ($SizeOfNewStruct - 4) ;4 ==> SizeOf int OptionsOfset $OfsetStruct = DllStructCreate("INT OptionsOfset",$OutPtr) if @error Then Return SetError(4,0,False) DllStructSetData($OfsetStruct,1,$SizeOfDlgStruct) $DlgStruct = $NewStruct DlgStructToByteStruct($DlgStruct) Return SetError(0,0,True) EndFunc Func RemoveOptionsData(ByRef $DlgStruct) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,0) Local $pDlgStruct,$PtrOfDlgStruct,$SizeOfDlgStruct,$OutPtrA,$OutPtrB Local $OptionsStruct,$PtrOfOptionsStruct,$SizeOfOptionsStruct,$OfsetStruct $SizeOfDlgStruct = DllStructGetSize($DlgStruct) $PtrOfDlgStruct = DllStructGetPtr($DlgStruct) $OutPtrA = $PtrOfDlgStruct + ($SizeOfDlgStruct - 4) ;4 ==> SizeOf int OptionsOfset $OfsetStruct = DllStructCreate("INT OptionsOfset",$OutPtrA) if @error Then Return SetError(2,0,0) $OptionsOfset = DllStructGetData($OfsetStruct,1) $pDlgStruct = DllStructCreate("BYTE DlgStruct[" & $OptionsOfset & "]") if @error Then Return SetError(3,0,0) MoveMemory($PtrOfDlgStruct,DllStructGetPtr($pDlgStruct),$OptionsOfset) $SizeOfOptionsStruct = ($SizeOfDlgStruct - $OptionsOfset) $OptionsStruct = DllStructCreate("BYTE OptionsStruct[" & $SizeOfOptionsStruct & "]") if @error Then Return SetError(4,0,0) $PtrOfOptionsStruct = DllStructGetPtr($OptionsStruct) $OutPtrB = $PtrOfDlgStruct + $OptionsOfset MoveMemory($OutPtrB,$PtrOfOptionsStruct,$SizeOfOptionsStruct) $DlgStruct = $pDlgStruct Return SetError(0,0,$OptionsStruct) EndFunc Func DlgStructToByteStruct(ByRef $DlgStruct) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,False) Local $pDlgStruct,$PtrOfDlgStruct,$PtrOfpDlgStruct,$SizeOfDlgStruct $SizeOfDlgStruct = DllStructGetSize($DlgStruct) $PtrOfDlgStruct = DllStructGetPtr($DlgStruct) $pDlgStruct = DllStructCreate("BYTE DlgStruct[" & $SizeOfDlgStruct & "]") if @error Then Return SetError(2,0,False) $PtrOfpDlgStruct = DllStructGetPtr($pDlgStruct) MoveMemory($PtrOfDlgStruct,$PtrOfpDlgStruct,$SizeOfDlgStruct) $DlgStruct = $pDlgStruct Return SetError(0,0,True) EndFunc Func DlgStToTempSt($DlgStruct) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,0) $SizeOfDlgStruct = DllStructGetSize($DlgStruct) $PotrOfDlgStruct = DllStructGetPtr($DlgStruct) $DlgTemplaStruct = DllStructCreate("BYTE DlgTemplaStruct[" & ($SizeOfDlgStruct - 4) & "]") ;4 ==> Size Of "INT DlgStNu" if @error Then Return SetError(2,0,0) $PtrOfDlgTemplSt = DllStructGetPtr($DlgTemplaStruct) MoveMemory(($PotrOfDlgStruct + 4),$PtrOfDlgTemplSt,($SizeOfDlgStruct - 4)) ;$PotrOfDlgStruct + 4 Move Ptr Pos To After "INT DlgStNu" $SizeOfDlgTemplaStruct = DllStructGetSize($DlgTemplaStruct) $OutPtr = $PtrOfDlgTemplSt + ($SizeOfDlgTemplaStruct - 4) ;4 ==> SizeOf int OptionsOfset $OfsetStruct = DllStructCreate("INT OptionsOfset",$OutPtr) if @error Then Return SetError(3,0,0) $OptionsOfset = DllStructGetData($OfsetStruct,1) DllStructSetData($OfsetStruct,1,$OptionsOfset - 4) ;4 ==> Size Of "INT DlgStNu" Return SetError(0,0,$DlgTemplaStruct) EndFunc Func DlgStructToBinaryFunc($DlgStruct,$OutFileName) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,False) Local $StrBinary,$Line,$AutoitScriptCode,$Sfo $Sfo = FileOpen($OutFileName,2) if @error Then Return SetError(2,0,False) $AutoitScriptCode = 'Func DlgStructFromBinary()' & @CRLF $AutoitScriptCode &= 'Local $StrBinary = "" , $BinaryStruct' & @CRLF $StrBinary = String(DllStructGetData($DlgStruct,1)) For $i = 1 To StringLen($StrBinary) Step 80 $AutoitScriptCode &= '$StrBinary &= "' & StringMid($StrBinary,$i,80) & '"' & @CRLF Next $AutoitScriptCode &= '$BinaryStruct = DllStructCreate("BYTE[" & BinaryLen($StrBinary) & "]")' & @CRLF $AutoitScriptCode &= 'DllStructSetData($BinaryStruct,1,$StrBinary)' & @CRLF $AutoitScriptCode &= 'Return $BinaryStruct' & @CRLF $AutoitScriptCode &= 'EndFunc' & @CRLF FileWrite($Sfo,$AutoitScriptCode) if @error Then Return SetError(3,0,False) FileClose($Sfo) Return SetError(0,0,True) EndFunc Func DlgStructToResFile($DlgStruct,$OutResFileName) if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,False) Local $Sfo $Sfo = FileOpen($OutResFileName,2) if @error Then Return SetError(2,0,False) FileWrite($Sfo,Binary(DllStructGetData(DlgStToTempSt($DlgStruct),1))) if @error Then Return SetError(3,0,False) FileClose($Sfo) Return SetError(0,0,True) EndFunc Func DlgStructToResAutoitScriptCode($DlgStruct,$OutDirectoryPath) Local $TagDlgStNu,$NuStruct,$StructNumber,$AutoitScriptCodeA = "",$iReturns = 1 Local $AutoitScriptCodeB = "",$AutoitScriptCodeC = "",$AutoitScriptCodeD = "" if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,False) if StringInStr($OutDirectoryPath,".") Then Return SetError(2,0,False) if Not ($iReturns = FileExists($OutDirectoryPath)) Then $iReturns = DirCreate($OutDirectoryPath) if Not ($iReturns) Then Return SetError(3,0,False) $NuStruct = DllStructCreate("INT DlgStNu",DllStructGetPtr($DlgStruct)) $StructNumber = DllStructGetData($NuStruct,1) $AutoitScriptCodeA &= '#AutoIt3Wrapper_UseUpx=n' & @CRLF $AutoitScriptCodeA &= '#AutoIt3Wrapper_Res_File_Add=Dlg.rc,5,$$StringReplaceStructNumber,0' & @CRLF $AutoitScriptCodeA &= '#include ' & @CRLF $AutoitScriptCodeA &= '#include ' & @CRLF $AutoitScriptCodeA &= '#include ' & @CRLF $AutoitScriptCodeA &= '#include "Res.au3"' & @CRLF $AutoitScriptCodeA &= 'Global $CtrlMsgSend,$iPtrDialogFunc,$DlgHwnd,$OptionsInfo' & @CRLF $AutoitScriptCodeA &= 'OnAutoItExitRegister("OnAutoItExit")' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'if Not (@Compiled) Then Exit(MsgBox(0,"Err","Must compile the Dlg.au3 With Options"))' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'WinMain()' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func WinMain()' & @CRLF $AutoitScriptCodeA &= 'Local $RtArray' & @CRLF $AutoitScriptCodeA &= '$RtArray = CreateDlgFromResources($$StringReplaceDlgResName,"DialogProc")' & @CRLF $AutoitScriptCodeA &= 'if @error Then Exit' & @CRLF $AutoitScriptCodeA &= '$DlgHwnd = $RtArray[0]' & @CRLF $AutoitScriptCodeA &= '$iPtrDialogFunc = $RtArray[1]' & @CRLF $AutoitScriptCodeA &= 'ShowWindow($DlgHwnd)' & @CRLF $AutoitScriptCodeA &= 'While True' & @CRLF $AutoitScriptCodeA &= 'WEnd' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func DialogProc($hWnd,$uiMsg,$wParam,$lParam)' & @CRLF $AutoitScriptCodeA &= 'if CtrlMsgSend($uiMsg,True) Then Return False' & @CRLF $AutoitScriptCodeA &= '$Rt = OptionsMsgs($hWnd,$uiMsg,$wParam,$lParam)' & @CRLF $AutoitScriptCodeA &= 'if Not @error Then Return $Rt' & @CRLF $AutoitScriptCodeA &= 'Local $tagNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;INT Code"' & @CRLF $AutoitScriptCodeA &= 'Local $CtrlHwnd,$CtrlNfcnCode,$tNMHDR,$CtrlId,$iBN_CLICKED = 0 _' & @CRLF $AutoitScriptCodeA &= ',$NfAccelerator = 1,$NfMenu = 0,$CLoseId = 2' & @CRLF $AutoitScriptCodeA &= ' Switch $uiMsg' & @CRLF $AutoitScriptCodeA &= ' Case $WM_NOTIFY' & @CRLF $AutoitScriptCodeA &= ' $tNMHDR = DllStructCreate($tagNMHDR,$lParam)' & @CRLF $AutoitScriptCodeA &= ' $CtrlHwnd = DllStructGetData($tNMHDR,"hWndFrom")' & @CRLF $AutoitScriptCodeA &= ' $CtrlId = DllStructGetData($tNMHDR,"IDFrom")' & @CRLF $AutoitScriptCodeA &= ' $CtrlNfcnCode = DllStructGetData($tNMHDR,"Code")' & @CRLF $AutoitScriptCodeA &= ' Switch $CtrlId' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$$AutoitScriptCode' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= ' Case $WM_COMMAND' & @CRLF $AutoitScriptCodeA &= ' $CtrlHwnd = $lParam' & @CRLF $AutoitScriptCodeA &= ' $CtrlId = LOWORD($wParam)' & @CRLF $AutoitScriptCodeA &= ' $CtrlNfcnCode = HIWORD($wParam)' & @CRLF $AutoitScriptCodeA &= ' Switch $CtrlId' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= ' Case $CLoseId ;Example Dlg CLose Button [x]' & @CRLF $AutoitScriptCodeA &= ' Switch $CtrlNfcnCode' & @CRLF $AutoitScriptCodeA &= ' Case $iBN_CLICKED' & @CRLF $AutoitScriptCodeA &= ' $nResult = LOWORD($wParam)' & @CRLF $AutoitScriptCodeA &= ' EndDialog($hWnd,$nResult)' & @CRLF $AutoitScriptCodeA &= ' Exit' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$$AutoitScriptCode' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= ' Return CtrlMsgSend($uiMsg,False)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func CtrlMsgSend($uiMsg,$Flags)' & @CRLF $AutoitScriptCodeA &= 'Select' & @CRLF $AutoitScriptCodeA &= 'Case $Flags = True' & @CRLF $AutoitScriptCodeA &= 'if ($uiMsg = $WM_COMMAND Or $uiMsg = $WM_NOTIFY) Then' & @CRLF $AutoitScriptCodeA &= 'if $CtrlMsgSend = True Then Return True' & @CRLF $AutoitScriptCodeA &= '$CtrlMsgSend = True' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'Case $Flags = False' & @CRLF $AutoitScriptCodeA &= 'if ($uiMsg = $WM_COMMAND Or $uiMsg = $WM_NOTIFY) Then' & @CRLF $AutoitScriptCodeA &= 'if $CtrlMsgSend = False Then Return False' & @CRLF $AutoitScriptCodeA &= '$CtrlMsgSend = False' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'EndSelect' & @CRLF $AutoitScriptCodeA &= 'Return False' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func OptionsMsgs($hWnd,$uiMsg,$wParam,$lParam)' & @CRLF $AutoitScriptCodeA &= ' Switch $uiMsg' & @CRLF $AutoitScriptCodeA &= ' Case $WM_INITDIALOG' & @CRLF $AutoitScriptCodeA &= ' if (($lParam) And Not IsArray($OptionsInfo)) Then _' & @CRLF $AutoitScriptCodeA &= ' $OptionsInfo = OpsInfoFromMemOfDlgSt($lParam)' & @CRLF $AutoitScriptCodeA &= ' if IsArray($OptionsInfo) Then SetFonts($hWnd)' & @CRLF $AutoitScriptCodeA &= ' Return SetError(0,0,True)' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORDLG' & @CRLF $AutoitScriptCodeA &= ' Return SetError(@error,0,SetDlgOptions($wParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLOR' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORBTN' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLOREDIT' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORLISTBOX' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORSCROLLBAR' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORSTATIC' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= ' Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func CreateDlgFromResources($DlgResName,$FuncNameOfDialog,$hWndParent = 0,$Param = 0)' & @CRLF $AutoitScriptCodeA &= 'Local $hInstance,$DHWND,$DialogFunc,$PtrDialogFunc,$RTArray[2] , $DataType = "INT"' & @CRLF $AutoitScriptCodeA &= '$DialogFunc = DllCallbackRegister($FuncNameOfDialog,"BOOL","HWND;UINT;WPARAM;LPARAM")' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '$PtrDialogFunc = DllCallbackGetPtr($DialogFunc)' & @CRLF $AutoitScriptCodeA &= '$hInstance = GetModuleHandle()' & @CRLF $AutoitScriptCodeA &= 'if IsString($DlgResName) Then' & @CRLF $AutoitScriptCodeA &= '$DlgResName = StringUpper($DlgResName)' & @CRLF $AutoitScriptCodeA &= '$DataType = "WSTR"' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'if Not($Param) Then $Param = GlobalAllocFromDlgRes($DlgResName)' & @CRLF $AutoitScriptCodeA &= '$DHWND = DllCall("User32.dll","HWND","CreateDialogParamW","PTR",$hInstance,$DataType, _' & @CRLF $AutoitScriptCodeA &= '$DlgResName,"PTR",$hWndParent,"PTR",$PtrDialogFunc,"PTR",$Param)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $DHWND[0] = 0 Then Return SetError(2,0,0)' & @CRLF $AutoitScriptCodeA &= '$RTArray[0] = $DHWND[0]' & @CRLF $AutoitScriptCodeA &= '$RTArray[1] = $PtrDialogFunc' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$RTArray)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetFonts($hWnd)' & @CRLF $AutoitScriptCodeA &= 'if IsArray($OptionsInfo) Then' & @CRLF $AutoitScriptCodeA &= 'For $i = 0 To UBound($OptionsInfo) - 1' & @CRLF $AutoitScriptCodeA &= '$FontName = $OptionsInfo[$i][1]' & @CRLF $AutoitScriptCodeA &= '$FontSize = $OptionsInfo[$i][2]' & @CRLF $AutoitScriptCodeA &= '$FontWeight = $OptionsInfo[$i][3]' & @CRLF $AutoitScriptCodeA &= '$Italic = $OptionsInfo[$i][4]' & @CRLF $AutoitScriptCodeA &= '$Underline = $OptionsInfo[$i][5]' & @CRLF $AutoitScriptCodeA &= '$Strikethru = $OptionsInfo[$i][6]' & @CRLF $AutoitScriptCodeA &= '$HFONT = CreateFont($FontSize,0,0,0,$FontWeight,$Italic,$Underline,$Strikethru,0,0,0,0,1,$FontName)' & @CRLF $AutoitScriptCodeA &= 'if ($HFONT) Then' & @CRLF $AutoitScriptCodeA &= 'if $OptionsInfo[$i][0] = -1 Then' & @CRLF $AutoitScriptCodeA &= 'SendMessage($hWnd,0x0030,$HFONT,False) ; $Msg ==> WM_SETFONT = 0x0030' & @CRLF $AutoitScriptCodeA &= 'Else' & @CRLF $AutoitScriptCodeA &= '$CtrlID = $OptionsInfo[$i][0]' & @CRLF $AutoitScriptCodeA &= 'SendMessage(GetDlgItem($hWnd,$CtrlID),0x0030,$HFONT,False) ; $Msg ==> WM_SETFONT = 0x0030' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'DeleteObject($HFONT)' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'Next' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetDlgOptions($HDC)' & @CRLF $AutoitScriptCodeA &= 'Local $iElement , $HBRUSH' & @CRLF $AutoitScriptCodeA &= '$iElement = IsOptions(-1)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '$iTRANSPARENT = $OptionsInfo[$iElement][7]' & @CRLF $AutoitScriptCodeA &= '$IsBkColor = $OptionsInfo[$iElement][8]' & @CRLF $AutoitScriptCodeA &= '$IsTextColor = $OptionsInfo[$iElement][9]' & @CRLF $AutoitScriptCodeA &= '$BkColor = $OptionsInfo[$iElement][10]' & @CRLF $AutoitScriptCodeA &= '$TextColor = $OptionsInfo[$iElement][11]' & @CRLF $AutoitScriptCodeA &= 'if ($iTRANSPARENT) Then SetBkMode($HDC,$TRANSPARENT)' & @CRLF $AutoitScriptCodeA &= 'if ($IsBkColor) Then SetBkColor($HDC,$BkColor)' & @CRLF $AutoitScriptCodeA &= 'if ($IsTextColor) Then SetTextColor($HDC,$TextColor)' & @CRLF $AutoitScriptCodeA &= 'if ($IsBkColor) Then' & @CRLF $AutoitScriptCodeA &= '$BkColor = StringTrimLeft(Hex($BkColor,8),2)' & @CRLF $AutoitScriptCodeA &= '$BkColor = "0x" & StringMid($BkColor, 5, 2) & StringMid($BkColor, 3, 2) & _' & @CRLF $AutoitScriptCodeA &= 'StringMid($BkColor, 1, 2)' & @CRLF $AutoitScriptCodeA &= '$HBRUSH = CreateSolidBrush($BkColor)' & @CRLF $AutoitScriptCodeA &= 'Else' & @CRLF $AutoitScriptCodeA &= '$HBRUSH = GetSysColorBrush(15) ; 15 ==> COLOR_3DFACE' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HBRUSH)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetDlgCtrlOptions($HDC,$hWnd)' & @CRLF $AutoitScriptCodeA &= 'Local $iElement' & @CRLF $AutoitScriptCodeA &= '$CtrlID = GetDlgCtrlID($hWnd)' & @CRLF $AutoitScriptCodeA &= '$iElement = IsOptions($CtrlID)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '$iTRANSPARENT = $OptionsInfo[$iElement][7]' & @CRLF $AutoitScriptCodeA &= '$IsBkColor = $OptionsInfo[$iElement][8]' & @CRLF $AutoitScriptCodeA &= '$IsTextColor = $OptionsInfo[$iElement][9]' & @CRLF $AutoitScriptCodeA &= '$BkColor = $OptionsInfo[$iElement][10]' & @CRLF $AutoitScriptCodeA &= '$TextColor = $OptionsInfo[$iElement][11]' & @CRLF $AutoitScriptCodeA &= ';Place the Options code here' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func IsOptions($CtrlID)' & @CRLF $AutoitScriptCodeA &= 'if Not IsArray($OptionsInfo) Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'For $i = 0 To UBound($OptionsInfo) - 1' & @CRLF $AutoitScriptCodeA &= 'if ($CtrlID = $OptionsInfo[$i][0]) Then Return SetError(0,0,$i)' & @CRLF $AutoitScriptCodeA &= 'Next' & @CRLF $AutoitScriptCodeA &= 'Return SetError(2,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func OpsInfoFromMemOfDlgSt($hMem)' & @CRLF $AutoitScriptCodeA &= 'Local $SizeOfDlgOps,$MovePos,$ArrayOfOptionsInfo[1][12]' & @CRLF $AutoitScriptCodeA &= 'if Not IsPtr($hMem) Then $hMem = Ptr($hMem)' & @CRLF $AutoitScriptCodeA &= '$SizeOfDlgStruct = GlobalSize($hMem)' & @CRLF $AutoitScriptCodeA &= '$PtrOfDlgStruct = GlobalLock($hMem)' & @CRLF $AutoitScriptCodeA &= '$OutPtrA = $PtrOfDlgStruct + ($SizeOfDlgStruct - 4) ;4 ==> SizeOf int OptionsOfset' & @CRLF $AutoitScriptCodeA &= '$OfsetStruct = DllStructCreate("INT OptionsOfset",$OutPtrA)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '$OptionsOfset = DllStructGetData($OfsetStruct,1)' & @CRLF $AutoitScriptCodeA &= '$SizeOfOptionsStruct = ($SizeOfDlgStruct - $OptionsOfset)' & @CRLF $AutoitScriptCodeA &= 'if ($SizeOfOptionsStruct = 4) Then Return SetError(2,0,0)' & @CRLF $AutoitScriptCodeA &= '$OptionsStruct = DllStructCreate("BYTE OptionsStruct[" & $SizeOfOptionsStruct & "]")' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(3,0,0)' & @CRLF $AutoitScriptCodeA &= '$PtrOfOptionsStruct = DllStructGetPtr($OptionsStruct)' & @CRLF $AutoitScriptCodeA &= '$OutPtrB = $PtrOfDlgStruct + $OptionsOfset' & @CRLF $AutoitScriptCodeA &= 'MoveMemory($OutPtrB,$PtrOfOptionsStruct,$SizeOfOptionsStruct)' & @CRLF $AutoitScriptCodeA &= '$DlgOpsSt = DllStructCreate("int IsDlgOps;int LenOfFontName",$PtrOfOptionsStruct)' & @CRLF $AutoitScriptCodeA &= 'if (DllStructGetData($DlgOpsSt,1) = -100) Then' & @CRLF $AutoitScriptCodeA &= '$UBound = UBound($ArrayOfOptionsInfo) - 1' & @CRLF $AutoitScriptCodeA &= '$LenOfFontName = DllStructGetData($DlgOpsSt,2)' & @CRLF $AutoitScriptCodeA &= '$tagNewOptionsStruct = "int IsDlgOps;int LenOfFontName;WCHAR FontName[" & $LenOfFontName & "];" & _' & @CRLF $AutoitScriptCodeA &= '"int FontSize;int FontWeight;int Italic;int Underline;int Strikethru;int TRANSPARENT;" & _' & @CRLF $AutoitScriptCodeA &= '"int IsBkColor;int IsTextColor;int BkColor;int TextColor"' & @CRLF $AutoitScriptCodeA &= '$DlgOptionsSt = DllStructCreate($tagNewOptionsStruct,$PtrOfOptionsStruct)' & @CRLF $AutoitScriptCodeA &= '$SizeOfDlgOps = DllStructGetSize($DlgOptionsSt)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][0] = -1' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][1] = DllStructGetData($DlgOptionsSt,3)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][2] = DllStructGetData($DlgOptionsSt,4)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][3] = DllStructGetData($DlgOptionsSt,5)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][4] = DllStructGetData($DlgOptionsSt,6)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][5] = DllStructGetData($DlgOptionsSt,7)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][6] = DllStructGetData($DlgOptionsSt,8)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][7] = DllStructGetData($DlgOptionsSt,9)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][8] = DllStructGetData($DlgOptionsSt,10)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][9] = DllStructGetData($DlgOptionsSt,11)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][10] = DllStructGetData($DlgOptionsSt,12)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][11] = DllStructGetData($DlgOptionsSt,13)' & @CRLF $AutoitScriptCodeA &= 'ReDim $ArrayOfOptionsInfo[UBound($ArrayOfOptionsInfo) + 1][12]' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= '$MovePos += $SizeOfDlgOps' & @CRLF $AutoitScriptCodeA &= 'if ($SizeOfOptionsStruct - $SizeOfDlgOps) = 4 Then Return SetError(0,0,$ArrayOfOptionsInfo) ;4 ==> Size Of int OptionsOfset' & @CRLF $AutoitScriptCodeA &= 'While ($MovePos < ($SizeOfOptionsStruct - 4)) ;4 ==> Size Of int OptionsOfset' & @CRLF $AutoitScriptCodeA &= '$UBound = UBound($ArrayOfOptionsInfo) - 1' & @CRLF $AutoitScriptCodeA &= '$DlgCtrOpsSt = DllStructCreate("int CtrlId;int LenOfFontName",$PtrOfOptionsStruct + $MovePos)' & @CRLF $AutoitScriptCodeA &= '$LenOfFontName = DllStructGetData($DlgCtrOpsSt,2)' & @CRLF $AutoitScriptCodeA &= '$tagNewOptionsStruct = "int CtrlId;int LenOfFontName;WCHAR FontName[" & $LenOfFontName & "];" & _' & @CRLF $AutoitScriptCodeA &= '"int FontSize;int FontWeight;int Italic;int Underline;int Strikethru;int TRANSPARENT;" & _' & @CRLF $AutoitScriptCodeA &= '"int IsBkColor;int IsTextColor;int BkColor;int TextColor"' & @CRLF $AutoitScriptCodeA &= '$OptionsStOfDlgCtrls = DllStructCreate($tagNewOptionsStruct,$PtrOfOptionsStruct + $MovePos)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][0] = DllStructGetData($OptionsStOfDlgCtrls,1)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][1] = DllStructGetData($OptionsStOfDlgCtrls,3)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][2] = DllStructGetData($OptionsStOfDlgCtrls,4)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][3] = DllStructGetData($OptionsStOfDlgCtrls,5)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][4] = DllStructGetData($OptionsStOfDlgCtrls,6)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][5] = DllStructGetData($OptionsStOfDlgCtrls,7)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][6] = DllStructGetData($OptionsStOfDlgCtrls,8)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][7] = DllStructGetData($OptionsStOfDlgCtrls,9)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][8] = DllStructGetData($OptionsStOfDlgCtrls,10)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][9] = DllStructGetData($OptionsStOfDlgCtrls,11)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][10] = DllStructGetData($OptionsStOfDlgCtrls,12)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][11] = DllStructGetData($OptionsStOfDlgCtrls,13)' & @CRLF $AutoitScriptCodeA &= 'ReDim $ArrayOfOptionsInfo[UBound($ArrayOfOptionsInfo) + 1][12]' & @CRLF $AutoitScriptCodeA &= '$MovePos += DllStructGetSize($OptionsStOfDlgCtrls)' & @CRLF $AutoitScriptCodeA &= 'WEnd' & @CRLF $AutoitScriptCodeA &= 'ReDim $ArrayOfOptionsInfo[UBound($ArrayOfOptionsInfo) - 1][12]' & @CRLF $AutoitScriptCodeA &= 'GlobalUnlock($hMem)' & @CRLF $AutoitScriptCodeA &= 'GlobalFree($hMem)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$ArrayOfOptionsInfo)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalAllocFromDlgRes($DlgResName)' & @CRLF $AutoitScriptCodeA &= 'Local $DataType = "INT",$HMODULE,$HRSRC,$ResSize,$HGLOBAL' & @CRLF $AutoitScriptCodeA &= 'Local $LPVOID,$hMem,$hLock,$BOOL' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'if IsString($DlgResName) Then' & @CRLF $AutoitScriptCodeA &= '$DlgResName = StringUpper($DlgResName)' & @CRLF $AutoitScriptCodeA &= '$DataType = "WSTR"' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$HMODULE = GetModuleHandle(0)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$HRSRC = DllCall("Kernel32.dll","ptr","FindResourceW","ptr",$HMODULE,$DataType,$DlgResName,"long",5);5 ==> RT_DIALOG = 5' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HRSRC[0] = 0 Then Return SetError(2,0,0)' & @CRLF $AutoitScriptCodeA &= '$HRSRC = $HRSRC[0]' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$ResSize = DllCall("Kernel32.dll","DWORD","SizeofResource","ptr",$HMODULE,"ptr",$HRSRC)' & @CRLF $AutoitScriptCodeA &= 'if (@error Or GetLastError()) Then' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Kernel32.dll","BOOL","FreeResource","ptr",$HGLOBAL)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(3,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= '$ResSize = $ResSize[0]' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$HGLOBAL = DllCall("Kernel32.dll","ptr","LoadResource","ptr",$HMODULE,"ptr",$HRSRC)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HGLOBAL[0] = 0 Then' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Kernel32.dll","BOOL","FreeResource","ptr",$HGLOBAL)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(4,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= '$HGLOBAL = $HGLOBAL[0]' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$LPVOID = DllCall("Kernel32.dll","ptr","LockResource","ptr",$HGLOBAL)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $LPVOID[0] = 0 Then' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Kernel32.dll","BOOL","FreeResource","ptr",$HGLOBAL)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(5,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= '$LPVOID = $LPVOID[0]' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$hMem = GlobalAlloc(0x0042,$ResSize) ;$GHND = 0x0042' & @CRLF $AutoitScriptCodeA &= 'if @error Then' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Kernel32.dll","BOOL","FreeResource","ptr",$HGLOBAL)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(6,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$hLock = GlobalLock($hMem)' & @CRLF $AutoitScriptCodeA &= 'if @error Then' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Kernel32.dll","BOOL","FreeResource","ptr",$HGLOBAL)' & @CRLF $AutoitScriptCodeA &= 'GlobalFree($hMem)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(7,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'MoveMemory($LPVOID,$hLock,$ResSize)' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Kernel32.dll","BOOL","FreeResource","ptr",$HGLOBAL)' & @CRLF $AutoitScriptCodeA &= 'GlobalUnlock($hMem)' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$hMem)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetDlgCtrlID($hwndCtl)' & @CRLF $AutoitScriptCodeA &= '$CtrlID = DllCall("User32.dll","int","GetDlgCtrlID","HWND",$hwndCtl)' & @CRLF $AutoitScriptCodeA &= 'if (@error Or GetLastError()) Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$CtrlID[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetDlgItem($hDlg,$nIDDlgItem)' & @CRLF $AutoitScriptCodeA &= '$HWND = DllCall("User32.dll","HWND","GetDlgItem","HWND",$hDlg,"int",$nIDDlgItem)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HWND[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HWND[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func EndDialog($hDlg,$nResult)' & @CRLF $AutoitScriptCodeA &= '$Rt = DllCall("User32.dll","BOOL","EndDialog","HWND",$hDlg,"ptr",$nResult)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $Rt[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$Rt[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func ShowWindow($hWnd,$nCmdShow = 5)' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("User32.dll","BOOL","ShowWindow","HWND",$hWnd,"INT",$nCmdShow)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $BOOL[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$BOOL[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func LOWORD($dwValue)' & @CRLF $AutoitScriptCodeA &= 'Return BitAND($dwValue,0xFFFF)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func HIWORD($dwValue)' & @CRLF $AutoitScriptCodeA &= 'Return BitShift($dwValue,16)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetModuleHandle($lpModuleName = 0)' & @CRLF $AutoitScriptCodeA &= 'Local $DataType = "WSTR"' & @CRLF $AutoitScriptCodeA &= 'if IsInt($lpModuleName) Then $DataType = "INT"' & @CRLF $AutoitScriptCodeA &= '$HMODULE = DllCall("Kernel32.dll","PTR","GetModuleHandleW",$DataType,$lpModuleName)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HMODULE[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HMODULE[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalAlloc($uFlags,$dwBytes)' & @CRLF $AutoitScriptCodeA &= '$HGLOBAL = DllCall("Kernel32.dll","ptr","GlobalAlloc","UINT",$uFlags,"ULONG_PTR",$dwBytes)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HGLOBAL[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HGLOBAL[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalLock($hMem)' & @CRLF $AutoitScriptCodeA &= '$LPVOID = DllCall("Kernel32.dll","ptr","GlobalLock","ptr",$hMem)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $LPVOID[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$LPVOID[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalUnlock($hMem)' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Kernel32.dll","BOOL","GlobalUnlock","ptr",$hMem)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $BOOL[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,$BOOL[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalSize($hMem)' & @CRLF $AutoitScriptCodeA &= '$Size = DllCall("Kernel32.dll","ULONG_PTR","GlobalSize","ptr",$hMem)' & @CRLF $AutoitScriptCodeA &= 'if (@error Or GetLastError()) Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$Size[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalFree($hMem)' & @CRLF $AutoitScriptCodeA &= '$HGLOBAL = DllCall("Kernel32.dll","ULONG_PTR","GlobalFree","ptr",$hMem)' & @CRLF $AutoitScriptCodeA &= 'if (@error Or ($HGLOBAL[0])) Then Return SetError(1,0,$HGLOBAL[0])' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func CreateFont($nHeight,$nWidth,$nEscapement,$nOrientation,$fnWeight,$fdwItalic, _' & @CRLF $AutoitScriptCodeA &= '$fdwUnderline,$fdwStrikeOut,$fdwCharSet,$fdwOutputPrecision,$fdwClipPrecision, _' & @CRLF $AutoitScriptCodeA &= '$fdwQuality,$fdwPitchAndFamily,$lpszFace)' & @CRLF $AutoitScriptCodeA &= '$HFONT = DllCall("Gdi32.dll","ptr","CreateFontW","int",$nHeight,"int",$nWidth,"int",$nEscapement, _' & @CRLF $AutoitScriptCodeA &= '"int",$nOrientation,"int",$fnWeight,"DWORD",$fdwItalic,"DWORD",$fdwUnderline,"DWORD",$fdwStrikeOut, _' & @CRLF $AutoitScriptCodeA &= '"DWORD",$fdwCharSet,"DWORD",$fdwOutputPrecision,"DWORD",$fdwClipPrecision,"DWORD",$fdwQuality, _' & @CRLF $AutoitScriptCodeA &= '"DWORD",$fdwPitchAndFamily,"wstr",$lpszFace)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HFONT[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HFONT[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func DeleteObject($hObject)' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Gdi32.dll","int","DeleteObject","ptr",$hObject)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $BOOL[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$BOOL[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetBkMode($hdc,$iBkMode)' & @CRLF $AutoitScriptCodeA &= '$INT = DllCall("Gdi32.dll","int","SetBkMode","ptr",$hdc,"int",$iBkMode)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $INT[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$INT[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetBkColor($hdc,$crColor)' & @CRLF $AutoitScriptCodeA &= '$COLORREF = DllCall("Gdi32.dll","DWORD","SetBkColor","ptr",$hdc,"DWORD",$crColor)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $COLORREF[0] = 0xFFFFFFFF Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$COLORREF[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetTextColor($hdc,$crColor)' & @CRLF $AutoitScriptCodeA &= '$COLORREF = DllCall("Gdi32.dll","DWORD","SetTextColor","ptr",$hdc,"DWORD",$crColor)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $COLORREF[0] = 0xFFFFFFFF Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$COLORREF[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func CreateSolidBrush($crColor)' & @CRLF $AutoitScriptCodeA &= '$HBRUSH = DllCall("Gdi32.dll","DWORD","CreateSolidBrush","DWORD",$crColor)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HBRUSH[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HBRUSH[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetSysColorBrush($nIndex)' & @CRLF $AutoitScriptCodeA &= '$HBRUSH = DllCall("User32.dll","ptr","GetSysColorBrush","int",$nIndex)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HBRUSH[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HBRUSH[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SendMessage($hWnd,$Msg,$wParam,$lParam)' & @CRLF $AutoitScriptCodeA &= '$LRESULT = DllCall("User32.dll","LRESULT","SendMessageW","HWND",$hWnd,"UINT",$Msg, _' & @CRLF $AutoitScriptCodeA &= '"WPARAM",$wParam,"LPARAM",$lParam)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$LRESULT[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetLastError()' & @CRLF $AutoitScriptCodeA &= '$iErr = DllCall("Kernel32.dll","DWORD","GetLastError")' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$iErr[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func MoveMemory($Source,$Destination,$Length)' & @CRLF $AutoitScriptCodeA &= 'DllCall("Kernel32.dll","none","RtlMoveMemory","PTR",$Destination,"PTR",$Source,"INT",$Length)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func OnAutoItExit()' & @CRLF $AutoitScriptCodeA &= 'EndDialog($DlgHwnd,0)' & @CRLF $AutoitScriptCodeA &= 'DllCallbackFree($iPtrDialogFunc)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF For $i = 0 To UBound($DlgStructInfo) - 1 if $StructNumber <> $DlgStructInfo[$i][0] Then ContinueLoop if ("Dialog" == $DlgStructInfo[$i][3]) Then $AutoitScriptCodeB = $DlgStructInfo[$i][1] & $AutoitScriptCodeB $AutoitScriptCodeA = StringReplace($AutoitScriptCodeA,"$$StringReplaceDlgResName",$DlgStructInfo[$i][2]) ContinueLoop EndIf $AutoitScriptCodeB &= $DlgStructInfo[$i][1] $AutoitScriptCodeC &= $DlgStructInfo[$i][2] & " ;Switch $CtrlNfcnCode" & @CRLF & _ " ;Place the Cases Of CtrlNfcnCode here" & @CRLF & _ " ;EndSwitch" & @CRLF Next $AutoitScriptCodeA = StringReplace($AutoitScriptCodeA,"$$StringReplaceStructNumber",$StructNumber) $AutoitScriptCodeA = StringReplace($AutoitScriptCodeA,"$$AutoitScriptCode",$AutoitScriptCodeC) if StringLeft($OutDirectoryPath,1) == "\" Then $OutDirectoryPath = StringTrimLeft($OutDirectoryPath,1) DlgStructToResFile($DlgStruct,$OutDirectoryPath & "\Dlg.rc") $Sfo = FileOpen($OutDirectoryPath & "\Res.au3",2) if @error Then Return SetError(4,0,False) FileWrite($Sfo,$AutoitScriptCodeB) FileClose($Sfo) if @error Then Return SetError(5,0,False) $Sfo = FileOpen($OutDirectoryPath & "\Dlg.au3",2) if @error Then Return SetError(6,0,False) FileWrite($Sfo,$AutoitScriptCodeA) FileClose($Sfo) Return SetError(0,0,True) EndFunc Func DlgStructToBinaryAutoitScriptCode($DlgStruct,$OutDirectoryPath) Local $TagDlgStNu,$NuStruct,$StructNumber,$AutoitScriptCodeA = "",$iReturns = 1 Local $AutoitScriptCodeB = "",$AutoitScriptCodeC = "",$AutoitScriptCodeD = "" if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,False) if StringInStr($OutDirectoryPath,".") Then Return SetError(2,0,False) if Not ($iReturns = FileExists($OutDirectoryPath)) Then $iReturns = DirCreate($OutDirectoryPath) if Not ($iReturns) Then Return SetError(3,0,False) $NuStruct = DllStructCreate("INT DlgStNu",DllStructGetPtr($DlgStruct)) $StructNumber = DllStructGetData($NuStruct,1) $AutoitScriptCodeA &= '#include ' & @CRLF $AutoitScriptCodeA &= '#include ' & @CRLF $AutoitScriptCodeA &= '#include ' & @CRLF $AutoitScriptCodeA &= '#include "CtrlsId.au3"' & @CRLF $AutoitScriptCodeA &= '#include "BinaryFile.au3"' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Global $CtrlMsgSend,$iPtrDialogFunc,$DlgHwnd,$OptionsInfo' & @CRLF $AutoitScriptCodeA &= 'OnAutoItExitRegister("OnAutoItExit")' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'WinMain()' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func WinMain()' & @CRLF $AutoitScriptCodeA &= 'Local $RtArray' & @CRLF $AutoitScriptCodeA &= '$RtArray = CreateDlgFromDlgStruct(DlgStructFromBinary(),"DialogProc")' & @CRLF $AutoitScriptCodeA &= 'if @error Then Exit' & @CRLF $AutoitScriptCodeA &= '$DlgHwnd = $RtArray[0]' & @CRLF $AutoitScriptCodeA &= '$iPtrDialogFunc = $RtArray[1]' & @CRLF $AutoitScriptCodeA &= 'ShowWindow($DlgHwnd)' & @CRLF $AutoitScriptCodeA &= 'While True' & @CRLF $AutoitScriptCodeA &= 'WEnd' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func DialogProc($hWnd,$uiMsg,$wParam,$lParam)' & @CRLF $AutoitScriptCodeA &= 'if CtrlMsgSend($uiMsg,True) Then Return False' & @CRLF $AutoitScriptCodeA &= '$Rt = OptionsMsgs($hWnd,$uiMsg,$wParam,$lParam)' & @CRLF $AutoitScriptCodeA &= 'if Not @error Then Return $Rt' & @CRLF $AutoitScriptCodeA &= 'Local $tagNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;INT Code"' & @CRLF $AutoitScriptCodeA &= 'Local $CtrlHwnd,$CtrlNfcnCode,$tNMHDR,$CtrlId,$iBN_CLICKED = 0 _' & @CRLF $AutoitScriptCodeA &= ',$NfAccelerator = 1,$NfMenu = 0,$CLoseId = 2' & @CRLF $AutoitScriptCodeA &= ' Switch $uiMsg' & @CRLF $AutoitScriptCodeA &= ' Case $WM_NOTIFY' & @CRLF $AutoitScriptCodeA &= ' $tNMHDR = DllStructCreate($tagNMHDR,$lParam)' & @CRLF $AutoitScriptCodeA &= ' $CtrlHwnd = DllStructGetData($tNMHDR,"hWndFrom")' & @CRLF $AutoitScriptCodeA &= ' $CtrlId = DllStructGetData($tNMHDR,"IDFrom")' & @CRLF $AutoitScriptCodeA &= ' $CtrlNfcnCode = DllStructGetData($tNMHDR,"Code")' & @CRLF $AutoitScriptCodeA &= ' Switch $CtrlId' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$$AutoitScriptCode' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= ' Case $WM_COMMAND' & @CRLF $AutoitScriptCodeA &= ' $CtrlHwnd = $lParam' & @CRLF $AutoitScriptCodeA &= ' $CtrlId = LOWORD($wParam)' & @CRLF $AutoitScriptCodeA &= ' $CtrlNfcnCode = HIWORD($wParam)' & @CRLF $AutoitScriptCodeA &= ' Switch $CtrlId' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= ' Case $CLoseId ;Example Dlg CLose Button [x]' & @CRLF $AutoitScriptCodeA &= ' Switch $CtrlNfcnCode' & @CRLF $AutoitScriptCodeA &= ' Case $iBN_CLICKED' & @CRLF $AutoitScriptCodeA &= ' $nResult = LOWORD($wParam)' & @CRLF $AutoitScriptCodeA &= ' EndDialog($hWnd,$nResult)' & @CRLF $AutoitScriptCodeA &= ' Exit' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$$AutoitScriptCode' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= ' Return CtrlMsgSend($uiMsg,False)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func CtrlMsgSend($uiMsg,$Flags)' & @CRLF $AutoitScriptCodeA &= 'Select' & @CRLF $AutoitScriptCodeA &= 'Case $Flags = True' & @CRLF $AutoitScriptCodeA &= 'if ($uiMsg = $WM_COMMAND Or $uiMsg = $WM_NOTIFY) Then' & @CRLF $AutoitScriptCodeA &= 'if $CtrlMsgSend = True Then Return True' & @CRLF $AutoitScriptCodeA &= '$CtrlMsgSend = True' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'Case $Flags = False' & @CRLF $AutoitScriptCodeA &= 'if ($uiMsg = $WM_COMMAND Or $uiMsg = $WM_NOTIFY) Then' & @CRLF $AutoitScriptCodeA &= 'if $CtrlMsgSend = False Then Return False' & @CRLF $AutoitScriptCodeA &= '$CtrlMsgSend = False' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'EndSelect' & @CRLF $AutoitScriptCodeA &= 'Return False' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func OptionsMsgs($hWnd,$uiMsg,$wParam,$lParam)' & @CRLF $AutoitScriptCodeA &= ' Switch $uiMsg' & @CRLF $AutoitScriptCodeA &= ' Case $WM_INITDIALOG' & @CRLF $AutoitScriptCodeA &= ' if (($lParam) And Not IsArray($OptionsInfo)) Then _' & @CRLF $AutoitScriptCodeA &= ' $OptionsInfo = OpsInfoFromMemOfDlgSt($lParam)' & @CRLF $AutoitScriptCodeA &= ' if IsArray($OptionsInfo) Then SetFonts($hWnd)' & @CRLF $AutoitScriptCodeA &= ' Return SetError(0,0,True)' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORDLG' & @CRLF $AutoitScriptCodeA &= ' Return SetError(@error,0,SetDlgOptions($wParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLOR' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORBTN' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLOREDIT' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORLISTBOX' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORSCROLLBAR' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' Case $WM_CTLCOLORSTATIC' & @CRLF $AutoitScriptCodeA &= ' ;Return SetError(@error,0,SetDlgCtrlOptions($wParam,$lParam))' & @CRLF $AutoitScriptCodeA &= ' EndSwitch' & @CRLF $AutoitScriptCodeA &= ' Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func CreateDlgFromDlgStruct($DlgStruct,$FuncNameOfDialog,$hWndParent = 0,$Param = 0)' & @CRLF $AutoitScriptCodeA &= 'Local $RTArray[2]' & @CRLF $AutoitScriptCodeA &= 'if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '$DlgTemplaStruct = DlgStToTempSt($DlgStruct)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(2,0,0)' & @CRLF $AutoitScriptCodeA &= '$DialogFunc = DllCallbackRegister($FuncNameOfDialog,"BOOL","HWND;UINT;WPARAM;LPARAM")' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(3,0,0)' & @CRLF $AutoitScriptCodeA &= '$PtrDialogFunc = DllCallbackGetPtr($DialogFunc)' & @CRLF $AutoitScriptCodeA &= '$hInstance = GetModuleHandle()' & @CRLF $AutoitScriptCodeA &= 'if Not($Param) Then $Param = GlobalAllocFromDlgSt($DlgStruct)' & @CRLF $AutoitScriptCodeA &= '$DHWND = DllCall("User32.dll","HWND","CreateDialogIndirectParamW","PTR",$hInstance,"PTR", _' & @CRLF $AutoitScriptCodeA &= 'DllStructGetPtr($DlgTemplaStruct),"PTR",$hWndParent,"PTR",$PtrDialogFunc,"PTR",$Param)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $DHWND[0] = 0 Then Return SetError(4,0,0)' & @CRLF $AutoitScriptCodeA &= '$RTArray[0] = $DHWND[0]' & @CRLF $AutoitScriptCodeA &= '$RTArray[1] = $PtrDialogFunc' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$RTArray)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func DlgStToTempSt($DlgStruct)' & @CRLF $AutoitScriptCodeA &= 'if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '$SizeOfDlgStruct = DllStructGetSize($DlgStruct)' & @CRLF $AutoitScriptCodeA &= '$PotrOfDlgStruct = DllStructGetPtr($DlgStruct)' & @CRLF $AutoitScriptCodeA &= '$DlgTemplaStruct = DllStructCreate("BYTE DlgTemplaStruct[" & ($SizeOfDlgStruct - 4) & "]")' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(2,0,0)' & @CRLF $AutoitScriptCodeA &= '$PtrOfDlgTemplSt = DllStructGetPtr($DlgTemplaStruct)' & @CRLF $AutoitScriptCodeA &= 'MoveMemory(($PotrOfDlgStruct + 4),$PtrOfDlgTemplSt,($SizeOfDlgStruct - 4))' & @CRLF $AutoitScriptCodeA &= ';$PotrOfDlgStruct + 4 Move Ptr Pos To After int DlgStNu' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(3,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$DlgTemplaStruct)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetFonts($hWnd)' & @CRLF $AutoitScriptCodeA &= 'if IsArray($OptionsInfo) Then' & @CRLF $AutoitScriptCodeA &= 'For $i = 0 To UBound($OptionsInfo) - 1' & @CRLF $AutoitScriptCodeA &= '$FontName = $OptionsInfo[$i][1]' & @CRLF $AutoitScriptCodeA &= '$FontSize = $OptionsInfo[$i][2]' & @CRLF $AutoitScriptCodeA &= '$FontWeight = $OptionsInfo[$i][3]' & @CRLF $AutoitScriptCodeA &= '$Italic = $OptionsInfo[$i][4]' & @CRLF $AutoitScriptCodeA &= '$Underline = $OptionsInfo[$i][5]' & @CRLF $AutoitScriptCodeA &= '$Strikethru = $OptionsInfo[$i][6]' & @CRLF $AutoitScriptCodeA &= '$HFONT = CreateFont($FontSize,0,0,0,$FontWeight,$Italic,$Underline,$Strikethru,0,0,0,0,1,$FontName)' & @CRLF $AutoitScriptCodeA &= 'if ($HFONT) Then' & @CRLF $AutoitScriptCodeA &= 'if $OptionsInfo[$i][0] = -1 Then' & @CRLF $AutoitScriptCodeA &= 'SendMessage($hWnd,0x0030,$HFONT,False) ; $Msg ==> WM_SETFONT = 0x0030' & @CRLF $AutoitScriptCodeA &= 'Else' & @CRLF $AutoitScriptCodeA &= '$CtrlID = $OptionsInfo[$i][0]' & @CRLF $AutoitScriptCodeA &= 'SendMessage(GetDlgItem($hWnd,$CtrlID),0x0030,$HFONT,False) ; $Msg ==> WM_SETFONT = 0x0030' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'DeleteObject($HFONT)' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'Next' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetDlgOptions($HDC)' & @CRLF $AutoitScriptCodeA &= 'Local $iElement , $HBRUSH' & @CRLF $AutoitScriptCodeA &= '$iElement = IsOptions(-1)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '$iTRANSPARENT = $OptionsInfo[$iElement][7]' & @CRLF $AutoitScriptCodeA &= '$IsBkColor = $OptionsInfo[$iElement][8]' & @CRLF $AutoitScriptCodeA &= '$IsTextColor = $OptionsInfo[$iElement][9]' & @CRLF $AutoitScriptCodeA &= '$BkColor = $OptionsInfo[$iElement][10]' & @CRLF $AutoitScriptCodeA &= '$TextColor = $OptionsInfo[$iElement][11]' & @CRLF $AutoitScriptCodeA &= 'if ($iTRANSPARENT) Then SetBkMode($HDC,$TRANSPARENT)' & @CRLF $AutoitScriptCodeA &= 'if ($IsBkColor) Then SetBkColor($HDC,$BkColor)' & @CRLF $AutoitScriptCodeA &= 'if ($IsTextColor) Then SetTextColor($HDC,$TextColor)' & @CRLF $AutoitScriptCodeA &= 'if ($IsBkColor) Then' & @CRLF $AutoitScriptCodeA &= '$BkColor = StringTrimLeft(Hex($BkColor,8),2)' & @CRLF $AutoitScriptCodeA &= '$BkColor = "0x" & StringMid($BkColor, 5, 2) & StringMid($BkColor, 3, 2) & _' & @CRLF $AutoitScriptCodeA &= 'StringMid($BkColor, 1, 2)' & @CRLF $AutoitScriptCodeA &= '$HBRUSH = CreateSolidBrush($BkColor)' & @CRLF $AutoitScriptCodeA &= 'Else' & @CRLF $AutoitScriptCodeA &= '$HBRUSH = GetSysColorBrush(15) ; 15 ==> COLOR_3DFACE' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HBRUSH)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetDlgCtrlOptions($HDC,$hWnd)' & @CRLF $AutoitScriptCodeA &= 'Local $iElement' & @CRLF $AutoitScriptCodeA &= '$CtrlID = GetDlgCtrlID($hWnd)' & @CRLF $AutoitScriptCodeA &= '$iElement = IsOptions($CtrlID)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '$iTRANSPARENT = $OptionsInfo[$iElement][7]' & @CRLF $AutoitScriptCodeA &= '$IsBkColor = $OptionsInfo[$iElement][8]' & @CRLF $AutoitScriptCodeA &= '$IsTextColor = $OptionsInfo[$iElement][9]' & @CRLF $AutoitScriptCodeA &= '$BkColor = $OptionsInfo[$iElement][10]' & @CRLF $AutoitScriptCodeA &= '$TextColor = $OptionsInfo[$iElement][11]' & @CRLF $AutoitScriptCodeA &= ';Place the Options code here' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func IsOptions($CtrlID)' & @CRLF $AutoitScriptCodeA &= 'if Not IsArray($OptionsInfo) Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'For $i = 0 To UBound($OptionsInfo) - 1' & @CRLF $AutoitScriptCodeA &= 'if ($CtrlID = $OptionsInfo[$i][0]) Then Return SetError(0,0,$i)' & @CRLF $AutoitScriptCodeA &= 'Next' & @CRLF $AutoitScriptCodeA &= 'Return SetError(2,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func OpsInfoFromMemOfDlgSt($hMem)' & @CRLF $AutoitScriptCodeA &= 'Local $SizeOfDlgOps,$MovePos,$ArrayOfOptionsInfo[1][12]' & @CRLF $AutoitScriptCodeA &= 'if Not IsPtr($hMem) Then $hMem = Ptr($hMem)' & @CRLF $AutoitScriptCodeA &= '$SizeOfDlgStruct = GlobalSize($hMem)' & @CRLF $AutoitScriptCodeA &= '$PtrOfDlgStruct = GlobalLock($hMem)' & @CRLF $AutoitScriptCodeA &= '$OutPtrA = $PtrOfDlgStruct + ($SizeOfDlgStruct - 4) ;4 ==> SizeOf int OptionsOfset' & @CRLF $AutoitScriptCodeA &= '$OfsetStruct = DllStructCreate("INT OptionsOfset",$OutPtrA)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '$OptionsOfset = DllStructGetData($OfsetStruct,1)' & @CRLF $AutoitScriptCodeA &= '$SizeOfOptionsStruct = ($SizeOfDlgStruct - $OptionsOfset)' & @CRLF $AutoitScriptCodeA &= 'if ($SizeOfOptionsStruct = 4) Then Return SetError(2,0,0)' & @CRLF $AutoitScriptCodeA &= '$OptionsStruct = DllStructCreate("BYTE OptionsStruct[" & $SizeOfOptionsStruct & "]")' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(3,0,0)' & @CRLF $AutoitScriptCodeA &= '$PtrOfOptionsStruct = DllStructGetPtr($OptionsStruct)' & @CRLF $AutoitScriptCodeA &= '$OutPtrB = $PtrOfDlgStruct + $OptionsOfset' & @CRLF $AutoitScriptCodeA &= 'MoveMemory($OutPtrB,$PtrOfOptionsStruct,$SizeOfOptionsStruct)' & @CRLF $AutoitScriptCodeA &= '$DlgOpsSt = DllStructCreate("int IsDlgOps;int LenOfFontName",$PtrOfOptionsStruct)' & @CRLF $AutoitScriptCodeA &= 'if (DllStructGetData($DlgOpsSt,1) = -100) Then' & @CRLF $AutoitScriptCodeA &= '$UBound = UBound($ArrayOfOptionsInfo) - 1' & @CRLF $AutoitScriptCodeA &= '$LenOfFontName = DllStructGetData($DlgOpsSt,2)' & @CRLF $AutoitScriptCodeA &= '$tagNewOptionsStruct = "int IsDlgOps;int LenOfFontName;WCHAR FontName[" & $LenOfFontName & "];" & _' & @CRLF $AutoitScriptCodeA &= '"int FontSize;int FontWeight;int Italic;int Underline;int Strikethru;int TRANSPARENT;" & _' & @CRLF $AutoitScriptCodeA &= '"int IsBkColor;int IsTextColor;int BkColor;int TextColor"' & @CRLF $AutoitScriptCodeA &= '$DlgOptionsSt = DllStructCreate($tagNewOptionsStruct,$PtrOfOptionsStruct)' & @CRLF $AutoitScriptCodeA &= '$SizeOfDlgOps = DllStructGetSize($DlgOptionsSt)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][0] = -1' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][1] = DllStructGetData($DlgOptionsSt,3)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][2] = DllStructGetData($DlgOptionsSt,4)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][3] = DllStructGetData($DlgOptionsSt,5)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][4] = DllStructGetData($DlgOptionsSt,6)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][5] = DllStructGetData($DlgOptionsSt,7)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][6] = DllStructGetData($DlgOptionsSt,8)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][7] = DllStructGetData($DlgOptionsSt,9)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][8] = DllStructGetData($DlgOptionsSt,10)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][9] = DllStructGetData($DlgOptionsSt,11)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][10] = DllStructGetData($DlgOptionsSt,12)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][11] = DllStructGetData($DlgOptionsSt,13)' & @CRLF $AutoitScriptCodeA &= 'ReDim $ArrayOfOptionsInfo[UBound($ArrayOfOptionsInfo) + 1][12]' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= '$MovePos += $SizeOfDlgOps' & @CRLF $AutoitScriptCodeA &= 'if ($SizeOfOptionsStruct - $SizeOfDlgOps) = 4 Then Return SetError(0,0,$ArrayOfOptionsInfo) ;4 ==> Size Of int OptionsOfset' & @CRLF $AutoitScriptCodeA &= 'While ($MovePos < ($SizeOfOptionsStruct - 4)) ;4 ==> Size Of int OptionsOfset' & @CRLF $AutoitScriptCodeA &= '$UBound = UBound($ArrayOfOptionsInfo) - 1' & @CRLF $AutoitScriptCodeA &= '$DlgCtrOpsSt = DllStructCreate("int CtrlId;int LenOfFontName",$PtrOfOptionsStruct + $MovePos)' & @CRLF $AutoitScriptCodeA &= '$LenOfFontName = DllStructGetData($DlgCtrOpsSt,2)' & @CRLF $AutoitScriptCodeA &= '$tagNewOptionsStruct = "int CtrlId;int LenOfFontName;WCHAR FontName[" & $LenOfFontName & "];" & _' & @CRLF $AutoitScriptCodeA &= '"int FontSize;int FontWeight;int Italic;int Underline;int Strikethru;int TRANSPARENT;" & _' & @CRLF $AutoitScriptCodeA &= '"int IsBkColor;int IsTextColor;int BkColor;int TextColor"' & @CRLF $AutoitScriptCodeA &= '$OptionsStOfDlgCtrls = DllStructCreate($tagNewOptionsStruct,$PtrOfOptionsStruct + $MovePos)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][0] = DllStructGetData($OptionsStOfDlgCtrls,1)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][1] = DllStructGetData($OptionsStOfDlgCtrls,3)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][2] = DllStructGetData($OptionsStOfDlgCtrls,4)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][3] = DllStructGetData($OptionsStOfDlgCtrls,5)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][4] = DllStructGetData($OptionsStOfDlgCtrls,6)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][5] = DllStructGetData($OptionsStOfDlgCtrls,7)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][6] = DllStructGetData($OptionsStOfDlgCtrls,8)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][7] = DllStructGetData($OptionsStOfDlgCtrls,9)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][8] = DllStructGetData($OptionsStOfDlgCtrls,10)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][9] = DllStructGetData($OptionsStOfDlgCtrls,11)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][10] = DllStructGetData($OptionsStOfDlgCtrls,12)' & @CRLF $AutoitScriptCodeA &= '$ArrayOfOptionsInfo[$UBound][11] = DllStructGetData($OptionsStOfDlgCtrls,13)' & @CRLF $AutoitScriptCodeA &= 'ReDim $ArrayOfOptionsInfo[UBound($ArrayOfOptionsInfo) + 1][12]' & @CRLF $AutoitScriptCodeA &= '$MovePos += DllStructGetSize($OptionsStOfDlgCtrls)' & @CRLF $AutoitScriptCodeA &= 'WEnd' & @CRLF $AutoitScriptCodeA &= 'ReDim $ArrayOfOptionsInfo[UBound($ArrayOfOptionsInfo) - 1][12]' & @CRLF $AutoitScriptCodeA &= 'GlobalUnlock($hMem)' & @CRLF $AutoitScriptCodeA &= 'GlobalFree($hMem)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$ArrayOfOptionsInfo)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalAllocFromDlgSt($DlgStruct)' & @CRLF $AutoitScriptCodeA &= 'if Not IsDllStruct($DlgStruct) Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$StuSize = DllStructGetSize($DlgStruct)' & @CRLF $AutoitScriptCodeA &= '$StuPtr = DllStructGetPtr($DlgStruct)' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$hMem = GlobalAlloc(0x0042,$StuSize) ;$GHND = 0x0042' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(2,0,0)' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= '$hLock = GlobalLock($hMem)' & @CRLF $AutoitScriptCodeA &= 'if @error Then' & @CRLF $AutoitScriptCodeA &= 'GlobalFree($hMem)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(3,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndIf' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'MoveMemory($StuPtr,$hLock,$StuSize)' & @CRLF $AutoitScriptCodeA &= 'GlobalUnlock($hMem)' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$hMem)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetDlgCtrlID($hwndCtl)' & @CRLF $AutoitScriptCodeA &= '$CtrlID = DllCall("User32.dll","int","GetDlgCtrlID","HWND",$hwndCtl)' & @CRLF $AutoitScriptCodeA &= 'if (@error Or GetLastError()) Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$CtrlID[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetDlgItem($hDlg,$nIDDlgItem)' & @CRLF $AutoitScriptCodeA &= '$HWND = DllCall("User32.dll","HWND","GetDlgItem","HWND",$hDlg,"int",$nIDDlgItem)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HWND[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HWND[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func EndDialog($hDlg,$nResult)' & @CRLF $AutoitScriptCodeA &= '$Rt = DllCall("User32.dll","BOOL","EndDialog","HWND",$hDlg,"ptr",$nResult)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $Rt[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$Rt[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func ShowWindow($hWnd,$nCmdShow = 5)' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("User32.dll","BOOL","ShowWindow","HWND",$hWnd,"INT",$nCmdShow)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $BOOL[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$BOOL[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func LOWORD($dwValue)' & @CRLF $AutoitScriptCodeA &= 'Return BitAND($dwValue,0xFFFF)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func HIWORD($dwValue)' & @CRLF $AutoitScriptCodeA &= 'Return BitShift($dwValue,16)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetModuleHandle($lpModuleName = 0)' & @CRLF $AutoitScriptCodeA &= 'Local $DataType = "WSTR"' & @CRLF $AutoitScriptCodeA &= 'if IsInt($lpModuleName) Then $DataType = "INT"' & @CRLF $AutoitScriptCodeA &= '$HMODULE = DllCall("Kernel32.dll","PTR","GetModuleHandleW",$DataType,$lpModuleName)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HMODULE[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HMODULE[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalAlloc($uFlags,$dwBytes)' & @CRLF $AutoitScriptCodeA &= '$HGLOBAL = DllCall("Kernel32.dll","ptr","GlobalAlloc","UINT",$uFlags,"ULONG_PTR",$dwBytes)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HGLOBAL[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HGLOBAL[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalLock($hMem)' & @CRLF $AutoitScriptCodeA &= '$LPVOID = DllCall("Kernel32.dll","ptr","GlobalLock","ptr",$hMem)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $LPVOID[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$LPVOID[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalUnlock($hMem)' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Kernel32.dll","BOOL","GlobalUnlock","ptr",$hMem)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $BOOL[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,$BOOL[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalSize($hMem)' & @CRLF $AutoitScriptCodeA &= '$Size = DllCall("Kernel32.dll","ULONG_PTR","GlobalSize","ptr",$hMem)' & @CRLF $AutoitScriptCodeA &= 'if (@error Or GetLastError()) Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$Size[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GlobalFree($hMem)' & @CRLF $AutoitScriptCodeA &= '$HGLOBAL = DllCall("Kernel32.dll","ULONG_PTR","GlobalFree","ptr",$hMem)' & @CRLF $AutoitScriptCodeA &= 'if (@error Or ($HGLOBAL[0])) Then Return SetError(1,0,$HGLOBAL[0])' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,0)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func CreateFont($nHeight,$nWidth,$nEscapement,$nOrientation,$fnWeight,$fdwItalic, _' & @CRLF $AutoitScriptCodeA &= '$fdwUnderline,$fdwStrikeOut,$fdwCharSet,$fdwOutputPrecision,$fdwClipPrecision, _' & @CRLF $AutoitScriptCodeA &= '$fdwQuality,$fdwPitchAndFamily,$lpszFace)' & @CRLF $AutoitScriptCodeA &= '$HFONT = DllCall("Gdi32.dll","ptr","CreateFontW","int",$nHeight,"int",$nWidth,"int",$nEscapement, _' & @CRLF $AutoitScriptCodeA &= '"int",$nOrientation,"int",$fnWeight,"DWORD",$fdwItalic,"DWORD",$fdwUnderline,"DWORD",$fdwStrikeOut, _' & @CRLF $AutoitScriptCodeA &= '"DWORD",$fdwCharSet,"DWORD",$fdwOutputPrecision,"DWORD",$fdwClipPrecision,"DWORD",$fdwQuality, _' & @CRLF $AutoitScriptCodeA &= '"DWORD",$fdwPitchAndFamily,"wstr",$lpszFace)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HFONT[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HFONT[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func DeleteObject($hObject)' & @CRLF $AutoitScriptCodeA &= '$BOOL = DllCall("Gdi32.dll","int","DeleteObject","ptr",$hObject)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $BOOL[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$BOOL[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetBkMode($hdc,$iBkMode)' & @CRLF $AutoitScriptCodeA &= '$INT = DllCall("Gdi32.dll","int","SetBkMode","ptr",$hdc,"int",$iBkMode)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $INT[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$INT[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetBkColor($hdc,$crColor)' & @CRLF $AutoitScriptCodeA &= '$COLORREF = DllCall("Gdi32.dll","DWORD","SetBkColor","ptr",$hdc,"DWORD",$crColor)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $COLORREF[0] = 0xFFFFFFFF Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$COLORREF[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SetTextColor($hdc,$crColor)' & @CRLF $AutoitScriptCodeA &= '$COLORREF = DllCall("Gdi32.dll","DWORD","SetTextColor","ptr",$hdc,"DWORD",$crColor)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $COLORREF[0] = 0xFFFFFFFF Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$COLORREF[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func CreateSolidBrush($crColor)' & @CRLF $AutoitScriptCodeA &= '$HBRUSH = DllCall("Gdi32.dll","DWORD","CreateSolidBrush","DWORD",$crColor)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HBRUSH[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HBRUSH[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetSysColorBrush($nIndex)' & @CRLF $AutoitScriptCodeA &= '$HBRUSH = DllCall("User32.dll","ptr","GetSysColorBrush","int",$nIndex)' & @CRLF $AutoitScriptCodeA &= 'if @error Or $HBRUSH[0] = 0 Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$HBRUSH[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func SendMessage($hWnd,$Msg,$wParam,$lParam)' & @CRLF $AutoitScriptCodeA &= '$LRESULT = DllCall("User32.dll","LRESULT","SendMessageW","HWND",$hWnd,"UINT",$Msg, _' & @CRLF $AutoitScriptCodeA &= '"WPARAM",$wParam,"LPARAM",$lParam)' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$LRESULT[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func GetLastError()' & @CRLF $AutoitScriptCodeA &= '$iErr = DllCall("Kernel32.dll","DWORD","GetLastError")' & @CRLF $AutoitScriptCodeA &= 'if @error Then Return SetError(1,0,0)' & @CRLF $AutoitScriptCodeA &= 'Return SetError(0,0,$iErr[0])' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func MoveMemory($Source,$Destination,$Length)' & @CRLF $AutoitScriptCodeA &= 'DllCall("Kernel32.dll","none","RtlMoveMemory","PTR",$Destination,"PTR",$Source,"INT",$Length)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF $AutoitScriptCodeA &= '' & @CRLF $AutoitScriptCodeA &= 'Func OnAutoItExit()' & @CRLF $AutoitScriptCodeA &= 'EndDialog($DlgHwnd,0)' & @CRLF $AutoitScriptCodeA &= 'DllCallbackFree($iPtrDialogFunc)' & @CRLF $AutoitScriptCodeA &= 'EndFunc' & @CRLF For $i = 0 To UBound($DlgStructInfo) - 1 if $StructNumber <> $DlgStructInfo[$i][0] Then ContinueLoop if ("Dialog" == $DlgStructInfo[$i][3]) Then $AutoitScriptCodeB = $DlgStructInfo[$i][1] & $AutoitScriptCodeB ContinueLoop EndIf $AutoitScriptCodeB &= $DlgStructInfo[$i][1] $AutoitScriptCodeC &= $DlgStructInfo[$i][2] & " ;Switch $CtrlNfcnCode" & @CRLF & _ " ;Place the Cases Of CtrlNfcnCode here" & @CRLF & _ " ;EndSwitch" & @CRLF Next $AutoitScriptCodeA = StringReplace($AutoitScriptCodeA,"$$AutoitScriptCode",$AutoitScriptCodeC) if StringLeft($OutDirectoryPath,1) == "\" Then $OutDirectoryPath = StringTrimLeft($OutDirectoryPath,1) DlgStructToBinaryFunc($DlgStruct,$OutDirectoryPath & "\BinaryFile.au3") $Sfo = FileOpen($OutDirectoryPath & "\CtrlsId.au3",2) if @error Then Return SetError(4,0,False) FileWrite($Sfo,$AutoitScriptCodeB) FileClose($Sfo) if @error Then Return SetError(5,0,False) $Sfo = FileOpen($OutDirectoryPath & "\Dlg.au3",2) if @error Then Return SetError(6,0,False) FileWrite($Sfo,$AutoitScriptCodeA) FileClose($Sfo) Return SetError(0,0,True) EndFunc Func MoveMemory($Source,$Destination,$Length) DllCall("Kernel32.dll","none","RtlMoveMemory","PTR",$Destination,"PTR",$Source,"INT",$Length) EndFunc