#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
#include <GuiImageList.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <TreeViewConstants.au3>
#include <WindowsNotifsConstants.au3>
Opt('TrayIconHide', 1)
Global $TreeViewArray[][] = [ _
[0, "进入点", 0, 30, 810, 0, 66, 3, "双手A-62361提示"], _
[0, "进入点", 0, 30, 810, 0, 66, 55, "55-去"], _
[0, "进入点", 0, 30, 810, 0, 66, 56, "55-去"], _
[0, "进入点", 0, 30, 810, 0, 66, 57, "55-不去"], _
[0, "进入点", 0, 30, 810, 0, 66, 27, "作东宴黄蓉(F-60704)"], _
[0, "进入点", 0, 30, 810, 0, 66, 21, "到小破庙"], _
[0, "进入点", 0, 30, 810, 0, 66, 48, "桃木镯O>得桃木镯"], _
[1, "造船司", 39028, 570, 470, 2, 66, 1, "新事件"], _
[2, "港务司", 39028, 930, 330, 2, 66, 2, "新事件"], _
[3, "流浪商人", 39014, 610, 730, 2, 66, 4, "新事件"], _
[3, "流浪商人", 39014, 610, 730, 2, 66, 5, "新事件"], _
[3, "流浪商人", 39014, 610, 730, 2, 66, 6, "新事件"], _
[4, "强力船帆领取处", 39028, 250, 590, 2, 66, 7, "新事件"], _
[4, "强力船帆领取处", 39028, 250, 590, 2, 66, 14, "乱说话"], _
[4, "强力船帆领取处", 39028, 250, 590, 2, 66, 15, "a"], _
[4, "强力船帆领取处", 39028, 250, 590, 2, 66, 16, "b"], _
[4, "强力船帆领取处", 39028, 250, 590, 2, 66, 17, "c"], _
[4, "强力船帆领取处", 39028, 250, 590, 2, 66, 18, "d"], _
[5, "霹雳弹兑换处", 39028, 310, 570, 2, 66, 8, "换宝物"], _
[5, "霹雳弹兑换处", 39028, 310, 570, 2, 66, 9, "乱说话"], _
[5, "霹雳弹兑换处", 39028, 310, 570, 2, 66, 10, "a"], _
[5, "霹雳弹兑换处", 39028, 310, 570, 2, 66, 11, "b"], _
[5, "霹雳弹兑换处", 39028, 310, 570, 2, 66, 12, "c"], _
[5, "霹雳弹兑换处", 39028, 310, 570, 2, 66, 13, "d"], _
[6, "进入点", 0, 30, 310, 0, 66, 23, "新事件"], _
[7, "富豪", 39035, 670, 690, 2, 66, 28, "新事件"], _
[8, "船商", 39080, 510, 670, 2, 66, 30, "新事件"], _
[8, "船商", 39080, 510, 670, 2, 66, 31, "快艇"], _
[8, "船商", 39080, 510, 670, 2, 66, 32, "龙级"], _
[8, "船商", 39080, 510, 670, 2, 66, 33, "铁甲"], _
[8, "船商", 39080, 510, 670, 2, 66, 22, "幽灵船"], _
[8, "船商", 39080, 510, 670, 2, 66, 34, "离开"], _
[9, "码头Q宝商人", 39002, 890, 630, 2, 66, 35, "Q宝服务-1"], _
[9, "码头Q宝商人", 39002, 890, 630, 2, 66, 38, "医疗Q宝(副)"], _
[9, "码头Q宝商人", 39002, 890, 630, 2, 66, 39, "寄养Q宝(副)"], _
[9, "码头Q宝商人", 39002, 890, 630, 2, 66, 40, "提领Q宝(副)"], _
[9, "码头Q宝商人", 39002, 890, 630, 2, 66, 41, "购买Q宝用品(副)"], _
[9, "码头Q宝商人", 39002, 890, 630, 2, 66, 42, "Q宝休息(副)"], _
[10, "鱼贩", 39016, 770, 770, 2, 66, 36, "丐.10>"], _
[10, "鱼贩", 39016, 770, 770, 2, 66, 37, "副事件"], _
[10, "鱼贩", 39016, 770, 770, 2, 66, 43, "副事件"], _
[10, "鱼贩", 39016, 770, 770, 2, 66, 44, "丐.10<"], _
[10, "鱼贩", 39016, 770, 770, 2, 66, 45, "新事件"], _
[10, "鱼贩", 39016, 770, 770, 2, 66, 46, "新事件"], _
[10, "鱼贩", 39016, 770, 770, 2, 66, 47, "新事件"], _
[11, "查小镛", 39031, 430, 670, 2, 66, 19, "新事件"], _
[11, "查小镛", 39031, 430, 670, 2, 66, 20, "新事件"], _
[11, "查小镛", 39031, 430, 670, 2, 66, 24, "新事件"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 25, "7完成提示"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 26, "6换奖励"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 29, "5领地图"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 49, "4得端午粽"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 50, "3端午粽提示"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 58, "2得雄黄酒"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 59, "1雄黄酒提示"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 70, "0起头"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 71, "报名"], _
[12, "端午活动大使", 60913, 750, 510, 2, 66, 72, "了解"], _
[13, "朝廷讨逆使", 38708, 630, 530, 2, 66, 73, "炸弹超人"], _
[13, "朝廷讨逆使", 38708, 630, 530, 2, 66, 74, "要"], _
[13, "朝廷讨逆使", 38708, 630, 530, 2, 66, 75, "新事件"], _
[14, "码头工人", 39784, 350, 730, 2, 66, 51, "进出点"], _
[14, "码头工人", 39784, 350, 730, 2, 66, 52, "离开"], _
[14, "码头工人", 39784, 350, 730, 2, 66, 53, "一般对话"], _
[15, "海上总坛管理员", 39028, 1070, 390, 2, 66, 0, "新事件"], _
[15, "海上总坛管理员", 39028, 1070, 390, 2, 66, 54, "新事件"], _
[16, "城市传送员", 60937, 170, 770, 2, 66, 76, "传"], _
[16, "城市传送员", 60937, 170, 770, 2, 66, 77, "大理"], _
[16, "城市传送员", 60937, 170, 770, 2, 66, 78, "西夏"], _
[16, "城市传送员", 60937, 170, 770, 2, 66, 79, "京城"], _
[16, "城市传送员", 60937, 170, 770, 2, 66, 80, "扬州"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 60, "换宝物"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 61, "乱说话"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 62, "a"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 63, "b"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 64, "c"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 65, "d"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 66, "新事件"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 67, "新事件"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 68, "新事件"], _
[17, "宝物布政司", 39028, 690, 770, 2, 66, 69, "新事件"], _
[18, "于小夫", 39020, 410, 570, 2, 66, 81, "已取货提示"], _
[18, "于小夫", 39020, 410, 570, 2, 66, 82, "寻菜香3-2采买"], _
[18, "于小夫", 39020, 410, 570, 2, 66, 83, "一般对话"] _
]
; ---- 全局 ----
Global $g_hGui, $evtTreeView, $g_hImageList
Global $g_idSearchInput, $g_idSearchBtn
Global $TreeViewArrayMap[], $NullMap[]
; ============== 入口 ==============
_Init()
While 1
Switch GUIGetMsg()
Case -3 ; $GUI_EVENT_CLOSE
ExitLoop
Case $g_idSearchBtn
TreeView_SearchAndSelect($evtTreeView, GUICtrlRead($g_idSearchInput))
EndSwitch
WEnd
_GDIPlus_Shutdown()
GUIDelete()
; ============== 初始化 ==============
Func _Init()
_GDIPlus_Startup()
$g_hGui = GUICreate("懒加载 TreeView Demo", 440, 560)
; 搜索栏
GUICtrlCreateLabel("搜索:", 8, 8, 32, 20)
$g_idSearchInput = GUICtrlCreateInput("", 42, 6, 300, 22, 0x88) ; BitOR($ES_AUTOHSCROLL, $ES_WANTRETURN) 阻止 Enter 走默认按钮路径
$g_idSearchBtn = GUICtrlCreateButton("查找", 348, 5, 80, 24)
; 用加速键处理 Enter,避免默认按钮机制产生重复 BN_CLICKED
Local $aAccel[1][2] = [["{ENTER}", $g_idSearchBtn]]
GUISetAccelerators($aAccel)
; 树控件
$evtTreeView = GUICtrlCreateTreeView(8, 34, 420, 490, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
; 用与虚表相同的图标布局(0=目录 1=进入点 2=战斗 3=NPC 4=子项未选 5=子项选中)
$g_hImageList = _GUIImageList_Create(20, 20, 5, 1, 0)
AddIcon($g_hImageList, _ICO0())
AddIcon($g_hImageList, _ICO1())
AddIcon($g_hImageList, _ICO2())
AddIcon($g_hImageList, _ICO3())
AddIcon($g_hImageList, _ICO4())
AddIcon($g_hImageList, _ICO5())
_GUICtrlTreeView_SetNormalImageList($evtTreeView, $g_hImageList)
_BuildTreeLazy($TreeViewArray)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW)
EndFunc ;==>_Init
; ============== 构建懒加载树 ==============
Func _BuildTreeLazy($arr)
$TreeViewArrayMap = $NullMap ;清空地图
_GUICtrlTreeView_BeginUpdate($evtTreeView)
_GUICtrlTreeView_DeleteAll($evtTreeView)
If UBound($arr) = 0 Then Return _GUICtrlTreeView_EndUpdate($evtTreeView)
_GUICtrlTreeView_Add($evtTreeView, 0, "地图 " & $arr[0][6] & " 共有 " & $arr[UBound($arr) - 1][0] + 1 & " 个对象", 0, 0) ; 添加标题主项信息
Local $Lastgid = -1, $gid, $iIcon, $hItem
For $r = 0 To UBound($arr) - 1
$gid = $arr[$r][0]
If $Lastgid <> $gid Then ;判断是不是新的主项
$Lastgid = $gid
Switch $arr[$r][5]
Case 0
$iIcon = 1
Case 1
$iIcon = 2
Case 2, 3
$iIcon = 3
Case Else
$iIcon = 0
EndSwitch
$hItem = _GUICtrlTreeView_Add($evtTreeView, 0, $arr[$r][1] & " (" & $arr[$r][3] & "," & $arr[$r][4] & ")", $iIcon, $iIcon) ; 添加主项
$TreeViewArrayMap[$hItem & '-h'] = $Lastgid
If $arr[$r][7] >= 0 Then _GUICtrlTreeView_AddChild($evtTreeView, $hItem, "Loading...") ; 添加待加载子项
$TreeViewArrayMap[$Lastgid] = $hItem
$TreeViewArrayMap[$Lastgid & '-n'] = (StringLen($arr[$r][7]) > 0) ? 1 : 0
$TreeViewArrayMap[$Lastgid & '-s'] = $r
Else
If StringLen($arr[$r][7]) > 0 Then $TreeViewArrayMap[$Lastgid & '-n'] += 1
EndIf
Next
_GUICtrlTreeView_EndUpdate($evtTreeView)
EndFunc ;==>_BuildTreeLazy
Func _LoadChildren($hParent, $gid)
Local $hChild, $hOffset = $TreeViewArrayMap[$gid & '-s'], $hCount = $TreeViewArrayMap[$gid & '-n']
If $hCount > 0 Then
Local $hFirst = _GUICtrlTreeView_GetFirstChild($evtTreeView, $hParent)
If $hFirst <> 0 And _GUICtrlTreeView_GetText($evtTreeView, $hFirst) = "Loading..." Then
_GUICtrlTreeView_BeginUpdate($evtTreeView)
_GUICtrlTreeView_Delete($evtTreeView, $hFirst)
For $i = 0 To $hCount - 1
$hChild = _GUICtrlTreeView_AddChild($evtTreeView, $hParent, $TreeViewArray[$i + $hOffset][7] & " " & $TreeViewArray[$i + $hOffset][8], 4, 5)
$TreeViewArrayMap[$hChild & '-h'] = $i + $hOffset
$TreeViewArrayMap[$i + $hOffset & '-c'] = $hChild
Next
_GUICtrlTreeView_EndUpdate($evtTreeView)
EndIf
EndIf
EndFunc ;==>_LoadChildren
; ============== 搜索 ==============
Func TreeView_SearchAndSelect($hTree, $sFind)
Local $iStart = 0, $gidCurrent = -1, $iCurrentRow = -1
Local $hSel = _GUICtrlTreeView_GetSelection($hTree)
If $hSel <> 0 Then
Local $hSelParent = _GUICtrlTreeView_GetParentHandle($hTree, $hSel)
If $hSelParent = 0 Then
$gidCurrent = $TreeViewArrayMap[$hSel & '-h']
$iStart = $TreeViewArrayMap[$gidCurrent & '-s']
Else
$iCurrentRow = $TreeViewArrayMap[$hSel & '-h']
$iStart = $iCurrentRow + 1
$gidCurrent = $TreeViewArrayMap[$hSelParent & '-h']
EndIf
EndIf
Local $hRet = _SearchDataForward($hTree, $sFind, $iStart, UBound($TreeViewArray) - 1, $gidCurrent, -1)
If $hRet Then Return 1
If $iStart > 0 Then
$hRet = _SearchDataForward($hTree, $sFind, 0, $iStart - 1, -1, $iCurrentRow)
If $hRet Then Return 1
EndIf
Return 0
EndFunc ;==>TreeView_SearchAndSelect
Func _SearchDataForward($hTree, $sFind, $iFrom, $iTo, $gidSkipCol1 = -1, $iSkipRow = -1)
Local $gid, $hParent, $hChild
For $i = $iFrom To $iTo
If $i = $iSkipRow Then ContinueLoop
If StringInStr($TreeViewArray[$i][1], $sFind) Then
$gid = $TreeViewArray[$i][0]
If $gid <> $gidSkipCol1 Then
$hParent = $TreeViewArrayMap[$gid]
If $hParent Then
_GUICtrlTreeView_SelectItem($hTree, $hParent)
If _GUICtrlTreeView_GetChildren($hTree, $hParent) Then _GUICtrlTreeView_Expand($hTree, $hParent, True)
Return 1
EndIf
EndIf
EndIf
If String($TreeViewArray[$i][7]) = $sFind Or StringInStr($TreeViewArray[$i][8], $sFind) Then
$gid = $TreeViewArray[$i][0]
$hParent = $TreeViewArrayMap[$gid]
If $hParent Then
_LoadChildren($hParent, $gid)
_GUICtrlTreeView_Expand($hTree, $hParent, True)
$hChild = $TreeViewArrayMap[$i & '-c']
If $hChild Then _GUICtrlTreeView_SelectItem($hTree, $hChild)
Return 1
EndIf
EndIf
Next
Return 0
EndFunc ;==>_SearchDataForward
; ============== WM_NOTIFY ==============
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
If @error Then Return $GUI_RUNDEFMSG
Local $IDFrom = DllStructGetData($tNMHDR, 2)
Local $Event = DllStructGetData($tNMHDR, 3)
$tNMHDR = 0
Switch $IDFrom
Case $evtTreeView
Switch $Event
Case $NM_DBLCLK
Local $hItem = _GUICtrlTreeView_GetSelection($evtTreeView)
If $hItem = 0 Then Return $GUI_RUNDEFMSG
Local $hParent = _GUICtrlTreeView_GetParentHandle($evtTreeView, $hItem)
If $hParent <> 0 Then
Local $iRow = $TreeViewArrayMap[$hItem & '-h']
If $iRow >= 0 And $iRow < UBound($TreeViewArray) Then
ConsoleWrite("双击子项 数据行=" & $iRow & " EventID=" & $TreeViewArray[$iRow][7] & " Text=" & $TreeViewArray[$iRow][8] & @CRLF)
EndIf
EndIf
Case $TVN_SELCHANGEDW ; 选择变化
Local $tN = DllStructCreate($tagNMTREEVIEW, $lParam)
Local $hNewItem = DllStructGetData($tN, "NewhItem")
Local $hParent = _GUICtrlTreeView_GetParentHandle($evtTreeView, $hNewItem)
If $hParent <> 0 Then
Local $iRow = $TreeViewArrayMap[$hNewItem & '-h']
If $iRow >= 0 And $iRow < UBound($TreeViewArray) Then
ConsoleWrite("选择子项 数据行=" & $iRow & " EventID=" & $TreeViewArray[$iRow][7] & " Text=" & $TreeViewArray[$iRow][8] & @CRLF)
EndIf
EndIf
Return 1 ; 阻止 AutoIt 默认处理(避免触发默认按钮)
Case $TVN_ITEMEXPANDINGW ; 懒加载
Local $tN = DllStructCreate($tagNMTREEVIEW, $lParam)
If DllStructGetData($tN, "Action") = $TVE_EXPAND Then
_LoadChildren(DllStructGetData($tN, "NewhItem"), $TreeViewArrayMap[DllStructGetData($tN, "NewhItem") & '-h'])
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
; ============== 辅助:图标解码 ==============
Func AddIcon($hIL, $bBytes)
Local $hBmp = _GDIPlus_BitmapCreateFromMemory($bBytes)
Local $hIco = _GDIPlus_HICONCreateFromBitmap($hBmp)
_GUIImageList_ReplaceIcon($hIL, -1, $hIco)
_WinAPI_DestroyIcon($hIco)
_GDIPlus_BitmapDispose($hBmp)
EndFunc ;==>AddIcon
Func _WinAPI_Base64Decode($sB64String)
Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
$aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
Return DllStructGetData($bBuffer, 1)
EndFunc ;==>_WinAPI_Base64Decode
Func _ICO0()
Local $s
$s &= 'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAMMOAADDDgAAAAAAAAAAAADblhIA25YSANuWEgDblhIA25YSANuWEgDblhIA25YSANuWEgDblhIA25YSANuWEgDblhIA25YSANuWEgDblhIA25YSANuWEg3blhIg25YSDtuWEgDblhIA25YSDtuWEiHblhIh25YSIduWEiHblhIh25YSIduWEiDblhIN25YSANuWEg3blhKi25YS5tuWEqfblhIM25YSDtuWEqfblhLk25YS4tuWEuLblhLi25YS4tuWEuLblhLk25YSoNuWEgzblhIf25YS39uWEv/blhLk25YSHNuWEhzblhLk25YS/9uWEv/blhL/25YS/9uWEv/blhL/25YS/9uWEtzblhIc25YSC9uWEpXblhLZ25YSmduWEgrblhIK25YSmduWEtfblhLW25YS1tuWEtbblhLW25YS1tuWEtfblhKS25YSCtuWEgDblhIH25YSE9uWEgfblhIA25YSANuWEgfblhIT25YSFNuWEhTblhIU25YSFNuWEhTblhIT25YSBtuWEgDblhIA25YSDtuWEiDblhIO25YSANuWEgDblhIO25YSIduWEiHblhIh25YSIduWEiHblhIh25YSINuWEg3blhIA25YSDduWEqPblhLn25YSqNuWEg3blhIN25YSqNuWEuXblhLj25YS49uWEuPblhLj25YS49uWEuXblhKh25YSDNuWEh/blhLf25YS/9uWEuTblhIc25YSHNuWEuTblhL/25YS/9uWEv/blhL/25YS/9uWEv/blhL/25YS3NuWEhzblhIL25YSk9uWEtjblhKY25YSCtuWEgrblhKY25YS1tuWEtXblhLU25YS1NuWEtTblhLV25YS1tuWEpHblhIK25YSANuWEgbblhIS25YSBtuWEgDblhIA25YSBtuWEhLblhIS25YSEtuWEhLblhIS25YSEtuWEhLblhIG25YSANuWEgDblhIQ25YSJNuWEhDblhIA25YSANuWEhDblhIk25YSJNuWEiTblhIk25YSJNuWEiXblhIk25YSD9uWEgDblhIO25YSp9uWEurblhKs25YSDduWEg3blhKs25YS6NuWEubblhLm25YS5tuWEubblhLm25YS6NuWEqTblhIN25YSH9uWEt/blhL/25YS5NuWEhzblhIc25YS5NuWEv/blhL/25YS/9uWEv/blhL/25YS/9uWEv/blhLc25YSHNuWEgrblhKP25YS0tuWEpTblhIK25YSCtuWEpTblhLR25YSz9uWEs/blhLP25YSz9uWEs/blhLR25YSjduWEgnblhIA25YSB9uWEhTblhIH25YSANuWEgDblhIH25YSFNuWEhXblhIV25YSFduWEhXblhIV25YSFNuWEgbblhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
Local $b = _WinAPI_Base64Decode($s)
If @error Then Return SetError(1, 0, 0)
Return Binary($b)
EndFunc ;==>_ICO0
Func _ICO1()
Local $s
$s &= 'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAMMOAADDDgAAAAAAAAAAAABKMvUASjL1AEoy9QBKMvUASjL1AEsz9QBLM/UAAADrAmhV969/bvjLWkT2ZiwQ8xv08v8ATTb1AEox9QBKMvUASjL1AEoy9QxKMvUbSjL1L0kw9TBGLfUwQin0LzUa9DOLe/nB6eb+/8vE/PmbjfnQblv3g0019T1KMvUjSjL1Ikoy9QBKMvUWSjL1M0cu9V1iTfbBhHT48LWr++2yp/vunI/6+vn4////////+/v//9zV/f94ZvjMQyr1Skoy9UJKMvUASjL1AEoy9QAUAPILjH35qK6j+//+/v//+/r//7Op+//39v/////////////6+f//lYf5twAA6gRKMvUASjL1AEoy9QBLM/UAQyr1OYd4+Ni7svv//v3///n4//+yqPv/9/b/////////////+Pj//5SF+bcAAO4GSTL1AEAm9CQ4HfQkNRr0IU019V6Thfn5tKv7//v6///5+f//sqj7//j4//////////////j4//+Uhfm3AADuBkky9QCDcvjlrqP75a6j++Wsofrs49/9/sW9/P+8tPv/9vX//7Ko+//i3v3/+fj////////4+P//lIX5twAA7gZJMvUAsqj7///////////////////////+/v//tq37/7+3+/+1rPv/tqz7/+He/f//////+Pj//5SF+bcAAO4GSTL1AKyh+v/498//9vX///f2///+/v//9fT+/62i+v/Qyvz/tav7/7as+//h3v3///////j4//+Uhfm3AADuBkky9QBvXPe5jHz5uYt8+biIefjLzsf8/bOp+//Qyvz/+vr//7Ko+//i3v3/+fj////////4+P//5SF+bcAAO4GSTL1ADwDxBwAA7wcAAOYDSC/1SIV1+PfNxvz///////n4//+yqPv/+Pj/////////////+Pj//5SF+bcAAO4GSTL1AEoy9QBKMvUASjL1AD0j9DCWifnF0Mr8///////6+f//sqj7//f2//////////////j4//+Uhfm3AADuBkky9QAAAAAAAAAAAEoy9QAAAPAGhnb4q5uN+f+2rPv/s6n7/52Q+v/4+P/////////////6+f//lYf5uAAA7gZJMvUAAAAAAAAAAABJMvQAAADuA3Bd96KbjfnwmIv57JOF+e2Thfn5+vn////////7+///29b9/39u+K8AAO8FSjL1AAAAAAAAAAAASjL0AFI79QFHL/UfSC/1L0kx9S47IfQyjHz5wenm/v/Kw/z5mo350W5a94RON/UuAADvAEoy9QAAAAAAAAAAAEoy9ABJMfQASjL1AEsz9QBLM/UAAADrAmhU969/bvjKWUP2Zi0R8xv49/8ATzf1ACkM8wBKMvUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAA=='
Local $b = _WinAPI_Base64Decode($s)
If @error Then Return SetError(1, 0, 0)
Return Binary($b)
EndFunc ;==>_ICO1
Func _ICO2()
Local $s
$s &= 'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAMMOAADDDgAAAAAAAAAAAAAznf8AM53/ADOd/wAznf8ASH/yAEeB8wBHgfMAP4P9AP9UAAD+WxcA/lsXAP5aFgD/kVoA/5FaAP+RWgD/kVoAM53/ADOd/wIznf8nM53/Hj2P+QBHgfMLR4HzGj6D/QH/VQAA/lsXGf5bFwz+djkA/5FaHv+RWif/kVoC/5FaADOd/wAznf8qM53/2zOd/803l/xGR4HzmkeB87U+g/4M/1cCCf5bF67+Whaf/4RJSP+SW83/kVrb/5FaKv+RWgAznf8AM53/IzOd/9U0m/7/QIv38EeA8+9HgfNkM5X/AZ5xjgD+Wxde/loW7v5tLfH/jVX//5Jb1f+RWiP/kVoADtH/AD2P+QA3l/xQQIv39ESD9P84evnuL3H9XAC4/wD/AAAA/1oXW/9dF+3+YBj//m0u9P+FS1D+dTcA///kAEeB8wBHgfMGR4DzmEaC8/EerPnwGJ39/y1z/fAzcfh68Vwnev9dFvD+liX//qQo8P5dF/D+Whaa/lsWB/5bFwBHgfMAR4HzCEeB84RHgfNbAM7+ZgDL//MYnf7+L3P7/INooPzukzb+/9Yy8/7aNWb+Wxdb/lsXh/5bFwn+WxcAR4HzAEeB8wBIgvEBO5bqAAD//wEewOOUBsj6/xqc/P8tc/3/bZDB/8nAaJX//wAB8YYvAP1cGQH+WxcA/lsXAEeC9ADzXiYA2mNDAP5bGQD/WBI78GEkzF+iqP8Ayv//G537/yxz/v8ucf3NLHH/PDBw+gBdbckAOXHwAP5aFgD/WxcA/1sXAP9bFwH/WxdX/1oX4f9cFv/lmzt8Q9DI/wHK//8Znf38LXP9/y5y/eEucv1XLnL9AS5y/QAucv0A/1sXAP9bFwn/Wxd1/1oX8P9dF//+liX8/9Uy/8vXXd0JzvbcAcr+/xid/fwtc/3/LnL98C5y/XUucv0JLnL9AP9bFwD/Wxdv/1oX+/9dF///liX8/tU0//7aNej/2SxFAM3/QwDO/ucByv7/GJ39/C1z/f8ucv37LnL9by5y/QD/WRcA/1oXkv9dF///liX8/tU0//7aNfX+2TVj4NdNAB3O5wAAzf5gAM7+9AHK/v8Ynf38LXP9/y5x/ZIvcf4A/4AgAP9hGJL/liX//tU0//7aNf7+2TWB/tk1A//ZMgAAzf8AAM3+AwDN/n4Azf79Acr+/xid/f8sd/2SII3+AP3/SAD/lyVU/tAzmf7aNZn+2TV5/tk1Df7ZNQD+2TUAAM3+AADN/gAAzf4MAM3+dwDO/poDxv6ZGJ39VAD//wD/AAAA/wAAAP9qGwD+3TYA/tk1AP7ZNQD+2TUAAAAAAAAAAAAAzf4AAM3+AADM/gAAz/4AJ339AKIA+gD/APwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAA=='
Local $b = _WinAPI_Base64Decode($s)
If @error Then Return SetError(1, 0, 0)
Return Binary($b)
EndFunc ;==>_ICO2
Func _ICO3()
Local $s
$s &= 'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAMMOAADDDgAAAAAAAAAAAAAzMzMAICUnABgaGxAcJCgkHSYqJB0mKiQdJiokHSYqJB0mKiQdJiokHSYqJB0mKiQcJSokGCMoECAoKwAzMzMAMzMzABgcHg50bmunpH1q4aR2X9+kd2Dfpnhh36d5Yd+neWHfpnhh36R3YN+kd2Dfo3Zg4XNZTKcYIygOMzMzADMzMwAVGRwaoJiT3vy5l//7qoH//ayD/9KScv+Wblr/lm5a/9KScv/9rIP/+6uC//urg/+ec17eFSEnGjMzMwAzMzMAAAAACoiGhb71wKb/+qmA//yrg//QkXH/lG1a/5RtWv/QkXH//KuD//qqgv/zpn//hmVUvgAFFAozMzMAMzMzAJ6engBaXF1y0r2y//2zjf/7qoL//q2E//+thP//rYT//qyE//urgv/9rIP/0JFx/1hJQnKbcVwAMzMzADMzMwAyMjIAHR4eF4SDg8DnxLP/5KB+/76GavaoeWLlqHli5b6GavbknXn/5Z16/4JiUsAdJioXMjIzADMzMwAAAAAAPT09AEhISQA4OTotdnNyt29gWJo+ODVCHSMiIB0jIiA+OTdCblZKmnRaTbc3NjUtRz87ADw5NwAAAAAAAAAAADMzMwDKysoASUpLAAAAAAsAAAAINTY7N0NHXXJDR11xNTY7OAAAAAgAEh4LSEA8AMWLbQAzMzMAAAAAAAAAAAAAAAAAMzMzACopKQAMCAAGUlRggGh0se9zhd3/c4Xe/2Nvse9ESGCAHBYABi8uKQAzMzMAAAAAAAAAAAAAAAAAAAAAADU1NQBdXV4ATk1KVIWOvPiDmP//gZb//4GW//+Blv//Z3W89zw+SlRDR14ANDQ0AAAAAAAAAAAAAAAAAAAAAAAzMzMAAAAAAXR0dqKbqfD/f5T//4CV//+Alf//gJX//3qO7/9MU3ahAAAAATMzMwAAAAAAAAAAAAAAAAAAAAAAMzMzAAAAAAR/gIGxprP2/36T//+Alf//gJX//4CV//98kPb/UFiBsAAAAAQzMzMAAAAAAAAAAAAAAAAAAAAAADMzMwDy8vIAZmVjgre93v+Jnf//fpP//3+U//+Alv//dofe/0ZLY4J9j+0AMzMzAAAAAAAAAAAAAAAAAAAAAAAzMzMAOjo6ADAvLiWMjI7PusHo/5yt//+SpP//j57o/2dujs8xMS4lODo6ADMzMwAAAAAAAAAAAAAAAAAAAAAANTU1ALGxsQBcW1oANzc2LnV1c6CVl57XjpGe12xtc6A9OzYuVVVaAHeAqQAzMzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMA////AEJCQgAAAAAEFhURHBoZERwAAAAEQkJCAP///wAzMzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAIABAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAA4AcAAA=='
Local $b = _WinAPI_Base64Decode($s)
If @error Then Return SetError(1, 0, 0)
Return Binary($b)
EndFunc ;==>_ICO3
Func _ICO4()
Local $s
$s &= 'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAMMOAADDDgAAAAAAAAAAAAAsLCwALCwsACwsLAAsLCwFLCwsSywsLKksLCzVLCws3CwsLNwsLCzVLCwsqSwsLEssLCwFLCwsACwsLAArKysALCwsACwsLAAsLCwYLCwskywsLMMsLCx9LCwsPiwsLCUsLCwlLCwsPiwsLH0sLCzDLCwskywsLBgsLCwALCwsACwsLAAsLCwYLCwsriwsLJ8sLCwgLCwsACwsLAAsLCwALCwsACwsLAAsLCwALCwsICwsLJ8sLCyuLCwsGCwsLAAsLCwFLCwskywsLJ8sLCwMLCwsAC0tLQAsLCwAAAAAAAAAAAAsLCwALCwsACwsLAAsLCwMLCwsnywsLJMsLCwFLCwsSywsLMMsLCwgLCwsACwsLAArKysAAAAAAAAAAAAAAAAAAAAAAC0tLQAsLCwALCwsACwsLCAsLCzDLCwsSywsLKksLCx9LCwsACwsLAAsLCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0tACsrKwAsLCwALCwsfSwsLKksLCzVLCwsPiwsLAAsLCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCwALCwsACwsLD4sLCzVLCws3CwsLCUsLCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwsLAAsLCwlLCws3CwsLNwsLCwlLCwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCwALCwsJSwsLNwsLCzVLCwsPiwsLAAsLCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCwALCwsACwsLD4sLCzVLCwsqSwsLH0sLCwALi4uACsrKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKysALS0tACwsLAAsLCx9LCwsqSwsLEssLCzDLCwsICwsLAAsLCwAKysrAAAAAAAAAAAAAAAAAAAAAAAsLCwALCwsACwsLAAsLCwgLCwswywsLEssLCwFLCwskywsLJ8sLCwMLCwsAC0tLQAsLCwAAAAAAAAAAAAsLCwAKysrACwsLAAsLCwMLCwsnywsLJMsLCwFLCwsACwsLBgsLCyuLCwsnywsLCAsLCwALCwsACwsLAAsLCwALCwsACwsLAAsLCwgLCwsnywsLK4sLCwYLCwsACwsLAAsLCwALCwsACwsLBgsLCyTLCwswywsLH0sLCw+LCwsJSwsLCUsLCw+LCwsfCwsLMMsLCyTLCwsGCwsLAAsLCwALCwsACwsLAAsLCwALCwsBSwsLEssLCypLCws1SwsLNwsLCzcLCws1SwsLKosLCxMLCwsBSwsLAAsLCwALCwsAAAAAAAAAAAAAAAAAAGAAAADwAAAB+AAAA/wAAAf+AAAH/gAAA/wAAAH4AAAA8AAAAGAAAAAAAAAAAAAAAAAAAAA=='
Local $b = _WinAPI_Base64Decode($s)
If @error Then Return SetError(1, 0, 0)
Return Binary($b)
EndFunc ;==>_ICO4
Func _ICO5()
Local $s
$s &= 'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAMMOAADDDgAAAAAAAAAAAABIW/oAR1v5AEdb+QBHW/kFR1v5S0db+alHW/nVR1v53Edb+dxHW/nVR1v5qUdb+UtHW/kFR1v5AEdb+QBHW/oAR1v5AEdb+QBHW/kYR1v5k0db+cNHW/l9R1v5Pkdb+SVHW/klR1v5Pkdb+X1HW/nDR1v5k0db+RhHW/kAR1v5AEdb+QBHW/kYR1v5rkdb+Z9HW/kgR1v5AEdb+QBHW/kAR1v5AEdb+QBHW/kAR1v5IEdb+Z9HW/muR1v5GEdb+QBHW/kFR1v5k0db+Z9HW/kMR1v5AEdb+QBHW/kFR1v5GUdb+RlHW/kFR1v5AEdb+QBHW/kMR1v5n0db+ZNHW/kFR1v5S0db+cNHW/kgR1v5AEdb+QBHW/k3R1v5pkdb+dlHW/nZR1v5p0db+TdHW/kAR1v5AEdb+SBHW/nDR1v5S0db+alHW/l9R1v5AEdb+QBHW/k3R1v53Edb+f9HW/n/R1v5/0db+f9HW/ncR1v5N0db+QBHW/kAR1v5fUdb+alHW/nVR1v5Pkdb+QBHW/kFR1v5p0db+f9HW/n/R1v5/0db+f9HW/n/R1v5/0db+aZHW/kFR1v5AEdb+T5HW/nVR1v53Edb+SVHW/kAR1v5GUdb+dlHW/n/R1v5/0db+f9HW/n/R1v5/0db+f9HW/nZR1v5GUdb+QBHW/klR1v53Edb+dxHW/klR1v5AEdb+RlHW/nZR1v5/0db+f9HW/n/R1v5/0db+f9HW/n/R1v52Udb+RlHW/kAR1v5JUdb+dxHW/nVR1v5Pkdb+QBHW/kFR1v5p0db+f9HW/n/R1v5/0db+f9HW/n/R1v5/0db+adHW/kFR1v5AEdb+T5HW/nVR1v5qUdb+X1HW/kAR1v5AEdb+TdHW/ncR1v5/0db+f9HW/n/R1v5/0db+dxHW/k3R1v5AEdb+QBHW/l9R1v5qUdb+UtHW/nDR1v5IEdb+QBHW/kAR1v5N0db+adHW/nZR1v52Udb+adHW/k3R1v5AEdb+QBHW/kgR1v5w0db+UtHW/kFR1v5k0db+Z9HW/kMR1v5AEdb+QBHW/kFR1v5GUdb+RlHW/kFR1v5AEdb+QBHW/kMR1v5n0db+ZNHW/kFR1v5AEdb+RhHW/muR1v5n0db+SBHW/kAR1v5AEdb+QBHW/kAR1v5AEdb+QBHW/kgR1v5n0db+a5HW/kYR1v5AEdb+QBHW/kAR1v5GEdb+ZNHW/nDR1v5fUdb+T5HW/klR1v5JUdb+T5HW/l8R1v5w0db+ZNHW/kYR1v5AEdb+QBHWvoAR1v5AEdb+QBHW/kFR1v5S0db+alHW/nVR1v53Edb+dxHW/nVR1v5qkdb+UxHW/kFR1v5AEdb+QBIWvoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
Local $b = _WinAPI_Base64Decode($s)
If @error Then Return SetError(1, 0, 0)
Return Binary($b)
EndFunc ;==>_ICO5