diff --git a/Contents.md b/Contents.md new file mode 100644 index 00000000..b83bd079 --- /dev/null +++ b/Contents.md @@ -0,0 +1,29 @@ +![ahk_logo](https://raw.githubusercontent.com/Ixiko/AHK-libs-and-classes-collection/master/ahklogo.png) + +![lbc-logo](https://raw.githubusercontent.com/Ixiko/AHK-libs-and-classes-collection/master/lbc.png) + +#### CATEGORY + +------ + + + +| Category | lib | +| :--- | :--------------------------------- | +| JSON | lib_i_to_z\json.ahk | +| | lib_i_to_z\JSON_Beautify.ahk | +| | lib_i_to_z\JSON_Build&Parse.ahk | +| | lib_i_to_z\JSON_FromObj.ahk | +| | lib_i_to_z\JSON_ToObj.ahk | +| | lib_i_to_z\Json4Ahk.ahk | +| | lib_i_to_z\JSON_AHk_Parsing_for_ahk2.ahk | +| | lib_i_to_z\JSON_Library.ahk | +| | lib_i_to_z\Jxon.ahk | +| | lib_i_to_z\LSON.ahk | +| | classes\Class_JSON.ahk | +| | classes\Class_JSONData.ahk | +| | classes\Class_JSONFile.ahk | +| | classes\Class_JSONv2.0.00.00.ahk | +| | classes\Class_JSONv2.1.3.ahk | +| | classes\Class_JSONv2.0.00.00.ahk | + diff --git a/FileFunctionList.ahk b/FileFunctionList.ahk index 4ed8c247..bd3b06dd 100644 --- a/FileFunctionList.ahk +++ b/FileFunctionList.ahk @@ -47,48 +47,7 @@ Line | Function 0136 | Acc_Get(Cmd, ChildPath="", ChildID=0, WinTitle="", WinText="", ExcludeTitle="", ExcludeText="") } -[3] a_to_h\AccV2.ahk { - -Line | Function -0289 | byDefaultAction(oAcc,action) -0294 | byDescription(oAcc,desc) -0299 | byValue(oAcc,value) -0304 | byHelp(oAcc,help) -0308 | byState(oAcc,state) -0312 | byRole(oAcc,role) -0317 | byName(oAcc,name) -0322 | byRegex(oAcc,rx) -0333 | Acc_Init() -0337 | Acc_ObjectFromEvent(ByRef _idChild_, hWnd, idObject, idChild) -0350 | Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") -0363 | Acc_ObjectFromWindow(hWnd, idObject = -4) -0379 | Acc_WindowFromObject(pacc) -0389 | Acc_GetRoleText(nRole) -0402 | Acc_GetStateText(nState) -0415 | Acc_SetWinEventHook(eventMin, eventMax, pCallback) -0419 | Acc_UnhookWinEvent(hHook) -0433 | Acc_Role(Acc, ChildId=0) -0439 | Acc_State(Acc, ChildId=0) -0445 | Acc_Location(Acc, ChildId=0) -0463 | Acc_Parent(Acc) -0468 | Acc_Child(Acc, ChildId=0) -0474 | Acc_Query(Acc) -0488 | Acc_Error(p="") -0492 | Acc_Children(Acc) -0522 | Acc_ChildrenByRole(Acc, Role) -0542 | Acc_Get(Cmd, ChildPath="", ChildID=0, WinTitle="", WinText="", ExcludeTitle="", ExcludeText="") -0593 | acc_childrenByName(oAccessible, name,returnOne=false) -0608 | acc_childrenFilter(oAcc, fCondition, value=0, returnOne=false, obj=0) -0637 | acc_getRootElement() -0642 | __New(oAccParent,id) -0658 | accDoDefaultAction() -0662 | accHitTest() -0665 | accLocation(ByRef left, Byref top, ByRef width, ByRef height) -0668 | accNavigate() -0671 | accSelect(flagsSelect) - -} -[4] a_to_h\ACC_more.ahk { +[3] a_to_h\ACC_more.ahk { Line | Function 0007 | ACC_Init() @@ -128,7 +87,7 @@ Line | Function 0252 | acc_Hex(num) } -[5] a_to_h\ActiveX.ahk { +[4] a_to_h\ActiveX.ahk { Line | Function 0006 | ActiveX() @@ -213,24 +172,24 @@ Line | Function 0834 | CreateDispatchObject(prefix,exsize=0) } -[6] a_to_h\AddCommas.ahk { +[5] a_to_h\AddCommas.ahk { Line | Function 0031 | AddCommas(p_Number) } -[7] a_to_h\addFile.ahk { +[6] a_to_h\addFile.ahk { Line | Function } -[8] a_to_h\AddFileIcon.ahk { +[7] a_to_h\AddFileIcon.ahk { Line | Function 0045 | AddFileIcon( file, imageList ) } -[9] a_to_h\AddGraphicButton.ahk { +[8] a_to_h\AddGraphicButton.ahk { Line | Function 0024 | AddGraphicButton(GUI_Number, Button_X, Button_Y, Button_H, Button_W, Button_Identifier, Button_Up, Button_Hover, Button_Down) @@ -239,45 +198,45 @@ Line | Function 0081 | MouseLUp(wParam, lParam, msg, hwnd) } -[10] a_to_h\addScript.ahk { +[9] a_to_h\addScript.ahk { Line | Function } -[11] a_to_h\AddTooltip.ahk { +[10] a_to_h\AddTooltip.ahk { Line | Function } -[12] a_to_h\AdjustPrivilege.ahk { +[11] a_to_h\AdjustPrivilege.ahk { Line | Function } -[13] a_to_h\AdjustTokenPrivileges.ahk { +[12] a_to_h\AdjustTokenPrivileges.ahk { Line | Function 0025 | AdjustTokenPrivileges(hToken, NewState) } -[14] a_to_h\Adler32.ahk { +[13] a_to_h\Adler32.ahk { Line | Function 0001 | Adler32(String) } -[15] a_to_h\ADO.ahk { +[14] a_to_h\ADO.ahk { Line | Function } -[16] a_to_h\adosql.ahk { +[15] a_to_h\adosql.ahk { Line | Function 0042 | ADOSQL( Connection_String, Query_Statement ) } -[17] a_to_h\ADO_ACCESS.ahk { +[16] a_to_h\ADO_ACCESS.ahk { Line | Function 0017 | ADO_Write(SQL, sDbFile) @@ -285,7 +244,7 @@ Line | Function 0123 | ADO_GetError(Conn, Text=1) } -[18] a_to_h\Aero_Lib.ahk { +[17] a_to_h\Aero_Lib.ahk { Line | Function 0052 | Aero_StartUp() @@ -329,13 +288,13 @@ Line | Function 0960 | IDE_DrawTransImage(hwnd,Path="") } -[19] a_to_h\Affinity.ahk { +[18] a_to_h\Affinity.ahk { Line | Function 0001 | Affinity_Set( CPU=1, PID=0x0 ) } -[20] a_to_h\agl.ahk { +[19] a_to_h\agl.ahk { Line | Function 0012 | aglInit() @@ -389,7 +348,7 @@ Line | Function 3917 | __aglLoad(var, val="__?") } -[21] { +[20] { Line | Function 0059 | lua_pop(ByRef L, n) @@ -417,7 +376,7 @@ Line | Function 0173 | luaL_dostring(ByRef L, ByRef s) } -[22] a_to_h\AHKA.ahk { +[21] a_to_h\AHKA.ahk { Line | Function 0089 | AHKA_Error(Err="") @@ -462,7 +421,7 @@ Line | Function 0917 | AHKA_String(Array, Delimeter="") } -[23] a_to_h\AHKColorDialog.ahk { +[22] a_to_h\AHKColorDialog.ahk { Line | Function 0240 | set_color_sel(color) @@ -474,49 +433,49 @@ Line | Function 0311 | LinearGradient(HWND, oColors, oPositions = "", D = 0, GC = 0, BW = 0, BH = 0) } -[24] a_to_h\AhkDllFunctions.ahk { +[23] a_to_h\AhkDllFunctions.ahk { Line | Function 0001 | AhkDllFunctions(MemoryModule) } -[25] a_to_h\AhkDllObject.ahk { +[24] a_to_h\AhkDllObject.ahk { Line | Function 0001 | AhkDllObject(dll="AutoHotkey.dll",obj=0) } -[26] a_to_h\AhkDllThread (2).ahk { +[25] a_to_h\AhkDllThread (2).ahk { Line | Function 0001 | AhkDllThread(dll="AutoHotkey.dll",obj=0) } -[27] a_to_h\AhkDllThread.ahk { +[26] a_to_h\AhkDllThread.ahk { Line | Function 0002 | AhkDllThread_IsH() 0012 | AhkDllThread(dll="AutoHotkey.dll",obj=0) } -[28] a_to_h\ahkExec.ahk { +[27] a_to_h\ahkExec.ahk { Line | Function 0001 | ahkExec(Script) } -[29] a_to_h\ahkExecuteLine.ahk { +[28] a_to_h\ahkExecuteLine.ahk { Line | Function } -[30] a_to_h\AhkExported.ahk { +[29] a_to_h\AhkExported.ahk { Line | Function 0001 | AhkExported() } -[31] a_to_h\AHKForumMemoryFunctions.ahk { +[30] a_to_h\AHKForumMemoryFunctions.ahk { Line | Function 0003 | MemoryOpenFromPID(PID, Privilege=0x1F0FFF) @@ -535,12 +494,12 @@ Line | Function 0126 | ResumeProcess(hwnd) } -[32] a_to_h\AHKGroupEX.ahk { +[31] a_to_h\AHKGroupEX.ahk { Line | Function } -[33] a_to_h\AHKHID.ahk { +[32] a_to_h\AHKHID.ahk { Line | Function 0269 | AHKHID_UseConstants() @@ -560,7 +519,7 @@ Line | Function 0575 | AHKHID_NumIsSigned(ByRef Flag) } -[34] a_to_h\ahkhook.ahk { +[33] a_to_h\ahkhook.ahk { Line | Function 0005 | InstallHook(hook_function_name, byref function2hook, dll = "", function2hook_name = "" ,callback_options = "F") @@ -573,7 +532,7 @@ Line | Function 0184 | ahkHookGetScript(resource = "", module = "") } -[35] a_to_h\AHKhttp.ahk { +[34] a_to_h\AHKhttp.ahk { Line | Function 0003 | Decode(str) @@ -608,25 +567,25 @@ Line | Function 0357 | Done() } -[36] a_to_h\AhkMini.ahk { +[35] a_to_h\AhkMini.ahk { Line | Function } -[37] a_to_h\ahkobj2comarray.ahk { +[36] a_to_h\ahkobj2comarray.ahk { Line | Function 0016 | ahkobj2comarray(o) 0034 | comarray2ahkobj(arr) } -[38] a_to_h\AhkSelf.ahk { +[37] a_to_h\AhkSelf.ahk { Line | Function 0001 | AhkSelf() } -[39] a_to_h\AHKsock.ahk { +[38] a_to_h\AHKsock.ahk { Line | Function 0418 | AHKsock_Listen(sPort, sFunction = False) @@ -648,7 +607,7 @@ Line | Function 1362 | AHKsock_Settings(sSetting, sValue = "") } -[40] a_to_h\ahkstructlib2.ahk { +[39] a_to_h\ahkstructlib2.ahk { Line | Function 0022 | StructCreate(struct_name ,s_type1, s_var1 ,s_type2="", s_var2="" ,s_type3="", s_var3="",s_type4="" , s_var4="" ,s_type5="" , s_var5="" ,s_type6="" , s_var6="" ,s_type7="" , s_var7="",s_type8="" , s_var8="" ,s_type9="" , s_var9="" ,s_type10="", s_var10="" ,s_type11="", s_var11="",s_type12="", s_var12="" ,s_type13="", s_var13="" ,s_type14="", s_var14="" ,s_type15="", s_var15="",s_type16="", s_var16="" ,s_type17="", s_var17="" ,s_type18="", s_var18="" ,s_type19="", s_var19="",s_type20="", s_var20="" ,s_type21="", s_var21="" ,s_type22="", s_var22="" ,s_type23="", s_var23="",s_type24="", s_var24="" ,s_type25="", s_var25="" ,s_type26="", s_var26="" ,s_type27="", s_var27="",s_type28="", s_var28="" ,s_type29="", s_var29="" ,s_type30="", s_var30="" ,s_type31="", s_var31="",s_type32="", s_var32="") @@ -658,61 +617,75 @@ Line | Function 0223 | InsertIntegerSL(pInteger, ByRef pDest, pOffset = 0, pSize = 4) } -[41] a_to_h\ahkstructlib2_debug.ahk { +[40] a_to_h\ahkstructlib2_debug.ahk { Line | Function 0020 | struct_enum(s_query, struct_delim2="", struct_local="") } -[42] a_to_h\AhkThread.ahk { +[41] a_to_h\AhkThread.ahk { Line | Function 0012 | ahkthread_release(o) } -[43] a_to_h\AHKType.ahk { +[42] a_to_h\AHKType.ahk { Line | Function 0006 | AHKType(exeName) } -[44] a_to_h\Align.ahk { +[43] a_to_h\AlarmClock.ahk { + +Line | Function +0012 | AlarmClock(wakeTime) +0025 | CalcSecondsToWake(wakeTime) + +} +[44] { + +Line | Function +0016 | ColumnJustify(lines, lcr = "l", del="$") +0044 | Fill(chr, len) + +} +[45] a_to_h\Align.ahk { Line | Function 0049 | Align(HCtrl, Type="", Dim="", HGlueCtrl="") } -[45] a_to_h\AlphaSortEx.ahk { +[46] a_to_h\AlphaSortEx.ahk { Line | Function 0030 | AlphaSortEx(l,del) } -[46] a_to_h\AlreadyRunning.ahk { +[47] a_to_h\AlreadyRunning.ahk { Line | Function 0056 | AlreadyRunning(p_MsgBox=True,p_ExitApp=True) } -[47] a_to_h\AltTab_window_list.ahk { +[48] a_to_h\AltTab_window_list.ahk { Line | Function 0001 | AltTab_window_list() 0039 | Decimal_to_Hex(var) } -[48] a_to_h\Anchor.ahk { +[49] a_to_h\Anchor.ahk { Line | Function 0026 | Anchor(i, a = "", r = false) } -[49] a_to_h\AnchorL.ahk { +[50] a_to_h\AnchorL.ahk { Line | Function } -[50] a_to_h\AniGif.ahk { +[51] a_to_h\AniGif.ahk { Line | Function 0037 | AniGif_CreateControl(_guiHwnd, _x, _y, _w, _h, _style="") @@ -724,7 +697,7 @@ Line | Function 0154 | AniGif_SetBkColor(_agHwnd, _backColor) } -[51] a_to_h\Animated_Controls.ahk { +[52] a_to_h\Animated_Controls.ahk { Line | Function 0030 | AVI_CreateControl(_guiHwnd, _x, _y, _w, _h, _aviRef, _aviDLL="", _style="") @@ -740,7 +713,7 @@ Line | Function 0287 | AniGif_SetBkColor(_agHwnd, _backColor) } -[52] a_to_h\API_Draw.ahk { +[53] a_to_h\API_Draw.ahk { Line | Function 0063 | API_GdiGetBatchLimit() @@ -793,13 +766,13 @@ Line | Function 0435 | SIZE_Set(var) } -[53] a_to_h\API_GetWindowInfo.ahk { +[54] a_to_h\API_GetWindowInfo.ahk { Line | Function 0018 | API_GetWindowInfo(HWND) } -[54] a_to_h\API_Menu.ahk { +[55] a_to_h\API_Menu.ahk { Line | Function 0027 | API_GetMenuCheckMarkDimensions() @@ -810,24 +783,24 @@ Line | Function 0047 | API_RemoveMenu( hMenu, uPosition, uFlags ) 0051 | API_GetMenuItemID( hMenu, nPos ) 0055 | INIT_Menu() -0173 | API_InsertMenu( hMenu, uPos, uFlags, uID, pData) -0185 | API_GetMenuItemCount( hMenu ) -0192 | API_CreatePopupMenu() -0199 | API_DestroyMenu( hMenu ) -0207 | API_TrackPopupMenu( hMenu, uFlags, X, Y, hWnd ) -0223 | API_SetMenuInfo(hMenu, sMENUINFO) -0230 | API_DeleteMenu( hMenu, uPos, uFlags) -0240 | API_SetMenuItemInfo( hMenu, uItem, fByPosition, lpmii) -0247 | API_GetMenuItemInfo( hMenu, uItem, fByPosition, lpmii) -0266 | SIZE_Get(var) -0273 | SIZE_Set(var) -0298 | MENUITEMINFO_Get(var) -0311 | MENUITEMINFO_Set(var) -0338 | MENUINFO_Set(var) -0351 | MENUINFO_Get(var) - -} -[55] a_to_h\AppBar.ahk { +0170 | API_InsertMenu( hMenu, uPos, uFlags, uID, pData) +0179 | API_GetMenuItemCount( hMenu ) +0183 | API_CreatePopupMenu() +0187 | API_DestroyMenu( hMenu ) +0191 | API_TrackPopupMenu( hMenu, uFlags, X, Y, hWnd ) +0204 | API_SetMenuInfo(hMenu, sMENUINFO) +0208 | API_DeleteMenu( hMenu, uPos, uFlags) +0215 | API_SetMenuItemInfo( hMenu, uItem, fByPosition, lpmii) +0219 | API_GetMenuItemInfo( hMenu, uItem, fByPosition, lpmii) +0235 | SIZE_Get(var) +0241 | SIZE_Set(var) +0265 | MENUITEMINFO_Get(var) +0277 | MENUITEMINFO_Set(var) +0303 | MENUINFO_Set(var) +0315 | MENUINFO_Get(var) + +} +[56] a_to_h\AppBar.ahk { Line | Function 0043 | Appbar_New(ByRef Hwnd, o1="", o2="", o3="", o4="", o5="", o6="", o7="", o8="", o9="") @@ -840,14 +813,14 @@ Line | Function 0266 | Appbar_setPos(Hwnd, Edge="", Width="", Height="", Pos="") } -[56] a_to_h\ApplicationFramework.ahk { +[57] a_to_h\ApplicationFramework.ahk { Line | Function 0096 | __New(ApplicationName="NoName", Version=0, DefaultUILanguage="English") 0155 | CleanUp(ExitReason, ExitCode) } -[57] a_to_h\ArchLogger.ahk { +[58] a_to_h\ArchLogger.ahk { Line | Function 0007 | SetLogger(newLogger) @@ -857,7 +830,7 @@ Line | Function 0036 | Log(msg) } -[58] a_to_h\Arduino.ahk { +[59] a_to_h\Arduino.ahk { Line | Function 0003 | arduino_setup(start_polling_serial=true,ping_device=true) @@ -867,14 +840,14 @@ Line | Function 0032 | arduino_close() } -[59] a_to_h\argp.ahk { +[60] a_to_h\argp.ahk { Line | Function 0438 | argp_parse(ByRef _args, _maxcount=32, ByRef _n1="", ByRef _v1="", ByRef _n2="", ByRef _v2="", ByRef _n3="", ByRef _v3="", ByRef _n4="", ByRef _v4="", ByRef _n5="", ByRef _v5="", ByRef _n6="", ByRef _v6="", ByRef _n7="", ByRef _v7="", ByRef _n8="", ByRef _v8="", ByRef _n9="", ByRef _v9="", ByRef _n10="", ByRef _v10="", ByRef _n11="", ByRef _v11="", ByRef _n12="", ByRef _v12="", ByRef _n13="", ByRef _v13="", ByRef _n14="", ByRef _v14="", ByRef _n15="", ByRef _v15="", ByRef _n16="", ByRef _v16="", ByRef _n17="", ByRef _v17="", ByRef _n18="", ByRef _v18="", ByRef _n19="", ByRef _v19="", ByRef _n20="", ByRef _v20="", ByRef _n21="", ByRef _v21="", ByRef _n22="", ByRef _v22="", ByRef _n23="", ByRef _v23="", ByRef _n24="", ByRef _v24="", ByRef _n25="", ByRef _v25="", ByRef _n26="", ByRef _v26="", ByRef _n27="", ByRef _v27="", ByRef _n28="", ByRef _v28="", ByRef _n29="", ByRef _v29="", ByRef _n30="", ByRef _v30="", ByRef _n31="", ByRef _v31="", ByRef _n32="", ByRef _v32="") 0549 | argp_getopt(ByRef _args, _keylist="", _case=true, ByRef _1="", ByRef _2="", ByRef _3="", ByRef _4="", ByRef _5="", ByRef _6="", ByRef _7="", ByRef _8="", ByRef _9="", ByRef _10="", ByRef _11="", ByRef _12="", ByRef _13="", ByRef _14="", ByRef _15="", ByRef _16="", ByRef _17="", ByRef _18="", ByRef _19="", ByRef _20="", ByRef _21="", ByRef _22="", ByRef _23="", ByRef _24="", ByRef _25="", ByRef _26="", ByRef _27="", ByRef _28="", ByRef _29="", ByRef _30="", ByRef _31="", ByRef _32="") } -[60] a_to_h\Args.ahk { +[61] a_to_h\Args.ahk { Line | Function 0011 | Args_Process(byRef command, byRef subcommand, byRef options, byRef values) @@ -889,7 +862,7 @@ Line | Function 0295 | Args_FindValue(args, value) } -[61] a_to_h\Array Extensions.ahk { +[62] a_to_h\Array Extensions.ahk { Line | Function 0187 | Pop() @@ -897,7 +870,7 @@ Line | Function 0241 | Shift() } -[62] a_to_h\Array.ahk { +[63] a_to_h\Array.ahk { Line | Function 0016 | Array_indexOf(arr, val, opts="", startpos=1) @@ -910,13 +883,13 @@ Line | Function 0107 | Array_Length(arr) } -[63] a_to_h\ArrayObjToBitmap.ahk { +[64] a_to_h\ArrayObjToBitmap.ahk { Line | Function 0013 | ArrayObjToBitmap(ArrayObj) } -[64] a_to_h\array_.ahk { +[65] a_to_h\array_.ahk { Line | Function 0015 | array_every(array, callback) @@ -932,7 +905,7 @@ Line | Function 0408 | array_toString(array) } -[65] a_to_h\Array_data.ahk { +[66] a_to_h\Array_data.ahk { Line | Function 0007 | getArraySize(ary) @@ -951,7 +924,7 @@ Line | Function 0236 | expandNumericRange(rangeString) } -[66] a_to_h\Array_Gui_ext.ahk { +[67] a_to_h\Array_Gui_ext.ahk { Line | Function 0075 | Array_Gui(Array, Parent="") @@ -961,7 +934,18 @@ Line | Function 0186 | CtrlC() } -[67] a_to_h\AssociatedProgram.ahk { +[68] a_to_h\array_playground.ahk { + +Line | Function +0017 | generateRandArrayFile(len, num) +0038 | readRandArrayFile(name) +0066 | arrayAsStr(array) +0078 | genRandomArray(array) +0094 | shuffle(a) +0127 | _RangeNewEnum(r) + +} +[69] a_to_h\AssociatedProgram.ahk { Line | Function 0009 | AssociatedProgram(p_FileExt) @@ -969,7 +953,7 @@ Line | Function 0070 | DefaultProgramUserChoice(ext) } -[68] a_to_h\AsyncHttp.ahk { +[70] a_to_h\AsyncHttp.ahk { Line | Function 0033 | __new(callbacks = "") @@ -980,7 +964,7 @@ Line | Function 0076 | Remove( idx ) } -[69] a_to_h\AtachGui_to_other_window.ahk { +[71] a_to_h\AtachGui_to_other_window.ahk { Line | Function 0007 | Set_Parent_by_id(Window_ID, Gui_Number) @@ -990,13 +974,13 @@ Line | Function 0042 | FindToolbar(ToolbarName) } -[70] a_to_h\ATan2.ahk { +[72] a_to_h\ATan2.ahk { Line | Function 0004 | ATan2(X, Y) } -[71] a_to_h\Atl.ahk { +[73] a_to_h\Atl.ahk { Line | Function 0008 | Atl_Init() @@ -1007,7 +991,7 @@ Line | Function 0043 | Atl_AxCreateContainer(hWnd, l, t, w, h, Name = "", ExStyle = 0, Style = 0x54000000) } -[72] a_to_h\Attach.ahk { +[74] a_to_h\Attach.ahk { Line | Function 0098 | Attach(hCtrl="", aDef="") @@ -1015,7 +999,7 @@ Line | Function 0207 | Attach_redrawDelayed(hCtrl) } -[73] a_to_h\AttachToolWindow.ahk { +[75] a_to_h\AttachToolWindow.ahk { Line | Function 0001 | AttachToolWindow(hParent, GUINumber, AutoClose) @@ -1026,14 +1010,14 @@ Line | Function 0062 | if(ToolWindows.Monitor) } -[74] a_to_h\Auth.ahk { +[76] a_to_h\Auth.ahk { Line | Function 0019 | Auth_RunAsAdmin() 0039 | Auth_RunAsUser(sCmdLine) } -[75] a_to_h\Autocomplete.ahk { +[77] a_to_h\Autocomplete.ahk { Line | Function 0040 | AutoComplete(self,celt,rgelt,pceltFetched) @@ -1045,34 +1029,34 @@ Line | Function 0160 | _EnumString_Clone(self,ppenum) } -[76] a_to_h\AutoReload.ahk { +[78] a_to_h\AutoReload.ahk { Line | Function 0001 | AutoReload() } -[77] a_to_h\Autoupdate.ahk { +[79] a_to_h\Autoupdate.ahk { Line | Function 0001 | AutoUpdate() } -[78] a_to_h\AutoUpdateAHKv1.ahk { +[80] a_to_h\AutoUpdateAHKv1.ahk { Line | Function } -[79] a_to_h\AutoUpdateAHKv2a.ahk { +[81] a_to_h\AutoUpdateAHKv2a.ahk { Line | Function } -[80] a_to_h\AutoXYWH.ahk { +[82] a_to_h\AutoXYWH.ahk { Line | Function } -[81] a_to_h\AuxLib.ahk { +[83] a_to_h\AuxLib.ahk { Line | Function 0003 | GetWindowPlacement(hWnd) @@ -1107,13 +1091,13 @@ Line | Function 0238 | SetExplorerTheme(hWnd) } -[82] a_to_h\Average.ahk { +[84] a_to_h\Average.ahk { Line | Function 0008 | Average(Numbers) } -[83] a_to_h\AveragingFunctions.ahk { +[85] a_to_h\AveragingFunctions.ahk { Line | Function 0003 | SimpleMovingAverage(NumberToAppend,Method = "Mean",MaxListLen = 10) @@ -1123,7 +1107,7 @@ Line | Function 0048 | RangeAverage(NumList) } -[84] a_to_h\AVICAP.ahk { +[86] a_to_h\AVICAP.ahk { Line | Function 0001 | AVICAP_Startup() @@ -1131,7 +1115,7 @@ Line | Function 0033 | AVICAP_GrabImage(ImageFile, capHWnd) } -[85] a_to_h\AxC.ahk { +[87] a_to_h\AxC.ahk { Line | Function 0075 | axc_pack(packfile,files) @@ -1146,19 +1130,19 @@ Line | Function 0250 | axc_offsettomem(packfile,offset,sz,byref bin) } -[86] a_to_h\A_caret.ahk { +[88] a_to_h\A_caret.ahk { Line | Function 0001 | A_Caret(param, coordMode = "Screen") } -[87] a_to_h\BalloonTip.ahk { +[89] a_to_h\BalloonTip.ahk { Line | Function 0056 | BalloonTip(sTitle = "", sText = "", hlicon=0, TitleCodePage = "", TextCodePage = "", Clickable=1, Timeout = 10000, MinTimeDisp = 200, RefreshRate = 100) } -[88] a_to_h\Bar.ahk { +[90] a_to_h\Bar.ahk { Line | Function 0016 | Bar_init(m) @@ -1176,7 +1160,7 @@ Line | Function 0494 | Bar_updateView(m, v) } -[89] a_to_h\BARCODER.ahk { +[91] a_to_h\BARCODER.ahk { Line | Function 0453 | GENERATE_ALPHANUMERIC_TABLE() @@ -1199,7 +1183,7 @@ Line | Function 1755 | Dec(x) } -[90] a_to_h\Base.ahk { +[92] a_to_h\Base.ahk { Line | Function 0003 | __new(p=0) @@ -1238,29 +1222,29 @@ Line | Function 0231 | IsInteger(p) } -[91] a_to_h\Base32.ahk { +[93] a_to_h\Base32.ahk { Line | Function } -[92] a_to_h\Base64.ahk { +[94] a_to_h\Base64.ahk { Line | Function 0110 | Base64ToArrayObj(String, ByRef ArrayObj) } -[93] a_to_h\baseConvert.ahk { +[95] a_to_h\baseConvert.ahk { Line | Function 0007 | baseConvert(value, from, to) } -[94] a_to_h\Between.ahk { +[96] a_to_h\Between.ahk { Line | Function } -[95] a_to_h\Bin.ahk { +[97] a_to_h\Bin.ahk { Line | Function 0022 | Bin_ToHex(ByRef sHex, nAdrBuf, nSzBuf) @@ -1268,13 +1252,13 @@ Line | Function 0106 | Bin_FromBits(sBin) } -[96] a_to_h\Bin2Dec.ahk { +[98] a_to_h\Bin2Dec.ahk { Line | Function 0001 | Bin2Dec(bin) } -[97] a_to_h\BinArr.ahk { +[99] a_to_h\BinArr.ahk { Line | Function 0004 | BinArr_FromString(str) @@ -1282,7 +1266,7 @@ Line | Function 0053 | BinArr_ToFile(BinArr, FileName) } -[98] a_to_h\BinaryEncodingDecoding.ahk { +[100] a_to_h\BinaryEncodingDecoding.ahk { Line | Function 0020 | FormatHexNumber(_value, _digitNb) @@ -1290,19 +1274,19 @@ Line | Function 0080 | Hex2Bin(ByRef @bin, ByRef @hex, _byteNb=0) } -[99] a_to_h\BinGet.ahk { +[101] a_to_h\BinGet.ahk { Line | Function 0019 | BinGet_Bitmap(adrBuf, szBuf) } -[100] a_to_h\bink.ahk { +[102] a_to_h\bink.ahk { Line | Function 0001 | PlayBink(file, pddraw, pPrimary, h_win, pdSound = "", scale = True, dllpath="binkw32.dll") } -[101] a_to_h\BinReadWrite.ahk { +[103] a_to_h\BinReadWrite.ahk { Line | Function 0039 | OpenFileForRead(_filename) @@ -1314,24 +1298,24 @@ Line | Function 0215 | ReadFromFile(_handle, ByRef @data, _byteNb=0, _moveMethod=-1, _offset=0) } -[102] a_to_h\BinRun.ahk { +[104] a_to_h\BinRun.ahk { Line | Function } -[103] a_to_h\binSearch.ahk { +[105] a_to_h\binSearch.ahk { Line | Function 0001 | binSearch(arr,match,r,l=0) } -[104] a_to_h\BinToHex.ahk { +[106] a_to_h\BinToHex.ahk { Line | Function 0001 | BinToHex(addr,len) } -[105] a_to_h\Bitmap.ahk { +[107] a_to_h\Bitmap.ahk { Line | Function 0112 | SetStretchBltMode(hDC, StretchMode) @@ -1339,7 +1323,7 @@ Line | Function 0156 | BitmapToClipboard(hBitmap) } -[106] a_to_h\BitmapGradient.ahk { +[108] a_to_h\BitmapGradient.ahk { Line | Function 0072 | CreateBMPGradient(File, RGB1, RGB2, Vertical=1) @@ -1347,12 +1331,12 @@ Line | Function 0121 | RandomHexColor(Range1=0,Range2=255) } -[107] a_to_h\BlockSysMenu.ahk { +[109] a_to_h\BlockSysMenu.ahk { Line | Function } -[108] a_to_h\bmpread.ahk { +[110] a_to_h\bmpread.ahk { Line | Function 0002 | BMPWidth(ByRef bmpdata) @@ -1363,25 +1347,25 @@ Line | Function 0059 | BMPTransform(ByRef bmpdata, ByRef output, transpc=-1) } -[109] a_to_h\borderlessMode.ahk { +[111] a_to_h\borderlessMode.ahk { Line | Function 0001 | borderlessMode(winId="") } -[110] a_to_h\borderlessMove.ahk { +[112] a_to_h\borderlessMove.ahk { Line | Function 0001 | borderlessMove(winId="",key="LButton") } -[111] a_to_h\BoxMuller.ahk { +[113] a_to_h\BoxMuller.ahk { Line | Function 0001 | BoxMuller(m,s) } -[112] a_to_h\BRA.ahk { +[114] a_to_h\BRA.ahk { Line | Function 0006 | BRA_LibraryVersion() @@ -1398,28 +1382,28 @@ Line | Function 0598 | BRA_SaveToDisk(ByRef BRAFromMemIn, Output, Overwrite=0) } -[113] a_to_h\BrowserEmulation.ahk { +[115] a_to_h\BrowserEmulation.ahk { Line | Function } -[114] { +[116] { Line | Function } -[115] a_to_h\buf.ahk { +[117] a_to_h\buf.ahk { Line | Function } -[116] { +[118] { Line | Function 0028 | BufferInput(byref aKeys, Mode="Off", MouseBlocking=1, IgnoreHotkey="") } -[117] a_to_h\BuildUserAhkApi.ahk { +[119] a_to_h\BuildUserAhkApi.ahk { Line | Function 0032 | if(Labels) @@ -1428,7 +1412,7 @@ Line | Function 0073 | grep(h, n, ByRef v, s = 1, e = 0, d = "") } -[118] a_to_h\byteWord.ahk { +[120] a_to_h\byteWord.ahk { Line | Function 0001 | LoWord(byref dword) @@ -1438,19 +1422,19 @@ Line | Function 0015 | GET_Y_LPARAM(lp) } -[119] a_to_h\CalcChecksum.ahk { +[121] a_to_h\CalcChecksum.ahk { Line | Function 0001 | HashFile(filePath,hashType=2) } -[120] a_to_h\CalculateDistance.ahk { +[122] a_to_h\CalculateDistance.ahk { Line | Function 0001 | CalculateDistance(x1, y1, x2, y2) } -[121] a_to_h\Calenderfunctions.ahk { +[123] a_to_h\Calenderfunctions.ahk { Line | Function 0012 | easter(year) @@ -1475,29 +1459,29 @@ Line | Function 0721 | LDOM( Dt ) } -[122] a_to_h\callbackcreate.ahk { +[124] a_to_h\callbackcreate.ahk { Line | Function } -[123] a_to_h\capitalizeString.ahk { +[125] a_to_h\capitalizeString.ahk { Line | Function 0001 | capitalizeString(input) } -[124] a_to_h\CaseChange.ahk { +[126] a_to_h\CaseChange.ahk { Line | Function 0001 | caseChange(text,type) } -[125] a_to_h\CatchHandler.ahk { +[127] a_to_h\CatchHandler.ahk { Line | Function } -[126] a_to_h\CB.ahk { +[128] a_to_h\CB.ahk { Line | Function 0042 | CB_Get(Control="ComboBox1", Window="ahk_class AutoHotkeyGUI") @@ -1515,14 +1499,14 @@ Line | Function 0119 | CB_GetText(Pos=-1, Control="ComboBox1", Window="ahk_class AutoHotkeyGUI") } -[127] a_to_h\CColor.ahk { +[129] a_to_h\CColor.ahk { Line | Function 0026 | CColor(Hwnd, Background="", Foreground="") 0030 | CColor_(Wp, Lp, Msg, Hwnd) } -[128] a_to_h\cControls.ahk { +[130] a_to_h\cControls.ahk { Line | Function 0003 | __New(Name, Options, Text, GUINum) @@ -1572,29 +1556,28 @@ Line | Function 0853 | __New(Name, Options, Text, GUINum) } -[129] a_to_h\cdomessage.ahk { +[131] a_to_h\cdomessage.ahk { Line | Function 0019 | cdomessage(sFrom, sTo, sSubject, sBody, sAttach, sServer, sUsername, sPassword, bTLS = True, nPort = 25, nSend = 2, nAuth = 1) } -[130] a_to_h\Center MsgBox To Active Window.ahk { +[132] a_to_h\Center MsgBox To Active Window.ahk { Line | Function } -[131] a_to_h\CenterWindow (2).ahk { +[133] a_to_h\CenterWindow (2).ahk { Line | Function -0001 | CenterWindow(aWidth,aHeight) } -[132] a_to_h\CenterWindow.ahk { +[134] a_to_h\CenterWindow.ahk { Line | Function } -[133] a_to_h\Cert.ahk { +[135] a_to_h\Cert.ahk { Line | Function 0169 | OpenStore(pStoreProvider, dwMsgAndCertEncodingType, dwFlags, ParamType="Ptr", Param=0) @@ -1612,7 +1595,7 @@ Line | Function 0380 | Cert_GetStoreNames_Callback(pvSystemStore, dwFlags, pStoreInfo, pvReserved, pvArg) } -[134] a_to_h\cFTP.ahk { +[136] a_to_h\cFTP.ahk { Line | Function 0061 | FTPv2( AsyncMode=0 , Proxy = "" , ProxyBypass = "") @@ -1643,19 +1626,24 @@ Line | Function 0912 | FTP_TestFunction() } -[135] a_to_h\ChangeCase.ahk { +[137] a_to_h\ChangeCase.ahk { Line | Function 0004 | ChangeCase(String,Type) } -[136] a_to_h\ChangeProcessName.ahk { +[138] a_to_h\ChangeProcessName.ahk { Line | Function 0005 | SMExe(file) } -[137] a_to_h\CharWordPos.ahk { +[139] a_to_h\changeScreenSize.ahk { + +Line | Function + +} +[140] a_to_h\CharWordPos.ahk { Line | Function 0022 | MCode_Bin2Hex(addr, len) @@ -1664,7 +1652,7 @@ Line | Function 0089 | WordToCharPos(ByRef str, ByRef start, ByRef end="", swap=0) } -[138] a_to_h\chatGUI.ahk { +[141] a_to_h\chatGUI.ahk { Line | Function 0020 | CreateGui() @@ -1675,64 +1663,64 @@ Line | Function 0541 | toLower(v) } -[139] a_to_h\CheckForUpdates.ahk { +[142] a_to_h\CheckForUpdates.ahk { Line | Function 0001 | CheckForUpdates(installed_version, byRef latestVersion, url) } -[140] a_to_h\checkSession.ahk { +[143] a_to_h\checkSession.ahk { Line | Function 0045 | checkSession(_msgHandler,_params=0) 0051 | checkSession_msgHandler(wParam,lParam,msg,hwnd) } -[141] a_to_h\CheckUpdate.ahk { +[144] a_to_h\CheckUpdate.ahk { Line | Function } -[142] a_to_h\Check_ForUpdate.ahk { +[145] a_to_h\Check_ForUpdate.ahk { Line | Function 0001 | Check_ForUpdate(_ReplaceCurrentScript = 1, _SuppressMsgBox = 0, _CallbackFunction = "", ByRef _Information = "") } -[143] a_to_h\ChooseColor (2).ahk { +[146] a_to_h\ChooseColor (2).ahk { Line | Function 0074 | ChooseColor_Callback(hdlg, uiMsg, wParam, lParam) } -[144] a_to_h\ChooseColor.ahk { +[147] a_to_h\ChooseColor.ahk { Line | Function 0129 | ColorWindowProc(hwnd, msg, wParam, lParam) 0160 | BGR2RGB(Color) } -[145] a_to_h\ChooseFile.ahk { +[148] a_to_h\ChooseFile.ahk { Line | Function } -[146] a_to_h\ChooseFolder.ahk { +[149] a_to_h\ChooseFolder.ahk { Line | Function } -[147] a_to_h\ChooseFont.ahk { +[150] a_to_h\ChooseFont.ahk { Line | Function } -[148] a_to_h\ChooseIcon.ahk { +[151] a_to_h\ChooseIcon.ahk { Line | Function } -[149] a_to_h\ChooseImage.ahk { +[152] a_to_h\ChooseImage.ahk { Line | Function 0102 | ChooseImage_Close(Data, Error) @@ -1742,40 +1730,40 @@ Line | Function 0153 | ChooseImage_Load(Data) } -[150] a_to_h\cleanClipboard.ahk { +[153] a_to_h\cleanClipboard.ahk { Line | Function 0001 | cleanClipboard() } -[151] a_to_h\ClearArray.ahk { +[154] a_to_h\ClearArray.ahk { Line | Function 0036 | ClearArray(p_ArrayName,p_Start=0,p_End=0) 0057 | varExist(ByRef v) } -[152] a_to_h\Clip.ahk { +[155] a_to_h\Clip.ahk { Line | Function 0004 | Clip_Get() 0013 | Clip(Text="", Reselect="") } -[153] a_to_h\Clip2Object.ahk { +[156] a_to_h\Clip2Object.ahk { Line | Function 0002 | __Set(key,ByRef raw) 0008 | Restore(key,ByRef raw) } -[154] a_to_h\Clipboard Manager.ahk { +[157] a_to_h\Clipboard Manager.ahk { Line | Function 0003 | handleClip(action) } -[155] a_to_h\clipboard.ahk { +[158] a_to_h\clipboard.ahk { Line | Function 0003 | copyWithHotkey(hotkeyKeys) @@ -1791,7 +1779,7 @@ Line | Function 0112 | if(clipboard = "") } -[156] a_to_h\ClipboardHelpers.ahk { +[159] a_to_h\ClipboardHelpers.ahk { Line | Function 0001 | ClipSave(mode = 1) @@ -1801,34 +1789,34 @@ Line | Function 0030 | IsTextSelected() } -[157] a_to_h\clipHTML.ahk { +[160] a_to_h\clipHTML.ahk { Line | Function 0001 | clipHTML(htmlCode) } -[158] a_to_h\ClipStore.ahk { +[161] a_to_h\ClipStore.ahk { Line | Function } -[159] a_to_h\CloseAllAhkExceptOne.ahk { +[162] a_to_h\CloseAllAhkExceptOne.ahk { Line | Function } -[160] a_to_h\CloseHandle.ahk { +[163] a_to_h\CloseHandle.ahk { Line | Function 0008 | CloseHandle(Handle) } -[161] a_to_h\CloseWindow.ahk { +[164] a_to_h\CloseWindow.ahk { Line | Function } -[162] a_to_h\CLR (2).ahk { +[165] a_to_h\CLR (2).ahk { Line | Function 0011 | CLR_LoadLibrary(AssemblyName, AppDomain=0) @@ -1842,7 +1830,7 @@ Line | Function 0147 | CLR_GUID(ByRef GUID, sGUID) } -[163] a_to_h\CLR.ahk { +[166] a_to_h\CLR.ahk { Line | Function 0014 | CLR_Start() @@ -1857,7 +1845,7 @@ Line | Function 0169 | CLR_CompileAssembly(Code, References, ProviderAssembly, ProviderType, pAppDomain=0, FileName="", CompilerOptions="") } -[164] a_to_h\cmd.ahk { +[167] a_to_h\cmd.ahk { Line | Function 0015 | cmd_exec(cmd) @@ -1869,19 +1857,19 @@ Line | Function 0162 | cmd_fileRemoveDir(SourceDir) } -[165] a_to_h\CmdPromptRun.ahk { +[168] a_to_h\CmdPromptRun.ahk { Line | Function 0002 | CmdPromptRun(fnCommands) } -[166] a_to_h\CMDret.ahk { +[169] a_to_h\CMDret.ahk { Line | Function 0026 | CMDret_RunReturn(CMDin, WorkingDir=0) } -[167] a_to_h\CMDret_RunReturn.ahk { +[170] a_to_h\CMDret_RunReturn.ahk { Line | Function 0001 | CMDret_RunReturn(CMDin) @@ -1889,20 +1877,20 @@ Line | Function 0048 | GetUInt(ByRef pSource, pOffset = 0, Len = 4) } -[168] a_to_h\CMDret_stream.ahk { +[171] a_to_h\CMDret_stream.ahk { Line | Function 0033 | CMDret_Stream(CMDin, CMDname="", WorkingDir=0) } -[169] a_to_h\CMenu.ahk { +[172] a_to_h\CMenu.ahk { Line | Function 0026 | CMenu(HCtrl, MenuName="", Sub="") 0036 | CMenu_wndProc(Hwnd, UMsg, WParam, LParam) } -[170] a_to_h\CMenuBar.ahk { +[173] a_to_h\CMenuBar.ahk { Line | Function 0045 | __New(name = "tray", parent = "", gui="", standard = false, default = "") @@ -1925,7 +1913,7 @@ Line | Function 0178 | if(this.parent) } -[171] a_to_h\CMenuItem.ahk { +[174] a_to_h\CMenuItem.ahk { Line | Function 0046 | __New(menu, name="", label="") @@ -1947,20 +1935,20 @@ Line | Function 0265 | ReplaceHotkey(newHk) } -[172] a_to_h\cmp.ahk { +[175] a_to_h\cmp.ahk { Line | Function 0002 | cmp_self(x) 0007 | cmp(x, op, y) } -[173] a_to_h\CMsgbox.ahk { +[176] a_to_h\CMsgbox.ahk { Line | Function 0047 | CMsgBox( title, text, buttons, w="", h="", bsep=3, icon="", icon_h=64, owner=0, rows=8 ) } -[174] a_to_h\CoHelper.ahk { +[177] a_to_h\CoHelper.ahk { Line | Function 0003 | VTable(ppv, idx) @@ -1996,7 +1984,7 @@ Line | Function 0237 | EncodeInteger(ref, val = 0, nSize = 4) } -[175] a_to_h\Color.ahk { +[178] a_to_h\Color.ahk { Line | Function 0010 | Color_ToDecimal($color) @@ -2010,14 +1998,14 @@ Line | Function 0128 | Color_diff(color1, color2=0) } -[176] a_to_h\Colored_Focus_Control.ahk { +[179] a_to_h\Colored_Focus_Control.ahk { Line | Function 0049 | DrawBorder(wParam, lParam, msg, hWnd) 0088 | WindowState(wParam, lParam, msg, hWnd) } -[177] a_to_h\colors.ahk { +[180] a_to_h\colors.ahk { Line | Function 0001 | RgbToHex(input) @@ -2025,7 +2013,7 @@ Line | Function 0038 | RemoveHexPart(input) } -[178] a_to_h\ColURL.ahk { +[181] a_to_h\ColURL.ahk { Line | Function 0016 | ColURL_OpenURL(sURL) @@ -2033,7 +2021,7 @@ Line | Function 0063 | ColURL_ComUnHthml(sHtml) } -[179] a_to_h\com (2).ahk { +[182] a_to_h\com (2).ahk { Line | Function 0007 | COM_Init() @@ -2106,7 +2094,7 @@ Line | Function 0621 | COM_ScriptControl(sCode, sLang = "", bEval = False, sFunc = "", sName = "", pdisp = 0, bGlobal = False) } -[180] a_to_h\COM (3).ahk { +[183] a_to_h\COM (3).ahk { Line | Function 0007 | COM_Init(bUn = "") @@ -2177,7 +2165,7 @@ Line | Function 0551 | COM_Unwrap(obj) } -[181] a_to_h\com.ahk { +[184] a_to_h\com.ahk { Line | Function 0007 | COM_Init() @@ -2250,7 +2238,7 @@ Line | Function 0617 | COM_ScriptControl(sCode, sLang = "", bEval = False, sFunc = "", sName = "", pdisp = 0, bGlobal = False) } -[182] a_to_h\ComboX.ahk { +[185] a_to_h\ComboX.ahk { Line | Function 0023 | ComboX_Hide( HCtrl ) @@ -2261,7 +2249,7 @@ Line | Function 0144 | ComboX_setPosition( HCtrl, Pos, Hwnd, W="", H="" ) } -[183] a_to_h\ComDispatch.ahk { +[186] a_to_h\ComDispatch.ahk { Line | Function 0008 | ComDispatch(this, disptable) @@ -2271,7 +2259,7 @@ Line | Function 0186 | _CoTaskMemFree(mem) } -[184] a_to_h\ComDispatch0.ahk { +[187] a_to_h\ComDispatch0.ahk { Line | Function 0007 | ComDispatch0(this) @@ -2280,24 +2268,24 @@ Line | Function 0190 | cd0_BSTR(ByRef a) } -[185] a_to_h\ComDispTable.ahk { +[188] a_to_h\ComDispTable.ahk { Line | Function 0008 | ComDispTable(methods) } -[186] a_to_h\commaFormat.ahk { +[189] a_to_h\commaFormat.ahk { Line | Function 0001 | commaFormat(num) } -[187] a_to_h\CommonDialogs.ahk { +[190] a_to_h\CommonDialogs.ahk { Line | Function } -[188] a_to_h\COMo.ahk { +[191] a_to_h\COMo.ahk { Line | Function 0002 | COMo_GetVal(obj, name) @@ -2307,18 +2295,31 @@ Line | Function 0030 | COMo_Delete(obj) } -[189] a_to_h\CompareFileNameArray.ahk { +[192] a_to_h\CompareCursor.ahk { + +Line | Function +0025 | CaptureCursor(captureTo="clipboard", cursorSize=32) +0065 | IsMatchCursor(bmpCursorFile) +0079 | CompareBitmap(hBM1, hBM2, size=32) +0107 | CreateDIBSection(hDC, nW, nH, bpp = 32, ByRef pBits = "") +0117 | SetClipboardData(hBitmap) +0134 | LoadBMP(bmpFile) +0140 | SaveHBITMAPToFile(hBitmap, sFile) +0153 | GetValidFilePath(filename) + +} +[193] a_to_h\CompareFileNameArray.ahk { Line | Function 0001 | CompareFileNameArray() } -[190] a_to_h\Compass.ahk { +[194] a_to_h\Compass.ahk { Line | Function } -[191] a_to_h\compile to vpk.ahk { +[195] a_to_h\compile to vpk.ahk { Line | Function 0015 | vpk_Compile(SourcePath) @@ -2326,7 +2327,7 @@ Line | Function 0059 | vpk_Run(command) } -[192] a_to_h\compileScript.ahk { +[196] a_to_h\compileScript.ahk { Line | Function 0001 | compileScript(file,out="",bin="",icon="",mpress=0) @@ -2334,27 +2335,27 @@ Line | Function 0011 | if(icon) } -[193] a_to_h\ComVar (2).ahk { +[197] a_to_h\ComVar (2).ahk { Line | Function 0011 | ComVar() 0036 | ComVarDel(cv) } -[194] a_to_h\ComVar.ahk { +[198] a_to_h\ComVar.ahk { Line | Function 0001 | ComVar(Type=0xC) 0017 | ComVarDel(cv) } -[195] a_to_h\ConnectedToInternet.ahk { +[199] a_to_h\ConnectedToInternet.ahk { Line | Function 0003 | ConnectedToInternet(flag=0x40) } -[196] { +[200] { Line | Function 0040 | ConsoleApp_RunWait(CmdLine, WorkingDir="", byref ExitCode="") @@ -2371,7 +2372,7 @@ Line | Function 0477 | CONSOLEAPPS_PRIVATE_throw(ErrorCode, ErrorMessage="", ParamName="", LastWin32Error="") } -[197] a_to_h\ConsoleApp.ahk { +[201] a_to_h\ConsoleApp.ahk { Line | Function 0040 | ConsoleApp_RunWait(CmdLine, WorkingDir="", byref ExitCode="") @@ -2389,12 +2390,17 @@ Line | Function 0495 | CONSOLEAPPS_PRIVATE_throw(ErrorCode, ErrorMessage="", ParamName="", LastWin32Error="") } -[198] a_to_h\Constants.ahk { +[202] a_to_h\Constants.ahk { + +Line | Function + +} +[203] a_to_h\Const_Theme.ahk { Line | Function } -[199] a_to_h\Container.ahk { +[204] a_to_h\Container.ahk { Line | Function 0018 | Container_DefaultPreferences(name) @@ -2446,34 +2452,34 @@ Line | Function 0619 | Container__run(f, line, working_dir="", options="", wait=false) } -[200] a_to_h\Contains.ahk { +[205] a_to_h\Contains.ahk { Line | Function 0024 | Contains(haystack, needle) 0037 | if(v = needle) } -[201] a_to_h\ContextMenuLib.ahk { +[206] a_to_h\ContextMenuLib.ahk { Line | Function 0033 | CM_AddMenuItem( ext, label, command ) 0048 | CM_DelMenuItem( ext, label ) } -[202] a_to_h\ControlCol.ahk { +[207] a_to_h\ControlCol.ahk { Line | Function 0005 | ControlCol(Control, Window, bc="", tc="", redraw=1) 0031 | WindowProc(hwnd, uMsg, wParam, lParam) } -[203] a_to_h\ControlColor.ahk { +[208] a_to_h\ControlColor.ahk { Line | Function 0013 | WindowProc(hWnd, uMsg, wParam, lParam) } -[204] a_to_h\Control_AniGif.ahk { +[209] a_to_h\Control_AniGif.ahk { Line | Function 0037 | AniGif_CreateControl(_guiHwnd, _x, _y, _w, _h, _style="") @@ -2485,7 +2491,7 @@ Line | Function 0151 | AniGif_SetBkColor(_agHwnd, _backColor) } -[205] a_to_h\Control_AVI.ahk { +[210] a_to_h\Control_AVI.ahk { Line | Function 0030 | AVI_CreateControl(_guiHwnd, _x, _y, _w, _h, _aviRef, _aviDLL="", _style="") @@ -2494,19 +2500,19 @@ Line | Function 0144 | AVI_DestroyControl(_aviHwnd) } -[206] a_to_h\Convert2Hex.ahk { +[211] a_to_h\Convert2Hex.ahk { Line | Function 0036 | Convert2Hex(p_Integer,p_MinDigits=0) } -[207] a_to_h\ConvertFile.ahk { +[212] a_to_h\ConvertFile.ahk { Line | Function 0034 | Convert_File(_From_File, _Function_Name, _SplitLength = 16000) } -[208] a_to_h\ConvertImage.ahk { +[213] a_to_h\ConvertImage.ahk { Line | Function 0016 | Gdip_Startup() @@ -2514,7 +2520,7 @@ Line | Function 0053 | ConvertImage(sInput, sOutput, Width="", Height="", Method="Percent") } -[209] a_to_h\ConvertKeyToKeyCode.ahk { +[214] a_to_h\ConvertKeyToKeyCode.ahk { Line | Function 0023 | SetSettingsExecution() @@ -2526,46 +2532,46 @@ Line | Function 0139 | KeyToVK(Key) } -[210] a_to_h\ConvertToCamelCase.ahk { +[215] a_to_h\ConvertToCamelCase.ahk { Line | Function 0001 | ConvertToCamelCase(ByRef fnCopiedText) } -[211] a_to_h\ConvertToLoserCase.ahk { +[216] a_to_h\ConvertToLoserCase.ahk { Line | Function 0001 | ConvertToLoserCase(ByRef fnCopiedText) } -[212] a_to_h\ConvertToMp3.ahk { +[217] a_to_h\ConvertToMp3.ahk { Line | Function } -[213] a_to_h\ConvertToPascalCase.ahk { +[218] a_to_h\ConvertToPascalCase.ahk { Line | Function 0001 | ConvertToPascalCase(ByRef fnCopiedText) } -[214] a_to_h\CopyFilesToClipboard.ahk { +[219] a_to_h\CopyFilesToClipboard.ahk { Line | Function 0002 | CopyFilesToClipboard(arrFilepath, bCopy) } -[215] a_to_h\CopyImage.ahk { +[220] a_to_h\CopyImage.ahk { Line | Function } -[216] a_to_h\CopyMemory.ahk { +[221] a_to_h\CopyMemory.ahk { Line | Function } -[217] a_to_h\CornerNotify.ahk { +[222] a_to_h\CornerNotify.ahk { Line | Function 0016 | CornerNotify(secs, title, message, position="b r") @@ -2576,30 +2582,30 @@ Line | Function 0079 | WinMove(hwnd,position) } -[218] a_to_h\Correlation Coefficient.ahk { +[223] a_to_h\Correlation Coefficient.ahk { Line | Function 0044 | Correl(X,Y) } -[219] a_to_h\Count.ahk { +[224] a_to_h\Count.ahk { Line | Function 0001 | Count(obj, key = "") 0008 | if(key = "") } -[220] a_to_h\CounterEditor.ahk { +[225] a_to_h\CounterEditor.ahk { Line | Function } -[221] a_to_h\CountOfFiles.ahk { +[226] a_to_h\CountOfFiles.ahk { Line | Function } -[222] a_to_h\CPULoad.ahk { +[227] a_to_h\CPULoad.ahk { Line | Function 0016 | GetCPULoad_Short() @@ -2607,7 +2613,7 @@ Line | Function 0067 | ReadInteger( Address, Offset, Size ) } -[223] a_to_h\cpumem.ahk { +[228] a_to_h\cpumem.ahk { Line | Function 0001 | GetProcessMemory_CommitSize(ProcID, Units="K") @@ -2617,45 +2623,45 @@ Line | Function 0087 | GetGUIProcessTimes(pid) } -[224] a_to_h\CpyData.ahk { +[229] a_to_h\CpyData.ahk { Line | Function 0045 | _CpyData_OnRcv(wParam, lParam) } -[225] a_to_h\CRC32.ahk { +[230] a_to_h\CRC32.ahk { Line | Function } -[226] a_to_h\CreateDIB.ahk { +[231] a_to_h\CreateDIB.ahk { Line | Function } -[227] a_to_h\CreateFileNameArray.ahk { +[232] a_to_h\CreateFileNameArray.ahk { Line | Function } -[228] a_to_h\CreateFocusRec.ahk { +[233] a_to_h\CreateFocusRec.ahk { Line | Function 0012 | CreateFocusRec(CtrlhWnd, WinHwnd, Clr) } -[229] a_to_h\CreateFolderFromString.ahk { +[234] a_to_h\CreateFolderFromString.ahk { Line | Function } -[230] a_to_h\CreateFont.ahk { +[235] a_to_h\CreateFont.ahk { Line | Function 0015 | CreateFont(pFont="") } -[231] a_to_h\CreateFormData.ahk { +[236] a_to_h\CreateFormData.ahk { Line | Function 0021 | CreateFormData(ByRef retData, ByRef retHeader, objParam) @@ -2665,18 +2671,18 @@ Line | Function 0081 | MimeType(FileName) } -[232] a_to_h\CreateGist.ahk { +[237] a_to_h\CreateGist.ahk { Line | Function } -[233] a_to_h\CreateGUID.ahk { +[238] a_to_h\CreateGUID.ahk { Line | Function 0001 | CreateGUID() } -[234] a_to_h\CreateIconsDll.ahk { +[239] a_to_h\CreateIconsDll.ahk { Line | Function 0018 | CreateIconsDll(File, Folder) @@ -2684,41 +2690,41 @@ Line | Function 0078 | DllCreateEmpty(F="empty.dll") } -[235] a_to_h\CreateScript.ahk { +[240] a_to_h\CreateScript.ahk { Line | Function } -[236] a_to_h\CreateScriptV1.ahk { +[241] a_to_h\CreateScriptV1.ahk { Line | Function 0003 | CreateScript(script) } -[237] a_to_h\CreateScriptV2.ahk { +[242] a_to_h\CreateScriptV2.ahk { Line | Function 0004 | CreateScript(script) } -[238] a_to_h\CreateSystemErrorTextList.ahk { +[243] a_to_h\CreateSystemErrorTextList.ahk { Line | Function } -[239] a_to_h\cRichEdit.ahk { +[244] a_to_h\cRichEdit.ahk { Line | Function 0023 | cRichEdit(_ctrlID, _action, opt1="", opt2="", opt3="", opt4="", opt5="", opt6="") 0595 | cRichEdit_RTFout(dwCookie, pbBuff, cb, pcb) } -[240] a_to_h\CriticalSection.ahk { +[245] a_to_h\CriticalSection.ahk { Line | Function } -[241] a_to_h\crypt.ahk { +[246] a_to_h\crypt.ahk { Line | Function 0031 | Encrypt(text) @@ -2727,12 +2733,12 @@ Line | Function 0137 | Stream9(x,y) } -[242] a_to_h\CryptAES.ahk { +[247] a_to_h\CryptAES.ahk { Line | Function } -[243] a_to_h\CryptBy_nnik.ahk { +[248] a_to_h\CryptBy_nnik.ahk { Line | Function 0003 | encryptStr(str="",pass="") @@ -2744,7 +2750,7 @@ Line | Function 0096 | _cryptfrombase64(string,byref bin) } -[244] a_to_h\CryptFoos.ahk { +[249] a_to_h\CryptFoos.ahk { Line | Function 0001 | b64Encode( ByRef buf, bufLen ) @@ -2754,19 +2760,19 @@ Line | Function 0055 | Free(byRef var) } -[245] a_to_h\CryptHash.ahk { +[250] a_to_h\CryptHash.ahk { Line | Function } -[246] a_to_h\CryptHash_AES.ahk { +[251] a_to_h\CryptHash_AES.ahk { Line | Function 0001 | Crypt_Hash(pData, nSize, SID = "CRC32", nInitial = 0) 0035 | Crypt_AES(pData, nSize, sPassword, SID = 256, bEncrypt = True) } -[247] a_to_h\crypto (2).ahk { +[252] a_to_h\crypto (2).ahk { Line | Function 0001 | hashPassword(username,pwd) @@ -2777,7 +2783,7 @@ Line | Function 0096 | Hex(ByRef b, n=0) } -[248] a_to_h\Crypto.ahk { +[253] a_to_h\Crypto.ahk { Line | Function 0003 | SHA(string, encoding = "UTF-8") @@ -2785,12 +2791,12 @@ Line | Function 0017 | CalcAddrHash(addr, length, algid, byref hash = 0, byref hashlength = 0) } -[249] a_to_h\CSS.ahk { +[254] a_to_h\CSS.ahk { Line | Function } -[250] a_to_h\CSV.ahk { +[255] a_to_h\CSV.ahk { Line | Function 0069 | CSV_Save(FileName, CSV_Identifier, OverWrite="1") @@ -2824,19 +2830,19 @@ Line | Function 0582 | ReturnDSVArray(CurrentDSVLine, ReturnArray="DSVfield", Delimiter=",", Encapsulator="""") } -[251] a_to_h\CSVMultiTab.ahk { +[256] a_to_h\CSVMultiTab.ahk { Line | Function 0001 | MultiTap(CmdListCSV="", Delay=400, DisplayFunc="") } -[252] a_to_h\CSV_.ahk { +[257] a_to_h\CSV_.ahk { Line | Function 0001 | CSV_() } -[253] a_to_h\CSV_Functions AHK_L.ahk { +[258] a_to_h\CSV_Functions AHK_L.ahk { Line | Function 0096 | CSV_Save(FileName, CSV_Identifier, OverWrite="1") @@ -2869,12 +2875,12 @@ Line | Function 0614 | ReturnDSVArray(CurrentDSVLine, ReturnArray="DSVfield", Delimiter=",", Encapsulator="""") } -[254] a_to_h\CtlColorStatic.ahk { +[259] a_to_h\CtlColorStatic.ahk { Line | Function } -[255] a_to_h\CueBanner.ahk { +[260] a_to_h\CueBanner.ahk { Line | Function 0017 | CueBanner(hwnd, pTxt=0, opt="", clr="", sh="") @@ -2885,7 +2891,7 @@ Line | Function 0381 | CueBanner_GPA(libName, proc="", ord="", ByRef hLib=0) } -[256] a_to_h\cURL.ahk { +[261] a_to_h\cURL.ahk { Line | Function 0001 | cURL_Download(url, ioData, ByRef ioHdr, options, useFallback = true, critical = false, binaryDL = false, errorMsg = "", ByRef reqHeadersCurl = "", handleAccessForbidden = true, ByRef returnCurl = false) @@ -2894,19 +2900,19 @@ Line | Function 0289 | cURL_ThrowError(e, critical = false, errorMsg = "", PreventErrorMsg = false) } -[257] a_to_h\Cursor.ahk { +[262] a_to_h\Cursor.ahk { Line | Function 0048 | Ext_Cursor(HCtrl, Shape) 0055 | Ext_Cursor_wndProc(Hwnd, UMsg, WParam, LParam) } -[258] a_to_h\Cycle.ahk { +[263] a_to_h\Cycle.ahk { Line | Function } -[259] a_to_h\d2d1.ahk { +[264] a_to_h\d2d1.ahk { Line | Function 0003 | __new(p="") @@ -3081,7 +3087,7 @@ Line | Function 1616 | D2D1_hr(a,ByRef b) } -[260] a_to_h\d3D.ahk { +[265] a_to_h\d3D.ahk { Line | Function 0019 | releaseDirect3D() @@ -3102,7 +3108,7 @@ Line | Function 0459 | changeViewPortMatrix(byref matrix, x, y, w, h, MaxZ=1, MinZ=0) } -[261] a_to_h\d3D11.ahk { +[266] a_to_h\d3D11.ahk { Line | Function 0006 | getDirect3D11() @@ -3111,7 +3117,7 @@ Line | Function 0120 | compileShader11(byref pShader, pDevice, ShaderCode, entrypoint = "main", pTarget = "cs_4_1") } -[262] a_to_h\d3D9.ahk { +[267] a_to_h\d3D9.ahk { Line | Function 0006 | dumpPixelShader(pShader, file) @@ -3128,7 +3134,7 @@ Line | Function 0271 | releaseDirect3D9() } -[263] a_to_h\d3Dx9.ahk { +[268] a_to_h\d3Dx9.ahk { Line | Function 0007 | __new(dll = "d3dx9_24.dll") @@ -3140,20 +3146,20 @@ Line | Function 0133 | CompileShader(pDevice, byref Shader, entrypoint, byref pShader) } -[264] { +[269] { Line | Function 0009 | LDistance(s, t) 0050 | DLDistance( a, b ) } -[265] a_to_h\DamerauLevenshteinDistance.ahk { +[270] a_to_h\DamerauLevenshteinDistance.ahk { Line | Function 0008 | DamerauLevenshteinDistance(s, t) } -[266] a_to_h\data.ahk { +[271] a_to_h\data.ahk { Line | Function 0007 | getArraySize(ary) @@ -3175,25 +3181,25 @@ Line | Function 0271 | bitFieldRemoveFlag(bitField, flag) } -[267] a_to_h\DateAdd.ahk { +[272] a_to_h\DateAdd.ahk { Line | Function 0001 | DateAdd(fnCount,fnTimeUnits,fnStartDate) } -[268] a_to_h\DateDiff.ahk { +[273] a_to_h\DateDiff.ahk { Line | Function 0001 | DateDiff(fnTimeUnits,fnStartDate,fnEndDate) } -[269] a_to_h\DateParse.ahk { +[274] a_to_h\DateParse.ahk { Line | Function 0086 | DateParse(str, americanOrder=0) } -[270] a_to_h\dates.ahk { +[275] a_to_h\dates.ahk { Line | Function 0001 | HoursMinutesToDecimal(input, params) @@ -3207,7 +3213,7 @@ Line | Function 0087 | GetDateInFormat(format) } -[271] a_to_h\dateTime.ahk { +[276] a_to_h\dateTime.ahk { Line | Function 0002 | sendDateTime(format) @@ -3220,18 +3226,18 @@ Line | Function 0146 | splitDateTime(timestamp) } -[272] a_to_h\DayOfdate.ahk { +[277] a_to_h\DayOfdate.ahk { Line | Function 0016 | DayofDate(Date) } -[273] a_to_h\DBA.ahk { +[278] a_to_h\DBA.ahk { Line | Function } -[274] a_to_h\DBase.ahk { +[279] a_to_h\DBase.ahk { Line | Function 0024 | DBase_CreateDBF(pFileName, bVersion) @@ -3256,7 +3262,7 @@ Line | Function 0462 | DBase_CloseDBF(hBase) } -[275] a_to_h\DBGP.ahk { +[280] a_to_h\DBGP.ahk { Line | Function 0047 | __New() @@ -3302,7 +3308,7 @@ Line | Function 0609 | DBGp_E(n) } -[276] a_to_h\dcomp.ahk { +[281] a_to_h\dcomp.ahk { Line | Function 0005 | __new(p=0) @@ -3400,7 +3406,7 @@ Line | Function 0825 | Trim(rectangles,count) } -[277] a_to_h\DDE.ahk { +[282] a_to_h\DDE.ahk { Line | Function 0009 | DDE_Initialize(idInst = 0, pCallback = 0, nFlags = 0) @@ -3432,7 +3438,7 @@ Line | Function 0153 | DDE_SetUserHandle(hConv, hUser) } -[278] a_to_h\DDEMessage.ahk { +[283] a_to_h\DDEMessage.ahk { Line | Function 0033 | DDE_ACK(wParam, lParam, MsgID, hWnd) @@ -3441,7 +3447,7 @@ Line | Function 0085 | DDE_EXECUTE(sCmd) } -[279] a_to_h\DDEML.ahk { +[284] a_to_h\DDEML.ahk { Line | Function 0009 | DdeInitialize(pCallback = 0, nFlags = 0) @@ -3456,13 +3462,13 @@ Line | Function 0055 | DdeClientTransaction(nType, hConv, hItem, sData = "", nFormat = 1, nTimeOut = 10000) } -[280] a_to_h\DDLManager.ahk { +[285] a_to_h\DDLManager.ahk { Line | Function 0163 | DDLManager(p_Command,p_ListID="",ByRef p_List="",p_Delimiter="",p_Item="",p_MaxItems=0) } -[281] a_to_h\ddraw.ahk { +[286] a_to_h\ddraw.ahk { Line | Function 0017 | fourCC(code) @@ -3480,28 +3486,28 @@ Line | Function 0598 | getDirectDraw4(h_win = "", software=False) } -[282] a_to_h\Debug.ahk { +[287] a_to_h\Debug.ahk { Line | Function 0001 | debug(msg, delimiter = False) 0040 | arg() } -[283] a_to_h\DebugPrintArray.ahk { +[288] a_to_h\DebugPrintArray.ahk { Line | Function 0001 | DebugPrintArray(Array, Display=1, Level=0, guiWidth=800, guiHeight=900) 0073 | DebugAnchor(i, a = "", r = false) } -[284] a_to_h\Decodeu.ahk { +[289] a_to_h\Decodeu.ahk { Line | Function 0001 | decodeu(ustr) 0021 | Unicode2Ansi(ByRef wString, ByRef sString, CP = 0) } -[285] a_to_h\Decompiler.ahk { +[290] a_to_h\Decompiler.ahk { Line | Function 0060 | Decompile(Path) @@ -3509,7 +3515,7 @@ Line | Function 0217 | SearchBuffer(pBuffer,BufferSize,ByRef Search,SearchSize) } -[286] a_to_h\Decrypt.ahk { +[291] a_to_h\Decrypt.ahk { Line | Function 0013 | File_AES(sFileFr, sFileTo, sPassword, SID = 256, bEncrypt = True) @@ -3517,7 +3523,13 @@ Line | Function 0051 | StrPutVar(string, ByRef var, encoding) } -[287] a_to_h\Default.ahk { +[292] a_to_h\deepcopy.ahk { + +Line | Function +0001 | DeepCopy(Array, Objs=0) + +} +[293] a_to_h\Default.ahk { Line | Function 0012 | GetActiveWindowStats() @@ -3527,37 +3539,37 @@ Line | Function 0235 | ClearClipboard() } -[288] a_to_h\DegreeToRadian.ahk { +[294] a_to_h\DegreeToRadian.ahk { Line | Function } -[289] a_to_h\Delay.ahk { +[295] a_to_h\Delay.ahk { Line | Function 0001 | Delay( D=0.001 ) } -[290] a_to_h\DeleteCursor.ahk { +[296] a_to_h\DeleteCursor.ahk { Line | Function 0004 | DeleteCursor(hCursor) } -[291] a_to_h\DeleteObject.ahk { +[297] a_to_h\DeleteObject.ahk { Line | Function 0004 | DeleteObject(hObject) } -[292] a_to_h\DeluxeClipboard.ahk { +[298] a_to_h\DeluxeClipboard.ahk { Line | Function 0046 | WINDOW(Actn) 0157 | String2Hex(x) } -[293] a_to_h\Desktophidelib.ahk { +[299] a_to_h\Desktophidelib.ahk { Line | Function 0001 | RR(path,name) @@ -3568,19 +3580,25 @@ Line | Function 0078 | IsVisible(id) } -[294] a_to_h\DesktopScreenCoordinates.ahk { +[300] a_to_h\DesktopScreenCoordinates.ahk { Line | Function 0005 | DesktopScreenCoordinates(byref Xmin, byref Ymin, byref Xmax, byref Ymax) } -[295] a_to_h\detectPowerMessage.ahk { +[301] a_to_h\detectPowerMessage.ahk { + +Line | Function +0081 | func_WM_POWERBROADCAST(wParam, lParam) + +} +[302] a_to_h\detect_PowerMessage.ahk { Line | Function 0081 | func_WM_POWERBROADCAST(wParam, lParam) } -[296] a_to_h\DeviceInterfaces.ahk { +[303] a_to_h\DeviceInterfaces.ahk { Line | Function 0082 | ListDeviceInterfaces(ByRef _device="", ByRef _identifier="", ByRef _interfaceGUID="", _flags=0x2) @@ -3594,13 +3612,13 @@ Line | Function 0829 | StructPut(ByRef _data, ByRef _struct, _len, _offset=0) } -[297] a_to_h\Devices.ahk { +[304] a_to_h\Devices.ahk { Line | Function 0089 | EnumDiskDrives() } -[298] a_to_h\Dic.ahk { +[305] a_to_h\Dic.ahk { Line | Function 0014 | Dic(Option, pdic="") @@ -3627,7 +3645,7 @@ Line | Function 0186 | Dic_Unicode2Ansi(ByRef wString, ByRef sString, nLen = 0) } -[299] a_to_h\Dictionary.ahk { +[306] a_to_h\Dictionary.ahk { Line | Function 0026 | Dictionary() @@ -3649,26 +3667,26 @@ Line | Function 0229 | HashVal(pdic, sKey) } -[300] a_to_h\DictionaryDatabase.ahk { +[307] a_to_h\DictionaryDatabase.ahk { Line | Function 0001 | DDBD(dic="",action="",ByRef Key="",ByRef Item="",skip=0,limit=9223372036854775807) } -[301] a_to_h\Difference.ahk { +[308] a_to_h\Difference.ahk { Line | Function 0010 | Difference(string1, string2, maxOffset=5) } -[302] a_to_h\DigitsByRecognition.ahk { +[309] a_to_h\DigitsByRecognition.ahk { Line | Function 0052 | DigitsByImageRecognition(X, Y, W, H, Prefix, Ext, Shades, AltImagesFlag, WinId) 0266 | DigitSearchByPixelCount(X,Y,W,H,DigitsType, ByRef PixelCountForAllDigitsStringReturned, WinId) } -[303] a_to_h\dinput.ahk { +[310] a_to_h\dinput.ahk { Line | Function 0006 | DirectInputCreate(Unicode_ = False) @@ -3676,12 +3694,12 @@ Line | Function 0096 | DIEnumDevicesCallback(lpddi, pvRef) } -[304] a_to_h\DirGetParent.ahk { +[311] a_to_h\DirGetParent.ahk { Line | Function } -[305] a_to_h\Display_get_Window_context.ahk { +[312] a_to_h\Display_get_Window_context.ahk { Line | Function 0018 | Display_CreateWindowCapture(ByRef device, ByRef context, ByRef pixels, ByRef id = "") @@ -3705,7 +3723,7 @@ Line | Function 0379 | Display_ReadArea(x, y, w, h, color = 0x000000, variation = 32, ByRef id = "", maxwidth = 0, exclude = "") } -[306] a_to_h\display_window.ahk { +[313] a_to_h\display_window.ahk { Line | Function 0017 | Display_CreateWindowCapture(ByRef device, ByRef context, ByRef pixels, ByRef id = "") @@ -3729,7 +3747,7 @@ Line | Function 0371 | Display_ReadArea(x, y, w, h, color = 0x000000, variation = 32, ByRef id = "", maxwidth = 0, exclude = "") } -[307] a_to_h\Dlg.ahk { +[314] a_to_h\Dlg.ahk { Line | Function 0016 | Dlg_Color(ByRef Color, hGui=0) @@ -3742,7 +3760,7 @@ Line | Function 0387 | Dlg_callback(wparam, lparam, msg, hwnd) } -[308] a_to_h\Dlg2.ahk { +[315] a_to_h\Dlg2.ahk { Line | Function 0224 | Dlg_ChooseColor(hOwner,ByRef r_Color,p_Flags=0,p_CustomColorsFile="",p_HelpHandler="") @@ -3762,7 +3780,7 @@ Line | Function 2758 | Dlg_SaveFile(hOwner=0,p_Title="",p_Filter="",p_FilterIndex="",p_Root="",p_DfltExt="",ByRef r_Flags=0,p_HelpHandler="") } -[309] { +[316] { Line | Function 0078 | Dlg_ChooseColor(hOwner,ByRef r_Color,p_Flags=0,p_CustomColorsFile="",p_HelpHandler="") @@ -3782,7 +3800,7 @@ Line | Function 2778 | Dlg_SaveFile(hOwner=0,p_Title="",p_Filter="",p_FilterIndex="",p_Root="",p_DfltExt="",ByRef r_Flags=0,p_HelpHandler="") } -[310] a_to_h\Dlg2_v03.ahk { +[317] a_to_h\Dlg2_v03.ahk { Line | Function 0224 | Dlg_ChooseColor(hOwner,ByRef r_Color,p_Flags=0,p_CustomColorsFile="",p_HelpHandler="") @@ -3802,13 +3820,13 @@ Line | Function 2828 | Dlg_SaveFile(hOwner=0,p_Title="",p_Filter="",p_FilterIndex="",p_Root="",p_DfltExt="",ByRef r_Flags=0,p_HelpHandler="") } -[311] a_to_h\DLG_FileOpenSave.ahk { +[318] a_to_h\DLG_FileOpenSave.ahk { Line | Function 0244 | __helperFileOpenSaveFlags( flags ) } -[312] a_to_h\dll.ahk { +[319] a_to_h\dll.ahk { Line | Function 0019 | Dll_PackFiles( Folder, DLL, Section="Files" ) @@ -3816,12 +3834,12 @@ Line | Function 0051 | Dll_Read( ByRef Var, Filename, Section, Key ) } -[313] a_to_h\DllCall Data Types.ahk { +[320] a_to_h\DllCall Data Types.ahk { Line | Function } -[314] a_to_h\DllCallStruct.ahk { +[321] a_to_h\DllCallStruct.ahk { Line | Function 0037 | SetNextUInt(ByRef @struct, _value, _bReset=false) @@ -3836,7 +3854,7 @@ Line | Function 0215 | DumpDWORDsByAddr(_binAddr, _byteNb, _bExtended=false) } -[315] a_to_h\dllcall_struct.ahk { +[322] a_to_h\dllcall_struct.ahk { Line | Function 0137 | addressof(struct) @@ -3846,13 +3864,13 @@ Line | Function 0160 | verifyAdr() } -[316] a_to_h\DllExports.ahk { +[323] a_to_h\DllExports.ahk { Line | Function 0033 | DllExports(DllPath) } -[317] a_to_h\DLLPack.ahk { +[324] a_to_h\DLLPack.ahk { Line | Function 0016 | DllPackFiles( Folder, DLL, Section="Files" ) @@ -3860,7 +3878,7 @@ Line | Function 0046 | DllRead( ByRef Var, Filename, Section, Key ) } -[318] a_to_h\DllPackFiles.ahk { +[325] a_to_h\DllPackFiles.ahk { Line | Function 0017 | DllPackFiles( Folder, DLL, Section="Files" ) @@ -3868,7 +3886,7 @@ Line | Function 0047 | DllRead( ByRef Var, Filename, Section, Key ) } -[319] a_to_h\dmp.ahk { +[326] a_to_h\dmp.ahk { Line | Function 0145 | _dmpArrayEmpty(paArray) @@ -3878,13 +3896,13 @@ Line | Function 0301 | _dmpListLines() } -[320] a_to_h\DnsFlushResolverCache.ahk { +[327] a_to_h\DnsFlushResolverCache.ahk { Line | Function 0006 | DnsFlushResolverCache() } -[321] a_to_h\Dock.ahk { +[328] a_to_h\Dock.ahk { Line | Function 0070 | Dock(pClientID, pDockDef="", reset=0) @@ -3896,61 +3914,61 @@ Line | Function 0293 | API_UnhookWinEvent( hWinEventHook ) } -[322] a_to_h\DockA.ahk { +[329] a_to_h\DockA.ahk { Line | Function 0048 | DockA(HHost="", HClient="", DockDef="") 0052 | DockA_(HHost, HClient, DockDef, Hwnd) } -[323] a_to_h\DoDragDrop.ahk { +[330] a_to_h\DoDragDrop.ahk { Line | Function 0011 | DoDragDrop() } -[324] { +[331] { Line | Function 0005 | Download(url, file) 0036 | DL_Progress( pthis, nP=0, nPMax=0, nSC=0, pST=0 ) } -[325] a_to_h\DownloadFile.ahk { +[332] a_to_h\DownloadFile.ahk { Line | Function } -[326] a_to_h\DownloadText.ahk { +[333] a_to_h\DownloadText.ahk { Line | Function } -[327] a_to_h\DownloadToFile.ahk { +[334] a_to_h\DownloadToFile.ahk { Line | Function 0001 | DownloadToFile(url, filename) } -[328] a_to_h\DownloadToString.ahk { +[335] a_to_h\DownloadToString.ahk { Line | Function 0001 | DownloadToString(url, encoding = "utf-8") } -[329] a_to_h\dpi.ahk { +[336] a_to_h\dpi.ahk { Line | Function 0021 | DPI(in="",setdpi=1) } -[330] a_to_h\dpiOffset.ahk { +[337] a_to_h\dpiOffset.ahk { Line | Function 0001 | dpiOffset(val) } -[331] a_to_h\DrawScreen.ahk { +[338] a_to_h\DrawScreen.ahk { Line | Function 0004 | if(monitor = 0) @@ -3965,7 +3983,7 @@ Line | Function 0079 | DrawRectangle(hdc, left, top, right, bottom) } -[332] a_to_h\DrawShadowText9x.ahk { +[339] a_to_h\DrawShadowText9x.ahk { Line | Function 0005 | DrawShadowText9x(hDC, pTxt, sz, pRect, flags, cTxt=0, cShdw=0xC8C8C8, xOff=0, yOff=0, si=0xFF, e="A") @@ -3974,25 +3992,25 @@ Line | Function 0166 | MCode(ByRef code, hx) } -[333] a_to_h\DriveGetLabels.ahk { +[340] a_to_h\DriveGetLabels.ahk { Line | Function 0001 | DriveGetLabels(fnDrivesList) } -[334] a_to_h\dshow.ahk { +[341] a_to_h\dshow.ahk { Line | Function 0004 | getDirectShow() } -[335] a_to_h\dSleep.ahk { +[342] a_to_h\dSleep.ahk { Line | Function 0001 | dSleep(ms) } -[336] a_to_h\dsound.ahk { +[343] a_to_h\dsound.ahk { Line | Function 0006 | loadWAV(file_, formatcheck = True) @@ -4001,34 +4019,34 @@ Line | Function 0142 | getDirectSound(hwin = "") } -[337] a_to_h\dSpeak.ahk { +[344] a_to_h\dSpeak.ahk { Line | Function } -[338] a_to_h\DumpHistory.ahk { +[345] a_to_h\DumpHistory.ahk { Line | Function 0023 | DumpHistory() } -[339] a_to_h\DuplicateFinderAndCounter.ahk { +[346] a_to_h\DuplicateFinderAndCounter.ahk { Line | Function 0044 | SortingWithRegEx(a1, a2) } -[340] a_to_h\DuplicateHandle.ahk { +[347] a_to_h\DuplicateHandle.ahk { Line | Function } -[341] a_to_h\DuplicateToken.ahk { +[348] a_to_h\DuplicateToken.ahk { Line | Function } -[342] a_to_h\dwrite (2).ahk { +[349] a_to_h\dwrite (2).ahk { Line | Function 0005 | __new(ptr) @@ -4216,7 +4234,7 @@ Line | Function 1861 | Resize(width,height) } -[343] a_to_h\dwrite.ahk { +[350] a_to_h\dwrite.ahk { Line | Function 0005 | __new(ptr) @@ -4404,7 +4422,7 @@ Line | Function 1204 | Resize(width,height) } -[344] a_to_h\DynaExpr.ahk { +[351] a_to_h\DynaExpr.ahk { Line | Function 0003 | DynaExpr_EvalToVar(sExpr) @@ -4413,17 +4431,17 @@ Line | Function 0084 | DynaExpr_SetMemVar(ByRef this, sVarName, vVal) } -[345] a_to_h\DynamicInclude.ahk { +[352] a_to_h\DynamicInclude.ahk { Line | Function } -[346] a_to_h\DynaRun.ahk { +[353] a_to_h\DynaRun.ahk { Line | Function } -[347] { +[354] { Line | Function 0009 | ProcessPedalInput(input) @@ -4432,7 +4450,7 @@ Line | Function 0087 | InputMessage(wParam, lParam, msg, hwnd) } -[348] { +[355] { Line | Function 0009 | ProcessPedalInput(input) @@ -4441,7 +4459,7 @@ Line | Function 0087 | InputMessage(wParam, lParam, msg, hwnd) } -[349] a_to_h\Edit.ahk { +[356] a_to_h\Edit.ahk { Line | Function 0065 | Edit_ActivateParent(hEdit) @@ -4545,7 +4563,7 @@ Line | Function 4019 | Edit_WriteFile(hEdit,p_File,p_Encoding="",p_Convert="") } -[350] a_to_h\EditControl.ahk { +[357] a_to_h\EditControl.ahk { Line | Function 0059 | Edit_CanUndo(hEdit) @@ -4602,7 +4620,7 @@ Line | Function 1935 | Edit_GetActiveHandles(ByRef hEdit="",ByRef hWindow="",p_MsgBox=False) } -[351] a_to_h\EditFunctions.ahk { +[358] a_to_h\EditFunctions.ahk { Line | Function 0015 | EditFunc_Standard_Params(ByRef Control, ByRef WinTitle) @@ -4617,7 +4635,7 @@ Line | Function 0191 | EditFunc_SCROLLCARET(control="",wintitle="") } -[352] a_to_h\EditorWin.ahk { +[359] a_to_h\EditorWin.ahk { Line | Function 0049 | if(ControlType = "UpDown") @@ -4710,19 +4728,19 @@ Line | Function 2066 | if(msg = WM_SETCURSOR) } -[353] a_to_h\Edit_AutoSetTabStops.ahk { +[360] a_to_h\Edit_AutoSetTabStops.ahk { Line | Function 0064 | Edit_AutoSetTabStops(hEdit,p_ColumnGap=6,p_MaxSample=0) } -[354] a_to_h\Edit_BlockMove.ahk { +[361] a_to_h\Edit_BlockMove.ahk { Line | Function 0043 | Edit_BlockMove(hEdit,p_Command="") } -[355] a_to_h\Edit_Controls.ahk { +[362] a_to_h\Edit_Controls.ahk { Line | Function 0014 | Edit_Standard_Params(ByRef Control, ByRef WinTitle) @@ -4738,43 +4756,43 @@ Line | Function 0155 | Edit_Undo(Control="",WinTitle="") } -[356] a_to_h\Edit_CutLine.ahk { +[363] a_to_h\Edit_CutLine.ahk { Line | Function 0033 | Edit_CutLine(hEdit,p_LineIdx=-1) } -[357] a_to_h\Edit_DeleteLine.ahk { +[364] a_to_h\Edit_DeleteLine.ahk { Line | Function 0032 | Edit_DeleteLine(hEdit,p_LineIdx=-1) } -[358] a_to_h\Edit_Duplicate.ahk { +[365] a_to_h\Edit_Duplicate.ahk { Line | Function 0038 | Edit_Duplicate(hEdit) } -[359] a_to_h\Edit_SelectLine.ahk { +[366] a_to_h\Edit_SelectLine.ahk { Line | Function 0040 | Edit_SelectLine(hEdit,p_LineIdx=-1,p_IncludeEOL=False) } -[360] a_to_h\Edit_Sort.ahk { +[367] a_to_h\Edit_Sort.ahk { Line | Function 0038 | Edit_Sort(hEdit,p_SortOptions="") } -[361] a_to_h\Edit_SpellCheckGUI.ahk { +[368] a_to_h\Edit_SpellCheckGUI.ahk { Line | Function 0165 | Edit_SpellCheckGUI(p_Owner,hEdit,byRef hSpell,p_CustomDic="",p_Title="",p_Font="") } -[362] a_to_h\Edit_TTSGUI.ahk { +[369] a_to_h\Edit_TTSGUI.ahk { Line | Function 0156 | Edit_TTSGUI(p_Owner,hEdit,p_Options="",p_Title="") @@ -4782,7 +4800,7 @@ Line | Function 1121 | Edit_TTSGUI_OnEndStream(StreamNumber,StreamPosition) } -[363] { +[370] { Line | Function 0059 | Edit_CanUndo(hEdit) @@ -4839,7 +4857,7 @@ Line | Function 1996 | Edit_GetActiveHandles(ByRef hEdit="",ByRef hWindow="",p_MsgBox=False) } -[364] { +[371] { Line | Function 0047 | Edit_ActivateParent(hEdit) @@ -4943,34 +4961,34 @@ Line | Function 4016 | Edit_WriteFile(hEdit,p_File,p_Encoding="",p_Convert="") } -[365] a_to_h\EjectDevice.ahk { +[372] a_to_h\EjectDevice.ahk { Line | Function } -[366] a_to_h\ElapsedTime.ahk { +[373] a_to_h\ElapsedTime.ahk { Line | Function 0093 | ElapsedTime(p_Timer=1,p_Start=false) } -[367] a_to_h\EmptyMem.ahk { +[374] a_to_h\EmptyMem.ahk { Line | Function 0050 | EmptyMem(PID="AHK Rocks") } -[368] a_to_h\EmptyRecycleBin.ahk { +[375] a_to_h\EmptyRecycleBin.ahk { Line | Function } -[369] a_to_h\EmptyWorkingSets.ahk { +[376] a_to_h\EmptyWorkingSets.ahk { Line | Function } -[370] a_to_h\EnableUIAccess.ahk { +[377] a_to_h\EnableUIAccess.ahk { Line | Function 0213 | IsTrustedLocation(path) @@ -4979,13 +4997,13 @@ Line | Function 0341 | Warn(msg) } -[371] a_to_h\Encoding.ahk { +[378] a_to_h\Encoding.ahk { Line | Function 0002 | Encoding_IsValid(enc) } -[372] a_to_h\Encrypt.ahk { +[379] a_to_h\Encrypt.ahk { Line | Function 0013 | File_AES(sFileFr, sFileTo, sPassword, SID = 256, bEncrypt = True) @@ -4993,97 +5011,104 @@ Line | Function 0051 | StrPutVar(string, ByRef var, encoding) } -[373] a_to_h\EntryForm.ahk { +[380] a_to_h\EntryForm.ahk { Line | Function } -[374] a_to_h\EnumClipFormats.ahk { +[381] a_to_h\EnumClipFormats.ahk { Line | Function 0003 | EnumClipFormats() } -[375] a_to_h\EnumComMembers.ahk { +[382] a_to_h\EnumComMembers.ahk { Line | Function 0002 | EnumComMembers(pti) 0060 | vTable(ptr, n) } -[376] a_to_h\EnumDiskDrives.ahk { +[383] a_to_h\EnumDiskDrives.ahk { Line | Function 0015 | EnumDiskDrives() } -[377] a_to_h\enumdisplaydevices.ahk { +[384] a_to_h\enumdisplaydevices.ahk { Line | Function 0105 | EnumDisplayDevices(Index, Adapter = 0, GetInterfaceName=False) } -[378] a_to_h\EnumerateChildProcesses.ahk { +[385] a_to_h\EnumerateChildProcesses.ahk { Line | Function 0024 | EnumerateChilds(PID) } -[379] a_to_h\EnumerateDrives.ahk { +[386] a_to_h\EnumerateDrives.ahk { Line | Function 0010 | EnumerateDrives() } -[380] a_to_h\EnumerateProcesses.ahk { +[387] a_to_h\EnumerateProcesses.ahk { Line | Function 0016 | EnumerateProcesses() } -[381] a_to_h\EnumerateServices.ahk { +[388] a_to_h\EnumerateServices.ahk { Line | Function } -[382] a_to_h\EnumerateVolumes.ahk { +[389] a_to_h\EnumerateVolumes.ahk { Line | Function 0010 | EnumerateVolumes() } -[383] a_to_h\EnumIncludes.ahk { +[390] a_to_h\EnumIncludes.ahk { Line | Function } -[384] a_to_h\EnumWindows.ahk { +[391] a_to_h\EnumToolbarButtons.ahk { + +Line | Function +0099 | if(is_apply_scale) +0127 | ReadRemoteBuffer(hpRemote, RemoteBuffer, ByRef LocalVar, bytes) + +} +[392] a_to_h\EnumWindows.ahk { Line | Function 0031 | EnumChildProc(hWnd, pData) } -[385] a_to_h\Enum_Explorer.ahk { +[393] a_to_h\Enum_Explorer.ahk { Line | Function 0003 | Enum_Explorer(hWnd=0, lParam=0) 0034 | PathCreateFromURL( URL ) } -[386] a_to_h\Environment.ahk { +[394] a_to_h\Environment.ahk { Line | Function 0168 | RefreshEnvironment() 0192 | ExpandEnvironmentStrings(ByRef vInputString) } -[387] a_to_h\EnvUpdate.ahk { +[395] a_to_h\EnvUpdate.ahk { Line | Function 0001 | EnvUpdate() } -[388] { +[396] { Line | Function 0006 | EolTo_Dos(str) @@ -5091,23 +5116,23 @@ Line | Function 0014 | EolToMac(str) } -[389] a_to_h\eol.ahk { +[397] a_to_h\eol.ahk { Line | Function } -[390] a_to_h\ErrMsg.ahk { +[398] a_to_h\ErrMsg.ahk { Line | Function 0014 | ErrMsg(ErrNum="") } -[391] a_to_h\ErrorMessage.ahk { +[399] a_to_h\ErrorMessage.ahk { Line | Function } -[392] a_to_h\euler.ahk { +[400] a_to_h\euler.ahk { Line | Function 0006 | SumMultsToLimit(baseNum, limit) @@ -5241,13 +5266,13 @@ Line | Function 2618 | Euler57() } -[393] a_to_h\eval (2).ahk { +[401] a_to_h\eval (2).ahk { Line | Function 0001 | eval(e, byref log=0) } -[394] a_to_h\Eval.ahk { +[402] a_to_h\Eval.ahk { Line | Function 0076 | Eval(x) @@ -5262,7 +5287,7 @@ Line | Function 0285 | Eval_fac(n) } -[395] a_to_h\EventHandler.ahk { +[403] a_to_h\EventHandler.ahk { Line | Function 0005 | Register(handler) @@ -5275,12 +5300,12 @@ Line | Function 0040 | __New() } -[396] a_to_h\EventIsDue.ahk { +[404] a_to_h\EventIsDue.ahk { Line | Function } -[397] a_to_h\EventLibrary.ahk { +[405] a_to_h\EventLibrary.ahk { Line | Function 0111 | UnHookEvent(functionname, events) @@ -5289,63 +5314,63 @@ Line | Function 0140 | DeleteWinEventHook(functionname, event) } -[398] a_to_h\EWinHook.ahk { +[406] a_to_h\EWinHook.ahk { Line | Function 0042 | EWinHook_SetWinEventHook(eventMin, eventMax, hmodWinEventProc, lpfnWinEventProc, idProcess, idThread, dwflags) 0119 | EWinHook_UnhookWinEvent(hWinEventHook) } -[399] a_to_h\Exec.ahk { +[407] a_to_h\Exec.ahk { Line | Function 0004 | Exec(_#_1,_#_2="",_#_3="",_#_4="",_#_5="",_#_6="",_#_7="",_#_8="",_#_9="",_#_10="",_#_11="",_#_12="",_#_13="",_#_14="",_#_15="",_#_16="",_#_17="",_#_18="",_#_19="",_#_20="") } -[400] a_to_h\ExecScript (2).ahk { +[408] a_to_h\ExecScript (2).ahk { Line | Function } -[401] a_to_h\ExecScript.ahk { +[409] a_to_h\ExecScript.ahk { Line | Function } -[402] a_to_h\ExecuteSQL.ahk { +[410] a_to_h\ExecuteSQL.ahk { Line | Function } -[403] a_to_h\ExecuteSQL_orig.ahk { +[411] a_to_h\ExecuteSQL_orig.ahk { Line | Function } -[404] a_to_h\ExeFunctions.ahk { +[412] a_to_h\ExeFunctions.ahk { Line | Function } -[405] a_to_h\Expand.ahk { +[413] a_to_h\Expand.ahk { Line | Function 0005 | Expand(string) } -[406] a_to_h\ExpandEnv.ahk { +[414] a_to_h\ExpandEnv.ahk { Line | Function 0001 | ExpandEnv(str) } -[407] a_to_h\ExpandEnvironmentStrings.ahk { +[415] a_to_h\ExpandEnvironmentStrings.ahk { Line | Function 0004 | ExpandEnvironmentStrings(string) } -[408] a_to_h\ExpandPostIDs.ahk { +[416] a_to_h\ExpandPostIDs.ahk { Line | Function 0004 | ExpandPostIDs(ByRef query) @@ -5359,18 +5384,18 @@ Line | Function 0115 | Cached_GetTcpipParameters(prmName) } -[409] a_to_h\ExploreDir.ahk { +[417] a_to_h\ExploreDir.ahk { Line | Function 0008 | ExploreDir(DirName) } -[410] a_to_h\ExploreObj.ahk { +[418] a_to_h\ExploreObj.ahk { Line | Function } -[411] a_to_h\Explorer (2).ahk { +[419] a_to_h\Explorer (2).ahk { Line | Function 0025 | Explorer_GetPath(hwnd="") @@ -5380,7 +5405,7 @@ Line | Function 0069 | Explorer_Get(hwnd="",selection=false) } -[412] a_to_h\Explorer.ahk { +[420] a_to_h\Explorer.ahk { Line | Function 0005 | Explorer_GetPath(hwnd="") @@ -5390,7 +5415,7 @@ Line | Function 0048 | Explorer_Get(hwnd="",selection=false) } -[413] a_to_h\ExplorerGrouping.ahk { +[421] a_to_h\ExplorerGrouping.ahk { Line | Function 0035 | GetNewGroupName(dir) @@ -5402,43 +5427,43 @@ Line | Function 0112 | UngroupSelectedFiles() } -[414] a_to_h\explorer_path.ahk { +[422] a_to_h\explorer_path.ahk { Line | Function 0002 | GetWindowsExplorerPath(_hWnd) } -[415] a_to_h\ExternalHeaderLib.ahk { +[423] a_to_h\ExternalHeaderLib.ahk { Line | Function 0092 | GetExternalHeaderText(_winTitle, _classNN="SysHeader321", MaxName=100) 0326 | GetExternalHeaderClassNN(_winTitle, _sysHeader="") } -[416] a_to_h\externalIP.ahk { +[424] a_to_h\externalIP.ahk { Line | Function } -[417] a_to_h\externalIP_old.ahk { +[425] a_to_h\externalIP_old.ahk { Line | Function 0001 | externalIP_old() } -[418] a_to_h\ExtractIconFromExecutable.ahk { +[426] a_to_h\ExtractIconFromExecutable.ahk { Line | Function 0001 | ExtractIconFromExecutable(aFilespec, aIconNumber, aWidth, aHeight) } -[419] a_to_h\ExtractTableData.ahk { +[427] a_to_h\ExtractTableData.ahk { Line | Function 0001 | ExtractTableData( FilePath, HeadingsArray, Delimiter, SaveDir ) } -[420] a_to_h\Facade_Array.ahk { +[428] a_to_h\Facade_Array.ahk { Line | Function 0030 | Array_Empty(Pred, Array) @@ -5464,7 +5489,7 @@ Line | Function 0319 | _Array_ZipAux(Arrays, Index) } -[421] a_to_h\Facade_Func.ahk { +[429] a_to_h\Facade_Func.ahk { Line | Function 0007 | __New(Func) @@ -5492,7 +5517,7 @@ Line | Function 0409 | Func_Conv(F) } -[422] a_to_h\Facade_Ht.ahk { +[430] a_to_h\Facade_Ht.ahk { Line | Function 0012 | Ht_FromObject(Object) @@ -5516,7 +5541,7 @@ Line | Function 0203 | Ht_Values(HashTable) } -[423] a_to_h\Facade_Math.ahk { +[431] a_to_h\Facade_Math.ahk { Line | Function 0004 | Math_Abs(X) @@ -5543,7 +5568,7 @@ Line | Function 0290 | Math_Float(X) } -[424] a_to_h\Facade_Nested.ahk { +[432] a_to_h\Facade_Nested.ahk { Line | Function 0006 | _Nested_Blame(Sig, Func) @@ -5560,7 +5585,7 @@ Line | Function 0204 | Nested_Delete(Path, Dict) } -[425] a_to_h\Facade_Op.ahk { +[433] a_to_h\Facade_Op.ahk { Line | Function 0006 | Op_Get(Obj, Key) @@ -5586,7 +5611,7 @@ Line | Function 0233 | Op_Ne(A, B) } -[426] a_to_h\Facade_Validate.ahk { +[434] a_to_h\Facade_Validate.ahk { Line | Function 0012 | _Validate_TypeRepr(Value) @@ -5614,20 +5639,20 @@ Line | Function 0378 | _Validate_NonEmptyHashTableArg(Sig, Var, Value) } -[427] a_to_h\Factor.ahk { +[435] a_to_h\Factor.ahk { Line | Function 0012 | Factor(Number) } -[428] a_to_h\Factorial.ahk { +[436] a_to_h\Factorial.ahk { Line | Function 0004 | Factorial(Number) 0020 | Factorial_R(Number) } -[429] a_to_h\Fade.ahk { +[437] a_to_h\Fade.ahk { Line | Function 0001 | FadeIn(window = "A", TotalTime = 500, transfinal = 255) @@ -5636,13 +5661,13 @@ Line | Function 0032 | Hide(window = "A") } -[430] a_to_h\FAILED.ahk { +[438] a_to_h\FAILED.ahk { Line | Function 0001 | FAILED(hr) } -[431] a_to_h\FC.ahk { +[439] a_to_h\FC.ahk { Line | Function 0006 | GetDefaultPreferences() @@ -5793,7 +5818,7 @@ Line | Function 2078 | FC_Die(f) } -[432] { +[440] { Line | Function 0007 | GitGetCurrentBranchName() @@ -5801,7 +5826,7 @@ Line | Function 0022 | GitGetIssueTitle(issueNumber) } -[433] { +[441] { Line | Function 0004 | RunOpera() @@ -5810,7 +5835,7 @@ Line | Function 0060 | WinWaitActiveTitleChange(oldTitle="") } -[434] { +[442] { Line | Function 0008 | FileAppend(text, file) @@ -5847,7 +5872,7 @@ Line | Function 0493 | ScriptCheckin(CurrentStatus) } -[435] a_to_h\FcnLib.ahk { +[443] a_to_h\FcnLib.ahk { Line | Function 0035 | SleepMinutes(minutes) @@ -5936,7 +5961,7 @@ Line | Function 1533 | NightlyStats(title, data) } -[436] a_to_h\FE.ahk { +[444] a_to_h\FE.ahk { Line | Function 0001 | FE_load(autobuild=false) @@ -5949,42 +5974,23 @@ Line | Function 0106 | FE_buildMenu() } -[437] a_to_h\FFAAS.ahk { +[445] a_to_h\FFMpeg_ScreenRecord.ahk { Line | Function -0031 | _OnMessage() -0077 | Include(hwnd) -0081 | Exclude(hwnd) -0085 | _CheckComposition() -0094 | Enable(State=1) -0116 | _OffScreenPos() -0129 | SetAero(state=1) -0136 | SyncMode(Mode="ASync", Timer = 30) -0152 | Redraw(hWnd) -0164 | RedrawDB_Aero(hwnd) -0204 | DuplicateWindow(hwndSrc) -0263 | Copy(hwnd) -0279 | __msg(wParam, lParam, msg, hwnd) -0302 | FFAAS_WM_NCLBUTTONDOWN(wParam, lParam, msg, hwnd) -0331 | FFAAS_WM_ENTERSIZEMOVE(wParam, lParam, msg, hwnd) -0348 | FFAAS_WM_SIZING(wParam, lParam, msg, hwnd) -0369 | FFAAS_WM_EXITSIZEMOVE(wParam, lParam, msg, hwnd) -0407 | FFAAS_WM_NCCALCSIZE(wParam, lParam, msg, hwnd) -0447 | FFAAS_WM_WINDOWPOSCHANGING(wParam, lParam, msg, hwnd) -0476 | _FFAAS_CreateWindowEx(ExStyle, ClassName, WindowName, Style, x,y, w,h, hWndParent=0, hMenu=0, hInstance=0, lpParam=0) -0492 | _FFAAS_UpdateLayeredWindow(hwnd, hdc, x="", y="", w="", h="", Alpha=255, flag=4) -0515 | _FFAAS_GetWindowInfo(hwnd,ByRef wx,ByRef wy,ByRef ww,ByRef wh,ByRef cx,ByRef cy,ByRef cw,ByRef ch) -0531 | _FFAAS_RedrawWindow(hWnd, lprcUpdate=0, hrgnUpdate=0, flags=0x101) -0557 | _FFAAS_GetSystemMetrics(Index) -0561 | _FFAAS_IsComposition() -0569 | _FFAAS_WM_SETREDRAW(hWnd, state=1) -0575 | _FFAAS_ReleaseDC(hdc, hwnd=0) -0580 | _FFAAS_GetParent(hWnd) -0584 | _FFAAS_DeleteObject(hObject) -0589 | _FFAAS_BitBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, Raster="") +0003 | WinGetClientPos( winTitle, ByRef x, ByRef y, ByRef w, ByRef h ) +0020 | SetWindow(windowTitle) +0025 | RecordClientArea(b) +0030 | Record(fileOut="") +0070 | Stop() +0074 | Exit() +0079 | StartRecordVLC(x, y, w, h, fileOut="") +0090 | StopRecordVLC() +0096 | StartRecordFFmpeg(x, y, w, h) +0112 | StopRecordFFmpeg() +0116 | WinGetPosEx(hWindow, ByRef X = "", ByRef Y = "", ByRef Width = "", ByRef Height = "", ByRef Offset_X = "", ByRef Offset_Y = "") } -[438] a_to_h\FGP.ahk { +[446] a_to_h\FGP.ahk { Line | Function 0009 | FGP_Init() @@ -5994,12 +6000,12 @@ Line | Function 0098 | FGP_Value(FilePath, Property) } -[439] a_to_h\Fifo.ahk { +[447] a_to_h\Fifo.ahk { Line | Function } -[440] a_to_h\File (3).ahk { +[448] a_to_h\File (3).ahk { Line | Function 0001 | File_Hash(sFile, SID = "CRC32") @@ -6022,7 +6028,23 @@ Line | Function 0136 | File_InternetCloseHandle(Handle) } -[441] a_to_h\File.ahk { +[449] { + +Line | Function +0088 | GetInternetShortcutUrl(sInternetShortcutFile) +0110 | GetWinTitleText(sWinTitle) +0116 | IsValidWinTitleText(sWinTitle) +0145 | GetNewEntries(pTargetMap, pTestMap) +0155 | FirstKey(pMap) +0171 | GetExistingPath(pPath) +0176 | GetAbsolutePath(pPath) +0187 | GetRelativePath(pPath) +0192 | GetRelativePathTo(pPath, pFromDir) +0211 | GetCanonRelativePath(pPath) +0219 | GetCanonRelativePathTo(pPath, pFromDir) + +} +[450] a_to_h\File.ahk { Line | Function 0020 | File_Open(sType, sFile) @@ -6033,7 +6055,7 @@ Line | Function 0124 | File_Close(hFile) } -[442] a_to_h\FileExtract.ahk { +[451] a_to_h\FileExtract.ahk { Line | Function 0021 | FileExtract(Source, Dest, Flag=0) @@ -6041,29 +6063,29 @@ Line | Function 0065 | FileExtract_ToMem(Source, ByRef pData, ByRef DataSize) } -[443] a_to_h\FileFunctions_JEE.ahk { +[452] a_to_h\FileFunctions_JEE.ahk { Line | Function 0012 | JEE_FileEmpty(vPath) 0032 | JEE_FileGetEncoding(vPath) } -[444] a_to_h\FileGetInfo.ahk { +[453] a_to_h\FileGetInfo.ahk { Line | Function } -[445] a_to_h\FileGetVersionInfo.ahk { +[454] a_to_h\FileGetVersionInfo.ahk { Line | Function } -[446] a_to_h\FileGetVersionInfo_AW.ahk { +[455] a_to_h\FileGetVersionInfo_AW.ahk { Line | Function } -[447] a_to_h\FileHelperAndHash.ahk { +[456] a_to_h\FileHelperAndHash.ahk { Line | Function 0011 | File_Hash(sFile, SID = "CRC32") @@ -6088,47 +6110,47 @@ Line | Function 0185 | Crypt_AES(pData, nSize, sPassword, SID = 256, bEncrypt = True) } -[448] a_to_h\FileInstallList.ahk { +[457] a_to_h\FileInstallList.ahk { Line | Function 0018 | FileInstallList(FI_source, FI_dest, FI_overwrite="") } -[449] a_to_h\fileIsBinary.ahk { +[458] a_to_h\fileIsBinary.ahk { Line | Function 0004 | fileIsBinary(_filePath) } -[450] a_to_h\FileIsType.ahk { +[459] a_to_h\FileIsType.ahk { Line | Function 0019 | FileIsType(fPath) } -[451] a_to_h\FileMD5.ahk { +[460] a_to_h\FileMD5.ahk { Line | Function 0070 | FileMD5(sFile="",cSz=4) } -[452] a_to_h\FileQ.ahk { +[461] a_to_h\FileQ.ahk { Line | Function } -[453] a_to_h\FileReadLines.ahk { +[462] a_to_h\FileReadLines.ahk { Line | Function 0014 | Mbx() } -[454] a_to_h\FileReplace.ahk { +[463] a_to_h\FileReplace.ahk { Line | Function } -[455] a_to_h\FileResData.ahk { +[464] a_to_h\FileResData.ahk { Line | Function 0058 | FileRemoveData(FileName, Name) @@ -6137,40 +6159,40 @@ Line | Function 0191 | DllCreateEmpty(DllPath) } -[456] a_to_h\FilesearchByCriteria.ahk { +[465] a_to_h\FilesearchByCriteria.ahk { Line | Function 0006 | FileTail(k,file) } -[457] a_to_h\FileTail.ahk { +[466] a_to_h\FileTail.ahk { Line | Function } -[458] a_to_h\fileUnblock.ahk { +[467] a_to_h\fileUnblock.ahk { Line | Function 0001 | fileUnblock(path) } -[459] a_to_h\FileVerInfo (2).ahk { +[468] a_to_h\FileVerInfo (2).ahk { Line | Function } -[460] a_to_h\FileVerInfo.ahk { +[469] a_to_h\FileVerInfo.ahk { Line | Function } -[461] a_to_h\FindClick.ahk { +[470] a_to_h\FindClick.ahk { Line | Function 0001 | FindClick(ImageFile="", Options="", ByRef FoundX="", ByRef FoundY="") } -[462] a_to_h\findexe.ahk { +[471] a_to_h\findexe.ahk { Line | Function 0075 | GetAppPathFromRegShellKey(exename, regsubKeyShell) @@ -6178,25 +6200,25 @@ Line | Function 0111 | If(exe) } -[463] a_to_h\FindFunc.ahk { +[472] a_to_h\FindFunc.ahk { Line | Function 0001 | FindFunc(Name) } -[464] a_to_h\FindLabel.ahk { +[473] a_to_h\FindLabel.ahk { Line | Function 0001 | FindLabel(Name) } -[465] a_to_h\FindLimit.ahk { +[474] a_to_h\FindLimit.ahk { Line | Function 0001 | FindLimit(initW, incPix) } -[466] a_to_h\FindText on Screen.ahk { +[475] a_to_h\FindText on Screen.ahk { Line | Function 0012 | FindText(x,y,w,h,err1,err0,text) @@ -6212,13 +6234,13 @@ Line | Function 0355 | FindTextOCR(nX, nY, nW, nH, err1, err0, Text, Interval=5) } -[467] a_to_h\FixURI.ahk { +[476] a_to_h\FixURI.ahk { Line | Function 0030 | FixURI(text,source,sourcedir="") } -[468] a_to_h\FlightLogMetrics_23.ahk { +[477] a_to_h\FlightLogMetrics_23.ahk { Line | Function 0001 | PitchRollCorrectStrong(Pitch,Roll,Heading,FoV) @@ -6242,19 +6264,19 @@ Line | Function 0747 | GPS_LatLon2UTM_Zone(Latitude, Longitude) } -[469] a_to_h\FloatToFraction.ahk { +[478] a_to_h\FloatToFraction.ahk { Line | Function 0036 | FloatToFraction(p_Input,p_MinRep=2,p_MinPatLen=1,p_MaxPatLen=15) } -[470] a_to_h\FlushDNS.ahk { +[479] a_to_h\FlushDNS.ahk { Line | Function 0005 | FlushDNS() } -[471] a_to_h\Fnt.ahk { +[480] a_to_h\Fnt.ahk { Line | Function 0096 | Fnt_AddFontFile(p_File,p_Private,p_Hidden=False) @@ -6326,12 +6348,12 @@ Line | Function 4376 | Fnt_VertDTUs2Pixels(hFont,p_VertDTUs) } -[472] a_to_h\fn_CMsgBox.ahk { +[481] a_to_h\fn_CMsgBox.ahk { Line | Function } -[473] a_to_h\Focusless Scroll.ahk { +[482] a_to_h\Focusless Scroll.ahk { Line | Function 0061 | FocuslessScroll(MinLinesPerNotch, MaxLinesPerNotch, AccelerationThreshold, AccelerationType, StutterThreshold) @@ -6339,7 +6361,7 @@ Line | Function 0121 | If(AccelerationType = "P") } -[474] a_to_h\Font.ahk { +[483] a_to_h\Font.ahk { Line | Function 0049 | GetFontName(hFont) @@ -6349,13 +6371,13 @@ Line | Function 0248 | CloneFont(hFont) } -[475] a_to_h\Form Filler.ahk { +[484] a_to_h\Form Filler.ahk { Line | Function 0015 | FillForm(winTitle, formInfo, GetOrPost = "GET") } -[476] a_to_h\Form.ahk { +[485] a_to_h\Form.ahk { Line | Function 0087 | Form_Add(HParent, Ctrl, Txt="", Opt="", E1="",E2="",E3="",E4="",E5="",E6="",E7="") @@ -6374,42 +6396,50 @@ Line | Function 0506 | Form_setEsc(Hwnd, Type) } -[477] a_to_h\format.ahk { +[486] a_to_h\format.ahk { Line | Function 0031 | format_v(f, v) } -[478] a_to_h\Format4Csv.ahk { +[487] a_to_h\Format4Csv.ahk { Line | Function 0005 | Format4CSV(F4C_String) } -[479] a_to_h\FormatAHK.ahk { +[488] a_to_h\FormatAHK.ahk { Line | Function } -[480] a_to_h\FormatHRESULT.ahk { +[489] a_to_h\FormatDword.ahk { + +Line | Function +0017 | HIWORD(Dword,Hex=0) +0023 | LOWORD(Dword,Hex=0) +0029 | MAKELONG(LOWORD,HIWORD,Hex=0) + +} +[490] a_to_h\FormatHRESULT.ahk { Line | Function 0001 | FormatHRESULT(hr) } -[481] a_to_h\FormatNumberCommas.ahk { +[491] a_to_h\FormatNumberCommas.ahk { Line | Function 0001 | FormatNumberCommas(fnInputNumber) } -[482] a_to_h\formatTickCount.ahk { +[492] a_to_h\formatTickCount.ahk { Line | Function 0001 | FormatTickCount(ms) } -[483] a_to_h\ForumFunctions.ahk { +[493] a_to_h\ForumFunctions.ahk { Line | Function 0015 | ForumSearch(BaseURL = "",Keywords = "",Author = "",ForumIndex = 0,ResultLimit = 0,SearchAny = 0,PreviousDays = 0) @@ -6418,7 +6448,7 @@ Line | Function 0109 | ConvertEntities(HTML) } -[484] a_to_h\FreeImage.ahk { +[494] a_to_h\FreeImage.ahk { Line | Function 0053 | FreeImage_FoxInit(isInit=True) @@ -6485,7 +6515,7 @@ Line | Function 0399 | FreeImage_Paste(hImageDst, hImageSrc, nLeft, nTop, nAlpha) } -[485] a_to_h\FS.ahk { +[495] a_to_h\FS.ahk { Line | Function 0002 | FS_Exists(path) @@ -6511,7 +6541,7 @@ Line | Function 0154 | FS_DesktopShortcutRemove(TargetFileName, Description = "") } -[486] a_to_h\ftp.ahk { +[496] a_to_h\ftp.ahk { Line | Function 0008 | FTP_CreateDirectory(hConnect,DirName) @@ -6533,21 +6563,21 @@ Line | Function 0292 | FTP_GetCurrentDirectory(hConnect,ByRef DirName) } -[487] a_to_h\FuncAutokeyWord.ahk { +[497] a_to_h\FuncAutokeyWord.ahk { Line | Function 0021 | if(doFirstWord) 0023 | if(firstWord) } -[488] a_to_h\funcs.ahk { +[498] a_to_h\funcs.ahk { Line | Function 0001 | Funcs() 0005 | CoMode(p1,p2="") } -[489] a_to_h\FuncsForClasses_misc.ahk { +[499] a_to_h\FuncsForClasses_misc.ahk { Line | Function 0058 | FAIL(msg) @@ -6561,7 +6591,7 @@ Line | Function 0245 | repeat(x, y) } -[490] a_to_h\funcStrRegEx.ahk { +[500] a_to_h\funcStrRegEx.ahk { Line | Function 0049 | ObjHasVal(ByRef obj, val) @@ -6580,7 +6610,7 @@ Line | Function 0497 | evalCalloutLen(val) } -[491] a_to_h\Functions (2).ahk { +[501] a_to_h\Functions (2).ahk { Line | Function 0036 | LoadLibrary(sDllName) @@ -6596,7 +6626,7 @@ Line | Function 0496 | fRandItem(oInput) } -[492] a_to_h\Functions.ahk { +[502] a_to_h\Functions.ahk { Line | Function 0008 | Functions() @@ -6659,62 +6689,62 @@ Line | Function 0232 | WinGetTitle(WinTitle = "", WinText = "", ExcludeTitle = "", ExcludeText = "") } -[493] a_to_h\Func_IniSettingsEditor_v6.ahk { +[503] a_to_h\Func_IniSettingsEditor_v6.ahk { Line | Function 0156 | IniSettingsEditor(ProgName,IniFile,OwnedBy = 0,DisableGui = 0) 0556 | GuiIniSettingsEditorAnchor(ctrl, a, draw = false) } -[494] a_to_h\Fuzzy(2).ahk { +[504] a_to_h\Fuzzy(2).ahk { Line | Function 0003 | Fuzzy(input, arr) 0046 | FuzzyWrap(input, arr) } -[495] a_to_h\Fuzzy.ahk { +[505] a_to_h\Fuzzy.ahk { Line | Function 0003 | Fuzzy(input, arr) 0046 | FuzzyWrap(input, arr) } -[496] a_to_h\FuzzySearch.ahk { +[506] a_to_h\FuzzySearch.ahk { Line | Function 0030 | FuzzySearch(dict, query) 0082 | FuzzySearchMin(a,b) } -[497] a_to_h\g.ahk { +[507] a_to_h\g.ahk { Line | Function } -[498] a_to_h\GActiveXCtl.ahk { +[508] a_to_h\GActiveXCtl.ahk { Line | Function } -[499] a_to_h\Gaussian.ahk { +[509] a_to_h\Gaussian.ahk { Line | Function 0001 | Gaussian(lower = 0.0, upper = 1.0) } -[500] a_to_h\GButtonCtl.ahk { +[510] a_to_h\GButtonCtl.ahk { Line | Function } -[501] a_to_h\GCD.ahk { +[511] a_to_h\GCD.ahk { Line | Function 0004 | GCD(X, Y) } -[502] a_to_h\Gdip.ahk { +[512] a_to_h\Gdip.ahk { Line | Function 0069 | UpdateLayeredWindow(hwnd, hdc, x="", y="", w="", h="", Alpha=255) @@ -6854,7 +6884,7 @@ Line | Function 2622 | StrGetB(Address, Length=-1, Encoding=0) } -[503] a_to_h\GDIPlusHelper.ahk { +[513] a_to_h\GDIPlusHelper.ahk { Line | Function 0020 | FormatHexNumber(_value, _digitNb) @@ -6881,7 +6911,7 @@ Line | Function 0840 | GDIplus_AddEncoderParameter(ByRef @encoderParameters, _categoryGUID, ByRef @value) } -[504] a_to_h\GDIplusWrapper.ahk { +[514] a_to_h\GDIplusWrapper.ahk { Line | Function 0165 | GDIplus_Start() @@ -6899,7 +6929,7 @@ Line | Function 0584 | GDIplus_AddEncoderParameter(ByRef @encoderParameters, _categoryGUID, ByRef @value) } -[505] a_to_h\gdiplus_outlinedtext.ahk { +[515] a_to_h\gdiplus_outlinedtext.ahk { Line | Function 0078 | WM_LBUTTONDOWN() @@ -6908,7 +6938,7 @@ Line | Function 0206 | Gdip_SetLineJoin(pPen, linejoin=2) } -[506] a_to_h\GDIPrinter.ahk { +[516] a_to_h\GDIPrinter.ahk { Line | Function 0003 | EnumPrinters() @@ -6917,7 +6947,7 @@ Line | Function 0032 | EndPrintDocument(hDC) } -[507] a_to_h\Gdip_AddPathBeziers.ahk { +[517] a_to_h\Gdip_AddPathBeziers.ahk { Line | Function 0015 | Gdip_AddPathBeziers(pPath, Points) @@ -6933,7 +6963,7 @@ Line | Function 0089 | Gdip_ClonePath(pPath) } -[508] { +[518] { Line | Function 0069 | UpdateLayeredWindow(hwnd, hdc, x="", y="", w="", h="", Alpha=255) @@ -7073,7 +7103,7 @@ Line | Function 2673 | StrGetB(Address, Length=-1, Encoding=0) } -[509] { +[519] { Line | Function 0222 | SetImage(hwnd, hBitmap) @@ -7179,7 +7209,7 @@ Line | Function 2809 | MDMF_GetInfo(HMON) } -[510] { +[520] { Line | Function 0235 | SetImage(hwnd, hBitmap) @@ -7288,345 +7318,349 @@ Line | Function 2707 | MDMF_GetInfo(HMON) } -[511] a_to_h\Gdip_All.ahk { - -Line | Function -0282 | SetImage(hwnd, hBitmap) -0426 | Gdip_BitmapFromHWND(hwnd) -0450 | CreateRectF(ByRef RectF, x, y, w, h) -0466 | CreateRect(ByRef Rect, x, y, x2, y2) -0484 | CreateSizeF(ByRef SizeF, w, h) -0499 | CreatePointF(ByRef PointF, x, y) -0504 | CreatePointsF(ByRef PointsF, inPoints) -0586 | DestroyIcon(hIcon) -0603 | GetIconDimensions(hIcon, ByRef Width, ByRef Height) -0630 | PaintDesktop(hdc) -0672 | SelectObject(hdc, hgdiobj) -0687 | DeleteObject(hObject) -0756 | DeleteDC(hdc) -0769 | Gdip_LibraryVersion() -0784 | Gdip_LibrarySubVersion() -0849 | Gdip_BitmapFromBase64(ByRef Base64) -0886 | Gdip_DrawRectangle(pGraphics, pPen, x, y, w, h) -0906 | Gdip_DrawRoundedRectangle(pGraphics, pPen, x, y, w, h, r) -0923 | Gdip_DrawRoundedRectangle2(pGraphics, pPen, x, y, w, h, r) -0970 | Gdip_DrawEllipse(pGraphics, pPen, x, y, w, h) -0994 | Gdip_DrawBezier(pGraphics, pPen, x1, y1, x2, y2, x3, y3, x4, y4) -1034 | Gdip_DrawBezierCurve(pGraphics, pPen, Points) -1077 | Gdip_DrawPolygon(pGraphics, pPen, Points) -1103 | Gdip_DrawArc(pGraphics, pPen, x, y, w, h, StartAngle, SweepAngle) -1130 | Gdip_DrawPie(pGraphics, pPen, x, y, w, h, StartAngle, SweepAngle) -1148 | Gdip_DrawLine(pGraphics, pPen, x1, y1, x2, y2) -1171 | Gdip_DrawLines(pGraphics, pPen, Points) -1189 | Gdip_FillRectangle(pGraphics, pBrush, x, y, w, h) -1214 | Gdip_FillRoundedRectangle2(pGraphics, pBrush, x, y, w, h, r) -1234 | Gdip_FillRoundedRectangle(pGraphics, pBrush, x, y, w, h, r) -1288 | Gdip_FillPie(pGraphics, pBrush, x, y, w, h, StartAngle, SweepAngle) -1313 | Gdip_FillEllipse(pGraphics, pBrush, x, y, w, h) -1331 | Gdip_FillRegion(pGraphics, pBrush, Region) -1347 | Gdip_FillPath(pGraphics, pBrush, pPath) -1526 | Gdip_DrawImageFast(pGraphics, pBitmap, X, Y) -1540 | Gdip_DrawImageRect(pGraphics, pBitmap, X, Y, W, H) -1650 | Gdip_CreateImageAttributes() -1655 | Gdip_CloneImageAttributes(ImageAttr) -1673 | Gdip_SetImageAttributesResetMatrix(ImageAttr, ColorAdjustType) -1687 | Gdip_SetImageAttributesToggle(ImageAttr, ColorAdjustType, fEnable) -1714 | Gdip_SetImageAttributesWrapMode(ImageAttr, WrapMode, ARGB) -1730 | Gdip_ResetImageAttributes(ImageAttr, ColorAdjustType) -1752 | Gdip_GraphicsFromImage(pBitmap) -1768 | Gdip_GraphicsFromHDC(hdc) -1794 | Gdip_GetDC(pGraphics) -1809 | Gdip_ReleaseDC(pGraphics, hdc) -1831 | Gdip_GraphicsFlush(pGraphics, intent) -1852 | Gdip_BlurBitmap(pBitmap, BlurAmount) -1991 | Gdip_GetPixel(pBitmap, x, y) -2008 | Gdip_SetPixel(pBitmap, x, y, ARGB) -2021 | Gdip_GetImageWidth(pBitmap) -2035 | Gdip_GetImageHeight(pBitmap) -2051 | Gdip_GetImageDimensions(pBitmap, ByRef Width, ByRef Height) -2059 | Gdip_GetImageDimension(pBitmap, ByRef w, ByRef h) -2064 | Gdip_GetImageBounds(pBitmap) -2121 | Gdip_GetImageType(pBitmap) -2134 | Gdip_GetDPI(pGraphics, ByRef DpiX, ByRef DpiY) -2139 | Gdip_GetDpiX(pGraphics) -2144 | Gdip_GetDpiY(pGraphics) -2149 | Gdip_GetImageHorizontalResolution(pBitmap) -2154 | Gdip_GetImageVerticalResolution(pBitmap) -2159 | Gdip_BitmapSetResolution(pBitmap, dpix, dpiy) -2163 | Gdip_CreateBitmapFromGraphics(pGraphics, Width, Height) -2256 | Gdip_CreateBitmapFromHICON(hIcon) -2262 | Gdip_CreateHICONFromBitmap(pBitmap) -2279 | Gdip_CreateBitmapFromClipboard() -2307 | Gdip_SetBitmapToClipboard(pBitmap) -2367 | Gdip_CloneBitmap(pBitmap) -2376 | Gdip_BitmapSelectActiveFrame(pBitmap, FrameIndex) -2398 | Gdip_GetBitmapFramesCount(pBitmap) -2414 | Gdip_CreateCachedBitmap(pBitmap, pGraphics) -2424 | Gdip_DeleteCachedBitmap(pCachedBitmap) -2429 | Gdip_DrawCachedBitmap(pGraphics, pCachedBitmap, X, Y) -2539 | Gdip_SetPenWidth(pPen, width) -2543 | Gdip_GetPenWidth(pPen) -2550 | Gdip_GetPenDashStyle(pPen) -2557 | Gdip_SetPenColor(pPen, ARGB) -2561 | Gdip_GetPenColor(pPen) -2568 | Gdip_SetPenBrushFill(pPen, pBrush) -2572 | Gdip_ResetPenTransform(pPen) -2592 | Gdip_SetPenTransform(pPen, pMatrix) -2597 | Gdip_GetPenTransform(pPen) -2603 | Gdip_GetPenBrushFill(pPen) -2610 | Gdip_GetPenFillType(pPen) -2628 | Gdip_GetPenStartCap(pPen) -2636 | Gdip_GetPenEndCap(pPen) -2644 | Gdip_GetPenDashCaps(pPen) -2652 | Gdip_GetPenAlignment(pPen) -2683 | Gdip_SetPenLineCaps(pPen, StartCap, EndCap, DashCap) -2688 | Gdip_SetPenStartCap(pPen, LineCap) -2693 | Gdip_SetPenEndCap(pPen, LineCap) -2698 | Gdip_SetPenDashCaps(pPen, LineCap) -2707 | Gdip_SetPenAlignment(pPen, Alignment) -2718 | Gdip_GetPenCompoundCount(pPen) -2725 | Gdip_SetPenCompoundArray(pPen, inCompounds) -2748 | Gdip_SetPenDashStyle(pPen, DashStyle) -2762 | Gdip_SetPenDashArray(pPen, Dashes) -2785 | Gdip_SetPenDashOffset(pPen, Offset) -2794 | Gdip_GetPenDashArray(pPen) -2812 | Gdip_GetPenCompoundArray(pPen) -2827 | Gdip_SetPenLineJoin(pPen, LineJoin) -2838 | Gdip_SetPenMiterLimit(pPen, MiterLimit) -2854 | Gdip_SetPenUnit(pPen, Unit) -2869 | Gdip_GetPenDashCount(pPen) -2876 | Gdip_GetPenDashOffset(pPen) -2883 | Gdip_GetPenLineJoin(pPen) -2890 | Gdip_GetPenMiterLimit(pPen) -2897 | Gdip_GetPenUnit(pPen) -2904 | Gdip_ClonePen(pPen) -2920 | Gdip_SetSolidFillColor(pBrush, ARGB) -2924 | Gdip_GetSolidFillColor(pBrush) -2992 | Gdip_GetHatchBackgroundColor(pHatchBrush) -3000 | Gdip_GetHatchForegroundColor(pHatchBrush) -3008 | Gdip_GetHatchStyle(pHatchBrush) -3100 | Gdip_SetTextureTransform(pTexBrush, hMatrix) -3105 | Gdip_GetTextureTransform(pTexBrush) -3111 | Gdip_ResetTextureTransform(pTexBrush) -3116 | Gdip_SetTextureWrapMode(pTexBrush, WrapMode) -3121 | Gdip_GetTextureWrapMode(pTexBrush) -3129 | Gdip_GetTextureImage(pTexBrush) -3159 | Gdip_SetLinearGrBrushColors(pLinearGradientBrush, ARGB1, ARGB2) -3164 | Gdip_GetLinearGrBrushColors(pLinearGradientBrush, ByRef ARGB1, ByRef ARGB2) -3190 | Gdip_GetLinearGrBrushGammaCorrection(pLinearGradientBrush) -3198 | Gdip_SetLinearGrBrushGammaCorrection(pLinearGradientBrush, UseGammaCorrection) -3203 | Gdip_GetLinearGrBrushRect(pLinearGradientBrush) -3221 | Gdip_ResetLinearGrBrushTransform(pLinearGradientBrush) -3241 | Gdip_SetLinearGrBrushTransform(pLinearGradientBrush, pMatrix) -3246 | Gdip_GetLinearGrBrushTransform(pLineGradientBrush) -3268 | Gdip_GetLinearGrBrushWrapMode(pLinearGradientBrush) -3276 | Gdip_SetLinearGrBrushLinearBlend(pLinearGradientBrush, nFocus, nScale) -3281 | Gdip_SetLinearGrBrushSigmaBlend(pLinearGradientBrush, nFocus, nScale) -3286 | Gdip_SetLinearGrBrushWrapMode(pLinearGradientBrush, WrapMode) -3291 | Gdip_GetLinearGrBrushBlendCount(pLinearGradientBrush) -3299 | Gdip_CloneBrush(pBrush) -3304 | Gdip_GetBrushType(pBrush) -3324 | Gdip_DeletePen(pPen) -3328 | Gdip_DeleteBrush(pBrush) -3345 | Gdip_DeleteGraphics(pGraphics) -3349 | Gdip_DisposeImageAttributes(ImageAttr) -3353 | Gdip_DeleteFont(hFont) -3357 | Gdip_DeleteStringFormat(hStringFormat) -3361 | Gdip_DeleteFontFamily(hFontFamily) -3365 | Gdip_DeleteMatrix(hMatrix) -3572 | Gdip_DrawString(pGraphics, sString, hFont, hStringFormat, pBrush, ByRef RectF) -3591 | Gdip_MeasureString(pGraphics, sString, hFont, hStringFormat, ByRef RectF) -3706 | GenerateIntermediatePoints(PointsList, minDist, ByRef resultPointsCount) -3796 | Gdip_CloneStringFormat(hStringFormat) -3812 | Gdip_SetStringFormatAlign(hStringFormat, Align) -3821 | Gdip_GetStringFormatAlign(hStringFormat) -3829 | Gdip_GetStringFormatLineAlign(hStringFormat) -3837 | Gdip_GetStringFormatDigitSubstitution(hStringFormat) -3845 | Gdip_GetStringFormatHotkeyPrefix(hStringFormat) -3853 | Gdip_GetStringFormatTrimming(hStringFormat) -3861 | Gdip_SetStringFormatLineAlign(hStringFormat, StringAlign) -3885 | Gdip_SetStringFormatFlags(hStringFormat, Flags) -3891 | Gdip_SetStringFormatHotkeyPrefix(hStringFormat, PrefixProcessMode) -3903 | Gdip_SetStringFormatTrimming(hStringFormat, TrimMode) -3929 | Gdip_FontFamilyCreate(FontName) -3946 | Gdip_FontFamilyCreateGeneric(whichStyle) -3963 | Gdip_CreateFontFromDC(hDC) -3991 | Gdip_GetFontSize(hFont) -3997 | Gdip_GetFontStyle(hFont) -4006 | Gdip_GetFontUnit(hFont) -4015 | Gdip_CloneFont(hfont) -4021 | Gdip_GetFontFamily(hFont) -4029 | Gdip_CloneFontFamily(hFontFamily) -4035 | Gdip_IsFontStyleAvailable(hFontFamily, Style) -4069 | Gdip_GetFontFamilyName(hFontFamily) -4081 | Gdip_CreateAffineMatrix(m11, m12, m21, m22, x, y) -4086 | Gdip_CreateMatrix() -4091 | Gdip_InvertMatrix(hMatrix) -4097 | Gdip_IsMatrixEqual(hMatrixA, hMatrixB) -4106 | Gdip_IsMatrixIdentity(hMatrix) -4116 | Gdip_IsMatrixInvertible(hMatrix) -4124 | Gdip_MultiplyMatrix(hMatrixA, hMatrixB, matrixOrder) -4134 | Gdip_CloneMatrix(hMatrix) -4163 | Gdip_AddPathEllipse(pPath, x, y, w, h) -4167 | Gdip_AddPathRectangle(pPath, x, y, w, h) -4171 | Gdip_AddPathPolygon(pPath, Points) -4213 | Gdip_AddPathToPath(pPathA, pPathB, fConnect) -4278 | Gdip_AddPathString(pPath, String, hFontFamily, Style, Size, hStringFormat, X, Y, W, H) -4286 | Gdip_SetPathFillMode(pPath, FillMode) -4296 | Gdip_GetPathFillMode(pPath) -4304 | Gdip_GetPathLastPoint(pPath, ByRef X, ByRef Y) -4317 | Gdip_GetPathPointsCount(pPath) -4325 | Gdip_GetPathPoints(pPath) -4366 | Gdip_ResetPath(pPath) -4373 | Gdip_ReversePath(pPath) -4380 | Gdip_IsOutlineVisiblePathPoint(pGraphics, pPath, pPen, X, Y) -4387 | Gdip_IsVisiblePathPoint(pPath, x, y, pGraphics) -4396 | Gdip_DeletePath(pPath) -4404 | Gdip_SetTextRenderingHint(pGraphics, RenderingHint) -4414 | Gdip_SetInterpolationMode(pGraphics, InterpolationMode) -4427 | Gdip_SetSmoothingMode(pGraphics, SmoothingMode) -4437 | Gdip_SetCompositingMode(pGraphics, CompositingMode) -4444 | Gdip_SetCompositingQuality(pGraphics, CompositionQuality) -4456 | Gdip_SetPageScale(pGraphics, Scale) -4464 | Gdip_SetPageUnit(pGraphics, Unit) -4479 | Gdip_SetPixelOffsetMode(pGraphics, PixelOffsetMode) -4489 | Gdip_SetRenderingOrigin(pGraphics, X, Y) -4496 | Gdip_SetTextContrast(pGraphics, Contrast) -4503 | Gdip_GetTextContrast(pGraphics) -4511 | Gdip_GetCompositingMode(pGraphics) -4519 | Gdip_GetCompositingQuality(pGraphics) -4527 | Gdip_GetInterpolationMode(pGraphics) -4535 | Gdip_GetSmoothingMode(pGraphics) -4543 | Gdip_GetPageScale(pGraphics) -4551 | Gdip_GetPageUnit(pGraphics) -4559 | Gdip_GetPixelOffsetMode(pGraphics) -4567 | Gdip_GetRenderingOrigin(pGraphics, ByRef X, ByRef Y) -4572 | Gdip_GetTextRenderingHint(pGraphics) -4601 | Gdip_ResetWorldTransform(pGraphics) -4605 | Gdip_ResetPageTransform(pGraphics) -4609 | Gdip_SetWorldTransform(pGraphics, hMatrix) -4614 | Gdip_GetRotatedTranslation(Width, Height, Angle, ByRef xTranslation, ByRef yTranslation) -4628 | Gdip_GetRotatedDimensions(Width, Height, Angle, ByRef RWidth, ByRef RHeight) -4639 | Gdip_GetWorldTransform(pGraphics) -4647 | Gdip_IsVisibleGraphPoint(pGraphics, X, Y) -4655 | Gdip_IsVisibleGraphRect(pGraphics, X, Y, Width, Height) -4663 | Gdip_IsVisibleGraphRectEntirely(pGraphics, X, Y, Width, Height) -4695 | Gdip_IsClipEmpty(pGraphics) -4705 | Gdip_IsVisibleClipEmpty(pGraphics) -4735 | Gdip_GetClipBounds(pGraphics) -4754 | Gdip_GetVisibleClipBounds(pGraphics) -4773 | Gdip_TranslateClip(pGraphics, dX, dY) -4778 | Gdip_ResetClip(pGraphics) -4782 | Gdip_GetClipRegion(pGraphics) -4814 | Gdip_CreateRegion() -4819 | Gdip_CombineRegionRegion(Region, Region2, CombineMode) -4827 | Gdip_CombineRegionRect(Region, x, y, w, h, CombineMode) -4836 | Gdip_CombineRegionPath(Region, pPath, CombineMode) -4842 | Gdip_CreateRegionPath(pPath) -4852 | Gdip_CreateRegionRect(x, y, w, h) -4860 | Gdip_IsEmptyRegion(pGraphics, Region) -4868 | Gdip_IsEqualRegion(pGraphics, Region1, Region2) -4876 | Gdip_IsInfiniteRegion(pGraphics, Region) -4884 | Gdip_IsVisibleRegionPoint(pGraphics, Region, x, y) -4892 | Gdip_IsVisibleRegionRect(pGraphics, Region, x, y, width, height) -4900 | Gdip_IsVisibleRegionRectEntirely(pGraphics, Region, x, y, width, height) -4913 | Gdip_SetEmptyRegion(Region) -4918 | Gdip_SetInfiniteRegion(Region) -4923 | Gdip_GetRegionBounds(pGraphics, Region) -4942 | Gdip_TranslateRegion(Region, X, Y) -4963 | Gdip_TransformRegion(Region, pMatrix) -4968 | Gdip_CloneRegion(Region) -4974 | Gdip_DeleteRegion(Region) -4993 | Gdip_UnlockBits(pBitmap, ByRef BitmapData) -4998 | Gdip_SetLockBitPixel(ARGB, Scan0, x, y, Stride) -5002 | Gdip_GetLockBitPixel(Scan0, x, y, Stride) -5008 | Gdip_PixelateBitmap(pBitmap, ByRef pBitmapOut, BlockSize) -5098 | Gdip_ToARGB(A, R, G, B) -5102 | Gdip_FromARGB(ARGB, ByRef A, ByRef R, ByRef G, ByRef B) -5109 | Gdip_AFromARGB(ARGB) -5113 | Gdip_RFromARGB(ARGB) -5117 | Gdip_GFromARGB(ARGB) -5121 | Gdip_BFromARGB(ARGB) -5170 | Gdip_Startup() -5181 | Gdip_Shutdown(pToken) -5194 | IsInteger(Var) -5201 | IsNumber(Var) -5214 | GetMonitorCount() -5221 | GetMonitorInfo(MonitorNum) -5228 | GetPrimaryMonitor() -5250 | MDMF_EnumProc(HMON, HDC, PRECT, ObjectAddr) -5257 | MDMF_FromHWND(HWND) -5276 | MDMF_FromRect(X, Y, W, H) -5285 | MDMF_GetInfo(HMON) -5311 | Gdip_LoadImageFromFile(sFile) -5328 | Gdip_GetPropertyCount(pImage) -5347 | Gdip_GetPropertyIdList(pImage) -5380 | Gdip_GetPropertyItem(pImage, PropID) -5431 | Gdip_GetAllPropertyItems(pImage) -5486 | Gdip_GetPropertyTagName(PropID) -5518 | Gdip_GetPropertyTagType(PropType) -5523 | Gdip_GetPropertyItemValue(ByRef PropVal, PropLen, PropType, PropAddr) -5612 | Gdip_ResetMatrix(hMatrix) -5622 | Gdip_GetPathWorldBounds(pPath) -5651 | Gdip_TransformPath(pPath, hMatrix) -5656 | Gdip_SetMatrixElements(hMatrix, m11, m12, m21, m22, x, y) -5661 | Gdip_GetLastStatus(pMatrix) -5684 | Gdip_AddPathBeziers(pPath, Points) -5690 | Gdip_AddPathBezier(pPath, x1, y1, x2, y2, x3, y3, x4, y4) -5707 | Gdip_AddPathLines(pPath, Points) -5713 | Gdip_AddPathLine(pPath, x1, y1, x2, y2) -5718 | Gdip_AddPathArc(pPath, x, y, w, h, StartAngle, SweepAngle) -5723 | Gdip_AddPathPie(pPath, x, y, w, h, StartAngle, SweepAngle) -5728 | Gdip_StartPathFigure(pPath) -5735 | Gdip_ClosePathFigure(pPath) -5751 | Gdip_DrawPath(pGraphics, pPen, pPath) -5764 | Gdip_ClonePath(pPath) -5777 | Gdip_PathGradientCreateFromPath(pPath) -5784 | Gdip_PathGradientSetCenterPoint(pBrush, X, Y) -5794 | Gdip_PathGradientSetCenterColor(pBrush, CenterColor) -5801 | Gdip_PathGradientSetSurroundColors(pBrush, SurroundColors) -5841 | Gdip_PathGradientSetFocusScales(pBrush, xScale, yScale) -5888 | Gdip_CreatePathGradient(Points, WrapMode) -5906 | Gdip_PathGradientGetGammaCorrection(pPathGradientBrush) -5914 | Gdip_PathGradientGetPointCount(pPathGradientBrush) -5922 | Gdip_PathGradientGetWrapMode(pPathGradientBrush) -5930 | Gdip_PathGradientGetRect(pPathGradientBrush) -5949 | Gdip_PathGradientResetTransform(pPathGradientBrush) -5969 | Gdip_PathGradientSetTransform(pPathGradientBrush, pMatrix) -5974 | Gdip_PathGradientGetTransform(pPathGradientBrush) -5997 | Gdip_PathGradientSetGammaCorrection(pPathGradientBrush, UseGammaCorrection) -6004 | Gdip_PathGradientSetWrapMode(pPathGradientBrush, WrapMode) -6015 | Gdip_PathGradientGetCenterColor(pPathGradientBrush) -6023 | Gdip_PathGradientGetCenterPoint(pPathGradientBrush, ByRef X, ByRef Y) -6035 | Gdip_PathGradientGetFocusScales(pPathGradientBrush, ByRef X, ByRef Y) -6040 | Gdip_PathGradientGetSurroundColorCount(pPathGradientBrush) -6048 | Gdip_GetPathGradientSurroundColors(pPathGradientBrush) -6074 | Gdip_GetHistogram(pBitmap, whichFormat, ByRef newArrayA, ByRef newArrayB, ByRef newArrayC) -6107 | Gdip_DrawRoundedLine(G, x1, y1, x2, y2, LineWidth, LineColor) -6121 | CreateCompatibleBitmap(hdc, w, h) -6126 | Gdi_CreateDIBitmap(hdc, bmpInfoHeader, CBM_INIT, pBits, BITMAPINFO, DIB_COLORS) -6151 | Gdip_CreateBitmapFromGdiDib(BITMAPINFO, BitmapData) -6157 | Gdi_StretchDIBits(hDestDC, dX, dY, dW, dH, sX, sY, sW, sH, tBITMAPINFO, Usage, pBits, Rop) -6166 | Gdi_SetDIBitsToDevice(hDC, dX, dY, Width, Height, sX, sY, StartScan, ScanLines, pBits, BITMAPINFO, DIB_COLORS) -6176 | Gdi_GetDIBits(hdc, hBitmap, start, cLines, pBits, BITMAPINFO, DIB_COLORS) -6306 | COM_CLSIDfromString(ByRef CLSID, String) -6398 | Gdip_DisposeEffect(pEffect) -6610 | calcIMGdimensions(imgW, imgH, givenW, givenH, ByRef ResizedW, ByRef ResizedH) - -} -[512] a_to_h\Gdip_box.ahk { +[521] a_to_h\Gdip_All.ahk { + +Line | Function +0290 | SetImage(hwnd, hBitmap) +0433 | Gdip_BitmapFromHWND(hwnd) +0454 | CreateRectF(ByRef RectF, x, y, w, h) +0471 | CreateRect(ByRef Rect, x, y, x2, y2) +0489 | CreateSizeF(ByRef SizeF, w, h) +0505 | CreatePointF(ByRef PointF, x, y) +0511 | CreatePointsF(ByRef PointsF, inPoints) +0596 | DestroyIcon(hIcon) +0613 | GetIconDimensions(hIcon, ByRef Width, ByRef Height) +0640 | PaintDesktop(hdc) +0682 | SelectObject(hdc, hgdiobj) +0697 | DeleteObject(hObject) +0765 | DeleteDC(hdc) +0778 | Gdip_LibraryVersion() +0793 | Gdip_LibrarySubVersion() +0858 | Gdip_BitmapFromBase64(ByRef Base64) +0895 | Gdip_DrawRectangle(pGraphics, pPen, x, y, w, h) +0915 | Gdip_DrawRoundedRectangle(pGraphics, pPen, x, y, w, h, r) +0932 | Gdip_DrawRoundedRectangle2(pGraphics, pPen, x, y, w, h, r) +0979 | Gdip_DrawEllipse(pGraphics, pPen, x, y, w, h) +1002 | Gdip_DrawBezier(pGraphics, pPen, x1, y1, x2, y2, x3, y3, x4, y4) +1041 | Gdip_DrawBezierCurve(pGraphics, pPen, Points) +1084 | Gdip_DrawPolygon(pGraphics, pPen, Points) +1110 | Gdip_DrawArc(pGraphics, pPen, x, y, w, h, StartAngle, SweepAngle) +1137 | Gdip_DrawPie(pGraphics, pPen, x, y, w, h, StartAngle, SweepAngle) +1155 | Gdip_DrawLine(pGraphics, pPen, x1, y1, x2, y2) +1177 | Gdip_DrawLines(pGraphics, pPen, Points) +1195 | Gdip_FillRectangle(pGraphics, pBrush, x, y, w, h) +1219 | Gdip_FillRoundedRectangle2(pGraphics, pBrush, x, y, w, h, r) +1239 | Gdip_FillRoundedRectangle(pGraphics, pBrush, x, y, w, h, r) +1293 | Gdip_FillPie(pGraphics, pBrush, x, y, w, h, StartAngle, SweepAngle) +1318 | Gdip_FillEllipse(pGraphics, pBrush, x, y, w, h) +1336 | Gdip_FillRegion(pGraphics, pBrush, Region) +1352 | Gdip_FillPath(pGraphics, pBrush, pPath) +1549 | Gdip_DrawImageRect(pGraphics, pBitmap, X, Y, W, H) +1659 | Gdip_CreateImageAttributes() +1664 | Gdip_CloneImageAttributes(ImageAttr) +1682 | Gdip_SetImageAttributesResetMatrix(ImageAttr, ColorAdjustType) +1696 | Gdip_SetImageAttributesToggle(ImageAttr, ColorAdjustType, fEnable) +1723 | Gdip_SetImageAttributesWrapMode(ImageAttr, WrapMode, ARGB) +1739 | Gdip_ResetImageAttributes(ImageAttr, ColorAdjustType) +1839 | Gdip_GetDC(pGraphics) +1854 | Gdip_ReleaseDC(pGraphics, hdc) +1876 | Gdip_GraphicsFlush(pGraphics, intent) +1897 | Gdip_BlurBitmap(pBitmap, BlurAmount) +2036 | Gdip_GetPixel(pBitmap, x, y) +2043 | Gdip_GetPixelColor(pBitmap, x, y, Format) +2065 | Gdip_SetPixel(pBitmap, x, y, ARGB) +2078 | Gdip_GetImageWidth(pBitmap) +2092 | Gdip_GetImageHeight(pBitmap) +2108 | Gdip_GetImageDimensions(pBitmap, ByRef Width, ByRef Height) +2116 | Gdip_GetImageDimension(pBitmap, ByRef w, ByRef h) +2121 | Gdip_GetImageBounds(pBitmap) +2140 | Gdip_GetImageRawFormat(pBitmap) +2201 | Gdip_GetImageType(pBitmap) +2214 | Gdip_GetDPI(pGraphics, ByRef DpiX, ByRef DpiY) +2219 | Gdip_GetDpiX(pGraphics) +2224 | Gdip_GetDpiY(pGraphics) +2229 | Gdip_GetImageHorizontalResolution(pBitmap) +2234 | Gdip_GetImageVerticalResolution(pBitmap) +2239 | Gdip_BitmapSetResolution(pBitmap, dpix, dpiy) +2243 | Gdip_CreateBitmapFromGraphics(pGraphics, Width, Height) +2337 | Gdip_CreateBitmapFromHICON(hIcon) +2343 | Gdip_CreateHICONFromBitmap(pBitmap) +2367 | Gdip_CreateBitmapFromClipboard() +2395 | Gdip_SetBitmapToClipboard(pBitmap) +2455 | Gdip_CloneBitmap(pBitmap) +2464 | Gdip_BitmapSelectActiveFrame(pBitmap, FrameIndex) +2486 | Gdip_GetBitmapFramesCount(pBitmap) +2501 | Gdip_CreateCachedBitmap(pBitmap, pGraphics) +2511 | Gdip_DeleteCachedBitmap(pCachedBitmap) +2516 | Gdip_DrawCachedBitmap(pGraphics, pCachedBitmap, X, Y) +2674 | Gdip_SetPenWidth(pPen, width) +2678 | Gdip_GetPenWidth(pPen) +2685 | Gdip_GetPenDashStyle(pPen) +2692 | Gdip_SetPenColor(pPen, ARGB) +2696 | Gdip_GetPenColor(pPen) +2703 | Gdip_SetPenBrushFill(pPen, pBrush) +2707 | Gdip_ResetPenTransform(pPen) +2732 | Gdip_SetPenTransform(pPen, pMatrix) +2737 | Gdip_GetPenTransform(pPen) +2743 | Gdip_GetPenBrushFill(pPen) +2750 | Gdip_GetPenFillType(pPen) +2768 | Gdip_GetPenStartCap(pPen) +2776 | Gdip_GetPenEndCap(pPen) +2784 | Gdip_GetPenDashCaps(pPen) +2792 | Gdip_GetPenAlignment(pPen) +2823 | Gdip_SetPenLineCaps(pPen, StartCap, EndCap, DashCap) +2828 | Gdip_SetPenStartCap(pPen, LineCap) +2833 | Gdip_SetPenEndCap(pPen, LineCap) +2838 | Gdip_SetPenDashCaps(pPen, LineCap) +2847 | Gdip_SetPenAlignment(pPen, Alignment) +2858 | Gdip_GetPenCompoundCount(pPen) +2865 | Gdip_SetPenCompoundArray(pPen, inCompounds) +2888 | Gdip_SetPenDashStyle(pPen, DashStyle) +2902 | Gdip_SetPenDashArray(pPen, Dashes) +2925 | Gdip_SetPenDashOffset(pPen, Offset) +2934 | Gdip_GetPenDashArray(pPen) +2952 | Gdip_GetPenCompoundArray(pPen) +2967 | Gdip_SetPenLineJoin(pPen, LineJoin) +2978 | Gdip_SetPenMiterLimit(pPen, MiterLimit) +2994 | Gdip_SetPenUnit(pPen, Unit) +3009 | Gdip_GetPenDashCount(pPen) +3016 | Gdip_GetPenDashOffset(pPen) +3023 | Gdip_GetPenLineJoin(pPen) +3030 | Gdip_GetPenMiterLimit(pPen) +3037 | Gdip_GetPenUnit(pPen) +3044 | Gdip_ClonePen(pPen) +3060 | Gdip_SetSolidFillColor(pBrush, ARGB) +3064 | Gdip_GetSolidFillColor(pBrush) +3132 | Gdip_GetHatchBackgroundColor(pHatchBrush) +3140 | Gdip_GetHatchForegroundColor(pHatchBrush) +3148 | Gdip_GetHatchStyle(pHatchBrush) +3245 | Gdip_SetTextureTransform(pTexBrush, hMatrix) +3250 | Gdip_GetTextureTransform(pTexBrush) +3256 | Gdip_ResetTextureTransform(pTexBrush) +3261 | Gdip_SetTextureWrapMode(pTexBrush, WrapMode) +3273 | Gdip_GetTextureWrapMode(pTexBrush) +3281 | Gdip_GetTextureImage(pTexBrush) +3311 | Gdip_SetLinearGrBrushColors(pLinearGradientBrush, ARGB1, ARGB2) +3316 | Gdip_GetLinearGrBrushColors(pLinearGradientBrush, ByRef ARGB1, ByRef ARGB2) +3342 | Gdip_GetLinearGrBrushGammaCorrection(pLinearGradientBrush) +3350 | Gdip_SetLinearGrBrushGammaCorrection(pLinearGradientBrush, UseGammaCorrection) +3355 | Gdip_GetLinearGrBrushRect(pLinearGradientBrush) +3373 | Gdip_ResetLinearGrBrushTransform(pLinearGradientBrush) +3398 | Gdip_SetLinearGrBrushTransform(pLinearGradientBrush, pMatrix) +3403 | Gdip_GetLinearGrBrushTransform(pLineGradientBrush) +3425 | Gdip_GetLinearGrBrushWrapMode(pLinearGradientBrush) +3433 | Gdip_SetLinearGrBrushLinearBlend(pLinearGradientBrush, nFocus, nScale) +3438 | Gdip_SetLinearGrBrushSigmaBlend(pLinearGradientBrush, nFocus, nScale) +3443 | Gdip_SetLinearGrBrushWrapMode(pLinearGradientBrush, WrapMode) +3448 | Gdip_GetLinearGrBrushBlendCount(pLinearGradientBrush) +3456 | Gdip_CloneBrush(pBrush) +3461 | Gdip_GetBrushType(pBrush) +3481 | Gdip_DeletePen(pPen) +3485 | Gdip_DeleteBrush(pBrush) +3502 | Gdip_DeleteGraphics(pGraphics) +3506 | Gdip_DisposeImageAttributes(ImageAttr) +3510 | Gdip_DeleteFont(hFont) +3514 | Gdip_DeleteStringFormat(hStringFormat) +3518 | Gdip_DeleteFontFamily(hFontFamily) +3522 | Gdip_DeleteMatrix(hMatrix) +3760 | Gdip_DrawString(pGraphics, sString, hFont, hStringFormat, pBrush, ByRef RectF) +3779 | Gdip_MeasureString(pGraphics, sString, hFont, hStringFormat, ByRef RectF) +3920 | GenerateIntermediatePoints(PointsList, minDist, ByRef resultPointsCount) +4010 | Gdip_CloneStringFormat(hStringFormat) +4026 | Gdip_SetStringFormatAlign(hStringFormat, Align) +4035 | Gdip_GetStringFormatAlign(hStringFormat) +4043 | Gdip_GetStringFormatLineAlign(hStringFormat) +4051 | Gdip_GetStringFormatDigitSubstitution(hStringFormat) +4059 | Gdip_GetStringFormatHotkeyPrefix(hStringFormat) +4067 | Gdip_GetStringFormatTrimming(hStringFormat) +4075 | Gdip_SetStringFormatLineAlign(hStringFormat, StringAlign) +4099 | Gdip_SetStringFormatFlags(hStringFormat, Flags) +4105 | Gdip_SetStringFormatHotkeyPrefix(hStringFormat, PrefixProcessMode) +4117 | Gdip_SetStringFormatTrimming(hStringFormat, TrimMode) +4144 | Gdip_FontFamilyCreate(FontName) +4161 | Gdip_NewPrivateFontCollection() +4166 | Gdip_DeletePrivateFontCollection(hFontCollection) +4198 | Gdip_FontFamilyCreateGeneric(whichStyle) +4215 | Gdip_CreateFontFromDC(hDC) +4243 | Gdip_GetFontSize(hFont) +4249 | Gdip_GetFontStyle(hFont) +4258 | Gdip_GetFontUnit(hFont) +4267 | Gdip_CloneFont(hfont) +4273 | Gdip_GetFontFamily(hFont) +4281 | Gdip_CloneFontFamily(hFontFamily) +4287 | Gdip_IsFontStyleAvailable(hFontFamily, Style) +4321 | Gdip_GetFontFamilyName(hFontFamily) +4333 | Gdip_CreateAffineMatrix(m11, m12, m21, m22, x, y) +4338 | Gdip_CreateMatrix() +4343 | Gdip_InvertMatrix(hMatrix) +4349 | Gdip_IsMatrixEqual(hMatrixA, hMatrixB) +4358 | Gdip_IsMatrixIdentity(hMatrix) +4368 | Gdip_IsMatrixInvertible(hMatrix) +4376 | Gdip_MultiplyMatrix(hMatrixA, hMatrixB, matrixOrder) +4386 | Gdip_CloneMatrix(hMatrix) +4415 | Gdip_AddPathEllipse(pPath, x, y, w, h) +4419 | Gdip_AddPathRectangle(pPath, x, y, w, h) +4423 | Gdip_AddPathPolygon(pPath, Points) +4467 | Gdip_AddPathToPath(pPathA, pPathB, fConnect) +4546 | Gdip_AddPathString(pPath, String, hFontFamily, Style, Size, hStringFormat, X, Y, W, H) +4554 | Gdip_SetPathFillMode(pPath, FillMode) +4564 | Gdip_GetPathFillMode(pPath) +4572 | Gdip_GetPathLastPoint(pPath, ByRef X, ByRef Y) +4585 | Gdip_GetPathPointsCount(pPath) +4593 | Gdip_GetPathPoints(pPath) +4634 | Gdip_ResetPath(pPath) +4641 | Gdip_ReversePath(pPath) +4648 | Gdip_IsOutlineVisiblePathPoint(pGraphics, pPath, pPen, X, Y) +4655 | Gdip_IsVisiblePathPoint(pPath, x, y, pGraphics) +4664 | Gdip_DeletePath(pPath) +4672 | Gdip_SetTextRenderingHint(pGraphics, RenderingHint) +4682 | Gdip_SetInterpolationMode(pGraphics, InterpolationMode) +4695 | Gdip_SetSmoothingMode(pGraphics, SmoothingMode) +4705 | Gdip_SetCompositingMode(pGraphics, CompositingMode) +4712 | Gdip_SetCompositingQuality(pGraphics, CompositionQuality) +4724 | Gdip_SetPageScale(pGraphics, Scale) +4732 | Gdip_SetPageUnit(pGraphics, Unit) +4747 | Gdip_SetPixelOffsetMode(pGraphics, PixelOffsetMode) +4757 | Gdip_SetRenderingOrigin(pGraphics, X, Y) +4764 | Gdip_SetTextContrast(pGraphics, Contrast) +4771 | Gdip_GetTextContrast(pGraphics) +4779 | Gdip_GetCompositingMode(pGraphics) +4787 | Gdip_GetCompositingQuality(pGraphics) +4795 | Gdip_GetInterpolationMode(pGraphics) +4803 | Gdip_GetSmoothingMode(pGraphics) +4811 | Gdip_GetPageScale(pGraphics) +4819 | Gdip_GetPageUnit(pGraphics) +4827 | Gdip_GetPixelOffsetMode(pGraphics) +4835 | Gdip_GetRenderingOrigin(pGraphics, ByRef X, ByRef Y) +4840 | Gdip_GetTextRenderingHint(pGraphics) +4874 | Gdip_ResetWorldTransform(pGraphics) +4878 | Gdip_ResetPageTransform(pGraphics) +4882 | Gdip_SetWorldTransform(pGraphics, hMatrix) +4887 | Gdip_GetRotatedTranslation(Width, Height, Angle, ByRef xTranslation, ByRef yTranslation) +4901 | Gdip_GetRotatedDimensions(Width, Height, Angle, ByRef RWidth, ByRef RHeight) +4912 | Gdip_GetWorldTransform(pGraphics) +4920 | Gdip_IsVisibleGraphPoint(pGraphics, X, Y) +4928 | Gdip_IsVisibleGraphRect(pGraphics, X, Y, Width, Height) +4936 | Gdip_IsVisibleGraphRectEntirely(pGraphics, X, Y, Width, Height) +4968 | Gdip_IsClipEmpty(pGraphics) +4978 | Gdip_IsVisibleClipEmpty(pGraphics) +5008 | Gdip_GetClipBounds(pGraphics) +5027 | Gdip_GetVisibleClipBounds(pGraphics) +5046 | Gdip_TranslateClip(pGraphics, dX, dY) +5051 | Gdip_ResetClip(pGraphics) +5055 | Gdip_GetClipRegion(pGraphics) +5087 | Gdip_CreateRegion() +5092 | Gdip_CombineRegionRegion(Region, Region2, CombineMode) +5100 | Gdip_CombineRegionRect(Region, x, y, w, h, CombineMode) +5109 | Gdip_CombineRegionPath(Region, pPath, CombineMode) +5115 | Gdip_CreateRegionPath(pPath) +5125 | Gdip_CreateRegionRect(x, y, w, h) +5133 | Gdip_IsEmptyRegion(pGraphics, Region) +5141 | Gdip_IsEqualRegion(pGraphics, Region1, Region2) +5149 | Gdip_IsInfiniteRegion(pGraphics, Region) +5157 | Gdip_IsVisibleRegionPoint(pGraphics, Region, x, y) +5165 | Gdip_IsVisibleRegionRect(pGraphics, Region, x, y, width, height) +5173 | Gdip_IsVisibleRegionRectEntirely(pGraphics, Region, x, y, width, height) +5186 | Gdip_SetEmptyRegion(Region) +5191 | Gdip_SetInfiniteRegion(Region) +5196 | Gdip_GetRegionBounds(pGraphics, Region) +5215 | Gdip_TranslateRegion(Region, X, Y) +5236 | Gdip_TransformRegion(Region, pMatrix) +5241 | Gdip_CloneRegion(Region) +5247 | Gdip_DeleteRegion(Region) +5266 | Gdip_UnlockBits(pBitmap, ByRef BitmapData) +5271 | Gdip_SetLockBitPixel(ARGB, Scan0, x, y, Stride) +5275 | Gdip_GetLockBitPixel(Scan0, x, y, Stride) +5281 | Gdip_PixelateBitmap(pBitmap, ByRef pBitmapOut, BlockSize) +5371 | Gdip_ToARGB(A, R, G, B) +5375 | Gdip_FromARGB(ARGB, ByRef A, ByRef R, ByRef G, ByRef B) +5382 | Gdip_AFromARGB(ARGB) +5386 | Gdip_RFromARGB(ARGB) +5390 | Gdip_GFromARGB(ARGB) +5394 | Gdip_BFromARGB(ARGB) +5443 | Gdip_Startup() +5454 | Gdip_Shutdown(pToken) +5467 | IsInteger(Var) +5474 | IsNumber(Var) +5487 | GetMonitorCount() +5494 | GetMonitorInfo(MonitorNum) +5501 | GetPrimaryMonitor() +5523 | MDMF_EnumProc(HMON, HDC, PRECT, ObjectAddr) +5530 | MDMF_FromHWND(HWND) +5549 | MDMF_FromRect(X, Y, W, H) +5558 | MDMF_GetInfo(HMON) +5584 | Gdip_LoadImageFromFile(sFile) +5601 | Gdip_GetPropertyCount(pImage) +5620 | Gdip_GetPropertyIdList(pImage) +5653 | Gdip_GetPropertyItem(pImage, PropID) +5704 | Gdip_GetAllPropertyItems(pImage) +5759 | Gdip_GetPropertyTagName(PropID) +5791 | Gdip_GetPropertyTagType(PropType) +5796 | Gdip_GetPropertyItemValue(ByRef PropVal, PropLen, PropType, PropAddr) +5885 | Gdip_ResetMatrix(hMatrix) +5895 | Gdip_GetPathWorldBounds(pPath) +5924 | Gdip_TransformPath(pPath, hMatrix) +5929 | Gdip_SetMatrixElements(hMatrix, m11, m12, m21, m22, x, y) +5934 | Gdip_GetLastStatus(pMatrix) +5957 | Gdip_AddPathBeziers(pPath, Points) +5963 | Gdip_AddPathBezier(pPath, x1, y1, x2, y2, x3, y3, x4, y4) +5980 | Gdip_AddPathLines(pPath, Points) +5986 | Gdip_AddPathLine(pPath, x1, y1, x2, y2) +5991 | Gdip_AddPathArc(pPath, x, y, w, h, StartAngle, SweepAngle) +5996 | Gdip_AddPathPie(pPath, x, y, w, h, StartAngle, SweepAngle) +6001 | Gdip_StartPathFigure(pPath) +6008 | Gdip_ClosePathFigure(pPath) +6024 | Gdip_DrawPath(pGraphics, pPen, pPath) +6037 | Gdip_ClonePath(pPath) +6050 | Gdip_PathGradientCreateFromPath(pPath) +6057 | Gdip_PathGradientSetCenterPoint(pBrush, X, Y) +6067 | Gdip_PathGradientSetCenterColor(pBrush, CenterColor) +6074 | Gdip_PathGradientSetSurroundColors(pBrush, SurroundColors) +6114 | Gdip_PathGradientSetFocusScales(pBrush, xScale, yScale) +6161 | Gdip_CreatePathGradient(Points, WrapMode) +6179 | Gdip_PathGradientGetGammaCorrection(pPathGradientBrush) +6187 | Gdip_PathGradientGetPointCount(pPathGradientBrush) +6195 | Gdip_PathGradientGetWrapMode(pPathGradientBrush) +6203 | Gdip_PathGradientGetRect(pPathGradientBrush) +6222 | Gdip_PathGradientResetTransform(pPathGradientBrush) +6247 | Gdip_PathGradientSetTransform(pPathGradientBrush, pMatrix) +6252 | Gdip_PathGradientGetTransform(pPathGradientBrush) +6275 | Gdip_PathGradientSetGammaCorrection(pPathGradientBrush, UseGammaCorrection) +6282 | Gdip_PathGradientSetWrapMode(pPathGradientBrush, WrapMode) +6293 | Gdip_PathGradientGetCenterColor(pPathGradientBrush) +6301 | Gdip_PathGradientGetCenterPoint(pPathGradientBrush, ByRef X, ByRef Y) +6313 | Gdip_PathGradientGetFocusScales(pPathGradientBrush, ByRef X, ByRef Y) +6318 | Gdip_PathGradientGetSurroundColorCount(pPathGradientBrush) +6326 | Gdip_GetPathGradientSurroundColors(pPathGradientBrush) +6352 | Gdip_GetHistogram(pBitmap, whichFormat, ByRef newArrayA, ByRef newArrayB, ByRef newArrayC) +6385 | Gdip_DrawRoundedLine(G, x1, y1, x2, y2, LineWidth, LineColor) +6399 | CreateCompatibleBitmap(hdc, w, h) +6404 | Gdi_CreateDIBitmap(hdc, bmpInfoHeader, CBM_INIT, pBits, BITMAPINFO, DIB_COLORS) +6429 | Gdip_CreateBitmapFromGdiDib(BITMAPINFO, BitmapData) +6435 | Gdi_StretchDIBits(hDestDC, dX, dY, dW, dH, sX, sY, sW, sH, tBITMAPINFO, DIB_COLORS, pBits, RasterOper) +6444 | Gdi_SetDIBitsToDevice(hDC, dX, dY, Width, Height, sX, sY, StartScan, ScanLines, pBits, BITMAPINFO, DIB_COLORS) +6454 | Gdi_GetDIBits(hDC, hBitmap, start, cLines, pBits, BITMAPINFO, DIB_COLORS) +6589 | COM_CLSIDfromString(ByRef CLSID, String) +6681 | Gdip_DisposeEffect(pEffect) +6902 | Gdip_RetrieveBitmapChannel(pBitmap, channel) +7008 | Gdip_SetBitmapAlphaChannel(pBitmap, AlphaMaskBitmap) +7059 | calcIMGdimensions(imgW, imgH, givenW, givenH, ByRef ResizedW, ByRef ResizedH) +7087 | GetWindowRect(hwnd, ByRef W, ByRef H) + +} +[522] a_to_h\Gdip_box.ahk { Line | Function 0001 | box(Videox,Videoy,thickness) 0090 | AlwaysAtBottom(Child_ID) } -[513] a_to_h\Gdip_draw_n_Gui.ahk { +[523] a_to_h\Gdip_draw_n_Gui.ahk { Line | Function } -[514] a_to_h\Gdip_Ext.ahk { +[524] a_to_h\Gdip_Ext.ahk { Line | Function 0001 | Gdip_TextToGraphics2(pGraphics, Text, Options, Font="Arial", Width="", Height="", Measure=0) @@ -7648,37 +7682,37 @@ Line | Function 0251 | Gdip_ClonePath(pPath) } -[515] a_to_h\Gdip_ImageSearch.ahk { +[525] a_to_h\Gdip_ImageSearch.ahk { Line | Function 0192 | Gdip_SetBitmapTransColor(pBitmap,TransColor) 0404 | Gdip_LockedBitsSearch(hStride,hScan,hWidth,hHeight,nStride,nScan,nWidth,nHeight,ByRef x="",ByRef y="",sx1=0,sy1=0,sx2=0,sy2=0,Variation=0,sd=1) } -[516] a_to_h\Gdip_TilePicture.ahk { +[526] a_to_h\Gdip_TilePicture.ahk { Line | Function 0001 | TilePicture(guiName, TilehWnd, desiredW, desiredH) } -[517] a_to_h\GEditCtl.ahk { +[527] a_to_h\GEditCtl.ahk { Line | Function } -[518] a_to_h\genrandom.ahk { +[528] a_to_h\genrandom.ahk { Line | Function 0001 | genrand() } -[519] a_to_h\Geolocation.ahk { +[529] a_to_h\Geolocation.ahk { Line | Function 0005 | GetLocation(RefreshNetworkList = 0) } -[520] a_to_h\Get Scintilla Constants and Message Numbers.ahk { +[530] a_to_h\Get Scintilla Constants and Message Numbers.ahk { Line | Function 0005 | load_sci_constants() @@ -7686,7 +7720,7 @@ Line | Function 0068 | load_sci_keyboard_commands() } -[521] { +[531] { Line | Function 0021 | GetActiveBrowserURL() @@ -7700,7 +7734,7 @@ Line | Function 0115 | Acc_Children(Acc) } -[522] a_to_h\GetActiveBrowserURL.ahk { +[532] a_to_h\GetActiveBrowserURL.ahk { Line | Function 0039 | GetActiveBrowserURL() @@ -7710,249 +7744,249 @@ Line | Function 0125 | IsURL(sURL) } -[523] a_to_h\GetActiveObjects.ahk { +[533] a_to_h\GetActiveObjects.ahk { Line | Function } -[524] a_to_h\GetActiveWindow.ahk { +[534] a_to_h\GetActiveWindow.ahk { Line | Function 0006 | GetActiveWindow() } -[525] a_to_h\GetAdapterAdresses.ahk { +[535] a_to_h\GetAdapterAdresses.ahk { Line | Function 0023 | GetAdaptersAddresses() } -[526] a_to_h\GetAddressOfData.ahk { +[536] a_to_h\GetAddressOfData.ahk { Line | Function 0006 | GetAddressOfData(hProcess, Data, Size) } -[527] a_to_h\GetAppsInfo.ahk { +[537] a_to_h\GetAppsInfo.ahk { Line | Function 0035 | GetAppsInfo(infoType) } -[528] a_to_h\GetAvailableFileName.ahk { +[538] a_to_h\GetAvailableFileName.ahk { Line | Function 0004 | GetAvailableFileName( GivenFileName, GivenPath = "", StartID = 1 ) 0096 | GetAvailableFileName_fast( GivenFileName, GivenPath = "", StartID = 1 ) } -[529] a_to_h\GetBinaryType (2).ahk { +[539] a_to_h\GetBinaryType (2).ahk { Line | Function 0007 | GetBinaryType(Application) } -[530] a_to_h\GetBinaryType.ahk { +[540] a_to_h\GetBinaryType.ahk { Line | Function 0017 | GetBinaryType(ApplicationName) } -[531] a_to_h\GetChildHWND.ahk { +[541] a_to_h\GetChildHWND.ahk { Line | Function 0001 | GetChildHWND(ParentHWND, ChildClassNN) } -[532] a_to_h\GetClipboardData.ahk { +[542] a_to_h\GetClipboardData.ahk { Line | Function 0001 | GetClipboardData(_format, ByRef @data) } -[533] a_to_h\GetColor.ahk { +[543] a_to_h\GetColor.ahk { Line | Function 0055 | GetCursorPos(byref x,byref y) } -[534] a_to_h\GetColumnList.ahk { +[544] a_to_h\GetColumnList.ahk { Line | Function 0001 | GetColumnList(fnTableName,fnDatabaseName = "xDatabaseNamex") } -[535] a_to_h\GetCOMError.ahk { +[545] a_to_h\GetCOMError.ahk { Line | Function 0004 | GetSysErrorText(errNr) } -[536] a_to_h\GetCommonPath.ahk { +[546] a_to_h\GetCommonPath.ahk { Line | Function 0003 | GetCommonPath( csidl ) } -[537] a_to_h\GetConnectionString.ahk { +[547] a_to_h\GetConnectionString.ahk { Line | Function 0001 | GetConnectionString(fnServerName) } -[538] a_to_h\GetControlsInfo.ahk { +[548] a_to_h\GetControlsInfo.ahk { Line | Function 0037 | GetControlsInfo(p_WinTitle="",p_WinText="",p_ExcludeTitle="",p_ExcludeText="") } -[539] a_to_h\GetCurrencyFormat.ahk { +[549] a_to_h\GetCurrencyFormat.ahk { Line | Function } -[540] a_to_h\GetCurrencyFormatEx.ahk { +[550] a_to_h\GetCurrencyFormatEx.ahk { Line | Function } -[541] a_to_h\GetCurrentProcess.ahk { +[551] a_to_h\GetCurrentProcess.ahk { Line | Function 0006 | GetCurrentProcess() } -[542] a_to_h\getCurrentTime.ahk { +[552] a_to_h\getCurrentTime.ahk { Line | Function 0008 | if(countryIsTimezone) } -[543] a_to_h\GetDesktopWallpaper.ahk { +[553] a_to_h\GetDesktopWallpaper.ahk { Line | Function 0006 | GetDesktopWallpaper() } -[544] a_to_h\GetDirParent.ahk { +[554] a_to_h\GetDirParent.ahk { Line | Function 0008 | GetDirParent(DirName) } -[545] a_to_h\GetDllBase.ahk { +[555] a_to_h\GetDllBase.ahk { Line | Function 0001 | GetDllBase(DllName, PID = 0) } -[546] a_to_h\GetDnsAddress.ahk { +[556] a_to_h\GetDnsAddress.ahk { Line | Function 0005 | GetDnsAddress() } -[547] a_to_h\GetDriveLetter.ahk { +[557] a_to_h\GetDriveLetter.ahk { Line | Function 0001 | GetDriveLetter(fnVolumeIdentifier) } -[548] a_to_h\GetDriveType.ahk { +[558] a_to_h\GetDriveType.ahk { Line | Function } -[549] a_to_h\GetDurationFromMilliseconds.ahk { +[559] a_to_h\GetDurationFromMilliseconds.ahk { Line | Function 0001 | GetDurationFromMilliseconds(fnMilliseconds,fnIncludeMilliseconds = "0",fnPreserveNegative = "0") } -[550] a_to_h\GetEnv.ahk { +[560] a_to_h\GetEnv.ahk { Line | Function 0001 | GetEnv() } -[551] a_to_h\GetEnvironmentVariables.ahk { +[561] a_to_h\GetEnvironmentVariables.ahk { Line | Function 0001 | GetEnvironmentVariables() } -[552] a_to_h\GetExeMachine.ahk { +[562] a_to_h\GetExeMachine.ahk { Line | Function 0005 | GetExeMachine(exepath) } -[553] a_to_h\GetFFTab.ahk { +[563] a_to_h\GetFFTab.ahk { Line | Function 0015 | GetFFTab(TabName="") } -[554] a_to_h\GetFileAttributes.ahk { +[564] a_to_h\GetFileAttributes.ahk { Line | Function } -[555] a_to_h\GetFileEncoding (2).ahk { +[565] a_to_h\GetFileEncoding (2).ahk { Line | Function 0017 | GetFileEncoding(FileName) } -[556] a_to_h\GetFileEncoding.ahk { +[566] a_to_h\GetFileEncoding.ahk { Line | Function 0007 | GetFileEncoding(File) } -[557] a_to_h\GetFileFolderSize.ahk { +[567] a_to_h\GetFileFolderSize.ahk { Line | Function 0018 | GetFileFolderSize(fPath) } -[558] a_to_h\GetFileOwner.ahk { +[568] a_to_h\GetFileOwner.ahk { Line | Function } -[559] { +[569] { Line | Function 0004 | FileGetVersionInfo(peFile="", StringFileInfo="") 0043 | GetLocaleInfo(LCID=0x800, type=0x1) } -[560] a_to_h\GetFileVersionInfo.ahk { +[570] a_to_h\GetFileVersionInfo.ahk { Line | Function 0014 | GetFileVersionInfo(FileName) } -[561] a_to_h\GetFocusedHwnd.ahk { +[571] a_to_h\GetFocusedHwnd.ahk { Line | Function 0001 | getFocusedHwnd() } -[562] a_to_h\GetFreeDriveSpace.ahk { +[572] a_to_h\GetFreeDriveSpace.ahk { Line | Function 0016 | GetFreeDriveSpace(fPath) } -[563] a_to_h\GetFullSysVer.ahk { +[573] a_to_h\GetFullSysVer.ahk { Line | Function 0003 | GetFullSysVer(ByRef osfn, ByRef cos, ByRef kver) } -[564] a_to_h\GetHeaderDate.ahk { +[574] a_to_h\GetHeaderDate.ahk { Line | Function 0020 | GetHeaderDate(url) @@ -7960,61 +7994,61 @@ Line | Function 0097 | DateParse(str, americanOrder=0) } -[565] a_to_h\GetHotkeyList.ahk { +[575] a_to_h\GetHotkeyList.ahk { Line | Function 0001 | GetHotkeyList(fnShowFullModifierKeys) } -[566] a_to_h\GetIEWindowInfo.ahk { +[576] a_to_h\GetIEWindowInfo.ahk { Line | Function } -[567] a_to_h\GetImageSize (2).ahk { +[577] a_to_h\GetImageSize (2).ahk { Line | Function 1168 | IMG_SystemMessage(p_MessageNbr) } -[568] a_to_h\getImageSize.ahk { +[578] a_to_h\getImageSize.ahk { Line | Function 0001 | getImageSize(imagePath) } -[569] a_to_h\getInstalledPrograms.ahk { +[579] a_to_h\getInstalledPrograms.ahk { Line | Function 0001 | getInstalledPrograms() } -[570] a_to_h\GetJScriptObject.ahk { +[580] a_to_h\GetJScriptObject.ahk { Line | Function 0011 | GetJScripObject() 0028 | CreateScriptObj() } -[571] a_to_h\getKey.ahk { +[581] a_to_h\getKey.ahk { Line | Function 0001 | getKey(aCol) } -[572] a_to_h\getKeyFromValue.ahk { +[582] a_to_h\getKeyFromValue.ahk { Line | Function 0001 | getKey(aCol) } -[573] a_to_h\GetKnownFolderPath.ahk { +[583] a_to_h\GetKnownFolderPath.ahk { Line | Function 0028 | GetKnownFolderPath(GUID) } -[574] a_to_h\GetListViewItems.ahk { +[584] a_to_h\GetListViewItems.ahk { Line | Function 0001 | GetListViewItemText(item_index, sub_index, ctrl_id, win_id) @@ -8023,7 +8057,7 @@ Line | Function 0127 | InsertIntegerSL(pInteger, ByRef pDest, pOffset = 0, pSize = 4) } -[575] a_to_h\GetListViewText.ahk { +[585] a_to_h\GetListViewText.ahk { Line | Function 0001 | GetListViewItemText(item_index, sub_index, ctrl_id, win_id) @@ -8032,357 +8066,365 @@ Line | Function 0128 | InsertIntegerSL(pInteger, ByRef pDest, pOffset = 0, pSize = 4) } -[576] a_to_h\GetLogText.ahk { +[586] a_to_h\GetLogText.ahk { Line | Function } -[577] a_to_h\GetMacAddress.ahk { +[587] a_to_h\GetMacAddress.ahk { Line | Function } -[578] a_to_h\GetMachineType.ahk { +[588] a_to_h\GetMachineType.ahk { Line | Function 0044 | GetMachineType(ApplicationName) } -[579] a_to_h\GetModuleBaseAddr.ahk { +[589] a_to_h\GetModuleBaseAddr.ahk { Line | Function 0005 | GetModuleBaseAddr(ModuleName, ProcessID) } -[580] a_to_h\GetMonthNum.ahk { +[590] a_to_h\GetMonthNum.ahk { Line | Function 0001 | GetMonthNum(fnText) } -[581] a_to_h\GetMostRecentTime.ahk { +[591] a_to_h\GetMostRecentTime.ahk { Line | Function 0001 | GetMostRecentTime(fnFirstTime,fnSecondTime) } -[582] a_to_h\GetNetSpeed.ahk { +[592] a_to_h\GetNetSpeed.ahk { Line | Function 0001 | GetNetSpeed() } -[583] a_to_h\GetNumberFormat.ahk { +[593] a_to_h\GetNumberFormat.ahk { Line | Function } -[584] a_to_h\GetNumberFormatEx.ahk { +[594] a_to_h\GetNumberFormatEx.ahk { Line | Function } -[585] a_to_h\GetObject.ahk { +[595] a_to_h\GetObject.ahk { Line | Function } -[586] a_to_h\GetObjectType.ahk { +[596] a_to_h\GetObjectType.ahk { Line | Function 0004 | GetObjectType(hObject) } -[587] a_to_h\GetOSVersion.ahk { +[597] a_to_h\GetOSVersion.ahk { Line | Function 0039 | GetOSVersion(ByRef sOSName, ByRef bIs64 = 0, ByRef iServicePack = 0, ByRef bIsNT = 0, ByRef iBuildNumber = 0) } -[588] a_to_h\GetParentDir.ahk { +[598] a_to_h\GetParentDir.ahk { Line | Function 0001 | GetParentDir(path,parent=1) } -[589] a_to_h\GetPathFromHandle.ahk { +[599] a_to_h\GetPathFromHandle.ahk { Line | Function 0011 | GetPathFromHandle(hFile) } -[590] a_to_h\getPosFromAngle.ahk { +[600] a_to_h\getPosFromAngle.ahk { Line | Function 0001 | getPosFromAngle(ByRef x2,ByRef y2,x1,y1,len,ang) } -[591] { +[601] { Line | Function 0005 | getProcessBaseAddress(WindowTitle, MatchMode=3) } -[592] a_to_h\getProcessBassAddressFromModules.ahk { +[602] a_to_h\getProcessBassAddressFromModules.ahk { Line | Function 0010 | getProcessBassAddressFromModules(process) } -[593] a_to_h\GetProcessCommandLine.ahk { +[603] a_to_h\GetProcessCommandLine.ahk { Line | Function 0012 | GetProcessCommandLine(hProcess) 0073 | RTL_USER_PROCESS_PARAMETERS_From_PEB(hProcess, pPEB) } -[594] { +[604] { Line | Function } -[595] a_to_h\getProcessFileVersion.ahk { +[605] a_to_h\getProcessFileVersion.ahk { Line | Function 0001 | getProcessFileVersion(process) } -[596] a_to_h\GetProcessMemoryInfo.ahk { +[606] a_to_h\GetProcessMemoryInfo.ahk { Line | Function 0025 | GetProcessMemoryInfo(hProcess) } -[597] a_to_h\GetProcessModules.ahk { +[607] a_to_h\GetProcessModules.ahk { Line | Function 0005 | GetProcessModules(ProcessID) } -[598] a_to_h\GetProcessPath.ahk { +[608] a_to_h\GetProcessPath.ahk { Line | Function 0012 | GetProcessPath(hProcess) } -[599] a_to_h\GetProcessPebAddr.ahk { +[609] a_to_h\GetProcessPebAddr.ahk { Line | Function 0008 | GetProcessPebAddr(hProcess) } -[600] a_to_h\GetProcessPriority.ahk { +[610] a_to_h\GetProcessPriority.ahk { Line | Function } -[601] a_to_h\GetProcessThreads.ahk { +[611] a_to_h\GetProcessThreads.ahk { Line | Function 0005 | GetProcessThreads(ProcessID) } -[602] a_to_h\GetProcessWorkingDir.ahk { +[612] a_to_h\GetProcessWorkingDir.ahk { Line | Function 0005 | GetProcessWorkingDir(PID) } -[603] a_to_h\GetProcessWorkingSetSize.ahk { +[613] a_to_h\GetProcessWorkingSetSize.ahk { Line | Function 0014 | GetProcessWorkingSetSize(hProcess) } -[604] { +[614] { Line | Function } -[605] a_to_h\getScreenAspectRatio.ahk { +[615] a_to_h\getScreenAspectRatio.ahk { Line | Function 0001 | getScreenAspectRatio() } -[606] a_to_h\getScriptHandle.ahk { +[616] a_to_h\getScriptHandle.ahk { Line | Function 0001 | getScriptHandle() } -[607] a_to_h\getSelected.ahk { +[617] a_to_h\getSelected.ahk { Line | Function 0001 | getSelected() 0006 | if(errorlevel) } -[608] a_to_h\GetServerName.ahk { +[618] a_to_h\GetServerName.ahk { Line | Function 0001 | GetServerName(fnServerNameLabel) } -[609] a_to_h\GetStockObject.ahk { +[619] a_to_h\GetStockObject.ahk { Line | Function 0006 | GetStockObject(StockObjectType) } -[610] a_to_h\GetSystemDateFormat.ahk { +[620] a_to_h\GetSystemDateFormat.ahk { Line | Function 0002 | GetSystemDateFormat() } -[611] a_to_h\GetSystemErrorText.ahk { +[621] a_to_h\GetSystemErrorText.ahk { Line | Function 0001 | GetSystemErrorText(fnErrorCode) } -[612] a_to_h\getSystemLanguage.ahk { +[622] a_to_h\getSystemLanguage.ahk { Line | Function 0003 | getSystemLanguage() } -[613] a_to_h\GetSystemVersion.ahk { +[623] a_to_h\GetSystemVersion.ahk { Line | Function 0018 | GetSystemVersion() } -[614] a_to_h\GetTaskInfos.ahk { +[624] a_to_h\GetTaskInfos.ahk { Line | Function 0007 | GetTaskInfos() } -[615] a_to_h\GetTcpTable.ahk { +[625] a_to_h\GetTcpTable.ahk { Line | Function 0005 | GetTcpTable() } -[616] a_to_h\GetTempFile.ahk { +[626] a_to_h\GetTempFile.ahk { Line | Function } -[617] a_to_h\GetTextExtentPoint.ahk { +[627] a_to_h\GetTextExtentPoint.ahk { Line | Function 0024 | GetTextExtentPoint(sString, sFaceName, nHeight = 9, bBold = False, bItalic = False, bUnderline = False, bStrikeOut = False, nCharSet = 0) } -[618] a_to_h\GetThreadStartAddr.ahk { +[628] a_to_h\GetThreadStartAddr.ahk { Line | Function 0005 | GetThreadStartAddr(ProcessID) } -[619] a_to_h\GetTimeDifference.ahk { +[629] a_to_h\GetTimeDifference.ahk { Line | Function } -[620] a_to_h\GetTuples.ahk { +[630] a_to_h\GetTuples.ahk { Line | Function } -[621] a_to_h\GetUdpTable.ahk { +[631] a_to_h\GetUdpTable.ahk { Line | Function 0005 | GetUdpTable() } -[622] a_to_h\getUTCOffset.ahk { +[632] a_to_h\getUTCOffset.ahk { Line | Function 0002 | getUTCOffset(timezone) } -[623] a_to_h\GetVolumePathNames.ahk { +[633] a_to_h\GetVolumePathNames.ahk { Line | Function 0018 | GetVolumePathNames(VolumeName) } -[624] a_to_h\GetWanIp.ahk { +[634] a_to_h\GetWanIp.ahk { Line | Function 0001 | GetWanIp(pDnsIp) } -[625] a_to_h\GetWeekDay_TwoLang.ahk { +[635] a_to_h\GetWeekDay_TwoLang.ahk { Line | Function } -[626] a_to_h\getWinClientSize.ahk { +[636] a_to_h\getWinClientSize.ahk { Line | Function 0001 | getWinClientSize(hwnd) } -[627] a_to_h\GetWindowClassStyle.ahk { +[637] a_to_h\GetWindowClassStyle.ahk { Line | Function 0002 | GetWindowClassStyle(hWnd) } -[628] a_to_h\GetWindowInfo.ahk { +[638] a_to_h\GetWindowInfo.ahk { Line | Function 0018 | GetWindowInfo(HWND) } -[629] a_to_h\GetWindowParent.ahk { +[639] a_to_h\GetWindowParent.ahk { Line | Function 0009 | GetWindowParent(hWnd) } -[630] a_to_h\GetWindowPos.ahk { +[640] a_to_h\GetWindowPos.ahk { Line | Function 0013 | GetWindowPos(hWnd) } -[631] a_to_h\GetWindowProcessPath.ahk { +[641] a_to_h\GetWindowProcessPath.ahk { Line | Function 0011 | GetWindowProcessPath(hWnd) } -[632] a_to_h\GetWindowThreadProcessId.ahk { +[642] a_to_h\GetWindowThreadProcessId.ahk { Line | Function 0013 | GetWindowThreadProcessId(hWnd) } -[633] a_to_h\GetWindowTitle.ahk { +[643] a_to_h\GetWindowTitle.ahk { Line | Function 0010 | GetWindowTitle(hWnd) } -[634] a_to_h\GetWindowtOwner.ahk { +[644] a_to_h\GetWindowtOwner.ahk { Line | Function 0009 | GetWindowtOwner(hWnd) } -[635] a_to_h\GetWindowTransparency.ahk { +[645] a_to_h\GetWindowTransparency.ahk { Line | Function 0010 | GetWindowTransparency(hWnd) } -[636] a_to_h\Get_Explorer_Paths.ahk { +[646] a_to_h\GET_Devices.ahk { + +Line | Function +0040 | GetDevices_from_SetupAPI() +0182 | GetDevices_from_driveLetters() +0238 | notify_change() + +} +[647] a_to_h\Get_Explorer_Paths.ahk { Line | Function 0025 | Explorer_GetPath(hwnd="") @@ -8392,13 +8434,13 @@ Line | Function 0069 | Explorer_Get(hwnd="",selection=false) } -[637] a_to_h\get_variance.ahk { +[648] a_to_h\get_variance.ahk { Line | Function 0003 | get_variance(bcolor, fcolor) } -[638] a_to_h\GIThubReleasesAPI.ahk { +[649] a_to_h\GIThubReleasesAPI.ahk { Line | Function 0007 | GetLatestPreRelease_Version(user, repo) @@ -8407,7 +8449,7 @@ Line | Function 0055 | GetLatestPreRelease_Infos(user, repo) } -[639] a_to_h\GitHub_UpdateCheck.ahk { +[650] a_to_h\GitHub_UpdateCheck.ahk { Line | Function 0001 | UpdateCheck(force=false, prompt=false, preRelease=false) @@ -8415,7 +8457,7 @@ Line | Function 0064 | Run_Updater(downloadLink) } -[640] a_to_h\gl.ahk { +[651] a_to_h\gl.ahk { Line | Function 0916 | glClearIndex(c) @@ -8841,7 +8883,7 @@ Line | Function 2194 | glSamplePass(pass) } -[641] a_to_h\glext.ahk { +[652] a_to_h\glext.ahk { Line | Function 5509 | glDebugProcARB(source, type, id, severity, length, message, userParam) @@ -10767,7 +10809,7 @@ Line | Function 8027 | glVDPAUUnmapSurfacesNV(numSurface, surfaces) } -[642] a_to_h\glLite.ahk { +[653] a_to_h\glLite.ahk { Line | Function 0001 | glShadeModel(mode="smooth") @@ -10792,19 +10834,19 @@ Line | Function 0148 | glLineWidth(width) } -[643] a_to_h\GlobalStruct.ahk { +[654] a_to_h\GlobalStruct.ahk { Line | Function 0001 | GlobalStruct() } -[644] a_to_h\GlobalVarsScript.ahk { +[655] a_to_h\GlobalVarsScript.ahk { Line | Function 0001 | GlobalVarsScript(var="",size=102400,ByRef object=0) } -[645] a_to_h\glScreensaver.ahk { +[656] a_to_h\glScreensaver.ahk { Line | Function 0107 | ScreensaverMain(argv) @@ -10822,7 +10864,7 @@ Line | Function 0492 | ScreensaverTiming() } -[646] a_to_h\glu.ahk { +[657] a_to_h\glu.ahk { Line | Function 0039 | gluErrorStringWIN(errCode) @@ -10877,7 +10919,7 @@ Line | Function 0345 | gluNurbsCallback(nobj, which, fn) } -[647] a_to_h\glVideo.ahk { +[658] a_to_h\glVideo.ahk { Line | Function 0001 | glLoadVideo(texid, filename) @@ -10893,13 +10935,13 @@ Line | Function 0335 | _glVideo(texid, set=0, del=0) } -[648] a_to_h\googl.ahk { +[659] a_to_h\googl.ahk { Line | Function 0001 | googl(url) } -[649] a_to_h\GoogleEarth.ahk { +[660] a_to_h\GoogleEarth.ahk { Line | Function 0048 | Deg2Dec(DegCoord, mode = "both") @@ -10923,7 +10965,7 @@ Line | Function 0528 | findFile(filetofind) } -[650] a_to_h\GoogleEarthCOM.ahk { +[661] a_to_h\GoogleEarthCOM.ahk { Line | Function 0119 | GetGEpos(byref FocusPointLatitude, byref FocusPointLongitude, byref FocusPointAltitude, byref FocusPointAltitudeMode, byref Range, byref Tilt, byref Azimuth) @@ -10935,14 +10977,14 @@ Line | Function 0194 | GEfeature(layer,display) } -[651] a_to_h\GoogleTranslate_perJS.ahk { +[662] a_to_h\GoogleTranslate_perJS.ahk { Line | Function 0173 | SendRequest(JS, str, tl, sl, proxy) 0238 | GetJScripObject() } -[652] a_to_h\gpBinEncode.ahk { +[663] a_to_h\gpBinEncode.ahk { Line | Function 0093 | gpStoreBinString(ByRef var, binString) @@ -10952,7 +10994,7 @@ Line | Function 0155 | Bin(x) } -[653] a_to_h\GPF.ahk { +[664] a_to_h\GPF.ahk { Line | Function 0017 | GPF_SetSingleLine(ObjNum,PosX,PosY,Text,ARGB,UseBlackBG,FontSize,UseBold,FontFamily) @@ -10968,7 +11010,7 @@ Line | Function 0138 | GPF_AuxGetFilledStr(str,multiline) } -[654] { +[665] { Line | Function 0017 | GPF_SetSingleLine(ObjNum,PosX,PosY,Text,ARGB,UseBlackBG,FontSize,UseBold,FontFamily) @@ -10984,18 +11026,18 @@ Line | Function 0138 | GPF_AuxGetFilledStr(str,multiline) } -[655] a_to_h\grep.ahk { +[666] a_to_h\grep.ahk { Line | Function } -[656] a_to_h\GroupBox.ahk { +[667] a_to_h\GroupBox.ahk { Line | Function 0037 | GroupBox(GBvName ,Title ,Piped_CtrlvNames,Margin=10 ,TitleHeight=10 ,FixedWidth="" ,FixedHeight="") } -[657] a_to_h\GTranslate.ahk { +[668] a_to_h\GTranslate.ahk { Line | Function 0010 | __New() @@ -11003,14 +11045,14 @@ Line | Function 0037 | getLangCode(Lang="") } -[658] a_to_h\GuiAddColorPalette.ahk { +[669] a_to_h\GuiAddColorPalette.ahk { Line | Function 0014 | GuiAddColorPalette(Gui, X, Y) 0026 | __New(Gui, X, Y) } -[659] a_to_h\GuiAddF.ahk { +[670] a_to_h\GuiAddF.ahk { Line | Function 0039 | AddControl(oText = "", oEdit = "", oFSel = "") @@ -11022,35 +11064,35 @@ Line | Function 0123 | KillFocus(HCTRL) } -[660] a_to_h\guiAddonInfo.ahk { +[671] a_to_h\guiAddonInfo.ahk { Line | Function 0023 | guiAddonInfo(SourceFile="") } -[661] a_to_h\GuiButtonIcon.ahk { +[672] a_to_h\GuiButtonIcon.ahk { Line | Function } -[662] a_to_h\guiCompile.ahk { +[673] a_to_h\guiCompile.ahk { Line | Function 0014 | guiCompile(SourceScriptFile="") } -[663] a_to_h\GuiControl.ahk { +[674] a_to_h\GuiControl.ahk { Line | Function } -[664] a_to_h\GuiControlAddBox.ahk { +[675] a_to_h\GuiControlAddBox.ahk { Line | Function 0075 | GuiControlRemoveBox(HBOX) } -[665] a_to_h\GuiControlTips.ahk { +[676] a_to_h\GuiControlTips.ahk { Line | Function 0062 | __Delete() @@ -11059,18 +11101,18 @@ Line | Function 0206 | GetDelayTimes() } -[666] a_to_h\guiCreate.ahk { +[677] a_to_h\guiCreate.ahk { Line | Function } -[667] a_to_h\GuiCtl.ahk { +[678] a_to_h\GuiCtl.ahk { Line | Function 0074 | SetFocus() } -[668] a_to_h\GUID.ahk { +[679] a_to_h\GUID.ahk { Line | Function 0001 | GUID_ToString(guid) @@ -11079,13 +11121,13 @@ Line | Function 0019 | GUID_Create(byRef guid) } -[669] a_to_h\guids.ahk { +[680] a_to_h\guids.ahk { Line | Function 0021 | GUID() } -[670] a_to_h\GUID_and_UUID.ahk { +[681] a_to_h\GUID_and_UUID.ahk { Line | Function 0074 | CreateGUID() @@ -11095,7 +11137,7 @@ Line | Function 0106 | UuidEqual(uuid1, uuid2) } -[671] a_to_h\guiExplorer.ahk { +[682] a_to_h\guiExplorer.ahk { Line | Function 0016 | guiExplorer(exploreDir) @@ -11104,14 +11146,14 @@ Line | Function 0343 | getIcon(FilePath, ByRef ImageList) } -[672] a_to_h\GUIHider.ahk { +[683] a_to_h\GUIHider.ahk { Line | Function 0021 | GUI_AutoHide(Hide_Direction, Gui_Num_To_Hide_Clone=1, Delay_Before_Hide=3000, Number_Of_Offset_Pixels=5, Enabled_Disabled_Flag=1) 0171 | WM_MOUSEMOVE(wParam,lParam) } -[673] a_to_h\GuiLayout.ahk { +[684] a_to_h\GuiLayout.ahk { Line | Function 0036 | if(ParentComponent) @@ -11124,18 +11166,18 @@ Line | Function 0211 | if(Component.ControlHwnd) } -[674] a_to_h\guiOffscreenCheck.ahk { +[685] a_to_h\guiOffscreenCheck.ahk { Line | Function 0001 | guiOffScreenCheck(hwnd) } -[675] a_to_h\GuiSettings.ahk { +[686] a_to_h\GuiSettings.ahk { Line | Function } -[676] a_to_h\GuiTabEx.ahk { +[687] a_to_h\GuiTabEx.ahk { Line | Function 0017 | __New(HWND) @@ -11157,7 +11199,7 @@ Line | Function 0280 | SetText(Item, ItemText) } -[677] a_to_h\GUIUniqueDefault().ahk { +[688] a_to_h\GUIUniqueDefault().ahk { Line | Function 0003 | GUIUniqueDestroy(key = "") @@ -11166,7 +11208,7 @@ Line | Function 0113 | MeasureText(text, ByRef Width, ByRef Height, fontName = "", fontOptions = "") } -[678] a_to_h\GuiVar.ahk { +[689] a_to_h\GuiVar.ahk { Line | Function 0031 | GuiVar_Set(Var,Value) @@ -11174,7 +11216,7 @@ Line | Function 0081 | GuiVar_List(ByRef Array) } -[679] a_to_h\GuiWnd.ahk { +[690] a_to_h\GuiWnd.ahk { Line | Function 0014 | __Delete() @@ -11190,19 +11232,19 @@ Line | Function 0224 | GWnd_OnEscape(h) } -[680] a_to_h\Hash.ahk { +[691] a_to_h\Hash.ahk { Line | Function 0001 | Hash(pData, nSize, SID = "CRC32", nInitial = 0) } -[681] a_to_h\HashFile.ahk { +[692] a_to_h\HashFile.ahk { Line | Function 0024 | HashFile(filePath,hashType=2) } -[682] a_to_h\Help.ahk { +[693] a_to_h\Help.ahk { Line | Function 0087 | setHTMLData(help_file) @@ -11214,7 +11256,7 @@ Line | Function 0747 | RunAsAdmin() } -[683] a_to_h\HelperFunctions.ahk { +[694] a_to_h\HelperFunctions.ahk { Line | Function 0008 | HotKeyFormat(input) @@ -11224,19 +11266,19 @@ Line | Function 0133 | MsgBox(Text,Title="",Options=0,Timeout=0) } -[684] a_to_h\Hex2Bin.ahk { +[695] a_to_h\Hex2Bin.ahk { Line | Function 0024 | Hex_Bin(ByRef bin, hex) } -[685] a_to_h\HexToBin.ahk { +[696] a_to_h\HexToBin.ahk { Line | Function 0001 | HexToBin(ByRef bin,hex) } -[686] a_to_h\HexView.ahk { +[697] a_to_h\HexView.ahk { Line | Function 0045 | HexView( pAdr, pByteNo="", pActiveTab="") @@ -11265,30 +11307,30 @@ Line | Function 0930 | HexView_About() } -[687] a_to_h\HIBYTE.ahk { +[698] a_to_h\HIBYTE.ahk { Line | Function 0001 | HIBYTE(a) } -[688] a_to_h\HideFocusBorder.ahk { +[699] a_to_h\HideFocusBorder.ahk { Line | Function } -[689] a_to_h\HideInfotipOnMouseOver.ahk { +[700] a_to_h\HideInfotipOnMouseOver.ahk { Line | Function 0001 | HideInfotipOnMouseOver(fnInfotipText,ByRef fnInfotipID) } -[690] a_to_h\hideTaskbar.ahk { +[701] a_to_h\hideTaskbar.ahk { Line | Function 0001 | hideTaskbar(toggle) } -[691] a_to_h\HiEdit.ahk { +[702] a_to_h\HiEdit.ahk { Line | Function 0023 | HE_Add(HParent, X, Y, W, H, Style="", DllPath="") @@ -11351,52 +11393,52 @@ Line | Function 1145 | HiEdit_add2Form(hParent, Txt, Opt) } -[692] a_to_h\HimetricToPixel.ahk { +[703] a_to_h\HimetricToPixel.ahk { Line | Function 0001 | HimetricToPixel(Pixel) } -[693] a_to_h\HIWORD.ahk { +[704] a_to_h\HIWORD.ahk { Line | Function 0001 | HIWORD(a) } -[694] a_to_h\hkswap.ahk { +[705] a_to_h\hkswap.ahk { Line | Function 0027 | hkSwap(byref key, type = 0) } -[695] a_to_h\HL7.ahk { +[706] a_to_h\HL7.ahk { Line | Function 0017 | parse(p_HL7_Text) 0238 | Clean_HL7(p_HL7_Text, p_Array_Of_Delimiter_Needles, p_Escaped_Escape_Character) } -[696] a_to_h\HLink.ahk { +[707] a_to_h\HLink.ahk { Line | Function 0064 | HLink_onNotify(Wparam, Lparam, Msg, Hwnd) 0102 | HLink_add2Form(hParent, Txt, Opt) } -[697] a_to_h\Hook.ahk { +[708] a_to_h\Hook.ahk { Line | Function 0009 | hook(hWndTarget) 0030 | unhook(hWndTarget) } -[698] a_to_h\hotcorners.ahk { +[709] a_to_h\hotcorners.ahk { Line | Function 0001 | hotcorners() } -[699] a_to_h\HotkeyControl.ahk { +[710] a_to_h\HotkeyControl.ahk { Line | Function 0001 | HotkeyControl(QuotedVarName, GuiNameOrHwnd, ControlOptions="w180 h20", InitialText="", InitialTextColor="Gray") @@ -11404,20 +11446,20 @@ Line | Function 0212 | HotkeyControl_UpdateVar(VarName, Value) } -[700] a_to_h\HotkeyGUI.ahk { +[711] a_to_h\HotkeyGUI.ahk { Line | Function 0174 | HotkeyGUI(p_GUI="",p_ParentGUI="",p_Title="",p_Limit="",p_LimitMsg="",p_OptionalAttrib="",p_filter="",p_exclude="") } -[701] a_to_h\Hotkey_Functions.ahk { +[712] a_to_h\Hotkey_Functions.ahk { Line | Function 0003 | Hotkey_Init(Func, Options = "") 0012 | Hotkey_Main(In) } -[702] a_to_h\Hotkey_IfControlActive.ahk { +[713] a_to_h\Hotkey_IfControlActive.ahk { Line | Function 0032 | Hotkey_IfControlActive(ControlDesc, KeyName, VariantType="IfWinActive", VariantTitle="", VariantText="") @@ -11429,12 +11471,12 @@ Line | Function 0184 | Hotkey_IfControlActive_GetFocus() } -[703] a_to_h\Hotstring.ahk { +[714] a_to_h\Hotstring.ahk { Line | Function } -[704] a_to_h\Hotstrings (2).ahk { +[715] a_to_h\Hotstrings (2).ahk { Line | Function 0021 | hotstrings(k, a = "", bsCnt = "", chMode = "e") @@ -11447,13 +11489,13 @@ Line | Function 0213 | isKoreanState() } -[705] a_to_h\Hotstrings.ahk { +[716] a_to_h\Hotstrings.ahk { Line | Function 0019 | hotstrings(k, a = "") } -[706] a_to_h\HoverScroll.ahk { +[717] a_to_h\HoverScroll.ahk { Line | Function 0098 | HoverScroll(Lines=1, Axis=1, Ctrl=0, Shift=0) @@ -11462,7 +11504,7 @@ Line | Function 0350 | ScrollLines_3(MinLines=1, MaxLines=5, Threshold=50, Curve=0) } -[707] a_to_h\HPDF.ahk { +[718] a_to_h\HPDF.ahk { Line | Function 0004 | HPDF_LinkAnnot_SetHighlightMode(ByRef annot,mode) @@ -11643,26 +11685,26 @@ Line | Function 1104 | HPDF_GetPoint(ByRef point, ByRef x, ByRef y) } -[708] a_to_h\HtmDlg.ahk { +[719] a_to_h\HtmDlg.ahk { Line | Function 0014 | HtmDlg( _URL="", _Owner=0, _Options="", _ODL="," ) } -[709] a_to_h\HTMLmodule.ahk { +[720] a_to_h\HTMLmodule.ahk { Line | Function 0060 | GrabWidget() 0101 | IE_GetWindow(hWnd) } -[710] a_to_h\hToMs.ahk { +[721] a_to_h\hToMs.ahk { Line | Function 0001 | hToMs(h) } -[711] { +[722] { Line | Function 0019 | url(url) @@ -11744,31 +11786,31 @@ Line | Function 0953 | query(tagname, options) } -[712] a_to_h\httpQuery.ahk { +[723] a_to_h\httpQuery.ahk { Line | Function 0004 | httpQuery(byref Result, lpszUrl, POSTDATA="", HEADERS="") } -[713] a_to_h\HttpQueryInfo.ahk { +[724] a_to_h\HttpQueryInfo.ahk { Line | Function 0027 | HttpQueryInfo(URL, QueryInfoFlag=21, Proxy="", ProxyBypass="") } -[714] a_to_h\HTTPRequest.ahk { +[725] a_to_h\HTTPRequest.ahk { Line | Function 0029 | HTTPRequest( URL, byref In_POST__Out_Data="", byref In_Out_HEADERS="", Options="" ) } -[715] a_to_h\HTTPRequest_2.ahk { +[726] a_to_h\HTTPRequest_2.ahk { Line | Function 0029 | HTTPRequest( URL, byref In_POST__Out_Data="", byref In_Out_HEADERS="", Options="" ) } -[716] a_to_h\huffmann.ahk { +[727] a_to_h\huffmann.ahk { Line | Function 0006 | aHC_Compress(ByRef Data, ByRef compressedData, Size = 0, aHC_InfoStyle = 1) @@ -11778,7 +11820,7 @@ Line | Function 0205 | d2b(i, s = 0, c = 0) } -[717] a_to_h\hwmonitor.ahk { +[728] a_to_h\hwmonitor.ahk { Line | Function 0002 | GetCPUClock() @@ -11791,37 +11833,30 @@ Line | Function 0050 | ListSensors(filter) } -[718] a_to_h\hwnd.ahk { +[729] a_to_h\hwnd.ahk { Line | Function 0001 | hwnd(win,hwnd="") } -[719] a_to_h\hwndHung.ahk { +[730] a_to_h\hwndHung.ahk { Line | Function 0001 | hwndHung(id) } -[720] a_to_h\hXfromHBITMAP.ahk { +[731] a_to_h\hXfromHBITMAP.ahk { Line | Function } -[721] a_to_h\hyde.ahk { +[732] a_to_h\hyde.ahk { Line | Function 0050 | exit() } -[722] a_to_h\internet.ahk { - -Line | Function -0028 | netStatus() -0102 | netNotifyShow(title,msg,col,h,t,s) - -} -[723] a_to_h\_.ahk { +[733] a_to_h\_.ahk { Line | Function 0049 | _(opt="") @@ -11830,7 +11865,7 @@ Line | Function 0388 | Fatal(Message, E=1, ExitCode="") } -[724] a_to_h\_filesystem.ahk { +[734] a_to_h\_filesystem.ahk { Line | Function 0001 | MountVirtualDisk(path = "") @@ -11845,17 +11880,17 @@ Line | Function 0172 | CreateShortCutsFolder(folder, icon, index=0) } -[725] a_to_h\_Forms.ahk { +[735] a_to_h\_Forms.ahk { Line | Function } -[726] a_to_h\_guiCreate.ahk { +[736] a_to_h\_guiCreate.ahk { Line | Function } -[727] a_to_h\_MemoryLibrary.ahk { +[737] a_to_h\_MemoryLibrary.ahk { Line | Function 0275 | __New(DataPTR) @@ -11867,12 +11902,12 @@ Line | Function 0462 | BuildImportTable() } -[728] core_audio_interfaces\header.ahk { +[738] core_audio_interfaces\header.ahk { Line | Function } -[729] core_audio_interfaces\IAudioEndpointVolume.ahk { +[739] core_audio_interfaces\IAudioEndpointVolume.ahk { Line | Function 0006 | __New(ptr) @@ -11890,7 +11925,7 @@ Line | Function 0168 | GetVolumeRange(ByRef LevelMinDB, ByRef LevelMaxDB, ByRef VolumeIncrementDB) } -[730] core_audio_interfaces\IAudioSessionControl.ahk { +[740] core_audio_interfaces\IAudioSessionControl.ahk { Line | Function 0006 | __New(ptr) @@ -11899,7 +11934,7 @@ Line | Function 0047 | GetDisplayName(ByRef DisplayName) } -[731] core_audio_interfaces\IAudioSessionControl2.ahk { +[741] core_audio_interfaces\IAudioSessionControl2.ahk { Line | Function 0006 | __New(ptr) @@ -11908,7 +11943,7 @@ Line | Function 0044 | GetProcessId(ByRef ProcessId) } -[732] core_audio_interfaces\IAudioSessionEnumerator.ahk { +[742] core_audio_interfaces\IAudioSessionEnumerator.ahk { Line | Function 0006 | __New(ptr) @@ -11917,7 +11952,7 @@ Line | Function 0038 | GetSession(SessionNumber, ByRef oIAudioSessionControl) } -[733] core_audio_interfaces\IAudioSessionManager2.ahk { +[743] core_audio_interfaces\IAudioSessionManager2.ahk { Line | Function 0006 | __New(ptr) @@ -11925,7 +11960,7 @@ Line | Function 0030 | GetSessionEnumerator(ByRef oIAudioSessionEnumerator) } -[734] core_audio_interfaces\IMMDevice.ahk { +[744] core_audio_interfaces\IMMDevice.ahk { Line | Function 0006 | __New(ptr) @@ -11936,7 +11971,7 @@ Line | Function 0102 | GetState(ByRef State) } -[735] core_audio_interfaces\IMMDeviceCollection.ahk { +[745] core_audio_interfaces\IMMDeviceCollection.ahk { Line | Function 0006 | __New(ptr) @@ -11945,7 +11980,7 @@ Line | Function 0043 | Item(Device, ByRef oIMMDevice) } -[736] core_audio_interfaces\IMMDeviceEnumerator.ahk { +[746] core_audio_interfaces\IMMDeviceEnumerator.ahk { Line | Function 0006 | __New() @@ -11958,7 +11993,7 @@ Line | Function 0101 | UnregisterEndpointNotificationCallback(oIMMNotificationClient) } -[737] core_audio_interfaces\IPropertyStore.ahk { +[747] core_audio_interfaces\IPropertyStore.ahk { Line | Function 0006 | __New(ptr) @@ -11971,7 +12006,7 @@ Line | Function 0113 | Commit() } -[738] core_audio_interfaces\ISimpleAudioVolume.ahk { +[748] core_audio_interfaces\ISimpleAudioVolume.ahk { Line | Function 0006 | __New(ptr) @@ -11980,7 +12015,7 @@ Line | Function 0054 | GetMute(ByRef Mute) } -[739] i_to_z\7zip.ahk { +[749] i_to_z\7zip.ahk { Line | Function 0043 | 7Zip_Init(sDllPath = "7-zip32.dll") @@ -12020,7 +12055,7 @@ Line | Function 0686 | 7Zip_DosDateTimeToStr( ByRef DosDate, ByRef DosTime) } -[740] i_to_z\HTML_Util.ahk { +[750] i_to_z\HTML_Util.ahk { Line | Function 0003 | Util_ReplaceHtmlEntities(string) @@ -12034,14 +12069,14 @@ Line | Function 0090 | Util_GetPars() } -[741] i_to_z\Icon.ahk { +[751] i_to_z\Icon.ahk { Line | Function 0053 | Icon_Load(sBinFile, sResName, nWidth) 0090 | Icon_Destroy(hIcon) } -[742] i_to_z\IconChanger.ahk { +[752] i_to_z\IconChanger.ahk { Line | Function 0004 | ReplaceAhkIcon(re, IcoFile, ExeFile) @@ -12049,7 +12084,7 @@ Line | Function 0093 | EnumIcons_Enum(hModule, type, name, lParam) } -[743] i_to_z\IconEx.ahk { +[753] i_to_z\IconEx.ahk { Line | Function 0050 | IconEx(StartFile="", Pos="", Settings="", GuiNum=69) @@ -12077,7 +12112,7 @@ Line | Function 0534 | IconEx_defaultGui() } -[744] i_to_z\Icon_speciale.ahk { +[754] i_to_z\Icon_speciale.ahk { Line | Function 0008 | DeleteIcon(hIcon) @@ -12089,12 +12124,12 @@ Line | Function 0121 | GetIconFileInfo(IconPath) } -[745] i_to_z\IDragSourceHelper.ahk { +[755] i_to_z\IDragSourceHelper.ahk { Line | Function } -[746] i_to_z\IDropSource.ahk { +[756] i_to_z\IDropSource.ahk { Line | Function 0014 | IDropSource_Create() @@ -12106,7 +12141,7 @@ Line | Function 0068 | IDropSource_GiveFeedback(IDropSource, dwEffect) } -[747] i_to_z\IE.ahk { +[757] i_to_z\IE.ahk { Line | Function 0027 | IE_FangWei(ASK, ASW, AddPD="") @@ -12132,7 +12167,7 @@ Line | Function 0350 | IE_tanchu2(daima, text="??", cishu=1) } -[748] i_to_z\IE7_Dom.ahk { +[758] i_to_z\IE7_Dom.ahk { Line | Function 0002 | IE7_Get(title,url="http") @@ -12147,7 +12182,7 @@ Line | Function 0216 | IE7_Set_DOM(parentWindow,ID1,val="innerHTML") } -[749] i_to_z\IEControl.ahk { +[759] i_to_z\IEControl.ahk { Line | Function 0001 | IEAdd(mgH, x, y, w, h, u) @@ -12188,14 +12223,14 @@ Line | Function 0286 | CGID_MSHTML(nCmd, nOpt = 0) } -[750] i_to_z\IEGet.ahk { +[760] i_to_z\IEGet.ahk { Line | Function 0004 | WBGet(WinTitle="ahk_class IEFrame", Svr#=1) 0018 | IEGet(name="",url="") } -[751] i_to_z\IEL.ahk { +[761] i_to_z\IEL.ahk { Line | Function 0013 | IEL_new(url="", option="") @@ -12207,7 +12242,7 @@ Line | Function 0121 | IEL_daili(daili="") } -[752] i_to_z\IELib.ahk { +[762] i_to_z\IELib.ahk { Line | Function 0010 | IEGet(Name="") @@ -12222,7 +12257,7 @@ Line | Function 0333 | ClickLast(ElementID, Browser, iframe) } -[753] i_to_z\IEnumFORMATETC.ahk { +[763] i_to_z\IEnumFORMATETC.ahk { Line | Function 0005 | IEnumFORMATETC_Next(pEnumObj, ByRef FORMATETC) @@ -12230,19 +12265,19 @@ Line | Function 0020 | IEnumFORMATETC_Skip(pEnumObj, ItemCount) } -[754] i_to_z\IEReady.ahk { +[764] i_to_z\IEReady.ahk { Line | Function 0038 | IEReady(hIESvr = 0) } -[755] i_to_z\ifContains.ahk { +[765] i_to_z\ifContains.ahk { Line | Function 0001 | ifContains(haystack,needle) } -[756] i_to_z\IfControlActive.ahk { +[766] i_to_z\IfControlActive.ahk { Line | Function 0030 | Hotkey_IfControlActive(ControlDesc, KeyName, VariantType="IfWinActive", VariantTitle="", VariantText="") @@ -12254,7 +12289,7 @@ Line | Function 0186 | Hotkey_IfControlActive_GetFocus() } -[757] i_to_z\IFileDialog.ahk { +[767] i_to_z\IFileDialog.ahk { Line | Function 0003 | IFileDialogEvents_new() @@ -12270,13 +12305,13 @@ Line | Function 0122 | IFileDialogEvents_OnOverwrite(this_, pfd, psi, pResponse) } -[758] i_to_z\ifIn.ahk { +[768] i_to_z\ifIn.ahk { Line | Function 0001 | ifIn(needle,haystack) } -[759] i_to_z\Ignore.ahk { +[769] i_to_z\Ignore.ahk { Line | Function 0003 | Ignore_GetPatterns(ignorefile) @@ -12284,7 +12319,7 @@ Line | Function 0075 | Ignore_DirTree(dir,patterns) } -[760] i_to_z\IL.ahk { +[770] i_to_z\IL.ahk { Line | Function 0001 | ImageList_Create(cx,cy,flags,cInitial,cGrow) @@ -12295,13 +12330,13 @@ Line | Function 0022 | LoadIcon(Filename, IconNumber, IconSize) } -[761] i_to_z\ILButton.ahk { +[771] i_to_z\ILButton.ahk { Line | Function 0037 | ILButton(HBtn, Images, Cx=16, Cy=16, Align="Left", Margin="1 1 1 1") } -[762] i_to_z\IL_EX.ahk { +[772] i_to_z\IL_EX.ahk { Line | Function 0021 | IL_EX_Copy(ILID, From, To) @@ -12314,12 +12349,12 @@ Line | Function 0182 | IL_EX_SetSize(ILID, W, H) } -[763] i_to_z\Image2Include.ahk { +[773] i_to_z\Image2Include.ahk { Line | Function } -[764] i_to_z\Image2Text.ahk { +[774] i_to_z\Image2Text.ahk { Line | Function 0001 | FindText(x,y,w,h,err1,err0,text) @@ -12337,20 +12372,36 @@ Line | Function 0496 | PicFind2(color, offsetX, offsetY , Scan0, Stride, sx, sy, sw, sh, ByRef ss, ByRef text, ByRef s1, ByRef s0, ByRef in, num, ByRef allpos) } -[765] i_to_z\imageSearchc.ahk { +[775] i_to_z\ImageList.ahk { + +Line | Function +0008 | ILC_Create(i, g="1", s="16x16", f="M24") +0023 | ILC_List(cx, file, idx="100", cd="1") +0043 | ILC_FitBmp(hPic, hIL, idx="1") +0056 | ILC_ImageResize(hIL, idx, sz="") +0078 | ResizeBmp(hBmp, w, h="") +0088 | GetBmp(idx, sz, ByRef file, res="", cd="1") +0102 | GetPixelColor(hBmp, px, py) +0115 | SetBmp(hDest, hBmp) +0120 | ILC_Count(hwnd) +0126 | ILC_Destroy(hwnd) +0133 | ILC_Add(hIL, icon, idx="1") + +} +[776] i_to_z\imageSearchc.ahk { Line | Function 0003 | imageSearchc(byRef out1,byRef out2,x1,y1,x2,y2,image,vari=0,trans="",direction=5,debug=0) 0013 | if(errorlev) } -[766] i_to_z\implode.ahk { +[777] i_to_z\implode.ahk { Line | Function 0001 | implode(array, sep = "") } -[767] i_to_z\ImportTypeLib.ahk { +[778] i_to_z\ImportTypeLib.ahk { Line | Function 0011 | ImportTypeLib(lib, version = "1.0") @@ -12420,28 +12471,28 @@ Line | Function 1844 | ITL_ArrayGetBounds(obj, byRef lBound = 0, byRef uBound = 0) } -[768] i_to_z\Include.ahk { +[779] i_to_z\Include.ahk { Line | Function } -[769] i_to_z\inc_mf_0_3.ahk { +[780] i_to_z\inc_mf_0_3.ahk { Line | Function } -[770] i_to_z\inc_mf_System_IO_0_3.ahk { +[781] i_to_z\inc_mf_System_IO_0_3.ahk { Line | Function } -[771] i_to_z\InfoGUI.ahk { +[782] i_to_z\InfoGUI.ahk { Line | Function 0208 | InfoGUI(p_Owner="",p_Text="",p_Title="",p_GUIOptions="",p_ObjectType="",p_ObjectOptions="",p_BGColor="",p_Font="",p_FontOptions="",p_Timeout="") } -[772] i_to_z\infogulchEncodings.ahk { +[783] i_to_z\infogulchEncodings.ahk { Line | Function 0009 | Dec_XML(str) @@ -12452,12 +12503,12 @@ Line | Function 0088 | Dec_Hex(x) } -[773] i_to_z\InfoTip.ahk { +[784] i_to_z\InfoTip.ahk { Line | Function } -[774] i_to_z\ini.ahk { +[785] i_to_z\ini.ahk { Line | Function 0315 | ini_getValue(ByRef _Content, _Section, _Key, _PreserveSpace = False) @@ -12482,26 +12533,26 @@ Line | Function 1680 | Ini_Delete(ByRef _Content, _Section, _Key = "") } -[775] i_to_z\IniFile.ahk { +[786] i_to_z\IniFile.ahk { Line | Function 0181 | __ini_trim__(f, start, end, len) } -[776] i_to_z\IniParser.ahk { +[787] i_to_z\IniParser.ahk { Line | Function 0011 | IniParser(sFile) } -[777] i_to_z\IniSettingsEditor.ahk { +[788] i_to_z\IniSettingsEditor.ahk { Line | Function 0001 | IniSettingsEditor(ProgName,IniFile,OwnedBy = 0,DisableGui = 0, HelpText = 0) 0405 | GuiIniSettingsEditorAnchor(ctrl, a, draw = false) } -[778] i_to_z\iniWrapper.ahk { +[789] i_to_z\iniWrapper.ahk { Line | Function 0024 | iniWrapper_loadAllSections(ByRef iniVar) @@ -12512,32 +12563,32 @@ Line | Function 0231 | iniWrapper_saveSection(ByRef iniVar, section) } -[779] i_to_z\InjectAhkDll.ahk { +[790] i_to_z\InjectAhkDll.ahk { Line | Function 0008 | InjectAhkDll(PID,dll="AutoHotkey.dll",script=0) } -[780] i_to_z\InjectDll (2).ahk { +[791] i_to_z\InjectDll (2).ahk { Line | Function 0008 | Inject_CleanUp(pMsg, pHandle, pLibrary) 0022 | Inject_Dll(pID, dllPath) } -[781] i_to_z\InjectDll.ahk { +[792] i_to_z\InjectDll.ahk { Line | Function 0001 | InjectDll(pid,dllpath) } -[782] i_to_z\InjectDllA.ahk { +[793] i_to_z\InjectDllA.ahk { Line | Function 0003 | InjectDllA(pid,dllpath) } -[783] i_to_z\InMemoryWindowCapture.ahk { +[794] i_to_z\InMemoryWindowCapture.ahk { Line | Function 0020 | Display_CreateWindowCapture(ByRef device, ByRef context, ByRef pixels, ByRef id = "") @@ -12561,54 +12612,54 @@ Line | Function 0370 | Display_ReadArea(x, y, w, h, color = 0x000000, variation = 32, ByRef id = "", maxwidth = 0, exclude = "") } -[784] i_to_z\InputBox.ahk { +[795] i_to_z\InputBox.ahk { Line | Function 0081 | InputBox_Close(Data, Error) } -[785] i_to_z\InputBoxEx.ahk { +[796] i_to_z\InputBoxEx.ahk { Line | Function } -[786] i_to_z\InsertionSort.ahk { +[797] i_to_z\InsertionSort.ahk { Line | Function 0010 | InsertionSort(ByRef array) } -[787] i_to_z\Install.ahk { +[798] i_to_z\Install.ahk { Line | Function 0021 | Install_ExitCode(e) } -[788] i_to_z\Instance.ahk { +[799] i_to_z\Instance.ahk { Line | Function 0021 | Instance(Label="", Params="", WM="0x1357") 0064 | Instance_(wParam, lParam) } -[789] i_to_z\internet.ahk { +[800] i_to_z\internet.ahk { Line | Function 0028 | netStatus() 0102 | netNotifyShow(title,msg,col,h,t,s) } -[790] i_to_z\InternetCheckConnection.ahk { +[801] i_to_z\InternetCheckConnection.ahk { Line | Function } -[791] i_to_z\internetConnected.ahk { +[802] i_to_z\internetConnected.ahk { Line | Function } -[792] i_to_z\InternetFileRead.ahk { +[803] i_to_z\InternetFileRead.ahk { Line | Function 0066 | InternetFileRead( ByRef V, URL="", RB=0, bSz=1024, DLP="DLP", F=0x84000000 ) @@ -12616,32 +12667,32 @@ Line | Function 0121 | VarZ_Save( byRef V, File="" ) } -[793] i_to_z\InternetGetRedirect 20110825.ahk { +[804] i_to_z\InternetGetRedirect 20110825.ahk { Line | Function 0001 | InternetGetRedirect( URL ) 0016 | GoogleGetRedirect( SearchFor, Site="" ) } -[794] i_to_z\InvBase64.ahk { +[805] i_to_z\InvBase64.ahk { Line | Function 0001 | InvBase64(B64val) } -[795] i_to_z\invertCaseChr.ahk { +[806] i_to_z\invertCaseChr.ahk { Line | Function 0001 | invertCaseChr(char) } -[796] i_to_z\invertCaseStr.ahk { +[807] i_to_z\invertCaseStr.ahk { Line | Function 0001 | invertCaseStr(str) } -[797] i_to_z\IPC.ahk { +[808] i_to_z\IPC.ahk { Line | Function 0031 | IPC_Send(Hwnd, Data="", Port=100, DataSize="") @@ -12649,19 +12700,19 @@ Line | Function 0076 | IPC_onCopyData(WParam, LParam) } -[798] i_to_z\IPToInt().ahk { +[809] i_to_z\IPToInt().ahk { Line | Function 0006 | IPToInt(ip, fmt) } -[799] i_to_z\Is.ahk { +[810] i_to_z\Is.ahk { Line | Function 0001 | Is(Value, Type) } -[800] i_to_z\is2.ahk { +[811] i_to_z\is2.ahk { Line | Function 0003 | OffscreenSnap(wid) @@ -12688,107 +12739,107 @@ Line | Function 0236 | GetLastError() } -[801] i_to_z\is64bitExe.ahk { +[812] i_to_z\is64bitExe.ahk { Line | Function 0001 | is64bitExe(path) } -[802] i_to_z\isAlpha.ahk { +[813] i_to_z\isAlpha.ahk { Line | Function 0001 | isAlpha(in) } -[803] i_to_z\isAlphaNum.ahk { +[814] i_to_z\isAlphaNum.ahk { Line | Function 0001 | isAlphaNum(in) } -[804] i_to_z\isBetween.ahk { +[815] i_to_z\isBetween.ahk { Line | Function 0001 | isBetween(lower,check,upper) } -[805] i_to_z\IsBom.ahk { +[816] i_to_z\IsBom.ahk { Line | Function } -[806] i_to_z\isDigit.ahk { +[817] i_to_z\isDigit.ahk { Line | Function 0001 | isDigit(in) } -[807] i_to_z\IsDirectory.ahk { +[818] i_to_z\IsDirectory.ahk { Line | Function 0010 | IsDirectory(DirName) } -[808] i_to_z\IsEmpty.ahk { +[819] i_to_z\IsEmpty.ahk { Line | Function 0028 | IsEmpty(var) } -[809] i_to_z\IsFileInUse.ahk { +[820] i_to_z\IsFileInUse.ahk { Line | Function } -[810] i_to_z\IsFilePathTooLong.ahk { +[821] i_to_z\IsFilePathTooLong.ahk { Line | Function } -[811] i_to_z\isFloat.ahk { +[822] i_to_z\isFloat.ahk { Line | Function 0001 | isFloat(in) } -[812] i_to_z\IsFullScreen.ahk { +[823] i_to_z\IsFullScreen.ahk { Line | Function 0015 | IsFullscreen(sWinTitle = "A", bRefreshRes = False) } -[813] i_to_z\IsFuncObj.ahk { +[824] i_to_z\IsFuncObj.ahk { Line | Function 0003 | IsFuncObj(Value) } -[814] i_to_z\isHex.ahk { +[825] i_to_z\isHex.ahk { Line | Function 0001 | isHex(in) } -[815] i_to_z\isInt.ahk { +[826] i_to_z\isInt.ahk { Line | Function 0001 | isInt(in) } -[816] i_to_z\isLikeHotkey.ahk { +[827] i_to_z\isLikeHotkey.ahk { Line | Function 0046 | isLikeHotkey(str) 0080 | assert(condition, fn, arg) } -[817] i_to_z\isLower.ahk { +[828] i_to_z\isLower.ahk { Line | Function 0001 | isLower(in) } -[818] i_to_z\IsMouseOverTaskbar.ahk { +[829] i_to_z\IsMouseOverTaskbar.ahk { Line | Function 0001 | IsMouseOverStartButton() @@ -12803,86 +12854,86 @@ Line | Function 0136 | while(true) } -[819] i_to_z\isNum.ahk { +[830] i_to_z\isNum.ahk { Line | Function 0001 | isNum(in) } -[820] i_to_z\IsPrime.ahk { +[831] i_to_z\IsPrime.ahk { Line | Function 0008 | IsPrime(Number) } -[821] i_to_z\IsProcess.ahk { +[832] i_to_z\IsProcess.ahk { Line | Function 0013 | IsProcess(Process) } -[822] i_to_z\IsProcessElevated.ahk { +[833] i_to_z\IsProcessElevated.ahk { Line | Function 0005 | IsProcessElevated(ProcessID) } -[823] i_to_z\IsService.ahk { +[834] i_to_z\IsService.ahk { Line | Function 0010 | IsService(ServiceName) } -[824] i_to_z\isSpace.ahk { +[835] i_to_z\isSpace.ahk { Line | Function 0001 | isSpace(in) } -[825] i_to_z\IsType.ahk { +[836] i_to_z\IsType.ahk { Line | Function 0003 | Type(Value) } -[826] i_to_z\IsUpdated.ahk { +[837] i_to_z\IsUpdated.ahk { Line | Function 0001 | IsUpdated() } -[827] i_to_z\isUpper.ahk { +[838] i_to_z\isUpper.ahk { Line | Function 0001 | isUpper(in) } -[828] i_to_z\isValidEmail.ahk { +[839] i_to_z\isValidEmail.ahk { Line | Function 0002 | isValidEmail(emailstr) } -[829] i_to_z\IsValidFileName.ahk { +[840] i_to_z\IsValidFileName.ahk { Line | Function 0031 | isValidFileName(_fileName, _isLong=true) } -[830] i_to_z\IsWindow.ahk { +[841] i_to_z\IsWindow.ahk { Line | Function 0010 | IsWindow(hWnd) 0027 | IsWindowActive(hWnd) } -[831] i_to_z\IsWow64Process.ahk { +[842] i_to_z\IsWow64Process.ahk { Line | Function 0013 | IsWow64Process(hProcess) } -[832] i_to_z\iWeb.ahk { +[843] i_to_z\iWeb.ahk { Line | Function 0040 | iWeb_Init() @@ -12914,7 +12965,7 @@ Line | Function 0487 | iWeb_Activate(sTitle) } -[833] i_to_z\iWeb_L.ahk { +[844] i_to_z\iWeb_L.ahk { Line | Function 0043 | iWeb_newIe() @@ -12946,13 +12997,13 @@ Line | Function 0389 | iWeb_TabWinID(tabName) } -[834] i_to_z\JEEGetAllText.ahk { +[845] i_to_z\JEEGetAllText.ahk { Line | Function 0001 | JEE_StrRept(vText, vNum) } -[835] i_to_z\JEEGuiText.ahk { +[846] i_to_z\JEEGuiText.ahk { Line | Function 0008 | JEEGuiText_Load() @@ -12986,7 +13037,7 @@ Line | Function 1034 | JEE_SciSetText(hCtl, vText) } -[836] i_to_z\JEE_Functions.ahk { +[847] i_to_z\JEE_Functions.ahk { Line | Function 0007 | JEEGuiText_Load() @@ -13020,7 +13071,7 @@ Line | Function 0963 | JEE_SciSetText(hCtl, vText) } -[837] i_to_z\JEE_GuiText.ahk { +[848] i_to_z\JEE_GuiText.ahk { Line | Function 0295 | JEEGuiText_Load() @@ -13054,64 +13105,72 @@ Line | Function 0970 | JEE_SciSetText(hCtl, vText) } -[838] i_to_z\JoinScript.ahk { +[849] i_to_z\JoinScript.ahk { Line | Function 0011 | JoinLib(scriptFullPath,workingDir="",keepLib=0) 0100 | JoinScript(scriptFullPath,workingDir="",keepLib=0) } -[839] i_to_z\JoystickTest.ahk { +[850] i_to_z\JoystickTest.ahk { Line | Function } -[840] { +[851] i_to_z\json.ahk { Line | Function -0245 | Auto(Input,SaveToFileFullPath="") -0277 | StrToObj(String) -0404 | ObjToStr(Obj, Depth=9, CurIndent="") -0434 | StrObj(Input,SaveToFileFullPath="") +0016 | json(ByRef js, s, v = "") } -[841] i_to_z\json.ahk { +[852] i_to_z\Json4Ahk.ahk { Line | Function -0016 | json(ByRef js, s, v = "") +0017 | Json4Ahk_Encode(objAhk) } -[842] i_to_z\Json4Ahk.ahk { +[853] i_to_z\JSON_AHk_Parsing_for_ahk2.ahk { Line | Function -0017 | Json4Ahk_Encode(objAhk) +0055 | DoVariant(ByRef Src, ByRef Pos, ByRef Ch) +0078 | Next( ByRef Src, ByRef pos ) } -[843] i_to_z\JSONLibrary.ahk { +[854] i_to_z\JSON_Beautify.ahk { Line | Function -0017 | _Json_Parse(sJson) +0012 | JSON_Uglify(JSON) } -[844] i_to_z\JSON_Beautify.ahk { +[855] { Line | Function -0012 | JSON_Uglify(JSON) +0019 | BuildJson(obj) +0047 | ParseJson(jsonStr) +0077 | convertJScriptObjToAhks(jsObj) +0078 | if(jsObj[0]="object") +0099 | IsNumber(Num) } -[845] i_to_z\JSON_FromObj.ahk { +[856] i_to_z\JSON_FromObj.ahk { Line | Function 0006 | json_fromobj( obj ) } -[846] i_to_z\JSON_ToObj.ahk { +[857] i_to_z\JSON_Library.ahk { + +Line | Function +0017 | _Json_Parse(sJson) + +} +[858] i_to_z\JSON_ToObj.ahk { Line | Function 0004 | json_toobj( str ) } -[847] i_to_z\JumpList.ahk { +[859] i_to_z\JumpList.ahk { Line | Function 0033 | DEFINE_PROPERTYKEY(byref PropertyKeyStruct, byref fmtid, byref propertyid) @@ -13171,25 +13230,25 @@ Line | Function 0294 | Clear() } -[848] i_to_z\Jxon.ahk { +[860] i_to_z\Jxon.ahk { Line | Function } -[849] i_to_z\Keyboard.ahk { +[861] i_to_z\Keyboard.ahk { Line | Function 0113 | SetKeyboardLayout(LocaleID) } -[850] i_to_z\KeyboardLayout.ahk { +[862] i_to_z\KeyboardLayout.ahk { Line | Function 0013 | KeyboardLayout_Set(hkl, hWnd = 0) 0041 | KeyboardLayout_Get(hWnd = 0) } -[851] i_to_z\KeyboardLED.ahk { +[863] i_to_z\KeyboardLED.ahk { Line | Function 0013 | KeyboardLED(LEDvalue, Cmd, Kbd=0) @@ -13199,13 +13258,13 @@ Line | Function 0071 | SetUnicodeStr(ByRef out, str_) } -[852] i_to_z\lanConnected.ahk { +[864] i_to_z\lanConnected.ahk { Line | Function 0001 | lanConnected() } -[853] i_to_z\Lastkey.ahk { +[865] i_to_z\Lastkey.ahk { Line | Function 0027 | LastKey(nCode, wParam, lParam) @@ -13213,7 +13272,7 @@ Line | Function 0194 | StrTrimRight(string, count) } -[854] i_to_z\LBDDLib.ahk { +[866] i_to_z\LBDDLib.ahk { Line | Function 0253 | LBDDLib_Init(Options=0) @@ -13243,7 +13302,7 @@ Line | Function 1017 | LBDDLib_moveLB2LB(ItemToMove, NewPosition, hWnd_source, ArrayNum) } -[855] i_to_z\LBEX.ahk { +[867] i_to_z\LBEX.ahk { Line | Function 0001 | LBEX_Add(HLB, ByRef String) @@ -13271,7 +13330,7 @@ Line | Function 0470 | LBEX_SetTopIndex(HLB, Index) } -[856] i_to_z\LedControl.ahk { +[868] i_to_z\LedControl.ahk { Line | Function 0072 | KeyboardLED(LEDvalue, Cmd, Kbd=1) @@ -13281,19 +13340,19 @@ Line | Function 0130 | SetUnicodeStr(ByRef out, str_) } -[857] i_to_z\LetterVariations.ahk { +[869] i_to_z\LetterVariations.ahk { Line | Function 0015 | LetterVariations(text,c=0) } -[858] i_to_z\LetUserSelectRect.ahk { +[870] i_to_z\LetUserSelectRect.ahk { Line | Function 0011 | LetUserSelectRect(ByRef X1, ByRef Y1, ByRef X2, ByRef Y2) } -[859] i_to_z\LibCon.ahk { +[871] i_to_z\LibCon.ahk { Line | Function 0070 | SmartStartConsole() @@ -13367,7 +13426,7 @@ Line | Function 1076 | ReadConsoleOutput(x, y, w, h) } -[860] i_to_z\libcurl.ahk { +[872] i_to_z\libcurl.ahk { Line | Function 0001 | CurlGlobalInit( Location = "", flags = 3 ) @@ -13395,7 +13454,7 @@ Line | Function 0310 | CurlEasyDefineOptions( All = true ) } -[861] i_to_z\libHaruUnicode.ahk { +[873] i_to_z\libHaruUnicode.ahk { Line | Function 0006 | HPDF_LoadDLL(dll) @@ -13582,18 +13641,18 @@ Line | Function 0869 | HPDF_ResetStream(ByRef hDoc) } -[862] i_to_z\Limit.ahk { +[874] i_to_z\Limit.ahk { Line | Function } -[863] i_to_z\LinearGradient.ahk { +[875] i_to_z\LinearGradient.ahk { Line | Function 0029 | LinearGradient(HWND, oColors, oPositions = "", D = 0, GC = 0, BW = 0, BH = 0) } -[864] i_to_z\lineReader.ahk { +[876] i_to_z\lineReader.ahk { Line | Function 0084 | __New(buffer) @@ -13609,7 +13668,7 @@ Line | Function 0252 | __Delete() } -[865] { +[877] { Line | Function 0015 | isIn(var, matchlist) @@ -13631,7 +13690,7 @@ Line | Function 0239 | ListMax(list, del=",") } -[866] i_to_z\List.ahk { +[878] i_to_z\List.ahk { Line | Function 0001 | List_AddItem(list, item, select = false) @@ -13648,7 +13707,7 @@ Line | Function 0146 | List_MsgBox(list) } -[867] i_to_z\ListboxFunctions.ahk { +[879] i_to_z\ListboxFunctions.ahk { Line | Function 0002 | QueryActiveWinID( byRef aWin, winText="", excludeTitle="", excludeText="" ) @@ -13661,7 +13720,7 @@ Line | Function 0057 | LB_QueryText( cID, cPos ) } -[868] i_to_z\ListCompare.ahk { +[880] i_to_z\ListCompare.ahk { Line | Function 0008 | GreaterThanNumInList(ByRef NumList,Num) @@ -13669,7 +13728,7 @@ Line | Function 0043 | BetweenNumInList(ByRef NumList,LowerBound,UpperBound) } -[869] i_to_z\ListFuncs.ahk { +[881] i_to_z\ListFuncs.ahk { Line | Function 0034 | ListAdd(item,pos,list) @@ -13699,30 +13758,30 @@ Line | Function 0462 | TEST2(A,x) } -[870] i_to_z\ListIncludes.ahk { +[882] i_to_z\ListIncludes.ahk { Line | Function 0038 | ListIncludes_Recursive(ByRef list, script_file, script_dir, delim) 0097 | ListIncludes_GetFullPathName(relative_path) } -[871] i_to_z\listlines (2).ahk { +[883] i_to_z\listlines (2).ahk { Line | Function } -[872] i_to_z\ListLines.ahk { +[884] i_to_z\ListLines.ahk { Line | Function } -[873] i_to_z\Listvars.ahk { +[885] i_to_z\Listvars.ahk { Line | Function 0001 | ListVars() } -[874] i_to_z\List_Ex.ahk { +[886] i_to_z\List_Ex.ahk { Line | Function 0034 | ListAdd(item,pos,list) @@ -13752,7 +13811,7 @@ Line | Function 0462 | TEST2(A,x) } -[875] i_to_z\LoadFile.ahk { +[887] i_to_z\LoadFile.ahk { Line | Function 0058 | CreateGUID() @@ -13760,7 +13819,7 @@ Line | Function 0103 | __delete() } -[876] i_to_z\loadimage.ahk { +[888] i_to_z\loadimage.ahk { Line | Function 0001 | loadfromfile(filename) @@ -13768,99 +13827,99 @@ Line | Function 0024 | loadimage2(num) } -[877] i_to_z\LoadLib.ahk { +[889] i_to_z\LoadLib.ahk { Line | Function } -[878] i_to_z\LoadLibExtended.ahk { +[890] i_to_z\LoadLibExtended.ahk { Line | Function } -[879] i_to_z\LoadLibrary.ahk { +[891] i_to_z\LoadLibrary.ahk { Line | Function 0001 | LoadLibrary(filename) 0024 | FreeLibrary(lib) } -[880] i_to_z\LoadPicture.ahk { +[892] i_to_z\LoadPicture.ahk { Line | Function } -[881] i_to_z\LoadScriptString.ahk { +[893] i_to_z\LoadScriptString.ahk { Line | Function 0007 | LoadScriptString(scriptResource) } -[882] i_to_z\LoadString.ahk { +[894] i_to_z\LoadString.ahk { Line | Function 0019 | LoadString(hInstance, uID) } -[883] i_to_z\LOBYTE.ahk { +[895] i_to_z\LOBYTE.ahk { Line | Function 0001 | LOBYTE(a) } -[884] i_to_z\LongOperationInit.ahk { +[896] i_to_z\LongOperationInit.ahk { Line | Function 0001 | LongOperationInit(ByRef msg,ByRef tick_now) } -[885] i_to_z\LongOperationUpdate.ahk { +[897] i_to_z\LongOperationUpdate.ahk { Line | Function 0001 | LongOperationUpdate(ByRef msg,ByRef tick_now) } -[886] i_to_z\LongOperationUpdateForSendKeys.ahk { +[898] i_to_z\LongOperationUpdateForSendKeys.ahk { Line | Function 0001 | LongOperationUpdateForSendKeys(ByRef msg,ByRef tick_now) } -[887] i_to_z\LookupLanguageName.ahk { +[899] i_to_z\LookupLanguageName.ahk { Line | Function 0010 | LookupLanguageName(LangCP) } -[888] i_to_z\LookupLanguageValue.ahk { +[900] i_to_z\LookupLanguageValue.ahk { Line | Function 0013 | LookupLanguageValue(LanguageName) } -[889] i_to_z\LookupPrivilegeName.ahk { +[901] i_to_z\LookupPrivilegeName.ahk { Line | Function } -[890] i_to_z\LookupPrivilegeValue.ahk { +[902] i_to_z\LookupPrivilegeValue.ahk { Line | Function } -[891] i_to_z\Lower.ahk { +[903] i_to_z\Lower.ahk { Line | Function 0011 | Lower(Text) } -[892] i_to_z\LowerReplaceSpace.ahk { +[904] i_to_z\LowerReplaceSpace.ahk { Line | Function 0011 | LowerReplaceSpace(Text) } -[893] i_to_z\LowLevel.ahk { +[905] i_to_z\LowLevel.ahk { Line | Function 0004 | LowLevel_init() @@ -13890,7 +13949,7 @@ Line | Function 0416 | __addVar(var, func) } -[894] i_to_z\LowLevel_code.ahk { +[906] i_to_z\LowLevel_code.ahk { Line | Function 0044 | code_gen() @@ -13941,13 +14000,13 @@ Line | Function 1098 | code_ensure_buf_capacity(buf_info_ptr, min_buf_size, init_buf_size, max_buf_size, item_size, growth_factor=0) } -[895] i_to_z\LOWORD.ahk { +[907] i_to_z\LOWORD.ahk { Line | Function 0001 | LOWORD(a) } -[896] i_to_z\LSON.ahk { +[908] i_to_z\LSON.ahk { Line | Function 0015 | LSON( obj_text ) @@ -13961,7 +14020,7 @@ Line | Function 0219 | format_v(f, v) } -[897] i_to_z\lua.ahk { +[909] i_to_z\lua.ahk { Line | Function 0001 | lua_LoadDLL(dll) @@ -14263,7 +14322,7 @@ Line | Function 3012 | ahkGetVar(L) } -[898] i_to_z\LV.ahk { +[910] i_to_z\LV.ahk { Line | Function 0009 | LV_SetDefault(sGUI, sLV) @@ -14274,7 +14333,12 @@ Line | Function 0048 | LV_SetSelText(sToSel, sOptsOverride="", iCol=1, bPartialMatch=false, bCaseSensitive=false) } -[899] i_to_z\LV_A.ahk { +[911] i_to_z\LVOrder.ahk { + +Line | Function + +} +[912] i_to_z\LV_A.ahk { Line | Function 0230 | LVA_OnNotify(wParam, lParam, msg, hwnd) @@ -14298,7 +14362,7 @@ Line | Function 0871 | lva_Subclass(hCtrl, Fun, Opt="", ByRef $WndProc="") } -[900] i_to_z\LV_Color.ahk { +[913] i_to_z\LV_Color.ahk { Line | Function 0048 | LV_ColorInitiate(Gui_Number=1, Control="") @@ -14308,7 +14372,7 @@ Line | Function 0109 | EncodeInteger( p_value, p_size, p_address, p_offset ) } -[901] i_to_z\LV_Colors.ahk { +[914] i_to_z\LV_Colors.ahk { Line | Function 0043 | On_NM_CUSTOMDRAW(H, L) @@ -14319,7 +14383,7 @@ Line | Function 0370 | LV_Colors_SubclassProc(H, M, W, L, S, R) } -[902] i_to_z\LV_CustomColors.ahk { +[915] i_to_z\LV_CustomColors.ahk { Line | Function 0004 | LV_Initialize(Gui_Number="", Control="", Column="") @@ -14334,7 +14398,7 @@ Line | Function 0363 | WM_NOTIFY( p_w, p_l, p_m ) } -[903] i_to_z\LV_EDIT.ahk { +[916] i_to_z\LV_EDIT.ahk { Line | Function 0027 | LVEDIT_INIT(LVHWND, BlankSubItem = False) @@ -14342,7 +14406,7 @@ Line | Function 0084 | LVEDIT_NOTIFY(W, L) } -[904] i_to_z\LV_EX.ahk { +[917] i_to_z\LV_EX.ahk { Line | Function 0100 | LV_EX_GetColumnOrder(HLV) @@ -14378,7 +14442,7 @@ Line | Function 0687 | LV_EX_PWSTR(Str, ByRef WSTR) } -[905] i_to_z\LV_ExtListView.ahk { +[918] i_to_z\LV_ExtListView.ahk { Line | Function 0035 | ExtListView_GetSingleItem(ByRef objLV, sState, nCol) @@ -14389,7 +14453,7 @@ Line | Function 0253 | __ExtListView_DeAllocateMemory(ByRef objLV) } -[906] i_to_z\LV_EX_2.ahk { +[919] i_to_z\LV_EX_2.ahk { Line | Function 0101 | LV_EX_GetColumnOrder(HLV) @@ -14427,7 +14491,7 @@ Line | Function 0775 | LV_EX_PWSTR(Str, ByRef WSTR) } -[907] i_to_z\LV_G.ahk { +[920] i_to_z\LV_G.ahk { Line | Function 0195 | LVG_Search(Gui_nr=1,mode="Selected",mode2="Count",rows="all",cols="all",srch_str="") @@ -14439,7 +14503,7 @@ Line | Function 0663 | LVG_Delete(Gui_nr=1,mode="Selected") } -[908] i_to_z\LV_GetListViewText.ahk { +[921] i_to_z\LV_GetListViewText.ahk { Line | Function 0001 | GetListViewItemText(item_index, sub_index, ctrl_id, win_id) @@ -14448,7 +14512,7 @@ Line | Function 0128 | InsertIntegerSL(pInteger, ByRef pDest, pOffset = 0, pSize = 4) } -[909] i_to_z\LV_Group.ahk { +[922] i_to_z\LV_Group.ahk { Line | Function 0034 | LVGroupCompare(id1, id2, this) @@ -14472,14 +14536,14 @@ Line | Function 0350 | _SendMsg(uMsg, wParam=0, lParam=0) } -[910] i_to_z\LV_GroupView.ahk { +[923] i_to_z\LV_GroupView.ahk { Line | Function 0013 | LV_SetGroup(hLV, Row, GroupID) 0027 | UTF16(String, ByRef Var) } -[911] i_to_z\LV_InCellEdit.ahk { +[924] i_to_z\LV_InCellEdit.ahk { Line | Function 0107 | __Delete() @@ -14493,7 +14557,7 @@ Line | Function 0483 | RegisterHotkeys(Register = True) } -[912] { +[925] { Line | Function 0036 | LVM_GetCount(h) @@ -14506,7 +14570,7 @@ Line | Function 0112 | LVM_Delete(h, i=0) } -[913] i_to_z\LV_M.ahk { +[926] i_to_z\LV_M.ahk { Line | Function 0035 | LVM_GetCount(hLV) @@ -14520,7 +14584,7 @@ Line | Function 0175 | LVM_SetSubItemImage(hLV, Row, Col, iIL) } -[914] i_to_z\LV_S.ahk { +[927] i_to_z\LV_S.ahk { Line | Function 0099 | LVS_Selected() @@ -14531,13 +14595,13 @@ Line | Function 0264 | LVS_Add(RowContents) } -[915] i_to_z\LV_SortArrow.ahk { +[928] i_to_z\LV_SortArrow.ahk { Line | Function 0005 | LV_SortArrow(h, c, d="") } -[916] i_to_z\LV_SpecialFunctions.ahk { +[929] i_to_z\LV_SpecialFunctions.ahk { Line | Function 0001 | CompileList(Find, Criteria, Col, LV, ColumnList) @@ -14557,7 +14621,7 @@ Line | Function 0469 | hasValue(haystack, needle) } -[917] i_to_z\LV_TV_CustomColors.ahk { +[930] i_to_z\LV_TV_CustomColors.ahk { Line | Function 0004 | LV_Initialize(Gui_Number="", Control="", Column="") @@ -14580,13 +14644,13 @@ Line | Function 0747 | WM_NOTIFY( p_w, p_l, p_m ) } -[918] i_to_z\LV_va.ahk { +[931] i_to_z\LV_va.ahk { Line | Function 0001 | LV(va="") } -[919] i_to_z\LV_X.ahk { +[932] i_to_z\LV_X.ahk { Line | Function 0025 | LVX_Setup(name) @@ -14599,12 +14663,12 @@ Line | Function 0242 | WM_NOTIFY(wParam, lParam, msg, hwnd) } -[920] i_to_z\m.ahk { +[933] i_to_z\m.ahk { Line | Function } -[921] i_to_z\majkinetor_Dock.ahk { +[934] i_to_z\majkinetor_Dock.ahk { Line | Function 0070 | Dock(pClientID, pDockDef="", reset=0) @@ -14616,56 +14680,56 @@ Line | Function 0247 | API_UnhookWinEvent( hWinEventHook ) } -[922] i_to_z\MakeIco.ahk { +[935] i_to_z\MakeIco.ahk { Line | Function 0054 | ImgGetDimensions(fileFullPath) 0062 | FileGetProperty(FilePath, Property) } -[923] i_to_z\MAKELANGID.ahk { +[936] i_to_z\MAKELANGID.ahk { Line | Function 0001 | MAKELANGID(p, s) } -[924] i_to_z\MAKELCID.ahk { +[937] i_to_z\MAKELCID.ahk { Line | Function 0001 | MAKELCID(lgid, srtid) } -[925] i_to_z\MAKELONG.ahk { +[938] i_to_z\MAKELONG.ahk { Line | Function 0001 | MAKELONG(a, b) } -[926] i_to_z\MAKELPARAM.ahk { +[939] i_to_z\MAKELPARAM.ahk { Line | Function 0001 | MAKELPARAM(a, b) } -[927] i_to_z\MAKELRESULT.ahk { +[940] i_to_z\MAKELRESULT.ahk { Line | Function 0001 | MAKELRESULT(a, b) } -[928] i_to_z\MAKEWORD.ahk { +[941] i_to_z\MAKEWORD.ahk { Line | Function 0001 | MAKEWORD(a, b) } -[929] i_to_z\MAKEWPARAM.ahk { +[942] i_to_z\MAKEWPARAM.ahk { Line | Function 0001 | MAKEWPARAM(a, b) } -[930] i_to_z\ManagedGuis.ahk { +[943] i_to_z\ManagedGuis.ahk { Line | Function 0043 | __New(ManagedVariableObject="") @@ -14734,7 +14798,7 @@ Line | Function 1257 | GuiDropFiles(GuiHwnd, FileArray, CtrlHwnd, X, Y) } -[931] i_to_z\ManagedResources.ahk { +[944] i_to_z\ManagedResources.ahk { Line | Function 0046 | __New(ResourceFile, Language="English", DefaultLanguage="English") @@ -14751,7 +14815,7 @@ Line | Function 0281 | __Delete() } -[932] i_to_z\ManageFonts.ahk { +[945] i_to_z\ManageFonts.ahk { Line | Function 0001 | InstallFonts(runAgain=False) @@ -14760,7 +14824,7 @@ Line | Function 0091 | Load_Or_Unload_Fonts(whatDo) } -[933] i_to_z\Manifest.ahk { +[946] i_to_z\Manifest.ahk { Line | Function 0002 | Manifest_FromPackage(fileName) @@ -14771,13 +14835,13 @@ Line | Function 0067 | _ManValidateField(out, man, field) } -[934] i_to_z\Map.ahk { +[947] i_to_z\Map.ahk { Line | Function 0071 | Map_Z(func, args) } -[935] i_to_z\Markdown2HTML.ahk { +[948] i_to_z\Markdown2HTML.ahk { Line | Function 0023 | MD_IsMultiP(ByRef htmQ) @@ -14794,14 +14858,14 @@ Line | Function 0298 | StrStartsWith(ByRef v, ByRef w) } -[936] i_to_z\MatchItemFromList.ahk { +[949] i_to_z\MatchItemFromList.ahk { Line | Function 0003 | MatchItemFromList(iPtr, iCount, sItem) 0072 | InStrCount(ByRef Haystack, Trigram) } -[937] i_to_z\Math.ahk { +[950] i_to_z\Math.ahk { Line | Function 0049 | SM_Solve(expression, ahk=false) @@ -14830,7 +14894,7 @@ Line | Function 1036 | SM_FixExpression(expression) } -[938] i_to_z\matrix.ahk { +[951] i_to_z\matrix.ahk { Line | Function 0017 | Det(m) @@ -14897,7 +14961,7 @@ Line | Function 0995 | ToRowEchelonForm(a, b="") } -[939] i_to_z\MCI.ahk { +[952] i_to_z\MCI.ahk { Line | Function 0199 | MCI_Open(p_MediaFile,p_Alias="",p_Flags="") @@ -14927,19 +14991,19 @@ Line | Function 1624 | MCI_SendString(p_lpszCommand,ByRef p_lpszReturnString,p_hwndCallback=0) } -[940] i_to_z\MCode.ahk { +[953] i_to_z\MCode.ahk { Line | Function 0008 | MCode(ByRef cBuf, ByRef sHex) 0020 | MCode_2(ByRef sMcode) } -[941] i_to_z\MCodeH.ahk { +[954] i_to_z\MCodeH.ahk { Line | Function } -[942] i_to_z\md5.ahk { +[955] i_to_z\md5.ahk { Line | Function 0035 | MD5(string, encoding = "UTF-8") @@ -14952,7 +15016,7 @@ Line | Function 0107 | CalcFileHash(filename, algid, continue = 0, byref hash = 0, byref hashlength = 0) } -[943] i_to_z\MD5_2.ahk { +[956] i_to_z\MD5_2.ahk { Line | Function 0033 | Encrypt(text, password) @@ -14962,20 +15026,20 @@ Line | Function 0098 | Crypt_Replace(baselist, parsedlist, text) } -[944] i_to_z\MD5_File.ahk { +[957] i_to_z\MD5_File.ahk { Line | Function 0010 | MD5_File(FileName) } -[945] i_to_z\md5_L.ahk { +[958] i_to_z\md5_L.ahk { Line | Function 0003 | MD5_File( sFile="", cSz=4 ) 0018 | MD5( ByRef V, L=0 ) } -[946] i_to_z\MDMF.ahk { +[959] i_to_z\MDMF.ahk { Line | Function 0019 | MDMF_EnumProc(HMON, HDC, PRECT, ObjectAddr) @@ -14984,13 +15048,13 @@ Line | Function 0058 | MDMF_GetInfo(HMON) } -[947] i_to_z\MeasureText.ahk { +[960] i_to_z\MeasureText.ahk { Line | Function 0004 | MeasureText(hwnd,text,Font,size, layout) } -[948] i_to_z\Mem.ahk { +[961] i_to_z\Mem.ahk { Line | Function 0013 | Mem_Dump(_binAddr, _byteNb=0, _bExtended=false) @@ -15004,7 +15068,7 @@ Line | Function 0238 | Mem_Copy(src, dest, bytes) } -[949] i_to_z\MemLib.ahk { +[962] i_to_z\MemLib.ahk { Line | Function 0006 | OpenMemoryfromProcess(process,right=0x1F0FFF) @@ -15017,7 +15081,7 @@ Line | Function 0072 | Resumeprocess(hwnd) } -[950] i_to_z\Memmngmnt.ahk { +[963] i_to_z\Memmngmnt.ahk { Line | Function 0024 | HeapAlloc(Size) @@ -15030,7 +15094,7 @@ Line | Function 0171 | HeapRemove(ptr,offset=0,type="ptr") } -[951] i_to_z\memory.ahk { +[964] i_to_z\memory.ahk { Line | Function 0001 | Memory(Type=3,Param1=0,Param2=0,Param3=0) @@ -15040,7 +15104,7 @@ Line | Function 0058 | DoubleToHex(d) } -[952] i_to_z\MemoryBuffer.ahk { +[965] i_to_z\MemoryBuffer.ahk { Line | Function 0023 | Create(srcPtr, size) @@ -15057,7 +15121,7 @@ Line | Function 0152 | AllocMemory(size) } -[953] i_to_z\MemoryMore.ahk { +[966] i_to_z\MemoryMore.ahk { Line | Function 0026 | Memory_GetProcessID(process_name) @@ -15077,7 +15141,7 @@ Line | Function 0214 | Memory_WriteBytes(process_handle, address, bytes) } -[954] i_to_z\Menu.ahk { +[967] i_to_z\Menu.ahk { Line | Function 0033 | Menu_BarRightJustify(HWND, ItemPos) @@ -15095,12 +15159,12 @@ Line | Function 0230 | Menu_ShowAligned(HMENU, HWND, X, Y, XAlign, YAlign) } -[955] i_to_z\Menu_SetSysMenu.ahk { +[968] i_to_z\Menu_SetSysMenu.ahk { Line | Function } -[956] i_to_z\mg.ahk { +[969] i_to_z\mg.ahk { Line | Function 0053 | MG_GetMove(Angle) @@ -15109,7 +15173,7 @@ Line | Function 0101 | MG_Recognize(MGHotkey="", ToolTip=0, MaxMoves=3, ExecuteMGFunction=1, SendIfNoDrag=1) } -[957] i_to_z\MI (2).ahk { +[970] i_to_z\MI (2).ahk { Line | Function 0047 | MI_SetMenuItemIcon(MenuNameOrHandle, ItemPos, FilenameOrHICON, IconNumber=1, IconSize=0, ByRef unused1="", ByRef unused2="") @@ -15124,7 +15188,7 @@ Line | Function 0472 | MI_GetBitmapFromIcon32Bit(h_icon, width=0, height=0) } -[958] i_to_z\MI.ahk { +[971] i_to_z\MI.ahk { Line | Function 0047 | MI_SetMenuItemIcon(MenuNameOrHandle, ItemPos, FilenameOrHICON, IconNumber=1, IconSize=0, ByRef unused1="", ByRef unused2="") @@ -15140,7 +15204,7 @@ Line | Function 0551 | MI_DllProcAorW(dll, func) } -[959] i_to_z\Midi.ahk { +[972] i_to_z\Midi.ahk { Line | Function 0089 | __New() @@ -15161,24 +15225,24 @@ Line | Function 0636 | __MidiEventDebug( midiEvent ) } -[960] i_to_z\MimeTypes.ahk { +[973] i_to_z\MimeTypes.ahk { Line | Function 0001 | getMimeTypes() } -[961] i_to_z\MiniDump.ahk { +[974] i_to_z\MiniDump.ahk { Line | Function } -[962] i_to_z\Misc Functions.ahk { +[975] i_to_z\Misc Functions.ahk { Line | Function 0169 | hexToDecimal(str) } -[963] i_to_z\misc.ahk { +[976] i_to_z\misc.ahk { Line | Function 0058 | FAIL(msg) @@ -15192,7 +15256,7 @@ Line | Function 0245 | repeat(x, y) } -[964] i_to_z\MiscFunctions.ahk { +[977] i_to_z\MiscFunctions.ahk { Line | Function 0008 | TranslateMUI(resDll, resID) @@ -15313,7 +15377,7 @@ Line | Function 2072 | if(ext = "bmp") } -[965] i_to_z\MMenu.ahk { +[978] i_to_z\MMenu.ahk { Line | Function 0033 | MMenu_Create( pOptions="" ) @@ -15365,24 +15429,30 @@ Line | Function 0990 | RECT_Get(var) } -[966] i_to_z\Monitor.ahk { +[979] i_to_z\Monitor.ahk { Line | Function 0024 | GetMonitorInfo(hMonitor) 0132 | GetDpiForWindow(Hwnd) } -[967] i_to_z\Monitorconfig.ahk { +[980] i_to_z\Monitorconfig.ahk { + +Line | Function + +} +[981] i_to_z\MonitorConstants.ahk { Line | Function } -[968] i_to_z\MonitorConstants.ahk { +[982] i_to_z\Months.ahk { Line | Function +0011 | Months(date,months) } -[969] i_to_z\Mount.ahk { +[983] i_to_z\Mount.ahk { Line | Function 0136 | Mount(SourcePath = "", Mountpoint = "", Options = "") @@ -15391,19 +15461,19 @@ Line | Function 0297 | Mount_GetMount(pPath = "") } -[970] i_to_z\Mouse.ahk { +[984] i_to_z\Mouse.ahk { Line | Function 0110 | MoveCursorR(X, Y) } -[971] i_to_z\MouseExtras.ahk { +[985] i_to_z\MouseExtras.ahk { Line | Function 0026 | MouseExtras(HoldSub, HoldTime="200", DoubleSub="", DClickTime="0.2", Button="") } -[972] i_to_z\MouseKeyboardCounter.ahk { +[986] i_to_z\MouseKeyboardCounter.ahk { Line | Function 0459 | Format_To_7(Temp_Number) @@ -15411,30 +15481,30 @@ Line | Function 1131 | AddNumpadKeys() } -[973] i_to_z\MouseMove_Ellipse.ahk { +[987] i_to_z\MouseMove_Ellipse.ahk { Line | Function 0036 | MouseMove_Ellipse(pos_X1, pos_Y1, param_Options="") } -[974] i_to_z\mouseOverWin.ahk { +[988] i_to_z\mouseOverWin.ahk { Line | Function 0001 | mouseOverWin(winName,winText="") } -[975] i_to_z\MoveTaskbar.ahk { +[989] i_to_z\MoveTaskbar.ahk { Line | Function 0004 | MoveTaskbar(dspNumber, edge) } -[976] { +[990] { Line | Function } -[977] i_to_z\mpgc.ahk { +[991] i_to_z\mpgc.ahk { Line | Function 0065 | update_mpgc() @@ -15443,43 +15513,43 @@ Line | Function 0106 | if(mpgcPBitmap) } -[978] i_to_z\msg.ahk { +[992] i_to_z\msg.ahk { Line | Function 0003 | Msg(Msg) } -[979] i_to_z\msTill.ahk { +[993] i_to_z\msTill.ahk { Line | Function 0004 | msTill(Time) } -[980] i_to_z\msToH.ahk { +[994] i_to_z\msToH.ahk { Line | Function 0001 | msToH(ms) } -[981] i_to_z\msToM.ahk { +[995] i_to_z\msToM.ahk { Line | Function 0001 | msToM(ms) } -[982] i_to_z\msToS.ahk { +[996] i_to_z\msToS.ahk { Line | Function 0001 | msToS(ms) } -[983] i_to_z\mToMs.ahk { +[997] i_to_z\mToMs.ahk { Line | Function 0001 | mToMs(m) } -[984] i_to_z\Music.ahk { +[998] i_to_z\Music.ahk { Line | Function 0053 | __New() @@ -15505,14 +15575,14 @@ Line | Function 0377 | Reset() } -[985] i_to_z\muteWindow.ahk { +[999] i_to_z\muteWindow.ahk { Line | Function 0003 | muteWindow(winName="A",mode="t") 0007 | if(mode=t) } -[986] i_to_z\mySQL.ahk { +[1000] i_to_z\mySQL.ahk { Line | Function 0023 | MySQL_CreateConnectionData(connectionString) @@ -15547,7 +15617,7 @@ Line | Function 0415 | OrgTable() } -[987] i_to_z\NetGetControl.ahk { +[1001] i_to_z\NetGetControl.ahk { Line | Function 0003 | listAccChildProperty(hwnd) @@ -15562,12 +15632,12 @@ Line | Function 0245 | getControlDescription(winHwnd,controlHwnd) } -[988] i_to_z\NetShareEnum.ahk { +[1002] i_to_z\NetShareEnum.ahk { Line | Function } -[989] i_to_z\NetworkAPI.ahk { +[1003] i_to_z\NetworkAPI.ahk { Line | Function 0050 | API_ValidateSource(domain) @@ -15579,7 +15649,7 @@ Line | Function 0152 | API_GetDependencies(pack_ahkp) } -[990] i_to_z\NewChromeWin.ahk { +[1004] i_to_z\NewChromeWin.ahk { Line | Function 0006 | NewChromeWin(x, y, w, h) @@ -15587,41 +15657,41 @@ Line | Function 0027 | LastChromeProcessId() } -[991] i_to_z\newestFile.ahk { +[1005] i_to_z\newestFile.ahk { Line | Function 0018 | newestFile(folder) } -[992] i_to_z\nicRestart.ahk { +[1006] i_to_z\nicRestart.ahk { Line | Function 0001 | nicRestart(adapter) } -[993] i_to_z\nicSetState.ahk { +[1007] i_to_z\nicSetState.ahk { Line | Function 0004 | nicSetState(adapter,state) } -[994] i_to_z\NormaliseLineEndings.ahk { +[1008] i_to_z\NormaliseLineEndings.ahk { Line | Function 0001 | NormaliseLineEndings(ByRef fnText) } -[995] i_to_z\Notify.ahk { +[1009] i_to_z\Notify.ahk { Line | Function } -[996] i_to_z\NotifyOnTray.ahk { +[1010] i_to_z\NotifyOnTray.ahk { Line | Function } -[997] i_to_z\NoTrayOrphans.ahk { +[1011] i_to_z\NoTrayOrphans.ahk { Line | Function 0001 | NoTrayOrphans() @@ -15631,7 +15701,14 @@ Line | Function 0075 | StrX( H,BS="",ES="",Tr=1,ByRef OS=1) } -[998] i_to_z\NumGet_.ahk { +[1012] i_to_z\NumBase.ahk { + +Line | Function +0010 | ToBase(n, b) +0023 | FromBase(s, b) + +} +[1013] i_to_z\NumGet_.ahk { Line | Function 0001 | NumGet_BE(ByRef VarOrAddress, Offset=0, Type = "UPtr") @@ -15641,24 +15718,24 @@ Line | Function 0048 | AHK_DataType() } -[999] { +[1014] { Line | Function } -[1000] i_to_z\NumSize.ahk { +[1015] i_to_z\NumSize.ahk { Line | Function 0001 | NumSize(v) } -[1001] i_to_z\NumType.ahk { +[1016] i_to_z\NumType.ahk { Line | Function 0001 | NumType(v) } -[1002] i_to_z\OAuth.ahk { +[1017] i_to_z\OAuth.ahk { Line | Function 0076 | OAuth_Authorization( Credentials, URL, Extra_Parameters = "", Method = "GET" ) @@ -15670,7 +15747,7 @@ Line | Function 0288 | HMAC( hashfunc, key, msg ) } -[1003] i_to_z\Obj.ahk { +[1018] i_to_z\Obj.ahk { Line | Function 0001 | Obj_Print(obj, indent = 0) @@ -15678,13 +15755,13 @@ Line | Function 0052 | Obj_IsPureArray(obj, zeroBased = false) } -[1004] i_to_z\ObjByRef.ahk { +[1019] i_to_z\ObjByRef.ahk { Line | Function 0013 | __GET(key) } -[1005] i_to_z\ObjCSV.ahk { +[1020] i_to_z\ObjCSV.ahk { Line | Function 1129 | SaveBatch(strData, strFilePath, intProgressType, strFileEncoding) @@ -15700,12 +15777,12 @@ Line | Function 1216 | GetEolCharacters(strData) } -[1006] i_to_z\ObjDump.ahk { +[1021] i_to_z\ObjDump.ahk { Line | Function } -[1007] i_to_z\object.ahk { +[1022] i_to_z\object.ahk { Line | Function 0052 | TO_DEPTH(x) @@ -15715,7 +15792,7 @@ Line | Function 0288 | object_test() } -[1008] { +[1023] { Line | Function 0045 | string_length(this) @@ -15767,7 +15844,7 @@ Line | Function 0589 | string_isVarLetter(this) } -[1009] i_to_z\ObjectBundles.ahk { +[1024] i_to_z\ObjectBundles.ahk { Line | Function 0007 | WhichBundle() @@ -15781,7 +15858,7 @@ Line | Function 0388 | FixPreview(in) } -[1010] i_to_z\ObjectHandling.ahk { +[1025] i_to_z\ObjectHandling.ahk { Line | Function 0106 | ObjGetCount(BaseObject) @@ -15794,7 +15871,7 @@ Line | Function 0419 | ObjLoad(BaseObject, FileName) } -[1011] i_to_z\ObjectTools.ahk { +[1026] i_to_z\ObjectTools.ahk { Line | Function 0077 | GetAll(list, KeyOrValue, value = "") @@ -15810,28 +15887,28 @@ Line | Function 0346 | Count(Object, KeyOrValue, value = "") } -[1012] i_to_z\ObjLoad.ahk { +[1027] i_to_z\ObjLoad.ahk { Line | Function } -[1013] i_to_z\ObjLoadandBump.ahk { +[1028] i_to_z\ObjLoadandBump.ahk { Line | Function } -[1014] i_to_z\ObjRegisterActive.ahk { +[1029] i_to_z\ObjRegisterActive.ahk { Line | Function } -[1015] i_to_z\ObjShare.ahk { +[1030] i_to_z\ObjShare.ahk { Line | Function 0001 | ObjShare(obj) } -[1016] i_to_z\ObjToFile.ahk { +[1031] i_to_z\ObjToFile.ahk { Line | Function 0014 | ObjToFile(Obj,Filename) @@ -15841,12 +15918,12 @@ Line | Function 0152 | GetClassName(C) } -[1017] i_to_z\objtostring.ahk { +[1032] i_to_z\objtostring.ahk { Line | Function } -[1018] i_to_z\ObjTree.ahk { +[1033] i_to_z\ObjTree.ahk { Line | Function 0598 | ObjTree_Expand(TV_Item,OnlyOneItem=0,Collapse=0) @@ -15856,39 +15933,39 @@ Line | Function 0664 | ObjTree_LoadList(obj,text,G) } -[1019] i_to_z\OCR.ahk { +[1034] i_to_z\OCR.ahk { Line | Function 0029 | GetOCR(topLeftX="", topLeftY="", widthToScan="", heightToScan="", options="") 0163 | CMDret(CMD) } -[1020] i_to_z\ocrBWCompare.ahk { +[1035] i_to_z\ocrBWCompare.ahk { Line | Function } -[1021] i_to_z\ocrBWconverter.ahk { +[1036] i_to_z\ocrBWconverter.ahk { Line | Function } -[1022] i_to_z\ocrGetDigit.ahk { +[1037] i_to_z\ocrGetDigit.ahk { Line | Function } -[1023] i_to_z\ocrLeftToRight.ahk { +[1038] i_to_z\ocrLeftToRight.ahk { Line | Function } -[1024] i_to_z\OH.ahk { +[1039] i_to_z\OH.ahk { Line | Function } -[1025] i_to_z\oIE.ahk { +[1040] i_to_z\oIE.ahk { Line | Function 0005 | waiting(oIE) @@ -15902,7 +15979,7 @@ Line | Function 0150 | IWebBrowserApp_from_Internet_Explorer_Server_HWND( hwnd, Svr#=1 ) } -[1026] i_to_z\OldToolbar.ahk { +[1041] i_to_z\OldToolbar.ahk { Line | Function 0075 | Toolbar_Add(hGui, Handler, Style="", ImageList="", Pos="") @@ -15941,7 +16018,7 @@ Line | Function 1106 | Toolbar_add2Form(hParent, Txt, Opt) } -[1027] i_to_z\On.ahk { +[1042] i_to_z\On.ahk { Line | Function 0133 | On_ActiveWindow(Label, Interval=200) @@ -15956,25 +16033,25 @@ Line | Function 0355 | On_WinClose(WinTitle, Label, TitleMatchMode=3, DetectHidden=0, Interval=200) } -[1028] i_to_z\OnExitF.ahk { +[1043] i_to_z\OnExitF.ahk { Line | Function } -[1029] i_to_z\OnMenuHilite.ahk { +[1044] i_to_z\OnMenuHilite.ahk { Line | Function 0029 | WM_ENTERMENULOOP() 0033 | WM_MENUSELECT( wParam, lParam, Msg, hWnd ) } -[1030] i_to_z\OnPBMsg.ahk { +[1045] i_to_z\OnPBMsg.ahk { Line | Function 0043 | OnPBMsg(wParam, lParam, msg, hwnd) } -[1031] i_to_z\OnWin.ahk { +[1046] i_to_z\OnWin.ahk { Line | Function 0119 | Watch() @@ -15989,7 +16066,7 @@ Line | Function 0321 | Assert() } -[1032] i_to_z\OOPFunctions.ahk { +[1047] i_to_z\OOPFunctions.ahk { Line | Function 0001 | hasClass( obj, classObj ) @@ -15999,40 +16076,40 @@ Line | Function 0028 | isFuncOrBoundFunc(P) } -[1033] i_to_z\OpenFileLocation.ahk { +[1048] i_to_z\OpenFileLocation.ahk { Line | Function 0001 | OpenFileLocation(fnFilePath) } -[1034] i_to_z\OpenFilepaths.ahk { +[1049] i_to_z\OpenFilepaths.ahk { Line | Function } -[1035] i_to_z\OpenFolderAndSelectItems.ahk { +[1050] i_to_z\OpenFolderAndSelectItems.ahk { Line | Function } -[1036] i_to_z\OpenProcess.ahk { +[1051] i_to_z\OpenProcess.ahk { Line | Function } -[1037] i_to_z\OpenProcessToken.ahk { +[1052] i_to_z\OpenProcessToken.ahk { Line | Function 0025 | OpenProcessToken(hProcess, DesiredAccess) } -[1038] i_to_z\OpenWith.ahk { +[1053] i_to_z\OpenWith.ahk { Line | Function 0008 | OpenWith(Owner, FileName) } -[1039] i_to_z\Operators_Fct.ahk { +[1054] i_to_z\Operators_Fct.ahk { Line | Function 0319 | INCREM_FU(ByRef var1) @@ -16042,20 +16119,20 @@ Line | Function 0374 | BITRIGHT_FU(var1,var2) } -[1040] i_to_z\OrderedArray.ahk { +[1055] i_to_z\OrderedArray.ahk { Line | Function 0024 | oaNewEnum(obj) 0032 | oaEnumNext(e, ByRef k, ByRef v="") } -[1041] i_to_z\OSTest.ahk { +[1056] i_to_z\OSTest.ahk { Line | Function 0011 | OSTest(nm, cin="E") } -[1042] i_to_z\Package.ahk { +[1057] i_to_z\Package.ahk { Line | Function 0002 | Package_Build(outFile, baseDir, jfile="") @@ -16066,7 +16143,7 @@ Line | Function 0147 | _Package_ExtractTreeObj(ptr, tmpdir, Obj) } -[1043] i_to_z\PackingASentence.ahk { +[1058] i_to_z\PackingASentence.ahk { Line | Function 0004 | boxit(z) @@ -16074,7 +16151,7 @@ Line | Function 0028 | Flip(in) } -[1044] i_to_z\Panel.ahk { +[1059] i_to_z\Panel.ahk { Line | Function 0033 | Panel_Add(HParent, X="", Y="", W="", H="", Style="", Text="") @@ -16084,41 +16161,41 @@ Line | Function 0179 | Panel_add2Form(hParent, Txt, Opt) } -[1045] i_to_z\para.ahk { +[1060] i_to_z\para.ahk { Line | Function } -[1046] i_to_z\pArr.ahk { +[1061] i_to_z\pArr.ahk { Line | Function 0002 | pArr(Array, Parent="",ExpandK="") } -[1047] i_to_z\Parse.ahk { +[1062] i_to_z\Parse.ahk { Line | Function 0061 | Parse(O, pQ, ByRef o1="",ByRef o2="",ByRef o3="",ByRef o4="",ByRef o5="",ByRef o6="",ByRef o7="",ByRef o8="", ByRef o9="", ByRef o10="") } -[1048] i_to_z\ParseScriptCommandLine.ahk { +[1063] i_to_z\ParseScriptCommandLine.ahk { Line | Function } -[1049] i_to_z\PasteAsCSV.ahk { +[1064] i_to_z\PasteAsCSV.ahk { Line | Function 0001 | PasteAsCSV(fnInputText,fnInclLetters,fnExtraSpace,fnIncludeNewLine,fnIncludeQuotes,fnNoSeperator) } -[1050] { +[1065] { Line | Function 0002 | PathWinToUnix(clipVal) } -[1051] i_to_z\Path.ahk { +[1066] i_to_z\Path.ahk { Line | Function 0011 | Path(p1,p2="",p3="",p4="",p5="",p6="",p7="",p8="",p9="") @@ -16126,19 +16203,19 @@ Line | Function 0042 | Path_getter(self, key) } -[1052] i_to_z\Path2.ahk { +[1067] i_to_z\Path2.ahk { Line | Function } -[1053] i_to_z\patternScan.ahk { +[1068] i_to_z\patternScan.ahk { Line | Function 0019 | patternScan(pattern, haystackAddress, haystackSize) 0128 | hexToBinaryBuffer(hexString, byRef buffer) } -[1054] i_to_z\PBhash.ahk { +[1069] i_to_z\PBhash.ahk { Line | Function 0011 | StrDecryptToFile(EncryptedHash,pFileOut,password,CryptAlg = 1, HashAlg = 1) @@ -16164,12 +16241,12 @@ Line | Function 0807 | Free(byRef var) } -[1055] i_to_z\PBhashtype.ahk { +[1070] i_to_z\PBhashtype.ahk { Line | Function } -[1056] i_to_z\pbkdf2.ahk { +[1071] i_to_z\pbkdf2.ahk { Line | Function 0012 | PBKDF2(sPassword, sSalt, nIterations = 10000, nLength = 0, sAlgo = "SHA1") @@ -16179,12 +16256,12 @@ Line | Function 0118 | Hex2Bin(sInput, ByRef Output) } -[1057] i_to_z\PBtimeserver.ahk { +[1072] i_to_z\PBtimeserver.ahk { Line | Function } -[1058] i_to_z\Pebwa.ahk { +[1073] i_to_z\Pebwa.ahk { Line | Function 0083 | EncodeQuantity(_quantity) @@ -16193,49 +16270,49 @@ Line | Function 0260 | Pebwa2Bin(ByRef @bin, _pebwa) } -[1059] i_to_z\PECreateEmpty.ahk { +[1074] i_to_z\PECreateEmpty.ahk { Line | Function 0011 | PECreateEmpty(sFile) } -[1060] i_to_z\Percent.ahk { +[1075] i_to_z\Percent.ahk { Line | Function 0009 | Percent(Number, Percent) } -[1061] i_to_z\PercentChange.ahk { +[1076] i_to_z\PercentChange.ahk { Line | Function 0008 | PercentChange(Number1, Number2) } -[1062] i_to_z\PercentDiff.ahk { +[1077] i_to_z\PercentDiff.ahk { Line | Function 0005 | PercentDiff(Number1, Number2) } -[1063] i_to_z\PerfectPunctuation.ahk { +[1078] i_to_z\PerfectPunctuation.ahk { Line | Function 0011 | Punctuate(str) 0054 | __StringUpper(str) } -[1064] i_to_z\Perl.ahk { +[1079] i_to_z\Perl.ahk { Line | Function } -[1065] i_to_z\Permutate.ahk { +[1080] i_to_z\Permutate.ahk { Line | Function 0004 | Permutate(set,delimeter="",trim="", presc="") } -[1066] i_to_z\Permutation.ahk { +[1081] i_to_z\Permutation.ahk { Line | Function 0012 | perm_NextObj(obj) @@ -16243,7 +16320,7 @@ Line | Function 0049 | ObjDisp(obj) } -[1067] i_to_z\pgArray.ahk { +[1082] i_to_z\pgArray.ahk { Line | Function 0018 | pgArray_Insert( ArrayName, Idx, p1, p2="", p3="", p4="", p5="" ) @@ -16252,7 +16329,7 @@ Line | Function 0072 | pgArray_Swap( ByRef Var1, ByRef Var2 ) } -[1068] i_to_z\PHY.ahk { +[1083] i_to_z\PHY.ahk { Line | Function 0010 | PHY_INIT(w,h,n = 1000) @@ -16276,13 +16353,13 @@ Line | Function 0460 | PHY_EVENT_CORRECT_POSITION(SYS_PHY_OBJ1,EVENT,SYS_PHY_OBJ2) } -[1069] i_to_z\Ping (2).ahk { +[1084] i_to_z\Ping (2).ahk { Line | Function 0003 | Ping(Address="8.8.8.8",Timeout = 1000,ByRef Data = "",Length = 0,ByRef Result = "",ByRef ResultLength = 0) } -[1070] i_to_z\ping.ahk { +[1085] i_to_z\ping.ahk { Line | Function 0007 | ping_(adr, data, timeout) @@ -16292,14 +16369,14 @@ Line | Function 0113 | ping(addr, data="AHK ping test", timeout="500") } -[1071] i_to_z\ping2.ahk { +[1086] i_to_z\ping2.ahk { Line | Function 0007 | GetTextLines(FilePath) 0027 | Ping(SiteOrIP, ByRef AverageVar, ByRef MinimumVar, ByRef MaximumVar, ByRef StatusVar, ByRef LossVar, PingCount = 1, AltIP = 0, Timeout = 0) } -[1072] i_to_z\ping_by_Uberi.ahk { +[1087] i_to_z\ping_by_Uberi.ahk { Line | Function 0063 | Ping(Address,Timeout = 800,ByRef Data = "",Length = 0,ByRef Result = "",ByRef ResultLength = 0) @@ -16308,12 +16385,12 @@ Line | Function 0266 | RoundTripTimeList(AddressList,Timeout = 800) } -[1073] i_to_z\PipeRun.ahk { +[1088] i_to_z\PipeRun.ahk { Line | Function } -[1074] i_to_z\PivotArraySort.ahk { +[1089] i_to_z\PivotArraySort.ahk { Line | Function 0001 | PivotSortArray(Array, Order="A") @@ -16322,26 +16399,26 @@ Line | Function 0110 | SimpleSortArray(Array) } -[1075] i_to_z\PixelGetColorWithinTolerance.ahk { +[1090] i_to_z\PixelGetColorWithinTolerance.ahk { Line | Function 0031 | ColorWithinTolerance(SampleColor, TestColor, Tolerance) 0052 | ColorGetAtXY(X,Y) } -[1076] i_to_z\PixelToHimetric.ahk { +[1091] i_to_z\PixelToHimetric.ahk { Line | Function 0001 | PixelToHimetric(Pixel) } -[1077] i_to_z\PixelToTwip.ahk { +[1092] i_to_z\PixelToTwip.ahk { Line | Function 0001 | PixelToTwip(Pixel) } -[1078] i_to_z\PixPut.ahk { +[1093] i_to_z\PixPut.ahk { Line | Function 0012 | PixPut( Hwnd, ColorRef=0, X=0, Y=0, W=1, H=1, IsChild=0 ) @@ -16351,14 +16428,14 @@ Line | Function 0053 | PixLst( Hwnd ) } -[1079] i_to_z\PlaySound.ahk { +[1094] i_to_z\PlaySound.ahk { Line | Function 0006 | PlaySound(PlaySound,Action) 0061 | PlayBeep(in) } -[1080] i_to_z\PleasantNotify.ahk { +[1095] i_to_z\PleasantNotify.ahk { Line | Function 0001 | PleasantNotify(title, message, pnW=700, pnH=300, position="b r", time=10) @@ -16368,7 +16445,7 @@ Line | Function 0050 | WinMove(hwnd,position) } -[1081] i_to_z\PluginHelper.ahk { +[1096] i_to_z\PluginHelper.ahk { Line | Function 0010 | GrabPlugin(data,tag="",level="1") @@ -16376,25 +16453,25 @@ Line | Function 0045 | CountString(String, Char) } -[1082] i_to_z\plugins.ahk { +[1097] i_to_z\plugins.ahk { Line | Function } -[1083] i_to_z\PngToBase64.ahk { +[1098] i_to_z\PngToBase64.ahk { Line | Function 0006 | PngToBase64(file) 0012 | Base64enc(bin, size) } -[1084] i_to_z\PolynomialRouteSolver.ahk { +[1099] i_to_z\PolynomialRouteSolver.ahk { Line | Function 0011 | PolyRoots(A) } -[1085] i_to_z\PopUpMenuFix.ahk { +[1100] i_to_z\PopUpMenuFix.ahk { Line | Function 0051 | if(X=-100000 and Y = -100000) @@ -16405,13 +16482,13 @@ Line | Function 0117 | PopUpMenuFix_SendKeys() } -[1086] i_to_z\PopupXY.ahk { +[1101] i_to_z\PopupXY.ahk { Line | Function 0067 | PopupXY(p_Parent,p_Child,ByRef p_ChildX,ByRef p_ChildY) } -[1087] i_to_z\portallib.ahk { +[1102] i_to_z\portallib.ahk { Line | Function 0019 | #(byref pwb,id) @@ -16528,7 +16605,7 @@ Line | Function 3312 | getPacsHx(sid,patientIdorChartNo) } -[1088] i_to_z\portallib_cleared.ahk { +[1103] i_to_z\portallib_cleared.ahk { Line | Function 0009 | #(byref pwb,id) @@ -16645,18 +16722,18 @@ Line | Function 3214 | getPacsHx(sid,patientIdorChartNo) } -[1089] i_to_z\PostClick.ahk { +[1104] i_to_z\PostClick.ahk { Line | Function 0001 | PostClick(x, y, class, title) } -[1090] i_to_z\PowerShell.ahk { +[1105] i_to_z\PowerShell.ahk { Line | Function } -[1091] i_to_z\Prefs.ahk { +[1106] i_to_z\Prefs.ahk { Line | Function 0012 | Prefs_init(b,default_func) @@ -16667,7 +16744,7 @@ Line | Function 0123 | Prefs_override(prefs,n1,v1="",n2="",v2="",n3="",v3="",n4="",v4="",n5="",v5="",n6="",v6="") } -[1092] i_to_z\prettyReport.ahk { +[1107] i_to_z\prettyReport.ahk { Line | Function 0026 | parseReport(byref input, returnArr=0) @@ -16695,12 +16772,12 @@ Line | Function 0573 | exclude(ByRef styles, style, start, End) } -[1093] i_to_z\print.ahk { +[1108] i_to_z\print.ahk { Line | Function } -[1094] i_to_z\Printer (2).ahk { +[1109] i_to_z\Printer (2).ahk { Line | Function 0015 | EnumPrinters() @@ -16708,7 +16785,7 @@ Line | Function 0066 | SetDefaultPrinter(PrinterName) } -[1095] i_to_z\Printer.ahk { +[1110] i_to_z\Printer.ahk { Line | Function 0015 | EnumPrinters() @@ -16716,34 +16793,34 @@ Line | Function 0066 | SetDefaultPrinter(PrinterName) } -[1096] i_to_z\printerfunctions.ahk { +[1111] i_to_z\printerfunctions.ahk { Line | Function 0040 | GetDefaultPrinter() 0048 | SetDefaultPrinter(sPrinter) } -[1097] i_to_z\printerfunctionsV102.ahk { +[1112] i_to_z\printerfunctionsV102.ahk { Line | Function 0041 | GetDefaultPrinter() 0047 | SetDefaultPrinter(sPrinter) } -[1098] i_to_z\Process.ahk { +[1113] i_to_z\Process.ahk { Line | Function 0016 | Process_GetImageFileName(nPid) 0058 | Process_GetParentPid(nPid) } -[1099] i_to_z\processExist.ahk { +[1114] i_to_z\processExist.ahk { Line | Function 0001 | processExist(im) } -[1100] i_to_z\ProcessInfo.ahk { +[1115] i_to_z\ProcessInfo.ahk { Line | Function 0001 | GetCurrentProcessID() @@ -16755,13 +16832,13 @@ Line | Function 0051 | GetModuleFileNameEx(ProcessID) } -[1101] i_to_z\ProcessList.ahk { +[1116] i_to_z\ProcessList.ahk { Line | Function 0005 | ProcessList() } -[1102] i_to_z\ProcessMem.ahk { +[1117] i_to_z\ProcessMem.ahk { Line | Function 0002 | getProcessHandle(pid,mode=0x001F0FFF) @@ -16772,13 +16849,13 @@ Line | Function 0045 | writeProcMem(pid,addr,val) } -[1103] i_to_z\processPriority.ahk { +[1118] i_to_z\processPriority.ahk { Line | Function 0001 | processPriority(PID) } -[1104] i_to_z\ProfileHandler.ahk { +[1119] i_to_z\ProfileHandler.ahk { Line | Function 0105 | SetPreLoadCallback(callback) @@ -16798,7 +16875,7 @@ Line | Function 0305 | ObjFullyClone(obj) } -[1105] i_to_z\Progress.ahk { +[1120] i_to_z\Progress.ahk { Line | Function 0008 | PB_GetRange(PB) @@ -16811,12 +16888,12 @@ Line | Function 0144 | PB_SetBkColor(PB, Color) } -[1106] i_to_z\progressBox.ahk { +[1121] i_to_z\progressBox.ahk { Line | Function } -[1107] i_to_z\Progress_Lib.ahk { +[1122] i_to_z\Progress_Lib.ahk { Line | Function 0015 | Progress_Add(Gui,Position,Range="0-100",Value=0,Text="",Vertical=0) @@ -16831,7 +16908,7 @@ Line | Function 0250 | Progress_CopyFiles(Gui,Position,SourceFolder,DestFolder,Pattern="",Sleep=10) } -[1108] i_to_z\Property.ahk { +[1123] i_to_z\Property.ahk { Line | Function 0041 | Property_Add(HParent, X=0, Y=0, W=200, H=100, Style="", Handler="") @@ -16857,7 +16934,7 @@ Line | Function 0573 | Property_initSheet(hCtrl) } -[1109] i_to_z\PropertyWin.ahk { +[1124] i_to_z\PropertyWin.ahk { Line | Function 0029 | PropertyWinActivateListView(ListView) @@ -16934,14 +17011,14 @@ Line | Function 1529 | if(HwndFrom = PropertyWinHeaderHwnd) } -[1110] i_to_z\psTool.ahk { +[1125] i_to_z\psTool.ahk { Line | Function 0001 | psTool_get() 0016 | psTool_set(tool) } -[1111] i_to_z\PS_BMP.ahk { +[1126] i_to_z\PS_BMP.ahk { Line | Function 0052 | LoadBMPFromFile(InputPath) @@ -16964,7 +17041,7 @@ Line | Function 0834 | _Flip(ByRef FrameObj,Width,Height) } -[1112] i_to_z\PS_ExceptionHandler.ahk { +[1127] i_to_z\PS_ExceptionHandler.ahk { Line | Function 0088 | ExceptionErrorDlg(Content) @@ -16973,7 +17050,7 @@ Line | Function 0141 | GetSourceCode() } -[1113] i_to_z\PS_GIF.ahk { +[1128] i_to_z\PS_GIF.ahk { Line | Function 0022 | LoadGIFFromFile(InputPath) @@ -17012,7 +17089,7 @@ Line | Function 1245 | _InsertRC(ByRef FrameObj,PalEntry,Top,Bottom,Left,Right) } -[1114] i_to_z\PS_PAL.ahk { +[1129] i_to_z\PS_PAL.ahk { Line | Function 0022 | ImportPaletteFromPalObj(PalObj) @@ -17021,7 +17098,7 @@ Line | Function 0299 | GetPaletteObj() } -[1115] i_to_z\PS_Quantization.ahk { +[1130] i_to_z\PS_Quantization.ahk { Line | Function 0028 | __New() @@ -17044,7 +17121,7 @@ Line | Function 0423 | Quantize(CountOfPaletteEntries) } -[1116] i_to_z\PUM_API.ahk { +[1131] i_to_z\PUM_API.ahk { Line | Function 0009 | Err( msg ) @@ -17122,7 +17199,7 @@ Line | Function 0522 | _msgMonitor( state ) } -[1117] i_to_z\QA.ahk { +[1132] i_to_z\QA.ahk { Line | Function 0001 | QA_Create(ByRef arr, capacity="4") @@ -17188,7 +17265,7 @@ Line | Function 0588 | QA_PerfTest_Sort(length=500, testCnt=5) } -[1118] i_to_z\Qhtm.ahk { +[1133] i_to_z\Qhtm.ahk { Line | Function 0040 | QHTM_Add(Hwnd, X, Y, W, H, Text="", Style="", Handler="", DllPath="") @@ -17224,7 +17301,7 @@ Line | Function 0627 | QHTM_strAtAdr(adr) } -[1119] i_to_z\QMsgBox.ahk { +[1134] i_to_z\QMsgBox.ahk { Line | Function 0001 | QMsgBoxF( title = "", msg = "", sBtns = "OK", icon = "", centered = True, modal = False ) @@ -17240,7 +17317,7 @@ Line | Function 0163 | Show( pGuis = "" ) } -[1120] i_to_z\QMsgBox_foos.ahk { +[1135] i_to_z\QMsgBox_foos.ahk { Line | Function 0001 | HBITMAPfromHICON( hIcon ) @@ -17255,13 +17332,13 @@ Line | Function 0099 | IsInteger( var ) } -[1121] i_to_z\QPX.ahk { +[1136] i_to_z\QPX.ahk { Line | Function 0001 | QPX( N=0 ) } -[1122] i_to_z\Query.ahk { +[1137] i_to_z\Query.ahk { Line | Function 0016 | Query_Interface(pobj, IID = "", bRaw = "") @@ -17269,43 +17346,43 @@ Line | Function 0027 | Query_String4Guid(pGUID) } -[1123] i_to_z\QueryDosDevice.ahk { +[1138] i_to_z\QueryDosDevice.ahk { Line | Function 0010 | QueryDosDevice(DeviceName) } -[1124] i_to_z\QueryRecycleBin.ahk { +[1139] i_to_z\QueryRecycleBin.ahk { Line | Function } -[1125] i_to_z\QueryTokenPrivileges.ahk { +[1140] i_to_z\QueryTokenPrivileges.ahk { Line | Function 0024 | QueryTokenPrivileges(hToken) } -[1126] i_to_z\quick_sort_array_no_recursion.ahk { +[1141] i_to_z\quick_sort_array_no_recursion.ahk { Line | Function 0021 | q_sort(ByRef input,Dim) 0077 | SwapElement(ByRef arr,left,right) } -[1127] i_to_z\Quoted String Replace.ahk { +[1142] i_to_z\Quoted String Replace.ahk { Line | Function 0011 | StringCodeReplace(String,RegularExpression,Replacement = "",ByRef OutputCount = "") 0019 | StringLiteralReplace(String,RegularExpression,Replacement = "",ByRef OutputCount = "") } -[1128] i_to_z\RadianToDegree.ahk { +[1143] i_to_z\RadianToDegree.ahk { Line | Function } -[1129] i_to_z\RaGrid.ahk { +[1144] i_to_z\RaGrid.ahk { Line | Function 0046 | RG_Add(HParent,X,Y,W,H, Style="", Handler="", DllPath="") @@ -17355,31 +17432,31 @@ Line | Function 0837 | RaGrid_add2Form(hParent, Txt, Opt) } -[1130] i_to_z\rand.ahk { +[1145] i_to_z\rand.ahk { Line | Function 0001 | rand(lowerBound,upperBound) } -[1131] i_to_z\RandBezier.ahk { +[1146] i_to_z\RandBezier.ahk { Line | Function 0001 | RandomBezier( X0, Y0, Xf, Yf, O="" ) } -[1132] i_to_z\Random jock StrX() Parsing.ahk { +[1147] i_to_z\Random jock StrX() Parsing.ahk { Line | Function 0062 | StrX( H, BS="",BO=0,BT=1, ES="",EO=0,ET=1, ByRef N="" ) } -[1133] i_to_z\RandomBezier.ahk { +[1148] i_to_z\RandomBezier.ahk { Line | Function 0034 | RandomBezier( X0, Y0, Xf, Yf, O="" ) } -[1134] i_to_z\randomdotorg.ahk { +[1149] i_to_z\randomdotorg.ahk { Line | Function 0058 | randomdotorg_integer(num,min,max,base="10",rnd="new") @@ -17398,77 +17475,77 @@ Line | Function 0951 | Bin2Hex(ByRef @hex, ByRef @bin, _byteNb=0) } -[1135] i_to_z\RandomEx.ahk { +[1150] i_to_z\RandomEx.ahk { Line | Function } -[1136] i_to_z\RandomiseArray.ahk { +[1151] i_to_z\RandomiseArray.ahk { Line | Function 0001 | randomiseArray(byRef a) } -[1137] i_to_z\RandomName(2).ahk { +[1152] i_to_z\RandomName(2).ahk { Line | Function 0001 | RandomName(MinLength=4, MaxLength=0) } -[1138] i_to_z\RandomName.ahk { +[1153] i_to_z\RandomName.ahk { Line | Function 0004 | RandomName(MinLength=4, MaxLength=0) } -[1139] { +[1154] { Line | Function } -[1140] i_to_z\RandomUniqNum.ahk { +[1155] i_to_z\RandomUniqNum.ahk { Line | Function 0003 | RandomUniqNum(Min,Max,N) } -[1141] i_to_z\RandomVar.ahk { +[1156] i_to_z\RandomVar.ahk { Line | Function 0034 | RandomVar(p_MinLength,p_MaxLength,p_Type="",p_MinAsc=32,p_MaxAsc=126) } -[1142] i_to_z\RandSleep.ahk { +[1157] i_to_z\RandSleep.ahk { Line | Function 0001 | SleepRand(min,max) } -[1143] i_to_z\randStr.ahk { +[1158] i_to_z\randStr.ahk { Line | Function 0016 | randStr(lowerBound,upperBound,mode=1) } -[1144] i_to_z\range.ahk { +[1159] i_to_z\range.ahk { Line | Function 0022 | _RangeNewEnum(r) } -[1145] i_to_z\RapidHotkey (2).ahk { +[1160] i_to_z\RapidHotkey (2).ahk { Line | Function } -[1146] i_to_z\RapidHotkey.ahk { +[1161] i_to_z\RapidHotkey.ahk { Line | Function 0973 | RapidHotkey(keystroke, times="2", delay=0.2, IsLabel=0) 1035 | Morse(timeout = 400) } -[1147] i_to_z\RAW_POS_interpretation_for_QL_Swath_KMLs.ahk { +[1162] i_to_z\RAW_POS_interpretation_for_QL_Swath_KMLs.ahk { Line | Function 0004 | GPS_UTM2LatLon(UTMEast, UTMNorth, Hemisphere, Longitude_Zone) @@ -17485,58 +17562,58 @@ Line | Function 0388 | Bilinear_Interpolation_Point(xLeft,xRight,yLower,X,Y,yUpper,valueUL,valueLL,valueUR,valueLR) } -[1148] i_to_z\RA_StringSort.ahk { +[1163] i_to_z\RA_StringSort.ahk { Line | Function 0003 | RA_StringSort(as) } -[1149] i_to_z\ReadFileLine.ahk { +[1164] i_to_z\ReadFileLine.ahk { Line | Function } -[1150] i_to_z\readHotkeys.ahk { +[1165] i_to_z\readHotkeys.ahk { Line | Function 0023 | if(retObj) } -[1151] i_to_z\ReadIni.ahk { +[1166] i_to_z\ReadIni.ahk { Line | Function } -[1152] i_to_z\ReadLocalizedString.ahk { +[1167] i_to_z\ReadLocalizedString.ahk { Line | Function } -[1153] i_to_z\ReadMemory.ahk { +[1168] i_to_z\ReadMemory.ahk { Line | Function 0013 | ReadMemory(MADDRESS=0,PROGRAM="",BYTES=4) } -[1154] i_to_z\ReadMemory_Str.ahk { +[1169] i_to_z\ReadMemory_Str.ahk { Line | Function 0009 | ReadMemory_Str(MADDRESS=0, PROGRAM = "", length = 0 , terminator = "") } -[1155] { +[1170] { Line | Function 0001 | ReadRawMemory(MADDRESS=0,PROGRAM="", byref Buffer="", BYTES=4) } -[1156] i_to_z\readResource.ahk { +[1171] i_to_z\readResource.ahk { Line | Function 0001 | readResource(ByRef Var, Name, Type="#10") } -[1157] i_to_z\Rebar.ahk { +[1172] i_to_z\Rebar.ahk { Line | Function 0039 | Rebar_Add(hGui, Style="", hIL="", Pos="", Handler="") @@ -17565,7 +17642,7 @@ Line | Function 0712 | Rebar_mfree(pAdr) } -[1158] i_to_z\RecordSetADO.ahk { +[1173] i_to_z\RecordSetADO.ahk { Line | Function 0011 | __New(sql, adoConnection, editable = false) @@ -17582,7 +17659,7 @@ Line | Function 0095 | __Get(propertyName) } -[1159] i_to_z\RecordSetMySQL.ahk { +[1174] i_to_z\RecordSetMySQL.ahk { Line | Function 0016 | __New(db, requestResult) @@ -17594,7 +17671,7 @@ Line | Function 0097 | Close() } -[1160] i_to_z\RecordSetSqlLite.ahk { +[1175] i_to_z\RecordSetSqlLite.ahk { Line | Function 0016 | __New(db, query) @@ -17607,30 +17684,30 @@ Line | Function 0146 | Close() } -[1161] i_to_z\RedrawDB.ahk { +[1176] i_to_z\RedrawDB.ahk { Line | Function 0016 | RedrawDB(hWnd) } -[1162] i_to_z\RedrawWindow.ahk { +[1177] i_to_z\RedrawWindow.ahk { Line | Function } -[1163] i_to_z\ReduceWorkingSetSize.ahk { +[1178] i_to_z\ReduceWorkingSetSize.ahk { Line | Function 0004 | ReduceWorkingSetSize() } -[1164] i_to_z\ReFormatTime.ahk { +[1179] i_to_z\ReFormatTime.ahk { Line | Function 0002 | ReFormatTime( Time, Format, Delimiters ) } -[1165] i_to_z\REG to VBS.ahk { +[1180] i_to_z\REG to VBS.ahk { Line | Function 0029 | Convert_REG(_SourceFile) @@ -17644,7 +17721,7 @@ Line | Function 0276 | Compile_Statement(_HKEY, _Key, _Name, _Type, _Value) } -[1166] i_to_z\RegEasy.ahk { +[1181] i_to_z\RegEasy.ahk { Line | Function 0041 | RegWriteUser(User, ValueType, KeyName , ValueName="", Value="") @@ -17653,41 +17730,41 @@ Line | Function 0065 | GetUserSID(UserName) } -[1167] i_to_z\RegEx.ahk { +[1182] i_to_z\RegEx.ahk { Line | Function 0126 | RegEx_Help(Function) } -[1168] i_to_z\RegExDebug.ahk { +[1183] i_to_z\RegExDebug.ahk { Line | Function 0002 | RegExDebug(fnMatch,fnCalloutNumber,fnFoundPos,fnHaystack,fnNeedleRegEx) } -[1169] i_to_z\RegExFileSearch.ahk { +[1184] i_to_z\RegExFileSearch.ahk { Line | Function } -[1170] i_to_z\regExMatchI.ahk { +[1185] i_to_z\regExMatchI.ahk { Line | Function 0001 | regExMatchI(haystack,needleRegEx,byref unquotedOutputVar="",startingPosition=1) } -[1171] i_to_z\regExReplaceI.ahk { +[1186] i_to_z\regExReplaceI.ahk { Line | Function 0001 | regExReplaceI(haystack,needleRegEx,replacement="",byref outputVarCount="",limit=-1,startingPosition=1) } -[1172] i_to_z\RegExSort.ahk { +[1187] i_to_z\RegExSort.ahk { Line | Function } -[1173] { +[1188] { Line | Function 0077 | regionGetColor(x, y, w, h, hwnd=0) @@ -17709,7 +17786,7 @@ Line | Function 0228 | PrintWindow(hwnd, hdc, Flags=0) } -[1174] i_to_z\RegionWaitChange.ahk { +[1189] i_to_z\RegionWaitChange.ahk { Line | Function 0019 | RegionWaitChange(x, y, w = 1, h = 1, t = "", f = 500, s = 67108864, inv = false) @@ -17717,35 +17794,35 @@ Line | Function 0048 | DCCBitmapHash(hwnd, x, y, w = 1, h = 1, s = 67108864) } -[1175] i_to_z\RegisterSyncCallback.ahk { +[1190] i_to_z\RegisterSyncCallback.ahk { Line | Function 0093 | RegisterSyncCallback_Msg(wParam, lParam) } -[1176] i_to_z\releaseKeyspSend.ahk { +[1191] i_to_z\releaseKeyspSend.ahk { Line | Function 0005 | releaseKeyspSend() } -[1177] i_to_z\reloadAsAdmin.ahk { +[1192] i_to_z\reloadAsAdmin.ahk { Line | Function 0065 | _reloadAsAdmin_Error(e,force) } -[1178] i_to_z\ReloadScriptOnEdit.ahk { +[1193] i_to_z\ReloadScriptOnEdit.ahk { Line | Function } -[1179] i_to_z\RelToAbs.ahk { +[1194] i_to_z\RelToAbs.ahk { Line | Function } -[1180] i_to_z\RemoteBuf.ahk { +[1195] i_to_z\RemoteBuf.ahk { Line | Function 0028 | RemoteBuf_Close(ByRef H) @@ -17753,7 +17830,7 @@ Line | Function 0289 | RemoteBuf_SystemMessage(p_MessageNbr) } -[1181] i_to_z\RemoteObj.ahk { +[1196] i_to_z\RemoteObj.ahk { Line | Function 0003 | __New(Obj, Address) @@ -17764,7 +17841,7 @@ Line | Function 0053 | RemoteObjSend(Addr, Obj) } -[1182] i_to_z\RemoteResource.ahk { +[1197] i_to_z\RemoteResource.ahk { Line | Function 0023 | remoteResource(Resource, URL="", Directory="", TT="Display", MD5Sum="") @@ -17772,7 +17849,7 @@ Line | Function 0127 | URLStatus(URL="") } -[1183] i_to_z\RemoteScintilla.ahk { +[1198] i_to_z\RemoteScintilla.ahk { Line | Function 0018 | __New(hwnd) @@ -17814,131 +17891,131 @@ Line | Function 0228 | Do(command) } -[1184] i_to_z\RemoveDuplicates.ahk { +[1199] i_to_z\RemoveDuplicates.ahk { Line | Function 0001 | RemoveDuplicates(list) } -[1185] i_to_z\RemoveIllegalFilenameCharacters.ahk { +[1200] i_to_z\RemoveIllegalFilenameCharacters.ahk { Line | Function 0001 | RemoveIllegalFilenameCharacters(fnText) } -[1186] i_to_z\rename.ahk { +[1201] i_to_z\rename.ahk { Line | Function } -[1187] i_to_z\rename_script.ahk { +[1202] i_to_z\rename_script.ahk { Line | Function } -[1188] i_to_z\ReplaceHtmlDecodedChars.ahk { +[1203] i_to_z\ReplaceHtmlDecodedChars.ahk { Line | Function 0001 | ReplaceHtmlDecodedChars(fnText) } -[1189] i_to_z\ReplaceHtmlEncodedChars.ahk { +[1204] i_to_z\ReplaceHtmlEncodedChars.ahk { Line | Function 0001 | ReplaceHtmlEncodedChars(fnText) } -[1190] i_to_z\ReplaceIllegalFilenameCharacters.ahk { +[1205] i_to_z\ReplaceIllegalFilenameCharacters.ahk { Line | Function 0001 | ReplaceIllegalFilenameCharacters(fnText) } -[1191] i_to_z\replaceList.ahk { +[1206] i_to_z\replaceList.ahk { Line | Function 0003 | replaceList(def, opt) } -[1192] i_to_z\ReplaceSystemVariables.ahk { +[1207] i_to_z\ReplaceSystemVariables.ahk { Line | Function 0001 | ReplaceSystemVariables(ByRef fnText) } -[1193] i_to_z\ReplaceUrlEncodedChars.ahk { +[1208] i_to_z\ReplaceUrlEncodedChars.ahk { Line | Function 0001 | ReplaceUrlEncodedChars(fnText) } -[1194] i_to_z\ReplaceUserVariables.ahk { +[1209] i_to_z\ReplaceUserVariables.ahk { Line | Function 0001 | ReplaceUserVariables(ByRef fnText) } -[1195] i_to_z\Replicate.ahk { +[1210] i_to_z\Replicate.ahk { Line | Function 0001 | Replicate(Str,Count) } -[1196] i_to_z\ResDelete.ahk { +[1211] i_to_z\ResDelete.ahk { Line | Function } -[1197] i_to_z\ResDllCreate.ahk { +[1212] i_to_z\ResDllCreate.ahk { Line | Function 0001 | ResDllCreate(path) } -[1198] i_to_z\ResExist.ahk { +[1213] i_to_z\ResExist.ahk { Line | Function } -[1199] i_to_z\ResGet.ahk { +[1214] i_to_z\ResGet.ahk { Line | Function } -[1200] i_to_z\ResizeandConvert_ICO.ahk { +[1215] i_to_z\ResizeandConvert_ICO.ahk { Line | Function 0031 | ResConICO(ImageArray, NewName, NewDir) } -[1201] i_to_z\ResolveHostname.ahk { +[1216] i_to_z\ResolveHostname.ahk { Line | Function 0005 | ResolveHostname(hostname) } -[1202] i_to_z\ResourceID.ahk { +[1217] i_to_z\ResourceID.ahk { Line | Function 0002 | ResourceIdOfIcon(Filename, IconIndex) 0028 | ResourceIdOfIcon_EnumIconResources(hModule, lpszType, lpszName, lParam) } -[1203] i_to_z\ResourceIDOfIcon.ahk { +[1218] i_to_z\ResourceIDOfIcon.ahk { Line | Function 0001 | ResourceIdOfIcon(Filename, IconIndex) 0024 | _EnumIconResources(hModule, lpszType, lpszName, lParam) } -[1204] i_to_z\ResourceIndexToId.ahk { +[1219] i_to_z\ResourceIndexToId.ahk { Line | Function 0001 | ResourceIndexToId(aModule, aType, aIndex) 0012 | ResourceIndexToIdEnumProc(hModule, lpszType, lpszName, lParam) } -[1205] i_to_z\ResourceMonitor.ahk { +[1220] i_to_z\ResourceMonitor.ahk { Line | Function 0016 | ResourceMonitor_init() @@ -17953,58 +18030,58 @@ Line | Function 0134 | ResourceMonitor_getText() } -[1206] i_to_z\ResourHackIcons.ahk { +[1221] i_to_z\ResourHackIcons.ahk { Line | Function 0001 | ResourHackIcons(dotIcoFile) } -[1207] i_to_z\ResPut.ahk { +[1222] i_to_z\ResPut.ahk { Line | Function } -[1208] i_to_z\ResPutFile.ahk { +[1223] i_to_z\ResPutFile.ahk { Line | Function } -[1209] i_to_z\RestartWindowsExplorer.ahk { +[1224] i_to_z\RestartWindowsExplorer.ahk { Line | Function 0004 | RestartWindowsExplorer() } -[1210] i_to_z\ResumeProcess.ahk { +[1225] i_to_z\ResumeProcess.ahk { Line | Function 0012 | ResumeProcess(hProcess) } -[1211] { +[1226] { Line | Function 0008 | reverseArray(Byref a) } -[1212] i_to_z\ReverseBytes.ahk { +[1227] i_to_z\ReverseBytes.ahk { Line | Function } -[1213] i_to_z\ReverseLookup.ahk { +[1228] i_to_z\ReverseLookup.ahk { Line | Function 0005 | ReverseLookup(ipaddr) } -[1214] i_to_z\ReverseSign.ahk { +[1229] i_to_z\ReverseSign.ahk { Line | Function 0001 | ReverseSign(value) } -[1215] i_to_z\rgbToHex.ahk { +[1230] i_to_z\rgbToHex.ahk { Line | Function 0003 | rgbToHex(s, d = "") @@ -18012,7 +18089,7 @@ Line | Function 0019 | CheckHexC(s, d = "") } -[1216] i_to_z\RI.ahk { +[1231] i_to_z\RI.ahk { Line | Function 0035 | RI_GetDeviceList() @@ -18026,7 +18103,7 @@ Line | Function 0318 | RI_RIDEV_ForType(DevType) } -[1217] i_to_z\Ribbon.ahk { +[1232] i_to_z\Ribbon.ahk { Line | Function 0004 | Ribbon() @@ -18040,7 +18117,7 @@ Line | Function 0122 | MyAnsiToUnicode(ByRef wString, sString, nSize = "") } -[1218] i_to_z\RichEdit OleCallback.ahk { +[1233] i_to_z\RichEdit OleCallback.ahk { Line | Function 0017 | RE_SetOleCallback(HRE) @@ -18060,7 +18137,7 @@ Line | Function 0159 | IREOleCB_GetContextMenu(IREOleCB, SelType, OleObj, CharRange, HMENU) } -[1219] { +[1234] { Line | Function 0002 | RichEdit_ATOU( ByRef Unicode, Ansi ) @@ -18116,7 +18193,7 @@ Line | Function 0788 | RichEdit_StreamOut(hCtrl, ByRef Out, Flags="RTF") } -[1220] i_to_z\RichEdit.ahk { +[1235] i_to_z\RichEdit.ahk { Line | Function 0050 | RichEdit_Add(HParent, X="", Y="", W="", H="", Style="", Text="") @@ -18179,7 +18256,7 @@ Line | Function 2067 | RichEdit_editStreamCallBack(dwCookie, pbBuff, cb, pcb) } -[1221] i_to_z\RichEdit_OLECallback.ahk { +[1236] i_to_z\RichEdit_OLECallback.ahk { Line | Function 0042 | RN_SetOLECallback(P_HWND) @@ -18200,7 +18277,7 @@ Line | Function 0441 | RN_InsertObject(HRE, FilePath) } -[1222] i_to_z\RIni.ahk { +[1237] i_to_z\RIni.ahk { Line | Function 0024 | RIni_Create(RVar, Correct_Errors=1) @@ -18254,7 +18331,7 @@ Line | Function 2208 | RIni_CalcMD5(_String) } -[1223] i_to_z\RisImpax.ahk { +[1238] i_to_z\RisImpax.ahk { Line | Function 0014 | RisImpaxMsgProtocol() @@ -18323,7 +18400,7 @@ Line | Function 1337 | if(caretToEnd) } -[1224] i_to_z\RMO.ahk { +[1239] i_to_z\RMO.ahk { Line | Function 0071 | RMO_Free(RMO) @@ -18331,35 +18408,35 @@ Line | Function 0147 | RMO_CheckParams(RMO, Offset, Size) } -[1225] i_to_z\RoboCopy.ahk { +[1240] i_to_z\RoboCopy.ahk { Line | Function } -[1226] i_to_z\RomanNumbers.ahk { +[1241] i_to_z\RomanNumbers.ahk { Line | Function 0034 | Dec2Roman(p_Number,p_AllowNegative=false) 0052 | Roman2Dec(p_RomanStr,p_AllowNegative=false) } -[1227] i_to_z\round_near.ahk { +[1242] i_to_z\round_near.ahk { Line | Function 0001 | round_near(n,r) } -[1228] i_to_z\RPath.ahk { +[1243] i_to_z\RPath.ahk { Line | Function } -[1229] i_to_z\RSHash.ahk { +[1244] i_to_z\RSHash.ahk { Line | Function } -[1230] i_to_z\rtf.ahk { +[1245] i_to_z\rtf.ahk { Line | Function 0013 | RTF_Table(Rows, Cols, ColWidths) @@ -18368,7 +18445,7 @@ Line | Function 0052 | RTF(Text) } -[1231] i_to_z\RTV.ahk { +[1246] i_to_z\RTV.ahk { Line | Function 0021 | TV_Initialise( hwParent, hwTV ) @@ -18383,41 +18460,41 @@ Line | Function 0367 | TV_expandEnvVars(ppath) } -[1232] i_to_z\RunAsAdmin.ahk { +[1247] i_to_z\RunAsAdmin.ahk { Line | Function } -[1233] i_to_z\RunFileDlg.ahk { +[1248] i_to_z\RunFileDlg.ahk { Line | Function } -[1234] { +[1249] { Line | Function 0017 | runRemoteScript() } -[1235] i_to_z\RXMS.ahk { +[1250] i_to_z\RXMS.ahk { Line | Function 0022 | RXMS(ByRef _String, _Needle, _Options="") 0211 | CSV(Text, Delimiter=",", Literal="""") } -[1236] i_to_z\SaveFile.ahk { +[1251] i_to_z\SaveFile.ahk { Line | Function } -[1237] i_to_z\SaveHICONtoFile.ahk { +[1252] i_to_z\SaveHICONtoFile.ahk { Line | Function 0001 | SaveHICONtoFile( hicon, iconFile ) } -[1238] i_to_z\SB (2).ahk { +[1253] i_to_z\SB (2).ahk { Line | Function 0027 | SB_GetPos(hwnd, Which="V") @@ -18433,13 +18510,13 @@ Line | Function 0083 | SB_Bottom(hwnd, Which="V") } -[1239] i_to_z\SB.ahk { +[1254] i_to_z\SB.ahk { Line | Function 0005 | SB_SetProgress(Value=0,Seg=1,Ops="") } -[1240] i_to_z\SBAR.ahk { +[1255] i_to_z\SBAR.ahk { Line | Function 0236 | SBAR_ColorName2RGB(p_ColorName) @@ -18462,30 +18539,30 @@ Line | Function 2157 | SBAR_SystemMessage(p_MessageNbr) } -[1241] i_to_z\SBAR_AVI.ahk { +[1256] i_to_z\SBAR_AVI.ahk { Line | Function 0619 | SBAR_AVI_IsPlaying(hAVI) 0779 | SBAR_AVI_Stop(hAVI) } -[1242] i_to_z\SBAR_ProgressBar.ahk { +[1257] i_to_z\SBAR_ProgressBar.ahk { Line | Function } -[1243] i_to_z\SBAR_SetTextEx.ahk { +[1258] i_to_z\SBAR_SetTextEx.ahk { Line | Function } -[1244] i_to_z\SB_SETPROGRESS.ahk { +[1259] i_to_z\SB_SETPROGRESS.ahk { Line | Function 0005 | SB_SetProgress(Value=0,Seg=1,Ops="") } -[1245] i_to_z\sc.ahk { +[1260] i_to_z\sc.ahk { Line | Function 0029 | sc_CaptureScreen(aRect = 0, bCursor = False, sFile = "", nQuality = "") @@ -18499,7 +18576,7 @@ Line | Function 0227 | sc_Ansi4Unicode(pString) } -[1246] i_to_z\SC2_MemoryAndGeneralFunctions.ahk { +[1261] i_to_z\SC2_MemoryAndGeneralFunctions.ahk { Line | Function 0472 | IsInControlGroup(group, unitIndex) @@ -18579,7 +18656,7 @@ Line | Function 3896 | getCurrentHpAndShields(unit, byRef result) } -[1247] i_to_z\Scheduler.ahk { +[1262] i_to_z\Scheduler.ahk { Line | Function 0043 | Scheduler_Create( v, bForce=false ) @@ -18593,12 +18670,12 @@ Line | Function 0242 | Scheduler_run(Cmd, Dir = "", Skip=0, Input = "", Stream = "") } -[1248] i_to_z\SCI.ahk { +[1263] i_to_z\SCI.ahk { Line | Function } -[1249] i_to_z\ScINTILLA.ahk { +[1264] i_to_z\ScINTILLA.ahk { Line | Function 0073 | SCI_Add(hParent, x=5, y=15, w=390, h=270, Styles="", MsgHandler="", DllPath="") @@ -18661,7 +18738,7 @@ Line | Function 2814 | keywords(x) } -[1250] i_to_z\Scintilla_CharWordPos.ahk { +[1265] i_to_z\Scintilla_CharWordPos.ahk { Line | Function 0022 | MCode_Bin2Hex(addr, len) @@ -18670,13 +18747,13 @@ Line | Function 0089 | WordToCharPos(ByRef str, ByRef start, ByRef end="", swap=0) } -[1251] i_to_z\SciTEOutput.ahk { +[1266] i_to_z\SciTEOutput.ahk { Line | Function 0003 | SciTEOutput(fnText = "",fnClear = "1",fnLineBreak = "1") } -[1252] i_to_z\SciX.ahk { +[1267] i_to_z\SciX.ahk { Line | Function 0003 | GetSciTEInstance() @@ -18718,13 +18795,13 @@ Line | Function 0366 | Sci_LineHistory(bForward, iRecordMode = 0) } -[1253] i_to_z\scriptCompile.ahk { +[1268] i_to_z\scriptCompile.ahk { Line | Function 0032 | scriptCompile(c_SourceFile, c_DestFile, c_SourceIcon="", c_IncludeDir="", c_IncludeDirTarget="") } -[1254] i_to_z\scriptlib.ahk { +[1269] i_to_z\scriptlib.ahk { Line | Function 0136 | GetAllKVFromFile(file_path) @@ -18771,13 +18848,13 @@ Line | Function 1692 | StrPutVar(Str, ByRef Var, Enc = "") } -[1255] { +[1270] { Line | Function 0023 | ScriptMem() } -[1256] i_to_z\ScriptParser.ahk { +[1271] i_to_z\ScriptParser.ahk { Line | Function 0002 | PreprocessScript(ByRef ScriptText, AhkScript, ExtraFiles, FileList="", FirstScriptDir="", Options="", iOption=0) @@ -18789,20 +18866,20 @@ Line | Function 0225 | AHKType(exeName) } -[1257] i_to_z\ScriptStruct.ahk { +[1272] i_to_z\ScriptStruct.ahk { Line | Function 0001 | ScriptStruct() } -[1258] i_to_z\Scrollable GUI.ahk { +[1273] i_to_z\Scrollable GUI.ahk { Line | Function 0036 | UpdateScrollBars(GuiNum, GuiWidth, GuiHeight) 0090 | OnScroll(wParam, lParam, msg, hwnd) } -[1259] i_to_z\ScrollBar.ahk { +[1274] i_to_z\ScrollBar.ahk { Line | Function 0037 | ScrollBar_Add(HParent, X, Y, W="", H="", Handler="", o1="", o2="", o3="", o4="", o5="") @@ -18815,7 +18892,7 @@ Line | Function 0218 | ScrollBar_onScroll(Wparam, Lparam, Msg) } -[1260] i_to_z\Scroller.ahk { +[1275] i_to_z\Scroller.ahk { Line | Function 0012 | Scroller_Init() @@ -18824,18 +18901,18 @@ Line | Function 0114 | Scroller_onScroll(WParam, LParam, Msg, Hwnd) } -[1261] i_to_z\ScrollWindow.ahk { +[1276] i_to_z\ScrollWindow.ahk { Line | Function } -[1262] i_to_z\SecondsToHHMMSS.ahk { +[1277] i_to_z\SecondsToHHMMSS.ahk { Line | Function 0054 | SecondsToHHMMSS(p_Seconds,p_MinimumSize=4) } -[1263] i_to_z\SecureHash.ahk { +[1278] i_to_z\SecureHash.ahk { Line | Function 0070 | TEA(ByRef y,ByRef z, k0,k1,k2,k3) @@ -18848,18 +18925,18 @@ Line | Function 0203 | HexRead(file, ByRef data, n=0, offset=0) } -[1264] i_to_z\SelectObject.ahk { +[1279] i_to_z\SelectObject.ahk { Line | Function 0004 | SelectObject(hDC, hObject) } -[1265] i_to_z\selfCompile.ahk { +[1280] i_to_z\selfCompile.ahk { Line | Function } -[1266] i_to_z\semver.ahk { +[1281] i_to_z\semver.ahk { Line | Function 0001 | semver_validate(version) @@ -18867,34 +18944,39 @@ Line | Function 0009 | semver_compare(version1, version2) } -[1267] i_to_z\SendEmail.ahk { +[1282] i_to_z\SendEmail.ahk { Line | Function } -[1268] i_to_z\SendGUI.ahk { +[1283] i_to_z\SendGUI.ahk { Line | Function } -[1269] i_to_z\sendmail.ahk { +[1284] i_to_z\sendmail.ahk { Line | Function 0004 | SendMail(SMTPServer, SMTPPort, USESSL, Sender, Receiver, Subject, TextBody, Attachments="", SendUserName="username", SendPassword="password", SendUsing=2, SMTPAuthenticate=1, SMTPTimeout=60, ReplyTo=FALSE) } -[1270] i_to_z\SendMSG.ahk { +[1285] { + +Line | Function + +} +[1286] i_to_z\SendMSG.ahk { Line | Function 0001 | SendMSG(Msg,wParam="",byref lParam="",Control="",WinTitle="",WinText="",ExcludeTitle="",ExcludeText="",Timeout="") } -[1271] i_to_z\SerDes.ahk { +[1287] i_to_z\SerDes.ahk { Line | Function } -[1272] i_to_z\Serial.ahk { +[1288] i_to_z\Serial.ahk { Line | Function 0005 | Serial_Initialize(SERIAL_Settings) @@ -18904,12 +18986,12 @@ Line | Function 0204 | Serial_Read_Raw(SERIAL_FileHandle, Num_Bytes, mode = "",byref Bytes_Received = "") } -[1273] i_to_z\serverTime.ahk { +[1289] i_to_z\serverTime.ahk { Line | Function } -[1274] i_to_z\Service.ahk { +[1290] i_to_z\Service.ahk { Line | Function 0089 | Service_Start(ServiceName) @@ -18920,66 +19002,66 @@ Line | Function 0231 | _GetName_(DisplayName) } -[1275] { +[1291] { Line | Function 0003 | SetTimerF( Function, Period=0, ParmObject=0, Priority=0 ) } -[1276] i_to_z\SetAcrylicGlassEffect.ahk { +[1292] i_to_z\SetAcrylicGlassEffect.ahk { Line | Function 0031 | ConvertToBGRfromRGB(RGB) 0037 | SetAcrylicGlassEffect(thisColor, thisAlpha, hWindow) } -[1277] i_to_z\SetBtnTxtColor.ahk { +[1293] i_to_z\SetBtnTxtColor.ahk { Line | Function 0020 | SetBtnTxtColor(HWND, TxtColor) } -[1278] i_to_z\SetButtonF.ahk { +[1294] i_to_z\SetButtonF.ahk { Line | Function 0030 | if(A_EventInfo == tmr.CBA) } -[1279] i_to_z\SetDesktopWallpaper.ahk { +[1295] i_to_z\SetDesktopWallpaper.ahk { Line | Function 0010 | SetDesktopWallpaper(FileName) } -[1280] i_to_z\SetEditPlaceholder.ahk { +[1296] i_to_z\SetEditPlaceholder.ahk { Line | Function 0011 | SetEditPlaceholder(control, string, showalways = 0) } -[1281] i_to_z\SetExeSubsystem.ahk { +[1297] i_to_z\SetExeSubsystem.ahk { Line | Function 0005 | SetExeSubsystem(exepath, subSys) } -[1282] i_to_z\SetFileAttributes.ahk { +[1298] i_to_z\SetFileAttributes.ahk { Line | Function } -[1283] i_to_z\SetHostsFile.ahk { +[1299] i_to_z\SetHostsFile.ahk { Line | Function } -[1284] i_to_z\SetIcon.ahk { +[1300] i_to_z\SetIcon.ahk { Line | Function 0020 | SetIcon(text,script) } -[1285] i_to_z\setLowLevelInputHooks.ahk { +[1301] i_to_z\setLowLevelInputHooks.ahk { Line | Function 0048 | swapMonitoringForBlockingHooks(Install) @@ -18994,39 +19076,39 @@ Line | Function 0195 | CallNextHookEx(nCode, wParam, lParam, hHook = 0) } -[1286] i_to_z\SetProcessPriority.ahk { +[1302] i_to_z\SetProcessPriority.ahk { Line | Function 0019 | SetProcessPriority(hProcess, Priority) } -[1287] i_to_z\SetProcessWorkingSetSize.ahk { +[1303] i_to_z\SetProcessWorkingSetSize.ahk { Line | Function } -[1288] i_to_z\SetSeDebugPrivileg.ahk { +[1304] i_to_z\SetSeDebugPrivileg.ahk { Line | Function } -[1289] i_to_z\SetShortcuts.ahk { +[1305] i_to_z\SetShortcuts.ahk { Line | Function } -[1290] i_to_z\SetSystemCursor (2).ahk { +[1306] i_to_z\SetSystemCursor (2).ahk { Line | Function 0012 | SetSystemCursor( Cursor = "", cx = 0, cy = 0 ) } -[1291] i_to_z\SetSystemCursor.ahk { +[1307] i_to_z\SetSystemCursor.ahk { Line | Function } -[1292] i_to_z\SetTimer.ahk { +[1308] i_to_z\SetTimer.ahk { Line | Function 0050 | setHWND() @@ -19039,13 +19121,13 @@ Line | Function 0216 | ResolveFunction(name) } -[1293] i_to_z\SetTimerF.ahk { +[1309] i_to_z\SetTimerF.ahk { Line | Function 0040 | SetTimerF( Function, Period=0, ParmObject=0, Priority=0 ) } -[1294] i_to_z\Settings.ahk { +[1310] i_to_z\Settings.ahk { Line | Function 0010 | Settings_Get() @@ -19056,38 +19138,38 @@ Line | Function 0071 | Settings_InstallSave(f,j) } -[1295] i_to_z\SetWindowClassStyle.ahk { +[1311] i_to_z\SetWindowClassStyle.ahk { Line | Function 0007 | SetWindowClassStyle(hWnd, Style) } -[1296] i_to_z\SetWindowIcon.ahk { +[1312] i_to_z\SetWindowIcon.ahk { Line | Function } -[1297] i_to_z\SetWindowOwner.ahk { +[1313] i_to_z\SetWindowOwner.ahk { Line | Function } -[1298] i_to_z\SetWindowParent.ahk { +[1314] i_to_z\SetWindowParent.ahk { Line | Function } -[1299] i_to_z\SetWindowPos.ahk { +[1315] i_to_z\SetWindowPos.ahk { Line | Function } -[1300] i_to_z\SetWindowProgress.ahk { +[1316] i_to_z\SetWindowProgress.ahk { Line | Function } -[1301] i_to_z\SetWindowsHookEx.ahk { +[1317] i_to_z\SetWindowsHookEx.ahk { Line | Function 0010 | SetWindowsHookEx(idHook, pfn) @@ -19095,22 +19177,22 @@ Line | Function 0046 | CallNextHookEx(nCode, wParam, lParam, hHook = 0) } -[1302] i_to_z\SetWindowTitle.ahk { +[1318] i_to_z\SetWindowTitle.ahk { Line | Function } -[1303] i_to_z\SetWindowTransparency.ahk { +[1319] i_to_z\SetWindowTransparency.ahk { Line | Function } -[1304] i_to_z\setWindowVol.ahk { +[1320] i_to_z\setWindowVol.ahk { Line | Function } -[1305] i_to_z\SGDIPrint.ahk { +[1321] i_to_z\SGDIPrint.ahk { Line | Function 0051 | SGDIPrint_GDIPStartup() @@ -19131,7 +19213,7 @@ Line | Function 0484 | SGDIPrint_GDIPShutdown(pToken) } -[1306] i_to_z\SGL_Ahk_H_v1.ahk { +[1322] i_to_z\SGL_Ahk_H_v1.ahk { Line | Function 0103 | SglAuthent(AuthentCode ) @@ -19143,27 +19225,27 @@ Line | Function 0286 | SglTeaDecipher(InData,OutData,Key) } -[1307] i_to_z\SHA256 WITH HMAC.ahk { +[1323] i_to_z\SHA256 WITH HMAC.ahk { Line | Function 0022 | SHA256( byref data, bytes ) 0126 | SHA256_HMAC( byref key, keyLen, byref message, messageLen ) } -[1308] i_to_z\Shader.ahk { +[1324] i_to_z\Shader.ahk { Line | Function 0083 | ToBase(n,b) } -[1309] { +[1325] { Line | Function 0008 | ShellNavigate(sPath, bExplore=False, hWnd=0) 0020 | ShellFolder(hWnd=0) } -[1310] i_to_z\shell.ahk { +[1326] i_to_z\shell.ahk { Line | Function 0001 | GetCommandLineAsList(index = 0) @@ -19177,12 +19259,12 @@ Line | Function 0122 | GetCommonPath( csidl ) } -[1311] i_to_z\ShellAbout.ahk { +[1327] i_to_z\ShellAbout.ahk { Line | Function } -[1312] i_to_z\ShellContextMenu.ahk { +[1328] i_to_z\ShellContextMenu.ahk { Line | Function 0093 | WindowProc(hWnd, nMsg, wParam, lParam) @@ -19190,7 +19272,7 @@ Line | Function 0115 | GUID4String(ByRef CLSID, String) } -[1313] i_to_z\ShellContextMenu2.ahk { +[1329] i_to_z\ShellContextMenu2.ahk { Line | Function 0030 | ShellContextMenu(sPath,idn) @@ -19205,65 +19287,65 @@ Line | Function 0131 | Unicode4Ansi(ByRef wString, sString, nSize = "") } -[1314] i_to_z\ShellFileOperation.ahk { +[1330] i_to_z\ShellFileOperation.ahk { Line | Function 0014 | ShellFileOperation( fileO=0x0, fSource="", fTarget="", flags=0x0, ghwnd=0x0 ) } -[1315] i_to_z\ShellRun.ahk { +[1331] i_to_z\ShellRun.ahk { Line | Function } -[1316] i_to_z\ShellRunEx.ahk { +[1332] i_to_z\ShellRunEx.ahk { Line | Function 0003 | ShellRunEx(cmdLine, workingDir) 0034 | EnvVars(str) } -[1317] i_to_z\ShortcutCreate.ahk { +[1333] i_to_z\ShortcutCreate.ahk { Line | Function 0001 | ShortcutCreate() } -[1318] i_to_z\ShortcutDelete.ahk { +[1334] i_to_z\ShortcutDelete.ahk { Line | Function 0001 | ShortcutDelete() } -[1319] i_to_z\ShortcutExists.ahk { +[1335] i_to_z\ShortcutExists.ahk { Line | Function 0001 | ShortcutExists() } -[1320] i_to_z\Show menu.ahk { +[1336] i_to_z\Show menu.ahk { Line | Function 0092 | ShowMenu(mDef, options = "", r=0) } -[1321] i_to_z\showabout.ahk { +[1337] i_to_z\showabout.ahk { Line | Function } -[1322] i_to_z\ShowDesktop.ahk { +[1338] i_to_z\ShowDesktop.ahk { Line | Function 0006 | ShowDesktop() } -[1323] i_to_z\ShowGif().ahk { +[1339] i_to_z\ShowGif().ahk { Line | Function } -[1324] i_to_z\ShowHide.ahk { +[1340] i_to_z\ShowHide.ahk { Line | Function 0024 | ToggleHiddenFiles() @@ -19274,96 +19356,96 @@ Line | Function 0055 | UpdateWindows() } -[1325] i_to_z\ShowHideTaskbar.ahk { +[1341] i_to_z\ShowHideTaskbar.ahk { Line | Function } -[1326] i_to_z\ShowHtmlDialog.ahk { +[1342] i_to_z\ShowHtmlDialog.ahk { Line | Function 0030 | ShowHTMLDialog(URL, argIn="", Options="", hwndParent=0) } -[1327] i_to_z\ShowMenu.ahk { +[1343] i_to_z\ShowMenu.ahk { Line | Function } -[1328] i_to_z\ShowOCRUnderMouse.ahk { +[1344] i_to_z\ShowOCRUnderMouse.ahk { Line | Function 0100 | RunWaitEx(CMD, CMDdir, CMDin, ByRef CMDout, ByRef CMDerr) } -[1329] i_to_z\ShowStartMenu.ahk { +[1345] i_to_z\ShowStartMenu.ahk { Line | Function 0004 | ShowStartMenu() } -[1330] i_to_z\ShuffleString.ahk { +[1346] i_to_z\ShuffleString.ahk { Line | Function 0005 | Shuffle(string) } -[1331] i_to_z\Sift.ahk { +[1347] i_to_z\Sift.ahk { Line | Function 0174 | Sift_Ngram_Compare(ByRef Hay, ByRef Needle) 0199 | Sift_SortResults(ByRef Data) } -[1332] i_to_z\SignFile.ahk { +[1348] i_to_z\SignFile.ahk { Line | Function 0001 | SignFile(File, CertCtx, Name) } -[1333] i_to_z\sizeof.ahk { +[1349] i_to_z\sizeof.ahk { Line | Function 0021 | sizeof(_TYPE_,parent_offset=0,ByRef _align_total_=0) 0190 | sizeof_maxsize(s) } -[1334] i_to_z\sleepMode.ahk { +[1350] i_to_z\sleepMode.ahk { Line | Function } -[1335] i_to_z\SleepWithoutInterruption.ahk { +[1351] i_to_z\SleepWithoutInterruption.ahk { Line | Function 0001 | SleepWithoutInterruption(aSleepTime) } -[1336] i_to_z\sleipnir.ahk { +[1352] i_to_z\sleipnir.ahk { Line | Function 0001 | getSlpWb() 0025 | renewSlpUrl(wb,sid) } -[1337] i_to_z\slots.ahk { +[1353] i_to_z\slots.ahk { Line | Function } -[1338] i_to_z\SmartZip.ahk { +[1354] i_to_z\SmartZip.ahk { Line | Function 0029 | SmartZip(s, o, t = 4) 0084 | CreateZip(n) } -[1339] i_to_z\SnapFolderWindows.ahk { +[1355] i_to_z\SnapFolderWindows.ahk { Line | Function } -[1340] i_to_z\SnapX_Functions.ahk { +[1356] i_to_z\SnapX_Functions.ahk { Line | Function 0001 | GetMonitorId(hwnd) @@ -19379,7 +19461,7 @@ Line | Function 0131 | Max(a, b) } -[1341] i_to_z\socket.ahk { +[1357] i_to_z\socket.ahk { Line | Function 0023 | __Delete() @@ -19398,12 +19480,12 @@ Line | Function 0238 | SetBroadcast(Enable) } -[1342] i_to_z\SoftModalMessageBox.ahk { +[1358] i_to_z\SoftModalMessageBox.ahk { Line | Function } -[1343] i_to_z\SoftwareProtectionLibrary.ahk { +[1359] i_to_z\SoftwareProtectionLibrary.ahk { Line | Function 0123 | SWP_Initialize( mk0=0x11111111, mk1=0x22222222, mk2=0x33333333, mk3=0x44444444,ml0=0x12345678, ml1=0x12345678, mm0=0x87654321, mm1=0x87654321 ) @@ -19424,29 +19506,29 @@ Line | Function 0531 | SWP_ReadRegFile( iniFilename ) } -[1344] i_to_z\Sort.ahk { +[1360] i_to_z\Sort.ahk { Line | Function } -[1345] i_to_z\Sort2DArray.ahk { +[1361] i_to_z\Sort2DArray.ahk { Line | Function } -[1346] i_to_z\SortArray.ahk { +[1362] i_to_z\SortArray.ahk { Line | Function } -[1347] i_to_z\sort_len.ahk { +[1363] i_to_z\sort_len.ahk { Line | Function 0015 | init() 0026 | getProcAddress(dll, fn) } -[1348] i_to_z\sound.ahk { +[1364] i_to_z\sound.ahk { Line | Function 0024 | Sound_Open(File, Alias="") @@ -19463,12 +19545,12 @@ Line | Function 0205 | Sound_SendString(string, UseSend=0, ReturnTemp=0) } -[1349] i_to_z\SoundCardCapabilities.ahk { +[1365] i_to_z\SoundCardCapabilities.ahk { Line | Function } -[1350] i_to_z\sourcegrab.ahk { +[1366] i_to_z\sourcegrab.ahk { Line | Function 0028 | DoGrab() @@ -19478,7 +19560,7 @@ Line | Function 0142 | HideConfirmation() } -[1351] i_to_z\SpecialListviewFunctions.ahk { +[1367] i_to_z\SpecialListviewFunctions.ahk { Line | Function 0001 | CompileList(Find, Criteria, Col, LV, ColumnList) @@ -19498,7 +19580,7 @@ Line | Function 0469 | hasValue(haystack, needle) } -[1352] i_to_z\SpeechRecognition.ahk { +[1368] i_to_z\SpeechRecognition.ahk { Line | Function 0104 | __New() @@ -19512,7 +19594,7 @@ Line | Function 0236 | SpeechRecognizer_Recognition(StreamNumber, StreamPosition, RecognitionType, cResult, cContext) } -[1353] i_to_z\Spell.ahk { +[1369] i_to_z\Spell.ahk { Line | Function 0123 | Spell_Add(ByRef hSpell,p_Word,p_AddCase="") @@ -19525,14 +19607,14 @@ Line | Function 0808 | Spell_Uninit(ByRef hSpell) } -[1354] i_to_z\SplashImage.ahk { +[1370] i_to_z\SplashImage.ahk { Line | Function 0001 | SplashImage_Struct() 0008 | SplashImage_OnMessage(wParam,lParam,msg,hwnd) } -[1355] i_to_z\SplashOn.ahk { +[1371] i_to_z\SplashOn.ahk { Line | Function 0162 | Splash(p_MainText="" ,p_SubText="" ,p_MinimumSplashTime="" ,p_Font="" ,p_Options="") @@ -19540,18 +19622,18 @@ Line | Function 0564 | Splash_Preserve(p_Splash_Preserve="") } -[1356] i_to_z\SplashTextOff.ahk { +[1372] i_to_z\SplashTextOff.ahk { Line | Function 0001 | SplashTextOff() } -[1357] i_to_z\SplashTextOn.ahk { +[1373] i_to_z\SplashTextOn.ahk { Line | Function } -[1358] i_to_z\Splitter.ahk { +[1374] i_to_z\Splitter.ahk { Line | Function 0045 | Splitter_Add(Opt="", Text="", Handler="") @@ -19566,7 +19648,7 @@ Line | Function 0261 | Splitter_updateFocus( HSep="" ) } -[1359] i_to_z\SpreadSheet.ahk { +[1375] i_to_z\SpreadSheet.ahk { Line | Function 0007 | SS_ScrollCell(hCtrl) @@ -19618,7 +19700,7 @@ Line | Function 0617 | SS_CreateCombo(hCtrl, string="") } -[1360] i_to_z\SQLite.ahk { +[1376] i_to_z\SQLite.ahk { Line | Function 0132 | _SQLite_Startup() @@ -19645,7 +19727,7 @@ Line | Function 1105 | _#SQLite_CheckQuery($hQuery) } -[1361] i_to_z\SQLiteDB_Class.ahk { +[1377] i_to_z\SQLiteDB_Class.ahk { Line | Function 0035 | __New() @@ -19677,7 +19759,7 @@ Line | Function 0834 | StoreBLOB(SQL, BlobArray) } -[1362] i_to_z\SQLite_L.ahk { +[1378] i_to_z\SQLite_L.ahk { Line | Function 0099 | SQLite_Startup() @@ -19721,36 +19803,36 @@ Line | Function 0985 | _SQLite_ReturnCode(RC) } -[1363] i_to_z\Sql_AddDelimiters.ahk { +[1379] i_to_z\Sql_AddDelimiters.ahk { Line | Function 0001 | AddSqlDelimiters(fnCopiedText) } -[1364] i_to_z\Sql_FormatSQL.ahk { +[1380] i_to_z\Sql_FormatSQL.ahk { Line | Function } -[1365] i_to_z\Sql_LineBreakOnSqlKeyword.ahk { +[1381] i_to_z\Sql_LineBreakOnSqlKeyword.ahk { Line | Function 0001 | LineBreakOnSqlKeyword(ByRef fnText) } -[1366] i_to_z\Sql_MakeSQLDynamic.ahk { +[1382] i_to_z\Sql_MakeSQLDynamic.ahk { Line | Function 0001 | MakeSQLDynamic(ByRef fnText, fnIncludeControlChars = 0) } -[1367] i_to_z\SrtSynch.ahk { +[1383] i_to_z\SrtSynch.ahk { Line | Function 0006 | SrtSynch(delay_or_framerate, input_subtitle, output_subtitle, delay, is_delay_positive, input_fps, output_fps) } -[1368] i_to_z\st.ahk { +[1384] i_to_z\st.ahk { Line | Function 0009 | ST_Dim(ByRef Stack) @@ -19765,18 +19847,24 @@ Line | Function 0135 | ST_IsValid(ByRef Stack,Dim=0) } -[1369] i_to_z\StartServiceCtrlDispatcher.ahk { +[1385] i_to_z\StartServiceCtrlDispatcher.ahk { Line | Function } -[1370] i_to_z\start_with_windows.ahk { +[1386] i_to_z\start_with_windows.ahk { Line | Function 0001 | start_with_windows(seperator="", menu_name="tray") } -[1371] i_to_z\StayOnMonitor.ahk { +[1387] i_to_z\StaticVar.ahk { + +Line | Function +0001 | StaticVar(name,func) + +} +[1388] i_to_z\StayOnMonitor.ahk { Line | Function 0008 | StayOnMonXY(GW, GH, Mouse = 0, MouseAlternative = 1, Center = 0) @@ -19784,44 +19872,44 @@ Line | Function 0110 | If_Between(Var, Low, High, Reverse = 0) } -[1372] i_to_z\StdOutStream.ahk { +[1389] i_to_z\StdOutStream.ahk { Line | Function 0001 | StdOutStream( sCmd, Callback = "" ) 0008 | if(a_ptrSize=8) } -[1373] i_to_z\StdOutToVar (2).ahk { +[1390] i_to_z\StdOutToVar (2).ahk { Line | Function 0001 | StdOutToVar(cmd) } -[1374] i_to_z\StdOutToVar.ahk { +[1391] i_to_z\StdOutToVar.ahk { Line | Function 0002 | StdOutToVar( sCmd ) 0008 | if(a_ptrSize=8) } -[1375] i_to_z\StdoutToVar_CreateProcess.ahk { +[1392] i_to_z\StdoutToVar_CreateProcess.ahk { Line | Function 0032 | StdoutToVar_CreateProcess(sCmd, bStream = "", sDir = "", sInput = "") } -[1376] i_to_z\sToMs.ahk { +[1393] i_to_z\sToMs.ahk { Line | Function 0001 | sToMs(s) } -[1377] i_to_z\stopwatch.ahk { +[1394] i_to_z\stopwatch.ahk { Line | Function } -[1378] i_to_z\Str.ahk { +[1395] i_to_z\Str.ahk { Line | Function 0003 | Str_ManuallyWrapArray(ByRef asToWrap, iMaxWidth, hFont) @@ -19834,41 +19922,41 @@ Line | Function 0244 | 1Str_SurroundWithStr(s) } -[1379] i_to_z\StRegX.ahk { +[1396] i_to_z\StRegX.ahk { Line | Function 0001 | stRegX(h,BS="",BO=1,BT=0, ES="",ET=0, ByRef N="") } -[1380] i_to_z\StrFormatByteSize.ahk { +[1397] i_to_z\StrFormatByteSize.ahk { Line | Function } -[1381] i_to_z\StrFormatByteSize64.ahk { +[1398] i_to_z\StrFormatByteSize64.ahk { Line | Function 0006 | StrFormatByteSizeEx(int) } -[1382] i_to_z\StrFormatByteSizeEx.ahk { +[1399] i_to_z\StrFormatByteSizeEx.ahk { Line | Function } -[1383] i_to_z\StrGet.ahk { +[1400] i_to_z\StrGet.ahk { Line | Function 0001 | StrGet(Address, Length=-1, Encoding=0) } -[1384] i_to_z\strI.ahk { +[1401] i_to_z\strI.ahk { Line | Function 0001 | strI(str) } -[1385] i_to_z\String.ahk { +[1402] i_to_z\String.ahk { Line | Function 0001 | String_Fill(char, count) @@ -19881,29 +19969,29 @@ Line | Function 0084 | String_IsEqual(haystack, needle, caseSensitive=true) } -[1386] i_to_z\StringCounter.ahk { +[1403] i_to_z\StringCounter.ahk { Line | Function } -[1387] i_to_z\stringify.ahk { +[1404] i_to_z\stringify.ahk { Line | Function 0001 | stringify(obj) } -[1388] i_to_z\StringIndent_JEE_.ahk { +[1405] i_to_z\StringIndent_JEE_.ahk { Line | Function } -[1389] i_to_z\StringM.ahk { +[1406] i_to_z\StringM.ahk { Line | Function 0008 | StringM( _String, _Option, _Param1 = "", _Param2 = "" ) } -[1390] i_to_z\stringMore.ahk { +[1407] i_to_z\stringMore.ahk { Line | Function 0014 | isValidPhoneNumber(formattedNum) @@ -19935,7 +20023,7 @@ Line | Function 0343 | appendCharIfMissing(inputString, charToAppend) } -[1391] i_to_z\StringThings.ahk { +[1408] i_to_z\StringThings.ahk { Line | Function 0081 | ST_Insert(insert,input,pos=1) @@ -19944,19 +20032,19 @@ Line | Function 1102 | st_randomArr(array, min=0, max=0, timeout=3000) } -[1392] i_to_z\StrLen2.ahk { +[1409] i_to_z\StrLen2.ahk { Line | Function 0012 | StrLen2(String) } -[1393] i_to_z\StrLower.ahk { +[1410] i_to_z\StrLower.ahk { Line | Function 0002 | StrLower(String) } -[1394] i_to_z\StrObj.ahk { +[1411] i_to_z\StrObj.ahk { Line | Function 0244 | Auto(Input,SaveToFileFullPath="") @@ -19965,72 +20053,72 @@ Line | Function 0433 | StrObj(Input,SaveToFileFullPath="") } -[1395] i_to_z\StrPut.ahk { +[1412] i_to_z\StrPut.ahk { Line | Function 0001 | StrPut(String, Address="", Length=-1, Encoding=0) } -[1396] i_to_z\StrPutVar.ahk { +[1413] i_to_z\StrPutVar.ahk { Line | Function 0001 | StrPutVar(string,ByRef var,encoding) } -[1397] i_to_z\StrQ.ahk { +[1414] i_to_z\StrQ.ahk { Line | Function } -[1398] i_to_z\StrRepeat.ahk { +[1415] i_to_z\StrRepeat.ahk { Line | Function 0009 | StrRepeat(String, Count) } -[1399] i_to_z\StrReplace.ahk { +[1416] i_to_z\StrReplace.ahk { Line | Function } -[1400] i_to_z\strReplaceI.ahk { +[1417] i_to_z\strReplaceI.ahk { Line | Function 0001 | strReplaceI(haystack,searchText,replaceText="",byref outputVarCount="",limit=-1) } -[1401] i_to_z\StrReplicate.ahk { +[1418] i_to_z\StrReplicate.ahk { Line | Function 0001 | StrReplicate(fnStr,fnCount) } -[1402] i_to_z\StrReverse.ahk { +[1419] i_to_z\StrReverse.ahk { Line | Function 0010 | StrReverse(fnString) } -[1403] i_to_z\strTail.ahk { +[1420] i_to_z\strTail.ahk { Line | Function 0004 | strTail(_Str, _LineNum = 1) 0012 | strTail_last(ByRef _Str) } -[1404] i_to_z\strToLower.ahk { +[1421] i_to_z\strToLower.ahk { Line | Function 0001 | strToLower(str) } -[1405] i_to_z\strToUpper.ahk { +[1422] i_to_z\strToUpper.ahk { Line | Function 0001 | strToUpper(str) } -[1406] i_to_z\Struct.ahk { +[1423] i_to_z\Struct.ahk { Line | Function 0030 | Struct(_def,_obj="",_name="",_offset=0,_TypeArray=0,_Encoding=0) @@ -20038,13 +20126,13 @@ Line | Function 0362 | Struct_getVar(var) } -[1407] i_to_z\StrX.ahk { +[1424] i_to_z\StrX.ahk { Line | Function 0002 | StrX( H, BS="",BO=0,BT=1, ES="",EO=0,ET=1, ByRef N="" ) } -[1408] i_to_z\Subprocess.ahk { +[1425] i_to_z\Subprocess.ahk { Line | Function 0068 | __Delete() @@ -20060,18 +20148,18 @@ Line | Function 0187 | RawWrite(Address, Bytes) } -[1409] i_to_z\SubTitle.ahk { +[1426] i_to_z\SubTitle.ahk { Line | Function } -[1410] i_to_z\SUCCEEDED.ahk { +[1427] i_to_z\SUCCEEDED.ahk { Line | Function 0001 | SUCCEEDED(hr) } -[1411] i_to_z\SuperMaxWindow.ahk { +[1428] i_to_z\SuperMaxWindow.ahk { Line | Function 0001 | SuperMaxWindow(fnWindowId,fnSuperMax) @@ -20080,25 +20168,25 @@ Line | Function 0123 | GetLastPosn(fnWindowId,ByRef X,ByRef Y,ByRef W,ByRef H) } -[1412] i_to_z\SuppressRuntimeErrors.ahk { +[1429] i_to_z\SuppressRuntimeErrors.ahk { Line | Function 0005 | SuppressRuntimeErrors(NewErrorFormat) 0011 | SuppressRuntimeErrors_(wParam, lParam, msg, hwnd) } -[1413] i_to_z\SuspendAfterDelay.ahk { +[1430] i_to_z\SuspendAfterDelay.ahk { Line | Function } -[1414] i_to_z\SuspendProcess.ahk { +[1431] i_to_z\SuspendProcess.ahk { Line | Function 0012 | SuspendProcess(hProcess) } -[1415] i_to_z\SuspendThread_ResumeThread.ahk { +[1432] i_to_z\SuspendThread_ResumeThread.ahk { Line | Function 0006 | SuspendThread(ThreadID) @@ -20106,7 +20194,7 @@ Line | Function 0026 | ResumeThread(ThreadID) } -[1416] i_to_z\SVGraph.ahk { +[1433] i_to_z\SVGraph.ahk { Line | Function 0004 | if(ActiveX) @@ -20120,30 +20208,30 @@ Line | Function 0196 | ObjectToString(obj) } -[1417] i_to_z\sXMLget.ahk { +[1434] i_to_z\sXMLget.ahk { Line | Function 0003 | sXMLget( xml, node, attr = "" ) } -[1418] i_to_z\SysProcInfo.ahk { +[1435] i_to_z\SysProcInfo.ahk { Line | Function } -[1419] i_to_z\SystemCursor.ahk { +[1436] i_to_z\SystemCursor.ahk { Line | Function 0003 | SystemCursor(OnOff=1) } -[1420] i_to_z\SystemMessage.ahk { +[1437] i_to_z\SystemMessage.ahk { Line | Function 0001 | SystemMessage(p_MessageNbr) } -[1421] i_to_z\SystemMonitor.ahk { +[1438] i_to_z\SystemMonitor.ahk { Line | Function 0202 | SAlloc(size) @@ -20171,7 +20259,7 @@ Line | Function 0456 | if(hModulePDH) } -[1422] i_to_z\SystemTime.ahk { +[1439] i_to_z\SystemTime.ahk { Line | Function 0045 | FromString(str) @@ -20182,7 +20270,7 @@ Line | Function 0090 | __GetSet(name, value="") } -[1423] i_to_z\Tab.ahk { +[1440] i_to_z\Tab.ahk { Line | Function 0116 | Tab_GetSelection(Tab) @@ -20192,20 +20280,20 @@ Line | Function 0310 | Tab_GetImageList(Tab) } -[1424] i_to_z\TabAlign.ahk { +[1441] i_to_z\TabAlign.ahk { Line | Function 0006 | TabAlign(data) 0024 | tabs(n) } -[1425] i_to_z\TabbedCBB.ahk { +[1442] i_to_z\TabbedCBB.ahk { Line | Function 0047 | TabbedCBB_DrawItem(wParam, lParam) } -[1426] i_to_z\Table.ahk { +[1443] i_to_z\Table.ahk { Line | Function 0265 | Table_Append( TableA, TableB, Mode=0 ) @@ -20235,12 +20323,12 @@ Line | Function 2940 | Table_Width( Table ) } -[1427] i_to_z\TabsToSpaces.ahk { +[1444] i_to_z\TabsToSpaces.ahk { Line | Function } -[1428] i_to_z\talk.ahk { +[1445] i_to_z\talk.ahk { Line | Function 0044 | __New(Client) @@ -20251,7 +20339,7 @@ Line | Function 0156 | talk_send(ByRef StringToSend, ByRef TargetScriptTitle) } -[1429] i_to_z\Taskbar.ahk { +[1446] i_to_z\Taskbar.ahk { Line | Function 0017 | Taskbar_Count() @@ -20265,7 +20353,7 @@ Line | Function 0281 | Taskbar_Remove(Position) } -[1430] i_to_z\taskbarInterface.ahk { +[1447] i_to_z\taskbarInterface.ahk { Line | Function 0033 | showButton(n) @@ -20354,7 +20442,7 @@ Line | Function 1513 | min(x,y) } -[1431] i_to_z\taskbarInterface_v2.ahk { +[1448] i_to_z\taskbarInterface_v2.ahk { Line | Function 0034 | showButton(n) @@ -20442,19 +20530,19 @@ Line | Function 1524 | min(x,y) } -[1432] i_to_z\TaskbarMove.ahk { +[1449] i_to_z\TaskbarMove.ahk { Line | Function 0015 | TaskbarMove(p_pos) 0037 | WinMove(p_x, p_y, p_w="", p_h="", p_hwnd="") } -[1433] i_to_z\TaskBar_SetAttr.ahk { +[1450] i_to_z\TaskBar_SetAttr.ahk { Line | Function } -[1434] i_to_z\TaskButton(differentVersion).ahk { +[1451] i_to_z\TaskButton(differentVersion).ahk { Line | Function 0007 | TaskButtons(sExeName = "") @@ -20464,7 +20552,7 @@ Line | Function 0056 | GetTaskSwBar() } -[1435] i_to_z\TaskButton.ahk { +[1452] i_to_z\TaskButton.ahk { Line | Function 0019 | TaskButton(sExeName = "") @@ -20474,7 +20562,7 @@ Line | Function 0076 | TaskButton_GetTaskSwBar() } -[1436] i_to_z\TaskDialog (2).ahk { +[1453] i_to_z\TaskDialog (2).ahk { Line | Function 0132 | TaskDialog(hParent = 0, sText = "", sButtons = "", iFlags = 0, sIcons = "", sRadios = "", sCallback = "", iWidth = 0, hNavigate = 0) @@ -20485,14 +20573,14 @@ Line | Function 0460 | _TaskDialog_ResolveIcon(sIcon) } -[1437] i_to_z\TaskDialog and more.ahk { +[1454] i_to_z\TaskDialog and more.ahk { Line | Function 0130 | TaskDialogToUnicode(String, ByRef Var) 0136 | TaskDialogCallback(H, N, W, L, D) } -[1438] i_to_z\TaskDialog.ahk { +[1455] i_to_z\TaskDialog.ahk { Line | Function 0180 | TaskDialog_CommonButtons(Value, TASKDIALOGCONFIG, ByRef DefaultButton) @@ -20500,14 +20588,14 @@ Line | Function 0214 | TaskDialog_CallbackProc(Hwnd, Notification, wParam, lParam, RefData) } -[1439] i_to_z\TaskDialogEx.ahk { +[1456] i_to_z\TaskDialogEx.ahk { Line | Function 0131 | TaskDialogToUnicode(String, ByRef Var) 0137 | TaskDialogCallback(H, N, W, L, D) } -[1440] i_to_z\TaskTrayIcon.ahk { +[1457] i_to_z\TaskTrayIcon.ahk { Line | Function 0018 | Tray_GetCount() @@ -20520,7 +20608,7 @@ Line | Function 0075 | Tray_MoveButton(from,to) } -[1441] { +[1458] { Line | Function 0030 | TbMenu_Create(Style=0x80800044, ExStyle=0, Owner=0) @@ -20533,7 +20621,7 @@ Line | Function 0145 | TbMenu_WndProc(hwnd, Msg, wParam, lParam) } -[1442] { +[1459] { Line | Function 0005 | __New(s=-1) @@ -20557,7 +20645,7 @@ Line | Function 0208 | disableBroadcast() } -[1443] i_to_z\TCP.ahk { +[1460] i_to_z\TCP.ahk { Line | Function 0002 | TCP_Startup(OnExit = True, OnMessage = "") @@ -20577,7 +20665,7 @@ Line | Function 0237 | TCP_HiWord(DWORD) } -[1444] i_to_z\TCPUDP.ahk { +[1461] i_to_z\TCPUDP.ahk { Line | Function 0003 | __New() @@ -20614,7 +20702,7 @@ Line | Function 0326 | __nw_eventProc(wParam, lParam, msg, hwnd) } -[1445] i_to_z\TCwdx.ahk { +[1462] i_to_z\TCwdx.ahk { Line | Function 0012 | TCwdx_FindIni() @@ -20628,7 +20716,7 @@ Line | Function 0253 | TCwdx_SetDefaultParams(tcplug) } -[1446] i_to_z\TC_EX.ahk { +[1463] i_to_z\TC_EX.ahk { Line | Function 0041 | TC_EX_CreateTCITEM(ByRef TCITEM) @@ -20650,7 +20738,7 @@ Line | Function 0299 | TC_EX_SetText(HTC, TabIndex, TabText) } -[1447] i_to_z\TEA.ahk { +[1464] i_to_z\TEA.ahk { Line | Function 0008 | Encrypt( _String, _Password ) @@ -20661,7 +20749,7 @@ Line | Function 0124 | Stream9( x, y ) } -[1448] i_to_z\TEA_Encryption.ahk { +[1465] i_to_z\TEA_Encryption.ahk { Line | Function 0049 | EncryptFile( inputFile, password, outputFile="" ) @@ -20674,25 +20762,25 @@ Line | Function 0206 | TEA_Stream9(x,y) } -[1449] i_to_z\TerminateProcess.ahk { +[1466] i_to_z\TerminateProcess.ahk { Line | Function } -[1450] i_to_z\TermWait.ahk { +[1467] i_to_z\TermWait.ahk { Line | Function 0045 | TermWait_StopWaiting(pGlobal) 0058 | __TermWait_TermNotifier(pGlobal) } -[1451] i_to_z\TermWaitLibs.ahk { +[1468] i_to_z\TermWaitLibs.ahk { Line | Function 0095 | __TermWait_TermNotifier(pGlobal) } -[1452] i_to_z\Text2Number.ahk { +[1469] i_to_z\Text2Number.ahk { Line | Function 0087 | Number2Name(Number) @@ -20701,19 +20789,19 @@ Line | Function 0421 | TTS_CreateVoice(VoiceName="", VoiceRate="", VoiceVolume="", VoicePitch="") } -[1453] i_to_z\TextAreaDetect.ahk { +[1470] i_to_z\TextAreaDetect.ahk { Line | Function 0011 | caretViaAcc() } -[1454] i_to_z\TextCompare.ahk { +[1471] i_to_z\TextCompare.ahk { Line | Function 0023 | TextCompare(Text1, Text2, Options = "") } -[1455] i_to_z\Textlists.ahk { +[1472] i_to_z\Textlists.ahk { Line | Function 0034 | ListAdd(item,pos,list) @@ -20743,7 +20831,7 @@ Line | Function 0462 | TEST2(A,x) } -[1456] i_to_z\tf.ahk { +[1473] i_to_z\tf.ahk { Line | Function 0048 | TF_CountLines(Text) @@ -20798,19 +20886,19 @@ Line | Function 1530 | _AscendingLinesL(a1, a2) } -[1457] i_to_z\ThousandsSep.ahk { +[1474] i_to_z\ThousandsSep.ahk { Line | Function 0003 | ThousandsSep(x, s=",") } -[1458] i_to_z\threadFunc.ahk { +[1475] i_to_z\threadFunc.ahk { Line | Function 0062 | GlobalFree(hMem) } -[1459] i_to_z\Threads.ahk { +[1476] i_to_z\Threads.ahk { Line | Function 0008 | Threads_GetProcessThreadOrList( processID, byRef list="" ) @@ -20818,7 +20906,7 @@ Line | Function 0076 | Threads_GetThreadOfWindowCallBack( hWnd, lParam ) } -[1460] i_to_z\Thumbnail.ahk { +[1477] i_to_z\Thumbnail.ahk { Line | Function 0040 | Thumbnail_Create(hDestination, hSource) @@ -20830,28 +20918,28 @@ Line | Function 0176 | Thumbnail_SetOpacity(hThumb, opacity) } -[1461] i_to_z\thumbnailer.ahk { +[1478] i_to_z\thumbnailer.ahk { Line | Function 0002 | thumbnailer(_guiID, _percent=.25, _transColor="", _guiNum=99) } -[1462] i_to_z\Timer.ahk { +[1479] i_to_z\Timer.ahk { Line | Function } -[1463] i_to_z\TimeStampAHK.ahk { +[1480] i_to_z\TimeStampAHK.ahk { Line | Function } -[1464] i_to_z\TimeStampSQL.ahk { +[1481] i_to_z\TimeStampSQL.ahk { Line | Function } -[1465] i_to_z\Tippy.ahk { +[1482] i_to_z\Tippy.ahk { Line | Function 0015 | Tippy(Text = "", Duration = 1000) @@ -20860,13 +20948,13 @@ Line | Function 0042 | ToolTipFM(Text="", WhichToolTip=16, xOffset=16, yOffset=16) } -[1466] i_to_z\Title.ahk { +[1483] i_to_z\Title.ahk { Line | Function 0010 | Title(Text) } -[1467] i_to_z\TLLib.ahk { +[1484] i_to_z\TLLib.ahk { Line | Function 0046 | EnumVarName(control) @@ -20905,7 +20993,7 @@ Line | Function 0607 | _cybar() } -[1468] i_to_z\TO TextOverlay.ahk { +[1485] i_to_z\TO TextOverlay.ahk { Line | Function 0096 | TO_GenerateTree(charstring,fontinfo,forest) @@ -20944,7 +21032,7 @@ Line | Function 1534 | TO_DebugBitmap(pBitmap) } -[1469] i_to_z\TO.ahk { +[1486] i_to_z\TO.ahk { Line | Function 0096 | TO_GenerateTree(charstring,fontinfo,forest) @@ -20983,18 +21071,18 @@ Line | Function 1534 | TO_DebugBitmap(pBitmap) } -[1470] i_to_z\ToBase.ahk { +[1487] i_to_z\ToBase.ahk { Line | Function 0002 | ToBase(n,b) } -[1471] i_to_z\ToChar.ahk { +[1488] i_to_z\ToChar.ahk { Line | Function } -[1472] i_to_z\todWulff.ahk { +[1489] i_to_z\todWulff.ahk { Line | Function 0014 | Paste2(Paste_Content, Paste_Description="", Paste_Language="text") @@ -21003,12 +21091,12 @@ Line | Function 0155 | Goo_gl(url) } -[1473] i_to_z\ToInt.ahk { +[1490] i_to_z\ToInt.ahk { Line | Function } -[1474] i_to_z\tokelex.ahk { +[1491] i_to_z\tokelex.ahk { Line | Function 0388 | __New(lexerName, keepWhiteSpace=0) @@ -21036,19 +21124,19 @@ Line | Function 1064 | test() } -[1475] i_to_z\TokenIsElevated.ahk { +[1492] i_to_z\TokenIsElevated.ahk { Line | Function 0013 | TokenIsElevated(hToken) } -[1476] i_to_z\tool.ahk { +[1493] i_to_z\tool.ahk { Line | Function 0001 | tool(content,wait=2500,x="",y="") } -[1477] i_to_z\Toolbar.ahk { +[1494] i_to_z\Toolbar.ahk { Line | Function 0078 | Toolbar_Add(hGui, Handler, Style="", ImageList="", Pos="") @@ -21087,12 +21175,12 @@ Line | Function 1081 | Toolbar_add2Form(hParent, Txt, Opt) } -[1478] i_to_z\toolSpeak.ahk { +[1495] i_to_z\toolSpeak.ahk { Line | Function } -[1479] i_to_z\ToolTip.ahk { +[1496] i_to_z\ToolTip.ahk { Line | Function 0199 | ToolTip(ID="", text="", title="",options="") @@ -21100,36 +21188,36 @@ Line | Function 0653 | ToolTip_GetAssociatedIcon(File) } -[1480] i_to_z\ToolTipEx.ahk { +[1497] i_to_z\ToolTipEx.ahk { Line | Function } -[1481] i_to_z\ToolTipG.ahk { +[1498] i_to_z\ToolTipG.ahk { Line | Function } -[1482] i_to_z\ToolTipOpt.ahk { +[1499] i_to_z\ToolTipOpt.ahk { Line | Function 0037 | _TTHook() 0045 | _TTWndProc(nCode, _wp, _lp) } -[1483] i_to_z\ToShort.ahk { +[1500] i_to_z\ToShort.ahk { Line | Function } -[1484] i_to_z\tostring.ahk { +[1501] i_to_z\tostring.ahk { Line | Function 0008 | ToString(this) 0025 | _multab(str) } -[1485] i_to_z\TotalCmdFuncs.ahk { +[1502] i_to_z\TotalCmdFuncs.ahk { Line | Function 0002 | TcmdSelByMask(mask) @@ -21142,28 +21230,28 @@ Line | Function 0097 | CDX(args, arg1) } -[1486] i_to_z\touch.ahk { +[1503] i_to_z\touch.ahk { Line | Function 0049 | Touch(file = "" , set = "0", WhichTime = "M", Reference = "0") } -[1487] i_to_z\ToUChar.ahk { +[1504] i_to_z\ToUChar.ahk { Line | Function } -[1488] i_to_z\ToUInt.ahk { +[1505] i_to_z\ToUInt.ahk { Line | Function } -[1489] i_to_z\ToUShort.ahk { +[1506] i_to_z\ToUShort.ahk { Line | Function } -[1490] i_to_z\TransButtonsv1.ahk { +[1507] i_to_z\TransButtonsv1.ahk { Line | Function 0046 | TransButton_Subclass(HBTN) @@ -21171,19 +21259,19 @@ Line | Function 0131 | TransButton_SubclassProc(HWND, Message, wParam, lParam, IdSubclass, RefData) } -[1491] i_to_z\translate_google_api AHKV2.ahk { +[1508] i_to_z\translate_google_api AHKV2.ahk { Line | Function } -[1492] i_to_z\TransSplashText.ahk { +[1509] i_to_z\TransSplashText.ahk { Line | Function 0024 | TransSplashText_On(Text="",Font="",TC="",SC="",TS="",xPos="",yPos="",TimeOut="") 0064 | TransSplashText_Off() } -[1493] i_to_z\Tray.ahk { +[1510] i_to_z\Tray.ahk { Line | Function 0031 | Tray_Add( hGui, Handler, Icon, Tooltip="") @@ -21201,12 +21289,12 @@ Line | Function 0412 | Tray_onShellIcon(Wparam, Lparam) } -[1494] i_to_z\TrayIcon (2).ahk { +[1511] i_to_z\TrayIcon (2).ahk { Line | Function } -[1495] i_to_z\TrayIcon (3).ahk { +[1512] i_to_z\TrayIcon (3).ahk { Line | Function 0036 | TrayIcon(sExeName = "") @@ -21217,23 +21305,23 @@ Line | Function 0111 | TrayIcon_GetTrayBar() } -[1496] i_to_z\TrayIcon.ahk { +[1513] i_to_z\TrayIcon.ahk { Line | Function } -[1497] i_to_z\TrayIconInfo.ahk { +[1514] i_to_z\TrayIconInfo.ahk { Line | Function } -[1498] i_to_z\TrayRefresh.ahk { +[1515] i_to_z\TrayRefresh.ahk { Line | Function 0001 | Tray_Refresh() } -[1499] i_to_z\TrayTipEx.ahk { +[1516] i_to_z\TrayTipEx.ahk { Line | Function 0095 | TrayTipEx_Move(CtrlObj) @@ -21241,36 +21329,36 @@ Line | Function 0112 | TrayTipEx_Close(Data) } -[1500] i_to_z\TreeBox.ahk { +[1517] i_to_z\TreeBox.ahk { Line | Function } -[1501] i_to_z\TreeView.ahk { +[1518] i_to_z\TreeView.ahk { Line | Function -0038 | TV_DeleteAll(TV) -0055 | TV_GetSelection(TV) -0069 | TV_GetChild(TV, ItemID) -0083 | TV_GetParent(TV, ItemID) -0170 | TV_GetEdit(TV) -0221 | TV_GetTextColor(TV) -0260 | TV_GetBkColor(TV) -0298 | TV_GetLineColor(TV) -0315 | TV_SetLineColor(TV, Color) -0608 | TV_GetIndent(TV) -0641 | TV_GetInsertMarkColor(TV) -0689 | TV_GetISearchStr(TV) -0711 | TV_GetHeight(TV) -0800 | TV_DragDrop(TV) +0061 | TV_DeleteAll(TV) +0084 | TV_GetSelection(TV) +0105 | TV_GetChild(TV, ItemID) +0126 | TV_GetParent(TV, ItemID) +0220 | TV_GetEdit(TV) +0271 | TV_GetTextColor(TV) +0310 | TV_GetBkColor(TV) +0348 | TV_GetLineColor(TV) +0365 | TV_SetLineColor(TV, Color) +0658 | TV_GetIndent(TV) +0691 | TV_GetInsertMarkColor(TV) +0739 | TV_GetISearchStr(TV) +0761 | TV_GetHeight(TV) +0850 | TV_DragDrop(TV) } -[1502] i_to_z\TskDlg.ahk { +[1519] i_to_z\TskDlg.ahk { Line | Function } -[1503] i_to_z\TT.ahk { +[1520] i_to_z\TT.ahk { Line | Function 0148 | TT_Init() @@ -21295,12 +21383,12 @@ Line | Function 0761 | TTM_WINDOWFROMPOINT(T,pPOINT) } -[1504] i_to_z\TVDAD.ahk { +[1521] i_to_z\TVDAD.ahk { Line | Function } -[1505] i_to_z\TVX.ahk { +[1522] i_to_z\TVX.ahk { Line | Function 0004 | TVX( pTree, pSub, pOptions="", pUserData="" ) @@ -21312,31 +21400,31 @@ Line | Function 0364 | TVX_OnKeyPress(pKey) } -[1506] i_to_z\TV_SetSelColors.ahk { +[1523] i_to_z\TV_SetSelColors.ahk { Line | Function } -[1507] i_to_z\TwipToPixel.ahk { +[1524] i_to_z\TwipToPixel.ahk { Line | Function 0001 | TwipToPixel(Twip) } -[1508] i_to_z\txtList.ahk { +[1525] i_to_z\txtList.ahk { Line | Function 0001 | txtList(path) } -[1509] i_to_z\type.ahk { +[1526] i_to_z\type.ahk { Line | Function 0004 | type(v) 0011 | com_type(ByRef v) } -[1510] i_to_z\TypeFunctions.ahk { +[1527] i_to_z\TypeFunctions.ahk { Line | Function 0039 | IsType( p_Input , p_Type ) @@ -21346,7 +21434,7 @@ Line | Function 0156 | CommonTypes( p_InputList ) } -[1511] i_to_z\TypeLibHelperFunctions.ahk { +[1528] i_to_z\TypeLibHelperFunctions.ahk { Line | Function 0047 | TypeLibToHeadingsObj(TypeLib) @@ -21364,7 +21452,7 @@ Line | Function 0400 | GetTypeObjPostProcessing(TypeObj) } -[1512] i_to_z\TypeLibInterfaces.ahk { +[1529] i_to_z\TypeLibInterfaces.ahk { Line | Function 0051 | GetTypeInfoCount() @@ -21424,7 +21512,7 @@ Line | Function 0640 | VTSize(kind, bitness=0) } -[1513] i_to_z\uia.ahk { +[1530] i_to_z\uia.ahk { Line | Function 0007 | __new() @@ -21783,7 +21871,7 @@ Line | Function 3544 | GUID(ByRef GUID, sGUID) } -[1514] i_to_z\UIA2.ahk { +[1531] i_to_z\UIA2.ahk { Line | Function 0007 | __new(p=0) @@ -22145,7 +22233,7 @@ Line | Function 2784 | GUID(ByRef GUID, sGUID) } -[1515] i_to_z\UIAutomationClient_1_0_64bit.ahk { +[1532] i_to_z\UIAutomationClient_1_0_64bit.ahk { Line | Function 0031 | CUIAutomation() @@ -22579,7 +22667,7 @@ Line | Function 8752 | __Delete() } -[1516] i_to_z\UIA_Interface.ahk { +[1533] i_to_z\UIA_Interface.ahk { Line | Function 0020 | __New(p="", flag=1) @@ -22668,13 +22756,13 @@ Line | Function 0756 | MsgBox(msg) } -[1517] i_to_z\UnHTM.ahk { +[1534] i_to_z\UnHTM.ahk { Line | Function 0007 | UnHTM( HTM ) } -[1518] i_to_z\unhtml.ahk { +[1535] i_to_z\unhtml.ahk { Line | Function 0012 | unHTML(html) @@ -22684,21 +22772,21 @@ Line | Function 0084 | Deref_Umlauts( w, n=1 ) } -[1519] i_to_z\Unidecode.ahk { +[1536] i_to_z\Unidecode.ahk { Line | Function 0072 | RegExMatchGlobal(ByRef Haystack, NeedleRegEx) 0081 | UnidecodeTable() } -[1520] i_to_z\Unique_IDentifiers.ahk { +[1537] i_to_z\Unique_IDentifiers.ahk { Line | Function 0005 | CreateUUID() 0020 | CreateGUID() } -[1521] i_to_z\uniscribe.ahk { +[1538] i_to_z\uniscribe.ahk { Line | Function 0002 | ScriptIsComplex(pTxt, sz=0, flags=1) @@ -22708,45 +22796,45 @@ Line | Function 0055 | ScriptStringFree(ByRef pssa) } -[1522] i_to_z\Update.ahk { +[1539] i_to_z\Update.ahk { Line | Function 0139 | VersionCompare(version1, version2) 0173 | CopyFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false) } -[1523] i_to_z\UpdateCursors.ahk { +[1540] i_to_z\UpdateCursors.ahk { Line | Function 0004 | UpdateCursors() } -[1524] i_to_z\UpdateDesktop.ahk { +[1541] i_to_z\UpdateDesktop.ahk { Line | Function 0004 | UpdateDesktop() } -[1525] i_to_z\UpdateFolderTime.ahk { +[1542] i_to_z\UpdateFolderTime.ahk { Line | Function 0009 | GetLastModified(file, ByRef _lastModified) } -[1526] i_to_z\UpdateIcons.ahk { +[1543] i_to_z\UpdateIcons.ahk { Line | Function 0004 | UpdateIcons() } -[1527] i_to_z\updateLibPath.ahk { +[1544] i_to_z\updateLibPath.ahk { Line | Function 0001 | updateLibPath(createNew=1) 0003 | if(createNew) } -[1528] i_to_z\Updater_v2.ahk { +[1545] i_to_z\Updater_v2.ahk { Line | Function 0031 | Start_Script() @@ -22761,13 +22849,13 @@ Line | Function 0245 | Exit_Func(ExitReason, ExitCode) } -[1529] i_to_z\UpdateSysAssoc.ahk { +[1546] i_to_z\UpdateSysAssoc.ahk { Line | Function 0004 | UpdateSysAssoc() } -[1530] i_to_z\UpdRes.ahk { +[1547] i_to_z\UpdRes.ahk { Line | Function 0024 | UpdRes_LockResource(sBinFile, sResName, nResType, ByRef szData) @@ -22778,67 +22866,67 @@ Line | Function 0221 | __UpdRes_EnumeratorCallback(hModule, lpszType, lpszName, lParam) } -[1531] i_to_z\Upper.ahk { +[1548] i_to_z\Upper.ahk { Line | Function 0011 | Upper(Text) } -[1532] i_to_z\uriencode.ahk { +[1549] i_to_z\uriencode.ahk { Line | Function 0001 | uriEncode(str) } -[1533] { +[1550] { Line | Function 0030 | uriDecode(str) 0039 | uriEncode(str) } -[1534] i_to_z\URL (2).ahk { +[1551] i_to_z\URL (2).ahk { Line | Function } -[1535] i_to_z\Url.ahk { +[1552] i_to_z\Url.ahk { Line | Function 0035 | URLDecode(Url) } -[1536] i_to_z\UrlDownload.ahk { +[1553] i_to_z\UrlDownload.ahk { Line | Function 0009 | urlDownload_Call(ptrThis, intProgCur = 0, intProgMax = 0, intStatCode = 0, ptrStatText = 0) 0038 | urlDownload_File(strUrl, strDest = ".", blnOver = True) } -[1537] i_to_z\urlDownloadToFile.ahk { +[1554] i_to_z\urlDownloadToFile.ahk { Line | Function } -[1538] i_to_z\UrlDownloadToJson.ahk { +[1555] i_to_z\UrlDownloadToJson.ahk { Line | Function 0022 | UrlDownloadToJson(input) } -[1539] i_to_z\UrlDownloadToVar.ahk { +[1556] i_to_z\UrlDownloadToVar.ahk { Line | Function 0006 | Download(ByRef Result,URL) } -[1540] i_to_z\urlFileGetSize.ahk { +[1557] i_to_z\urlFileGetSize.ahk { Line | Function 0010 | urlFileGetSize(url,units=0) } -[1541] i_to_z\USBD.ahk { +[1558] i_to_z\USBD.ahk { Line | Function 0004 | USBD_SafelyRemove( Drv ) @@ -22847,7 +22935,7 @@ Line | Function 0045 | USBD_DeviceEject( DeviceID ) } -[1542] i_to_z\USBUIRT.ahk { +[1559] i_to_z\USBUIRT.ahk { Line | Function 0035 | USBUIRT_LoadDLL() @@ -22864,14 +22952,14 @@ Line | Function 0165 | USBUIRT_Abort(LearnPID) } -[1543] i_to_z\UTF8IniFile.ahk { +[1560] i_to_z\UTF8IniFile.ahk { Line | Function 0046 | JEE_StrUtf8BytesToText(vUtf8) 0057 | JEE_StrTextToUtf8Bytes(vText) } -[1544] i_to_z\Util.ahk { +[1561] i_to_z\Util.ahk { Line | Function 0002 | Util_VersionCompare(other,local) @@ -22889,18 +22977,60 @@ Line | Function 0155 | Util_isASCII(s) } -[1545] i_to_z\uuid.ahk { +[1562] i_to_z\uuid.ahk { Line | Function 0003 | uuid(c = false) } -[1546] i_to_z\UUIDCreate.ahk { - -Line | Function - -} -[1547] i_to_z\VA (2).ahk { +[1563] i_to_z\UUIDCreate.ahk { + +Line | Function + +} +[1564] i_to_z\UxTheme.ahk { + +Line | Function +0024 | UxTheme_Init() +0057 | UxTheme_GetCurrentThemeName(ByRef pszThemeFileName, cchMaxNameChars, ByRef pszColorBuff, cchMaxColorChars, ByRef pszSizeBuff, cchMaxSizeChars) +0065 | UxTheme_SetThemeAppProperties(dwFlags) +0072 | UxTheme_OpenThemeData(hWnd, pszClassIdList) +0080 | UxTheme_OpenThemeDataEx(hWnd, pszClassIdList, dwFlags) +0088 | UxTheme_CloseThemeData(hTheme) +0095 | UxTheme_SetWindowTheme(hWnd, pszSubAppName="", pszSubIdList="") +0103 | UxTheme_GetWindowTheme(hWnd) +0111 | UxTheme_GetThemeSysColor(hTheme, iColorID) +0118 | UxTheme_GetThemePartsize(hTheme, hDC, iPartId, iStateId, prc, arg6, ByRef psz) +0126 | UxTheme_GetThemeSysColorBrush(hTheme, iColorID) +0133 | UxTheme_GetThemeColor(hTheme, iPartId, iStateId, iPropId, ByRef pColor) +0140 | UxTheme_GetThemeTextExtent(hTheme, hDC, iPartId, iStateId, pszText, iCharCount, dwTextFlags, pBoundingRect, ByRef pExtentRect) +0150 | UxTheme_GetThemeSysFont(hTheme, iFontId, ByRef LOGFONT) +0158 | UxTheme_GetThemeFont(hTheme, hDC, iPartId, iStateId, iPropId, ByRef LOGFONT) +0167 | UxTheme_SetWindowThemeAttribute(hWnd, eAttribute, pvAttribute, cbAttribute) +0175 | UxTheme_DrawThemeText(hTheme, hDC, iPartId, iStateId, pszText, iCharCount, dwFlags, dwTextFlags2, pRect) +0185 | UxTheme_DrawThemeTextEx(hTheme, hDC, iPartId, iStateId, pszText, iCharCount, dwFlags, pRect, pOptions) +0195 | UxTheme_DrawThemeBackground(hTheme, hDC, iPartId, iStateId, pRect, pClipRect) +0204 | UxTheme_DrawThemeBackgroundEx(hTheme, hDC, iPartId, iStateId, pRect, pOptions) +0213 | UxTheme_DrawThemeParentBackground(hWnd, hDC, pRect) +0221 | UxTheme_DrawThemeParentBackgroundEx(hWnd, hDC, dwFlags, pRect) +0229 | UxTheme_DrawThemeIcon(hTheme, hDC, iPartId, iStateId, pRect, himl, imageIndex) +0238 | UxTheme_BufferedPaintInit() +0246 | UxTheme_BufferedPaintUnInit() +0254 | UxTheme_BeginBufferedPaint(hdcTarget, prcTarget, dwFormat, pPaintParams, ByRef phdc) +0262 | UxTheme_EndBufferedPaint(hBufferedPaint, fUpdateTarget) +0270 | UxTheme_BufferedPaintSetAlpha(hBufferedPaint, prc, alpha) +0278 | UxTheme_GetThemeBackgroundContentRect(hTheme, hDC, iPartId, iStateId, pBoundingRect, ByRef pContentRect) +0287 | UxTheme_GetThemeRect(hTheme, iPartId, iStateId, iPropId, ByRef pRect) +0295 | UxTheme_GetThemeBackgroundExtent(hTheme, hDC, iPartId, iStateId, pContentRect, ByRef pExtentRect) +0304 | UxTheme_IsThemeActive() +0312 | UxTheme_IsCompositionActive() +0320 | UxTheme_IsAppThemed() +0328 | UxTheme_IsThemeDialogTextureEnabled(hWnd) +0336 | UxTheme_IsThemeBackgroundPartiallyTransparent(hTheme, iPartId, iStateId) +0344 | UxTheme_EnableThemeDialogTexture(hWnd, dwFlags) + +} +[1565] i_to_z\VA (2).ahk { Line | Function 0005 | VA_GetMasterVolume(channel="", device_desc="playback") @@ -22994,7 +23124,7 @@ Line | Function 0680 | VA_IAudioMeterInformation_QueryHardwareSupport(this, ByRef HardwareSupportMask) } -[1548] i_to_z\VA.ahk { +[1566] i_to_z\VA.ahk { Line | Function 0008 | VA_GetMasterVolume(channel="", device_desc="playback") @@ -23140,7 +23270,7 @@ Line | Function 0934 | GetVolumeObject(Param = 0) } -[1549] i_to_z\ValidIP.ahk { +[1567] i_to_z\ValidIP.ahk { Line | Function 0001 | ValidIP(ByRef IPAddress) @@ -23148,38 +23278,38 @@ Line | Function 0047 | ValidIP(a) } -[1550] i_to_z\VarHistory.ahk { +[1568] i_to_z\VarHistory.ahk { Line | Function 0042 | VarHistory(p_Dest,p_Orig="",p_Show=0,p_Func="") 0090 | SumAll(x="") } -[1551] i_to_z\VARIANT.ahk { +[1569] i_to_z\VARIANT.ahk { Line | Function 0001 | VARIANT_Create(value, byRef buffer) 0015 | VARIANT_GetValue(variant) } -[1552] i_to_z\VariemClick.ahk { +[1570] i_to_z\VariemClick.ahk { Line | Function 0044 | VariemClick(ImageFile, NumberOfTries=10, Start_Vari=0, Max_Vari=80, Click_X_Offset=0, Click_Y_Offset=0, WaitBetweenClicks=100) } -[1553] i_to_z\VariousFunctions.ahk { +[1571] i_to_z\VariousFunctions.ahk { Line | Function } -[1554] i_to_z\Varize.ahk { +[1572] i_to_z\Varize.ahk { Line | Function 0001 | varize(var, autofix = true) } -[1555] i_to_z\VarZ_Compress.ahk { +[1573] i_to_z\VarZ_Compress.ahk { Line | Function 0064 | VarZ_Uncompress( ByRef D ) @@ -23188,7 +23318,7 @@ Line | Function 0127 | VarZ_Save( ByRef Data, DataSize, TrgFile ) } -[1556] i_to_z\VAWrapper.ahk { +[1574] i_to_z\VAWrapper.ahk { Line | Function 0007 | VAWrapper_mute(winTitle="", action="") @@ -23199,13 +23329,13 @@ Line | Function 0102 | VA_ISimpleAudioVolume_GetMute(this, ByRef Muted) } -[1557] i_to_z\VersionCompare.ahk { +[1575] i_to_z\VersionCompare.ahk { Line | Function 0008 | VersionCompare(version1, version2) } -[1558] i_to_z\VersionRes.ahk { +[1576] i_to_z\VersionRes.ahk { Line | Function 0034 | _NewEnum() @@ -23217,19 +23347,19 @@ Line | Function 0072 | Save(addr) } -[1559] i_to_z\VerticalTextAlign.ahk { +[1577] i_to_z\VerticalTextAlign.ahk { Line | Function 0001 | VerticalTextAlign(ByRef fnSqlText) } -[1560] { +[1578] { Line | Function 0032 | View( Text, Options= "" ) } -[1561] i_to_z\Vis2.ahk { +[1579] i_to_z\Vis2.ahk { Line | Function 0035 | google() @@ -23240,7 +23370,7 @@ Line | Function 0183 | selectImageAdvanced() } -[1562] i_to_z\VJoy_lib.ahk { +[1580] i_to_z\VJoy_lib.ahk { Line | Function 0025 | VJoy_LoadLibrary() @@ -23316,13 +23446,13 @@ Line | Function 0835 | parse_rel_val(invar, curval, max) } -[1563] i_to_z\VKSend.ahk { +[1581] i_to_z\VKSend.ahk { Line | Function 0001 | VKSend(Sequence) } -[1564] i_to_z\VLCHTTP3.ahk { +[1582] i_to_z\VLCHTTP3.ahk { Line | Function 0026 | VLCHTTP3_Start(VLC_path, plist = "") @@ -23395,7 +23525,7 @@ Line | Function 0734 | uriDecode(str) } -[1565] i_to_z\VOL.ahk { +[1583] i_to_z\VOL.ahk { Line | Function 0008 | VOL_GetMasterVolume(channel="", device_desc="playback") @@ -23525,7 +23655,7 @@ Line | Function 0842 | VOL_IAudioSessionEnumerator_GetSession(this, SessionCount, ByRef Session) } -[1566] i_to_z\vpk.ahk { +[1584] i_to_z\vpk.ahk { Line | Function 0015 | vpk_Compile(SourcePath) @@ -23533,12 +23663,12 @@ Line | Function 0059 | vpk_Run(command) } -[1567] i_to_z\vtype.ahk { +[1585] i_to_z\vtype.ahk { Line | Function } -[1568] i_to_z\WaitForEvent.ahk { +[1586] i_to_z\WaitForEvent.ahk { Line | Function 0039 | WaitForEvent(Parameter, Timeout = 0, Incremental = 0, FinishWaiting = false) @@ -23547,20 +23677,20 @@ Line | Function 0098 | RaiseEvent(Parameter) } -[1569] i_to_z\WaitForIEPageLoad.ahk { +[1587] i_to_z\WaitForIEPageLoad.ahk { Line | Function 0025 | IE_DocumentComplete(prms, sink) 0037 | IEReady(hIESvr = 0) } -[1570] i_to_z\WaitPixelColor.ahk { +[1588] i_to_z\WaitPixelColor.ahk { Line | Function 0036 | WaitPixelColor(p_DesiredColor,p_PosX,p_PosY,p_TimeOut=0,p_GetMode="",p_ReturnColor=0) } -[1571] i_to_z\WakeOnLan.ahk { +[1589] i_to_z\WakeOnLan.ahk { Line | Function 0006 | WakeOnLAN(mac) @@ -23568,7 +23698,7 @@ Line | Function 0020 | CreateBinary(hexString, ByRef var) } -[1572] i_to_z\WAnim.ahk { +[1590] i_to_z\WAnim.ahk { Line | Function 0005 | WAnim_SlideIn(sFrom, iX, iY, hWnd, sGUI="", iInc=20) @@ -23579,23 +23709,23 @@ Line | Function 0219 | WAnim_ShrinkExpand(bShrink, sDir, iX, iY, iW, iH, hwnd, iInc, sGUIName="") } -[1573] i_to_z\WatchDirectory.ahk { +[1591] i_to_z\WatchDirectory.ahk { Line | Function 0038 | WatchDirectory(WatchFolder="", WatchSubDirs=true) } -[1574] i_to_z\WatchFolder.ahk { +[1592] i_to_z\WatchFolder.ahk { Line | Function } -[1575] i_to_z\WBImg.ahk { +[1593] i_to_z\WBImg.ahk { Line | Function } -[1576] i_to_z\web.ahk { +[1594] i_to_z\web.ahk { Line | Function 0040 | web_headers() @@ -23608,7 +23738,7 @@ Line | Function 0254 | web_get_resume(resume_id) } -[1577] i_to_z\Webapp.ahk { +[1595] i_to_z\Webapp.ahk { Line | Function 0142 | NavigateComplete2(wb, NewURL) @@ -23638,17 +23768,17 @@ Line | Function 0463 | GET_KEYSTATE_WPARAM(wparam) } -[1578] i_to_z\WebBrowserCtl.ahk { +[1596] i_to_z\WebBrowserCtl.ahk { Line | Function } -[1579] i_to_z\WebPic.ahk { +[1597] i_to_z\WebPic.ahk { Line | Function } -[1580] i_to_z\websocket.ahk { +[1598] i_to_z\websocket.ahk { Line | Function 0036 | websocket_connect(hostStr) @@ -23658,7 +23788,7 @@ Line | Function 0056 | websocket_registerCallback(id, func) } -[1581] i_to_z\wgl.ahk { +[1599] i_to_z\wgl.ahk { Line | Function 0010 | wglCopyContext(hglrcSrc, hglrcDst, mask) @@ -23690,7 +23820,7 @@ Line | Function 0253 | SetPixelFormat(hdc, iPixelFormat, ppfd) } -[1582] i_to_z\WIA.ahk { +[1600] i_to_z\WIA.ahk { Line | Function 0028 | WIA_CreateImage(PxWidth, PxHeight, ARGBData) @@ -23703,7 +23833,7 @@ Line | Function 0273 | WIA_ImageProcess() } -[1583] i_to_z\wic.ahk { +[1601] i_to_z\wic.ahk { Line | Function 0008 | __new() @@ -23786,7 +23916,7 @@ Line | Function 1231 | WIC_hr(a,b) } -[1584] i_to_z\Win.ahk { +[1602] i_to_z\Win.ahk { Line | Function 0040 | Win_Animate(Hwnd, Type="", Time=100) @@ -23807,25 +23937,25 @@ Line | Function 0695 | Win_Subclass(hCtrl, Fun, Opt="", ByRef $WndProc="") } -[1585] i_to_z\WinApi.ahk { +[1603] i_to_z\WinApi.ahk { Line | Function 0017 | WinApi(mapping="advapi32.dll comctl32.dll comdlg32.dll gdi32.dll kernel32.dll ole32.dll oleaut32.dll psapi.dll shell32.dll user32.dll version.dll winmm.dll wsock32.dll",object="advapi32.dll comctl32.dll comdlg32.dll gdi32.dll kernel32.dll ole32.dll oleaut32.dll psapi.dll shell32.dll user32.dll version.dll winmm.dll wsock32.dll") } -[1586] i_to_z\WinApiDef.ahk { +[1604] i_to_z\WinApiDef.ahk { Line | Function 0001 | WinApiDef(def) } -[1587] i_to_z\WinCaption.ahk { +[1605] i_to_z\WinCaption.ahk { Line | Function 0001 | WinCaption(Hwnd) } -[1588] i_to_z\WinClip.ahk { +[1606] i_to_z\WinClip.ahk { Line | Function 0012 | __New() @@ -23904,7 +24034,7 @@ Line | Function 0974 | SaveBitmap( filePath, format ) } -[1589] i_to_z\WinClipAPI.ahk { +[1607] i_to_z\WinClipAPI.ahk { Line | Function 0018 | Err( msg ) @@ -23945,17 +24075,17 @@ Line | Function 0242 | GetEncoderClsid( format, ByRef CLSID ) } -[1590] i_to_z\WINDERS.ahk { +[1608] i_to_z\WINDERS.ahk { Line | Function } -[1591] i_to_z\Window Roller.ahk { +[1609] i_to_z\Window Roller.ahk { Line | Function } -[1592] i_to_z\Window.ahk { +[1610] i_to_z\Window.ahk { Line | Function 0016 | Window_activate(wndId) @@ -23980,19 +24110,33 @@ Line | Function 0322 | Window_toggleDecor(wndId = 0) } -[1593] i_to_z\WindowFromPoint.ahk { +[1611] i_to_z\WindowFilter.ahk { + +Line | Function +0002 | WindowFilter_Init(WindowFilter) +0007 | WindowFilter_ReadXML(WindowFilterObject, XMLWindowFilter) +0013 | WindowFilter_Get(WindowFilter) +0015 | if(WindowFilter.WindowMatchType = "Program") +0071 | WindowFilter_Matches(WindowFilter, TargetWindow, TriggerFilter = "") +0086 | if(WindowFilter.WindowMatchType = "Program") +0117 | WindowFilter_DisplayString(WindowFilter) +0122 | WindowFilter_GuiShow(WindowFilter, TriggerGUI) +0128 | WindowFilter_GuiSubmit(WindowFilter, TriggerGUI) + +} +[1612] i_to_z\WindowFromPoint.ahk { Line | Function 0048 | WindowFromPoint_EnumChildProc(hWnd, pData) } -[1594] i_to_z\WindowFromRect.ahk { +[1613] i_to_z\WindowFromRect.ahk { Line | Function 0037 | WindowFromRect_EnumChildProc(hWnd, pData) } -[1595] i_to_z\WindowPad.ahk { +[1614] i_to_z\WindowPad.ahk { Line | Function 0039 | WindowPad_LoadSettings(ininame) @@ -24014,7 +24158,7 @@ Line | Function 0655 | GetLastMinimizedWindow() } -[1596] i_to_z\WindowsBase.ahk { +[1615] i_to_z\WindowsBase.ahk { Line | Function 0008 | GUID2Str(guid) @@ -24035,37 +24179,37 @@ Line | Function 0213 | SizeOf() } -[1597] i_to_z\windowscalepos.ahk { +[1616] i_to_z\windowscalepos.ahk { Line | Function 0023 | WindowScaledPos(ByRef PosX, ByRef PosY, ByRef ClientScaleFactor, ScaleType="Screen", WinId="") } -[1598] i_to_z\WindowShellEvent.ahk { +[1617] i_to_z\WindowShellEvent.ahk { Line | Function 0007 | WindowShellEvent(funcName) } -[1599] i_to_z\WindowsLogs.ahk { +[1618] i_to_z\WindowsLogs.ahk { Line | Function 0018 | WinEvents_RegisterForEvents(sLogName) 0028 | WinEvents_DeregisterForEvents(hSource) } -[1600] i_to_z\WindowSuperMaxStatus.ahk { +[1619] i_to_z\WindowSuperMaxStatus.ahk { Line | Function 0001 | WindowSuperMaxStatus(fnX,fnY,fnW,fnH) } -[1601] i_to_z\WinEnum.ahk { +[1620] i_to_z\WinEnum.ahk { Line | Function } -[1602] i_to_z\WinEvents.ahk { +[1621] i_to_z\WinEvents.ahk { Line | Function 0106 | UnHookEvent(functionname, events) @@ -24074,64 +24218,64 @@ Line | Function 0135 | DeleteWinEventHook(functionname, event) } -[1603] i_to_z\WinFade.ahk { +[1622] i_to_z\WinFade.ahk { Line | Function 0026 | If( A_DetectHiddenWindows = "On" ) } -[1604] i_to_z\WinGetAll (2).ahk { +[1623] i_to_z\WinGetAll (2).ahk { Line | Function 0001 | WinGetAll(Which="Title", DetectHidden="Off") } -[1605] i_to_z\WinGetAll.ahk { +[1624] i_to_z\WinGetAll.ahk { Line | Function 0001 | WinGetAll(TextFile = True, DetHidden = False) } -[1606] i_to_z\WinGetAtCoords.ahk { +[1625] i_to_z\WinGetAtCoords.ahk { Line | Function 0001 | WinGetAtCoords(x,y,what="Title") 0023 | CoordGetConrol(xCoord, yCoord) } -[1607] i_to_z\WinGetPidList.ahk { +[1626] i_to_z\WinGetPidList.ahk { Line | Function } -[1608] i_to_z\WinGetPos.ahk { +[1627] i_to_z\WinGetPos.ahk { Line | Function } -[1609] i_to_z\WinGetPosEx.ahk { +[1628] i_to_z\WinGetPosEx.ahk { Line | Function 0087 | WinGetPosEx(hWindow,ByRef X="",ByRef Y="",ByRef Width="",ByRef Height="",ByRef Offset_Left="",ByRef Offset_Top="",ByRef Offset_Right="",ByRef Offset_Bottom="") } -[1610] i_to_z\WinGroup.ahk { +[1629] i_to_z\WinGroup.ahk { Line | Function } -[1611] i_to_z\WinHttpRequest.ahk { +[1630] i_to_z\WinHttpRequest.ahk { Line | Function 0023 | WinHttpRequest( URL, ByRef In_POST__Out_Data="", ByRef In_Out_HEADERS="", Options="" ) } -[1612] i_to_z\winInfo.ahk { +[1631] i_to_z\winInfo.ahk { Line | Function } -[1613] i_to_z\WinIniNet.ahk { +[1632] i_to_z\WinIniNet.ahk { Line | Function 0013 | WININET_Init() @@ -24155,7 +24299,7 @@ Line | Function 0229 | UrlGetContents(sUrl,sUserName="",sPassword="",sPostData="",sUserAgent="Autohotkey") } -[1614] i_to_z\WinIsOverlay.ahk { +[1633] i_to_z\WinIsOverlay.ahk { Line | Function 0028 | WindowIsOverlayed(WinId) @@ -24164,25 +24308,25 @@ Line | Function 0158 | ClassOnTopAtXY(X,Y) } -[1615] i_to_z\WinMoveGetPos.ahk { +[1634] i_to_z\WinMoveGetPos.ahk { Line | Function } -[1616] i_to_z\WinMovePos.ahk { +[1635] i_to_z\WinMovePos.ahk { Line | Function 0019 | WinMovePos(winHwnd, pos) } -[1617] i_to_z\winos.ahk { +[1636] i_to_z\winos.ahk { Line | Function 0014 | winos_GetTimestampUTC() 0025 | winos_isotime_now() } -[1618] i_to_z\WinProps.ahk { +[1637] i_to_z\WinProps.ahk { Line | Function 0015 | EnumWindowProps(hWnd) @@ -24191,12 +24335,12 @@ Line | Function 0079 | RemoveWindowProp(hWnd, String) } -[1619] i_to_z\WinServ.ahk { +[1638] i_to_z\WinServ.ahk { Line | Function } -[1620] i_to_z\WinSet_Click_Through.ahk { +[1639] i_to_z\WinSet_Click_Through.ahk { Line | Function 0021 | WinSet_Click_Through(I="", T="150") @@ -24209,14 +24353,14 @@ Line | Function 0357 | WinSet_Click_Through_Click() } -[1621] i_to_z\WinSet_NoActivate.ahk { +[1640] i_to_z\WinSet_NoActivate.ahk { Line | Function 0020 | WinSet_NoActivate(I="", T="On") 0071 | WinGet_NoActivate(I="") } -[1622] i_to_z\WinSock2.ahk { +[1641] i_to_z\WinSock2.ahk { Line | Function 0036 | WS2_Connect(lpszUrl) @@ -24240,7 +24384,7 @@ Line | Function 0443 | __WinINet_InternetCrackURL(lpszUrl,arrayName="URL") } -[1623] i_to_z\WinSysMenuApi.ahk { +[1642] i_to_z\WinSysMenuApi.ahk { Line | Function 0028 | GetSystemMenu(ByRef hWnd, Revert = False) @@ -24272,7 +24416,7 @@ Line | Function 0110 | EnableWindowClosing(hWnd = "") } -[1624] i_to_z\winvisible (2).ahk { +[1643] i_to_z\winvisible (2).ahk { Line | Function 0001 | WinVisible(hwnd) @@ -24283,19 +24427,19 @@ Line | Function 0073 | WinStack(ByRef arr) } -[1625] i_to_z\WinVisible.ahk { +[1644] i_to_z\WinVisible.ahk { Line | Function 0001 | WinVisible(Title) } -[1626] i_to_z\Win__Fling.ahk { +[1645] i_to_z\Win__Fling.ahk { Line | Function 0032 | Win__Fling(FlingDirection = 1, WinID = "A") } -[1627] i_to_z\WLAN.ahk { +[1646] i_to_z\WLAN.ahk { Line | Function 0170 | WLAN_WlanAllocateMemory(dwMemorySize) @@ -24343,20 +24487,20 @@ Line | Function 0400 | Wlan_Unicode4Ansi(ByRef wString, sString) } -[1628] i_to_z\Wmic_Win32_FunctionLog.ahk { +[1647] i_to_z\Wmic_Win32_FunctionLog.ahk { Line | Function 0005 | wmic_Win32_Group() 0035 | wmic_Win32_GroupUser() } -[1629] i_to_z\wordcount.ahk { +[1648] i_to_z\wordcount.ahk { Line | Function 0032 | WordCount(String) } -[1630] i_to_z\WorkerThread.ahk { +[1649] i_to_z\WorkerThread.ahk { Line | Function 0042 | __new(WorkerFunction, CanPause = 0, CanStop = 0, ExitAfterTask = 1) @@ -24385,7 +24529,7 @@ Line | Function 0494 | Send_WM_COPYDATA(ByRef StringToSend, hwnd) } -[1631] i_to_z\WPD.ahk { +[1650] i_to_z\WPD.ahk { Line | Function 0009 | GetDevices() @@ -24553,19 +24697,19 @@ Line | Function 1671 | WPD_hr(a,b) } -[1632] i_to_z\WRandom.ahk { +[1651] i_to_z\WRandom.ahk { Line | Function 0037 | WRandom(p_FieldStr,ByRef out_Chance=0,ByRef out_P2D=0,ByRef out_D2P=0) } -[1633] i_to_z\WrapText (2).ahk { +[1652] i_to_z\WrapText (2).ahk { Line | Function 0183 | If(WrapText_currentBreakType == "before") } -[1634] i_to_z\WrapText.ahk { +[1653] i_to_z\WrapText.ahk { Line | Function 0100 | WrapText_Force(TextToWrap,LengthLim,delims="") @@ -24573,18 +24717,18 @@ Line | Function 0266 | ExtractInteger(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4) } -[1635] i_to_z\WriteFileLine.ahk { +[1654] i_to_z\WriteFileLine.ahk { Line | Function } -[1636] i_to_z\WriteMemory.ahk { +[1655] i_to_z\WriteMemory.ahk { Line | Function 0031 | WriteMemory(WriteAddress = "", PROGRAM="", Data="", TypeOrLength = "") } -[1637] i_to_z\Writer.ahk { +[1656] i_to_z\Writer.ahk { Line | Function 0002 | Writer_Add(hParent, X, Y, W, H, Style="", Text="", Font="") @@ -24596,12 +24740,12 @@ Line | Function 0167 | Writer_enumFontsProc(lplf, lptm, dwType, lpData) } -[1638] i_to_z\WriteToLogs.ahk { +[1657] i_to_z\WriteToLogs.ahk { Line | Function } -[1639] i_to_z\ws.ahk { +[1658] i_to_z\ws.ahk { Line | Function 0074 | WS_HandleEvents(socket, events="READ ACCEPT CONNECT CLOSE") @@ -24632,7 +24776,7 @@ Line | Function 0887 | WS_GetLog() } -[1640] i_to_z\WS2.ahk { +[1659] i_to_z\WS2.ahk { Line | Function 0035 | WS2_Connect(lpszUrl) @@ -24656,7 +24800,7 @@ Line | Function 0442 | __WinINet_InternetCrackURL(lpszUrl,arrayName="URL") } -[1641] i_to_z\ws4ahk.ahk { +[1660] i_to_z\ws4ahk.ahk { Line | Function 0113 | WS_Initialize(sLanguage = "VBScript", sMSScriptOCX="") @@ -24705,7 +24849,7 @@ Line | Function 2820 | __WS_IUnknown_Release(ppv) } -[1642] i_to_z\WS_CoEvent.ahk { +[1661] i_to_z\WS_CoEvent.ahk { Line | Function 0035 | GetDefaultConnection(pdisp) @@ -24717,7 +24861,7 @@ Line | Function 0130 | DispInterface(pthis, prm1=0, prm2=0, prm3=0, prm4=0, prm5=0, prm6=0, prm7=0, prm8=0) } -[1643] i_to_z\WS_DEControl.ahk { +[1662] i_to_z\WS_DEControl.ahk { Line | Function 0128 | DE_Add(hWnd, x, y, w, h) @@ -24739,7 +24883,7 @@ Line | Function 0261 | DE_DOM(sDHtmlEdit) } -[1644] i_to_z\WS_DEControl2.ahk { +[1663] i_to_z\WS_DEControl2.ahk { Line | Function 0129 | DE_Add(hWnd, x, y, w, h) @@ -24781,14 +24925,14 @@ Line | Function 0436 | GetSelection() } -[1645] i_to_z\WS_RemoveErrChk.ahk { +[1664] i_to_z\WS_RemoveErrChk.ahk { Line | Function 0047 | LineBeginsErrorChecking(sLine) 0056 | LineEndsErrorChecking(sLine) } -[1646] i_to_z\xa.ahk { +[1665] i_to_z\xa.ahk { Line | Function 0019 | XA_Save(Array, Path) @@ -24801,7 +24945,7 @@ Line | Function 0177 | XA_CleanInvalidChars(text, replace="") } -[1647] i_to_z\XButton.ahk { +[1666] i_to_z\XButton.ahk { Line | Function 0137 | XButton_Add(hCtrl,xFunc,xType,xStyle,xText="",xImage="",xPos="",xSize=1) @@ -24823,18 +24967,18 @@ Line | Function 0671 | xButton_OnCommand(wparam,lparam) } -[1648] i_to_z\XGraph.ahk { +[1667] i_to_z\XGraph.ahk { Line | Function 0268 | XGraph_Detach( pGraph ) } -[1649] i_to_z\xHotkeyNormalize.ahk { +[1668] i_to_z\xHotkeyNormalize.ahk { Line | Function } -[1650] i_to_z\Xinput.ahk { +[1669] i_to_z\Xinput.ahk { Line | Function 0001 | XinputSetState(index = 1, left_ = 0, right_ = 0) @@ -24843,7 +24987,13 @@ Line | Function 0137 | XinputGetEvent(index) } -[1651] i_to_z\XML.ahk { +[1670] { + +Line | Function +0039 | XMLDecode(value) + +} +[1671] i_to_z\XML.ahk { Line | Function 0167 | __Delete() @@ -24858,25 +25008,25 @@ Line | Function 0481 | style() } -[1652] i_to_z\XMLHTTP_Post.ahk { +[1672] i_to_z\XMLHTTP_Post.ahk { Line | Function 0069 | XMLHTTP_EchoWrongArg(arg) } -[1653] i_to_z\XMLHTTP_Request.ahk { +[1673] i_to_z\XMLHTTP_Request.ahk { Line | Function } -[1654] i_to_z\xmlPrettify.ahk { +[1674] i_to_z\xmlPrettify.ahk { Line | Function 0001 | XmlPrettify(input, params) 0006 | XmlUglify(input, params) } -[1655] i_to_z\xpath.ahk { +[1675] i_to_z\xpath.ahk { Line | Function 0032 | xpath(ByRef doc, step, set = "") @@ -24884,7 +25034,7 @@ Line | Function 0406 | xpath_load(ByRef doc, src = "") } -[1656] i_to_z\Yaml.ahk { +[1676] i_to_z\Yaml.ahk { Line | Function 0001 | Yaml(YamlText,IsFile=1,YamlObj=0) @@ -24908,7 +25058,7 @@ Line | Function 0639 | Yaml_IsSeqMap(value) } -[1657] i_to_z\youtube (not tested).ahk { +[1677] i_to_z\youtube (not tested).ahk { Line | Function 0017 | Youtube_GetVideoInfo(TrackId, ByRef Clip) @@ -24916,33 +25066,33 @@ Line | Function 0156 | Youtube_GetCMD(VideoLink, FileName, ByRef CommandLine) } -[1658] i_to_z\Zip.ahk { +[1678] i_to_z\Zip.ahk { Line | Function 0017 | Zip_Add(sZip, sFiles) 0051 | Zip_Extract(sZip, sDir) } -[1659] i_to_z\ZipFile.ahk { +[1679] i_to_z\ZipFile.ahk { Line | Function 0029 | __New(zip) 0189 | __Delete() } -[1660] i_to_z\ZipFileRaw.ahk { +[1680] i_to_z\ZipFileRaw.ahk { Line | Function } -[1661] i_to_z\_RemoteBuf.ahk { +[1681] i_to_z\_RemoteBuf.ahk { Line | Function 0017 | RemoteBuf_Open(ByRef H, hwnd, size) 0044 | RemoteBuf_Close(ByRef H) } -[1662] classes\class_3DMatrix.ahk { +[1682] classes\class_3DMatrix.ahk { Line | Function 0004 | __New() @@ -24958,7 +25108,7 @@ Line | Function 0089 | newRotate(angle,x,y,z) } -[1663] classes\class_accessibility.ahk { +[1683] classes\class_accessibility.ahk { Line | Function 0068 | single_get(uiAction) @@ -24969,7 +25119,7 @@ Line | Function 0266 | build_audiodescription_struct() } -[1664] classes\class_AccObj.ahk { +[1684] classes\class_AccObj.ahk { Line | Function 0034 | AccObj_GetRoleText(Role) @@ -24990,7 +25140,7 @@ Line | Function 0589 | _VTBL(Index) } -[1665] classes\class_AccObjObject.ahk { +[1685] classes\class_AccObjObject.ahk { Line | Function 0095 | __Delete() @@ -25005,48 +25155,48 @@ Line | Function 0460 | _VTBL(Index) } -[1666] classes\class_AccV2.ahk { - -Line | Function -0289 | byDefaultAction(oAcc,action) -0294 | byDescription(oAcc,desc) -0299 | byValue(oAcc,value) -0304 | byHelp(oAcc,help) -0308 | byState(oAcc,state) -0312 | byRole(oAcc,role) -0317 | byName(oAcc,name) -0322 | byRegex(oAcc,rx) -0333 | Acc_Init() -0337 | Acc_ObjectFromEvent(ByRef _idChild_, hWnd, idObject, idChild) -0350 | Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") -0363 | Acc_ObjectFromWindow(hWnd, idObject = -4) -0379 | Acc_WindowFromObject(pacc) -0389 | Acc_GetRoleText(nRole) -0402 | Acc_GetStateText(nState) -0415 | Acc_SetWinEventHook(eventMin, eventMax, pCallback) -0419 | Acc_UnhookWinEvent(hHook) -0433 | Acc_Role(Acc, ChildId=0) -0439 | Acc_State(Acc, ChildId=0) -0445 | Acc_Location(Acc, ChildId=0) -0463 | Acc_Parent(Acc) -0468 | Acc_Child(Acc, ChildId=0) -0474 | Acc_Query(Acc) -0488 | Acc_Error(p="") -0492 | Acc_Children(Acc) -0522 | Acc_ChildrenByRole(Acc, Role) -0542 | Acc_Get(Cmd, ChildPath="", ChildID=0, WinTitle="", WinText="", ExcludeTitle="", ExcludeText="") -0593 | acc_childrenByName(oAccessible, name,returnOne=false) -0608 | acc_childrenFilter(oAcc, fCondition, value=0, returnOne=false, obj=0) -0637 | acc_getRootElement() -0642 | __New(oAccParent,id) -0658 | accDoDefaultAction() -0662 | accHitTest() -0665 | accLocation(ByRef left, Byref top, ByRef width, ByRef height) -0668 | accNavigate() -0671 | accSelect(flagsSelect) - -} -[1667] classes\class_actionObject.ahk { +[1686] classes\class_AccV2.ahk { + +Line | Function +0366 | byDefaultAction(oAcc,action) +0371 | byDescription(oAcc,desc) +0376 | byValue(oAcc,value) +0381 | byHelp(oAcc,help) +0385 | byState(oAcc,state) +0389 | byRole(oAcc,role) +0394 | byName(oAcc,name) +0399 | byRegex(oAcc,rx) +0410 | Acc_Init() +0415 | Acc_ObjectFromEvent(ByRef _idChild_, hWnd, idObject, idChild) +0429 | Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") +0443 | Acc_ObjectFromWindow(hWnd, idObject = -4) +0460 | Acc_WindowFromObject(pacc) +0471 | Acc_GetRoleText(nRole) +0485 | Acc_GetStateText(nState) +0499 | Acc_SetWinEventHook(eventMin, eventMax, pCallback) +0504 | Acc_UnhookWinEvent(hHook) +0519 | Acc_Role(Acc, ChildId=0) +0525 | Acc_State(Acc, ChildId=0) +0531 | Acc_Location(Acc, ChildId=0) +0549 | Acc_Parent(Acc) +0554 | Acc_Child(Acc, ChildId=0) +0560 | Acc_Query(Acc) +0574 | Acc_Error(p="") +0578 | Acc_Children(Acc) +0609 | Acc_ChildrenByRole(Acc, Role) +0629 | Acc_Get(Cmd, ChildPath="", ChildID=0, WinTitle="", WinText="", ExcludeTitle="", ExcludeText="") +0680 | acc_childrenByName(oAccessible, name,returnOne=false) +0695 | acc_childrenFilter(oAcc, fCondition, value=0, returnOne=false, obj=0) +0724 | acc_getRootElement() +0729 | __New(oAccParent,id) +0788 | accDoDefaultAction() +0792 | accHitTest() +0795 | accLocation(ByRef left, Byref top, ByRef width, ByRef height) +0798 | accNavigate() +0801 | accSelect(flagsSelect) + +} +[1687] classes\class_actionObject.ahk { Line | Function 0037 | do(input, type = "", action = "", subType = "", subAction = "") @@ -25065,7 +25215,7 @@ Line | Function 0163 | if(subType = SUBTYPE_FILEPATH) } -[1668] classes\class_ActiveScript.ahk { +[1688] classes\class_ActiveScript.ahk { Line | Function 0012 | __New(Language) @@ -25088,7 +25238,7 @@ Line | Function 0285 | _AS_GUIDToString(pGUID) } -[1669] classes\class_AddClearBtnToEdit.ahk { +[1689] classes\class_AddClearBtnToEdit.ahk { Line | Function 0071 | Init() @@ -25099,7 +25249,7 @@ Line | Function 0266 | ShowHideBtn(HEDIT) } -[1670] classes\class_adhdlib.ahk { +[1690] classes\class_adhdlib.ahk { Line | Function 0034 | __New() @@ -25201,7 +25351,7 @@ Line | Function 2497 | adhd_mouse_move() } -[1671] classes\class_AES_und_CBC.ahk { +[1691] classes\class_AES_und_CBC.ahk { Line | Function 0020 | encrypt(string, iv, key) @@ -25217,7 +25367,7 @@ Line | Function 0216 | b64Decode(ByRef string, ByRef buf) } -[1672] classes\class_AhkPedal.ahk { +[1692] classes\class_AhkPedal.ahk { Line | Function 0010 | __New(press) @@ -25227,7 +25377,7 @@ Line | Function 0123 | _RegisterHIDDevice(usagePage, usage) } -[1673] classes\class_AHKWebDriver.ahk { +[1693] classes\class_AHKWebDriver.ahk { Line | Function 0059 | url(url) @@ -25278,12 +25428,12 @@ Line | Function 0386 | getScreenshot() } -[1674] classes\class_ALD.ahk { +[1694] classes\class_ALD.ahk { Line | Function } -[1675] { +[1695] { Line | Function 0007 | __New(URL) @@ -25299,7 +25449,7 @@ Line | Function 0140 | uploadItem(package, user, password) } -[1676] { +[1696] { Line | Function 0036 | SaveToFile(file) @@ -25322,7 +25472,7 @@ Line | Function 0225 | _createNamespaceElement(name) } -[1677] { +[1697] { Line | Function 0005 | __New(defFile) @@ -25330,7 +25480,7 @@ Line | Function 0019 | _getFileList() } -[1678] classes\class_Animation.ahk { +[1698] classes\class_Animation.ahk { Line | Function 0064 | __Delete() @@ -25341,7 +25491,7 @@ Line | Function 0110 | Stop() } -[1679] classes\class_ansi.ahk { +[1699] classes\class_ansi.ahk { Line | Function 0003 | requires() @@ -25386,7 +25536,7 @@ Line | Function 0330 | mapColor(color) } -[1680] classes\class_AppFactory.ahk { +[1700] classes\class_AppFactory.ahk { Line | Function 0010 | AddInputButton(guid, options, callback) @@ -25421,7 +25571,12 @@ Line | Function 0422 | InputEvent(ControlGUID, e) } -[1681] classes\class_arrays.ahk { +[1701] { + +Line | Function + +} +[1702] classes\class_arrays.ahk { Line | Function 0004 | requires() @@ -25450,7 +25605,7 @@ Line | Function 0268 | isCallbackFunction(callbackFunc) } -[1682] classes\class_array_base.ahk { +[1703] classes\class_array_base.ahk { Line | Function 0033 | every(callback) @@ -25467,7 +25622,7 @@ Line | Function 0445 | swap(index1, index2) } -[1683] classes\class_array_quicksort.ahk { +[1704] classes\class_array_quicksort.ahk { Line | Function 0014 | _compare_alphanum(a, b) @@ -25476,7 +25631,7 @@ Line | Function 0052 | _swap(array, idx1, idx2) } -[1684] classes\class_AsyncHttp.ahk { +[1705] classes\class_AsyncHttp.ahk { Line | Function 0033 | __new(callbacks = "") @@ -25492,7 +25647,7 @@ Line | Function 0111 | Emit() } -[1685] classes\class_audioRouter.ahk { +[1706] classes\class_audioRouter.ahk { Line | Function 0023 | __new(path) @@ -25504,7 +25659,18 @@ Line | Function 0113 | LVM_GETITEMPOSITION(itemIdx,hwnd) } -[1686] classes\class_base64(2).ahk { +[1707] classes\class_AutoPath_AHK2.ahk { + +Line | Function +0062 | onSubmit() +0071 | onClose() +0077 | cleanUp() +0083 | editChanged() +0109 | enterKey() +0172 | findFile(p) + +} +[1708] classes\class_base64(2).ahk { Line | Function 0003 | requires() @@ -25514,7 +25680,7 @@ Line | Function 0086 | decode(pszString, cchString, dwFlags, ByRef pbBinary, ByRef pcbBinary=0, ByRef pdwSkip=0, ByRef pdwFlags=0) } -[1687] classes\Class_Base64.ahk { +[1709] classes\Class_Base64.ahk { Line | Function 0003 | Base64enc( ByRef OutData, ByRef InData, InDataLen ) @@ -25524,7 +25690,7 @@ Line | Function 0089 | Decode(ByRef VarIn, ByRef VarOut, Use = "A") } -[1688] classes\class_bcrypt.ahk { +[1710] classes\class_bcrypt.ahk { Line | Function 0008 | hash(String, AlgID) @@ -25544,7 +25710,7 @@ Line | Function 0228 | CalcHash(Byref HASH_DATA, HASH_LENGTH) } -[1689] classes\class_BinaryHeap.ahk { +[1711] classes\class_BinaryHeap.ahk { Line | Function 0043 | __New() @@ -25555,7 +25721,7 @@ Line | Function 0118 | Compare(Value1,Value2) } -[1690] classes\class_BindModeThread.ahk { +[1712] classes\class_BindModeThread.ahk { Line | Function 0016 | __New(CallbackPtr) @@ -25577,7 +25743,7 @@ Line | Function 0226 | HatWatcher() } -[1691] classes\class_BinRun.ahk { +[1713] classes\class_BinRun.ahk { Line | Function 0300 | __New(pData,cmdLine="",cmdLineScript="",ExeToUse="") @@ -25585,7 +25751,14 @@ Line | Function 0396 | BinRun_Uncompress( ByRef D ) } -[1692] classes\class_BrightnessSetter.ahk { +[1714] classes\class_Bound.ahk { + +Line | Function +0012 | __Call(_callee) +0018 | _isCallableObject(ByRef _callback) + +} +[1715] classes\class_BrightnessSetter.ahk { Line | Function 0006 | __New() @@ -25605,7 +25778,7 @@ Line | Function 0209 | BrightnessSetter_new() } -[1693] classes\class_C.ahk { +[1716] classes\class_C.ahk { Line | Function 0285 | defineType(command) @@ -25715,7 +25888,7 @@ Line | Function 3376 | test_typeComparisons() } -[1694] classes\class_CApplication.ahk { +[1717] classes\class_CApplication.ahk { Line | Function 0044 | __New() @@ -25755,7 +25928,7 @@ Line | Function 0571 | Unsubscribe(handler, e) } -[1695] classes\class_CaseSensitiveObject.ahk { +[1718] classes\class_CaseSensitiveObject.ahk { Line | Function 0027 | __new(base = "") @@ -25771,7 +25944,7 @@ Line | Function 0131 | Next(ByRef key, ByRef value = "") } -[1696] classes\class_CDataBase.ahk { +[1719] classes\class_CDataBase.ahk { Line | Function 0009 | __New(fileName) @@ -25793,7 +25966,7 @@ Line | Function 0303 | Reset() } -[1697] classes\class_CDialogs.ahk { +[1720] classes\class_CDialogs.ahk { Line | Function 0059 | __New(Mode="") @@ -25802,21 +25975,21 @@ Line | Function 0086 | if(Multi) } -[1698] classes\class_CDirectory.ahk { +[1721] classes\class_CDirectory.ahk { Line | Function 0015 | Exists(DirName) 0035 | Create(DirName) } -[1699] classes\class_CEnumerator.ahk { +[1722] classes\class_CEnumerator.ahk { Line | Function 0013 | __New(Object) 0017 | Next(byref key, byref value) } -[1700] classes\class_Cert.ahk { +[1723] classes\class_Cert.ahk { Line | Function 0169 | OpenStore(pStoreProvider, dwMsgAndCertEncodingType, dwFlags, ParamType="Ptr", Param=0) @@ -25834,13 +26007,13 @@ Line | Function 0380 | Cert_GetStoreNames_Callback(pvSystemStore, dwFlags, pStoreInfo, pvReserved, pvArg) } -[1701] classes\class_CFile.ahk { +[1724] classes\class_CFile.ahk { Line | Function 0021 | Create(fileName, encoding="") } -[1702] classes\class_CFlyout.ahk { +[1725] classes\class_CFlyout.ahk { Line | Function 0009 | Show() @@ -25884,7 +26057,7 @@ Line | Function 1422 | Anchor2(ctrl, a, d = false) } -[1703] classes\class_CFlyoutMenuHandler.ahk { +[1726] classes\class_CFlyoutMenuHandler.ahk { Line | Function 0004 | __New(iX="", iY="", iW="", iMaxRows="", sIni="", sSlideFrom="Left") @@ -25924,7 +26097,7 @@ Line | Function 0736 | FlyoutMenuHandler_GetMonitorRectAt(x, y, default=1) } -[1704] classes\class_CFlyout_New.ahk { +[1727] classes\class_CFlyout_New.ahk { Line | Function 0104 | __Delete() @@ -25955,12 +26128,12 @@ Line | Function 0758 | StdCBProc(iEventInfo, iMsg) } -[1705] classes\class_CFunction.ahk { +[1728] classes\class_CFunction.ahk { Line | Function } -[1706] classes\class_CGui.ahk { +[1729] classes\class_CGui.ahk { Line | Function 0039 | __New(app, n = "", options = "", title = "", isLocalizable = true) @@ -26000,7 +26173,7 @@ Line | Function 0349 | Localize() } -[1707] classes\class_CGuiCtrl.ahk { +[1730] classes\class_CGuiCtrl.ahk { Line | Function 0054 | __New(gui, Type, Options = "", Text = "", tabControl = "", tabPage = 0, isLocalizable = true, setDefaultGlabel = true) @@ -26039,7 +26212,7 @@ Line | Function 0465 | RemoveOption(option) } -[1708] classes\Class_Check.ahk { +[1731] classes\Class_Check.ahk { Line | Function 0124 | __Get(key) @@ -26048,7 +26221,7 @@ Line | Function 0152 | __Set(key, ByRef val) } -[1709] classes\class_CHotKey.ahk { +[1732] classes\class_CHotKey.ahk { Line | Function 0011 | __New(hk, label, up=true) @@ -26060,7 +26233,7 @@ Line | Function 0092 | _ToString() } -[1710] classes\class_CHotstringOptions.ahk { +[1733] classes\class_CHotstringOptions.ahk { Line | Function 0021 | ToOptions(x) @@ -26068,7 +26241,7 @@ Line | Function 0041 | ToHotstring(x) } -[1711] classes\class_Chrome (2).ahk { +[1734] classes\class_Chrome (2).ahk { Line | Function 0008 | CliEscape(Param) @@ -26080,7 +26253,7 @@ Line | Function 0338 | Disconnect() } -[1712] classes\class_Chrome.ahk { +[1735] classes\class_Chrome.ahk { Line | Function 0010 | CliEscape(Param) @@ -26097,7 +26270,7 @@ Line | Function 0472 | Jxon_False() } -[1713] classes\class_CIniFile.ahk { +[1736] classes\class_CIniFile.ahk { Line | Function 0008 | CIniFile_New(fileName) @@ -26126,7 +26299,7 @@ Line | Function 0685 | if(Section = "") } -[1714] classes\class_CInputDetector.ahk { +[1737] classes\class_CInputDetector.ahk { Line | Function 0018 | EnableHooks() @@ -26141,7 +26314,7 @@ Line | Function 0236 | _UnhookWindowsHookEx(idHook) } -[1715] classes\class_CircleProgressClass.ahk { +[1738] classes\class_CircleProgressClass.ahk { Line | Function 0004 | __New(Options="") @@ -26150,7 +26323,7 @@ Line | Function 0055 | __Delete() } -[1716] classes\class_Classifier.ahk { +[1739] classes\class_Classifier.ahk { Line | Function 0005 | __New() @@ -26162,14 +26335,14 @@ Line | Function 0112 | Probability(Feature,Category) } -[1717] classes\class_Clip2Object.ahk { +[1740] classes\class_Clip2Object.ahk { Line | Function 0002 | __Set(key,ByRef raw) 0008 | Restore(key,ByRef raw) } -[1718] classes\class_CLocalizer.ahk { +[1741] classes\class_CLocalizer.ahk { Line | Function 0018 | __New(dir) @@ -26181,7 +26354,7 @@ Line | Function 0181 | GetLanguageList() } -[1719] classes\class_CmdLine.ahk { +[1742] classes\class_CmdLine.ahk { Line | Function 0037 | __New(programPath) @@ -26190,7 +26363,7 @@ Line | Function 0050 | GetCommand() } -[1720] classes\class_Collection.ahk { +[1743] classes\class_Collection.ahk { Line | Function 0011 | Add(obj) @@ -26206,7 +26379,7 @@ Line | Function 0099 | __New(enum = 0) } -[1721] classes\Class_ColorPicker.ahk { +[1744] classes\Class_ColorPicker.ahk { Line | Function 0023 | __New(RGBv = "", Av = "", PickerTitle = "Color Picker", bgImage = "") @@ -26216,7 +26389,7 @@ Line | Function 0246 | ValidateOpacity(Opacity, Default) } -[1722] classes\class_ComboBoxEx.ahk { +[1745] classes\class_ComboBoxEx.ahk { Line | Function 0143 | Destroy() @@ -26238,7 +26411,7 @@ Line | Function 0580 | Focus() } -[1723] classes\class_ComImplementationBase.ahk { +[1746] classes\class_ComImplementationBase.ahk { Line | Function 0053 | Allocate(bytes) @@ -26256,7 +26429,7 @@ Line | Function 0208 | __Delete() } -[1724] classes\class_Compass.ahk { +[1747] classes\class_Compass.ahk { Line | Function 0141 | ToggleSnap() @@ -26265,17 +26438,17 @@ Line | Function 0203 | gcd(a, b) } -[1725] classes\Class_Console.ahk { +[1748] classes\Class_Console.ahk { Line | Function } -[1726] classes\class_CP.ahk { +[1749] classes\class_CP.ahk { Line | Function } -[1727] classes\Class_CreateFormData.ahk { +[1750] classes\Class_CreateFormData.ahk { Line | Function 0005 | CreateFormData(ByRef retData, ByRef retHeader, objParam) @@ -26286,7 +26459,7 @@ Line | Function 0076 | MimeType(FileName) } -[1728] classes\class_Crypt (2).ahk { +[1751] classes\class_Crypt (2).ahk { Line | Function 0056 | AcquireContext(Container, Provider, dwProvType, dwFlags) @@ -26300,7 +26473,7 @@ Line | Function 0155 | Dispose() } -[1729] classes\class_Crypt.ahk { +[1752] classes\class_Crypt.ahk { Line | Function 0119 | StrDecryptToFile(EncryptedHash,pFileOut,password,CryptAlg = 1, HashAlg = 1) @@ -26321,12 +26494,12 @@ Line | Function 0584 | GetKeySalt(hKey) } -[1730] classes\class_CryptConst.ahk { +[1753] classes\class_CryptConst.ahk { Line | Function } -[1731] classes\Class_CStruct.ahk { +[1754] classes\Class_CStruct.ahk { Line | Function 0102 | __New() @@ -26370,7 +26543,7 @@ Line | Function 1345 | __New() } -[1732] classes\class_cTable.ahk { +[1755] classes\class_cTable.ahk { Line | Function 0160 | Col2Num(ColumnsToSearch) @@ -26385,7 +26558,7 @@ Line | Function 0943 | _cTable_multab(str) } -[1733] classes\Class_CTLCOLORS.ahk { +[1756] classes\Class_CTLCOLORS.ahk { Line | Function 0099 | __New() @@ -26402,7 +26575,7 @@ Line | Function 0350 | CTLCOLORS_OnMessage(wParam, lParam) } -[1734] classes\class_Cursor.ahk { +[1757] classes\class_Cursor.ahk { Line | Function 0097 | __Delete() @@ -26428,7 +26601,7 @@ Line | Function 0425 | _Timer() } -[1735] classes\Class_CustomFont.ahk { +[1758] classes\Class_CustomFont.ahk { Line | Function 0024 | __New(FontFile, FontName="", FontSize=30) @@ -26439,7 +26612,7 @@ Line | Function 0062 | ResRead( ByRef Var, Key ) } -[1736] classes\class_CustomImageList.ahk { +[1759] classes\class_CustomImageList.ahk { Line | Function 0014 | __Destroy() @@ -26450,12 +26623,12 @@ Line | Function 0094 | ScaleBitmap(pBitmap) } -[1737] classes\class_CutWindowSquare.ahk { +[1760] classes\class_CutWindowSquare.ahk { Line | Function } -[1738] classes\Class_DateTools.ahk { +[1761] classes\Class_DateTools.ahk { Line | Function 0005 | SyntaxExamples() @@ -26486,7 +26659,7 @@ Line | Function 0922 | ResolveDateTime(DateTime, ThisProperty="DateTime", ParseProperty="DateTime", Default="") } -[1739] classes\class_db.ahk { +[1762] classes\class_db.ahk { Line | Function 0015 | __delete() @@ -26500,7 +26673,7 @@ Line | Function 0140 | strPutVar(string,byRef var,encoding) } -[1740] classes\Class_DD.ahk { +[1763] classes\Class_DD.ahk { Line | Function 0087 | btn(param) @@ -26521,7 +26694,7 @@ Line | Function 0244 | _whl(sParam) } -[1741] classes\Class_Dictionary.ahk { +[1764] classes\Class_Dictionary.ahk { Line | Function 0055 | __Delete() @@ -26535,7 +26708,7 @@ Line | Function 0207 | Clone() } -[1742] classes\class_DigestAuth.ahk { +[1765] classes\class_DigestAuth.ahk { Line | Function 0004 | Build(username, password, method, uri, ByRef WWWAuthenticate) @@ -26544,7 +26717,7 @@ Line | Function 0049 | create_cnonce() } -[1743] classes\class_DllCallCheck.ahk { +[1766] classes\class_DllCallCheck.ahk { Line | Function 0079 | _DllCall_Test() @@ -26556,7 +26729,7 @@ Line | Function 0304 | MAKELANGID(p, s) } -[1744] classes\Class_Dock.ahk { +[1767] classes\Class_Dock.ahk { Line | Function 0092 | Unhook() @@ -26574,7 +26747,7 @@ Line | Function 0331 | _DockHookProcAdr(hWinEventHook, event, hwnd, idObject, idChild, dwEventThread, dwmsEventTime) } -[1745] classes\class_DoublyLinkedList.ahk { +[1768] classes\class_DoublyLinkedList.ahk { Line | Function 0014 | __New(data) @@ -26600,7 +26773,7 @@ Line | Function 0365 | isEmpty() } -[1746] classes\class_DragDrop.ahk { +[1769] classes\class_DragDrop.ahk { Line | Function 0045 | __New(sCallback, hDropWnd) @@ -26613,13 +26786,13 @@ Line | Function 0262 | DD_CallNextHookEx(nCode, wParam, lParam) } -[1747] classes\class_DriveMap.ahk { +[1770] classes\class_DriveMap.ahk { Line | Function 0126 | Get(Drive) } -[1748] classes\class_dual.ahk { +[1771] classes\class_dual.ahk { Line | Function 0017 | __New(settings=false) @@ -26655,12 +26828,12 @@ Line | Function 0424 | contains(array, searchItem) } -[1749] classes\class_dual_defaults.ahk { +[1772] classes\class_dual_defaults.ahk { Line | Function } -[1750] classes\class_EasyCSV.ahk { +[1773] classes\class_EasyCSV.ahk { Line | Function 0001 | class_EasyCSV(sFile="", sLoadFromStr="", bHasHeader=false) @@ -26689,7 +26862,7 @@ Line | Function 0482 | EasyCSV_EnumNext(e, ByRef k, ByRef v="") } -[1751] classes\class_EasyIni.ahk { +[1774] classes\class_EasyIni.ahk { Line | Function 0001 | class_EasyIni(sFile="", sLoadFromStr="") @@ -26717,7 +26890,7 @@ Line | Function 0533 | EasyIni_EnumNext(e, ByRef k, ByRef v="") } -[1752] classes\class_EasyXML.ahk { +[1775] classes\class_EasyXML.ahk { Line | Function 0006 | class_EasyXML(sFile="", sLoadFromStr="") @@ -26739,7 +26912,7 @@ Line | Function 0368 | EasyXML_EnumNext(e, ByRef k, ByRef v="") } -[1753] classes\class_eAutocomplete.ahk { +[1776] classes\class_eAutocomplete.ahk { Line | Function 0029 | __New(_source, _eventName, _callback) @@ -26748,12 +26921,12 @@ Line | Function 0483 | __Set(_k, _v) } -[1754] classes\class_EditView.ahk { +[1777] classes\class_EditView.ahk { Line | Function } -[1755] classes\class_ExpandView.ahk { +[1778] classes\class_ExpandView.ahk { Line | Function 0039 | Show() @@ -26766,7 +26939,7 @@ Line | Function 0149 | __hasExpanded() } -[1756] classes\class_ExplorerTool.ahk { +[1779] classes\class_ExplorerTool.ahk { Line | Function 0053 | Init() @@ -26782,7 +26955,7 @@ Line | Function 0269 | Match( pItem, pFilter ) } -[1757] classes\class_ExtObj.ahk { +[1780] classes\class_ExtObj.ahk { Line | Function 0120 | IsCircle(Objs=0) @@ -26798,7 +26971,7 @@ Line | Function 0546 | Oct(x) } -[1758] classes\class_fancy.ahk { +[1781] classes\class_fancy.ahk { Line | Function 0046 | __New(file, line, function, offset) @@ -26810,7 +26983,42 @@ Line | Function 0326 | _initialize() } -[1759] classes\class_FileMapping.ahk { +[1782] classes\class_FFAAS.ahk { + +Line | Function +0031 | _OnMessage() +0077 | Include(hwnd) +0081 | Exclude(hwnd) +0085 | _CheckComposition() +0094 | Enable(State=1) +0116 | _OffScreenPos() +0129 | SetAero(state=1) +0136 | SyncMode(Mode="ASync", Timer = 30) +0152 | Redraw(hWnd) +0164 | RedrawDB_Aero(hwnd) +0204 | DuplicateWindow(hwndSrc) +0263 | Copy(hwnd) +0279 | __msg(wParam, lParam, msg, hwnd) +0302 | FFAAS_WM_NCLBUTTONDOWN(wParam, lParam, msg, hwnd) +0331 | FFAAS_WM_ENTERSIZEMOVE(wParam, lParam, msg, hwnd) +0348 | FFAAS_WM_SIZING(wParam, lParam, msg, hwnd) +0369 | FFAAS_WM_EXITSIZEMOVE(wParam, lParam, msg, hwnd) +0407 | FFAAS_WM_NCCALCSIZE(wParam, lParam, msg, hwnd) +0447 | FFAAS_WM_WINDOWPOSCHANGING(wParam, lParam, msg, hwnd) +0476 | _FFAAS_CreateWindowEx(ExStyle, ClassName, WindowName, Style, x,y, w,h, hWndParent=0, hMenu=0, hInstance=0, lpParam=0) +0492 | _FFAAS_UpdateLayeredWindow(hwnd, hdc, x="", y="", w="", h="", Alpha=255, flag=4) +0515 | _FFAAS_GetWindowInfo(hwnd,ByRef wx,ByRef wy,ByRef ww,ByRef wh,ByRef cx,ByRef cy,ByRef cw,ByRef ch) +0531 | _FFAAS_RedrawWindow(hWnd, lprcUpdate=0, hrgnUpdate=0, flags=0x101) +0557 | _FFAAS_GetSystemMetrics(Index) +0561 | _FFAAS_IsComposition() +0569 | _FFAAS_WM_SETREDRAW(hWnd, state=1) +0575 | _FFAAS_ReleaseDC(hdc, hwnd=0) +0580 | _FFAAS_GetParent(hWnd) +0584 | _FFAAS_DeleteObject(hObject) +0589 | _FFAAS_BitBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, Raster="") + +} +[1783] classes\class_FileMapping.ahk { Line | Function 0020 | Write(szMsg) @@ -26819,7 +27027,7 @@ Line | Function 0039 | __Delete() } -[1760] classes\class_filey.ahk { +[1784] classes\class_filey.ahk { Line | Function 0037 | delete(whatfile) @@ -26858,7 +27066,7 @@ Line | Function 0386 | time() } -[1761] classes\class_flexTable.ahk { +[1785] classes\class_flexTable.ahk { Line | Function 0147 | addRow() @@ -26874,7 +27082,7 @@ Line | Function 0258 | debugToString(debugBuilder) } -[1762] classes\Class_Flyout.ahk { +[1786] classes\Class_Flyout.ahk { Line | Function 0011 | Show() @@ -26916,7 +27124,7 @@ Line | Function 1380 | Anchor2(ctrl, a, d = false) } -[1763] classes\Class_FTP.ahk { +[1787] classes\Class_FTP.ahk { Line | Function 0012 | InternetOpen(Agent) @@ -26934,7 +27142,7 @@ Line | Function 0173 | InternetCloseHandle(HINTERNET) } -[1764] classes\class_FTPv2.ahk { +[1788] classes\class_FTPv2.ahk { Line | Function 0019 | FTPv2( AsyncMode=0 , Proxy = "" , ProxyBypass = "") @@ -26965,7 +27173,7 @@ Line | Function 0870 | FTP_TestFunction() } -[1765] classes\class_gdichart.ahk { +[1789] classes\class_gdichart.ahk { Line | Function 0010 | __New(hwnd) @@ -26982,7 +27190,7 @@ Line | Function 0249 | version() } -[1766] classes\class_GDIp.ahk { +[1790] classes\class_GDIp.ahk { Line | Function 0017 | __New() @@ -27057,7 +27265,7 @@ Line | Function 0737 | getGraphics() } -[1767] classes\class_gdipChart.ahk { +[1791] classes\class_gdipChart.ahk { Line | Function 0029 | __Delete() @@ -27147,7 +27355,7 @@ Line | Function 0974 | fitNr( nr, significants ) } -[1768] classes\Class_GdipSnapshot.ahk { +[1792] classes\Class_GdipSnapshot.ahk { Line | Function 0039 | TakeSnapshot() @@ -27170,7 +27378,7 @@ Line | Function 0293 | HexToRGB(color) } -[1769] classes\Class_GdipTooltip.ahk { +[1793] classes\Class_GdipTooltip.ahk { Line | Function 0074 | ShowGdiTooltip(fontSize, String, XCoord, YCoord, relativeCoords = true, parentWindowHwnd = "", fixedCoords = false) @@ -27194,7 +27402,30 @@ Line | Function 0484 | GetActiveMonitorInfo(ByRef X, ByRef Y, ByRef Width, ByRef Height) } -[1770] classes\class_geometry.ahk { +[1794] classes\class_GDIp_Canvas.ahk { + +Line | Function +0029 | RotateX(_degrees) +0044 | RotateY(_degrees) +0055 | RotateZ(_degrees) +0093 | Clear() +0097 | ShutDown() + +} +[1795] classes\class_GDIP_Geometry.ahk { + +Line | Function +0002 | Degrees(_radians) +0006 | Radians(_degrees) +0033 | Distance(_point1, _point2) +0037 | Slope(_point1, _point2) +0041 | MidPoint(_point1, _point2) +0045 | Rotate(_point, _degrees) +0053 | Circumcenter(_point1, _point2, _point3) +0060 | Foci(_ellipse) + +} +[1796] classes\class_geometry.ahk { Line | Function 0004 | angle(p1,p2) @@ -27204,7 +27435,7 @@ Line | Function 0026 | range(a1,a2) } -[1771] classes\class_Gestures.ahk { +[1797] classes\class_Gestures.ahk { Line | Function 0044 | end() @@ -27213,7 +27444,13 @@ Line | Function 0095 | matchStroke(g,i,p_i,opt) } -[1772] classes\class_getopt.ahk { +[1798] classes\class_getError_AHK2.ahk { + +Line | Function +0006 | getError(SystemErrorCode) + +} +[1799] classes\class_getopt.ahk { Line | Function 0083 | long_has_args(ByRef opt, longopts, opts_flag) @@ -27223,7 +27460,7 @@ Line | Function 0183 | ThrowMsg(Options="",Title="",Text="",Timeout="") } -[1773] classes\Class_Github (2).ahk { +[1800] classes\Class_Github (2).ahk { Line | Function 0003 | __New() @@ -27242,7 +27479,7 @@ Line | Function 0109 | utf8(info) } -[1774] classes\class_Github.ahk { +[1801] classes\class_Github.ahk { Line | Function 0172 | get() @@ -27264,12 +27501,12 @@ Line | Function 0514 | markdown_raw(md) } -[1775] classes\Class_Github_Gui.ahk { +[1802] classes\Class_Github_Gui.ahk { Line | Function } -[1776] classes\class_Graphics.ahk { +[1803] classes\class_Graphics.ahk { Line | Function 0072 | Startup() @@ -27311,7 +27548,7 @@ Line | Function 1396 | height() } -[1777] classes\class_GroupSort.ahk { +[1804] classes\class_GroupSort.ahk { Line | Function 0022 | __New(object, options="") @@ -27319,7 +27556,7 @@ Line | Function 0116 | Genitem(item, N) } -[1778] classes\class_GuiControlTips.ahk { +[1805] classes\class_GuiControlTips.ahk { Line | Function 0054 | __New(HGUI) @@ -27332,7 +27569,7 @@ Line | Function 0198 | SetDelayTimes(Init = -1, PopUp = -1, ReShow = -1) } -[1779] classes\class_Guid.ahk { +[1806] classes\class_Guid.ahk { Line | Function 0006 | Guid_New() @@ -27340,7 +27577,7 @@ Line | Function 0036 | Guid_ToStr(ByRef VarOrAddress) } -[1780] classes\class_GuiDropFiles.ahk { +[1807] classes\class_GuiDropFiles.ahk { Line | Function 0005 | config(GuiHwnd, BeginLable = "", EndLable = "") @@ -27351,7 +27588,7 @@ Line | Function 0099 | GetClipboardFormatName(nFormat) } -[1781] classes\class_GuiPrompt.ahk { +[1808] classes\class_GuiPrompt.ahk { Line | Function 0031 | __New(optionObject) @@ -27361,7 +27598,7 @@ Line | Function 0115 | OnCancel() } -[1782] classes\class_GuiTabEx.ahk { +[1809] classes\class_GuiTabEx.ahk { Line | Function 0017 | __New(HWND) @@ -27383,7 +27620,7 @@ Line | Function 0280 | SetText(Item, ItemText) } -[1783] classes\class_GuiVar.ahk { +[1810] classes\class_GuiVar.ahk { Line | Function 0072 | __New(Var) @@ -27391,7 +27628,7 @@ Line | Function 0087 | List(ByRef Array) } -[1784] classes\class_Gui_NoActivate.ahk { +[1811] classes\class_Gui_NoActivate.ahk { Line | Function 0036 | WM_NCLBUTTONDOWN(wParam, lParam, msg, hwnd) @@ -27401,7 +27638,7 @@ Line | Function 0067 | Disable_RButton() } -[1785] classes\class_hashTable.ahk { +[1812] classes\class_hashTable.ahk { Line | Function 0005 | hasKey(byref k) @@ -27447,7 +27684,7 @@ Line | Function 0627 | __new(r) } -[1786] classes\class_HashTable_small.ahk { +[1813] classes\class_HashTable_small.ahk { Line | Function 0043 | _GetHash(Key) @@ -27461,7 +27698,7 @@ Line | Function 0259 | Clone() } -[1787] classes\class_hashTable_v1.ahk { +[1814] classes\class_hashTable_v1.ahk { Line | Function 0003 | hasKey(byref k) @@ -27507,14 +27744,14 @@ Line | Function 0643 | __new(r) } -[1788] classes\class_HL7.ahk { +[1815] classes\class_HL7.ahk { Line | Function 0086 | parse(p_HL7_Text) 0305 | Clean_HL7(p_HL7_Text, p_Array_Of_Delimiter_Needles, p_Escaped_Escape_Character) } -[1789] classes\class_HotClass.ahk { +[1816] classes\class_HotClass.ahk { Line | Function 0067 | EnableHotkeys() @@ -27532,12 +27769,12 @@ Line | Function 0506 | _RenderNamedHotkeys(hk) } -[1790] classes\class_HotCorners.ahk { +[1817] classes\class_HotCorners.ahk { Line | Function } -[1791] classes\Class_Hotkey (2).ahk { +[1818] classes\Class_Hotkey (2).ahk { Line | Function 0063 | Delete() @@ -27552,7 +27789,7 @@ Line | Function 0138 | CallAll(Method) } -[1792] classes\Class_Hotkey.ahk { +[1819] classes\Class_Hotkey.ahk { Line | Function 0088 | delete() @@ -27561,7 +27798,7 @@ Line | Function 0186 | _apply(_func) } -[1793] classes\class_HotVoice.ahk { +[1820] classes\class_HotVoice.ahk { Line | Function 0004 | GetChoices(name) @@ -27587,7 +27824,7 @@ Line | Function 0253 | CLR_GUID(ByRef GUID, sGUID) } -[1794] classes\class_iAutoComplete.ahk { +[1821] classes\class_iAutoComplete.ahk { Line | Function 0034 | IAutoComplete_SubclassProc(HWND, Msg, wParam, lParam, ID, Data) @@ -27606,7 +27843,7 @@ Line | Function 0270 | IEnumString_Clone(IES, ObjPtr) } -[1795] classes\class_ICLRRuntimeHost.ahk { +[1822] classes\class_ICLRRuntimeHost.ahk { Line | Function 0043 | __Delete() @@ -27620,7 +27857,7 @@ Line | Function 0096 | ExecuteInDefaultAppDomain(AssemblyPath, TypeName, MethodName, Argument, ByRef ReturnValue) } -[1796] classes\class_ICorRuntimeHost.ahk { +[1823] classes\class_ICorRuntimeHost.ahk { Line | Function 0044 | __Delete() @@ -27628,7 +27865,7 @@ Line | Function 0058 | Stop() } -[1797] classes\class_IDesktopWallpaper.ahk { +[1824] classes\class_IDesktopWallpaper.ahk { Line | Function 0014 | __New() @@ -27651,7 +27888,7 @@ Line | Function 0232 | Enable(Enable) } -[1798] classes\class_IDropTarget.ahk { +[1825] classes\class_IDropTarget.ahk { Line | Function 0110 | RegisterDragDrop() @@ -27663,7 +27900,7 @@ Line | Function 0238 | DragLeave() } -[1799] classes\class_IEObj.ahk { +[1826] classes\class_IEObj.ahk { Line | Function 0004 | __new() @@ -27674,7 +27911,7 @@ Line | Function 0092 | err(desc) } -[1800] classes\class_iexplorerClass.ahk { +[1827] classes\class_iexplorerClass.ahk { Line | Function 0003 | __new(iExplorer) @@ -27686,7 +27923,7 @@ Line | Function 0058 | getElementsByClassName(name) } -[1801] classes\class_ImageButton.ahk { +[1828] classes\class_ImageButton.ahk { Line | Function 0116 | InitClass() @@ -27703,7 +27940,7 @@ Line | Function 0501 | SetTxtColor(TxtColor) } -[1802] classes\class_ImageConverter.ahk { +[1829] classes\class_ImageConverter.ahk { Line | Function 0008 | __New(Action) @@ -27732,7 +27969,7 @@ Line | Function 0399 | if(ImageConverter.Picture.Picture = from) } -[1803] classes\class_ImageProcessing.ahk { +[1830] classes\class_ImageProcessing.ahk { Line | Function 0042 | Startup() @@ -27805,7 +28042,7 @@ Line | Function 2739 | height() } -[1804] classes\class_indirectReference.ahk { +[1831] classes\class_indirectReference.ahk { Line | Function 0068 | DeleteObject() @@ -27813,7 +28050,7 @@ Line | Function 0129 | __New( reference ) } -[1805] classes\class_Ini.ahk { +[1832] classes\class_Ini.ahk { Line | Function 0004 | __New(File, Default = "") @@ -27824,14 +28061,28 @@ Line | Function 0079 | Save(File = "") } -[1806] classes\class_Input.ahk { +[1833] classes\class_Input.ahk { Line | Function 0107 | setLastLeftClickPos() 0150 | revertKeyState() } -[1807] classes\class_InputThread.ahk { +[1834] classes\class_InputBlocker.ahk { + +Line | Function +0023 | __Delete() +0027 | Start() +0036 | Stop() +0044 | IsInterrupted() +0051 | _hookProc(nCode, wParam, lParam) +0072 | _releaseAllKeys() +0086 | _setWindowsHookEx(idHook, addr) +0091 | _unhookWindowsHookEx(hHook) +0096 | _callNextHookEx(nCode, wParam, lParam, kHook = 0) + +} +[1835] classes\class_InputThread.ahk { Line | Function 0009 | __New(ProfileID, CallbackPtr) @@ -27866,7 +28117,7 @@ Line | Function 0406 | IsEmptyAssoc(assoc) } -[1808] classes\class_InsertBinToPNG (2).ahk { +[1836] classes\class_InsertBinToPNG (2).ahk { Line | Function 0007 | init() @@ -27889,7 +28140,7 @@ Line | Function 0334 | strGetVar(ByRef var) } -[1809] classes\class_InsertBinToPNG.ahk { +[1837] classes\class_InsertBinToPNG.ahk { Line | Function 0007 | init() @@ -27912,7 +28163,7 @@ Line | Function 0334 | strGetVar(ByRef var) } -[1810] classes\class_IPC.ahk { +[1838] classes\class_IPC.ahk { Line | Function 0017 | __Delete() @@ -27923,7 +28174,7 @@ Line | Function 0123 | monitor() } -[1811] classes\class_IPHelper.ahk { +[1839] classes\class_IPHelper.ahk { Line | Function 0030 | ResolveHostname(hostname) @@ -27940,7 +28191,7 @@ Line | Function 0163 | IcmpCloseHandle(hIcmpFile) } -[1812] classes\class_ItemTree.ahk { +[1840] classes\class_ItemTree.ahk { Line | Function 0036 | if(noChildren == true) @@ -27952,7 +28203,7 @@ Line | Function 0168 | if(currentNode.children == "No Children") } -[1813] classes\class_IUIAnimationManager.ahk { +[1841] classes\class_IUIAnimationManager.ahk { Line | Function 0006 | __new() @@ -28046,7 +28297,7 @@ Line | Function 0930 | WAM_hr(a,ByRef b) } -[1814] classes\class_IUIAutomationEventHandler.ahk { +[1842] classes\class_IUIAutomationEventHandler.ahk { Line | Function 0015 | __New(p="", flag=1) @@ -28055,7 +28306,7 @@ Line | Function 0035 | HandleAutomationEvent(sender, eventId) } -[1815] classes\class_IUIAutomationEventHandler_extended.ahk { +[1843] classes\class_IUIAutomationEventHandler_extended.ahk { Line | Function 0048 | Allocate(bytes) @@ -28078,28 +28329,23 @@ Line | Function 0299 | UIA_Exit() } -[1816] classes\class_Joystick.ahk { - -Line | Function - -} -[1817] classes\Class_JSON (2).ahk { +[1844] classes\class_Joystick.ahk { Line | Function } -[1818] classes\Class_JSON.ahk { +[1845] classes\Class_JSON.ahk { Line | Function } -[1819] classes\class_JSONData.ahk { +[1846] classes\class_JSONData.ahk { Line | Function 0003 | Init() } -[1820] classes\class_JSONFile.ahk { +[1847] classes\class_JSONFile.ahk { Line | Function 0028 | __New(File) @@ -28108,12 +28354,17 @@ Line | Function 0102 | __Get(Key) } -[1821] { +[1848] { Line | Function } -[1822] classes\class_JsRT.ahk { +[1849] { + +Line | Function + +} +[1850] classes\class_JsRT.ahk { Line | Function 0010 | __New() @@ -28129,7 +28380,7 @@ Line | Function 0105 | Eval(code) } -[1823] classes\class_kbhook.ahk { +[1851] classes\class_kbhook.ahk { Line | Function 0057 | start() @@ -28149,7 +28400,7 @@ Line | Function 0256 | returnInt(n) } -[1824] classes\class_KeyValStore.ahk { +[1852] classes\class_KeyValStore.ahk { Line | Function 0042 | Call(self, key, value) @@ -28162,7 +28413,7 @@ Line | Function 0203 | TypeOf(value) } -[1825] classes\class_LastError.ahk { +[1853] classes\class_LastError.ahk { Line | Function 0037 | _FormattedCompleteInfo(id) @@ -28170,7 +28421,7 @@ Line | Function 0057 | _LoadErrorTable() } -[1826] classes\Class_LeapMenu.ahk { +[1854] classes\Class_LeapMenu.ahk { Line | Function 0005 | __New(ByRef rFlyoutMenuHandler_c, ByRef rLeap_c) @@ -28185,7 +28436,7 @@ Line | Function 0244 | TimeSinceLastCall(id=1, reset=0) } -[1827] classes\class_lexer.ahk { +[1855] classes\class_lexer.ahk { Line | Function 0189 | generateEnums() @@ -28207,12 +28458,12 @@ Line | Function 0346 | cacheMoreTokens(failOnFailure = 1, holdTokens = 0) } -[1828] classes\class_Linear.ahk { +[1856] classes\class_Linear.ahk { Line | Function } -[1829] classes\class_LineReader.ahk { +[1857] classes\class_LineReader.ahk { Line | Function 0084 | __New(buffer) @@ -28228,7 +28479,7 @@ Line | Function 0252 | __Delete() } -[1830] classes\class_LinkedListAndHashTable.ahk { +[1858] classes\class_LinkedListAndHashTable.ahk { Line | Function 0021 | __New(data) @@ -28285,7 +28536,7 @@ Line | Function 0415 | if(item) } -[1831] classes\class_LLMouse.ahk { +[1859] classes\class_LLMouse.ahk { Line | Function 0030 | accurateSleep(t,res) @@ -28293,12 +28544,12 @@ Line | Function 0056 | getQPF() } -[1832] classes\class_LoaderBar.ahk { +[1860] classes\class_LoaderBar.ahk { Line | Function } -[1833] classes\class_LoadPictureType.ahk { +[1861] classes\class_LoadPictureType.ahk { Line | Function 0020 | getBitmap() @@ -28307,7 +28558,7 @@ Line | Function 0045 | __Delete() } -[1834] classes\class_LocalWorker.ahk { +[1862] classes\class_LocalWorker.ahk { Line | Function 0005 | __New(Job,WorkerCode) @@ -28317,7 +28568,7 @@ Line | Function 0174 | LocalWorkerReceiveData(hWindow,pCopyDataStruct) } -[1835] classes\class_log4ahk.ahk { +[1863] classes\class_log4ahk.ahk { Line | Function 0016 | getLogger(name = "") @@ -28352,7 +28603,7 @@ Line | Function 0314 | Level2Name(level) } -[1836] classes\class_Log_class.ahk { +[1864] classes\class_Log_class.ahk { Line | Function 0027 | __New(aLogBaseFilename, aLogDir="", aLogExten="", aMaxSizeMBLogFile="", aMaxNumbOldLogs="") @@ -28384,7 +28635,7 @@ Line | Function 0902 | printStack(maxNumbCalls=2, numbCallsToSkipOver=1 ) } -[1837] classes\class_longhotkey.ahk { +[1865] classes\class_longhotkey.ahk { Line | Function 0094 | ThisLongHotkey() @@ -28406,7 +28657,7 @@ Line | Function 0454 | Send(str) } -[1838] classes\Class_LV_Colors.ahk { +[1866] classes\Class_LV_Colors.ahk { Line | Function 0091 | __Delete() @@ -28415,7 +28666,7 @@ Line | Function 0373 | MapIndexToID(Row) } -[1839] classes\Class_LV_InCellEdit.ahk { +[1867] classes\Class_LV_InCellEdit.ahk { Line | Function 0098 | GetOsVersion() @@ -28430,7 +28681,7 @@ Line | Function 0543 | LV_InCellEdit_WM_NOTIFY(W, L) } -[1840] classes\Class_LV_Rows.ahk { +[1868] classes\Class_LV_Rows.ahk { Line | Function 0129 | __Call(Func) @@ -28459,14 +28710,14 @@ Line | Function 1228 | PWSTR(Str, ByRef WSTR) } -[1841] classes\class_Lyt.ahk { +[1869] classes\class_Lyt.ahk { Line | Function 0090 | ChangeGlobal(HKL, INPUTLANGCHANGE) 0101 | ChangeLocal(HKL, INPUTLANGCHANGE, hWnd) } -[1842] classes\class_Mailslot.ahk { +[1870] classes\class_Mailslot.ahk { Line | Function 0141 | __Delete() @@ -28474,7 +28725,7 @@ Line | Function 0234 | FWrite(ByRef buf, bytes) } -[1843] classes\class_MailslotEx.ahk { +[1871] classes\class_MailslotEx.ahk { Line | Function 0064 | ReadLine() @@ -28483,7 +28734,7 @@ Line | Function 0128 | RawWrite(ByRef buf, bytes) } -[1844] classes\class_Matrix.ahk { +[1872] classes\class_Matrix.ahk { Line | Function 0018 | Det(m) @@ -28552,19 +28803,32 @@ Line | Function 0988 | ToRowEchelonForm(a, b="") } -[1845] classes\class_MemBlk (2).ahk { +[1873] classes\class_MemBlk (2).ahk { Line | Function 0223 | RawRead(ByRef dest, bytes) 0247 | RawWrite(ByRef src, bytes) } -[1846] classes\class_MemBlk.ahk { +[1874] classes\class_MemBlk.ahk { + +Line | Function + +} +[1875] classes\class_memClass_AHK2.ahk { Line | Function +0050 | __Delete() +0054 | suspend() +0060 | resume() +0103 | listModules() +0130 | _readptr(add) +0137 | _getModuleList() +0158 | _convertDecToHex(number) +0168 | _donothing(x) } -[1847] classes\Class_Memory (2).ahk { +[1876] classes\Class_Memory (2).ahk { Line | Function 0317 | __delete() @@ -28586,7 +28850,7 @@ Line | Function 1338 | sizeOf() } -[1848] classes\Class_Memory (3).ahk { +[1877] classes\Class_Memory (3).ahk { Line | Function 0003 | __New(program) @@ -28594,7 +28858,7 @@ Line | Function 0047 | _Read(address) } -[1849] classes\class_Memory.ahk { +[1878] classes\class_Memory.ahk { Line | Function 0278 | __delete() @@ -28619,7 +28883,7 @@ Line | Function 1397 | sizeOf() } -[1850] classes\class_MemoryBuffer.ahk { +[1879] classes\class_MemoryBuffer.ahk { Line | Function 0023 | Create(srcPtr, size) @@ -28636,7 +28900,7 @@ Line | Function 0152 | AllocMemory(size) } -[1851] classes\class_MemoryFileIO.ahk { +[1880] classes\class_MemoryFileIO.ahk { Line | Function 0287 | ReadUInt() @@ -28684,7 +28948,7 @@ Line | Function 0630 | _BCopy(Source,Destination,Length) } -[1852] classes\class_MemoryLibrary.ahk { +[1881] classes\class_MemoryLibrary.ahk { Line | Function 0275 | __New(DataPTR) @@ -28696,7 +28960,36 @@ Line | Function 0462 | BuildImportTable() } -[1853] classes\class_Mem_Injection.ahk { +[1882] classes\class_Memory_AHK2_64bit.ahk { + +Line | Function +0279 | __delete() +0301 | GetThreadInfo() +0428 | hexToAOB(hex) +0439 | getThreadStacks(Thread) +0524 | isHandleValid() +0549 | openProcess(PID, dwDesiredAccess) +0578 | closeHandle(hProcess) +0592 | numberOfBytesRead() +0596 | numberOfBytesWritten() +0930 | getEndAddressOfLastModule() +0935 | GetModuleInformation(hModule, byRef aModuleInfo) +0951 | getModuleList() +1048 | hexStringToPattern(hexString) +1290 | VirtualQueryEx(address, byRef aInfo) +1318 | suspend() +1323 | resume() +1388 | patternScan(startAddress, sizeOfRegionBytes, byRef patternMask, byRef needleBuffer) +1439 | MCode(mcode) +1466 | __new() +1472 | __Delete() +1478 | __get(key) +1491 | __set(key, value) +1508 | Ptr() +1512 | sizeOf() + +} +[1883] classes\class_Mem_Injection.ahk { Line | Function 0003 | __New(Name, ID_) @@ -28744,7 +29037,7 @@ Line | Function 0766 | Get_module_memory_space(hprocess, module) } -[1854] classes\class_Menu.ahk { +[1884] classes\class_Menu.ahk { Line | Function 0007 | __New(kwargs) @@ -28769,7 +29062,7 @@ Line | Function 0502 | Menu(kwargs) } -[1855] classes\class_MenuEnumOption.ahk { +[1885] classes\class_MenuEnumOption.ahk { Line | Function 0018 | __New(name, label) @@ -28783,7 +29076,7 @@ Line | Function 0121 | remove() } -[1856] classes\class_MenuToggleOption.ahk { +[1886] classes\class_MenuToggleOption.ahk { Line | Function 0025 | __New(menuName, itemName, labelName, variableName, addImmediately=true) @@ -28795,7 +29088,7 @@ Line | Function 0102 | setEnabled(enabled) } -[1857] classes\class_microWindows.ahk { +[1887] classes\class_microWindows.ahk { Line | Function 0040 | dllLoad() @@ -28808,7 +29101,7 @@ Line | Function 0125 | mouseOver() } -[1858] classes\class_midiOut.ahk { +[1888] classes\class_midiOut.ahk { Line | Function 0016 | __new(devID=-1) @@ -28838,7 +29131,7 @@ Line | Function 0190 | _noteValue(note) } -[1859] classes\class_Monitor.ahk { +[1889] classes\class_Monitor.ahk { Line | Function 0021 | __New() @@ -28853,7 +29146,7 @@ Line | Function 0126 | Monitor_setDimensions() } -[1860] classes\class_MonitorManager.ahk { +[1890] classes\class_MonitorManager.ahk { Line | Function 0012 | __New() @@ -28862,7 +29155,7 @@ Line | Function 0066 | getDpiForMonitor() } -[1861] classes\class_Mouse.ahk { +[1891] classes\class_Mouse.ahk { Line | Function 0010 | __New() @@ -28874,7 +29167,7 @@ Line | Function 0095 | Mouse_getMonitorNumber() } -[1862] classes\class_MouseDelta.ahk { +[1892] classes\class_MouseDelta.ahk { Line | Function 0016 | __New(callback) @@ -28885,7 +29178,7 @@ Line | Function 0069 | MouseMoved(wParam, lParam) } -[1863] classes\class_MouseHook.ahk { +[1893] classes\class_MouseHook.ahk { Line | Function 0026 | hook() @@ -28893,7 +29186,7 @@ Line | Function 0037 | __new(callbackFunc) } -[1864] classes\class_Mousetracker.ahk { +[1894] classes\class_Mousetracker.ahk { Line | Function 0129 | __New( ) @@ -28902,7 +29195,7 @@ Line | Function 0252 | __MT_MOUSELEAVE( wParam, lParam, Msg, hWnd ) } -[1865] classes\class_MsgBox.ahk { +[1895] classes\class_MsgBox.ahk { Line | Function 0027 | __New() @@ -28918,21 +29211,21 @@ Line | Function 0224 | centerMsgToWinow($wParam) } -[1866] classes\class_MS_SAPI.ahk { +[1896] classes\class_MS_SAPI.ahk { Line | Function 0479 | SAPIDecodeErrorFromExceptionString(ExceptionString) 0483 | if(err == "0x80045001") } -[1867] classes\class_MS_XMLDOM.ahk { +[1897] classes\class_MS_XMLDOM.ahk { Line | Function 0064 | DOMDecodeErrorFromExceptionString(ExceptionString) 0068 | if(err == "0xC00CE200") } -[1868] classes\Class_Multipart.ahk { +[1898] classes\Class_Multipart.ahk { Line | Function 0055 | MimeType(ByRef binData) @@ -28940,7 +29233,7 @@ Line | Function 0074 | RandomBoundary() } -[1869] classes\class_MultiTree Data Structure.ahk { +[1899] classes\class_MultiTree Data Structure.ahk { Line | Function 0019 | __New(data) @@ -28970,7 +29263,7 @@ Line | Function 0418 | getPath(node) } -[1870] classes\class_Mustache.ahk { +[1900] classes\class_Mustache.ahk { Line | Function 0047 | Compile(template) @@ -29004,7 +29297,7 @@ Line | Function 0844 | Flush() } -[1871] classes\Class_myConsole.ahk { +[1901] classes\Class_myConsole.ahk { Line | Function 0104 | changeLine( data, lineNum ) @@ -29016,7 +29309,7 @@ Line | Function 0145 | Resize(width,height) } -[1872] classes\Class_MySQLAPI.ahk { +[1902] classes\Class_MySQLAPI.ahk { Line | Function 0093 | __Delete() @@ -29077,14 +29370,14 @@ Line | Function 0720 | Warning_Count() } -[1873] classes\Class_NetworkManagement.ahk { +[1903] classes\Class_NetworkManagement.ahk { Line | Function 0225 | NetWkstaUserGetInfo() 0251 | NetApiBufferFree(buffer) } -[1874] classes\class_ObjectCheck.ahk { +[1904] classes\class_ObjectCheck.ahk { Line | Function 0052 | TO_DEPTH(x) @@ -29094,7 +29387,7 @@ Line | Function 0287 | object_test() } -[1875] classes\class_OD_Colors.ahk { +[1905] classes\class_OD_Colors.ahk { Line | Function 0056 | Attach(HWND, Colors) @@ -29104,7 +29397,7 @@ Line | Function 0127 | DrawItem(lParam, Msg, Hwnd) } -[1876] classes\class_OfficeInfo.ahk { +[1906] classes\class_OfficeInfo.ahk { Line | Function 0005 | __New() @@ -29116,7 +29409,7 @@ Line | Function 0077 | GetFlatTypeLib() } -[1877] classes\class_particles.ahk { +[1907] classes\class_particles.ahk { Line | Function 0058 | __New(FPS=30) @@ -29128,28 +29421,28 @@ Line | Function 0280 | step() } -[1878] classes\class_pastebin.ahk { +[1908] classes\class_pastebin.ahk { Line | Function -0011 | __New(username="floppernopper", password="19aug1993") -0025 | paste(code, pname="paste thorugh pastebin api", pformat="autohotkey", pexpiry="N", psecret=0) -0034 | pasteAsGuest(code, pname="paste thorugh pastebin api", pformat="autohotkey", pexpiry="N", psecret=0) -0041 | listPosts(results_limit=50) -0050 | listTrends() -0060 | deletePaste(link) -0067 | getUserInfo() -0076 | getPastedata(link) -0084 | editPaste(link, mode=1, message="") -0123 | printPaste(link) -0127 | getPastekey(link) -0131 | getEmbedlink(link) -0137 | parseXML(xml, mainkey, ret_type=1) -0167 | _return(s, iffail="0", ifsuccess="") -0181 | _UrlEncode( String ) -0198 | BrowserRun(site) +0012 | __New(username="", password="") +0026 | paste(code, pname="paste thorugh pastebin api", pformat="autohotkey", pexpiry="N", psecret=0) +0035 | pasteAsGuest(code, pname="paste thorugh pastebin api", pformat="autohotkey", pexpiry="N", psecret=0) +0042 | listPosts(results_limit=50) +0051 | listTrends() +0061 | deletePaste(link) +0068 | getUserInfo() +0077 | getPastedata(link) +0085 | editPaste(link, mode=1) +0110 | printPaste(link) +0114 | getPastekey(link) +0118 | getEmbedlink(link) +0124 | parseXML(xml, mainkey, ret_type=1) +0154 | _return(s, iffail="0", ifsuccess="") +0168 | _UrlEncode( String ) +0185 | BrowserRun(site) } -[1879] classes\class_PerfomanceCounter.ahk { +[1909] classes\class_PerfomanceCounter.ahk { Line | Function 0008 | __initialiaze_frequency() @@ -29159,7 +29452,7 @@ Line | Function 0064 | reset() } -[1880] classes\Class_Permissions.ahk { +[1910] classes\Class_Permissions.ahk { Line | Function 0097 | __Get(key) @@ -29169,7 +29462,7 @@ Line | Function 0136 | __Get(key) } -[1881] classes\Class_PictureControl.ahk { +[1911] classes\Class_PictureControl.ahk { Line | Function 0012 | __New(Name, Options, Text, GUINum) @@ -29179,7 +29472,7 @@ Line | Function 0158 | HandleEvent(Event) } -[1882] classes\class_PIN.ahk { +[1912] classes\class_PIN.ahk { Line | Function 0020 | __delete() @@ -29202,7 +29495,7 @@ Line | Function 0180 | strPutVar(string,byRef var,encoding) } -[1883] classes\class_PIN_INI.ahk { +[1913] classes\class_PIN_INI.ahk { Line | Function 0014 | if(iniName) @@ -29217,7 +29510,7 @@ Line | Function 0092 | _decryptTempKey() } -[1884] classes\class_PixelState.ahk { +[1914] classes\class_PixelState.ahk { Line | Function 0012 | BackgroundTasksMain(options=false) @@ -29244,7 +29537,36 @@ Line | Function 0801 | PlayerHP() } -[1885] classes\Class_ProcessExplorer.ahk { +[1915] classes\class_Printers.ahk { + +Line | Function +0009 | AddConnection(printer) +0019 | CloseHandle(handle) +0029 | DeleteConnection(printer) +0039 | Enum(flags) +0084 | GetDefault() +0098 | GetInfo(printer) +0124 | OpenHandle(printer) +0134 | SetDefault(printer) + +} +[1916] classes\class_print_AHK2.ahk { + +Line | Function +0009 | print(msg) +0014 | rprint(msg) +0019 | hprint(msg) +0024 | eprint(errorCode) +0059 | _onResize() +0063 | _print(msg) +0072 | _println(msg) +0076 | _printError(msg) +0080 | _printHex(msg) +0101 | _convert(numstr, inputBase, outputBase) +0110 | __Delete() + +} +[1917] classes\Class_ProcessExplorer.ahk { Line | Function 0010 | __New() @@ -29265,7 +29587,7 @@ Line | Function 0233 | __Delete() } -[1886] classes\class_ProcessMonitor.ahk { +[1918] classes\class_ProcessMonitor.ahk { Line | Function 0017 | Init() @@ -29295,7 +29617,7 @@ Line | Function 0337 | if(ControlHasChanged) } -[1887] classes\class_progress.ahk { +[1919] classes\class_progress.ahk { Line | Function 0004 | __New(MainText = "", ProgressBar = "", SubText = "", ProgressBar2 = "", SubText2 = "") @@ -29313,7 +29635,7 @@ Line | Function 0114 | __Delete() } -[1888] classes\Class_Properties.ahk { +[1920] classes\Class_Properties.ahk { Line | Function 0015 | __New(gLabel, W=400, H=23, X=0, Y=0, Gui=1) @@ -29321,7 +29643,7 @@ Line | Function 0046 | EditProperty() } -[1889] classes\Class_PureNotify.ahk { +[1921] classes\Class_PureNotify.ahk { Line | Function 0046 | Text(Head, Body) @@ -29329,13 +29651,13 @@ Line | Function 0093 | Destroy() } -[1890] classes\class_PushLog.ahk { +[1922] classes\class_PushLog.ahk { Line | Function 0136 | __Delete() } -[1891] classes\class_queue.ahk { +[1923] classes\class_queue.ahk { Line | Function 0006 | __new(callback, limit = "", type = "fifo") @@ -29345,7 +29667,7 @@ Line | Function 0029 | Emit() } -[1892] classes\class_quicktimer.ahk { +[1924] classes\class_quicktimer.ahk { Line | Function 0013 | start() @@ -29359,7 +29681,7 @@ Line | Function 0061 | quickFn() } -[1893] classes\class_radical.ahk { +[1925] classes\class_radical.ahk { Line | Function 0010 | __New() @@ -29379,7 +29701,7 @@ Line | Function 0249 | ControlChanged() } -[1894] classes\Class_Rebar.ahk { +[1926] classes\Class_Rebar.ahk { Line | Function 0064 | DeleteBand(Band) @@ -29401,7 +29723,7 @@ Line | Function 0610 | DefineBarStruct(ByRef BandVar, himl) } -[1895] classes\class_ref_StringsNumbersObjects.ahk { +[1927] classes\class_ref_StringsNumbersObjects.ahk { Line | Function 0196 | isRef(ByRef var) @@ -29412,7 +29734,7 @@ Line | Function 0503 | ref_example() } -[1896] classes\class_reg.ahk { +[1928] classes\class_reg.ahk { Line | Function 0019 | load() @@ -29423,7 +29745,7 @@ Line | Function 0083 | if(errorlevel = "ERROR") } -[1897] classes\class_Regex (2).ahk { +[1929] classes\class_Regex (2).ahk { Line | Function 0012 | __New(N) @@ -29434,7 +29756,7 @@ Line | Function 0091 | GetGroups(N) } -[1898] classes\class_Regex.ahk { +[1930] classes\class_Regex.ahk { Line | Function 0012 | __New(N) @@ -29445,7 +29767,7 @@ Line | Function 0091 | GetGroups(N) } -[1899] classes\class_RemoteBuf.ahk { +[1931] classes\class_RemoteBuf.ahk { Line | Function 0003 | __New(hwnd=0,size=0) @@ -29456,7 +29778,7 @@ Line | Function 0064 | NumPut(value,offset=0,Type="UInt") } -[1900] classes\class_RemoteObj.ahk { +[1932] classes\class_RemoteObj.ahk { Line | Function 0003 | __New(Obj, Address) @@ -29467,7 +29789,7 @@ Line | Function 0053 | RemoteObjSend(Addr, Obj) } -[1901] classes\class_RichCode.ahk { +[1933] classes\class_RichCode.ahk { Line | Function 0046 | BGRFromRGB(RGB) @@ -29477,7 +29799,7 @@ Line | Function 0466 | SendMsg(Msg, wParam, lParam) } -[1902] classes\Class_RichEdit.ahk { +[1934] classes\Class_RichEdit.ahk { Line | Function 0128 | __Delete() @@ -29544,7 +29866,7 @@ Line | Function 1622 | RE_GetDocObj(HRE) } -[1903] classes\Class_RichEditDlgs.ahk { +[1935] classes\Class_RichEditDlgs.ahk { Line | Function 0037 | ChooseFont(RE) @@ -29555,12 +29877,12 @@ Line | Function 0321 | ReplaceTextProc(L, M, H) } -[1904] classes\class_scintilla (2).ahk { +[1936] classes\class_scintilla (2).ahk { Line | Function } -[1905] classes\class_Scintilla.ahk { +[1937] classes\class_Scintilla.ahk { Line | Function 0086 | __Delete() @@ -29569,7 +29891,7 @@ Line | Function 0344 | __Get(key) } -[1906] classes\class_ScintillaG.ahk { +[1938] classes\class_ScintillaG.ahk { Line | Function 0006 | __New(hWnd,x,y,w,h) @@ -30157,7 +30479,15 @@ Line | Function 1844 | StyleSet(style,set) } -[1907] classes\class_scriptobj.ahk { +[1939] classes\class_SciTEdirector_AHK2.ahk { + +Line | Function +0009 | __New(exeSciTE) +0020 | recvmsg(hwndSender, recvdata, msg, hwnd) +0046 | strPutVar(string, ByRef var, encoding) + +} +[1940] classes\class_scriptobj.ahk { Line | Function 0056 | getparams() @@ -30169,7 +30499,7 @@ Line | Function 0389 | DL_Progress( pthis, nP=0, nPMax=0, nSC=0, pST=0 ) } -[1908] classes\Class_ScrollGUI.ahk { +[1941] classes\Class_ScrollGUI.ahk { Line | Function 0128 | __Delete() @@ -30188,7 +30518,7 @@ Line | Function 0473 | Wheel(WP, LP, Msg, HWND) } -[1909] classes\class_selector.ahk { +[1942] classes\class_selector.ahk { Line | Function 0072 | doSelect(filePath, actionType = "", iconPath = "") @@ -30230,7 +30560,7 @@ Line | Function 0708 | debugToString(debugBuilder) } -[1910] classes\class_selectorActions.ahk { +[1943] classes\class_selectorActions.ahk { Line | Function 0025 | RET(actionRow, subToReturn = "DOACTION") @@ -30254,7 +30584,7 @@ Line | Function 0294 | SEND_SNAPPER_EXCLUDE_ITEMS(actionRow) } -[1911] classes\class_selectorRow.ahk { +[1944] classes\class_selectorRow.ahk { Line | Function 0015 | __New(arr = "", name = "", abbrev = "", action = "", addActionToTitle = false) @@ -30264,7 +30594,7 @@ Line | Function 0045 | debugToString(debugBuilder) } -[1912] classes\class_SerialPort.ahk { +[1945] classes\class_SerialPort.ahk { Line | Function 0009 | __New( _Number, _Baud, _Parity, _Data, _Stop ) @@ -30276,7 +30606,7 @@ Line | Function 0191 | _Error( _Message, _Close = false, _Exit = true ) } -[1913] classes\class_SideMenu.ahk { +[1946] classes\class_SideMenu.ahk { Line | Function 0034 | __New() @@ -30286,7 +30616,7 @@ Line | Function 0082 | WM_MOUSEMOVE() } -[1914] classes\class_SimpleOSD.ahk { +[1947] classes\class_SimpleOSD.ahk { Line | Function 0001 | _SimpleOSD() @@ -30296,7 +30626,7 @@ Line | Function 0108 | Dismiss() } -[1915] classes\class_SlideWindows.ahk { +[1948] classes\class_SlideWindows.ahk { Line | Function 0030 | __New(hwnd, Direction) @@ -30336,7 +30666,7 @@ Line | Function 0709 | while(true) } -[1916] classes\class_Socket.ahk { +[1949] classes\class_Socket.ahk { Line | Function 0023 | __Delete() @@ -30355,7 +30685,7 @@ Line | Function 0238 | SetBroadcast(Enable) } -[1917] classes\class_Soundcard.ahk { +[1950] classes\class_Soundcard.ahk { Line | Function 0011 | initlib() @@ -30365,7 +30695,7 @@ Line | Function 0091 | soundcard(option) } -[1918] classes\class_SpellCorrect.ahk { +[1951] classes\class_SpellCorrect.ahk { Line | Function 0043 | __New() @@ -30376,7 +30706,17 @@ Line | Function 0117 | Correct(Word) } -[1919] classes\class_SpreadSheet.ahk { +[1952] classes\class_Spinner.ahk { + +Line | Function +0066 | __Delete() +0077 | Call() +0099 | Start() +0106 | Close() +0110 | Stop() + +} +[1953] classes\class_SpreadSheet.ahk { Line | Function 0047 | SS_Add(HParent,X,Y,W,H, Style="", Handler="", DllPath="") @@ -30446,7 +30786,7 @@ Line | Function 1502 | SS_strAtAdr(adr) } -[1920] classes\Class_SQLiteDB (2).ahk { +[1954] classes\Class_SQLiteDB (2).ahk { Line | Function 0055 | __New() @@ -30480,7 +30820,7 @@ Line | Function 0898 | StoreBLOB(SQL, BlobArray) } -[1921] classes\Class_SQLiteDB.ahk { +[1955] classes\Class_SQLiteDB.ahk { Line | Function 0052 | __New() @@ -30513,13 +30853,13 @@ Line | Function 0837 | StoreBLOB(SQL, BlobArray) } -[1922] classes\class_String.ahk { +[1956] classes\class_String.ahk { Line | Function 0004 | __New( string ) } -[1923] classes\class_StringHelper.ahk { +[1957] classes\class_StringHelper.ahk { Line | Function 0003 | IsValidName(Name) @@ -30531,7 +30871,16 @@ Line | Function 0055 | WTFAreTheInvalidChars(Text) } -[1924] classes\class_StringSimilarity.ahk { +[1958] classes\class_StringObject.ahk { + +Line | Function +0245 | Auto(Input,SaveToFileFullPath="") +0277 | StrToObj(String) +0404 | ObjToStr(Obj, Depth=9, CurIndent="") +0434 | StrObj(Input,SaveToFileFullPath="") + +} +[1959] classes\class_StringSimilarity.ahk { Line | Function 0003 | __New() @@ -30540,7 +30889,7 @@ Line | Function 0050 | simpleBestMatch(para_string,para_array) } -[1925] classes\class_StrObj.ahk { +[1960] classes\class_StrObj.ahk { Line | Function 0245 | Auto(Input,SaveToFileFullPath="") @@ -30549,7 +30898,7 @@ Line | Function 0434 | StrObj(Input,SaveToFileFullPath="") } -[1926] classes\class_Struct.ahk { +[1961] classes\class_Struct.ahk { Line | Function 0090 | ___InitField(_this,N,offset=" ",encoding=0,AHKType=0,isptr=" ",type=0,arrsize=0,memory=0) @@ -30566,7 +30915,7 @@ Line | Function 0401 | ___Clone(offset) } -[1927] classes\class_Subclass.ahk { +[1962] classes\class_Subclass.ahk { Line | Function 0012 | __New() @@ -30576,7 +30925,7 @@ Line | Function 0046 | Subclass_Dispatch(Hwnd, Message, wParam, lParam, IdSubclass, RefData) } -[1928] classes\class_Subprocess.ahk { +[1963] classes\class_Subprocess.ahk { Line | Function 0055 | __Delete() @@ -30591,7 +30940,7 @@ Line | Function 0204 | RawWrite(ByRef var_or_address, bytes) } -[1929] classes\class_Subtitle.ahk { +[1964] classes\class_Subtitle.ahk { Line | Function 0032 | __Delete() @@ -30619,7 +30968,7 @@ Line | Function 1182 | height() } -[1930] classes\class_SyntaxTree.ahk { +[1965] classes\class_SyntaxTree.ahk { Line | Function 0008 | __New( fileNameOrXMLText ) @@ -30675,7 +31024,7 @@ Line | Function 0900 | indentText( str, amount ) } -[1931] classes\class_SystemTime.ahk { +[1966] classes\class_SystemTime.ahk { Line | Function 0045 | FromString(str) @@ -30686,7 +31035,7 @@ Line | Function 0090 | __GetSet(name, value="") } -[1932] classes\class_tableList (2).ahk { +[1967] classes\class_tableList (2).ahk { Line | Function 0031 | __New(lines, chars = "") @@ -30705,7 +31054,7 @@ Line | Function 0248 | applyMods(row) } -[1933] classes\class_tableList.ahk { +[1968] classes\class_tableList.ahk { Line | Function 0146 | __New(fileName, settings = "") @@ -30736,7 +31085,7 @@ Line | Function 0489 | debugToString(debugBuilder) } -[1934] classes\class_tableListMod (2).ahk { +[1969] classes\class_tableListMod (2).ahk { Line | Function 0014 | __New(m, s, l, t, a, o) @@ -30744,7 +31093,7 @@ Line | Function 0056 | toDebugString() } -[1935] classes\class_tableListMod.ahk { +[1970] classes\class_tableListMod.ahk { Line | Function 0014 | __New(b, o, t, l) @@ -30752,7 +31101,7 @@ Line | Function 0042 | debugToString(debugBuilder) } -[1936] classes\class_taskbarInterface.ahk { +[1971] classes\class_taskbarInterface.ahk { Line | Function 0033 | showButton(n) @@ -30841,7 +31190,7 @@ Line | Function 1513 | min(x,y) } -[1937] classes\class_taskbarInterface_v2.ahk { +[1972] classes\class_taskbarInterface_v2.ahk { Line | Function 0034 | showButton(n) @@ -30929,19 +31278,19 @@ Line | Function 1524 | min(x,y) } -[1938] classes\class_TaskView.ahk { +[1973] classes\class_TaskView.ahk { Line | Function } -[1939] classes\class_Tesseract.ahk { +[1974] classes\class_Tesseract.ahk { Line | Function 0034 | cleanup() 0178 | readlines(lines) } -[1940] classes\class_TextFader.ahk { +[1975] classes\class_TextFader.ahk { Line | Function 0004 | __New(text_color = 0x000000, background_color = 0xf0f0f0, step = 15) @@ -30950,19 +31299,19 @@ Line | Function 0089 | __Set(aName, aValue) } -[1941] classes\class_threadFunc.ahk { +[1976] classes\class_threadFunc.ahk { Line | Function 0041 | newThread(params, retId) } -[1942] classes\class_threadFunc_v1.ahk { +[1977] classes\class_threadFunc_v1.ahk { Line | Function 0063 | GlobalFree(hMem) } -[1943] classes\Class_ThreadInstance.ahk { +[1978] classes\Class_ThreadInstance.ahk { Line | Function 0150 | __Delete() @@ -30971,7 +31320,7 @@ Line | Function 0216 | GetVar(VarName) } -[1944] classes\class_threadMan.ahk { +[1979] classes\class_threadMan.ahk { Line | Function 0011 | __New(ahkDllPath,isResource=0) @@ -30995,7 +31344,7 @@ Line | Function 0178 | varGet(varName,pointer=0) } -[1945] classes\class_threefishCrypt.ahk { +[1980] classes\class_threefishCrypt.ahk { Line | Function 0022 | threefishSetKey(stateSize, keyData, tweak) @@ -31007,7 +31356,7 @@ Line | Function 1722 | threefishDecryption1024(keyC,data) } -[1946] classes\class_Thumbnail.ahk { +[1981] classes\class_Thumbnail.ahk { Line | Function 0060 | __New(hDestination, hSource) @@ -31026,13 +31375,13 @@ Line | Function 0338 | Unload() } -[1947] classes\class_Toast.ahk { +[1982] classes\class_Toast.ahk { Line | Function 0044 | show(byRef param) } -[1948] classes\class_tokelex.ahk { +[1983] classes\class_tokelex.ahk { Line | Function 0388 | __New(lexerName, keepWhiteSpace=0) @@ -31060,7 +31409,7 @@ Line | Function 1064 | test() } -[1949] classes\class_Toolbar (2).ahk { +[1984] classes\class_Toolbar (2).ahk { Line | Function 0129 | EventHandler(NotifyCode, GuiControl, lParam) @@ -31095,7 +31444,7 @@ Line | Function 0728 | GetDisabledImageList() } -[1950] classes\Class_Toolbar.ahk { +[1985] classes\Class_Toolbar.ahk { Line | Function 0140 | AutoSize() @@ -31125,7 +31474,7 @@ Line | Function 1260 | MakeShort(Long, ByRef LoWord, ByRef HiWord) } -[1951] classes\Class_TransparentListBox.ahk { +[1986] classes\Class_TransparentListBox.ahk { Line | Function 0085 | __Delete() @@ -31134,7 +31483,7 @@ Line | Function 0375 | SetRedraw(Mode) } -[1952] classes\class_TreeList.ahk { +[1987] classes\class_TreeList.ahk { Line | Function 0084 | SetColumnText(ColN, NewText) @@ -31165,7 +31514,25 @@ Line | Function 0295 | _TreeListHandler(hWnd, msg, wParam, lParam) } -[1953] classes\Class_Trie.ahk { +[1988] classes\class_TreeOf.ahk { + +Line | Function +0051 | __New(dataPrototype) +0090 | __New(tree, path, children) +0101 | getData() +0258 | getAncestors() +0280 | getDescendants() +0307 | _branchLookup(path) +0318 | _checkValid() +0324 | _isValid() +0340 | _isValidRoot() +0349 | _isValidBranch() +0359 | _isValidFalse() +0365 | _rawLoop(child) +0377 | _rawReturn() + +} +[1989] classes\Class_Trie.ahk { Line | Function 0013 | __Get(key) @@ -31179,7 +31546,7 @@ Line | Function 0154 | ObjectToString(obj) } -[1954] classes\class_tv.ahk { +[1990] classes\class_tv.ahk { Line | Function 0068 | selection() @@ -31223,7 +31590,7 @@ Line | Function 0410 | if(setsubfamilies) } -[1955] classes\class_Viewport.ahk { +[1991] classes\class_Viewport.ahk { Line | Function 0024 | __New(hWindow) @@ -31236,7 +31603,7 @@ Line | Function 0163 | CheckStatus(Result,Name,Message) } -[1956] classes\class_VirtualDesktopAccessor.ahk { +[1992] classes\class_VirtualDesktopAccessor.ahk { Line | Function 0003 | __New() @@ -31255,7 +31622,14 @@ Line | Function 0082 | UnPinApp(windowHwnd) } -[1957] classes\class_WBClientSite.ahk { +[1993] classes\Class_VisualStyle.ahk { + +Line | Function +0031 | __New() +0050 | __Delete() + +} +[1994] classes\class_WBClientSite.ahk { Line | Function 0003 | __New(self) @@ -31267,12 +31641,12 @@ Line | Function 0120 | _GUID2String(pGUID) } -[1958] classes\class_WBImg.ahk { +[1995] classes\class_WBImg.ahk { Line | Function } -[1959] classes\class_WebSocket.ahk { +[1996] classes\class_WebSocket.ahk { Line | Function 0003 | __New(WS_URL) @@ -31281,12 +31655,12 @@ Line | Function 0056 | Disconnect() } -[1960] classes\class_Win32.ahk { +[1997] classes\class_Win32.ahk { Line | Function } -[1961] classes\class_WinAPI.ahk { +[1998] classes\class_WinAPI.ahk { Line | Function 0022 | AllowSetForegroundWindow(dwProcessId) @@ -31353,7 +31727,7 @@ Line | Function 0277 | VkKeyScanEx(ch, dwhkl) } -[1962] classes\class_WinClip.ahk { +[1999] classes\class_WinClip.ahk { Line | Function 0003 | __New() @@ -31467,7 +31841,7 @@ Line | Function 1271 | GetEncoderClsid( format, ByRef CLSID ) } -[1963] classes\class_WinClipAPI.ahk { +[2000] classes\class_WinClipAPI.ahk { Line | Function 0009 | Err( msg ) @@ -31508,7 +31882,7 @@ Line | Function 0233 | GetEncoderClsid( format, ByRef CLSID ) } -[1964] classes\class_WindowFader.ahk { +[2001] classes\class_WindowFader.ahk { Line | Function 0003 | __New(hwnd) @@ -31519,7 +31893,7 @@ Line | Function 0045 | _tick() } -[1965] classes\class_WindowsSettings.ahk { +[2002] classes\class_WindowsSettings.ahk { Line | Function 0020 | GetShowAllNotifications() @@ -31554,7 +31928,7 @@ Line | Function 0256 | SetDisableMinimizeAnim(Disabled) } -[1966] classes\class_Window_Ext_Monitor.ahk { +[2003] classes\class_Window_Ext_Monitor.ahk { Line | Function 0020 | __New() @@ -31582,7 +31956,21 @@ Line | Function 0394 | Window_CenterMouse($WinTitle) } -[1967] classes\Class_WinEvents.ahk { +[2004] classes\class_WinEventHook.ahk { + +Line | Function +0053 | __New(_hWinEventHook) +0062 | __Delete() +0067 | call() +0157 | unset(_hWinEventHook) +0163 | unsetByProcess(_idProcess) +0169 | unsetById(_hwnd) +0186 | unsetByEvent(_eventNum) +0198 | unsetAll() +0205 | _unset(_idProcess, _event) + +} +[2005] classes\Class_WinEvents.ahk { Line | Function 0005 | AutoInit() @@ -31591,7 +31979,7 @@ Line | Function 0033 | Destroy(wParam, lParam, Msg, hWnd) } -[1968] classes\Class_WinRing0.ahk { +[2006] classes\Class_WinRing0.ahk { Line | Function 0030 | GetDllVersion() @@ -31608,12 +31996,12 @@ Line | Function 0330 | _Del() } -[1969] classes\class_WinStructs.ahk { +[2007] classes\class_WinStructs.ahk { Line | Function } -[1970] classes\class_WMCommand_and_Notify.ahk { +[2008] classes\class_WMCommand_and_Notify.ahk { Line | Function 0021 | __New() @@ -31626,7 +32014,7 @@ Line | Function 0196 | On_WM_NOTIFY_Handler(W, L) } -[1971] classes\class_WM_Dlg.ahk { +[2009] classes\class_WM_Dlg.ahk { Line | Function 0008 | __New() @@ -31707,7 +32095,7 @@ Line | Function 2314 | IntroDlg_LeapMsgHandler(sMsg, ByRef rLeapData, ByRef rasGestures, ByRef rsOutput) } -[1972] classes\class_WorkerThread.ahk { +[2010] classes\class_WorkerThread.ahk { Line | Function 0041 | __new(WorkerFunction, CanPause = 0, CanStop = 0, ExitAfterTask = 1) @@ -31736,7 +32124,7 @@ Line | Function 0493 | Send_WM_COPYDATA(ByRef StringToSend, hwnd) } -[1973] classes\class_Worker_Local.ahk { +[2011] classes\class_Worker_Local.ahk { Line | Function 0005 | __New(Job,WorkerCode) @@ -31746,14 +32134,14 @@ Line | Function 0174 | LocalWorkerReceiveData(hWindow,pCopyDataStruct) } -[1974] classes\class_Worker_Network.ahk { +[2012] classes\class_Worker_Network.ahk { Line | Function 0003 | __New(Job,WorkerCode) 0008 | Send(ByRef Data,Length) } -[1975] classes\class_XBOX360.ahk { +[2013] classes\class_XBOX360.ahk { Line | Function 0076 | __New() @@ -31794,7 +32182,7 @@ Line | Function 0440 | PowerOffController(index) } -[1976] classes\class_xcall.ahk { +[2014] classes\class_xcall.ahk { Line | Function 0010 | checkIfParamsNeedsToBeSaved() @@ -31802,7 +32190,7 @@ Line | Function 0088 | callbackRouter( callbackNumber, task ) } -[1977] classes\class_xHotkey.ahk { +[2015] classes\class_xHotkey.ahk { Line | Function 0077 | Fire(KeyName) @@ -31816,12 +32204,12 @@ Line | Function 0173 | v1() } -[1978] classes\class_xlib.ahk { +[2016] classes\class_xlib.ahk { Line | Function } -[1979] classes\Class_xmlfile.ahk { +[2017] classes\Class_xmlfile.ahk { Line | Function 0015 | __Get() @@ -31839,7 +32227,7 @@ Line | Function 0152 | ssn(node,path) } -[1980] classes\Class_XmlHelper.ahk { +[2018] classes\Class_XmlHelper.ahk { Line | Function 0036 | __New() @@ -31851,7 +32239,7 @@ Line | Function 0701 | xpath_load(ByRef doc, src = "") } -[1981] classes\class_XNet.ahk { +[2019] classes\class_XNet.ahk { Line | Function 0086 | __Delete() @@ -31859,7 +32247,7 @@ Line | Function 0146 | __Get( Member ) } -[1982] classes\class_ZeeGrid.ahk { +[2020] classes\class_ZeeGrid.ahk { Line | Function 0028 | __Delete() @@ -31867,7 +32255,7 @@ Line | Function 0112 | __Get(key) } -[1983] classes\class__ini.ahk { +[2021] classes\class__ini.ahk { Line | Function 0086 | _Def(kind, value="") @@ -31876,20 +32264,20 @@ Line | Function 0158 | __Delete() } -[1984] classes\ComDispTable.ahk { +[2022] classes\ComDispTable.ahk { Line | Function 0008 | ComDispTable(methods) } -[1985] classes\ComVar.ahk { +[2023] classes\ComVar.ahk { Line | Function 0011 | ComVar() 0036 | ComVarDel(cv) } -[1986] classes\DataBaseAbstract.ahk { +[2024] classes\DataBaseAbstract.ahk { Line | Function 0020 | Count() @@ -31936,7 +32324,7 @@ Line | Function 0293 | __Get(param) } -[1987] classes\DataBaseADO.ahk { +[2025] classes\DataBaseADO.ahk { Line | Function 0011 | __New(connectionString) @@ -31959,7 +32347,7 @@ Line | Function 0200 | Insert(record, tableName) } -[1988] classes\DataBaseFactory.ahk { +[2026] classes\DataBaseFactory.ahk { Line | Function 0008 | OpenDataBase(dbType, connectionString) @@ -31967,7 +32355,7 @@ Line | Function 0033 | __New() } -[1989] classes\DataBaseMySQL.ahk { +[2027] classes\DataBaseMySQL.ahk { Line | Function 0011 | __New(connectionData) @@ -31993,7 +32381,7 @@ Line | Function 0189 | _GetTableObj(sql, maxResult = -1) } -[1990] classes\DataBaseSQLLite.ahk { +[2028] classes\DataBaseSQLLite.ahk { Line | Function 0005 | GetVersion() @@ -32022,19 +32410,19 @@ Line | Function 0311 | ReturnCode(RC) } -[1991] classes\DBA.ahk { +[2029] classes\DBA.ahk { Line | Function } -[1992] classes\Delegate.ahk { +[2030] classes\Delegate.ahk { Line | Function 0015 | if(target == "") 0037 | if(i == 1) } -[1993] classes\RecordSetADO.ahk { +[2031] classes\RecordSetADO.ahk { Line | Function 0011 | __New(sql, adoConnection, editable = false) @@ -32051,7 +32439,7 @@ Line | Function 0095 | __Get(propertyName) } -[1994] classes\RecordSetMySQL.ahk { +[2032] classes\RecordSetMySQL.ahk { Line | Function 0016 | __New(db, requestResult) @@ -32063,7 +32451,7 @@ Line | Function 0097 | Close() } -[1995] classes\RecordSetSqlLite.ahk { +[2033] classes\RecordSetSqlLite.ahk { Line | Function 0016 | __New(db, query) @@ -32076,7 +32464,7 @@ Line | Function 0146 | Close() } -[1996] classes\SQL_new.ahk { +[2034] classes\SQL_new.ahk { Line | Function 0031 | __New(databaseType,connectionString) @@ -32101,7 +32489,7 @@ Line | Function 0318 | close() } -[1997] lib\Class_PictureButton_v1.ahk { +[2035] lib\Class_PictureButton_v1.ahk { Line | Function 0004 | __New() @@ -32114,7 +32502,7 @@ Line | Function 0079 | LBUTTONUP(hwnd) } -[1998] lib\Class_PictureButton_v2.ahk { +[2036] lib\Class_PictureButton_v2.ahk { Line | Function 0131 | __New() @@ -32128,7 +32516,7 @@ Line | Function 0282 | LBUTTONUP(hwnd) } -[1999] Bridge\class_JavaAccessBridge.ahk { +[2037] Bridge\class_JavaAccessBridge.ahk { Line | Function 0121 | GetAccessibleContextAt(hwnd, x, y) @@ -32203,7 +32591,7 @@ Line | Function 1264 | GetJavaString(byref Struct, byref BaseOffset, Length) } -[2000] Bridge\JavaAccessBridge.ahk { +[2038] Bridge\JavaAccessBridge.ahk { Line | Function 0001 | GetTextInfo() @@ -32295,12 +32683,12 @@ Line | Function 2229 | setPropertyTableModelChangeFP(fp) } -[2001] FrameWork\CCF.ahk { +[2039] FrameWork\CCF.ahk { Line | Function } -[2002] FrameWork\CCFramework.ahk { +[2040] FrameWork\CCFramework.ahk { Line | Function 0035 | GUID2String(guid) @@ -32316,377 +32704,377 @@ Line | Function 0237 | HasEnumFlag(var, flag) } -[2003] FrameWork\ImageList Header.ahk { +[2041] FrameWork\ImageList Header.ahk { Line | Function } -[2004] FrameWork\SaveHImage2File.ahk { +[2042] FrameWork\SaveHImage2File.ahk { Line | Function } -[2005] FrameWork\TaskbarList Header.ahk { +[2043] FrameWork\TaskbarList Header.ahk { Line | Function } -[2006] FrameWork\Type Information Header.ahk { +[2044] FrameWork\Type Information Header.ahk { Line | Function } -[2007] FrameWork\UIAutomation Header.ahk { +[2045] FrameWork\UIAutomation Header.ahk { Line | Function } -[2008] FrameWork\_CCF_Error_Handler_.ahk { +[2046] FrameWork\_CCF_Error_Handler_.ahk { Line | Function } -[2009] Classes\CALLCONV.ahk { +[2047] Classes\CALLCONV.ahk { Line | Function } -[2010] Classes\CF.ahk { +[2048] Classes\CF.ahk { Line | Function } -[2011] Classes\CLR.ahk { +[2049] Classes\CLR.ahk { Line | Function } -[2012] Classes\CLSCTX.ahk { +[2050] Classes\CLSCTX.ahk { Line | Function } -[2013] Classes\DESCKIND.ahk { +[2051] Classes\DESCKIND.ahk { Line | Function } -[2014] Classes\DEVICE_STATE.ahk { +[2052] Classes\DEVICE_STATE.ahk { Line | Function } -[2015] Classes\DISPATCHF.ahk { +[2053] Classes\DISPATCHF.ahk { Line | Function } -[2016] Classes\DISPID.ahk { +[2054] Classes\DISPID.ahk { Line | Function } -[2017] Classes\DVASPECT.ahk { +[2055] Classes\DVASPECT.ahk { Line | Function } -[2018] Classes\EDataFlow.ahk { +[2056] Classes\EDataFlow.ahk { Line | Function } -[2019] Classes\ERole.ahk { +[2057] Classes\ERole.ahk { Line | Function } -[2020] Classes\FILE_ATTRIBUTE.ahk { +[2058] Classes\FILE_ATTRIBUTE.ahk { Line | Function } -[2021] Classes\FUNCFLAG.ahk { +[2059] Classes\FUNCFLAG.ahk { Line | Function } -[2022] Classes\FUNCKIND.ahk { +[2060] Classes\FUNCKIND.ahk { Line | Function } -[2023] Classes\IDC.ahk { +[2061] Classes\IDC.ahk { Line | Function } -[2024] Classes\IDI.ahk { +[2062] Classes\IDI.ahk { Line | Function } -[2025] Classes\IDLFLAG.ahk { +[2063] Classes\IDLFLAG.ahk { Line | Function } -[2026] Classes\ILC.ahk { +[2064] Classes\ILC.ahk { Line | Function } -[2027] Classes\ILCF.ahk { +[2065] Classes\ILCF.ahk { Line | Function } -[2028] Classes\ILD.ahk { +[2066] Classes\ILD.ahk { Line | Function } -[2029] Classes\ILDI.ahk { +[2067] Classes\ILDI.ahk { Line | Function } -[2030] Classes\ILFIP.ahk { +[2068] Classes\ILFIP.ahk { Line | Function } -[2031] Classes\ILGOS.ahk { +[2069] Classes\ILGOS.ahk { Line | Function } -[2032] Classes\ILIF.ahk { +[2070] Classes\ILIF.ahk { Line | Function } -[2033] Classes\ILR.ahk { +[2071] Classes\ILR.ahk { Line | Function } -[2034] Classes\ILS.ahk { +[2072] Classes\ILS.ahk { Line | Function } -[2035] Classes\IMPLTYPEFLAG.ahk { +[2073] Classes\IMPLTYPEFLAG.ahk { Line | Function } -[2036] Classes\INVOKEKIND.ahk { +[2074] Classes\INVOKEKIND.ahk { Line | Function } -[2037] Classes\KDC.ahk { +[2075] Classes\KDC.ahk { Line | Function } -[2038] Classes\KNOWNFOLDERID.ahk { +[2076] Classes\KNOWNFOLDERID.ahk { Line | Function } -[2039] Classes\LIBFLAGS.ahk { +[2077] Classes\LIBFLAGS.ahk { Line | Function } -[2040] Classes\LOCKTYPE.ahk { +[2078] Classes\LOCKTYPE.ahk { Line | Function } -[2041] Classes\MEMBERID.ahk { +[2079] Classes\MEMBERID.ahk { Line | Function } -[2042] Classes\OBM.ahk { +[2080] Classes\OBM.ahk { Line | Function } -[2043] Classes\PARAMFLAG.ahk { +[2081] Classes\PARAMFLAG.ahk { Line | Function } -[2044] Classes\PDOPSTATUS.ahk { +[2082] Classes\PDOPSTATUS.ahk { Line | Function } -[2045] Classes\PDTIMER.ahk { +[2083] Classes\PDTIMER.ahk { Line | Function } -[2046] Classes\PICTUREATTRIBUTES.ahk { +[2084] Classes\PICTUREATTRIBUTES.ahk { Line | Function } -[2047] Classes\PICTYPE.ahk { +[2085] Classes\PICTYPE.ahk { Line | Function } -[2048] Classes\PMODE.ahk { +[2086] Classes\PMODE.ahk { Line | Function } -[2049] Classes\PROGDLG.ahk { +[2087] Classes\PROGDLG.ahk { Line | Function } -[2050] Classes\PSC.ahk { +[2088] Classes\PSC.ahk { Line | Function } -[2051] Classes\RECO.ahk { +[2089] Classes\RECO.ahk { Line | Function } -[2052] Classes\REGKIND.ahk { +[2090] Classes\REGKIND.ahk { Line | Function } -[2053] Classes\REO.ahk { +[2091] Classes\REO.ahk { Line | Function } -[2054] Classes\SFGAO.ahk { +[2092] Classes\SFGAO.ahk { Line | Function } -[2055] Classes\SICHINT.ahk { +[2093] Classes\SICHINT.ahk { Line | Function } -[2056] Classes\SIGDN.ahk { +[2094] Classes\SIGDN.ahk { Line | Function } -[2057] Classes\SLGP.ahk { +[2095] Classes\SLGP.ahk { Line | Function } -[2058] Classes\SLR.ahk { +[2096] Classes\SLR.ahk { Line | Function } -[2059] Classes\SPACTION.ahk { +[2097] Classes\SPACTION.ahk { Line | Function } -[2060] Classes\STATFLAG.ahk { +[2098] Classes\STATFLAG.ahk { Line | Function } -[2061] Classes\STGC.ahk { +[2099] Classes\STGC.ahk { Line | Function } -[2062] Classes\STGM.ahk { +[2100] Classes\STGM.ahk { Line | Function } -[2063] Classes\STGMOVE.ahk { +[2101] Classes\STGMOVE.ahk { Line | Function } -[2064] Classes\STGTY.ahk { +[2102] Classes\STGTY.ahk { Line | Function } -[2065] Classes\STPFLAG.ahk { +[2103] Classes\STPFLAG.ahk { Line | Function } -[2066] Classes\STREAM_SEEK.ahk { +[2104] Classes\STREAM_SEEK.ahk { Line | Function } -[2067] Classes\SW.ahk { +[2105] Classes\SW.ahk { Line | Function } -[2068] Classes\SYSKIND.ahk { +[2106] Classes\SYSKIND.ahk { Line | Function } -[2069] Classes\TBPFLAG.ahk { +[2107] Classes\TBPFLAG.ahk { Line | Function } -[2070] Classes\THUMBBUTTONFLAGS.ahk { +[2108] Classes\THUMBBUTTONFLAGS.ahk { Line | Function } -[2071] Classes\THUMBBUTTONMASK.ahk { +[2109] Classes\THUMBBUTTONMASK.ahk { Line | Function } -[2072] Classes\TYPEFLAG.ahk { +[2110] Classes\TYPEFLAG.ahk { Line | Function } -[2073] Classes\TYPEKIND.ahk { +[2111] Classes\TYPEKIND.ahk { Line | Function } -[2074] Classes\VARENUM.ahk { +[2112] Classes\VARENUM.ahk { Line | Function } -[2075] Classes\VARFLAG.ahk { +[2113] Classes\VARFLAG.ahk { Line | Function } -[2076] Classes\VARKIND.ahk { +[2114] Classes\VARKIND.ahk { Line | Function } -[2077] CustomDestinationList\CustomDestinationList.ahk { +[2115] CustomDestinationList\CustomDestinationList.ahk { Line | Function 0046 | SetAppID(id) @@ -32698,14 +33086,14 @@ Line | Function 0195 | AbortList() } -[2078] Dispatch\Dispatch.ahk { +[2116] Dispatch\Dispatch.ahk { Line | Function 0036 | FromOBJECT(obj) 0050 | GetTypeInfoCount() } -[2079] EnumShellItems\EnumShellItems.ahk { +[2117] EnumShellItems\EnumShellItems.ahk { Line | Function 0070 | Skip(count) @@ -32713,7 +33101,7 @@ Line | Function 0094 | Clone() } -[2080] EnumSTATSTG\EnumSTATSTG.ahk { +[2118] EnumSTATSTG\EnumSTATSTG.ahk { Line | Function 0073 | Skip(count) @@ -32721,7 +33109,7 @@ Line | Function 0097 | Clone() } -[2081] ImageList\ImageList.ahk { +[2119] ImageList\ImageList.ahk { Line | Function 0137 | SetOverlayImage(image, overlay) @@ -32756,7 +33144,7 @@ Line | Function 0659 | Unload() } -[2082] ImageList2\ImageList2.ahk { +[2120] ImageList2\ImageList2.ahk { Line | Function 0050 | Resize(width, height) @@ -32769,7 +33157,7 @@ Line | Function 0185 | Initialize(width, height, flags, initial, max) } -[2083] MMDevice\MMDevice.ahk { +[2121] MMDevice\MMDevice.ahk { Line | Function 0072 | OpenPropertyStore(access) @@ -32777,14 +33165,14 @@ Line | Function 0100 | GetState() } -[2084] MMDeviceCollection\MMDeviceCollection.ahk { +[2122] MMDeviceCollection\MMDeviceCollection.ahk { Line | Function 0042 | GetCount() 0059 | Item(index) } -[2085] MMDeviceEnumerator\MMDeviceEnumerator.ahk { +[2123] MMDeviceEnumerator\MMDeviceEnumerator.ahk { Line | Function 0047 | EnumAudioEndpoints(dataFlow, mask) @@ -32794,14 +33182,14 @@ Line | Function 0115 | UnregisterEndpointNotificationCallback(client) } -[2086] ObjectArray\ObjectArray.ahk { +[2124] ObjectArray\ObjectArray.ahk { Line | Function 0042 | GetCount() 0060 | GetAt(index, type) } -[2087] ObjectCollection\ObjectCollection.ahk { +[2125] ObjectCollection\ObjectCollection.ahk { Line | Function 0038 | AddObject(obj) @@ -32810,7 +33198,7 @@ Line | Function 0084 | Clear() } -[2088] OperationsProgressDialog\OperationsProgressDialog.ahk { +[2126] OperationsProgressDialog\OperationsProgressDialog.ahk { Line | Function 0058 | StopProgressDialog() @@ -32824,13 +33212,13 @@ Line | Function 0203 | GetOperationStatus() } -[2089] Persist\Persist.ahk { +[2127] Persist\Persist.ahk { Line | Function 0042 | GetClassID() } -[2090] PersistFile\PersistFile.ahk { +[2128] PersistFile\PersistFile.ahk { Line | Function 0042 | IsDirty() @@ -32840,7 +33228,7 @@ Line | Function 0101 | GetCurFile() } -[2091] Picture\Picture.ahk { +[2129] Picture\Picture.ahk { Line | Function 0053 | FromPICTDESC(src) @@ -32860,7 +33248,7 @@ Line | Function 0405 | get_Attributes() } -[2092] ProgressDialog\ProgressDialog.ahk { +[2130] ProgressDialog\ProgressDialog.ahk { Line | Function 0072 | StopProgressDialog() @@ -32875,7 +33263,7 @@ Line | Function 0246 | ResumeTimer() } -[2093] PropertyStore\PropertyStore.ahk { +[2131] PropertyStore\PropertyStore.ahk { Line | Function 0042 | GetCount() @@ -32885,7 +33273,7 @@ Line | Function 0110 | Commit() } -[2094] PropertyStoreCache\PropertyStoreCache.ahk { +[2132] PropertyStoreCache\PropertyStoreCache.ahk { Line | Function 0040 | GetState(key) @@ -32894,13 +33282,13 @@ Line | Function 0102 | SetValueAndState(key, value, state) } -[2095] ProvideClassInfo\ProvideClassInfo.ahk { +[2133] ProvideClassInfo\ProvideClassInfo.ahk { Line | Function 0042 | GetClassInfo() } -[2096] RichEditOLE\RichEditOLE.ahk { +[2134] RichEditOLE\RichEditOLE.ahk { Line | Function 0053 | FromHWND(ctrl) @@ -32921,19 +33309,19 @@ Line | Function 0299 | GetClipboardData(range, reco) } -[2097] SequentialStream\SequentialStream.ahk { +[2135] SequentialStream\SequentialStream.ahk { Line | Function } -[2098] ShellItem\ShellItem.ahk { +[2136] ShellItem\ShellItem.ahk { Line | Function 0171 | GetParent() 0206 | GetAttributes(requested, byRef attr) } -[2099] ShellLinkA\ShellLinkA.ahk { +[2137] ShellLinkA\ShellLinkA.ahk { Line | Function 0067 | GetIDList(ByRef idlist) @@ -32953,7 +33341,7 @@ Line | Function 0313 | SetPath(path) } -[2100] ShellLinkW\ShellLinkW.ahk { +[2138] ShellLinkW\ShellLinkW.ahk { Line | Function 0067 | GetIDList(ByRef idlist) @@ -32973,7 +33361,7 @@ Line | Function 0313 | SetPath(path) } -[2101] Storage\Storage.ahk { +[2139] Storage\Storage.ahk { Line | Function 0053 | CreateStream(name, access) @@ -32990,7 +33378,7 @@ Line | Function 0302 | SetStateBits(state, mask) } -[2102] Stream\Stream.ahk { +[2140] Stream\Stream.ahk { Line | Function 0067 | Seek(move, dwOrigin) @@ -33002,138 +33390,138 @@ Line | Function 0193 | Clone() } -[2103] Classes\ARRAYDESC.ahk { +[2141] Classes\ARRAYDESC.ahk { Line | Function } -[2104] Classes\CHARRANGE.ahk { +[2142] Classes\CHARRANGE.ahk { Line | Function } -[2105] Classes\CUSTDATA.ahk { +[2143] Classes\CUSTDATA.ahk { Line | Function } -[2106] Classes\CUSTDATAITEM.ahk { +[2144] Classes\CUSTDATAITEM.ahk { Line | Function } -[2107] Classes\DISPPARAMS.ahk { +[2145] Classes\DISPPARAMS.ahk { Line | Function } -[2108] Classes\ELEMDESC.ahk { +[2146] Classes\ELEMDESC.ahk { Line | Function } -[2109] Classes\EXCEPINFO.ahk { +[2147] Classes\EXCEPINFO.ahk { Line | Function } -[2110] Classes\FILETIME.ahk { +[2148] Classes\FILETIME.ahk { Line | Function 0116 | FromSYSTEMTIME(src) } -[2111] Classes\FUNCDESC.ahk { +[2149] Classes\FUNCDESC.ahk { Line | Function } -[2112] Classes\IDLDESC.ahk { +[2150] Classes\IDLDESC.ahk { Line | Function } -[2113] Classes\IMAGEINFO.ahk { +[2151] Classes\IMAGEINFO.ahk { Line | Function } -[2114] Classes\IMAGELISTDRAWPARAMS.ahk { +[2152] Classes\IMAGELISTDRAWPARAMS.ahk { Line | Function } -[2115] Classes\IMAGELISTSTATS.ahk { +[2153] Classes\IMAGELISTSTATS.ahk { Line | Function } -[2116] Classes\INTERFACEDATA.ahk { +[2154] Classes\INTERFACEDATA.ahk { Line | Function } -[2117] Classes\METHODDATA.ahk { +[2155] Classes\METHODDATA.ahk { Line | Function } -[2118] Classes\PARAMDATA.ahk { +[2156] Classes\PARAMDATA.ahk { Line | Function } -[2119] Classes\PARAMDESC.ahk { +[2157] Classes\PARAMDESC.ahk { Line | Function } -[2120] Classes\PARAMDESCEX.ahk { +[2158] Classes\PARAMDESCEX.ahk { Line | Function } -[2121] Classes\PICTDESC.ahk { +[2159] Classes\PICTDESC.ahk { Line | Function } -[2122] Classes\POINT.ahk { +[2160] Classes\POINT.ahk { Line | Function } -[2123] Classes\PROPERTYKEY.ahk { +[2161] Classes\PROPERTYKEY.ahk { Line | Function } -[2124] Classes\RECT.ahk { +[2162] Classes\RECT.ahk { Line | Function } -[2125] Classes\REOBJECT.ahk { +[2163] Classes\REOBJECT.ahk { Line | Function } -[2126] Classes\SAFEARRAYBOUND.ahk { +[2164] Classes\SAFEARRAYBOUND.ahk { Line | Function } -[2127] Classes\SIZE.ahk { +[2165] Classes\SIZE.ahk { Line | Function } -[2128] Classes\STATSTG.ahk { +[2166] Classes\STATSTG.ahk { Line | Function } -[2129] Classes\StructBase.ahk { +[2167] Classes\StructBase.ahk { Line | Function 0040 | FindBufferKey(buffer) @@ -33144,43 +33532,43 @@ Line | Function 0200 | GetOriginalPointer() } -[2130] Classes\SYSTEMTIME.ahk { +[2168] Classes\SYSTEMTIME.ahk { Line | Function 0159 | FromFILETIME(src) } -[2131] Classes\THUMBBUTTON.ahk { +[2169] Classes\THUMBBUTTON.ahk { Line | Function } -[2132] Classes\TLIBATTR.ahk { +[2170] Classes\TLIBATTR.ahk { Line | Function } -[2133] Classes\TYPEATTR.ahk { +[2171] Classes\TYPEATTR.ahk { Line | Function } -[2134] Classes\TYPEDESC.ahk { +[2172] Classes\TYPEDESC.ahk { Line | Function } -[2135] Classes\VARDESC.ahk { +[2173] Classes\VARDESC.ahk { Line | Function } -[2136] Classes\WIN32_FIND_DATA.ahk { +[2174] Classes\WIN32_FIND_DATA.ahk { Line | Function } -[2137] TaskbarList\TaskbarList.ahk { +[2175] TaskbarList\TaskbarList.ahk { Line | Function 0041 | HrInit() @@ -33190,13 +33578,13 @@ Line | Function 0136 | SetActiveAlt(hWin) } -[2138] TaskbarList2\TaskbarList2.ahk { +[2176] TaskbarList2\TaskbarList2.ahk { Line | Function 0053 | MarkFullScreen(hWin, ApplyRemove) } -[2139] TaskbarList3\TaskbarList3.ahk { +[2177] TaskbarList3\TaskbarList3.ahk { Line | Function 0055 | SetProgressValue(hWin, value) @@ -33210,18 +33598,18 @@ Line | Function 0331 | ParseArray(array) } -[2140] TaskbarList4\TaskbarList4.ahk { +[2178] TaskbarList4\TaskbarList4.ahk { Line | Function 0056 | SetTabProperties(hTab, properties) } -[2141] TypeComp\TypeComp.ahk { +[2179] TypeComp\TypeComp.ahk { Line | Function } -[2142] TypeInfo\TypeInfo.ahk { +[2180] TypeInfo\TypeInfo.ahk { Line | Function 0046 | GetTypeAttr() @@ -33238,7 +33626,7 @@ Line | Function 0407 | ReleaseVarDesc(attr) } -[2143] TypeInfo2\TypeInfo2.ahk { +[2181] TypeInfo2\TypeInfo2.ahk { Line | Function 0044 | ClearCustData(data) @@ -33258,7 +33646,7 @@ Line | Function 0330 | GetAllImplTypeCustData(index) } -[2144] TypeLib\TypeLib.ahk { +[2182] TypeLib\TypeLib.ahk { Line | Function 0069 | FromRegistry(guid, vMajor, vMinor) @@ -33273,7 +33661,7 @@ Line | Function 0250 | ReleaseTLibAttr(attr) } -[2145] TypeLib2\TypeLib2.ahk { +[2183] TypeLib2\TypeLib2.ahk { Line | Function 0044 | ClearCustData(data) @@ -33281,19 +33669,19 @@ Line | Function 0118 | GetAllCustData() } -[2146] UIAutomationBoolCondition\UIAutomationBoolCondition.ahk { +[2184] UIAutomationBoolCondition\UIAutomationBoolCondition.ahk { Line | Function 0041 | get_BooleanValue() 0054 | __Get(property) } -[2147] UIAutomationCondition\UIAutomationCondition.ahk { +[2185] UIAutomationCondition\UIAutomationCondition.ahk { Line | Function } -[2148] UIAutomationElementArray\UIAutomationElementArray.ahk { +[2186] UIAutomationElementArray\UIAutomationElementArray.ahk { Line | Function 0041 | get_Length() @@ -33301,13 +33689,13 @@ Line | Function 0071 | __Get(property) } -[2149] UIAutomationNotCondition\UIAutomationNotCondition.ahk { +[2187] UIAutomationNotCondition\UIAutomationNotCondition.ahk { Line | Function 0041 | GetChild() } -[2150] Unknown\Unknown.ahk { +[2188] Unknown\Unknown.ahk { Line | Function 0098 | __Delete() @@ -33318,17 +33706,17 @@ Line | Function 0171 | Release() } -[2151] libs\DbgOut.ahk { +[2189] libs\DbgOut.ahk { Line | Function } -[2152] libs\Windy.ahk { +[2190] libs\Windy.ahk { Line | Function } -[2153] ActiveScript\ActiveScript.ahk { +[2191] ActiveScript\ActiveScript.ahk { Line | Function 0012 | __New(Language) @@ -33351,7 +33739,7 @@ Line | Function 0285 | _AS_GUIDToString(pGUID) } -[2154] ActiveScript\ComDispatch0.ahk { +[2192] ActiveScript\ComDispatch0.ahk { Line | Function 0007 | ComDispatch0(this) @@ -33360,7 +33748,7 @@ Line | Function 0190 | cd0_BSTR(ByRef a) } -[2155] ActiveScript\JsRT.ahk { +[2193] ActiveScript\JsRT.ahk { Line | Function 0010 | __New() @@ -33376,14 +33764,14 @@ Line | Function 0105 | Eval(code) } -[2156] AFC\AFC.ahk { +[2194] AFC\AFC.ahk { Line | Function 0077 | __AFC_AppArgs() 0154 | AFC_AtExit(method) } -[2157] AFC\CChildWindow.ahk { +[2195] AFC\CChildWindow.ahk { Line | Function 0005 | __New(parent, title, options) @@ -33391,7 +33779,7 @@ Line | Function 0018 | GetSize() } -[2158] AFC\CControl.ahk { +[2196] AFC\CControl.ahk { Line | Function 0037 | __Gui() @@ -33413,77 +33801,77 @@ Line | Function 0225 | Visible(v) } -[2159] AFC\CCtrlActiveX.ahk { +[2197] AFC\CCtrlActiveX.ahk { Line | Function } -[2160] AFC\CCtrlButton.ahk { +[2198] AFC\CCtrlButton.ahk { Line | Function } -[2161] AFC\CCtrlCalendar.ahk { +[2199] AFC\CCtrlCalendar.ahk { Line | Function } -[2162] AFC\CCtrlCheckBox.ahk { +[2200] AFC\CCtrlCheckBox.ahk { Line | Function } -[2163] AFC\CCtrlComboBox.ahk { +[2201] AFC\CCtrlComboBox.ahk { Line | Function } -[2164] AFC\CCtrlDateTime.ahk { +[2202] AFC\CCtrlDateTime.ahk { Line | Function } -[2165] AFC\CCtrlDropDown.ahk { +[2203] AFC\CCtrlDropDown.ahk { Line | Function } -[2166] AFC\CCtrlEdit.ahk { +[2204] AFC\CCtrlEdit.ahk { Line | Function } -[2167] AFC\CCtrlGroupBox.ahk { +[2205] AFC\CCtrlGroupBox.ahk { Line | Function } -[2168] AFC\CCtrlHotkey.ahk { +[2206] AFC\CCtrlHotkey.ahk { Line | Function } -[2169] AFC\CCtrlImage.ahk { +[2207] AFC\CCtrlImage.ahk { Line | Function } -[2170] AFC\CCtrlLabel.ahk { +[2208] AFC\CCtrlLabel.ahk { Line | Function } -[2171] AFC\CCtrlLink.ahk { +[2209] AFC\CCtrlLink.ahk { Line | Function } -[2172] AFC\CCtrlListBox.ahk { +[2210] AFC\CCtrlListBox.ahk { Line | Function } -[2173] AFC\CCtrlListView.ahk { +[2211] AFC\CCtrlListView.ahk { Line | Function 0018 | _SelectLV() @@ -33503,35 +33891,35 @@ Line | Function 0534 | Next(ByRef k, ByRef v) } -[2174] AFC\CCtrlProgress.ahk { +[2212] AFC\CCtrlProgress.ahk { Line | Function } -[2175] AFC\CCtrlRadio.ahk { +[2213] AFC\CCtrlRadio.ahk { Line | Function } -[2176] AFC\CCtrlSlider.ahk { +[2214] AFC\CCtrlSlider.ahk { Line | Function } -[2177] AFC\CCtrlStatusBar.ahk { +[2215] AFC\CCtrlStatusBar.ahk { Line | Function 0032 | _SelectSB() 0105 | OnEvent(oCtrl, guiEvent, eventInfo) } -[2178] AFC\CCtrlTab.ahk { +[2216] AFC\CCtrlTab.ahk { Line | Function 0054 | EndDef() } -[2179] AFC\CCtrlTreeView.ahk { +[2217] AFC\CCtrlTreeView.ahk { Line | Function 0033 | _SelectTV() @@ -33563,23 +33951,23 @@ Line | Function 0528 | Next(ByRef k, ByRef v) } -[2180] AFC\CCtrlUpDown.ahk { +[2218] AFC\CCtrlUpDown.ahk { Line | Function } -[2181] AFC\CDefaultBase.ahk { +[2219] AFC\CDefaultBase.ahk { Line | Function } -[2182] AFC\CImageList.ahk { +[2220] AFC\CImageList.ahk { Line | Function 0028 | __Delete() } -[2183] AFC\CMsgDispatch.ahk { +[2221] AFC\CMsgDispatch.ahk { Line | Function 0030 | __New(obj, msg, handler) @@ -33588,7 +33976,7 @@ Line | Function 0065 | __CMsgDispatchProc(wParam, lParam, msg, hWnd) } -[2184] AFC\CParentWindow.ahk { +[2222] AFC\CParentWindow.ahk { Line | Function 0016 | AddChild(type) @@ -33599,12 +33987,12 @@ Line | Function 0071 | AllocateSpace(window) } -[2185] AFC\CPropImpl.ahk { +[2223] AFC\CPropImpl.ahk { Line | Function } -[2186] AFC\CScrollableWindow.ahk { +[2224] AFC\CScrollableWindow.ahk { Line | Function 0013 | OnSize() @@ -33613,7 +34001,7 @@ Line | Function 0150 | OnScroll(wParam, lParam, msg, hwnd) } -[2187] AFC\CWindow.ahk { +[2225] AFC\CWindow.ahk { Line | Function 0039 | Close() @@ -33638,7 +34026,7 @@ Line | Function 0417 | __CWindow_GuiHandler() } -[2188] gui\Events.ahk { +[2226] gui\Events.ahk { Line | Function 0001 | GuiClose(GuiHwnd) @@ -33648,7 +34036,7 @@ Line | Function 0023 | GuiContextMenu(GuiHwnd, CtrlHwnd, EventInfo, IsRightClick, X, Y) } -[2189] gui\GuiBase.ahk { +[2227] gui\GuiBase.ahk { Line | Function 0005 | Type(cls) @@ -33673,13 +34061,13 @@ Line | Function 0318 | Print(Text) } -[2190] gui\ImageList.ahk { +[2228] gui\ImageList.ahk { Line | Function 0013 | __Delete() } -[2191] gui\IndirectReferenceHolder.ahk { +[2229] gui\IndirectReferenceHolder.ahk { Line | Function 0009 | __New(Object) @@ -33689,7 +34077,7 @@ Line | Function 0038 | IndirectReferenceDelete(this) } -[2192] gui\PositionType.ahk { +[2230] gui\PositionType.ahk { Line | Function 0002 | Set(Coord, Val) @@ -33701,7 +34089,7 @@ Line | Function 0034 | Next(ByRef k, ByRef v) } -[2193] Canvas\Brush.ahk { +[2231] Canvas\Brush.ahk { Line | Function 0024 | __New(Color = 0xFFFFFFFF) @@ -33712,7 +34100,7 @@ Line | Function 0071 | CheckStatus(Result,Name,Message) } -[2194] Canvas\Canvas.ahk { +[2232] Canvas\Canvas.ahk { Line | Function 0089 | Initialize() @@ -33720,7 +34108,7 @@ Line | Function 0111 | Lenient() } -[2195] Canvas\Font.ahk { +[2233] Canvas\Font.ahk { Line | Function 0005 | Initialize() @@ -33735,7 +34123,7 @@ Line | Function 0180 | CheckStatus(Result,Name,Message) } -[2196] Canvas\Pen.ahk { +[2234] Canvas\Pen.ahk { Line | Function 0024 | __New(Color = 0xFFFFFFFF,Width = 1) @@ -33746,7 +34134,7 @@ Line | Function 0125 | CheckStatus(Result,Name,Message) } -[2197] Canvas\Surface.ahk { +[2235] Canvas\Surface.ahk { Line | Function 0024 | __New(Width = 1,Height = 1) @@ -33799,7 +34187,7 @@ Line | Function 0528 | CheckPoints(Points,ByRef PointArray) } -[2198] Canvas\Viewport.ahk { +[2236] Canvas\Viewport.ahk { Line | Function 0024 | __New(hWindow) @@ -33812,7 +34200,7 @@ Line | Function 0163 | CheckStatus(Result,Name,Message) } -[2199] CGUI\CActiveXControl.ahk { +[2237] CGUI\CActiveXControl.ahk { Line | Function 0015 | __New(Name, Options, Text, GUINum) @@ -33820,7 +34208,7 @@ Line | Function 0031 | __New(GUINum, ControlName, hwnd) } -[2200] CGUI\CButtonControl.ahk { +[2238] CGUI\CButtonControl.ahk { Line | Function 0012 | __New(Name, Options, Text, GUINum) @@ -33828,7 +34216,7 @@ Line | Function 0044 | HandleEvent(Event) } -[2201] CGUI\CCheckBoxControl.ahk { +[2239] CGUI\CCheckBoxControl.ahk { Line | Function 0013 | __New(Name, Options, Text, GUINum, Type) @@ -33842,7 +34230,7 @@ Line | Function 0184 | HandleEvent(Event) } -[2202] CGUI\CChoiceControl.ahk { +[2240] CGUI\CChoiceControl.ahk { Line | Function 0015 | __New(Name, Options, Text, GUINum, Type) @@ -33867,7 +34255,7 @@ Line | Function 0472 | if(Name = "Text") } -[2203] CGUI\CCompoundControl.ahk { +[2241] CGUI\CCompoundControl.ahk { Line | Function 0007 | AddContainerControl(GUI, Type, Name, Options, Text) @@ -33878,7 +34266,7 @@ Line | Function 0044 | CalculateBoundaries() } -[2204] CGUI\CControl.ahk { +[2242] CGUI\CControl.ahk { Line | Function 0012 | __New(Name, Options, Text, GUINum) @@ -33911,7 +34299,7 @@ Line | Function 0694 | if(SetIcon) } -[2205] CGUI\CEditControl.ahk { +[2243] CGUI\CEditControl.ahk { Line | Function 0012 | __New(Name, Options, Text, GUINum) @@ -33920,14 +34308,14 @@ Line | Function 0121 | HandleEvent(Event) } -[2206] CGUI\CEnumerator.ahk { +[2244] CGUI\CEnumerator.ahk { Line | Function 0012 | __New(Object) 0016 | Next(byref key, byref value) } -[2207] CGUI\CFileDialog.ahk { +[2245] CGUI\CFileDialog.ahk { Line | Function 0055 | __New(Mode="") @@ -33936,14 +34324,14 @@ Line | Function 0082 | if(Multi) } -[2208] CGUI\CFolderDialog.ahk { +[2246] CGUI\CFolderDialog.ahk { Line | Function 0029 | __New() 0044 | Show() } -[2209] CGUI\CGroupBoxControl.ahk { +[2247] CGUI\CGroupBoxControl.ahk { Line | Function 0011 | __New(Name, Options, Text, GUINum) @@ -33954,7 +34342,7 @@ Line | Function 0091 | Enable() } -[2210] CGUI\CGUI.ahk { +[2248] CGUI\CGUI.ahk { Line | Function 0065 | __New(instance) @@ -34013,21 +34401,21 @@ Line | Function 1388 | CGUI_ClientToWin(hwnd, ByRef x, ByRef y) } -[2211] CGUI\CHotkeyControl.ahk { +[2249] CGUI\CHotkeyControl.ahk { Line | Function 0013 | __New(Name, Options, Text, GUINum) 0038 | HandleEvent(Event) } -[2212] CGUI\CLinkControl.ahk { +[2250] CGUI\CLinkControl.ahk { Line | Function 0014 | __New(Name, Options, Text, GUINum) 0038 | HandleEvent(Event) } -[2213] CGUI\CListViewControl.ahk { +[2251] CGUI\CListViewControl.ahk { Line | Function 0032 | __New(Name, ByRef Options, Text, GUINum) @@ -34053,7 +34441,7 @@ Line | Function 0985 | HandleEvent(Event) } -[2214] CGUI\CMenu.ahk { +[2252] CGUI\CMenu.ahk { Line | Function 0014 | __New(Name) @@ -34077,7 +34465,7 @@ Line | Function 0339 | if(Value) } -[2215] CGUI\CPathPickerControl.ahk { +[2253] CGUI\CPathPickerControl.ahk { Line | Function 0007 | __New(Name, Options, InitialPath, GUINum) @@ -34085,7 +34473,7 @@ Line | Function 0023 | __Set(Key, Value) } -[2216] CGUI\CPictureControl.ahk { +[2254] CGUI\CPictureControl.ahk { Line | Function 0014 | __New(Name, Options, Text, GUINum) @@ -34096,20 +34484,20 @@ Line | Function 0159 | HandleEvent(Event) } -[2217] CGUI\CProgressControl.ahk { +[2255] CGUI\CProgressControl.ahk { Line | Function 0011 | __New(Name, Options, Text, GUINum) } -[2218] CGUI\CSliderControl.ahk { +[2256] CGUI\CSliderControl.ahk { Line | Function 0013 | __New(Name, Options, Text, GUINum) 0130 | HandleEvent(Event) } -[2219] CGUI\CStatusBarControl.ahk { +[2257] CGUI\CStatusBarControl.ahk { Line | Function 0016 | __New(Name, Options, Text, GUINum) @@ -34122,7 +34510,7 @@ Line | Function 0156 | _NewEnum() } -[2220] CGUI\CTabControl.ahk { +[2258] CGUI\CTabControl.ahk { Line | Function 0016 | __New(Name, Options, Text, GUINum) @@ -34138,14 +34526,14 @@ Line | Function 0358 | SetIcon(Filename, IconNumber = 1) } -[2221] CGUI\CTextControl.ahk { +[2259] CGUI\CTextControl.ahk { Line | Function 0014 | __New(Name, Options, Text, GUINum) 0042 | HandleEvent(Event) } -[2222] CGUI\CTreeViewControl.ahk { +[2260] CGUI\CTreeViewControl.ahk { Line | Function 0023 | __New(Name, ByRef Options, Text, GUINum) @@ -34171,14 +34559,14 @@ Line | Function 0603 | if(Value = 1) } -[2223] CGUI\Delegate.ahk { +[2261] CGUI\Delegate.ahk { Line | Function 0015 | if(target == "") 0037 | if(i == 1) } -[2224] CGUI\EventHandler.ahk { +[2262] CGUI\EventHandler.ahk { Line | Function 0005 | Register(handler) @@ -34191,7 +34579,7 @@ Line | Function 0040 | __New() } -[2225] CGUI\gdip.ahk { +[2263] CGUI\gdip.ahk { Line | Function 0067 | UpdateLayeredWindow(hwnd, hdc, x="", y="", w="", h="", Alpha=255) @@ -34328,7 +34716,7 @@ Line | Function 2352 | Gdip_BFromARGB(ARGB) } -[2226] CGUI\json.ahk { +[2264] CGUI\json.ahk { Line | Function 0006 | __json_init() @@ -34349,13 +34737,13 @@ Line | Function 0280 | JSON_reduce(symbols, ret) } -[2227] CGUI\Parse.ahk { +[2265] CGUI\Parse.ahk { Line | Function 0060 | Parse(O, pQ, ByRef o1="",ByRef o2="",ByRef o3="",ByRef o4="",ByRef o5="",ByRef o6="",ByRef o7="",ByRef o8="", ByRef o9="", ByRef o10="") } -[2228] CGUI\Regex.ahk { +[2266] CGUI\Regex.ahk { Line | Function 0012 | __New(N) @@ -34366,168 +34754,168 @@ Line | Function 0091 | GetGroups(N) } -[2229] win7\bcrypt_md2.ahk { +[2267] win7\bcrypt_md2.ahk { Line | Function 0006 | bcrypt_md2(string) } -[2230] win7\bcrypt_md2_file.ahk { +[2268] win7\bcrypt_md2_file.ahk { Line | Function 0006 | bcrypt_md2_file(filename) } -[2231] win7\bcrypt_md2_hmac.ahk { +[2269] win7\bcrypt_md2_hmac.ahk { Line | Function 0006 | bcrypt_md2_hmac(string, hmac) } -[2232] win7\bcrypt_md4.ahk { +[2270] win7\bcrypt_md4.ahk { Line | Function 0006 | bcrypt_md4(string) } -[2233] win7\bcrypt_md4_file.ahk { +[2271] win7\bcrypt_md4_file.ahk { Line | Function 0006 | bcrypt_md4_file(filename) } -[2234] win7\bcrypt_md4_hmac.ahk { +[2272] win7\bcrypt_md4_hmac.ahk { Line | Function 0006 | bcrypt_md4_hmac(string, hmac) } -[2235] win7\bcrypt_md5.ahk { +[2273] win7\bcrypt_md5.ahk { Line | Function 0006 | bcrypt_md5(string) } -[2236] win7\bcrypt_md5_file.ahk { +[2274] win7\bcrypt_md5_file.ahk { Line | Function 0006 | bcrypt_md5_file(filename) } -[2237] win7\bcrypt_md5_hmac.ahk { +[2275] win7\bcrypt_md5_hmac.ahk { Line | Function 0006 | bcrypt_md5_hmac(string, hmac) } -[2238] win7\bcrypt_pbkdf2_md2.ahk { +[2276] win7\bcrypt_pbkdf2_md2.ahk { Line | Function } -[2239] win7\bcrypt_pbkdf2_md4.ahk { +[2277] win7\bcrypt_pbkdf2_md4.ahk { Line | Function } -[2240] win7\bcrypt_pbkdf2_md5.ahk { +[2278] win7\bcrypt_pbkdf2_md5.ahk { Line | Function } -[2241] win7\bcrypt_pbkdf2_sha1.ahk { +[2279] win7\bcrypt_pbkdf2_sha1.ahk { Line | Function } -[2242] win7\bcrypt_pbkdf2_sha256.ahk { +[2280] win7\bcrypt_pbkdf2_sha256.ahk { Line | Function } -[2243] win7\bcrypt_pbkdf2_sha384.ahk { +[2281] win7\bcrypt_pbkdf2_sha384.ahk { Line | Function } -[2244] win7\bcrypt_pbkdf2_sha512.ahk { +[2282] win7\bcrypt_pbkdf2_sha512.ahk { Line | Function } -[2245] win7\bcrypt_sha1.ahk { +[2283] win7\bcrypt_sha1.ahk { Line | Function 0006 | bcrypt_sha1(string) } -[2246] win7\bcrypt_sha1_file.ahk { +[2284] win7\bcrypt_sha1_file.ahk { Line | Function 0006 | bcrypt_sha1_file(filename) } -[2247] win7\bcrypt_sha1_hmac.ahk { +[2285] win7\bcrypt_sha1_hmac.ahk { Line | Function 0006 | bcrypt_sha1_hmac(string, hmac) } -[2248] win7\bcrypt_sha256.ahk { +[2286] win7\bcrypt_sha256.ahk { Line | Function 0006 | bcrypt_sha256(string) } -[2249] win7\bcrypt_sha256_file.ahk { +[2287] win7\bcrypt_sha256_file.ahk { Line | Function 0006 | bcrypt_sha256_file(filename) } -[2250] win7\bcrypt_sha256_hmac.ahk { +[2288] win7\bcrypt_sha256_hmac.ahk { Line | Function 0006 | bcrypt_sha256_hmac(string, hmac) } -[2251] win7\bcrypt_sha384.ahk { +[2289] win7\bcrypt_sha384.ahk { Line | Function 0006 | bcrypt_sha384(string) } -[2252] win7\bcrypt_sha384_file.ahk { +[2290] win7\bcrypt_sha384_file.ahk { Line | Function 0006 | bcrypt_sha384_file(filename) } -[2253] win7\bcrypt_sha384_hmac.ahk { +[2291] win7\bcrypt_sha384_hmac.ahk { Line | Function 0006 | bcrypt_sha384_hmac(string, hmac) } -[2254] win7\bcrypt_sha512.ahk { +[2292] win7\bcrypt_sha512.ahk { Line | Function 0002 | bcrypt_sha512(string) } -[2255] win7\bcrypt_sha512_file.ahk { +[2293] win7\bcrypt_sha512_file.ahk { Line | Function 0002 | bcrypt_sha512_file(filename) } -[2256] win7\bcrypt_sha512_hmac.ahk { +[2294] win7\bcrypt_sha512_hmac.ahk { Line | Function 0006 | bcrypt_sha512_hmac(string, hmac) } -[2257] win7\class_bcrypt.ahk { +[2295] win7\class_bcrypt.ahk { Line | Function 0031 | hash(String, AlgID) @@ -34547,133 +34935,133 @@ Line | Function 0251 | CalcHash(Byref HASH_DATA, HASH_LENGTH) } -[2258] win10\bcrypt_md2.ahk { +[2296] win10\bcrypt_md2.ahk { Line | Function 0006 | bcrypt_md2(string) } -[2259] win10\bcrypt_md2_file.ahk { +[2297] win10\bcrypt_md2_file.ahk { Line | Function 0006 | bcrypt_md2_file(filename) } -[2260] win10\bcrypt_md2_hmac.ahk { +[2298] win10\bcrypt_md2_hmac.ahk { Line | Function 0006 | bcrypt_md2_hmac(string, hmac) } -[2261] win10\bcrypt_md4.ahk { +[2299] win10\bcrypt_md4.ahk { Line | Function 0006 | bcrypt_md4(string) } -[2262] win10\bcrypt_md4_file.ahk { +[2300] win10\bcrypt_md4_file.ahk { Line | Function 0006 | bcrypt_md4_file(filename) } -[2263] win10\bcrypt_md4_hmac.ahk { +[2301] win10\bcrypt_md4_hmac.ahk { Line | Function 0006 | bcrypt_md4_hmac(string, hmac) } -[2264] win10\bcrypt_md5.ahk { +[2302] win10\bcrypt_md5.ahk { Line | Function 0006 | bcrypt_md5(string) } -[2265] win10\bcrypt_md5_file.ahk { +[2303] win10\bcrypt_md5_file.ahk { Line | Function 0006 | bcrypt_md5_file(filename) } -[2266] win10\bcrypt_md5_hmac.ahk { +[2304] win10\bcrypt_md5_hmac.ahk { Line | Function 0006 | bcrypt_md5_hmac(string, hmac) } -[2267] win10\bcrypt_sha1.ahk { +[2305] win10\bcrypt_sha1.ahk { Line | Function 0006 | bcrypt_sha1(string) } -[2268] win10\bcrypt_sha1_file.ahk { +[2306] win10\bcrypt_sha1_file.ahk { Line | Function 0006 | bcrypt_sha1_file(filename) } -[2269] win10\bcrypt_sha1_hmac.ahk { +[2307] win10\bcrypt_sha1_hmac.ahk { Line | Function 0006 | bcrypt_sha1_hmac(string, hmac) } -[2270] win10\bcrypt_sha256.ahk { +[2308] win10\bcrypt_sha256.ahk { Line | Function 0006 | bcrypt_sha256(string) } -[2271] win10\bcrypt_sha256_file.ahk { +[2309] win10\bcrypt_sha256_file.ahk { Line | Function 0006 | bcrypt_sha256_file(filename) } -[2272] win10\bcrypt_sha256_hmac.ahk { +[2310] win10\bcrypt_sha256_hmac.ahk { Line | Function 0006 | bcrypt_sha256_hmac(string, hmac) } -[2273] win10\bcrypt_sha384.ahk { +[2311] win10\bcrypt_sha384.ahk { Line | Function 0006 | bcrypt_sha384(string) } -[2274] win10\bcrypt_sha384_file.ahk { +[2312] win10\bcrypt_sha384_file.ahk { Line | Function 0006 | bcrypt_sha384_file(filename) } -[2275] win10\bcrypt_sha384_hmac.ahk { +[2313] win10\bcrypt_sha384_hmac.ahk { Line | Function 0006 | bcrypt_sha384_hmac(string, hmac) } -[2276] win10\bcrypt_sha512.ahk { +[2314] win10\bcrypt_sha512.ahk { Line | Function 0006 | bcrypt_sha512(string) } -[2277] win10\bcrypt_sha512_file.ahk { +[2315] win10\bcrypt_sha512_file.ahk { Line | Function 0006 | bcrypt_sha512_file(filename) } -[2278] win10\bcrypt_sha512_hmac.ahk { +[2316] win10\bcrypt_sha512_hmac.ahk { Line | Function 0006 | bcrypt_sha512_hmac(string, hmac) } -[2279] win10\class_bcrypt.ahk { +[2317] win10\class_bcrypt.ahk { Line | Function 0029 | hash(String, AlgID) @@ -34690,12 +35078,12 @@ Line | Function 0203 | CalcHash(Byref HASH_DATA, HASH_LENGTH) } -[2280] core_audio_interfaces\header.ahk { +[2318] core_audio_interfaces\header.ahk { Line | Function } -[2281] core_audio_interfaces\IAudioEndpointVolume.ahk { +[2319] core_audio_interfaces\IAudioEndpointVolume.ahk { Line | Function 0006 | __New(ptr) @@ -34713,7 +35101,7 @@ Line | Function 0168 | GetVolumeRange(ByRef LevelMinDB, ByRef LevelMaxDB, ByRef VolumeIncrementDB) } -[2282] core_audio_interfaces\IAudioSessionControl.ahk { +[2320] core_audio_interfaces\IAudioSessionControl.ahk { Line | Function 0006 | __New(ptr) @@ -34722,7 +35110,7 @@ Line | Function 0047 | GetDisplayName(ByRef DisplayName) } -[2283] core_audio_interfaces\IAudioSessionControl2.ahk { +[2321] core_audio_interfaces\IAudioSessionControl2.ahk { Line | Function 0006 | __New(ptr) @@ -34731,7 +35119,7 @@ Line | Function 0044 | GetProcessId(ByRef ProcessId) } -[2284] core_audio_interfaces\IAudioSessionEnumerator.ahk { +[2322] core_audio_interfaces\IAudioSessionEnumerator.ahk { Line | Function 0006 | __New(ptr) @@ -34740,7 +35128,7 @@ Line | Function 0038 | GetSession(SessionNumber, ByRef oIAudioSessionControl) } -[2285] core_audio_interfaces\IAudioSessionManager2.ahk { +[2323] core_audio_interfaces\IAudioSessionManager2.ahk { Line | Function 0006 | __New(ptr) @@ -34748,7 +35136,7 @@ Line | Function 0030 | GetSessionEnumerator(ByRef oIAudioSessionEnumerator) } -[2286] core_audio_interfaces\IMMDevice.ahk { +[2324] core_audio_interfaces\IMMDevice.ahk { Line | Function 0006 | __New(ptr) @@ -34759,7 +35147,7 @@ Line | Function 0102 | GetState(ByRef State) } -[2287] core_audio_interfaces\IMMDeviceCollection.ahk { +[2325] core_audio_interfaces\IMMDeviceCollection.ahk { Line | Function 0006 | __New(ptr) @@ -34768,7 +35156,7 @@ Line | Function 0043 | Item(Device, ByRef oIMMDevice) } -[2288] core_audio_interfaces\IMMDeviceEnumerator.ahk { +[2326] core_audio_interfaces\IMMDeviceEnumerator.ahk { Line | Function 0006 | __New() @@ -34781,7 +35169,7 @@ Line | Function 0101 | UnregisterEndpointNotificationCallback(oIMMNotificationClient) } -[2289] core_audio_interfaces\IPropertyStore.ahk { +[2327] core_audio_interfaces\IPropertyStore.ahk { Line | Function 0006 | __New(ptr) @@ -34794,7 +35182,7 @@ Line | Function 0113 | Commit() } -[2290] core_audio_interfaces\ISimpleAudioVolume.ahk { +[2328] core_audio_interfaces\ISimpleAudioVolume.ahk { Line | Function 0006 | __New(ptr) @@ -34803,7 +35191,7 @@ Line | Function 0054 | GetMute(ByRef Mute) } -[2291] CustomBoxes\BarsBox.ahk { +[2329] CustomBoxes\BarsBox.ahk { Line | Function 0070 | Norm(Value, A, B) @@ -34811,78 +35199,78 @@ Line | Function 0078 | Map(Value, A1, B1, A2, B2) } -[2292] CustomBoxes\BetterBox.ahk { +[2330] CustomBoxes\BetterBox.ahk { Line | Function } -[2293] CustomBoxes\ButtonBox.ahk { +[2331] CustomBoxes\ButtonBox.ahk { Line | Function } -[2294] CustomBoxes\EditBox.ahk { +[2332] CustomBoxes\EditBox.ahk { Line | Function } -[2295] CustomBoxes\ListBox.ahk { +[2333] CustomBoxes\ListBox.ahk { Line | Function } -[2296] CustomBoxes\LoginBox.ahk { +[2334] CustomBoxes\LoginBox.ahk { Line | Function } -[2297] CustomBoxes\LV_Box.ahk { +[2335] CustomBoxes\LV_Box.ahk { Line | Function } -[2298] CustomBoxes\MonoBox.ahk { +[2336] CustomBoxes\MonoBox.ahk { Line | Function } -[2299] CustomBoxes\MultiBox.ahk { +[2337] CustomBoxes\MultiBox.ahk { Line | Function } -[2300] CustomBoxes\NumberBox.ahk { +[2338] CustomBoxes\NumberBox.ahk { Line | Function 0051 | ForceNumber(hEdit) } -[2301] CustomBoxes\PassBox.ahk { +[2339] CustomBoxes\PassBox.ahk { Line | Function } -[2302] CustomBoxes\PictureBox.ahk { +[2340] CustomBoxes\PictureBox.ahk { Line | Function } -[2303] CustomBoxes\RadioBox.ahk { +[2341] CustomBoxes\RadioBox.ahk { Line | Function } -[2304] CustomBoxes\RadioBoxEx.ahk { +[2342] CustomBoxes\RadioBoxEx.ahk { Line | Function } -[2305] CustomBoxes\TreeBox.ahk { +[2343] CustomBoxes\TreeBox.ahk { Line | Function } -[2306] Interface\Dictation.ahk { +[2344] Interface\Dictation.ahk { Line | Function 0019 | Init() @@ -34898,47 +35286,47 @@ Line | Function 0321 | saveToClipboard(_result) } -[2307] { +[2345] { Line | Function } -[2308] { +[2346] { Line | Function } -[2309] { +[2347] { Line | Function 0010 | IVideoWindow_SetWindowPosition(p1, p2, p3, p4, p5) } -[2310] { +[2348] { Line | Function } -[2311] Injector\exlib.ahk { +[2349] Injector\exlib.ahk { Line | Function 0004 | print(msg = "") } -[2312] { +[2350] { Line | Function 0010 | ExtTextOutA(p1, p2, p3, p4, p5, p6, p7, p8) 0019 | TextOutA(p1, p2, p3, p4, p5) } -[2313] { +[2351] { Line | Function 0010 | InstallGlHook(function, GDI=False) } -[2314] Injector\Help.ahk { +[2352] Injector\Help.ahk { Line | Function 0087 | setHTMLData(help_file) @@ -34948,78 +35336,78 @@ Line | Function 0274 | List_onclick(flag="") } -[2315] Injector\Injector.ahk { +[2353] Injector\Injector.ahk { Line | Function 0036 | launchTarget() } -[2316] Injector\remote_lib.ahk { +[2354] Injector\remote_lib.ahk { Line | Function } -[2317] { +[2355] { Line | Function } -[2318] { +[2356] { Line | Function } -[2319] { +[2357] { Line | Function } -[2320] { +[2358] { Line | Function } -[2321] { +[2359] { Line | Function } -[2322] headers\d3DX9.ahk { +[2360] headers\d3DX9.ahk { Line | Function } -[2323] { +[2361] { Line | Function } -[2324] { +[2362] { Line | Function } -[2325] { +[2363] { Line | Function } -[2326] { +[2364] { Line | Function } -[2327] { +[2365] { Line | Function } -[2328] { +[2366] { Line | Function } -[2329] headers\HeaderParser.ahk { +[2367] headers\HeaderParser.ahk { Line | Function 0003 | __New(file) @@ -35035,7 +35423,7 @@ Line | Function 0290 | patch() } -[2330] { +[2368] { Line | Function 0002 | _7thpass() @@ -35045,48 +35433,48 @@ Line | Function 0113 | _6thpass() } -[2331] { +[2369] { Line | Function 0002 | _5thpass() } -[2332] { +[2370] { Line | Function } -[2333] headers\_d3D11.ahk { +[2371] headers\_d3D11.ahk { Line | Function } -[2334] { +[2372] { Line | Function } -[2335] { +[2373] { Line | Function } -[2336] { +[2374] { Line | Function } -[2337] headers\_dshow.ahk { +[2375] headers\_dshow.ahk { Line | Function } -[2338] { +[2376] { Line | Function } -[2339] Lib\DDSFile.ahk { +[2377] Lib\DDSFile.ahk { Line | Function 0016 | setFilePixelFormat(format = "RGB") @@ -35099,14 +35487,14 @@ Line | Function 0238 | compareSurfaceData(byref dump, byref desc, samples = 8, optimized = False) } -[2340] Lib\DInputEmu.ahk { +[2378] Lib\DInputEmu.ahk { Line | Function 0006 | InitDInputEmu(byref config, _unicode = true) 0025 | IDirectInputDeviceW_GetDeviceState(p1, p2, p3) } -[2341] Lib\FileHooks.ahk { +[2379] Lib\FileHooks.ahk { Line | Function 0009 | initFileHooks(byref config) @@ -35127,7 +35515,7 @@ Line | Function 0313 | GetModuleFileNameW(p1, p2, p3) } -[2342] Lib\hRes.ahk { +[2380] Lib\hRes.ahk { Line | Function 0012 | ComputeResolutionCorrections(p2, p3) @@ -35163,7 +35551,7 @@ Line | Function 0553 | IDirect3DDevice7_DrawPrimitiveVB(p1, p2, p3, p4, p5, p6) } -[2343] Lib\Lib.ahk { +[2381] Lib\Lib.ahk { Line | Function 0007 | __New(byref definition, ppInterface, version8 = False) @@ -35184,13 +35572,13 @@ Line | Function 0272 | parseConfig(item = "") } -[2344] Lib\ref.ahk { +[2382] Lib\ref.ahk { Line | Function 0005 | IDirectDrawSurface2_lock(p1, p2, p3, p4, p5) } -[2345] Lib\SurfaceHooks.ahk { +[2383] Lib\SurfaceHooks.ahk { Line | Function 0001 | CheckSurface(p1) @@ -35198,7 +35586,7 @@ Line | Function 0039 | IDirectDrawSurface_Unlock(p1, p2) } -[2346] TexSwap\TexSwapLib.ahk { +[2384] TexSwap\TexSwapLib.ahk { Line | Function 0004 | initTextSwapHooks(byref config) @@ -35216,14 +35604,14 @@ Line | Function 0433 | TextSwapUpdate(pIDirectDraw) } -[2347] TexSwap\TexSwapLibGL.ahk { +[2385] TexSwap\TexSwapLibGL.ahk { Line | Function 0003 | InitTextSwapHooksGl(byref config) 0024 | LoadTextureDumpsGl(path = "") } -[2348] TexSwap\TextureHooks.ahk { +[2386] TexSwap\TextureHooks.ahk { Line | Function 0001 | IDirect3DTexture_GetHandle(p1, p2, p3) @@ -35239,13 +35627,13 @@ Line | Function 0190 | IDirect3DDevice7_Load(p1, p2, p3, p4, p5, p6) } -[2349] DoDragAndDrop\DoDragDrop.ahk { +[2387] DoDragAndDrop\DoDragDrop.ahk { Line | Function 0050 | DoDragDrop_GetBitmapSize(HBITMAP, ByRef W, ByRef H) } -[2350] DoDragAndDrop\IDataObject.ahk { +[2388] DoDragAndDrop\IDataObject.ahk { Line | Function 0006 | IDataObject_GetData(pDataObj, ByRef FORMATETC, ByRef Size, ByRef Data) @@ -35263,12 +35651,12 @@ Line | Function 0176 | IDataObject_SetText(pDataObj, ByRef Txt) } -[2351] DoDragAndDrop\IDragSourceHelper.ahk { +[2389] DoDragAndDrop\IDragSourceHelper.ahk { Line | Function } -[2352] DoDragAndDrop\IDropSource.ahk { +[2390] DoDragAndDrop\IDropSource.ahk { Line | Function 0014 | IDropSource_Create() @@ -35280,12 +35668,12 @@ Line | Function 0068 | IDropSource_GiveFeedback(IDropSource, dwEffect) } -[2353] DoDragAndDrop\IDropSource_Sample.ahk { +[2391] DoDragAndDrop\IDropSource_Sample.ahk { Line | Function } -[2354] DoDragAndDrop\IDropTarget.ahk { +[2392] DoDragAndDrop\IDropTarget.ahk { Line | Function 0112 | RegisterDragDrop() @@ -35297,13 +35685,13 @@ Line | Function 0251 | DragLeave() } -[2355] DoDragAndDrop\IDropTarget_Sample.ahk { +[2393] DoDragAndDrop\IDropTarget_Sample.ahk { Line | Function 0045 | IDropTargetOnDrop_LV(TargetObject, pDataObj, KeyState, X, Y, DropEffect) } -[2356] DoDragAndDrop\IEnumFORMATETC.ahk { +[2394] DoDragAndDrop\IEnumFORMATETC.ahk { Line | Function 0005 | IEnumFORMATETC_Next(pEnumObj, ByRef FORMATETC) @@ -35311,23 +35699,23 @@ Line | Function 0020 | IEnumFORMATETC_Skip(pEnumObj, ItemCount) } -[2357] DoDragAndDrop\SHDataObject.ahk { +[2395] DoDragAndDrop\SHDataObject.ahk { Line | Function 0026 | SHDataObject_DragImageFromBitmap(DataObj, HBITMAP) } -[2358] DoDragAndDrop\SHDoDragDrop.ahk { +[2396] DoDragAndDrop\SHDoDragDrop.ahk { Line | Function } -[2359] DoDragAndDrop\SHDoDragDrop_Sample.ahk { +[2397] DoDragAndDrop\SHDoDragDrop_Sample.ahk { Line | Function } -[2360] ahk\DX9_overlay.ahk { +[2398] ahk\DX9_overlay.ahk { Line | Function 0060 | Init() @@ -35370,35 +35758,381 @@ Line | Function 0320 | SetOverlayPriority(id, priority) } -[2361] ImportTypeLib\ImportTypeLib.ahk { +[2399] exLibs\arr.ahk { + +Line | Function +0003 | contained(sub, sup) +0013 | random(array) +0035 | split(array) +0039 | merge(arr1, arr2) +0096 | sum(array) + +} +[2400] exLibs\guiex.ahk { + +Line | Function + +} +[2401] exLibs\hkex.ahk { + +Line | Function +0005 | SSSend() + +} +[2402] exLibs\http.ahk { + +Line | Function +0003 | get(url) + +} +[2403] exLibs\iniex.ahk { + +Line | Function +0004 | create(sections) +0035 | update() + +} +[2404] exLibs\mkex.ahk { + +Line | Function + +} +[2405] exLibs\strex.ahk { + +Line | Function +0008 | rep(str, times) + +} +[2406] exLibs\winex.ahk { + +Line | Function +0005 | setTrayHeight() + +} +[2407] _Functions\AddTooltip.ahk { + +Line | Function +0052 | AddToolTip(hControl,p_Text="") + +} +[2408] _Functions\Dlg2.ahk { + +Line | Function +0224 | Dlg_ChooseColor(hOwner,ByRef r_Color,p_Flags=0,p_CustomColorsFile="",p_HelpHandler="") +0556 | Dlg_ChooseFont(hOwner=0,ByRef r_Name="",ByRef r_Options="",p_Effects=True,p_Flags=0,p_HelpHandler="") +0971 | Dlg_ChooseIcon(hOwner,ByRef r_IconPath,ByRef r_IconIndex) +1079 | Dlg_Convert2Hex(p_Integer,p_MinDigits=0) +1292 | Dlg_FindReplaceText(p_Type,hOwner,p_Flags,p_FindWhat,p_ReplaceWith,p_Handler,p_HelpHandler="") +1469 | Dlg_FindText(hOwner,p_Flags,p_FindWhat,p_Handler,p_HelpHandler="") +1497 | Dlg_GetScriptDebugWindow() +1659 | Dlg_MessageBox(hOwner=0,p_Type=0,p_Title="",p_Text="",p_Timeout=-1,p_HelpHandler="") +1866 | Dlg_OFNHookCallback(hDlg,uiMsg,wParam,lParam) +1978 | Dlg_OnFindReplaceMsg(wParam,lParam,Msg,hWnd) +2151 | Dlg_OnHelpMsg(wParam,lParam,Msg,hWnd) +2217 | Dlg_OpenFile(hOwner=0,p_Title="",p_Filter="",p_FilterIndex="",p_Root="",p_DfltExt="",ByRef r_Flags=0,p_HelpHandler="") +2431 | Dlg_OpenSaveFile(p_Type,hOwner=0,p_Title="",p_Filter="",p_FilterIndex="",p_Root="",p_DfltExt="",ByRef r_Flags=0,p_HelpHandler="") +2736 | Dlg_ReplaceText(hOwner,p_Flags,p_FindWhat,p_ReplaceWith,p_Handler,p_HelpHandler="") +2758 | Dlg_SaveFile(hOwner=0,p_Title="",p_Filter="",p_FilterIndex="",p_Root="",p_DfltExt="",ByRef r_Flags=0,p_HelpHandler="") + +} +[2409] _Functions\Edit.ahk { + +Line | Function +0065 | Edit_ActivateParent(hEdit) +0099 | Edit_CanUndo(hEdit) +0150 | Edit_CharFromPos(hEdit,X,Y,ByRef r_CharPos="",ByRef r_LineIdx="") +0202 | Edit_Clear(hEdit) +0256 | Edit_ContainsSoftLineBreaks(hEdit) +0293 | Edit_Convert2DOS(p_Text) +0311 | Edit_Convert2Mac(p_Text) +0332 | Edit_Convert2Unix(p_Text) +0364 | Edit_ConvertCase(hEdit,p_Case) +0430 | Edit_Copy(hEdit) +0447 | Edit_Cut(hEdit) +0472 | Edit_Disable(hEdit) +0500 | Edit_DisableAllScrollBars(hEdit) +0528 | Edit_DisableHScrollBar(hEdit) +0556 | Edit_DisableVScrollBar(hEdit) +0573 | Edit_EmptyUndoBuffer(hEdit) +0598 | Edit_Enable(hEdit) +0626 | Edit_EnableAllScrollBars(hEdit) +0654 | Edit_EnableHScrollBar(hEdit) +0682 | Edit_EnableVScrollBar(hEdit) +0718 | Edit_EnableScrollBar(hEdit,wSBflags,wArrows) +0856 | Edit_FindText(hEdit,p_SearchText,p_Min=0,p_Max=-1,p_Flags="",ByRef r_RegExOut="") +0995 | Edit_FindTextReset() +1036 | Edit_FmtLines(hEdit,p_Flag) +1072 | Edit_GetActiveHandles(ByRef hEdit="",ByRef hWindow="",p_MsgBox=False) +1111 | Edit_GetComboBoxEdit(hCombo) +1153 | Edit_GetCueBanner(hEdit,p_MaxSize=1024) +1174 | Edit_GetFirstVisibleLine(hEdit) +1206 | Edit_GetFont(hEdit) +1237 | Edit_GetLastVisibleLine(hEdit) +1260 | Edit_GetLimitText(hEdit) +1299 | Edit_GetLine(hEdit,p_LineIdx=-1,p_Length=-1) +1342 | Edit_GetLineCount(hEdit) +1370 | Edit_GetMargins(hEdit,ByRef r_LeftMargin="",ByRef r_RightMargin="") +1394 | Edit_GetModify(hEdit) +1437 | Edit_GetPasswordChar(hEdit) +1474 | Edit_GetPos(hEdit,ByRef X="",ByRef Y="",ByRef W="",ByRef H="") +1513 | Edit_GetRect(hEdit,ByRef r_Left="",ByRef r_Top="",ByRef r_Right="",ByRef r_Bottom="") +1549 | Edit_GetScrollBarInfo(hEdit,idObject) +1609 | Edit_GetScrollBarState(hEdit,idObject) +1662 | Edit_GetSel(hEdit,ByRef r_StartSelPos="",ByRef r_EndSelPos="") +1704 | Edit_GetSelText(hEdit) +1740 | Edit_GetStyle(hEdit) +1769 | Edit_GetText(hEdit,p_Length=-1) +1790 | Edit_GetTextLength(hEdit) +1825 | Edit_GetTextRange(hEdit,p_Min=0,p_Max=-1) +1849 | Edit_HasFocus(hEdit) +1897 | Edit_Hide(hEdit) +1925 | Edit_HideAllScrollBars(hEdit) +1956 | Edit_HideBalloonTip(hEdit) +1985 | Edit_HideHScrollBar(hEdit) +2013 | Edit_HideVScrollBar(hEdit) +2033 | Edit_IsDisabled(hEdit) +2064 | Edit_IsHScrollBarEnabled(hEdit) +2090 | Edit_IsHScrollBarVisible(hEdit) +2109 | Edit_IsMultiline(hEdit) +2125 | Edit_IsReadOnly(hEdit) +2168 | Edit_IsStyle(hEdit,p_Style) +2198 | Edit_IsVScrollBarEnabled(hEdit) +2224 | Edit_IsVScrollBarVisible(hEdit) +2252 | Edit_IsWordWrap(hEdit) +2323 | Edit_LineFromChar(hEdit,p_CharPos=-1) +2341 | Edit_LineFromPos(hEdit,X,Y,ByRef r_CharPos="",ByRef r_LineIdx="") +2367 | Edit_LineIndex(hEdit,p_LineIdx=-1) +2400 | Edit_LineLength(hEdit,p_LineIdx=-1) +2448 | Edit_LineScroll(hEdit,xScroll=0,yScroll=0) +2521 | Edit_LoadFile(hEdit,p_File,p_Convert2DOS=False,ByRef r_EOLFormat="") +2548 | Edit_MouseInSelection(hEdit) +2584 | Edit_Paste(hEdit) +2619 | Edit_PosFromChar(hEdit,p_CharPos,ByRef X="",ByRef Y="") +2742 | Edit_ReadFile(hEdit,p_File,p_Encoding="",p_Convert2DOS=False,ByRef r_EOLFormat="") +2817 | Edit_ReplaceSel(hEdit,p_Text="",p_CanUndo=True) +2847 | Edit_SaveFile(hEdit,p_File,p_Convert="") +2863 | Edit_SelectAll(hEdit) +2893 | Edit_Scroll(hEdit,p_Pages=0,p_Lines=0) +2939 | Edit_ScrollCaret(hEdit) +2969 | Edit_ScrollPage(hEdit,p_HPages=0,p_VPages=0) +3025 | Edit_SetCueBanner(hEdit,p_Text,p_ShowWhenFocused=False) +3085 | Edit_SetFocus(hEdit,p_ActivateParent=False) +3132 | Edit_SetFont(hEdit,hFont,p_Redraw=False) +3169 | Edit_SetLimitText(hEdit,p_Limit) +3216 | Edit_SetMargins(hEdit,p_LeftMargin="",p_RightMargin="") +3257 | Edit_SetModify(hEdit,p_Flag) +3303 | Edit_SetPasswordChar(hEdit,p_CharValue=9679) +3336 | Edit_SetReadOnly(hEdit,p_Flag) +3366 | Edit_SetRect(hEdit,p_Left,p_Top,p_Right,p_Bottom) +3409 | Edit_SetTabStops(hEdit,p_NbrOfTabStops=0,p_DTU=32) +3477 | Edit_SetText(hEdit,p_Text,p_SetModify=False) +3506 | Edit_SetSel(hEdit,p_StartSelPos=0,p_EndSelPos=-1) +3574 | Edit_Show(hEdit) +3602 | Edit_ShowAllScrollBars(hEdit) +3653 | Edit_ShowBalloonTip(hEdit,p_Title,p_Text,p_Icon=0) +3726 | Edit_ShowHScrollBar(hEdit) +3770 | Edit_ShowScrollBar(hEdit,wBar,p_Show=True) +3869 | Edit_ShowVScrollBar(hEdit) +3889 | Edit_SystemMessage(p_MessageNbr) +3931 | Edit_TextIsSelected(hEdit,ByRef r_StartSelPos="",ByRef r_EndSelPos="") +3953 | Edit_Undo(hEdit) +4019 | Edit_WriteFile(hEdit,p_File,p_Encoding="",p_Convert="") + +} +[2410] _Functions\Edit_AutoSetTabStops.ahk { + +Line | Function +0064 | Edit_AutoSetTabStops(hEdit,p_ColumnGap=6,p_MaxSample=0) + +} +[2411] _Functions\Edit_BlockMove.ahk { + +Line | Function +0043 | Edit_BlockMove(hEdit,p_Command="") + +} +[2412] _Functions\Edit_CutLine.ahk { + +Line | Function +0033 | Edit_CutLine(hEdit,p_LineIdx=-1) + +} +[2413] _Functions\Edit_DeleteLine.ahk { + +Line | Function +0032 | Edit_DeleteLine(hEdit,p_LineIdx=-1) + +} +[2414] _Functions\Edit_Duplicate.ahk { + +Line | Function +0038 | Edit_Duplicate(hEdit) + +} +[2415] _Functions\Edit_SelectLine.ahk { + +Line | Function +0040 | Edit_SelectLine(hEdit,p_LineIdx=-1,p_IncludeEOL=False) + +} +[2416] _Functions\Edit_Sort.ahk { + +Line | Function +0038 | Edit_Sort(hEdit,p_SortOptions="") + +} +[2417] _Functions\Edit_SpellCheckGUI.ahk { + +Line | Function +0165 | Edit_SpellCheckGUI(p_Owner,hEdit,byRef hSpell,p_CustomDic="",p_Title="",p_Font="") + +} +[2418] _Functions\Edit_TTSGUI.ahk { + +Line | Function +0156 | Edit_TTSGUI(p_Owner,hEdit,p_Options="",p_Title="") +1093 | Edit_TTSGUI_OnWord(StreamNumber,StreamPosition,CharacterPosition,Length) +1121 | Edit_TTSGUI_OnEndStream(StreamNumber,StreamPosition) + +} +[2419] _Functions\Fnt.ahk { + +Line | Function +0085 | Fnt_AddFontFile(p_File,p_Private,p_Hidden=False) +0263 | Fnt_ChooseFont(hOwner=0,ByRef r_Name="",ByRef r_Options="",p_Effects=True,p_Flags=0) +0642 | Fnt_ColorName2RGB(p_ColorName) +0711 | Fnt_CompactPath(hFont,p_Path,p_MaxW,p_Strict=False) +0804 | Fnt_CreateFont(p_Name="",p_Options="") +0918 | Fnt_CreateCaptionFont() +0946 | Fnt_CreateMenuFont() +0974 | Fnt_CreateMessageFont() +1001 | Fnt_CreateSmCaptionFont() +1029 | Fnt_CreateStatusFont() +1057 | Fnt_DeleteFont(hFont) +1095 | Fnt_DialogTemplateUnits2Pixels(hFont,p_HorzDTUs,p_VertDTUs=0,ByRef r_Width="",ByRef r_Height="") +1161 | Fnt_EnumFontFamExProc(lpelfe,lpntme,FontType,p_Flags) +1470 | Fnt_FontSizeToFit(hFont,p_String,p_Width) +1623 | Fnt_FontSizeToFitHeight(hFont,p_Height) +1786 | Fnt_FODecrementSize(ByRef r_FO,p_DecrementValue=1,p_MinSize=1) +1838 | Fnt_FOGetColor(p_FO,p_DefaultColor="",p_ColorName2RGB=False) +1886 | Fnt_FOGetSize(p_FO,p_DefaultSize=0) +1936 | Fnt_FOIncrementSize(ByRef r_FO,p_IncrementValue=1,p_MaxSize=999) +1974 | Fnt_FORemoveColor(ByRef r_FO) +2010 | Fnt_FOSetColor(ByRef r_FO,p_Color) +2057 | Fnt_FOSetSize(ByRef r_FO,p_Size) +2114 | Fnt_GetCaptionFontName() +2139 | Fnt_GetCaptionFontSize() +2217 | Fnt_GetDefaultGUIMargins(hFont=0,ByRef r_MarginX="",ByRef r_MarginY="",p_DPIScale="A") +2272 | Fnt_GetDialogBackgroundColor() +2314 | Fnt_GetDialogBaseUnits(hFont=0,ByRef r_HorzDBUs="",ByRef r_VertDBUs="") +2362 | Fnt_GetListOfFonts(p_CharSet="",p_Name="",p_Flags=0) +2590 | Fnt_GetFont(hControl) +2622 | Fnt_GetFontAvgCharWidth(hFont=0) +2651 | Fnt_GetFontExternalLeading(hFont=0) +2679 | Fnt_GetFontHeight(hFont=0) +2713 | Fnt_GetFontInternalLeading(hFont=0) +2751 | Fnt_GetFontMaxCharWidth(hFont=0) +2775 | Fnt_GetFontMetrics(hFont=0) +2823 | Fnt_GetFontName(hFont=0) +2914 | Fnt_GetFontOptions(hFont=0) +2980 | Fnt_GetFontSize(hFont=0) +3043 | Fnt_GetFontWeight(hFont=0) +3067 | Fnt_GetMenuFontName() +3092 | Fnt_GetMenuFontSize() +3132 | Fnt_GetMessageFontName() +3157 | Fnt_GetMessageFontSize() +3233 | Fnt_GetMultilineStringSize(hFont,p_String,ByRef r_Width="",ByRef r_Height="",ByRef r_LineCount="") +3309 | Fnt_GetNonClientMetrics() +3379 | Fnt_GetPos(hControl,ByRef X="",ByRef Y="",ByRef Width="",ByRef Height="") +3420 | Fnt_GetSmCaptionFontName() +3445 | Fnt_GetSmCaptionFontSize() +3485 | Fnt_GetStatusFontName() +3510 | Fnt_GetStatusFontSize() +3565 | Fnt_GetStringSize(hFont,p_String,ByRef r_Width="",ByRef r_Height="") +3630 | Fnt_GetStringWidth(hFont,p_String) +3667 | Fnt_GetSysColor(p_DisplayElement) +3717 | Fnt_GetTotalRowHeight(hFont,p_NbrOfRows) +3736 | Fnt_GetWindowColor() +3756 | Fnt_GetWindowTextColor() +3917 | Fnt_HorzDTUs2Pixels(hFont,p_HorzDTUs) +3945 | Fnt_IsFixedPitchFont(hFont) +3978 | Fnt_IsTrueTypeFont(hFont) +4016 | Fnt_Pixels2DialogTemplateUnits(hFont,p_Width,p_Height=0,ByRef r_HorzDTUs="",ByRef r_VertDTUs="") +4065 | Fnt_RemoveFontFile(p_File,p_Private,p_Hidden=False) +4134 | Fnt_SetFont(hControl,hFont=0,p_Redraw=False) +4182 | Fnt_String2DialogTemplateUnits(hFont,p_String,ByRef r_HorzDTUs="",ByRef r_VertDTUs="") +4238 | Fnt_TruncateStringToFit(hFont,p_String,p_MaxStringW) +4421 | Fnt_TwipsPerPixel(ByRef X="",ByRef Y="") +4459 | Fnt_UpdateTooltip(hTT) +4488 | Fnt_VertDTUs2Pixels(hFont,p_VertDTUs) + +} +[2420] _Functions\Fnt_RandomTTFont.ahk { + +Line | Function +0029 | Fnt_RandomTTFont() + +} +[2421] _Functions\MoveChildWindow.ahk { + +Line | Function +0111 | MoveChildWindow(p_Parent,p_Child,p_Options="") + +} +[2422] _Functions\SortOptionsGUI.ahk { + +Line | Function +0092 | SortOptionsGUI(p_Owner="",p_SortOptions="",p_Title="",p_Font="") + +} +[2423] _Functions\Spell.ahk { + +Line | Function +0118 | Spell_Add(ByRef hSpell,p_Word,p_AddCase="") +0291 | Spell_ANSI2Unicode(lpMultiByteStr,ByRef WideCharStr) +0415 | Spell_Init(ByRef hSpell,p_Aff,p_Dic,DLLPath="") +0567 | Spell_InitCustom(ByRef hSpell,p_CustomDic,p_AddCase="") +0598 | Spell_Spell(ByRef hSpell,p_Word) +0642 | Spell_Suggest(ByRef hSpell,p_Word,ByRef r_SuggestList) +0717 | Spell_Unicode2ANSI(lpWideCharStr,ByRef MultiByteStr) +0785 | Spell_Uninit(ByRef hSpell) + +} +[2424] _Functions\WinGetPosEx.ahk { + +Line | Function +0076 | WinGetPosEx(hWindow,ByRef X="",ByRef Y="",ByRef Width="",ByRef Height="",ByRef Offset_X="",ByRef Offset_Y="") + +} +[2425] ImportTypeLib\ImportTypeLib.ahk { Line | Function 0011 | ImportTypeLib(lib, version = "1.0") } -[2362] ImportTypeLib\ITL.ahk { +[2426] ImportTypeLib\ITL.ahk { Line | Function } -[2363] ImportTypeLib\ITL_AbstractClassConstructor.ahk { +[2427] ImportTypeLib\ITL_AbstractClassConstructor.ahk { Line | Function } -[2364] ImportTypeLib\ITL_CoClassConstructor.ahk { +[2428] ImportTypeLib\ITL_CoClassConstructor.ahk { Line | Function 0001 | ITL_CoClassConstructor(this, iid = 0) } -[2365] ImportTypeLib\ITL_CoClassWrapper.ahk { +[2429] ImportTypeLib\ITL_CoClassWrapper.ahk { Line | Function 0003 | __New(typeInfo, lib) } -[2366] ImportTypeLib\ITL_ConstantMemberWrapperBaseClass.ahk { +[2430] ImportTypeLib\ITL_ConstantMemberWrapperBaseClass.ahk { Line | Function 0007 | __Get(field) @@ -35406,19 +36140,19 @@ Line | Function 0168 | NewEnum() } -[2367] ImportTypeLib\ITL_EnumWrapper.ahk { +[2431] ImportTypeLib\ITL_EnumWrapper.ahk { Line | Function 0003 | __New(typeInfo, lib) } -[2368] ImportTypeLib\ITL_InterfaceConstructor.ahk { +[2432] ImportTypeLib\ITL_InterfaceConstructor.ahk { Line | Function 0001 | ITL_InterfaceConstructor(this, instance) } -[2369] ImportTypeLib\ITL_InterfaceWrapper.ahk { +[2433] ImportTypeLib\ITL_InterfaceWrapper.ahk { Line | Function 0007 | __New(typeInfo, lib) @@ -35426,13 +36160,13 @@ Line | Function 0204 | __Set(property, value) } -[2370] ImportTypeLib\ITL_ModuleWrapper.ahk { +[2434] ImportTypeLib\ITL_ModuleWrapper.ahk { Line | Function 0003 | __New(typeInfo, lib) } -[2371] ImportTypeLib\ITL_StructureArray.ahk { +[2435] ImportTypeLib\ITL_StructureArray.ahk { Line | Function 0004 | __New(type, count) @@ -35443,13 +36177,13 @@ Line | Function 0088 | SetCapacity(newCount) } -[2372] ImportTypeLib\ITL_StructureConstructor.ahk { +[2436] ImportTypeLib\ITL_StructureConstructor.ahk { Line | Function 0001 | ITL_StructureConstructor(this, ptr = 0, noInit = false) } -[2373] ImportTypeLib\ITL_StructureWrapper.ahk { +[2437] ImportTypeLib\ITL_StructureWrapper.ahk { Line | Function 0003 | __New(typeInfo, lib) @@ -35464,7 +36198,7 @@ Line | Function 0224 | Clear() } -[2374] ImportTypeLib\ITL_TypeLibWrapper.ahk { +[2438] ImportTypeLib\ITL_TypeLibWrapper.ahk { Line | Function 0003 | __New(lib) @@ -35472,20 +36206,20 @@ Line | Function 0140 | GetGUID(obj = -1, returnRaw = false, passRaw = false) } -[2375] ImportTypeLib\ITL_WrapperBaseClass.ahk { +[2439] ImportTypeLib\ITL_WrapperBaseClass.ahk { Line | Function 0003 | __New(typeInfo, lib) 0036 | __Delete() } -[2376] ImportTypeLib\Main.ahk { +[2440] ImportTypeLib\Main.ahk { Line | Function 0011 | ImportTypeLib(lib, version = "1.0") } -[2377] ImportTypeLib\Misc.ahk { +[2441] ImportTypeLib\Misc.ahk { Line | Function 0003 | ITL_IsSafeArray(obj) @@ -35501,31 +36235,31 @@ Line | Function 0166 | ITL_ArrayGetBounds(obj, byRef lBound = 0, byRef uBound = 0) } -[2378] ImportTypeLib\Properties.ahk { +[2442] ImportTypeLib\Properties.ahk { Line | Function 0024 | IsInternalProperty(property) } -[2379] Lib\ITL_FAILED.ahk { +[2443] Lib\ITL_FAILED.ahk { Line | Function 0001 | ITL_FAILED(hr) } -[2380] Lib\ITL_FormatError.ahk { +[2444] Lib\ITL_FormatError.ahk { Line | Function 0001 | ITL_FormatError(hr) } -[2381] Lib\ITL_FormatException.ahk { +[2445] Lib\ITL_FormatException.ahk { Line | Function 0001 | ITL_FormatException(msg, detail, error, hr = "", special = false, special_msg = "") } -[2382] Lib\ITL_GUID.ahk { +[2446] Lib\ITL_GUID.ahk { Line | Function 0001 | ITL_GUID_ToString(guid) @@ -35534,24 +36268,24 @@ Line | Function 0019 | ITL_GUID_Create(byRef guid) } -[2383] Lib\ITL_HasEnumFlag.ahk { +[2447] Lib\ITL_HasEnumFlag.ahk { Line | Function 0001 | ITL_HasEnumFlag(combi, flag) } -[2384] Lib\ITL_IsComObject.ahk { +[2448] Lib\ITL_IsComObject.ahk { Line | Function 0001 | ITL_IsComObject(obj) } -[2385] Lib\ITL_Max.ahk { +[2449] Lib\ITL_Max.ahk { Line | Function } -[2386] Lib\ITL_Mem.ahk { +[2450] Lib\ITL_Mem.ahk { Line | Function 0001 | ITL_Mem_Allocate(bytes) @@ -35560,24 +36294,24 @@ Line | Function 0015 | ITL_Mem_Copy(src, dest, bytes) } -[2387] Lib\ITL_Min.ahk { +[2451] Lib\ITL_Min.ahk { Line | Function } -[2388] Lib\ITL_ParamToVARIANT.ahk { +[2452] Lib\ITL_ParamToVARIANT.ahk { Line | Function 0001 | ITL_ParamToVARIANT(info, tdesc, value, byRef variant, index) } -[2389] Lib\ITL_SUCCEEDED.ahk { +[2453] Lib\ITL_SUCCEEDED.ahk { Line | Function 0001 | ITL_SUCCEEDED(hr) } -[2390] Lib\ITL_VARIANT.ahk { +[2454] Lib\ITL_VARIANT.ahk { Line | Function 0001 | ITL_VARIANT_Create(value, byRef buffer) @@ -35586,7 +36320,7 @@ Line | Function 0063 | ITL_VARIANT_GetByteCount(variant) } -[2391] src\Binary.ahk { +[2455] src\Binary.ahk { Line | Function 0008 | getSize() @@ -35599,7 +36333,7 @@ Line | Function 0069 | numPut(number, offsetInBytes, sizeInBytes) } -[2392] src\CompileResult.ahk { +[2456] src\CompileResult.ahk { Line | Function 0002 | __New() @@ -35624,7 +36358,7 @@ Line | Function 0158 | _Delete() } -[2393] src\MCodeCompileChain.ahk { +[2457] src\MCodeCompileChain.ahk { Line | Function 0014 | select(attribute, value) @@ -35633,12 +36367,12 @@ Line | Function 0058 | compile(inputFile, outputFile) } -[2394] Compiler\gcc.ahk { +[2458] Compiler\gcc.ahk { Line | Function } -[2395] Compiler\VSCompiler.ahk { +[2459] Compiler\VSCompiler.ahk { Line | Function 0008 | compile() @@ -35664,7 +36398,7 @@ Line | Function 0212 | RunWaitMany(commands) } -[2396] Lib\MinHook.ahk { +[2460] Lib\MinHook.ahk { Line | Function 0006 | __New(ModuleName, ModuleFunction, CallbackFunction) @@ -35682,7 +36416,7 @@ Line | Function 0223 | MH_StatusToString(status) } -[2397] Lib\MinHook_Memory.ahk { +[2461] Lib\MinHook_Memory.ahk { Line | Function 0007 | __New(ModuleName, ModuleFunction, CallbackFunction) @@ -35700,41 +36434,41 @@ Line | Function 0241 | MH_StatusToString(status) } -[2398] Lib\sizeof.ahk { +[2462] Lib\sizeof.ahk { Line | Function 0021 | sizeof(_TYPE_,parent_offset=0) } -[2399] { +[2463] { Line | Function } -[2400] { +[2464] { Line | Function } -[2401] { +[2465] { Line | Function } -[2402] { +[2466] { Line | Function 0057 | __New(message = "", innerException = "") } -[2403] { +[2467] { Line | Function 0044 | __New() 0074 | CompareTo(obj) } -[2404] { +[2468] { Line | Function 0078 | AddEnums() @@ -35742,7 +36476,7 @@ Line | Function 0120 | GetInstance() } -[2405] { +[2469] { Line | Function 0241 | Add(Value) @@ -35780,7 +36514,7 @@ Line | Function 2255 | HasAttribute(attrib) } -[2406] { +[2470] { Line | Function 0220 | StaticInit() @@ -35850,7 +36584,7 @@ Line | Function 2526 | Is(ObjType) } -[2407] { +[2471] { Line | Function 0023 | BitAnd(bitsA, bitsB) @@ -35911,7 +36645,7 @@ Line | Function 2934 | __new(hv, hf, b, bf, i, iFlip, Neg = false) } -[2408] { +[2472] { Line | Function 0047 | __new(Size=0, default=0) @@ -35927,7 +36661,7 @@ Line | Function 0630 | _AutoIncrease() } -[2409] { +[2473] { Line | Function 0353 | CompareTo(obj) @@ -35947,7 +36681,7 @@ Line | Function 1112 | _TrimWhiteSpaceAndNullLeft(value) } -[2410] { +[2474] { Line | Function 0124 | Add(value) @@ -35974,7 +36708,7 @@ Line | Function 1292 | _TryParse(s, style, info, ByRef Out) } -[2411] { +[2475] { Line | Function 0026 | CompareUnsignedByteList(objA, objB) @@ -36049,7 +36783,7 @@ Line | Function 2712 | _Int64ToFloat(input) } -[2412] { +[2476] { Line | Function 0047 | __new(Size=0, default=0) @@ -36064,12 +36798,12 @@ Line | Function 0599 | _ToStringRev(returnAsObj, startIndex, length, Format) } -[2413] { +[2477] { Line | Function } -[2414] { +[2478] { Line | Function 0445 | CompareTo(obj) @@ -36109,7 +36843,7 @@ Line | Function 2564 | __Delete() } -[2415] { +[2479] { Line | Function 0046 | __new(Size=0, Encoding="") @@ -36144,7 +36878,7 @@ Line | Function 2406 | _NewEnum() } -[2416] { +[2480] { Line | Function 0065 | __New() @@ -36153,13 +36887,13 @@ Line | Function 0612 | _GetCharFromString(s, index) } -[2417] { +[2481] { Line | Function 0029 | __New() } -[2418] { +[2482] { Line | Function 0036 | __New() @@ -36185,7 +36919,7 @@ Line | Function 0588 | ToString() } -[2419] { +[2483] { Line | Function 0167 | ToSByte(obj, ReturnAsObject = false) @@ -36216,7 +36950,7 @@ Line | Function 1214 | _DoubleToInt64(inputNum) } -[2420] { +[2484] { Line | Function 0066 | __New(MfDateTime, returnAsObj = false) @@ -36226,13 +36960,13 @@ Line | Function 0132 | GetType() } -[2421] { +[2485] { Line | Function 0031 | __New() } -[2422] { +[2486] { Line | Function 0040 | __New(capacity = 0) @@ -36254,13 +36988,13 @@ Line | Function 0419 | Remove(key) } -[2423] { +[2487] { Line | Function 0041 | __New(key, value) } -[2424] { +[2488] { Line | Function 0084 | AddEnums() @@ -36273,13 +37007,13 @@ Line | Function 0216 | HasAttribute(attrib) } -[2425] { +[2489] { Line | Function 0061 | __New(message = "", innerException = "") } -[2426] { +[2490] { Line | Function 0198 | AddAttributes() @@ -36340,7 +37074,7 @@ Line | Function 2411 | if(this._hasFlagsAttributeValue = -1) } -[2427] { +[2491] { Line | Function 0039 | __New() @@ -36349,7 +37083,7 @@ Line | Function 0082 | GetHashCode() } -[2428] { +[2492] { Line | Function 0036 | __New() @@ -36363,7 +37097,7 @@ Line | Function 0270 | HasAttribute(attrib) } -[2429] { +[2493] { Line | Function 0035 | __New() @@ -36371,7 +37105,7 @@ Line | Function 0103 | GetHashCode(obj) } -[2430] { +[2494] { Line | Function 0091 | AddAttribute(attrib) @@ -36381,7 +37115,7 @@ Line | Function 0171 | DestroyInstance() } -[2431] { +[2495] { Line | Function 0077 | __New(message = "", innerException = "") @@ -36399,7 +37133,7 @@ Line | Function 0810 | Is(ObjType) } -[2432] { +[2496] { Line | Function 0038 | __New() @@ -36412,7 +37146,7 @@ Line | Function 0164 | HasAttribute(attrib) } -[2433] { +[2497] { Line | Function 0182 | Add(value) @@ -36461,20 +37195,20 @@ Line | Function 2175 | if(ex) } -[2434] { +[2498] { Line | Function 0060 | __New(message = "", innerException = "") } -[2435] { +[2499] { Line | Function 0034 | __New() 0063 | GetFormat(formatType) } -[2436] { +[2500] { Line | Function 0064 | AddAttributes() @@ -36483,7 +37217,7 @@ Line | Function 0110 | DestroyInstance() } -[2437] { +[2501] { Line | Function 0045 | __New(genericType) @@ -36496,7 +37230,7 @@ Line | Function 0324 | Remove(obj) } -[2438] { +[2502] { Line | Function 0032 | __New(capacity = 0) @@ -36513,13 +37247,13 @@ Line | Function 0313 | Next(ByRef key, ByRef value) } -[2439] { +[2503] { Line | Function 0065 | __New(message = "", innerException = "") } -[2440] { +[2504] { Line | Function 0062 | __New() @@ -36527,7 +37261,7 @@ Line | Function 0110 | GetProgInstallLocation() } -[2441] { +[2505] { Line | Function 0123 | Add(value) @@ -36555,7 +37289,7 @@ Line | Function 1485 | _ReturnInt16(obj) } -[2442] { +[2506] { Line | Function 0124 | Add(value) @@ -36582,7 +37316,7 @@ Line | Function 1329 | _TryParse(s, style, info, ByRef Out) } -[2443] { +[2507] { Line | Function 0141 | Add(value) @@ -36610,25 +37344,25 @@ Line | Function 1355 | _TryParse(s, style, info, ByRef Out) } -[2444] { +[2508] { Line | Function } -[2445] { +[2509] { Line | Function 0060 | __New(message = "", innerException = "") } -[2446] { +[2510] { Line | Function 0030 | __New() 0037 | Clone() } -[2447] { +[2511] { Line | Function 0039 | __New() @@ -36653,7 +37387,7 @@ Line | Function 0756 | Next(ByRef key, ByRef value) } -[2448] { +[2512] { Line | Function 0029 | __new(Size=0, default=0, IgnoreCase=true) @@ -36667,7 +37401,7 @@ Line | Function 0467 | SubList(startIndex=0, endIndex="", leftToRight=true) } -[2449] { +[2513] { Line | Function 0065 | Abs(obj, ReturnAsObject = false) @@ -36701,13 +37435,13 @@ Line | Function 1485 | _CompareLongIntStrings(FirstLongString, SecondLongString) } -[2450] { +[2514] { Line | Function 0065 | __New(message = "", innerException = "") } -[2451] { +[2515] { Line | Function 0288 | _NewEnum() @@ -36839,7 +37573,7 @@ Line | Function 8283 | ToByteList(startIndex=0, length=-1, littleEndian=true) } -[2452] { +[2516] { Line | Function 0069 | AddEnums() @@ -36847,22 +37581,22 @@ Line | Function 0094 | GetInstance() } -[2453] { +[2517] { Line | Function } -[2454] { +[2518] { Line | Function } -[2455] { +[2519] { Line | Function } -[2456] { +[2520] { Line | Function 0047 | __New() @@ -36874,7 +37608,7 @@ Line | Function 0204 | Reset() } -[2457] { +[2521] { Line | Function 0047 | __new(Size=0, default=0) @@ -36889,7 +37623,7 @@ Line | Function 0646 | _AutoIncrease() } -[2458] { +[2522] { Line | Function 0024 | GetNibbles(obj) @@ -36968,24 +37702,24 @@ Line | Function 2933 | __new(hv, hf, c,Neg = false) } -[2459] { +[2523] { Line | Function } -[2460] { +[2524] { Line | Function 0059 | __New(message = "", innerException = "") } -[2461] { +[2525] { Line | Function 0059 | __New(message = "", innerException = "") } -[2462] { +[2526] { Line | Function 0038 | __New() @@ -37005,13 +37739,13 @@ Line | Function 0443 | HasAttribute(attrib) } -[2463] { +[2527] { Line | Function 0059 | __New(message = "", innerException = "") } -[2464] { +[2528] { Line | Function 0064 | __new(BufferLen) @@ -37046,7 +37780,7 @@ Line | Function 1473 | TryParseUInt64(s, style, info, ByRef result) } -[2465] { +[2529] { Line | Function 0087 | __New() @@ -37066,13 +37800,13 @@ Line | Function 0497 | HasAttribute(attrib) } -[2466] { +[2530] { Line | Function 0038 | __New() } -[2467] { +[2531] { Line | Function 0084 | AddAttributes() @@ -37081,7 +37815,7 @@ Line | Function 0156 | DestroyInstance() } -[2468] { +[2532] { Line | Function 0055 | __New() @@ -37107,7 +37841,7 @@ Line | Function 1149 | if(A_StringCaseSense = "On") } -[2469] { +[2533] { Line | Function 0031 | __New(ignoreCase) @@ -37116,19 +37850,19 @@ Line | Function 0096 | GetHashCode(obj) } -[2470] { +[2534] { Line | Function 0059 | __New(message = "", innerException = "") } -[2471] { +[2535] { Line | Function 0062 | __New(message = "", innerException = "") } -[2472] { +[2536] { Line | Function 0147 | AddBool(value) @@ -37157,7 +37891,7 @@ Line | Function 1021 | _LoadKeyValueParam(value) } -[2473] { +[2537] { Line | Function 0053 | __New(value, returnAsObject = false, SetReadOnly = false) @@ -37174,12 +37908,12 @@ Line | Function 0359 | _ErrorCheckParameter(index, pArgs, AllowUndefined = true) } -[2474] { +[2538] { Line | Function } -[2475] { +[2539] { Line | Function 0032 | __New() @@ -37194,7 +37928,7 @@ Line | Function 0222 | Peek() } -[2476] { +[2540] { Line | Function 0048 | __New(lang = "en-US") @@ -37203,7 +37937,7 @@ Line | Function 0433 | GetResourceString(key, Section="CORE") } -[2477] { +[2541] { Line | Function 0040 | __New() @@ -37211,7 +37945,7 @@ Line | Function 0145 | GetInstance() } -[2478] { +[2542] { Line | Function 0123 | Add(value) @@ -37239,7 +37973,7 @@ Line | Function 1358 | _ReturnSByte(obj) } -[2479] { +[2543] { Line | Function 0069 | __New(value = 2) @@ -37248,7 +37982,7 @@ Line | Function 0133 | GetInstance() } -[2480] { +[2544] { Line | Function 0040 | __New() @@ -37256,7 +37990,7 @@ Line | Function 0083 | GetInstance() } -[2481] { +[2545] { Line | Function 0032 | __New() @@ -37271,7 +38005,7 @@ Line | Function 0230 | Peek() } -[2482] { +[2546] { Line | Function 0146 | Append(value) @@ -37336,7 +38070,7 @@ Line | Function 4877 | _ReturnString(obj) } -[2483] { +[2547] { Line | Function 0079 | __New(value = 5) @@ -37345,7 +38079,7 @@ Line | Function 0168 | GetInstance() } -[2484] { +[2548] { Line | Function 0086 | AddAttributes() @@ -37354,13 +38088,13 @@ Line | Function 0147 | GetInstance() } -[2485] { +[2549] { Line | Function 0059 | __New(message = "", innerException = "") } -[2486] { +[2550] { Line | Function 0271 | Add(ts) @@ -37383,7 +38117,7 @@ Line | Function 1174 | ToString() } -[2487] { +[2551] { Line | Function 0086 | __New(obj, TypeName = "") @@ -37405,7 +38139,7 @@ Line | Function 0716 | GetType() } -[2488] { +[2552] { Line | Function 0077 | AddEnums() @@ -37413,7 +38147,7 @@ Line | Function 0121 | GetInstance() } -[2489] { +[2553] { Line | Function 0123 | Add(value) @@ -37441,7 +38175,7 @@ Line | Function 1343 | _ReturnUInt32(obj) } -[2490] { +[2554] { Line | Function 0123 | Add(value) @@ -37472,7 +38206,7 @@ Line | Function 1405 | _ReturnUInt32(obj) } -[2491] { +[2555] { Line | Function 0271 | Add(value) @@ -37509,7 +38243,7 @@ Line | Function 2168 | _ReturnUInt64(obj) } -[2492] { +[2556] { Line | Function 0039 | __New() @@ -37592,7 +38326,7 @@ Line | Function 4878 | IsFloat(num) } -[2493] { +[2557] { Line | Function 0244 | AddEnums() @@ -37600,13 +38334,13 @@ Line | Function 0308 | GetInstance() } -[2494] { +[2558] { Line | Function 0039 | __New() } -[2495] { +[2559] { Line | Function 0097 | __New(arg1="",arg2="",arg3="",arg4="") @@ -37632,32 +38366,32 @@ Line | Function 0820 | Is(ObjType) } -[2496] IO\MfDirectoryNotFoundException.ahk { +[2560] IO\MfDirectoryNotFoundException.ahk { Line | Function 0126 | Is(ObjType) } -[2497] IO\MfDriveNotFoundException.ahk { +[2561] IO\MfDriveNotFoundException.ahk { Line | Function 0129 | Is(ObjType) } -[2498] IO\MfFileNotFoundException.ahk { +[2562] IO\MfFileNotFoundException.ahk { Line | Function 0167 | Is(ObjType) 0211 | ToString() } -[2499] IO\MfIOException.ahk { +[2563] IO\MfIOException.ahk { Line | Function 0140 | Is(ObjType) } -[2500] MfStruct\MfStruct.ahk { +[2564] MfStruct\MfStruct.ahk { Line | Function 0065 | sizeof(_TYPE_,parent_offset=0,_align_total_=0) @@ -37675,7 +38409,7 @@ Line | Function 0634 | ___Clone(offset) } -[2501] MfUnicode\MfDataBaseFactory.ahk { +[2565] MfUnicode\MfDataBaseFactory.ahk { Line | Function 0010 | OpenDataBase(dbType, connectionString) @@ -37684,7 +38418,7 @@ Line | Function 0039 | __New() } -[2502] MfUnicode\MfDbUcdAbstract.ahk { +[2566] MfUnicode\MfDbUcdAbstract.ahk { Line | Function 0043 | _intiColumnsFields(columns, fields) @@ -37735,7 +38469,7 @@ Line | Function 0621 | Is(ObjType) } -[2503] MfUnicode\MfRecordSetSqlLite.ahk { +[2567] MfUnicode\MfRecordSetSqlLite.ahk { Line | Function 0040 | __New(db, query) @@ -37748,7 +38482,7 @@ Line | Function 0183 | Close() } -[2504] MfUnicode\MfSQLite_L.ahk { +[2568] MfUnicode\MfSQLite_L.ahk { Line | Function 0096 | __New() @@ -37806,7 +38540,7 @@ Line | Function 1290 | ToString() } -[2505] MfUnicode\MfUcdDb.ahk { +[2569] MfUnicode\MfUcdDb.ahk { Line | Function 0005 | GetVersion() @@ -37836,7 +38570,7 @@ Line | Function 0406 | ReturnCode(RC) } -[2506] MfUnicode\UCDSqlite.ahk { +[2570] MfUnicode\UCDSqlite.ahk { Line | Function 0008 | __New() @@ -37853,7 +38587,7 @@ Line | Function 0340 | RunSQL(SQL) } -[2507] Text\MfStringBuilder.ahk { +[2571] Text\MfStringBuilder.ahk { Line | Function 0503 | AppendString(str) @@ -37900,12 +38634,12 @@ Line | Function 3364 | _newIntIntSb(size, maxCapacity, previousBlock="") } -[2508] Text\MfText.ahk { +[2572] Text\MfText.ahk { Line | Function } -[2509] minilib\audioRouter.ahk { +[2573] minilib\audioRouter.ahk { Line | Function 0023 | __new(path) @@ -37917,32 +38651,32 @@ Line | Function 0113 | LVM_GETITEMPOSITION(itemIdx,hwnd) } -[2510] minilib\borderlessMode.ahk { +[2574] minilib\borderlessMode.ahk { Line | Function 0001 | borderlessMode(winId="") } -[2511] minilib\borderlessMove.ahk { +[2575] minilib\borderlessMove.ahk { Line | Function 0001 | borderlessMove(winId="",key="LButton") } -[2512] minilib\checkSession.ahk { +[2576] minilib\checkSession.ahk { Line | Function 0045 | checkSession(_msgHandler,_params=0) 0051 | checkSession_msgHandler(wParam,lParam,msg,hwnd) } -[2513] minilib\commaFormat.ahk { +[2577] minilib\commaFormat.ahk { Line | Function 0001 | commaFormat(num) } -[2514] minilib\compileScript.ahk { +[2578] minilib\compileScript.ahk { Line | Function 0001 | compileScript(file,out="",bin="",icon="",mpress=0) @@ -37950,125 +38684,125 @@ Line | Function 0011 | if(icon) } -[2515] minilib\CopyDirStructure.ahk { +[2579] minilib\CopyDirStructure.ahk { Line | Function 0017 | CopyDirStructure(_inpath,_outpath,_i=true) } -[2516] minilib\CreateOpenWithMenu.ahk { +[2580] minilib\CreateOpenWithMenu.ahk { Line | Function } -[2517] minilib\dpiOffset.ahk { +[2581] minilib\dpiOffset.ahk { Line | Function 0001 | dpiOffset(val) } -[2518] minilib\EmptyMem.ahk { +[2582] minilib\EmptyMem.ahk { Line | Function 0008 | EmptyMem(PID=0) } -[2519] minilib\externalIP.ahk { +[2583] minilib\externalIP.ahk { Line | Function } -[2520] minilib\externalIP_old.ahk { +[2584] minilib\externalIP_old.ahk { Line | Function 0001 | externalIP_old() } -[2521] minilib\FileCountLines.ahk { +[2585] minilib\FileCountLines.ahk { Line | Function 0005 | FileCountLines(FileName) } -[2522] minilib\FileFindWord.ahk { +[2586] minilib\FileFindWord.ahk { Line | Function 0005 | FileFindWord(FileName, Search) } -[2523] minilib\FileGetVersionInfo.ahk { +[2587] minilib\FileGetVersionInfo.ahk { Line | Function 0004 | FileGetVersionInfo( peFile="", StringFileInfo="" ) } -[2524] minilib\FileReadLastLines.ahk { +[2588] minilib\FileReadLastLines.ahk { Line | Function } -[2525] minilib\fileUnblock.ahk { +[2589] minilib\fileUnblock.ahk { Line | Function 0001 | fileUnblock(path) } -[2526] minilib\getCurrentTime.ahk { +[2590] minilib\getCurrentTime.ahk { Line | Function 0008 | if(countryIsTimezone) } -[2527] minilib\getImageSize.ahk { +[2591] minilib\getImageSize.ahk { Line | Function 0001 | getImageSize(imagePath) } -[2528] minilib\getPosFromAngle.ahk { +[2592] minilib\getPosFromAngle.ahk { Line | Function 0001 | getPosFromAngle(ByRef x2,ByRef y2,x1,y1,len,ang) } -[2529] minilib\getSelected.ahk { +[2593] minilib\getSelected.ahk { Line | Function 0001 | getSelected() 0006 | if(errorlevel) } -[2530] minilib\GetStringFileInfo.ahk { +[2594] minilib\GetStringFileInfo.ahk { Line | Function 0024 | GetStringFileInfo(fn,type) } -[2531] minilib\getUTCOffset.ahk { +[2595] minilib\getUTCOffset.ahk { Line | Function 0002 | getUTCOffset(timezone) } -[2532] minilib\getWinClientSize.ahk { +[2596] minilib\getWinClientSize.ahk { Line | Function 0001 | getWinClientSize(hwnd) } -[2533] minilib\hour.ahk { +[2597] minilib\hour.ahk { Line | Function 0001 | hour(hr) } -[2534] minilib\httpQuery.ahk { +[2598] minilib\httpQuery.ahk { Line | Function 0002 | httpQuery(byref Result, lpszUrl, POSTDATA="", HEADERS="") } -[2535] minilib\IEObj.ahk { +[2599] minilib\IEObj.ahk { Line | Function 0004 | __new() @@ -38079,232 +38813,232 @@ Line | Function 0092 | err(desc) } -[2536] minilib\ifContains.ahk { +[2600] minilib\ifContains.ahk { Line | Function 0001 | ifContains(haystack,needle) } -[2537] minilib\ifIn.ahk { +[2601] minilib\ifIn.ahk { Line | Function 0001 | ifIn(needle,haystack) } -[2538] minilib\imageSearchc.ahk { +[2602] minilib\imageSearchc.ahk { Line | Function 0003 | imageSearchc(byRef out1,byRef out2,x1,y1,x2,y2,image,vari=0,trans="",direction=5,debug=0) 0013 | if(errorlev) } -[2539] minilib\internetConnected.ahk { +[2603] minilib\internetConnected.ahk { Line | Function } -[2540] minilib\invertCaseChr.ahk { +[2604] minilib\invertCaseChr.ahk { Line | Function 0001 | invertCaseChr(char) } -[2541] minilib\invertCaseStr.ahk { +[2605] minilib\invertCaseStr.ahk { Line | Function 0001 | invertCaseStr(str) } -[2542] minilib\is64bitExe.ahk { +[2606] minilib\is64bitExe.ahk { Line | Function 0001 | is64bitExe(path) } -[2543] minilib\isAlpha.ahk { +[2607] minilib\isAlpha.ahk { Line | Function 0001 | isAlpha(in) } -[2544] minilib\isAlphaNum.ahk { +[2608] minilib\isAlphaNum.ahk { Line | Function 0001 | isAlphaNum(in) } -[2545] minilib\isBetween.ahk { +[2609] minilib\isBetween.ahk { Line | Function 0001 | isBetween(lower,check,upper) } -[2546] minilib\isDigit.ahk { +[2610] minilib\isDigit.ahk { Line | Function 0001 | isDigit(in) } -[2547] minilib\isFloat.ahk { +[2611] minilib\isFloat.ahk { Line | Function 0001 | isFloat(in) } -[2548] minilib\isHex.ahk { +[2612] minilib\isHex.ahk { Line | Function 0001 | isHex(in) } -[2549] minilib\isInt.ahk { +[2613] minilib\isInt.ahk { Line | Function 0001 | isInt(in) } -[2550] minilib\isLower.ahk { +[2614] minilib\isLower.ahk { Line | Function 0001 | isLower(in) } -[2551] minilib\isNum.ahk { +[2615] minilib\isNum.ahk { Line | Function 0001 | isNum(in) } -[2552] minilib\isSpace.ahk { +[2616] minilib\isSpace.ahk { Line | Function 0001 | isSpace(in) } -[2553] minilib\isUpper.ahk { +[2617] minilib\isUpper.ahk { Line | Function 0001 | isUpper(in) } -[2554] minilib\json.ahk { +[2618] minilib\json.ahk { Line | Function 0016 | json(ByRef js, s, v = "") } -[2555] minilib\lanConnected.ahk { +[2619] minilib\lanConnected.ahk { Line | Function 0001 | lanConnected() } -[2556] minilib\min.ahk { +[2620] minilib\min.ahk { Line | Function 0001 | min(min) } -[2557] minilib\mouseOverWin.ahk { +[2621] minilib\mouseOverWin.ahk { Line | Function 0001 | mouseOverWin(winName,winText="") } -[2558] minilib\mtoh.ahk { +[2622] minilib\mtoh.ahk { Line | Function 0001 | mtoh(hr) } -[2559] minilib\mtom.ahk { +[2623] minilib\mtom.ahk { Line | Function 0001 | mtom(mil) } -[2560] minilib\mtos.ahk { +[2624] minilib\mtos.ahk { Line | Function 0001 | mtos(sec) } -[2561] minilib\muteWindow.ahk { +[2625] minilib\muteWindow.ahk { Line | Function 0003 | muteWindow(winName="A",mode="t") 0007 | if(mode=t) } -[2562] minilib\nicRestart.ahk { +[2626] minilib\nicRestart.ahk { Line | Function 0001 | nicRestart(adapter) } -[2563] minilib\nicSetState.ahk { +[2627] minilib\nicSetState.ahk { Line | Function 0004 | nicSetState(adapter,state) } -[2564] minilib\processExist.ahk { +[2628] minilib\processExist.ahk { Line | Function 0001 | processExist(im) } -[2565] minilib\processPriority.ahk { +[2629] minilib\processPriority.ahk { Line | Function 0001 | processPriority(PID) } -[2566] minilib\rand.ahk { +[2630] minilib\rand.ahk { Line | Function 0001 | rand(lowerBound,upperBound) } -[2567] minilib\randStr.ahk { +[2631] minilib\randStr.ahk { Line | Function 0016 | randStr(lowerBound,upperBound,mode=1) } -[2568] minilib\regExMatchI.ahk { +[2632] minilib\regExMatchI.ahk { Line | Function 0001 | regExMatchI(haystack,needleRegEx,byref unquotedOutputVar="",startingPosition=1) } -[2569] minilib\regExReplaceI.ahk { +[2633] minilib\regExReplaceI.ahk { Line | Function 0001 | regExReplaceI(haystack,needleRegEx,replacement="",byref outputVarCount="",limit=-1,startingPosition=1) } -[2570] minilib\sec.ahk { +[2634] minilib\sec.ahk { Line | Function 0001 | sec(sec) } -[2571] minilib\StdOutStream.ahk { +[2635] minilib\StdOutStream.ahk { Line | Function 0001 | StdOutStream( sCmd, Callback = "" ) 0008 | if(a_ptrSize=8) } -[2572] minilib\StdOutToVar.ahk { +[2636] minilib\StdOutToVar.ahk { Line | Function 0002 | StdOutToVar( sCmd ) 0008 | if(a_ptrSize=8) } -[2573] minilib\StealFuncFromLib.ahk { +[2637] minilib\StealFuncFromLib.ahk { Line | Function 0025 | stealFunc(funcs, file, islist=1) @@ -38316,31 +39050,31 @@ Line | Function 0153 | stealFunc_gui() } -[2574] minilib\strI.ahk { +[2638] minilib\strI.ahk { Line | Function 0001 | strI(str) } -[2575] minilib\strReplaceI.ahk { +[2639] minilib\strReplaceI.ahk { Line | Function 0001 | strReplaceI(haystack,searchText,replaceText="",byref outputVarCount="",limit=-1) } -[2576] minilib\strToLower.ahk { +[2640] minilib\strToLower.ahk { Line | Function 0001 | strToLower(str) } -[2577] minilib\strToUpper.ahk { +[2641] minilib\strToUpper.ahk { Line | Function 0001 | strToUpper(str) } -[2578] minilib\threadMan.ahk { +[2642] minilib\threadMan.ahk { Line | Function 0011 | __New(ahkDllPath,isResource=0) @@ -38358,41 +39092,41 @@ Line | Function 0088 | varGet(varName,pointer=0) } -[2579] minilib\tool.ahk { +[2643] minilib\tool.ahk { Line | Function 0001 | tool(content,wait=2500,x="",y="") } -[2580] minilib\toolSpeak.ahk { +[2644] minilib\toolSpeak.ahk { Line | Function } -[2581] minilib\urlDownloadToFile.ahk { +[2645] minilib\urlDownloadToFile.ahk { Line | Function 0001 | urlDownloadToFile(url,fileDest="",method=0) } -[2582] minilib\urlDownloadToVar.ahk { +[2646] minilib\urlDownloadToVar.ahk { Line | Function } -[2583] minilib\urlFileGetSize.ahk { +[2647] minilib\urlFileGetSize.ahk { Line | Function 0010 | urlFileGetSize(url,units=0) } -[2584] minilib\winInfo.ahk { +[2648] minilib\winInfo.ahk { Line | Function 0001 | winInfo(winName="A") } -[2585] lib\ObjCSV.ahk { +[2649] lib\ObjCSV.ahk { Line | Function 1108 | SaveBatch(strData, strFilePath, intProgressType, strFileEncoding) @@ -38408,12 +39142,12 @@ Line | Function 1235 | GetEolCharacters(strData) } -[2586] CmdReturn\MainScript.ahk { +[2650] CmdReturn\MainScript.ahk { Line | Function } -[2587] CmdReturn\RamDrive.ahk { +[2651] CmdReturn\RamDrive.ahk { Line | Function 0011 | RamDrivePath() @@ -38423,12 +39157,12 @@ Line | Function 0099 | CMDReturn(CommandtoRun, params) } -[2588] SendInput\cSendInputW.ahk { +[2652] SendInput\cSendInputW.ahk { Line | Function } -[2589] SendInput\hookSend.ahk { +[2653] SendInput\hookSend.ahk { Line | Function 0004 | __new(str) @@ -38436,13 +39170,13 @@ Line | Function 0023 | __delete() } -[2590] SendInput\inputUnicode.ahk { +[2654] SendInput\inputUnicode.ahk { Line | Function 0053 | process(str,sod) } -[2591] SendInput\SendInput.ahk { +[2655] SendInput\SendInput.ahk { Line | Function 0003 | __new(inputArray) @@ -38456,90 +39190,90 @@ Line | Function 0142 | __Delete() } -[2592] Gui\splashConsole.ahk { +[2656] Gui\splashConsole.ahk { Line | Function 0001 | splashConsole(text, default = "") } -[2593] Gui\splashDir.ahk { +[2657] Gui\splashDir.ahk { Line | Function } -[2594] Gui\splashImageGUI.ahk { +[2658] Gui\splashImageGUI.ahk { Line | Function 0001 | splashImageGUI(Picture, X, Y, tColor, Transparent = true) } -[2595] Gui\splashList.ahk { +[2659] Gui\splashList.ahk { Line | Function 0001 | splashList(text, list, sorted=1, fontSize = 12) } -[2596] Gui\splashList_AltSubmit.ahk { +[2660] Gui\splashList_AltSubmit.ahk { Line | Function 0001 | splashList_AltSubmit(text, list) } -[2597] Gui\splashNote.ahk { +[2661] Gui\splashNote.ahk { Line | Function 0001 | splashNoteFull(rows = 10, defaultTxt = "") } -[2598] Gui\splashNoteFull.ahk { +[2662] Gui\splashNoteFull.ahk { Line | Function 0001 | splashNoteFull(rows = 10, defaultTxt = "") } -[2599] Gui\splashNoteSmall.ahk { +[2663] Gui\splashNoteSmall.ahk { Line | Function 0001 | splashNoteSmall(rows = 10, defaultTxt = "") } -[2600] Gui\splashNotify.ahk { +[2664] Gui\splashNotify.ahk { Line | Function 0004 | splashNotify(text, position="top", timeout=2000, fontSize= 12, transparency=200) } -[2601] Gui\splashProgress.ahk { +[2665] Gui\splashProgress.ahk { Line | Function 0001 | splashProgress(text, timeout=0) } -[2602] Gui\splashRadio.ahk { +[2666] Gui\splashRadio.ahk { Line | Function 0001 | splashRadio(text, options) } -[2603] Gui\splashRadio2.ahk { +[2667] Gui\splashRadio2.ahk { Line | Function 0001 | splashRadio2(text, options) } -[2604] Gui\splashText.ahk { +[2668] Gui\splashText.ahk { Line | Function 0001 | splashText(text, rows = 1, helptext = "", defaultTxt = "", timeout = "") } -[2605] Gui\splashUI.ahk { +[2669] Gui\splashUI.ahk { Line | Function 0001 | splashUI(type, option1, option2 = "", option3 = "") } -[2606] _Functions\Edit.ahk { +[2670] _Functions\Edit.ahk { Line | Function 0069 | Edit_ActivateParent(hEdit) @@ -38643,7 +39377,7 @@ Line | Function 4048 | Edit_WriteFile(hEdit,p_File,p_Encoding="",p_Convert="") } -[2607] _Functions\Fnt.ahk { +[2671] _Functions\Fnt.ahk { Line | Function 1876 | Fnt_Color2RGB(p_Color) @@ -38710,14 +39444,14 @@ Line | Function 8809 | Fnt_VertDTUs2Pixels(hFont,p_VertDTUs) } -[2608] _Functions\HSV.ahk { +[2672] _Functions\HSV.ahk { Line | Function 0047 | HSV_Convert2HSV(r,g,b) 0111 | HSV_Convert2RGB(h,s,v) } -[2609] _Functions\TAB.ahk { +[2673] _Functions\TAB.ahk { Line | Function 0833 | TAB_DeleteAllItems(hTab) @@ -38757,7 +39491,573 @@ Line | Function 3303 | TAB_Tooltips_SetText(hTab,iTab,p_Text) } -[2610] windows10DesktopManager\commonFunctions.ahk { +[2674] lib\ansi.ahk { + +Line | Function +0003 | requires() +0064 | __initStdOut() +0070 | __initStdErr() +0076 | __initStdIn() +0085 | __initAnsiSupport() +0091 | __new() +0096 | __onExit() +0101 | exitFunc(reason=0, code=0) +0107 | write(string, writeTo="") +0122 | writeLine(string="", flush_immediate=false, writeTo="") +0130 | writeError(string) +0134 | wordWrap(inputString, desiredWidth) +0138 | wrap(inputString, desiredWidth, useWordWrapping=false) +0167 | readLine(pbMultiLine=false, ByRef pstLine="") +0178 | readable(st, emph=true) +0192 | cursorPosition(line=0, column=0) +0196 | cursorUp(value=1) +0200 | cursorDown(value=1) +0204 | cursorForward(value=1) +0208 | cursorBackward(value=1) +0212 | cursorNexLine(value=1) +0216 | cursorPreviousLine(value=1) +0220 | cursorHorizontalAbs(value) +0224 | saveCursorPosition() +0228 | restoreCursorPosition() +0232 | eraseDisplay(value=2) +0236 | eraseLine(value="") +0249 | hideCursor() +0253 | showCursor() +0257 | reset() +0261 | flush() +0266 | plainStr(inputString) +0270 | plainStrLen(inputString) +0274 | plainSubStr(inputString, start, length="") +0280 | plainStrInsert(inputString, atPosition, newSubstring) +0289 | plainStrReplaceStr(inputString, atPosition, newSubstring) +0298 | findPostionsOfAnsiSequences(inputString) +0311 | findPositionToReplaceAt(inputString, atPosition) +0319 | transistPosition(inputString, position, positionsOfAnsiSequences) +0330 | mapColor(color) + +} +[2675] lib\app.ahk { + +Line | Function +0003 | requires() +0008 | checkRequiredClasses(forClass="") + +} +[2676] lib\arrays.ahk { + +Line | Function +0004 | requires() +0012 | __new() +0017 | equal(anArray, anArrayToCompareWith) +0031 | countOccurences(anArray, lookUpValue, caseSensitive=false) +0041 | areValuesEqual(aValue, anotherValue, caseSensitive) +0047 | keys(anArray) +0056 | values(anArray) +0065 | distinct(anArray) +0076 | removeValue(anArray, theValueToRemove, caseSensitive=false) +0092 | shift(anArray, shiftByElements=1) +0111 | append(anArray, anotherArray) +0120 | wrap(anArray, textWidth, indentWithText="", indent1stElementWithText="", replace1stIndent=false) +0139 | toString(anArray, separateWithText=" ") +0153 | appendElementToString(currentString, separateWithText, element) +0163 | index(anArray) +0179 | copyOf(anArray, newLength, padWith=0) +0191 | sort(anArray, compareFunc="") +0201 | flatten(anArray, reset=true) +0219 | map(anArray, callbackFunc) +0232 | reduce(anArray, callbackFunc, initialValue) +0242 | forEach(anArray, callbackFunc) +0250 | filter(anArray, callbackFunc) +0262 | isArray(anArray) +0268 | isCallbackFunction(callbackFunc) + +} +[2677] lib\base64.ahk { + +Line | Function +0003 | requires() +0050 | __new() +0055 | initAorW() +0059 | encode(ByRef pbBinary, cbBinary=0, dwFlags=0x40000001) +0086 | decode(pszString, cchString, dwFlags, ByRef pbBinary, ByRef pcbBinary=0, ByRef pdwSkip=0, ByRef pdwFlags=0) + +} +[2678] lib\bitset.ahk { + +Line | Function +0003 | requires() +0018 | wordIndex(bitIndex) +0022 | checkInvariants() +0044 | recalculateWordsInUse() +0055 | __new(arg="") +0077 | initWords(nbits) +0084 | valueOfLong(longs) +0092 | valueOfByte(bytes) +0100 | toLongArray() +0108 | toByteArray() +0128 | ensureCapacity(wordsRequired) +0136 | expandTo(wordIndex) +0144 | checkRange(fromIndex, toIndex) +0159 | flip(bitIndex) +0171 | flipRange(fromIndex, toIndex) +0200 | set(bitIndex) +0211 | setValue(bitIndex, value) +0219 | setRange(fromIndex, toIndex) +0246 | and(set) +0262 | or(set) +0284 | xor(set) +0303 | andNot(set) +0313 | clear(bitIndex="") +0333 | clearRange(fromIndex, toIndex) +0367 | get(bitIndex) +0378 | getRange(fromIndex, toIndex) +0417 | nextSetBit(fromIndex) +0439 | nextClearBit(fromIndex) +0462 | length() +0471 | cardinality() +0479 | toString() + +} +[2679] lib\calendar.ahk { + +Line | Function +0039 | __new(dateTime="") +0048 | get() +0052 | isLeapYear() +0058 | long(piLong="") +0066 | asLong() +0072 | setAsLong(newLongDateTime) +0079 | julian(piJulian="") +0087 | asJulian() +0097 | setAsJulian(newJulianDateTime) +0119 | date(pDate="") +0127 | asDate() +0131 | setAsDate(newDate) +0137 | time(pTime="") +0145 | asTime() +0149 | setAsTime(newTime) +0155 | year(piYear="") +0163 | asYear() +0167 | setAsYear(newYear) +0173 | month(piMonth="") +0181 | asMonth() +0185 | setAsMonth(newMonth) +0193 | day(piDay="") +0201 | asDay() +0205 | setAsDay(newDay) +0213 | hour(piHour="") +0222 | asHour() +0226 | setAsHour(newHour) +0235 | minutes(piMinutes="") +0243 | asMinutes() +0247 | setAsMinutes(newMinutes) +0256 | seconds(piSeconds="") +0264 | asSeconds() +0268 | setAsSeconds(newSeconds) +0276 | easterSunday() +0293 | daysInMonth() +0297 | dayOfWeek() +0302 | week() +0307 | compare(anotherCalendar, unit="", precision="") +0339 | duration(seconds) +0349 | adjust(adjustYears=0, adjustMonths=0, adjustDays=0, adjustHours=0, adjustMinutes=0, adjustSeconds=0) +0371 | findWeekDay(dayOfWeek=1, occurenceAndDirection=0.1) +0387 | formatTime(pattern="") + +} +[2680] lib\console.ahk { + +Line | Function +0104 | __new(pwAttributes, pstrText="") +0110 | reverse(pwAttributes="") +0117 | bold(pwAttributes="") +0125 | highlight() +0131 | normal() +0140 | __initHandle(piHandle) +0144 | __initBufferInfo() +0154 | __new() +0196 | writeAndTranslateAnsiSequences(string) +0279 | writeList(pList) +0287 | resetColor() +0292 | setTextAttribute(psAttributes=0, phHandle="") +0319 | read(ByRef pBuffer, pNumberOfCharsToRead=1, pInputControlObject="") +0349 | readInput(ByRef pBuffer, pnLength=1) +0366 | setCursorPos(piX="", piY="", pbRelative=false) +0382 | savePosition() +0387 | restorePosition() +0391 | clearEOL() +0401 | clearSCR() +0409 | getBufferInfo() +0416 | fillWithCharacter(pcChar=" ", pnLength=1, piX=0, piY=0) +0440 | fillWithAttribute(pwAttributes=7, pnLength=1, piX=0, piY=0) +0457 | refreshBufferInfo() + +} +[2681] lib\cron.ahk { + +Line | Function +0004 | requires() +0012 | __new() +0017 | start() +0032 | stop() +0038 | reset() +0043 | scheduler(current_min) +0080 | addScheduler(cron_pattern, function_name) +0085 | parseEntry(cron_pattern, function_name) +0110 | range2List(range, min, max, actual=0) +0168 | value2Expr(value) + +} +[2682] lib\crypto.ahk { + +Line | Function +0004 | requires() +0013 | __new() +0019 | encodeDecode(ByRef Message, ByRef Key, iMsgLen=0, iKeyLen=0, iSkipStates=256) +0076 | __new() +0081 | encodeDecode(ByRef Message, ByRef Key, iMsgLen=0, iKeyLen=0) +0102 | __new() +0107 | encode(ByRef Message, iMsgLen=0) +0129 | __new() +0134 | encrypt(ByRef Message, ByRef Key, iAlgorithm, iMsgLen=0, iKeyLen=0) +0150 | decrypt(ByRef Message, ByRef Key, iKeyLen=0, iAlgorithm="") +0183 | isValidAlgorithm(iAlgorithm) + +} +[2683] lib\datatable.ahk { + +Line | Function +0003 | requires() +0034 | defineColumn(column) +0060 | appendRowAndInsertColumnData(columns) +0071 | checkIfThisColumnHasTheWidestData(rowIndex, columnIndex) +0081 | getTable() +0095 | getTableAsString(textBetweenColumns=" ", textInFrontOfFirstColumn="", textAfterLastColumn="") +0123 | concatLinesOfEveryColumn(columns, maxLines) +0136 | determineRowHeight(rowIndex) +0148 | insertColumnWithCorrectHeight(columns, textToInsert, maxLines) +0156 | expandToNeccesaryRowHeight(what, height, whatElse="") +0163 | getTableForConsoleOutput(textBetweenColumns=" ", textInFrontOfFirstColumn="", textAfterLastColumn="") +0193 | getColumn(columnData, columnIndex) +0198 | renderColumn(columnData, columnIndex) +0215 | reformatColumnData(columnData, columnWidth, flags) +0226 | handleColumnDataOverflow(columnData, columnWidth, flags) +0247 | handleColumnDataUnderflow(columnData, columnWidth, flags) +0258 | getCellContent(rowIndex, columnIndex) +0262 | getColumnWidth(colIndex) +0268 | swap(listToSort, anIndex, anotherIndex) +0274 | compare(listWithColumnNumbersToSort, aRow, anotherRow) +0287 | ascendingSortRequested(columnNumberToSort) +0291 | compareTwoColumns(aRow, anotherRow, columnNumberToCompare) +0300 | compareValues(aValue, anotherValue) +0306 | setSortAlgorithm(algorithm) + +} +[2684] lib\dimension.ahk { + +Line | Function +0006 | proper(instance, ByRef number, initialDimension="", factor=0) +0017 | recalc(instance, ByRef number, factor, startAtDimension) +0029 | recalcFactorList(instance, ByRef number, factor, n) +0038 | recalcExponential(instance, ByRef number, factor, n) +0046 | recalcLinear(instance, ByRef number, factor, n) +0066 | proper(pValue, initialDimension="", pfPrecision="0.1") +0080 | proper(pValue, pstStartDimension="", pfPrecision="0.1") +0089 | properString(pValue, pstStartDimension="", pstSeparate=" ", pfPrecision="0.1") + +} +[2685] lib\flimsydata.ahk { + +Line | Function +0003 | requires() +0022 | __new(seed=12345) +0028 | getRandomInt(randomizer, from, to) +0032 | getRandomListElement(randomizer, list) +0039 | getRandomPattern(randomizer, pattern) +0044 | getCountry(inputLocale) +0053 | getLanguage(inputLocale) + +} +[2686] lib\ldap.ahk { + +Line | Function +0007 | requires() +0267 | indent_text(text, num, indent_width=2, indent_char=" ") +0274 | __AW() +0278 | __new(hostname, port=389) +0287 | setOption(option, invalue) +0292 | getOption(option, ByRef value) +0297 | connect(timeout=0) +0302 | search(ByRef search_res, basedn, filter, scope=2, attrs=0, attrs_only=false) +0327 | formatFilter(filter, hilightSyntax=true) +0365 | countEntries(search_res) +0370 | firstEntry(search_res) +0375 | nextEntry(entry) +0380 | firstAttribute(entry) +0390 | nextAttribute(entry) +0395 | getValues(entry, attr) +0400 | countValues(values) +0405 | getDn(entry) +0410 | getLastError() +0414 | err2String(err="") +0422 | simpleBind(dn, passwd) +0427 | unbind() +0436 | add(entry_dn, ByRef ldap_mod) +0441 | delete(dn) +0446 | modify(dn, ByRef ldap_mod) +0452 | LDAPMod(ByRef mod_data, mod_op, ByRef mod_type, ByRef mod_values) + +} +[2687] lib\long.ahk { + +Line | Function +0003 | requires() +0015 | toUnsignedString(i, shift) +0031 | toBinaryString(i) +0035 | toHexString(i) +0039 | toOctalString(i) + +} +[2688] lib\math.ahk { + +Line | Function +0007 | requires() +0018 | __new() +0023 | swap(ByRef firstElement, ByRef secondElement) +0051 | limitTo(number, minimum, maximum) +0062 | isEven(number) +0071 | isOdd(number) +0080 | isFractional(number) +0088 | root(degreeOfRoot, number) +0106 | log(base, exponent) +0124 | isPrime(number) +0150 | integerFactorization(number) +0182 | greatestCommonDivisor(firstNumber="", secondNumber="", useEuklidsAlgorithm=true) +0211 | lowestCommonMultiple(firstNumber="", secondNumber="") +0253 | zeroFillShiftR(number, shift) +0266 | numberOfLeadingZeros(number) +0291 | bitCount(number) +0302 | numberOfTrailingZeros(number) +0335 | I(i) +0339 | S(s) +0343 | L(l) +0347 | UI(i) +0351 | US(s) +0355 | UL(l) +0359 | SI(i) +0366 | SS(s) +0373 | SL(l) + +} +[2689] lib\object.ahk { + +Line | Function +0007 | __new(pstFileName) +0012 | write(pstSection, pstKey, pValue) +0018 | read(pstSection, pstKey) +0022 | save() +0038 | load() +0066 | __new() +0071 | serialize(po, pstIniFileName) +0083 | deserialize(pstIniFileName) +0100 | instanceOf(po, pstrClassName) +0114 | compare(poFirst, poSecond) +0135 | object_Serialize(poObject, poIni, pstId="") +0163 | object_Deserialize(poObject, poData, pstId="") + +} +[2690] lib\optparser.ahk { + +Line | Function +0003 | requires() +0056 | __new(usageText, flags=0, envVarName="", rcFileName="") +0068 | add(option) +0080 | usage() +0094 | die(message, exitCode=0) +0102 | parse(argumentList) +0117 | handleRcFiles(inputArgumentList) +0127 | handleRcFile(argumentList, rcFile) +0135 | processRcFile(filePath) +0157 | handleEnvironmentVariable(argumentList) +0168 | expandBundeledOptions(argumentList) +0188 | parseArguments() +0206 | determineRemainigArguments() +0220 | handleEnvNoEnvOptions(argumentList) +0237 | processBundeledOptions(bundledArguments, alteredArgumentList, argument) +0248 | isBundlingOfThisOptionPossible(option) +0263 | testIfValidLongOrShortOption(argumentToParse) + +} +[2691] lib\pager.ahk { + +Line | Function +0009 | requires() +0023 | writeHardWrapped(text) +0030 | writeWordWrapped(text) +0037 | writeText(wrappedText, lineCounter) +0046 | printLineAndBreak(textToPrint, lineCounter) +0065 | break(breakMessage, resetLineCounter=false) +0088 | getConsoleHeight() +0097 | getConsoleWidth() +0106 | getMaxConsoleWidth() + +} +[2692] lib\queue.ahk { + +Line | Function +0006 | __new(queueSize=0) +0018 | push(newEntry) +0033 | pop(keepEntry=false) +0043 | length() +0050 | clear() + +} +[2693] lib\random.ahk { + +Line | Function +0012 | __new(p1, p2="") +0025 | init_genrand(pSeed) +0030 | initializeRandomGenerator(pSeed) +0042 | init_by_array(paInit_key, piKey_length) +0047 | initializeRandomGeneratorByArray(initialKeyArray, keyLength) +0080 | genrand_int32() +0084 | generateRandomInt32() +0124 | genrand_real1() +0128 | generateRandomReal1() +0133 | genrand_real2() +0137 | generateRandomReal2() +0142 | genrand_int31() +0146 | generateRandomInt31() +0151 | genrand_real3() +0155 | generateRandomReal3() +0160 | genrand_res53() +0164 | generateRes53() + +} +[2694] lib\string.ahk { + +Line | Function +0065 | __new() +0070 | repeat(howManyTimes=1) +0081 | pad(flags=0, length="", padWith="") +0132 | padRight(length, padWith=" ") +0138 | padLeft(length, padWith=" ") +0144 | padCenter(length, padWith=" ") +0156 | padNumber(length, padWith="0") +0174 | testPadLength(length) +0180 | trim(pnTrimTo=0) +0191 | trimLeft() +0195 | trimRight() +0199 | trimAll() +0203 | count(regExToCount) +0215 | replaceAt(from, length, replaceWith) +0225 | insertAt(at, insertText) +0232 | cutAt(at, cuttingLength) +0243 | upper() +0248 | lower() +0253 | asRegEx() +0269 | subStr(from, length="") +0276 | swap(ByRef anotherString) +0282 | reverse() +0291 | asHex(flags=0, length=0) +0317 | asBinary(padLength=4, digitsToGroup="") +0352 | asNumber(inputDecimalChar=",", inputThousandsDelimiter=".") +0362 | len() +0366 | put(ByRef var, targetEncoding="cp0") +0387 | toArray(delimiters=" ", charsToOmit="", keepEmptyElements=true) +0414 | formatNumber(inputDecimalChar=".", formatWithDecimalChar=",", formatWithThousandsDelimiter=".") +0433 | replace(searchFor, replaceWith="", replaceAllOccurences=true) +0452 | wrap(length, indentWith="", initialIndent="", replaceFirstIndent=false, fillUp=false) +0486 | findPositionOfNextSpace(text, startAt, downTo) +0494 | returnIndent(split, replaceFirstIndent, indentWith) +0498 | composeWrappedString(indent, wrappedString, fillUp, length) +0503 | compare(compareWith, flag=0) +0517 | compareAsString(compareWith) +0525 | compareAsCaseSensitiveString(compareWith) +0537 | compareAsNumber(compareWith) +0543 | equals(compareWith, caseSensitive=true) +0547 | equalsString(compareWith) +0551 | equalsCaseSensitiveString(compareWith) +0555 | equalsNumber(compareWith) +0559 | extract(fromString, toString, includeBoundaries=0) +0575 | filter(filterExpression, filterIsRegularExpression=false, ignoreCase=false, invertMatch=false, ByRef match="") +0649 | split(delimitingRegEx) +0682 | unSplit(parts) +0702 | hyphenate(hyphenateAt=-1, hyphenChar="") + +} +[2695] lib\system.ahk { + +Line | Function +0013 | __new() +0018 | __vArgs() +0029 | getLastError() +0063 | newUuid() +0076 | arrayCopy(ByRef src, srcPos, ByRef dest, destPos, length) +0104 | strCpy(ByRef ptr, ByRef string) +0115 | strPut(st, ByRef var, encoding, ret_as_str=false) +0126 | ptrListToStrArray(ByRef ptr, add_empty_element=true) +0146 | strArrayToPtrList(ByRef a, ByRef ptr) +0161 | strArrayToStrArrayList(ByRef a, ByRef ptr) +0190 | envGet(var_name) +0247 | runProcess(Command, Stream_To="", Working_Dir="", Input_Data="") +0370 | typeOf(var, type="") + +} +[2696] lib\testcase.ahk { + +Line | Function +0009 | requires() +0040 | __new() +0045 | openTestOutForOutput() +0051 | initAPIOverhead() +0057 | initFrequency() +0081 | handleStopOnFirstError() +0097 | findTestsAndFixtures(classToTest) +0124 | runBeforeClassFixtures() +0131 | runAfterClassFixtures() +0138 | runSelectedTests() +0159 | runBeforeFixtures() +0166 | runAfterFixtures() +0173 | performTestFunction(testName, testClass) +0199 | performDependencies(testName, testClass) +0225 | testFailed(testName, exceptionReceived) +0243 | testDuration(startTime, endTime) +0248 | addTest(classPropertyName, classProperty) +0254 | addBeforeClassFixture(classPropertyName, classProperty) +0260 | addBeforeFixture(classPropertyName, classProperty) +0265 | addAfterClassFixture(classPropertyName, classProperty) +0271 | addAfterFixture(classPropertyName, classProperty) +0276 | write(text="") +0281 | writeLine(text="") +0286 | writeTestSummary() +0316 | clock() +0321 | assert(expression, messageText="AssertionError") +0329 | assertSame(actualValue, expectedValue, messageText="AssertionError") +0346 | assertEquals(actualValue, expectedValue, messageText="AssertionError") +0356 | assertEqualsIgnoreCase(actualValue, expectedValue, messageText="AssertionError") +0366 | assertTrue(expression="", messageText="AssertionError") +0374 | assertFalse(expression, messageText="AssertionError") +0382 | assertEmpty(actualValue, messageText="AssertionError") +0393 | assertNotEmpty(actualValue, messageText="AssertionError") +0451 | fileContent(fileName) +0456 | fail(messageText, extraInfo="", terminateProgram=false) +0465 | stateName(state) +0478 | visibleCtrls(st, compareTo="") +0515 | registerTest(test) +0522 | didNotRun(test) +0526 | didRun(test) +0530 | wasSuccessful(test) +0534 | hasFailed(test) +0538 | isUnknwon(test) +0542 | isKnown(test) +0546 | reportError(actualValue, expectedValue, messageText) +0556 | getAssertionSource(testName, assertionNumber) +0581 | loadTestSourceFile() +0594 | logTestResultSummaryToDebugOut() + +} +[2697] windows10DesktopManager\commonFunctions.ahk { Line | Function 0001 | debugger(message) @@ -38772,7 +40072,7 @@ Line | Function 0086 | if(array[A_index] == searchFor) } -[2611] windows10DesktopManager\desktopChanger.ahk { +[2698] windows10DesktopManager\desktopChanger.ahk { Line | Function 0008 | __new() @@ -38784,7 +40084,7 @@ Line | Function 0098 | _doesDesktopHaveFocus() } -[2612] windows10DesktopManager\desktopManager.ahk { +[2699] windows10DesktopManager\desktopManager.ahk { Line | Function 0003 | __new() @@ -38802,7 +40102,7 @@ Line | Function 0097 | _setupDefaultHotkeys() } -[2613] windows10DesktopManager\desktopMapper.ahk { +[2700] windows10DesktopManager\desktopMapper.ahk { Line | Function 0005 | __new(virtualDesktopManager) @@ -38818,7 +40118,7 @@ Line | Function 0102 | _setupGui() } -[2614] windows10DesktopManager\dllWindowMover.ahk { +[2701] windows10DesktopManager\dllWindowMover.ahk { Line | Function 0006 | __new() @@ -38833,7 +40133,7 @@ Line | Function 0091 | moveWindowToDesktop(desktopNumber, windowHwnd) } -[2615] windows10DesktopManager\hotkeyManager.ahk { +[2702] windows10DesktopManager\hotkeyManager.ahk { Line | Function 0004 | JPGIncDesktopManagerCallback(desktopManager, functionName, keyCombo) @@ -38843,14 +40143,14 @@ Line | Function 0044 | _doesHotkeyRequireCustomHotkeySyntax(key) } -[2616] windows10DesktopManager\monitorMapper.ahk { +[2703] windows10DesktopManager\monitorMapper.ahk { Line | Function 0006 | getRequiredTabCount(hwnd) 0033 | getWindowsMonitorNumber(hwnd) } -[2617] windows10DesktopManager\virtualDesktopManager.ahk { +[2704] windows10DesktopManager\virtualDesktopManager.ahk { Line | Function 0003 | __new() @@ -38861,7 +40161,7 @@ Line | Function 0069 | moveWindowToDesktop(hWnd, ByRef desktopId) } -[2618] windows10DesktopManager\windowMover.ahk { +[2705] windows10DesktopManager\windowMover.ahk { Line | Function 0009 | __new() @@ -38874,12 +40174,12 @@ Line | Function 0091 | _deActivateActiveWindow() } -[2619] windows10DesktopManager\windows10.ahk { +[2706] windows10DesktopManager\windows10.ahk { Line | Function } -[2620] dll\dllCaller.ahk { +[2707] dll\dllCaller.ahk { Line | Function 0021 | setupMoveDesktopCallback(functionHandle, libraryHandle) @@ -38892,14 +40192,14 @@ Line | Function 0120 | alertErrorAndDie(msg) } -[2621] Windy\Mony.ahk { +[2708] Windy\Mony.ahk { Line | Function 0474 | rectToPercent(rect) 0498 | __idHide() } -[2622] Windy\Mousy.ahk { +[2709] Windy\Mousy.ahk { Line | Function 0318 | dump() @@ -38910,7 +40210,7 @@ Line | Function 0513 | RandomBezier( X0, Y0, Xf, Yf, O="") } -[2623] Windy\MultiMony.ahk { +[2710] Windy\MultiMony.ahk { Line | Function 0175 | coordVirtualScreenToDisplay(x,y) @@ -38923,7 +40223,7 @@ Line | Function 0512 | __New(_debug=false) } -[2624] Windy\Pointy.ahk { +[2711] Windy\Pointy.ahk { Line | Function 0050 | Dump() @@ -38934,7 +40234,7 @@ Line | Function 0120 | __New(x=0, y=0, debug=false) } -[2625] Windy\Recty.ahk { +[2712] Windy\Recty.ahk { Line | Function 0157 | Dump() @@ -38946,7 +40246,7 @@ Line | Function 0249 | __New(x=0, y=0, w=0, h=0, debug=false) } -[2626] Windy\WindLy.ahk { +[2713] Windy\WindLy.ahk { Line | Function 0052 | byMonitorId(id=1) @@ -38968,7 +40268,7 @@ Line | Function 0346 | __decStr(i) } -[2627] Windy\Windy.ahk { +[2714] Windy\Windy.ahk { Line | Function 1278 | border2percent(border="") @@ -38990,7 +40290,7 @@ Line | Function 1728 | ClassWindy_EventHook(hWinEventHook, Event, hWnd, idObject, idChild, dwEventThread, dwmsEventTime ) } -[2628] WinLogon\AHKLogonMediaKeys.ahk { +[2715] WinLogon\AHKLogonMediaKeys.ahk { Line | Function 0027 | main() @@ -39010,7 +40310,7 @@ Line | Function 0460 | ConnectNamedPipe(hNamedPipe) } -[2629] WinLogon\Logon.ahk { +[2716] WinLogon\Logon.ahk { Line | Function 0005 | LogonDesktop_AddTask(runNow, runOnStartup) @@ -39061,7 +40361,7 @@ Line | Function 0803 | GetParentProcessName() } -[2630] WinLogon\LogonDesktop.ahk { +[2717] WinLogon\LogonDesktop.ahk { Line | Function 0005 | LogonDesktop_AddTask(runNow, runOnStartup) @@ -39112,31 +40412,107 @@ Line | Function 0825 | GetParentProcessName() } -[2631] WinLogon\StartVC.ahk { +[2718] WinLogon\StartVC.ahk { Line | Function 0007 | CanWeWorkWithThisSystemToken(proc, ByRef hNonDuplicatedToken, wantedSystemTokenPrivs) } -[2632] WinLogon\TermWait.ahk { +[2719] WinLogon\TermWait.ahk { Line | Function 0095 | __TermWait_TermNotifier(pGlobal) } -[2633] xlib\xlib.ahk { +[2720] lib\Const_WinUser.ahk { + +Line | Function + +} +[2721] lib\Wy.ahk { + +Line | Function +0055 | __New() +0058 | __Delete() +0074 | ToJSON() +0092 | ToJSON() + +} +[2722] GdipC\GdipC.ahk { + +Line | Function +0004 | __New() +0016 | _DummyNew() +0020 | __Delete() +0024 | Dispose() +0062 | empty() +0153 | equals(sz) +0243 | clone() +0290 | getBottom() +0293 | getBounds() +0296 | getLeft() +0299 | getLocation() +0303 | getRight() +0306 | getSize() +0310 | getTop() +0371 | isEmptyArea() + +} +[2723] Wy\Colory.ahk { + +Line | Function +0059 | dump() +0073 | fromRGB(hex) +0092 | fromJSON(str) + +} +[2724] Wy\DbgOut.ahk { + +Line | Function + +} +[2725] Wy\JSON.ahk { + +Line | Function + +} +[2726] Wy\Mony.ahk { + +Line | Function +0468 | rectToPercent(rect) +0487 | __idHide() + +} +[2727] Wy\MultiMony.ahk { + +Line | Function +0165 | coordVirtualScreenToDisplay(x,y) +0223 | hmonFromHwnd(hwnd) +0263 | hmonFromRect(x, y, w, h) +0338 | idFromHwnd(hwnd) +0374 | idFromHmon(hmon) +0396 | idFromRect(x, y, w, h) +0461 | monitors() + +} +[2728] Wy\ScreenSavy.ahk { + +Line | Function + +} +[2729] xlib\xlib.ahk { Line | Function } -[2634] common\bases.ahk { +[2730] common\bases.ahk { Line | Function 0019 | setCleanUpFunction(cleanUpFn) 0032 | __delete() } -[2635] common\callback.ahk { +[2731] common\callback.ahk { Line | Function 0016 | getFn(fn) @@ -39147,18 +40523,18 @@ Line | Function 0138 | getStrGetParams(arr, ind, strPtr) } -[2636] common\common_includes.ahk { +[2732] common\common_includes.ahk { Line | Function } -[2637] common\constants.ahk { +[2733] common\constants.ahk { Line | Function 0028 | cleanup() } -[2638] common\core.ahk { +[2734] common\core.ahk { Line | Function 0004 | createEvent(lpEventAttributes, bManualReset, bInitialState, lpName) @@ -39166,24 +40542,24 @@ Line | Function 0034 | closeHandle(hObject) } -[2639] common\createlib.ahk { +[2735] common\createlib.ahk { Line | Function } -[2640] common\error.ahk { +[2736] common\error.ahk { Line | Function 0005 | exception(msg,r,depth,output) 0034 | getCallStack() } -[2641] common\jit.ahk { +[2737] common\jit.ahk { Line | Function } -[2642] common\malloc.ahk { +[2738] common\malloc.ahk { Line | Function 0004 | globalAlloc(dwBytes) @@ -39194,7 +40570,7 @@ Line | Function 0068 | rawPut(raw32, raw64) } -[2643] common\misc.ahk { +[2739] common\misc.ahk { Line | Function 0006 | getEnvironmentVersion() @@ -39203,7 +40579,7 @@ Line | Function 0072 | verifyCallback(callbackFunction) } -[2644] common\struct.ahk { +[2740] common\struct.ahk { Line | Function 0069 | get(memberName) @@ -39212,7 +40588,7 @@ Line | Function 0105 | cleanUp() } -[2645] common\type.ahk { +[2741] common\type.ahk { Line | Function 0017 | outOfBounds(val) @@ -39228,7 +40604,7 @@ Line | Function 0281 | GetSystemTime(ByRef st) } -[2646] common\typeArr.ahk { +[2742] common\typeArr.ahk { Line | Function 0020 | push(val) @@ -39244,13 +40620,13 @@ Line | Function 0073 | next(byref k,byref v) } -[2647] common\ui.ahk { +[2743] common\ui.ahk { Line | Function 0007 | nLogicalCores() } -[2648] pool\poolbase.ahk { +[2744] pool\poolbase.ahk { Line | Function 0024 | getPointer() @@ -39264,7 +40640,7 @@ Line | Function 0318 | isTimerSet() } -[2649] pool\poolCallback.ahk { +[2745] pool\poolCallback.ahk { Line | Function 0023 | getEntryBin() @@ -39283,7 +40659,7 @@ Line | Function 0315 | messageUnreg() } -[2650] pool\poolcore.ahk { +[2746] pool\poolcore.ahk { Line | Function 0077 | closeThreadpoolWait(pwa) @@ -39321,12 +40697,12 @@ Line | Function 0771 | setEventWhenCallbackReturns(pci, evt) } -[2651] pool\pool_includes.ahk { +[2747] pool\pool_includes.ahk { Line | Function } -[2652] threadPool\threadPool.ahk { +[2748] threadPool\threadPool.ahk { Line | Function 0020 | initThreadPool(min, max, pfng) @@ -39343,7 +40719,7 @@ Line | Function 0198 | cleanUp() } -[2653] threads\coreThreads.ahk { +[2749] threads\coreThreads.ahk { Line | Function 0030 | resumeThread(hThread) @@ -39351,18 +40727,18 @@ Line | Function 0109 | waitOnAddress(Address,CompareAddress,AddressSize,dwMilliseconds) } -[2654] threads\threads_includes.ahk { +[2750] threads\threads_includes.ahk { Line | Function } -[2655] threadHandler\ccore.ahk { +[2751] threadHandler\ccore.ahk { Line | Function 0003 | taskCallbackBin() } -[2656] threadHandler\threadHandler.ahk { +[2752] threadHandler\threadHandler.ahk { Line | Function 0014 | restartAllTasks() @@ -39385,12 +40761,12 @@ Line | Function 0328 | __Delete() } -[2657] xdllcall\xDllCall.ahk { +[2753] xdllcall\xDllCall.ahk { Line | Function } -[2658] lib\xcall.ahk { +[2754] lib\xcall.ahk { Line | Function 0010 | checkIfParamsNeedsToBeSaved() @@ -39398,27 +40774,27 @@ Line | Function 0088 | callbackRouter( callbackNumber, task ) } -[2659] lib\xlib.ahk { +[2755] lib\xlib.ahk { Line | Function } -[2660] MSOffice\Office_2010_Constants_(class).ahk { +[2756] MSOffice\Office_2010_Constants_(class).ahk { Line | Function } -[2661] MSOffice\Office_2010_Constants_(global).ahk { +[2757] MSOffice\Office_2010_Constants_(global).ahk { Line | Function } -[2662] MSOffice\Office_2010_Constants_(super_global).ahk { +[2758] MSOffice\Office_2010_Constants_(super_global).ahk { Line | Function } -[2663] DocX\DahkX2.ahk { +[2759] DocX\DahkX2.ahk { Line | Function diff --git a/FindAllNonEnglishComments.ahk b/FindAllNonEnglishComments.ahk new file mode 100644 index 00000000..b4cc44fb --- /dev/null +++ b/FindAllNonEnglishComments.ahk @@ -0,0 +1,336 @@ +#NoEnv +;#NoTrayIcon +SetBatchLines, -1 +SetControlDelay, -1 +SetKeyDelay, -1 +FileEncoding, UTF-8 + +;----------------------------------------------------------------------------------------------------------------------------------------- +; some variables +;----------------------------------------------------------------------------------------------------------------------------------------- +global fileIdx := 0 ; library counter +global files := [] ; files array +global baseDir := A_ScriptDir +global RefFileNum +global RefBaseDir +FileRead, directories, % A_ScriptDir "\directories" +functions := Object() +Dirs := StrSplit(directories, "`n", "`r") + FileDelete, % A_ScriptDir "\trigramStatistic.txt" + +;----------------------------------------------------------------------------------------------------------------------------------------- +; scan for files +;----------------------------------------------------------------------------------------------------------------------------------------- + + +;clines:= lib.MaxIndex() + + +Gui, Ref: New, -DPIScale +HWNDhRefGui ; +AlwaysOnTop +Gui, Ref: Color, cFFDFAE +Gui, Ref: Font, s8 bold +Gui, Ref: Add, Text , % "xm ym" , % "examining file (" +Gui, Ref: Font, s8 normal +Gui, Ref: Add, Text , % "x+2 vRefFileNum" , % "00000): " +Gui, Ref: Font, s6 normal +Gui, Ref: Add, Text , % "xm y+0 w1000 vRefBaseDir" , % "---" +Gui, Ref: Font, s8 bold +Gui, Ref: Add, Text , % "xm y+0" , % "file(s) containing no english comments: " +Gui, Ref: Font, s8 normal +;Gui, Ref: Add, Text , % "x+10" , % "*" AhkFileName "* (.ahk) [" AhkFileSizeByte " bytes / " AhkFileSizekB " kb]" +Gui, Ref: Add, Listview , % "xm y+10 w1050 r30 BackgroundDFBF8E vREFLV1 HwndhRefLV1 +LV0x00400000 gRefListview Checked ", % "Count|Path|comments language" ;ReadOnly -HDR + +;For i, val in found +; LV_Add("", val.lib, val.enc, val.b, val.kb, (AhkFileSizeByte>val.b ? (AhkFileSizeByte-val.b) : (val.b-AhkFileSizeByte)), (AhkFileSizekb>val.kb ? (AhkFileSizekb-val.kb) : (val.kb-AhkFileSizekb))) + +Gui, Ref: Show , AutoSize, % "Translate comments to english" +LV_ModifyCol(2, 800) + +scripts:= GetFiles(Dirs) + + +return + +RefListview: +return + +RefGuiEscape: +RefGuiClose: +ExitApp + +listfunc(file) { + + global rl + + rl:="" + rf:="" + FileRead script, % A_ScriptDir "\" file + + identifierRE = ][#@$?\w ; Legal characters for AHK identifiers (variables and function names) + parameterListRE = %identifierRE%,=".\s- ; Legal characters in function definition parameter list + lineCommentRE = \s*(?:\s;.*)?$ ; Legal line comment regex + + functionNb := 1 + labelNb := 1 + hotkeyNb := 1 + hotstringNb := 1 + state = DEFAULT + + Loop Parse, script, `n, `r + { + line := A_LoopField + If RegExMatch(line, "^\s*(?:;.*)?$") ; Empty line or line with comment, skip it + Continue + + Else If InStr(state, "COMMENT"){ ; In a block comment + If RegExMatch(line, "S)^\s*\*/") ; End of block comment + state:= StrReplace(state, COMMENT) ; Remove state + ; "*/ function_def()" is legal but quite perverse... I won't support this + + }Else If InStr(state,"CONTSECTION") { ; In a continuation section + If RegExMatch(line, "^\s*\)") ; End of continuation section + state = DEFAULT + + }Else If RegExMatch(line, "^\s*/\*") ; Start of block comment, to skip + state = %state% COMMENT + + Else If RegExMatch(line, "^\s*\(") ; Start of continuation section, to skip + state = CONTSECTION + + Else If RegExMatch(line, "i)^\s*(?P[^ \s:]+?(?:\s+&\s+[^\s:]+?)?(?:\s+up)?)::", hotkey){ ;Hotkey + hotkeyList#%hotkeyNb%@name := hotkeyName + hotkeyList#%hotkeyNb%@line := A_Index + hotkeyNb++ + state = DEFAULT + + }Else If RegExMatch(line, "i)^\s*(?P:(?:\*0?|\?0?|B0?|C[01]?|K(?:-1|\d+)|O0?|P\d+|R0?|S[IPE]|Z0?)*:.+?)::", hotstring){ ;HotString + hotstringList#%hotstringNb%@name := hotstringName + hotstringList#%hotstringNb%@line := A_Index + hotstringNb++ + state = DEFAULT + + }Else If RegExMatch(line, "^\s*(?P[^\s,```%]+):" . lineCommentRE, label){ ; Label are very tolerant... + labelList#%labelNb%@name := labelName + labelList#%labelNb%@line := A_Index + labelNb++ + state = DEFAULT + + }Else If InStr(state,"DEFAULT"){ + If RegExMatch(line, "^\s*(?P[" . identifierRE . "]+)" ; Found a function call or a function definition + . "\((?P[" . parameterListRE . "]*)" + . "(?P\)\s*(?P\{)?)?" + . lineCommentRE, function){ + state = FUNCTION + functionList#%functionNb%@name := functionName + functionList#%functionNb%@parameters := functionParameters + functionList#%functionNb%@line := A_Index + If functionClosingParen{ ; With closed parameter list + If functionOpeningBrace { ; Found! This is a function definition + functionNb++ ; Validate the finding + state = DEFAULT + }Else ; List of parameters is closed, just search for opening brace + state = %state% TOBRACE + }Else ; With open parameter list + state = %state% INPARAMS ; Search for closing parenthesis + } + + }Else If InStr(state,"FUNCTION"){ + If InStr(state, "INPARAMS") { ; After a function definition or call + ; Looking for ending parenthesis + If (RegExMatch(line, "^\s*(?P,[" . parameterListRE . "]+)" + . "(?P\)\s*(?P\{)?)?" . lineCommentRE, function) > 0){ + functionList#%functionNb%@parameters := functionList#%functionNb%@parameters . functionParameters + If functionClosingParen { ; List of parameters is closed + If (functionOpeningBrace != ""){ ; Found! This is a function definition + functionNb++ ; Validate the finding + state = DEFAULT + }Else ; Just search for opening brace + StringReplace state, state, INPARAMS, TOBRACE ; Remove state + } ; Otherwise, we continue + }Else + ; Incorrect syntax for a parameter list, it was probably just a function call + ;??? does this ever happen??? + state = DEFAULT + }Else If InStr(state,"TOBRACE"){ ; Looking for opening brace. There can be only empty lines and comments, which are already processed + If (RegExMatch(line, "^\s*(?:\{)" . lineCommentRE) > 0){ ; Found! This is a function definition + functionNb++ ; Validate the finding + state = DEFAULT + }Else ; Incorrect syntax between closing parenthesis and opening brace, + state = DEFAULT ; it was probably just a function call + } + } + } + + functionNb-- + rf = + Loop %functionNb%{ + pl := RegExReplace(functionList#%A_Index%@parameters, "\s\s*", " ") ; Replace multiple blank chars with simple space + linec:= functionList#%A_Index%@line + linec:= SubStr("00000" . linec, -3) + str:= functionList#%A_Index%@name + If Not Instr(str, "if`(") + rf := rf . "" . linec . "`t|`t" . str . "(" . pl . ")`n" + } + + labelNb-- + rl = + Loop %labelNb% { + linec.= labelList#%A_Index%@line + linec:= SubStr("00000" . linec, -3) + rl := rl . "" . linec . "`t|`t" . labelList#%A_Index%@name . "`n" + + } + hotkeyNb-- + rk = + Loop %hotkeyNb% + rk :=rk . "" . hotkeyList#%A_Index%@line . "`t|`t" . hotkeyList#%A_Index%@name . "`n" + + hotstringNb-- + rs = + Loop %hotstringNb% + rs := rs . "" . hotstringList#%A_Index%@line . "`t|`t" . hotstringList#%A_Index%@name . "`n" + + return rf + +} + +GetFiles(Dirs) { + + mdline:="" + + Loop, % Dirs.MaxIndex() + { + dir:= baseDir "\" Dirs[A_Index] + Loop, % dir "\*.ahk" + { + If Instr(A_LoopFileName, "example") + continue + fileIdx ++ + GuiControl, Ref: , refFileNum, % SubStr("000000" fileIdx, -5) "): " + GuiControl, Ref: , refBaseDir, % A_LoopFileFullPath + FileGetSize , fsize , % A_ScriptDir . "\" . Directory . "\" A_LoopFileName + fsize:= Round(fsize/1024, 2) + FileGetTime , ftime , % A_ScriptDir . "\" . Directory . "\" A_LoopFileName, M + FormatTime, ftime, % ftime, yyyy-MM-dd + files.Push(A_LoopFileFullPath) + FileRead, fileStr, % A_LoopFileFullPath + lng:= GetComments(fileStr, A_LoopFileFullPath) + If !Instr(lng, "english") + LV_Add("", fileIdx, StrReplace(A_LoopFileFullPath, BaseDir), lng) + ;IdentifyCommentLanguages(str) + } + } + + return fileIdx +} +/* +*/ +GetComments(fileStr, fname) { + + startpos := 1 + comments:= Object() + trigrams:= Object() + static AllTrigrams:= Object() + q:= Chr(0x22) + ;~ pos1:= RegExMatch(fileStr, "mO)(\/\*.*?\*\/)", block) + ;~ pos2:= RegExMatch(fileStr, "mO)(\s*\;.*?[\n\r])*", InLine) + + ;~ MsgBox, % "lenght of file: " StrLen(fileStr) "`nmatchcount: " pos1 " - " block.Value(1) "`nmatchcount: " pos2 " - " InLine.Count() + + While, pos:= RegExMatch(fileStr, "(\/\*.*?\*\/)|(\s*;.*?[\n\r])", comment, startpos) + { + ;RegExReplace(comment, "\/", "", count) + ;comment:= RegExReplace(comment, "[^A-Za-z\p{L}\s]") + ;comment:= RegExReplace(comment, "[A-Za-z\s]+") + comments.Push({"start":pos, "text":comment}) + textall .= StrReplace(comment, "`n", " ") " " + startpos:= pos + StrLen(comment) + } + + textall := RegExReplace(textall, "\s+", " ") + textall := RegExReplace(textall, "\/\*", "") + textall := RegExReplace(textall, "\*\/", "") + textall := RegExReplace(textall, ";", "") + ;MsgBox, % textall + word := StrSplit(textall, " ") + maxtrigrams:= 0 + Loop, % word.MaxIndex() + { + ; don't count links! + RegExReplace(word[A_Index], "\/", count) + If count > 1 + continue + ;tmpWord := RegExReplace(word[A_Index], "[^A-Za-z\p{L}]") + tmpWord := RegExReplace(word[A_Index], "[^\p{L}]") + thisWord := Format("{:L}", tmpWord) ; lower the string case + trigramLength := Floor(StrLen(thisWord)/3) + maxTrigrams += trigramLength + Loop, % trigramLength + { + position:= (A_Index-1)*3 + 1 + trigram:= SubStr(thisWord, position, 3) + If trigrams.Haskey(trigram) + trigrams[trigram] += 1 + else + trigrams[trigram] := 1 + } + } + + c:= 0 + For trigram, trigramcount in trigrams + { + trigrams[trigram] := (trigramcount / maxtrigrams) * 100 + t.= ((trigramcount / maxtrigrams) * 100) ";" trigram "`n" + c += ((trigramcount / maxtrigrams) * 100) + } + + Sort, t, N R + Loop, Parse, t, `n, `r + { + trg:= StrSplit(A_LoopField, ";") + If (trg.2 = "the") && (A_Index <= 20) { + lng:= "english" + break + } + else if ((trg.2 in "for","val","add","ing","fun","for","set","app","use")) && (A_Index <=30) + { + english ++ + If (english > 3) { + lng:= "english" + break + } + } + + } + If (StrLen(lng) = 0) && (c > 0) ;, "english") + FileAppend, % fname "`n" t c "`n", % A_ScriptDir "\trigramStatistic.txt" + + ;Run, % "notepad.exe " q A_ScriptDir "\trigramStatistic.txt" q + ;MsgBox, % "Overall length of text is: " StrLen(textall) "`ncomments containing: " word.MaxIndex() " words`ntotal Trigrams found: " maxTrigrams "`nunique trigrams: " trigrams.Count() + return lng +} + +Contains(haystack, needle) { + ; If haystack is not an object, consider it a string + if(!IsObject(haystack)) + { + result := InStr(haystack, needle) +; OutputDebug Contains: returning result %i% + return + } + else + { + for i, v in haystack + { + if(v = needle) + { +; OutputDebug Contains: returning result %i% + return i + } + } +; OutputDebug Contains: returning false + return false + } +} + + diff --git a/ListallAHKFunctionsindirectory.ahk b/ListallAHKFunctionsindirectory.ahk index 4618ebc4..9ff9616d 100644 --- a/ListallAHKFunctionsindirectory.ahk +++ b/ListallAHKFunctionsindirectory.ahk @@ -5,14 +5,13 @@ SetControlDelay, -1 SetKeyDelay, -1 FileEncoding, UTF-8 - ;----------------------------------------------------------------------------------------------------------------------------------------- ; some variables ;----------------------------------------------------------------------------------------------------------------------------------------- global fileIdx:=0, lib:= [] -Directorys = -(LTrim +Directorys = +(LTrim lib-a_to_h lib-a_to_h\core_audio_interfaces lib-i_to_z @@ -79,7 +78,8 @@ more libs\DirectX\Lib more libs\DirectX\Lib\TexSwap more libs\DoDragAndDrop more libs\DX9-Overlay-API\include\ahk -more libs\more libs\Edit\_Functions +more libs\exLibs +more libs\Edit\_Functions more libs\ImportTypeLib more libs\ImportTypeLib\Lib more libs\MCode-Ex\src @@ -96,10 +96,14 @@ more libs\RamDisk & CmdReturn more libs\SendInput more libs\Splash-Gui more libs\TAB\_Functions +more libs\Various1\lib more libs\windows10DesktopManager more libs\windows10DesktopManager\injection dll more libs\Windy more libs\WinLogon +more libs\Wy\lib +more libs\Wy\lib\GdipC +more libs\Wy\lib\Wy more libs\xlib more libs\xlib\xinclude\common more libs\xlib\xinclude\pool @@ -130,7 +134,7 @@ ReadMeMd .= "| :--- | :--------------------------------- | :-------------------- ;ReadMeMd:= RegExReplace(ReadMeMd, "M)Edition\:\s\d\d\.\d\d.\d\d\d\d", "Edition: " A_DD "." A_MM "." A_YYYY) ;----------------------------------------------------------------------------------------------------------------------------------------- -; scan for files +; scan for files ;----------------------------------------------------------------------------------------------------------------------------------------- Loop, % Dir.MaxIndex() ; list all files in all directory's { @@ -180,14 +184,14 @@ MakeTableLess_readmeMd(file_readmeMd, byref tableStartLine, byref libMaxOld) { else newMd.= A_LoopField "`n" } - + return newMd } listfunc(file) { global rl - + rl:="" rf:="" FileRead script, % A_ScriptDir "\" file @@ -321,9 +325,9 @@ listfunc(file) { } list_files(Directory) { - + mdline:="" - + Loop , Files, % A_ScriptDir . "\" . Directory . "\*.ahk" { If Instr(A_LoopFileName, "example") @@ -331,16 +335,16 @@ list_files(Directory) { fileIdx ++ MouseGetPos, mx, my FileGetSize , fsize , % A_ScriptDir . "\" . Directory . "\" A_LoopFileName - fsize:= Round(fsize/1024, 2) + fsize:= Round(fsize/1024, 2) FileGetTime , ftime , % A_ScriptDir . "\" . Directory . "\" A_LoopFileName, M FormatTime, ftime, % ftime, yyyy-MM-dd mdline .= "| **" . SubStr("0000" . fileIdx, -3) . "** | [" . A_LoopFileName . "](" . Directory . "\" . StrReplace(A_LoopFileName," ", "%20") . ")
" fsize "kb - " ftime " | " Directory . "|`n" lib.Push(Directory "\" A_LoopFileName) ToolTip, found files: %files%, %mx%, %my%, 6 } - + ;FileAppend, % "| **" . SubStr("0000" . fileIdx, -3) . "** | [" . A_LoopFileName . "](" . Directory . "\" . StrReplace(A_LoopFileName," ", "%20") . ") | " Directory . " | `n", % A_ScriptDir "\FilesTable.md" - + return mdline } diff --git a/README.md b/README.md index f1f4c32c..e9e28185 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,14 @@ ![lbc-logo](https://raw.githubusercontent.com/Ixiko/AHK-libs-and-classes-collection/master/lbc.png) -#### This is currently a collection of around 2600 Autohotkey libraries and classes. +#### This is currently a collection of around 2750 Autohotkey libraries and classes. ------ -#### history of updates +#### HISTORY OF UPDATES +* **[04.01.2019]**(2759) + * **+96** libraries, some updates, more examples and documentations (***a total change of 321 files***) * **[22.11.2019]**(2663) * **+27** libraries, some updates, examples, documentations, dll’s (***a total change of 226 files***) @@ -98,2668 +100,2765 @@ + | **Nr** | **Library** | **Directory** | | :--- | :--------------------------------- | :------------------------------------------- | -| **0001** | [A.ahk](lib-a_to_h/A.ahk)
17.42kb - 2018-06-02 | lib-a_to_h| +| **0001** | [A.ahk](lib-a_to_h/A.ahk)
17.33kb - 2019-12-04 | lib-a_to_h| | **0002** | [ACC.ahk](lib-a_to_h/ACC.ahk)
7.79kb - 2018-06-02 | lib-a_to_h| -| **0003** | [AccV2.ahk](lib-a_to_h/AccV2.ahk)
29.10kb - 2018-06-02 | lib-a_to_h| -| **0004** | [ACC_more.ahk](lib-a_to_h/ACC_more.ahk)
9.39kb - 2018-06-02 | lib-a_to_h| -| **0005** | [ActiveX.ahk](lib-a_to_h/ActiveX.ahk)
21.53kb - 2018-06-01 | lib-a_to_h| -| **0006** | [AddCommas.ahk](lib-a_to_h/AddCommas.ahk)
1.68kb - 2011-04-25 | lib-a_to_h| -| **0007** | [addFile.ahk](lib-a_to_h/addFile.ahk)
0.27kb - 2018-06-03 | lib-a_to_h| -| **0008** | [AddFileIcon.ahk](lib-a_to_h/AddFileIcon.ahk)
3.98kb - 2012-05-17 | lib-a_to_h| -| **0009** | [AddGraphicButton.ahk](lib-a_to_h/AddGraphicButton.ahk)
3.73kb - 2018-06-02 | lib-a_to_h| -| **0010** | [addScript.ahk](lib-a_to_h/addScript.ahk)
0.28kb - 2018-06-02 | lib-a_to_h| -| **0011** | [AddTooltip.ahk](lib-a_to_h/AddTooltip.ahk)
10.67kb - 2017-04-04 | lib-a_to_h| -| **0012** | [AdjustPrivilege.ahk](lib-a_to_h/AdjustPrivilege.ahk)
2.15kb - 2018-08-16 | lib-a_to_h| -| **0013** | [AdjustTokenPrivileges.ahk](lib-a_to_h/AdjustTokenPrivileges.ahk)
3.61kb - 2018-08-16 | lib-a_to_h| -| **0014** | [Adler32.ahk](lib-a_to_h/Adler32.ahk)
0.19kb - 2018-03-08 | lib-a_to_h| -| **0015** | [ADO.ahk](lib-a_to_h/ADO.ahk)
1.13kb - 2018-06-02 | lib-a_to_h| -| **0016** | [adosql.ahk](lib-a_to_h/adosql.ahk)
7.27kb - 2018-06-02 | lib-a_to_h| -| **0017** | [ADO_ACCESS.ahk](lib-a_to_h/ADO_ACCESS.ahk)
3.09kb - 2016-09-15 | lib-a_to_h| -| **0018** | [Aero_Lib.ahk](lib-a_to_h/Aero_Lib.ahk)
28.78kb - 2018-06-02 | lib-a_to_h| -| **0019** | [Affinity.ahk](lib-a_to_h/Affinity.ahk)
4.98kb - 2018-06-02 | lib-a_to_h| -| **0020** | [agl.ahk](lib-a_to_h/agl.ahk)
275.67kb - 2019-10-11 | lib-a_to_h| -| **0021** | [AHK-LUA-API.ahk](lib-a_to_h/AHK-LUA-API.ahk)
3.98kb - 2019-05-11 | lib-a_to_h| -| **0022** | [AHKA.ahk](lib-a_to_h/AHKA.ahk)
23.25kb - 2018-06-02 | lib-a_to_h| -| **0023** | [AHKColorDialog.ahk](lib-a_to_h/AHKColorDialog.ahk)
14.73kb - 2019-11-09 | lib-a_to_h| -| **0024** | [AhkDllFunctions.ahk](lib-a_to_h/AhkDllFunctions.ahk)
2.05kb - 2016-09-15 | lib-a_to_h| -| **0025** | [AhkDllObject.ahk](lib-a_to_h/AhkDllObject.ahk)
1.09kb - 2018-06-02 | lib-a_to_h| -| **0026** | [AhkDllThread (2).ahk](lib-a_to_h/AhkDllThread%20(2).ahk)
5.01kb - 2014-07-06 | lib-a_to_h| -| **0027** | [AhkDllThread.ahk](lib-a_to_h/AhkDllThread.ahk)
4.98kb - 2018-06-02 | lib-a_to_h| -| **0028** | [ahkExec.ahk](lib-a_to_h/ahkExec.ahk)
0.24kb - 2018-06-02 | lib-a_to_h| -| **0029** | [ahkExecuteLine.ahk](lib-a_to_h/ahkExecuteLine.ahk)
0.32kb - 2018-06-03 | lib-a_to_h| -| **0030** | [AhkExported.ahk](lib-a_to_h/AhkExported.ahk)
0.73kb - 2018-06-02 | lib-a_to_h| -| **0031** | [AHKForumMemoryFunctions.ahk](lib-a_to_h/AHKForumMemoryFunctions.ahk)
3.34kb - 2018-06-02 | lib-a_to_h| -| **0032** | [AHKGroupEX.ahk](lib-a_to_h/AHKGroupEX.ahk)
1.13kb - 2019-05-26 | lib-a_to_h| -| **0033** | [AHKHID.ahk](lib-a_to_h/AHKHID.ahk)
27.55kb - 2011-02-10 | lib-a_to_h| -| **0034** | [ahkhook.ahk](lib-a_to_h/ahkhook.ahk)
15.72kb - 2018-06-02 | lib-a_to_h| -| **0035** | [AHKhttp.ahk](lib-a_to_h/AHKhttp.ahk)
8.64kb - 2017-05-28 | lib-a_to_h| -| **0036** | [AhkMini.ahk](lib-a_to_h/AhkMini.ahk)
0.12kb - 2018-06-02 | lib-a_to_h| -| **0037** | [ahkobj2comarray.ahk](lib-a_to_h/ahkobj2comarray.ahk)
0.86kb - 2011-11-06 | lib-a_to_h| -| **0038** | [AhkSelf.ahk](lib-a_to_h/AhkSelf.ahk)
0.80kb - 2018-06-02 | lib-a_to_h| -| **0039** | [AHKsock.ahk](lib-a_to_h/AHKsock.ahk)
69.45kb - 2018-06-02 | lib-a_to_h| -| **0040** | [ahkstructlib2.ahk](lib-a_to_h/ahkstructlib2.ahk)
8.98kb - 2018-06-02 | lib-a_to_h| -| **0041** | [ahkstructlib2_debug.ahk](lib-a_to_h/ahkstructlib2_debug.ahk)
2.14kb - 2011-02-10 | lib-a_to_h| -| **0042** | [AhkThread.ahk](lib-a_to_h/AhkThread.ahk)
1.59kb - 2018-06-02 | lib-a_to_h| -| **0043** | [AHKType.ahk](lib-a_to_h/AHKType.ahk)
1.54kb - 2018-06-02 | lib-a_to_h| -| **0044** | [Align.ahk](lib-a_to_h/Align.ahk)
4.60kb - 2018-06-02 | lib-a_to_h| -| **0045** | [AlphaSortEx.ahk](lib-a_to_h/AlphaSortEx.ahk)
0.65kb - 2019-10-29 | lib-a_to_h| -| **0046** | [AlreadyRunning.ahk](lib-a_to_h/AlreadyRunning.ahk)
3.06kb - 2011-04-25 | lib-a_to_h| -| **0047** | [AltTab_window_list.ahk](lib-a_to_h/AltTab_window_list.ahk)
1.44kb - 2018-05-05 | lib-a_to_h| -| **0048** | [Anchor.ahk](lib-a_to_h/Anchor.ahk)
3.25kb - 2018-06-02 | lib-a_to_h| -| **0049** | [AnchorL.ahk](lib-a_to_h/AnchorL.ahk)
3.37kb - 2018-06-02 | lib-a_to_h| -| **0050** | [AniGif.ahk](lib-a_to_h/AniGif.ahk)
5.22kb - 2018-06-02 | lib-a_to_h| -| **0051** | [Animated_Controls.ahk](lib-a_to_h/Animated_Controls.ahk)
10.23kb - 2018-06-02 | lib-a_to_h| -| **0052** | [API_Draw.ahk](lib-a_to_h/API_Draw.ahk)
14.82kb - 2018-06-02 | lib-a_to_h| -| **0053** | [API_GetWindowInfo.ahk](lib-a_to_h/API_GetWindowInfo.ahk)
2.87kb - 2018-06-02 | lib-a_to_h| -| **0054** | [API_Menu.ahk](lib-a_to_h/API_Menu.ahk)
8.51kb - 2013-01-07 | lib-a_to_h| -| **0055** | [AppBar.ahk](lib-a_to_h/AppBar.ahk)
11.51kb - 2018-06-02 | lib-a_to_h| -| **0056** | [ApplicationFramework.ahk](lib-a_to_h/ApplicationFramework.ahk)
7.06kb - 2018-06-02 | lib-a_to_h| -| **0057** | [ArchLogger.ahk](lib-a_to_h/ArchLogger.ahk)
0.59kb - 2018-06-02 | lib-a_to_h| -| **0058** | [Arduino.ahk](lib-a_to_h/Arduino.ahk)
1.39kb - 2012-04-29 | lib-a_to_h| -| **0059** | [argp.ahk](lib-a_to_h/argp.ahk)
36.66kb - 2018-06-02 | lib-a_to_h| -| **0060** | [Args.ahk](lib-a_to_h/Args.ahk)
7.00kb - 2012-02-26 | lib-a_to_h| -| **0061** | [Array Extensions.ahk](lib-a_to_h/Array%20Extensions.ahk)
11.05kb - 2018-06-02 | lib-a_to_h| -| **0062** | [Array.ahk](lib-a_to_h/Array.ahk)
2.98kb - 2018-06-02 | lib-a_to_h| -| **0063** | [ArrayObjToBitmap.ahk](lib-a_to_h/ArrayObjToBitmap.ahk)
1.61kb - 2018-03-08 | lib-a_to_h| -| **0064** | [array_.ahk](lib-a_to_h/array_.ahk)
10.29kb - 2018-05-10 | lib-a_to_h| -| **0065** | [Array_data.ahk](lib-a_to_h/Array_data.ahk)
5.48kb - 2019-05-04 | lib-a_to_h| -| **0066** | [Array_Gui_ext.ahk](lib-a_to_h/Array_Gui_ext.ahk)
5.56kb - 2018-12-21 | lib-a_to_h| -| **0067** | [AssociatedProgram.ahk](lib-a_to_h/AssociatedProgram.ahk)
3.73kb - 2018-06-02 | lib-a_to_h| -| **0068** | [AsyncHttp.ahk](lib-a_to_h/AsyncHttp.ahk)
1.95kb - 2018-06-02 | lib-a_to_h| -| **0069** | [AtachGui_to_other_window.ahk](lib-a_to_h/AtachGui_to_other_window.ahk)
3.85kb - 2018-06-02 | lib-a_to_h| -| **0070** | [ATan2.ahk](lib-a_to_h/ATan2.ahk)
0.24kb - 2018-03-08 | lib-a_to_h| -| **0071** | [Atl.ahk](lib-a_to_h/Atl.ahk)
1.35kb - 2018-06-02 | lib-a_to_h| -| **0072** | [Attach.ahk](lib-a_to_h/Attach.ahk)
9.41kb - 2018-06-02 | lib-a_to_h| -| **0073** | [AttachToolWindow.ahk](lib-a_to_h/AttachToolWindow.ahk)
1.97kb - 2018-06-02 | lib-a_to_h| -| **0074** | [Auth.ahk](lib-a_to_h/Auth.ahk)
13.95kb - 2018-06-02 | lib-a_to_h| -| **0075** | [Autocomplete.ahk](lib-a_to_h/Autocomplete.ahk)
5.94kb - 2018-06-02 | lib-a_to_h| -| **0076** | [AutoReload.ahk](lib-a_to_h/AutoReload.ahk)
0.33kb - 2019-02-08 | lib-a_to_h| -| **0077** | [Autoupdate.ahk](lib-a_to_h/Autoupdate.ahk)
0.67kb - 2018-06-02 | lib-a_to_h| -| **0078** | [AutoUpdateAHKv1.ahk](lib-a_to_h/AutoUpdateAHKv1.ahk)
1.36kb - 2018-08-31 | lib-a_to_h| -| **0079** | [AutoUpdateAHKv2a.ahk](lib-a_to_h/AutoUpdateAHKv2a.ahk)
2.11kb - 2018-08-31 | lib-a_to_h| -| **0080** | [AutoXYWH.ahk](lib-a_to_h/AutoXYWH.ahk)
2.13kb - 2018-06-02 | lib-a_to_h| -| **0081** | [AuxLib.ahk](lib-a_to_h/AuxLib.ahk)
7.21kb - 2018-09-17 | lib-a_to_h| -| **0082** | [Average.ahk](lib-a_to_h/Average.ahk)
0.38kb - 2018-03-08 | lib-a_to_h| -| **0083** | [AveragingFunctions.ahk](lib-a_to_h/AveragingFunctions.ahk)
1.50kb - 2018-06-02 | lib-a_to_h| -| **0084** | [AVICAP.ahk](lib-a_to_h/AVICAP.ahk)
1.20kb - 2018-06-02 | lib-a_to_h| -| **0085** | [AxC.ahk](lib-a_to_h/AxC.ahk)
13.34kb - 2018-07-27 | lib-a_to_h| -| **0086** | [A_caret.ahk](lib-a_to_h/A_caret.ahk)
0.97kb - 2017-04-07 | lib-a_to_h| -| **0087** | [BalloonTip.ahk](lib-a_to_h/BalloonTip.ahk)
8.72kb - 2018-06-02 | lib-a_to_h| -| **0088** | [Bar.ahk](lib-a_to_h/Bar.ahk)
18.46kb - 2019-10-28 | lib-a_to_h| -| **0089** | [BARCODER.ahk](lib-a_to_h/BARCODER.ahk)
117.60kb - 2018-06-02 | lib-a_to_h| -| **0090** | [Base.ahk](lib-a_to_h/Base.ahk)
6.96kb - 2018-06-02 | lib-a_to_h| -| **0091** | [Base32.ahk](lib-a_to_h/Base32.ahk)
1.42kb - 2018-03-08 | lib-a_to_h| -| **0092** | [Base64.ahk](lib-a_to_h/Base64.ahk)
6.46kb - 2018-03-08 | lib-a_to_h| -| **0093** | [baseConvert.ahk](lib-a_to_h/baseConvert.ahk)
11.93kb - 2018-06-02 | lib-a_to_h| -| **0094** | [Between.ahk](lib-a_to_h/Between.ahk)
0.55kb - 2018-03-08 | lib-a_to_h| -| **0095** | [Bin.ahk](lib-a_to_h/Bin.ahk)
12.25kb - 2018-06-02 | lib-a_to_h| -| **0096** | [Bin2Dec.ahk](lib-a_to_h/Bin2Dec.ahk)
0.24kb - 2018-06-02 | lib-a_to_h| -| **0097** | [BinArr.ahk](lib-a_to_h/BinArr.ahk)
1.26kb - 2018-06-02 | lib-a_to_h| -| **0098** | [BinaryEncodingDecoding.ahk](lib-a_to_h/BinaryEncodingDecoding.ahk)
3.07kb - 2018-06-02 | lib-a_to_h| -| **0099** | [BinGet.ahk](lib-a_to_h/BinGet.ahk)
5.73kb - 2018-06-02 | lib-a_to_h| -| **0100** | [bink.ahk](lib-a_to_h/bink.ahk)
6.71kb - 2018-06-02 | lib-a_to_h| -| **0101** | [BinReadWrite.ahk](lib-a_to_h/BinReadWrite.ahk)
7.43kb - 2018-06-02 | lib-a_to_h| -| **0102** | [BinRun.ahk](lib-a_to_h/BinRun.ahk)
11.89kb - 2018-06-02 | lib-a_to_h| -| **0103** | [binSearch.ahk](lib-a_to_h/binSearch.ahk)
0.20kb - 2018-10-30 | lib-a_to_h| -| **0104** | [BinToHex.ahk](lib-a_to_h/BinToHex.ahk)
0.52kb - 2018-06-02 | lib-a_to_h| -| **0105** | [Bitmap.ahk](lib-a_to_h/Bitmap.ahk)
11.67kb - 2018-03-08 | lib-a_to_h| -| **0106** | [BitmapGradient.ahk](lib-a_to_h/BitmapGradient.ahk)
4.42kb - 2012-08-09 | lib-a_to_h| -| **0107** | [BlockSysMenu.ahk](lib-a_to_h/BlockSysMenu.ahk)
0.45kb - 2015-05-14 | lib-a_to_h| -| **0108** | [bmpread.ahk](lib-a_to_h/bmpread.ahk)
4.76kb - 2017-09-04 | lib-a_to_h| -| **0109** | [borderlessMode.ahk](lib-a_to_h/borderlessMode.ahk)
0.21kb - 2018-10-30 | lib-a_to_h| -| **0110** | [borderlessMove.ahk](lib-a_to_h/borderlessMove.ahk)
0.75kb - 2018-10-30 | lib-a_to_h| -| **0111** | [BoxMuller.ahk](lib-a_to_h/BoxMuller.ahk)
0.31kb - 2019-05-26 | lib-a_to_h| -| **0112** | [BRA.ahk](lib-a_to_h/BRA.ahk)
15.99kb - 2018-06-02 | lib-a_to_h| -| **0113** | [BrowserEmulation.ahk](lib-a_to_h/BrowserEmulation.ahk)
2.43kb - 2018-06-02 | lib-a_to_h| -| **0114** | [bubbleSort2DArray.AHK](lib-a_to_h/bubbleSort2DArray.AHK)
1.80kb - 2018-06-02 | lib-a_to_h| -| **0115** | [buf.ahk](lib-a_to_h/buf.ahk)
43.54kb - 2017-10-07 | lib-a_to_h| -| **0116** | [BufferInput.AHK](lib-a_to_h/BufferInput.AHK)
5.38kb - 2018-06-02 | lib-a_to_h| -| **0117** | [BuildUserAhkApi.ahk](lib-a_to_h/BuildUserAhkApi.ahk)
3.55kb - 2018-06-02 | lib-a_to_h| -| **0118** | [byteWord.ahk](lib-a_to_h/byteWord.ahk)
0.27kb - 2018-07-29 | lib-a_to_h| -| **0119** | [CalcChecksum.ahk](lib-a_to_h/CalcChecksum.ahk)
2.83kb - 2018-06-02 | lib-a_to_h| -| **0120** | [CalculateDistance.ahk](lib-a_to_h/CalculateDistance.ahk)
0.09kb - 2018-06-02 | lib-a_to_h| -| **0121** | [Calenderfunctions.ahk](lib-a_to_h/Calenderfunctions.ahk)
27.52kb - 2018-06-02 | lib-a_to_h| -| **0122** | [callbackcreate.ahk](lib-a_to_h/callbackcreate.ahk)
4.31kb - 2019-01-06 | lib-a_to_h| -| **0123** | [capitalizeString.ahk](lib-a_to_h/capitalizeString.ahk)
0.29kb - 2018-06-09 | lib-a_to_h| -| **0124** | [CaseChange.ahk](lib-a_to_h/CaseChange.ahk)
0.63kb - 2018-07-29 | lib-a_to_h| -| **0125** | [CatchHandler.ahk](lib-a_to_h/CatchHandler.ahk)
1.43kb - 2018-05-05 | lib-a_to_h| -| **0126** | [CB.ahk](lib-a_to_h/CB.ahk)
5.53kb - 2018-06-02 | lib-a_to_h| -| **0127** | [CColor.ahk](lib-a_to_h/CColor.ahk)
4.52kb - 2018-06-02 | lib-a_to_h| -| **0128** | [cControls.ahk](lib-a_to_h/cControls.ahk)
23.30kb - 2018-06-02 | lib-a_to_h| -| **0129** | [cdomessage.ahk](lib-a_to_h/cdomessage.ahk)
2.29kb - 2018-06-02 | lib-a_to_h| -| **0130** | [Center MsgBox To Active Window.ahk](lib-a_to_h/Center%20MsgBox%20To%20Active%20Window.ahk)
1.26kb - 2019-05-16 | lib-a_to_h| -| **0131** | [CenterWindow (2).ahk](lib-a_to_h/CenterWindow%20(2).ahk)
1.25kb - 2016-09-15 | lib-a_to_h| -| **0132** | [CenterWindow.ahk](lib-a_to_h/CenterWindow.ahk)
2.20kb - 2018-03-08 | lib-a_to_h| -| **0133** | [Cert.ahk](lib-a_to_h/Cert.ahk)
15.55kb - 2018-06-02 | lib-a_to_h| -| **0134** | [cFTP.ahk](lib-a_to_h/cFTP.ahk)
35.33kb - 2018-06-02 | lib-a_to_h| -| **0135** | [ChangeCase.ahk](lib-a_to_h/ChangeCase.ahk)
0.56kb - 2019-02-08 | lib-a_to_h| -| **0136** | [ChangeProcessName.ahk](lib-a_to_h/ChangeProcessName.ahk)
0.79kb - 2014-06-10 | lib-a_to_h| -| **0137** | [CharWordPos.ahk](lib-a_to_h/CharWordPos.ahk)
2.97kb - 2016-09-15 | lib-a_to_h| -| **0138** | [chatGUI.ahk](lib-a_to_h/chatGUI.ahk)
26.24kb - 2018-06-02 | lib-a_to_h| -| **0139** | [CheckForUpdates.ahk](lib-a_to_h/CheckForUpdates.ahk)
0.74kb - 2018-06-02 | lib-a_to_h| -| **0140** | [checkSession.ahk](lib-a_to_h/checkSession.ahk)
1.97kb - 2018-10-30 | lib-a_to_h| -| **0141** | [CheckUpdate.ahk](lib-a_to_h/CheckUpdate.ahk)
6.69kb - 2016-01-18 | lib-a_to_h| -| **0142** | [Check_ForUpdate.ahk](lib-a_to_h/Check_ForUpdate.ahk)
7.21kb - 2016-09-15 | lib-a_to_h| -| **0143** | [ChooseColor (2).ahk](lib-a_to_h/ChooseColor%20(2).ahk)
3.99kb - 2018-03-08 | lib-a_to_h| -| **0144** | [ChooseColor.ahk](lib-a_to_h/ChooseColor.ahk)
5.37kb - 2018-11-14 | lib-a_to_h| -| **0145** | [ChooseFile.ahk](lib-a_to_h/ChooseFile.ahk)
7.41kb - 2018-03-08 | lib-a_to_h| -| **0146** | [ChooseFolder.ahk](lib-a_to_h/ChooseFolder.ahk)
7.42kb - 2018-06-20 | lib-a_to_h| -| **0147** | [ChooseFont.ahk](lib-a_to_h/ChooseFont.ahk)
3.86kb - 2018-06-20 | lib-a_to_h| -| **0148** | [ChooseIcon.ahk](lib-a_to_h/ChooseIcon.ahk)
0.95kb - 2018-06-20 | lib-a_to_h| -| **0149** | [ChooseImage.ahk](lib-a_to_h/ChooseImage.ahk)
9.94kb - 2018-03-08 | lib-a_to_h| -| **0150** | [cleanClipboard.ahk](lib-a_to_h/cleanClipboard.ahk)
0.51kb - 2019-02-08 | lib-a_to_h| -| **0151** | [ClearArray.ahk](lib-a_to_h/ClearArray.ahk)
1.83kb - 2016-02-05 | lib-a_to_h| -| **0152** | [Clip.ahk](lib-a_to_h/Clip.ahk)
1.28kb - 2018-04-23 | lib-a_to_h| -| **0153** | [Clip2Object.ahk](lib-a_to_h/Clip2Object.ahk)
1.05kb - 2018-06-02 | lib-a_to_h| -| **0154** | [Clipboard Manager.ahk](lib-a_to_h/Clipboard%20Manager.ahk)
2.40kb - 2018-06-02 | lib-a_to_h| -| **0155** | [clipboard.ahk](lib-a_to_h/clipboard.ahk)
3.33kb - 2019-05-04 | lib-a_to_h| -| **0156** | [ClipboardHelpers.ahk](lib-a_to_h/ClipboardHelpers.ahk)
0.57kb - 2017-10-23 | lib-a_to_h| -| **0157** | [clipHTML.ahk](lib-a_to_h/clipHTML.ahk)
0.09kb - 2019-02-08 | lib-a_to_h| -| **0158** | [ClipStore.ahk](lib-a_to_h/ClipStore.ahk)
3.92kb - 2018-12-02 | lib-a_to_h| -| **0159** | [CloseAllAhkExceptOne.ahk](lib-a_to_h/CloseAllAhkExceptOne.ahk)
0.91kb - 2016-09-15 | lib-a_to_h| -| **0160** | [CloseHandle.ahk](lib-a_to_h/CloseHandle.ahk)
0.43kb - 2018-03-08 | lib-a_to_h| -| **0161** | [CloseWindow.ahk](lib-a_to_h/CloseWindow.ahk)
2.95kb - 2018-03-08 | lib-a_to_h| -| **0162** | [CLR (2).ahk](lib-a_to_h/CLR%20(2).ahk)
5.20kb - 2018-08-18 | lib-a_to_h| -| **0163** | [CLR.ahk](lib-a_to_h/CLR.ahk)
10.17kb - 2018-06-02 | lib-a_to_h| -| **0164** | [cmd.ahk](lib-a_to_h/cmd.ahk)
3.83kb - 2018-06-09 | lib-a_to_h| -| **0165** | [CmdPromptRun.ahk](lib-a_to_h/CmdPromptRun.ahk)
1.36kb - 2018-12-02 | lib-a_to_h| -| **0166** | [CMDret.ahk](lib-a_to_h/CMDret.ahk)
4.43kb - 2018-06-02 | lib-a_to_h| -| **0167** | [CMDret_RunReturn.ahk](lib-a_to_h/CMDret_RunReturn.ahk)
1.63kb - 2016-09-15 | lib-a_to_h| -| **0168** | [CMDret_stream.ahk](lib-a_to_h/CMDret_stream.ahk)
4.93kb - 2018-06-02 | lib-a_to_h| -| **0169** | [CMenu.ahk](lib-a_to_h/CMenu.ahk)
1.24kb - 2018-06-02 | lib-a_to_h| -| **0170** | [CMenuBar.ahk](lib-a_to_h/CMenuBar.ahk)
9.71kb - 2018-06-02 | lib-a_to_h| -| **0171** | [CMenuItem.ahk](lib-a_to_h/CMenuItem.ahk)
13.71kb - 2018-06-02 | lib-a_to_h| -| **0172** | [cmp.ahk](lib-a_to_h/cmp.ahk)
1.75kb - 2018-08-05 | lib-a_to_h| -| **0173** | [CMsgbox.ahk](lib-a_to_h/CMsgbox.ahk)
3.74kb - 2018-06-02 | lib-a_to_h| -| **0174** | [CoHelper.ahk](lib-a_to_h/CoHelper.ahk)
10.63kb - 2018-06-02 | lib-a_to_h| -| **0175** | [Color.ahk](lib-a_to_h/Color.ahk)
4.00kb - 2018-04-23 | lib-a_to_h| -| **0176** | [Colored_Focus_Control.ahk](lib-a_to_h/Colored_Focus_Control.ahk)
4.18kb - 2019-04-12 | lib-a_to_h| -| **0177** | [colors.ahk](lib-a_to_h/colors.ahk)
0.81kb - 2019-05-26 | lib-a_to_h| -| **0178** | [ColURL.ahk](lib-a_to_h/ColURL.ahk)
3.74kb - 2018-06-02 | lib-a_to_h| -| **0179** | [com (2).ahk](lib-a_to_h/com%20(2).ahk)
25.72kb - 2018-06-02 | lib-a_to_h| -| **0180** | [COM (3).ahk](lib-a_to_h/COM%20(3).ahk)
21.20kb - 2018-06-02 | lib-a_to_h| -| **0181** | [com.ahk](lib-a_to_h/com.ahk)
25.72kb - 2018-06-02 | lib-a_to_h| -| **0182** | [ComboX.ahk](lib-a_to_h/ComboX.ahk)
5.27kb - 2018-06-02 | lib-a_to_h| -| **0183** | [ComDispatch.ahk](lib-a_to_h/ComDispatch.ahk)
5.26kb - 2014-07-13 | lib-a_to_h| -| **0184** | [ComDispatch0.ahk](lib-a_to_h/ComDispatch0.ahk)
5.84kb - 2018-01-30 | lib-a_to_h| -| **0185** | [ComDispTable.ahk](lib-a_to_h/ComDispTable.ahk)
0.84kb - 2014-07-13 | lib-a_to_h| -| **0186** | [commaFormat.ahk](lib-a_to_h/commaFormat.ahk)
0.24kb - 2018-10-30 | lib-a_to_h| -| **0187** | [CommonDialogs.ahk](lib-a_to_h/CommonDialogs.ahk)
5.73kb - 2018-06-02 | lib-a_to_h| -| **0188** | [COMo.ahk](lib-a_to_h/COMo.ahk)
1.02kb - 2018-06-02 | lib-a_to_h| -| **0189** | [CompareFileNameArray.ahk](lib-a_to_h/CompareFileNameArray.ahk)
1.04kb - 2018-05-05 | lib-a_to_h| -| **0190** | [Compass.ahk](lib-a_to_h/Compass.ahk)
2.80kb - 2015-04-24 | lib-a_to_h| -| **0191** | [compile to vpk.ahk](lib-a_to_h/compile%20to%20vpk.ahk)
2.73kb - 2018-06-02 | lib-a_to_h| -| **0192** | [compileScript.ahk](lib-a_to_h/compileScript.ahk)
0.50kb - 2018-10-30 | lib-a_to_h| -| **0193** | [ComVar (2).ahk](lib-a_to_h/ComVar%20(2).ahk)
1.34kb - 2014-07-13 | lib-a_to_h| -| **0194** | [ComVar.ahk](lib-a_to_h/ComVar.ahk)
0.47kb - 2018-06-02 | lib-a_to_h| -| **0195** | [ConnectedToInternet.ahk](lib-a_to_h/ConnectedToInternet.ahk)
0.23kb - 2018-06-02 | lib-a_to_h| -| **0196** | [ConsoleApp v1.2.ahk](lib-a_to_h/ConsoleApp%20v1.2.ahk)
22.33kb - 2018-06-02 | lib-a_to_h| -| **0197** | [ConsoleApp.ahk](lib-a_to_h/ConsoleApp.ahk)
22.57kb - 2018-06-02 | lib-a_to_h| -| **0198** | [Constants.ahk](lib-a_to_h/Constants.ahk)
0.54kb - 2018-03-08 | lib-a_to_h| -| **0199** | [Container.ahk](lib-a_to_h/Container.ahk)
26.89kb - 2018-06-02 | lib-a_to_h| -| **0200** | [Contains.ahk](lib-a_to_h/Contains.ahk)
3.38kb - 2018-06-02 | lib-a_to_h| -| **0201** | [ContextMenuLib.ahk](lib-a_to_h/ContextMenuLib.ahk)
1.76kb - 2018-05-21 | lib-a_to_h| -| **0202** | [ControlCol.ahk](lib-a_to_h/ControlCol.ahk)
2.87kb - 2018-06-02 | lib-a_to_h| -| **0203** | [ControlColor.ahk](lib-a_to_h/ControlColor.ahk)
1.67kb - 2018-06-02 | lib-a_to_h| -| **0204** | [Control_AniGif.ahk](lib-a_to_h/Control_AniGif.ahk)
7.40kb - 2018-06-02 | lib-a_to_h| -| **0205** | [Control_AVI.ahk](lib-a_to_h/Control_AVI.ahk)
7.17kb - 2018-06-02 | lib-a_to_h| -| **0206** | [Convert2Hex.ahk](lib-a_to_h/Convert2Hex.ahk)
2.36kb - 2018-06-02 | lib-a_to_h| -| **0207** | [ConvertFile.ahk](lib-a_to_h/ConvertFile.ahk)
6.16kb - 2019-11-02 | lib-a_to_h| -| **0208** | [ConvertImage.ahk](lib-a_to_h/ConvertImage.ahk)
5.83kb - 2018-06-02 | lib-a_to_h| -| **0209** | [ConvertKeyToKeyCode.ahk](lib-a_to_h/ConvertKeyToKeyCode.ahk)
4.32kb - 2017-10-16 | lib-a_to_h| -| **0210** | [ConvertToCamelCase.ahk](lib-a_to_h/ConvertToCamelCase.ahk)
1.01kb - 2019-02-16 | lib-a_to_h| -| **0211** | [ConvertToLoserCase.ahk](lib-a_to_h/ConvertToLoserCase.ahk)
1.37kb - 2019-02-16 | lib-a_to_h| -| **0212** | [ConvertToMp3.ahk](lib-a_to_h/ConvertToMp3.ahk)
2.29kb - 2018-12-02 | lib-a_to_h| -| **0213** | [ConvertToPascalCase.ahk](lib-a_to_h/ConvertToPascalCase.ahk)
1.39kb - 2019-02-16 | lib-a_to_h| -| **0214** | [CopyFilesToClipboard.ahk](lib-a_to_h/CopyFilesToClipboard.ahk)
1.57kb - 2018-08-21 | lib-a_to_h| -| **0215** | [CopyImage.ahk](lib-a_to_h/CopyImage.ahk)
1.45kb - 2018-03-08 | lib-a_to_h| -| **0216** | [CopyMemory.ahk](lib-a_to_h/CopyMemory.ahk)
0.82kb - 2018-03-08 | lib-a_to_h| -| **0217** | [CornerNotify.ahk](lib-a_to_h/CornerNotify.ahk)
3.02kb - 2013-06-19 | lib-a_to_h| -| **0218** | [Correlation Coefficient.ahk](lib-a_to_h/Correlation%20Coefficient.ahk)
0.91kb - 2019-11-06 | lib-a_to_h| -| **0219** | [Count.ahk](lib-a_to_h/Count.ahk)
0.66kb - 2018-06-02 | lib-a_to_h| -| **0220** | [CounterEditor.ahk](lib-a_to_h/CounterEditor.ahk)
5.00kb - 2018-06-02 | lib-a_to_h| -| **0221** | [CountOfFiles.ahk](lib-a_to_h/CountOfFiles.ahk)
1.02kb - 2018-12-02 | lib-a_to_h| -| **0222** | [CPULoad.ahk](lib-a_to_h/CPULoad.ahk)
2.12kb - 2019-05-09 | lib-a_to_h| -| **0223** | [cpumem.ahk](lib-a_to_h/cpumem.ahk)
3.16kb - 2011-05-15 | lib-a_to_h| -| **0224** | [CpyData.ahk](lib-a_to_h/CpyData.ahk)
2.04kb - 2018-06-02 | lib-a_to_h| -| **0225** | [CRC32.ahk](lib-a_to_h/CRC32.ahk)
1.16kb - 2018-03-08 | lib-a_to_h| -| **0226** | [CreateDIB.ahk](lib-a_to_h/CreateDIB.ahk)
6.98kb - 2018-03-08 | lib-a_to_h| -| **0227** | [CreateFileNameArray.ahk](lib-a_to_h/CreateFileNameArray.ahk)
1.27kb - 2018-05-05 | lib-a_to_h| -| **0228** | [CreateFocusRec.ahk](lib-a_to_h/CreateFocusRec.ahk)
2.13kb - 2018-07-16 | lib-a_to_h| -| **0229** | [CreateFolderFromString.ahk](lib-a_to_h/CreateFolderFromString.ahk)
2.02kb - 2018-05-05 | lib-a_to_h| -| **0230** | [CreateFont.ahk](lib-a_to_h/CreateFont.ahk)
1.40kb - 2016-09-15 | lib-a_to_h| -| **0231** | [CreateFormData.ahk](lib-a_to_h/CreateFormData.ahk)
2.91kb - 2016-06-17 | lib-a_to_h| -| **0232** | [CreateGist.ahk](lib-a_to_h/CreateGist.ahk)
0.61kb - 2017-01-26 | lib-a_to_h| -| **0233** | [CreateGUID.ahk](lib-a_to_h/CreateGUID.ahk)
0.32kb - 2018-08-17 | lib-a_to_h| -| **0234** | [CreateIconsDll.ahk](lib-a_to_h/CreateIconsDll.ahk)
3.45kb - 2018-06-02 | lib-a_to_h| -| **0235** | [CreateScript.ahk](lib-a_to_h/CreateScript.ahk)
4.21kb - 2018-06-02 | lib-a_to_h| -| **0236** | [CreateScriptV1.ahk](lib-a_to_h/CreateScriptV1.ahk)
3.85kb - 2018-09-04 | lib-a_to_h| -| **0237** | [CreateScriptV2.ahk](lib-a_to_h/CreateScriptV2.ahk)
3.32kb - 2018-09-04 | lib-a_to_h| -| **0238** | [CreateSystemErrorTextList.ahk](lib-a_to_h/CreateSystemErrorTextList.ahk)
0.38kb - 2018-05-05 | lib-a_to_h| -| **0239** | [cRichEdit.ahk](lib-a_to_h/cRichEdit.ahk)
22.52kb - 2018-06-02 | lib-a_to_h| -| **0240** | [CriticalSection.ahk](lib-a_to_h/CriticalSection.ahk)
0.28kb - 2018-06-02 | lib-a_to_h| -| **0241** | [crypt.ahk](lib-a_to_h/crypt.ahk)
4.67kb - 2017-04-07 | lib-a_to_h| -| **0242** | [CryptAES.ahk](lib-a_to_h/CryptAES.ahk)
1.33kb - 2018-06-02 | lib-a_to_h| -| **0243** | [CryptBy_nnik.ahk](lib-a_to_h/CryptBy_nnik.ahk)
3.78kb - 2018-08-26 | lib-a_to_h| -| **0244** | [CryptFoos.ahk](lib-a_to_h/CryptFoos.ahk)
1.59kb - 2018-06-02 | lib-a_to_h| -| **0245** | [CryptHash.ahk](lib-a_to_h/CryptHash.ahk)
7.09kb - 2018-03-08 | lib-a_to_h| -| **0246** | [CryptHash_AES.ahk](lib-a_to_h/CryptHash_AES.ahk)
2.38kb - 2011-02-10 | lib-a_to_h| -| **0247** | [crypto (2).ahk](lib-a_to_h/crypto%20(2).ahk)
3.52kb - 2012-10-03 | lib-a_to_h| -| **0248** | [Crypto.ahk](lib-a_to_h/Crypto.ahk)
1.81kb - 2019-03-23 | lib-a_to_h| -| **0249** | [CSS.ahk](lib-a_to_h/CSS.ahk)
1.85kb - 2019-10-30 | lib-a_to_h| -| **0250** | [CSV.ahk](lib-a_to_h/CSV.ahk)
24.52kb - 2018-06-02 | lib-a_to_h| -| **0251** | [CSVMultiTab.ahk](lib-a_to_h/CSVMultiTab.ahk)
3.11kb - 2019-10-26 | lib-a_to_h| -| **0252** | [CSV_.ahk](lib-a_to_h/CSV_.ahk)
6.32kb - 2017-04-07 | lib-a_to_h| -| **0253** | [CSV_Functions AHK_L.ahk](lib-a_to_h/CSV_Functions%20AHK_L.ahk)
24.61kb - 2018-06-02 | lib-a_to_h| -| **0254** | [CtlColorStatic.ahk](lib-a_to_h/CtlColorStatic.ahk)
1.60kb - 2019-01-21 | lib-a_to_h| -| **0255** | [CueBanner.ahk](lib-a_to_h/CueBanner.ahk)
14.57kb - 2017-07-26 | lib-a_to_h| -| **0256** | [cURL.ahk](lib-a_to_h/cURL.ahk)
9.24kb - 2018-11-14 | lib-a_to_h| -| **0257** | [Cursor.ahk](lib-a_to_h/Cursor.ahk)
3.72kb - 2018-06-02 | lib-a_to_h| -| **0258** | [Cycle.ahk](lib-a_to_h/Cycle.ahk)
0.68kb - 2018-06-02 | lib-a_to_h| -| **0259** | [d2d1.ahk](lib-a_to_h/d2d1.ahk)
89.09kb - 2018-06-02 | lib-a_to_h| -| **0260** | [d3D.ahk](lib-a_to_h/d3D.ahk)
19.06kb - 2018-06-02 | lib-a_to_h| -| **0261** | [d3D11.ahk](lib-a_to_h/d3D11.ahk)
5.00kb - 2018-06-02 | lib-a_to_h| -| **0262** | [d3D9.ahk](lib-a_to_h/d3D9.ahk)
9.67kb - 2018-06-02 | lib-a_to_h| -| **0263** | [d3Dx9.ahk](lib-a_to_h/d3Dx9.ahk)
4.08kb - 2018-06-02 | lib-a_to_h| -| **0264** | [Damerau-Levenshtein-Distance_Fuzzy-searches.ahk](lib-a_to_h/Damerau-Levenshtein-Distance_Fuzzy-searches.ahk)
2.15kb - 2018-08-25 | lib-a_to_h| -| **0265** | [DamerauLevenshteinDistance.ahk](lib-a_to_h/DamerauLevenshteinDistance.ahk)
0.93kb - 2018-06-02 | lib-a_to_h| -| **0266** | [data.ahk](lib-a_to_h/data.ahk)
5.69kb - 2019-06-05 | lib-a_to_h| -| **0267** | [DateAdd.ahk](lib-a_to_h/DateAdd.ahk)
2.09kb - 2018-05-05 | lib-a_to_h| -| **0268** | [DateDiff.ahk](lib-a_to_h/DateDiff.ahk)
2.55kb - 2018-12-02 | lib-a_to_h| -| **0269** | [DateParse.ahk](lib-a_to_h/DateParse.ahk)
5.65kb - 2018-06-02 | lib-a_to_h| -| **0270** | [dates.ahk](lib-a_to_h/dates.ahk)
3.52kb - 2019-05-26 | lib-a_to_h| -| **0271** | [dateTime.ahk](lib-a_to_h/dateTime.ahk)
4.43kb - 2019-05-04 | lib-a_to_h| -| **0272** | [DayOfdate.ahk](lib-a_to_h/DayOfdate.ahk)
1.20kb - 2018-06-02 | lib-a_to_h| -| **0273** | [DBA.ahk](lib-a_to_h/DBA.ahk)
0.67kb - 2018-06-02 | lib-a_to_h| -| **0274** | [DBase.ahk](lib-a_to_h/DBase.ahk)
23.45kb - 2019-09-25 | lib-a_to_h| -| **0275** | [DBGP.ahk](lib-a_to_h/DBGP.ahk)
19.08kb - 2018-08-13 | lib-a_to_h| -| **0276** | [dcomp.ahk](lib-a_to_h/dcomp.ahk)
56.72kb - 2018-06-02 | lib-a_to_h| -| **0277** | [DDE.ahk](lib-a_to_h/DDE.ahk)
5.30kb - 2018-06-02 | lib-a_to_h| -| **0278** | [DDEMessage.ahk](lib-a_to_h/DDEMessage.ahk)
3.07kb - 2018-06-02 | lib-a_to_h| -| **0279** | [DDEML.ahk](lib-a_to_h/DDEML.ahk)
1.52kb - 2018-06-02 | lib-a_to_h| -| **0280** | [DDLManager.ahk](lib-a_to_h/DDLManager.ahk)
12.36kb - 2011-04-25 | lib-a_to_h| -| **0281** | [ddraw.ahk](lib-a_to_h/ddraw.ahk)
25.20kb - 2018-06-02 | lib-a_to_h| -| **0282** | [Debug.ahk](lib-a_to_h/Debug.ahk)
1.85kb - 2014-07-06 | lib-a_to_h| -| **0283** | [DebugPrintArray.ahk](lib-a_to_h/DebugPrintArray.ahk)
4.19kb - 2018-06-12 | lib-a_to_h| -| **0284** | [Decodeu.ahk](lib-a_to_h/Decodeu.ahk)
0.96kb - 2019-10-13 | lib-a_to_h| -| **0285** | [Decompiler.ahk](lib-a_to_h/Decompiler.ahk)
8.06kb - 2018-06-02 | lib-a_to_h| -| **0286** | [Decrypt.ahk](lib-a_to_h/Decrypt.ahk)
2.26kb - 2011-02-10 | lib-a_to_h| -| **0287** | [Default.ahk](lib-a_to_h/Default.ahk)
6.49kb - 2018-06-02 | lib-a_to_h| -| **0288** | [DegreeToRadian.ahk](lib-a_to_h/DegreeToRadian.ahk)
0.29kb - 2018-03-08 | lib-a_to_h| -| **0289** | [Delay.ahk](lib-a_to_h/Delay.ahk)
0.44kb - 2011-02-10 | lib-a_to_h| -| **0290** | [DeleteCursor.ahk](lib-a_to_h/DeleteCursor.ahk)
0.14kb - 2018-03-08 | lib-a_to_h| -| **0291** | [DeleteObject.ahk](lib-a_to_h/DeleteObject.ahk)
0.29kb - 2018-03-08 | lib-a_to_h| -| **0292** | [DeluxeClipboard.ahk](lib-a_to_h/DeluxeClipboard.ahk)
6.94kb - 2018-06-02 | lib-a_to_h| -| **0293** | [Desktophidelib.ahk](lib-a_to_h/Desktophidelib.ahk)
2.13kb - 2018-10-26 | lib-a_to_h| -| **0294** | [DesktopScreenCoordinates.ahk](lib-a_to_h/DesktopScreenCoordinates.ahk)
0.51kb - 2018-06-02 | lib-a_to_h| -| **0295** | [detectPowerMessage.ahk](lib-a_to_h/detectPowerMessage.ahk)
3.49kb - 2015-03-24 | lib-a_to_h| -| **0296** | [DeviceInterfaces.ahk](lib-a_to_h/DeviceInterfaces.ahk)
27.98kb - 2014-08-18 | lib-a_to_h| -| **0297** | [Devices.ahk](lib-a_to_h/Devices.ahk)
5.49kb - 2018-08-23 | lib-a_to_h| -| **0298** | [Dic.ahk](lib-a_to_h/Dic.ahk)
7.31kb - 2007-06-18 | lib-a_to_h| -| **0299** | [Dictionary.ahk](lib-a_to_h/Dictionary.ahk)
6.60kb - 2018-06-02 | lib-a_to_h| -| **0300** | [DictionaryDatabase.ahk](lib-a_to_h/DictionaryDatabase.ahk)
14.38kb - 2018-08-22 | lib-a_to_h| -| **0301** | [Difference.ahk](lib-a_to_h/Difference.ahk)
1.59kb - 2018-12-11 | lib-a_to_h| -| **0302** | [DigitsByRecognition.ahk](lib-a_to_h/DigitsByRecognition.ahk)
38.75kb - 2019-04-20 | lib-a_to_h| -| **0303** | [dinput.ahk](lib-a_to_h/dinput.ahk)
4.13kb - 2018-06-02 | lib-a_to_h| -| **0304** | [DirGetParent.ahk](lib-a_to_h/DirGetParent.ahk)
0.19kb - 2018-06-02 | lib-a_to_h| -| **0305** | [Display_get_Window_context.ahk](lib-a_to_h/Display_get_Window_context.ahk)
16.31kb - 2018-12-01 | lib-a_to_h| -| **0306** | [display_window.ahk](lib-a_to_h/display_window.ahk)
16.22kb - 2019-10-27 | lib-a_to_h| -| **0307** | [Dlg.ahk](lib-a_to_h/Dlg.ahk)
17.85kb - 2018-06-02 | lib-a_to_h| -| **0308** | [Dlg2.ahk](lib-a_to_h/Dlg2.ahk)
105.30kb - 2016-05-09 | lib-a_to_h| -| **0309** | [Dlg2_v0.2.1.ahk](lib-a_to_h/Dlg2_v0.2.1.ahk)
111.24kb - 2019-02-18 | lib-a_to_h| -| **0310** | [Dlg2_v03.ahk](lib-a_to_h/Dlg2_v03.ahk)
108.48kb - 2015-04-13 | lib-a_to_h| -| **0311** | [DLG_FileOpenSave.ahk](lib-a_to_h/DLG_FileOpenSave.ahk)
12.57kb - 2017-09-04 | lib-a_to_h| -| **0312** | [dll.ahk](lib-a_to_h/dll.ahk)
2.87kb - 2018-06-02 | lib-a_to_h| -| **0313** | [DllCall Data Types.ahk](lib-a_to_h/DllCall%20Data%20Types.ahk)
2.54kb - 2011-02-10 | lib-a_to_h| -| **0314** | [DllCallStruct.ahk](lib-a_to_h/DllCallStruct.ahk)
8.59kb - 2018-06-02 | lib-a_to_h| -| **0315** | [dllcall_struct.ahk](lib-a_to_h/dllcall_struct.ahk)
6.00kb - 2019-01-06 | lib-a_to_h| -| **0316** | [DllExports.ahk](lib-a_to_h/DllExports.ahk)
5.79kb - 2018-03-08 | lib-a_to_h| -| **0317** | [DLLPack.ahk](lib-a_to_h/DLLPack.ahk)
2.78kb - 2018-06-02 | lib-a_to_h| -| **0318** | [DllPackFiles.ahk](lib-a_to_h/DllPackFiles.ahk)
2.84kb - 2011-09-15 | lib-a_to_h| -| **0319** | [dmp.ahk](lib-a_to_h/dmp.ahk)
10.31kb - 2018-06-02 | lib-a_to_h| -| **0320** | [DnsFlushResolverCache.ahk](lib-a_to_h/DnsFlushResolverCache.ahk)
0.32kb - 2018-03-08 | lib-a_to_h| -| **0321** | [Dock.ahk](lib-a_to_h/Dock.ahk)
13.69kb - 2018-06-02 | lib-a_to_h| -| **0322** | [DockA.ahk](lib-a_to_h/DockA.ahk)
6.03kb - 2018-06-02 | lib-a_to_h| -| **0323** | [DoDragDrop.ahk](lib-a_to_h/DoDragDrop.ahk)
2.08kb - 2018-06-02 | lib-a_to_h| -| **0324** | [Download-with-Progress.ahk](lib-a_to_h/Download-with-Progress.ahk)
1.25kb - 2018-11-14 | lib-a_to_h| -| **0325** | [DownloadFile.ahk](lib-a_to_h/DownloadFile.ahk)
7.32kb - 2018-03-08 | lib-a_to_h| -| **0326** | [DownloadText.ahk](lib-a_to_h/DownloadText.ahk)
2.30kb - 2018-03-08 | lib-a_to_h| -| **0327** | [DownloadToFile.ahk](lib-a_to_h/DownloadToFile.ahk)
0.88kb - 2018-06-02 | lib-a_to_h| -| **0328** | [DownloadToString.ahk](lib-a_to_h/DownloadToString.ahk)
0.89kb - 2018-06-02 | lib-a_to_h| -| **0329** | [dpi.ahk](lib-a_to_h/dpi.ahk)
1.67kb - 2017-10-18 | lib-a_to_h| -| **0330** | [dpiOffset.ahk](lib-a_to_h/dpiOffset.ahk)
0.09kb - 2018-10-30 | lib-a_to_h| -| **0331** | [DrawScreen.ahk](lib-a_to_h/DrawScreen.ahk)
1.99kb - 2018-06-02 | lib-a_to_h| -| **0332** | [DrawShadowText9x.ahk](lib-a_to_h/DrawShadowText9x.ahk)
6.68kb - 2017-07-26 | lib-a_to_h| -| **0333** | [DriveGetLabels.ahk](lib-a_to_h/DriveGetLabels.ahk)
1.66kb - 2018-05-05 | lib-a_to_h| -| **0334** | [dshow.ahk](lib-a_to_h/dshow.ahk)
0.71kb - 2018-06-02 | lib-a_to_h| -| **0335** | [dSleep.ahk](lib-a_to_h/dSleep.ahk)
0.05kb - 2018-06-02 | lib-a_to_h| -| **0336** | [dsound.ahk](lib-a_to_h/dsound.ahk)
6.01kb - 2018-06-02 | lib-a_to_h| -| **0337** | [dSpeak.ahk](lib-a_to_h/dSpeak.ahk)
1.25kb - 2018-06-02 | lib-a_to_h| -| **0338** | [DumpHistory.ahk](lib-a_to_h/DumpHistory.ahk)
0.84kb - 2018-06-02 | lib-a_to_h| -| **0339** | [DuplicateFinderAndCounter.ahk](lib-a_to_h/DuplicateFinderAndCounter.ahk)
2.06kb - 2019-04-27 | lib-a_to_h| -| **0340** | [DuplicateHandle.ahk](lib-a_to_h/DuplicateHandle.ahk)
2.33kb - 2018-03-08 | lib-a_to_h| -| **0341** | [DuplicateToken.ahk](lib-a_to_h/DuplicateToken.ahk)
3.14kb - 2018-08-16 | lib-a_to_h| -| **0342** | [dwrite (2).ahk](lib-a_to_h/dwrite%20(2).ahk)
79.40kb - 2018-06-02 | lib-a_to_h| -| **0343** | [dwrite.ahk](lib-a_to_h/dwrite.ahk)
70.79kb - 2018-06-02 | lib-a_to_h| -| **0344** | [DynaExpr.ahk](lib-a_to_h/DynaExpr.ahk)
2.21kb - 2017-09-18 | lib-a_to_h| -| **0345** | [DynamicInclude.ahk](lib-a_to_h/DynamicInclude.ahk)
3.13kb - 2018-12-01 | lib-a_to_h| -| **0346** | [DynaRun.ahk](lib-a_to_h/DynaRun.ahk)
1.51kb - 2018-06-02 | lib-a_to_h| -| **0347** | [easytranscript-pedal-x64.ahk](lib-a_to_h/easytranscript-pedal-x64.ahk)
4.06kb - 2015-04-25 | lib-a_to_h| -| **0348** | [easytranscript-pedal-x86.ahk](lib-a_to_h/easytranscript-pedal-x86.ahk)
3.58kb - 2015-04-25 | lib-a_to_h| -| **0349** | [Edit.ahk](lib-a_to_h/Edit.ahk)
116.65kb - 2016-05-09 | lib-a_to_h| -| **0350** | [EditControl.ahk](lib-a_to_h/EditControl.ahk)
54.56kb - 2019-07-25 | lib-a_to_h| -| **0351** | [EditFunctions.ahk](lib-a_to_h/EditFunctions.ahk)
5.18kb - 2016-09-15 | lib-a_to_h| -| **0352** | [EditorWin.ahk](lib-a_to_h/EditorWin.ahk)
71.39kb - 2014-03-19 | lib-a_to_h| -| **0353** | [Edit_AutoSetTabStops.ahk](lib-a_to_h/Edit_AutoSetTabStops.ahk)
5.94kb - 2016-05-07 | lib-a_to_h| -| **0354** | [Edit_BlockMove.ahk](lib-a_to_h/Edit_BlockMove.ahk)
6.34kb - 2016-01-05 | lib-a_to_h| -| **0355** | [Edit_Controls.ahk](lib-a_to_h/Edit_Controls.ahk)
4.69kb - 2018-10-15 | lib-a_to_h| -| **0356** | [Edit_CutLine.ahk](lib-a_to_h/Edit_CutLine.ahk)
0.84kb - 2015-09-23 | lib-a_to_h| -| **0357** | [Edit_DeleteLine.ahk](lib-a_to_h/Edit_DeleteLine.ahk)
0.80kb - 2015-09-23 | lib-a_to_h| -| **0358** | [Edit_Duplicate.ahk](lib-a_to_h/Edit_Duplicate.ahk)
4.57kb - 2016-01-05 | lib-a_to_h| -| **0359** | [Edit_SelectLine.ahk](lib-a_to_h/Edit_SelectLine.ahk)
1.44kb - 2015-09-23 | lib-a_to_h| -| **0360** | [Edit_Sort.ahk](lib-a_to_h/Edit_Sort.ahk)
3.44kb - 2016-01-05 | lib-a_to_h| -| **0361** | [Edit_SpellCheckGUI.ahk](lib-a_to_h/Edit_SpellCheckGUI.ahk)
27.71kb - 2016-05-09 | lib-a_to_h| -| **0362** | [Edit_TTSGUI.ahk](lib-a_to_h/Edit_TTSGUI.ahk)
33.03kb - 2016-05-08 | lib-a_to_h| -| **0363** | [Edit_v1.1.ahk](lib-a_to_h/Edit_v1.1.ahk)
52.82kb - 2011-02-10 | lib-a_to_h| -| **0364** | [Edit_v2.1.ahk](lib-a_to_h/Edit_v2.1.ahk)
117.58kb - 2019-07-30 | lib-a_to_h| -| **0365** | [EjectDevice.ahk](lib-a_to_h/EjectDevice.ahk)
4.04kb - 2018-08-23 | lib-a_to_h| -| **0366** | [ElapsedTime.ahk](lib-a_to_h/ElapsedTime.ahk)
3.05kb - 2011-04-25 | lib-a_to_h| -| **0367** | [EmptyMem.ahk](lib-a_to_h/EmptyMem.ahk)
1.77kb - 2018-06-02 | lib-a_to_h| -| **0368** | [EmptyRecycleBin.ahk](lib-a_to_h/EmptyRecycleBin.ahk)
1.10kb - 2018-03-08 | lib-a_to_h| -| **0369** | [EmptyWorkingSets.ahk](lib-a_to_h/EmptyWorkingSets.ahk)
0.25kb - 2016-09-15 | lib-a_to_h| -| **0370** | [EnableUIAccess.ahk](lib-a_to_h/EnableUIAccess.ahk)
10.94kb - 2018-06-02 | lib-a_to_h| -| **0371** | [Encoding.ahk](lib-a_to_h/Encoding.ahk)
2.51kb - 2018-06-02 | lib-a_to_h| -| **0372** | [Encrypt.ahk](lib-a_to_h/Encrypt.ahk)
2.26kb - 2011-02-10 | lib-a_to_h| -| **0373** | [EntryForm.ahk](lib-a_to_h/EntryForm.ahk)
20.25kb - 2014-09-19 | lib-a_to_h| -| **0374** | [EnumClipFormats.ahk](lib-a_to_h/EnumClipFormats.ahk)
0.42kb - 2019-10-29 | lib-a_to_h| -| **0375** | [EnumComMembers.ahk](lib-a_to_h/EnumComMembers.ahk)
2.53kb - 2019-05-15 | lib-a_to_h| -| **0376** | [EnumDiskDrives.ahk](lib-a_to_h/EnumDiskDrives.ahk)
1.06kb - 2018-03-08 | lib-a_to_h| -| **0377** | [enumdisplaydevices.ahk](lib-a_to_h/enumdisplaydevices.ahk)
3.35kb - 2019-10-29 | lib-a_to_h| -| **0378** | [EnumerateChildProcesses.ahk](lib-a_to_h/EnumerateChildProcesses.ahk)
1.14kb - 2019-10-29 | lib-a_to_h| -| **0379** | [EnumerateDrives.ahk](lib-a_to_h/EnumerateDrives.ahk)
2.17kb - 2018-03-08 | lib-a_to_h| -| **0380** | [EnumerateProcesses.ahk](lib-a_to_h/EnumerateProcesses.ahk)
4.71kb - 2018-08-16 | lib-a_to_h| -| **0381** | [EnumerateServices.ahk](lib-a_to_h/EnumerateServices.ahk)
7.96kb - 2018-03-08 | lib-a_to_h| -| **0382** | [EnumerateVolumes.ahk](lib-a_to_h/EnumerateVolumes.ahk)
0.92kb - 2018-03-08 | lib-a_to_h| -| **0383** | [EnumIncludes.ahk](lib-a_to_h/EnumIncludes.ahk)
5.87kb - 2018-06-02 | lib-a_to_h| -| **0384** | [EnumWindows.ahk](lib-a_to_h/EnumWindows.ahk)
1.51kb - 2018-03-08 | lib-a_to_h| -| **0385** | [Enum_Explorer.ahk](lib-a_to_h/Enum_Explorer.ahk)
1.43kb - 2019-05-15 | lib-a_to_h| -| **0386** | [Environment.ahk](lib-a_to_h/Environment.ahk)
9.48kb - 2019-01-03 | lib-a_to_h| -| **0387** | [EnvUpdate.ahk](lib-a_to_h/EnvUpdate.ahk)
0.20kb - 2016-09-15 | lib-a_to_h| -| **0388** | [eol-convert.ahk](lib-a_to_h/eol-convert.ahk)
2.15kb - 2019-05-26 | lib-a_to_h| -| **0389** | [eol.ahk](lib-a_to_h/eol.ahk)
1.89kb - 2018-06-02 | lib-a_to_h| -| **0390** | [ErrMsg.ahk](lib-a_to_h/ErrMsg.ahk)
2.28kb - 2016-02-20 | lib-a_to_h| -| **0391** | [ErrorMessage.ahk](lib-a_to_h/ErrorMessage.ahk)
0.18kb - 2018-06-02 | lib-a_to_h| -| **0392** | [euler.ahk](lib-a_to_h/euler.ahk)
53.63kb - 2019-05-07 | lib-a_to_h| -| **0393** | [eval (2).ahk](lib-a_to_h/eval%20(2).ahk)
7.85kb - 2019-10-11 | lib-a_to_h| -| **0394** | [Eval.ahk](lib-a_to_h/Eval.ahk)
12.92kb - 2018-06-02 | lib-a_to_h| -| **0395** | [EventHandler.ahk](lib-a_to_h/EventHandler.ahk)
0.72kb - 2016-09-15 | lib-a_to_h| -| **0396** | [EventIsDue.ahk](lib-a_to_h/EventIsDue.ahk)
5.20kb - 2018-05-05 | lib-a_to_h| -| **0397** | [EventLibrary.ahk](lib-a_to_h/EventLibrary.ahk)
5.18kb - 2018-05-25 | lib-a_to_h| -| **0398** | [EWinHook.ahk](lib-a_to_h/EWinHook.ahk)
10.08kb - 2018-06-02 | lib-a_to_h| -| **0399** | [Exec.ahk](lib-a_to_h/Exec.ahk)
25.51kb - 2018-06-02 | lib-a_to_h| -| **0400** | [ExecScript (2).ahk](lib-a_to_h/ExecScript%20(2).ahk)
5.17kb - 2018-12-01 | lib-a_to_h| -| **0401** | [ExecScript.ahk](lib-a_to_h/ExecScript.ahk)
0.74kb - 2018-06-02 | lib-a_to_h| -| **0402** | [ExecuteSQL.ahk](lib-a_to_h/ExecuteSQL.ahk)
9.06kb - 2018-12-02 | lib-a_to_h| -| **0403** | [ExecuteSQL_orig.ahk](lib-a_to_h/ExecuteSQL_orig.ahk)
7.50kb - 2018-12-02 | lib-a_to_h| -| **0404** | [ExeFunctions.ahk](lib-a_to_h/ExeFunctions.ahk)
0.87kb - 2016-09-15 | lib-a_to_h| -| **0405** | [Expand.ahk](lib-a_to_h/Expand.ahk)
1.03kb - 2018-02-28 | lib-a_to_h| -| **0406** | [ExpandEnv.ahk](lib-a_to_h/ExpandEnv.ahk)
0.15kb - 2015-11-20 | lib-a_to_h| -| **0407** | [ExpandEnvironmentStrings.ahk](lib-a_to_h/ExpandEnvironmentStrings.ahk)
0.64kb - 2019-08-03 | lib-a_to_h| -| **0408** | [ExpandPostIDs.ahk](lib-a_to_h/ExpandPostIDs.ahk)
3.91kb - 2018-02-28 | lib-a_to_h| -| **0409** | [ExploreDir.ahk](lib-a_to_h/ExploreDir.ahk)
2.21kb - 2018-03-08 | lib-a_to_h| -| **0410** | [ExploreObj.ahk](lib-a_to_h/ExploreObj.ahk)
0.30kb - 2016-09-15 | lib-a_to_h| -| **0411** | [Explorer (2).ahk](lib-a_to_h/Explorer%20(2).ahk)
2.48kb - 2017-10-23 | lib-a_to_h| -| **0412** | [Explorer.ahk](lib-a_to_h/Explorer.ahk)
2.21kb - 2019-04-10 | lib-a_to_h| -| **0413** | [ExplorerGrouping.ahk](lib-a_to_h/ExplorerGrouping.ahk)
4.10kb - 2019-04-10 | lib-a_to_h| -| **0414** | [explorer_path.ahk](lib-a_to_h/explorer_path.ahk)
1.24kb - 2015-03-20 | lib-a_to_h| -| **0415** | [ExternalHeaderLib.ahk](lib-a_to_h/ExternalHeaderLib.ahk)
9.17kb - 2019-01-14 | lib-a_to_h| -| **0416** | [externalIP.ahk](lib-a_to_h/externalIP.ahk)
0.82kb - 2018-10-30 | lib-a_to_h| -| **0417** | [externalIP_old.ahk](lib-a_to_h/externalIP_old.ahk)
0.47kb - 2018-10-30 | lib-a_to_h| -| **0418** | [ExtractIconFromExecutable.ahk](lib-a_to_h/ExtractIconFromExecutable.ahk)
2.37kb - 2018-06-02 | lib-a_to_h| -| **0419** | [ExtractTableData.ahk](lib-a_to_h/ExtractTableData.ahk)
3.89kb - 2019-10-27 | lib-a_to_h| -| **0420** | [Facade_Array.ahk](lib-a_to_h/Facade_Array.ahk)
8.48kb - 2018-12-20 | lib-a_to_h| -| **0421** | [Facade_Func.ahk](lib-a_to_h/Facade_Func.ahk)
9.54kb - 2018-12-20 | lib-a_to_h| -| **0422** | [Facade_Ht.ahk](lib-a_to_h/Facade_Ht.ahk)
4.48kb - 2018-12-20 | lib-a_to_h| -| **0423** | [Facade_Math.ahk](lib-a_to_h/Facade_Math.ahk)
6.35kb - 2018-12-20 | lib-a_to_h| -| **0424** | [Facade_Nested.ahk](lib-a_to_h/Facade_Nested.ahk)
5.32kb - 2018-12-20 | lib-a_to_h| -| **0425** | [Facade_Op.ahk](lib-a_to_h/Facade_Op.ahk)
4.32kb - 2018-12-20 | lib-a_to_h| -| **0426** | [Facade_Validate.ahk](lib-a_to_h/Facade_Validate.ahk)
9.87kb - 2018-12-20 | lib-a_to_h| -| **0427** | [Factor.ahk](lib-a_to_h/Factor.ahk)
0.90kb - 2018-03-08 | lib-a_to_h| -| **0428** | [Factorial.ahk](lib-a_to_h/Factorial.ahk)
0.38kb - 2018-03-08 | lib-a_to_h| -| **0429** | [Fade.ahk](lib-a_to_h/Fade.ahk)
0.66kb - 2017-10-23 | lib-a_to_h| -| **0430** | [FAILED.ahk](lib-a_to_h/FAILED.ahk)
0.04kb - 2018-06-02 | lib-a_to_h| -| **0431** | [FC.ahk](lib-a_to_h/FC.ahk)
68.68kb - 2018-06-02 | lib-a_to_h| -| **0432** | [FcnLib-Misc.ahk](lib-a_to_h/FcnLib-Misc.ahk)
1.05kb - 2018-06-02 | lib-a_to_h| -| **0433** | [FcnLib-Opera.ahk](lib-a_to_h/FcnLib-Opera.ahk)
1.85kb - 2018-06-02 | lib-a_to_h| -| **0434** | [FcnLib-Rewrites.ahk](lib-a_to_h/FcnLib-Rewrites.ahk)
13.83kb - 2018-06-02 | lib-a_to_h| -| **0435** | [FcnLib.ahk](lib-a_to_h/FcnLib.ahk)
48.74kb - 2018-06-02 | lib-a_to_h| -| **0436** | [FE.ahk](lib-a_to_h/FE.ahk)
2.76kb - 2018-06-02 | lib-a_to_h| -| **0437** | [FFAAS.ahk](lib-a_to_h/FFAAS.ahk)
18.65kb - 2018-06-02 | lib-a_to_h| -| **0438** | [FGP.ahk](lib-a_to_h/FGP.ahk)
3.23kb - 2018-06-02 | lib-a_to_h| -| **0439** | [Fifo.ahk](lib-a_to_h/Fifo.ahk)
1.02kb - 2018-06-02 | lib-a_to_h| -| **0440** | [File (3).ahk](lib-a_to_h/File%20(3).ahk)
3.91kb - 2018-06-02 | lib-a_to_h| -| **0441** | [File.ahk](lib-a_to_h/File.ahk)
5.60kb - 2018-06-02 | lib-a_to_h| -| **0442** | [FileExtract.ahk](lib-a_to_h/FileExtract.ahk)
6.75kb - 2018-06-02 | lib-a_to_h| -| **0443** | [FileFunctions_JEE.ahk](lib-a_to_h/FileFunctions_JEE.ahk)
2.05kb - 2018-07-06 | lib-a_to_h| -| **0444** | [FileGetInfo.ahk](lib-a_to_h/FileGetInfo.ahk)
1.19kb - 2018-06-02 | lib-a_to_h| -| **0445** | [FileGetVersionInfo.ahk](lib-a_to_h/FileGetVersionInfo.ahk)
1.55kb - 2018-06-02 | lib-a_to_h| -| **0446** | [FileGetVersionInfo_AW.ahk](lib-a_to_h/FileGetVersionInfo_AW.ahk)
1.38kb - 2019-02-08 | lib-a_to_h| -| **0447** | [FileHelperAndHash.ahk](lib-a_to_h/FileHelperAndHash.ahk)
6.56kb - 2018-06-02 | lib-a_to_h| -| **0448** | [FileInstallList.ahk](lib-a_to_h/FileInstallList.ahk)
1.55kb - 2018-06-02 | lib-a_to_h| -| **0449** | [fileIsBinary.ahk](lib-a_to_h/fileIsBinary.ahk)
0.29kb - 2018-06-02 | lib-a_to_h| -| **0450** | [FileIsType.ahk](lib-a_to_h/FileIsType.ahk)
38.14kb - 2018-07-06 | lib-a_to_h| -| **0451** | [FileMD5.ahk](lib-a_to_h/FileMD5.ahk)
2.58kb - 2011-04-25 | lib-a_to_h| -| **0452** | [FileQ.ahk](lib-a_to_h/FileQ.ahk)
0.45kb - 2018-10-09 | lib-a_to_h| -| **0453** | [FileReadLines.ahk](lib-a_to_h/FileReadLines.ahk)
2.63kb - 2019-04-19 | lib-a_to_h| -| **0454** | [FileReplace.ahk](lib-a_to_h/FileReplace.ahk)
0.21kb - 2018-06-02 | lib-a_to_h| -| **0455** | [FileResData.ahk](lib-a_to_h/FileResData.ahk)
8.61kb - 2018-03-08 | lib-a_to_h| -| **0456** | [FilesearchByCriteria.ahk](lib-a_to_h/FilesearchByCriteria.ahk)
2.88kb - 2019-04-20 | lib-a_to_h| -| **0457** | [FileTail.ahk](lib-a_to_h/FileTail.ahk)
1.65kb - 2018-06-02 | lib-a_to_h| -| **0458** | [fileUnblock.ahk](lib-a_to_h/fileUnblock.ahk)
0.09kb - 2018-10-30 | lib-a_to_h| -| **0459** | [FileVerInfo (2).ahk](lib-a_to_h/FileVerInfo%20(2).ahk)
5.07kb - 2018-07-06 | lib-a_to_h| -| **0460** | [FileVerInfo.ahk](lib-a_to_h/FileVerInfo.ahk)
5.37kb - 2018-06-02 | lib-a_to_h| -| **0461** | [FindClick.ahk](lib-a_to_h/FindClick.ahk)
101.65kb - 2018-06-02 | lib-a_to_h| -| **0462** | [findexe.ahk](lib-a_to_h/findexe.ahk)
3.78kb - 2018-02-28 | lib-a_to_h| -| **0463** | [FindFunc.ahk](lib-a_to_h/FindFunc.ahk)
0.17kb - 2018-06-02 | lib-a_to_h| -| **0464** | [FindLabel.ahk](lib-a_to_h/FindLabel.ahk)
0.17kb - 2018-06-02 | lib-a_to_h| -| **0465** | [FindLimit.ahk](lib-a_to_h/FindLimit.ahk)
0.11kb - 2015-05-21 | lib-a_to_h| -| **0466** | [FindText on Screen.ahk](lib-a_to_h/FindText%20on%20Screen.ahk)
14.63kb - 2018-05-27 | lib-a_to_h| -| **0467** | [FixURI.ahk](lib-a_to_h/FixURI.ahk)
2.04kb - 2018-06-02 | lib-a_to_h| -| **0468** | [FlightLogMetrics_23.ahk](lib-a_to_h/FlightLogMetrics_23.ahk)
99.04kb - 2019-07-26 | lib-a_to_h| -| **0469** | [FloatToFraction.ahk](lib-a_to_h/FloatToFraction.ahk)
4.63kb - 2016-02-05 | lib-a_to_h| -| **0470** | [FlushDNS.ahk](lib-a_to_h/FlushDNS.ahk)
0.61kb - 2018-06-02 | lib-a_to_h| -| **0471** | [Fnt.ahk](lib-a_to_h/Fnt.ahk)
135.65kb - 2016-11-30 | lib-a_to_h| -| **0472** | [fn_CMsgBox.ahk](lib-a_to_h/fn_CMsgBox.ahk)
5.26kb - 2018-06-02 | lib-a_to_h| -| **0473** | [Focusless Scroll.ahk](lib-a_to_h/Focusless%20Scroll.ahk)
5.10kb - 2019-04-12 | lib-a_to_h| -| **0474** | [Font.ahk](lib-a_to_h/Font.ahk)
12.71kb - 2018-03-08 | lib-a_to_h| -| **0475** | [Form Filler.ahk](lib-a_to_h/Form%20Filler.ahk)
2.36kb - 2018-06-02 | lib-a_to_h| -| **0476** | [Form.ahk](lib-a_to_h/Form.ahk)
19.26kb - 2018-06-02 | lib-a_to_h| -| **0477** | [format.ahk](lib-a_to_h/format.ahk)
3.15kb - 2018-06-20 | lib-a_to_h| -| **0478** | [Format4Csv.ahk](lib-a_to_h/Format4Csv.ahk)
0.79kb - 2018-06-02 | lib-a_to_h| -| **0479** | [FormatAHK.ahk](lib-a_to_h/FormatAHK.ahk)
16.21kb - 2019-11-02 | lib-a_to_h| -| **0480** | [FormatHRESULT.ahk](lib-a_to_h/FormatHRESULT.ahk)
0.36kb - 2018-06-02 | lib-a_to_h| -| **0481** | [FormatNumberCommas.ahk](lib-a_to_h/FormatNumberCommas.ahk)
1.81kb - 2018-12-02 | lib-a_to_h| -| **0482** | [formatTickCount.ahk](lib-a_to_h/formatTickCount.ahk)
0.48kb - 2018-06-02 | lib-a_to_h| -| **0483** | [ForumFunctions.ahk](lib-a_to_h/ForumFunctions.ahk)
7.08kb - 2019-07-31 | lib-a_to_h| -| **0484** | [FreeImage.ahk](lib-a_to_h/FreeImage.ahk)
13.88kb - 2018-06-02 | lib-a_to_h| -| **0485** | [FS.ahk](lib-a_to_h/FS.ahk)
7.42kb - 2018-06-02 | lib-a_to_h| -| **0486** | [ftp.ahk](lib-a_to_h/ftp.ahk)
9.15kb - 2018-06-02 | lib-a_to_h| -| **0487** | [FuncAutokeyWord.ahk](lib-a_to_h/FuncAutokeyWord.ahk)
3.04kb - 2019-05-06 | lib-a_to_h| -| **0488** | [funcs.ahk](lib-a_to_h/funcs.ahk)
14.26kb - 2019-08-28 | lib-a_to_h| -| **0489** | [FuncsForClasses_misc.ahk](lib-a_to_h/FuncsForClasses_misc.ahk)
10.12kb - 2018-11-06 | lib-a_to_h| -| **0490** | [funcStrRegEx.ahk](lib-a_to_h/funcStrRegEx.ahk)
17.62kb - 2019-07-31 | lib-a_to_h| -| **0491** | [Functions (2).ahk](lib-a_to_h/Functions%20(2).ahk)
18.36kb - 2019-10-31 | lib-a_to_h| -| **0492** | [Functions.ahk](lib-a_to_h/Functions.ahk)
6.97kb - 2018-06-02 | lib-a_to_h| -| **0493** | [Func_IniSettingsEditor_v6.ahk](lib-a_to_h/Func_IniSettingsEditor_v6.ahk)
23.90kb - 2018-06-02 | lib-a_to_h| -| **0494** | [Fuzzy(2).ahk](lib-a_to_h/Fuzzy(2).ahk)
3.02kb - 2019-05-12 | lib-a_to_h| -| **0495** | [Fuzzy.ahk](lib-a_to_h/Fuzzy.ahk)
3.02kb - 2019-01-14 | lib-a_to_h| -| **0496** | [FuzzySearch.ahk](lib-a_to_h/FuzzySearch.ahk)
3.82kb - 2018-11-23 | lib-a_to_h| -| **0497** | [g.ahk](lib-a_to_h/g.ahk)
0.35kb - 2018-08-05 | lib-a_to_h| -| **0498** | [GActiveXCtl.ahk](lib-a_to_h/GActiveXCtl.ahk)
0.28kb - 2018-06-02 | lib-a_to_h| -| **0499** | [Gaussian.ahk](lib-a_to_h/Gaussian.ahk)
0.30kb - 2019-05-26 | lib-a_to_h| -| **0500** | [GButtonCtl.ahk](lib-a_to_h/GButtonCtl.ahk)
0.08kb - 2018-06-02 | lib-a_to_h| -| **0501** | [GCD.ahk](lib-a_to_h/GCD.ahk)
0.24kb - 2018-03-08 | lib-a_to_h| -| **0502** | [Gdip.ahk](lib-a_to_h/Gdip.ahk)
95.53kb - 2018-06-02 | lib-a_to_h| -| **0503** | [GDIPlusHelper.ahk](lib-a_to_h/GDIPlusHelper.ahk)
28.20kb - 2018-06-02 | lib-a_to_h| -| **0504** | [GDIplusWrapper.ahk](lib-a_to_h/GDIplusWrapper.ahk)
21.41kb - 2018-06-02 | lib-a_to_h| -| **0505** | [gdiplus_outlinedtext.ahk](lib-a_to_h/gdiplus_outlinedtext.ahk)
7.02kb - 2018-06-02 | lib-a_to_h| -| **0506** | [GDIPrinter.ahk](lib-a_to_h/GDIPrinter.ahk)
1.20kb - 2014-08-07 | lib-a_to_h| -| **0507** | [Gdip_AddPathBeziers.ahk](lib-a_to_h/Gdip_AddPathBeziers.ahk)
3.90kb - 2018-06-02 | lib-a_to_h| -| **0508** | [Gdip_All-v1.45.ahk](lib-a_to_h/Gdip_All-v1.45.ahk)
95.30kb - 2018-06-02 | lib-a_to_h| -| **0509** | [Gdip_All-v1.50.ahk](lib-a_to_h/Gdip_All-v1.50.ahk)
99.40kb - 2017-03-04 | lib-a_to_h| -| **0510** | [Gdip_All-V1.54.ahk](lib-a_to_h/Gdip_All-V1.54.ahk)
94.17kb - 2019-09-21 | lib-a_to_h| -| **0511** | [Gdip_All.ahk](lib-a_to_h/Gdip_All.ahk)
262.30kb - 2019-09-19 | lib-a_to_h| -| **0512** | [Gdip_box.ahk](lib-a_to_h/Gdip_box.ahk)
3.43kb - 2015-02-18 | lib-a_to_h| -| **0513** | [Gdip_draw_n_Gui.ahk](lib-a_to_h/Gdip_draw_n_Gui.ahk)
2.72kb - 2018-06-02 | lib-a_to_h| -| **0514** | [Gdip_Ext.ahk](lib-a_to_h/Gdip_Ext.ahk)
9.65kb - 2018-06-02 | lib-a_to_h| -| **0515** | [Gdip_ImageSearch.ahk](lib-a_to_h/Gdip_ImageSearch.ahk)
33.17kb - 2018-06-02 | lib-a_to_h| -| **0516** | [Gdip_TilePicture.ahk](lib-a_to_h/Gdip_TilePicture.ahk)
1.83kb - 2018-11-14 | lib-a_to_h| -| **0517** | [GEditCtl.ahk](lib-a_to_h/GEditCtl.ahk)
0.08kb - 2018-06-02 | lib-a_to_h| -| **0518** | [genrandom.ahk](lib-a_to_h/genrandom.ahk)
1.09kb - 2019-05-09 | lib-a_to_h| -| **0519** | [Geolocation.ahk](lib-a_to_h/Geolocation.ahk)
5.40kb - 2016-03-11 | lib-a_to_h| -| **0520** | [Get Scintilla Constants and Message Numbers.ahk](lib-a_to_h/Get%20Scintilla%20Constants%20and%20Message%20Numbers.ahk)
6.78kb - 2019-05-16 | lib-a_to_h| -| **0521** | [get-active-browser-url.ahk](lib-a_to_h/get-active-browser-url.ahk)
5.58kb - 2015-03-20 | lib-a_to_h| -| **0522** | [GetActiveBrowserURL.ahk](lib-a_to_h/GetActiveBrowserURL.ahk)
6.41kb - 2016-09-15 | lib-a_to_h| -| **0523** | [GetActiveObjects.ahk](lib-a_to_h/GetActiveObjects.ahk)
1.41kb - 2018-11-04 | lib-a_to_h| -| **0524** | [GetActiveWindow.ahk](lib-a_to_h/GetActiveWindow.ahk)
0.29kb - 2018-03-08 | lib-a_to_h| -| **0525** | [GetAdapterAdresses.ahk](lib-a_to_h/GetAdapterAdresses.ahk)
1.97kb - 2019-05-27 | lib-a_to_h| -| **0526** | [GetAddressOfData.ahk](lib-a_to_h/GetAddressOfData.ahk)
3.32kb - 2018-08-16 | lib-a_to_h| -| **0527** | [GetAppsInfo.ahk](lib-a_to_h/GetAppsInfo.ahk)
2.61kb - 2019-04-27 | lib-a_to_h| -| **0528** | [GetAvailableFileName.ahk](lib-a_to_h/GetAvailableFileName.ahk)
3.03kb - 2018-06-02 | lib-a_to_h| -| **0529** | [GetBinaryType (2).ahk](lib-a_to_h/GetBinaryType%20(2).ahk)
0.55kb - 2019-05-27 | lib-a_to_h| -| **0530** | [GetBinaryType.ahk](lib-a_to_h/GetBinaryType.ahk)
1.09kb - 2018-03-08 | lib-a_to_h| -| **0531** | [GetChildHWND.ahk](lib-a_to_h/GetChildHWND.ahk)
0.77kb - 2018-06-02 | lib-a_to_h| -| **0532** | [GetClipboardData.ahk](lib-a_to_h/GetClipboardData.ahk)
1.10kb - 2019-05-03 | lib-a_to_h| -| **0533** | [GetColor.ahk](lib-a_to_h/GetColor.ahk)
2.60kb - 2018-12-08 | lib-a_to_h| -| **0534** | [GetColumnList.ahk](lib-a_to_h/GetColumnList.ahk)
1.21kb - 2018-12-02 | lib-a_to_h| -| **0535** | [GetCOMError.ahk](lib-a_to_h/GetCOMError.ahk)
0.67kb - 2019-04-13 | lib-a_to_h| -| **0536** | [GetCommonPath.ahk](lib-a_to_h/GetCommonPath.ahk)
1.96kb - 2018-06-02 | lib-a_to_h| -| **0537** | [GetConnectionString.ahk](lib-a_to_h/GetConnectionString.ahk)
1.02kb - 2018-12-02 | lib-a_to_h| -| **0538** | [GetControlsInfo.ahk](lib-a_to_h/GetControlsInfo.ahk)
1.93kb - 2018-06-02 | lib-a_to_h| -| **0539** | [GetCurrencyFormat.ahk](lib-a_to_h/GetCurrencyFormat.ahk)
1.41kb - 2019-08-30 | lib-a_to_h| -| **0540** | [GetCurrencyFormatEx.ahk](lib-a_to_h/GetCurrencyFormatEx.ahk)
1.44kb - 2019-08-30 | lib-a_to_h| -| **0541** | [GetCurrentProcess.ahk](lib-a_to_h/GetCurrentProcess.ahk)
0.33kb - 2018-08-16 | lib-a_to_h| -| **0542** | [getCurrentTime.ahk](lib-a_to_h/getCurrentTime.ahk)
0.79kb - 2018-10-30 | lib-a_to_h| -| **0543** | [GetDesktopWallpaper.ahk](lib-a_to_h/GetDesktopWallpaper.ahk)
0.46kb - 2018-03-08 | lib-a_to_h| -| **0544** | [GetDirParent.ahk](lib-a_to_h/GetDirParent.ahk)
0.39kb - 2018-03-08 | lib-a_to_h| -| **0545** | [GetDllBase.ahk](lib-a_to_h/GetDllBase.ahk)
0.76kb - 2018-06-02 | lib-a_to_h| -| **0546** | [GetDnsAddress.ahk](lib-a_to_h/GetDnsAddress.ahk)
1.18kb - 2018-06-02 | lib-a_to_h| -| **0547** | [GetDriveLetter.ahk](lib-a_to_h/GetDriveLetter.ahk)
1.23kb - 2018-05-05 | lib-a_to_h| -| **0548** | [GetDriveType.ahk](lib-a_to_h/GetDriveType.ahk)
1.60kb - 2018-03-08 | lib-a_to_h| -| **0549** | [GetDurationFromMilliseconds.ahk](lib-a_to_h/GetDurationFromMilliseconds.ahk)
1.00kb - 2018-05-05 | lib-a_to_h| -| **0550** | [GetEnv.ahk](lib-a_to_h/GetEnv.ahk)
0.44kb - 2018-06-02 | lib-a_to_h| -| **0551** | [GetEnvironmentVariables.ahk](lib-a_to_h/GetEnvironmentVariables.ahk)
4.53kb - 2018-12-02 | lib-a_to_h| -| **0552** | [GetExeMachine.ahk](lib-a_to_h/GetExeMachine.ahk)
0.17kb - 2018-06-02 | lib-a_to_h| -| **0553** | [GetFFTab.ahk](lib-a_to_h/GetFFTab.ahk)
1.81kb - 2014-03-20 | lib-a_to_h| -| **0554** | [GetFileAttributes.ahk](lib-a_to_h/GetFileAttributes.ahk)
1.65kb - 2018-03-08 | lib-a_to_h| -| **0555** | [GetFileEncoding (2).ahk](lib-a_to_h/GetFileEncoding%20(2).ahk)
3.35kb - 2018-03-08 | lib-a_to_h| -| **0556** | [GetFileEncoding.ahk](lib-a_to_h/GetFileEncoding.ahk)
0.45kb - 2018-06-02 | lib-a_to_h| -| **0557** | [GetFileFolderSize.ahk](lib-a_to_h/GetFileFolderSize.ahk)
0.68kb - 2018-06-02 | lib-a_to_h| -| **0558** | [GetFileOwner.ahk](lib-a_to_h/GetFileOwner.ahk)
0.86kb - 2018-03-08 | lib-a_to_h| -| **0559** | [GetFileVersionInfo 1.4.ahk](lib-a_to_h/GetFileVersionInfo%201.4.ahk)
2.34kb - 2017-07-14 | lib-a_to_h| -| **0560** | [GetFileVersionInfo.ahk](lib-a_to_h/GetFileVersionInfo.ahk)
2.00kb - 2018-03-08 | lib-a_to_h| -| **0561** | [GetFocusedHwnd.ahk](lib-a_to_h/GetFocusedHwnd.ahk)
0.25kb - 2016-09-15 | lib-a_to_h| -| **0562** | [GetFreeDriveSpace.ahk](lib-a_to_h/GetFreeDriveSpace.ahk)
0.50kb - 2018-06-02 | lib-a_to_h| -| **0563** | [GetFullSysVer.ahk](lib-a_to_h/GetFullSysVer.ahk)
2.60kb - 2017-07-14 | lib-a_to_h| -| **0564** | [GetHeaderDate.ahk](lib-a_to_h/GetHeaderDate.ahk)
5.42kb - 2019-03-30 | lib-a_to_h| -| **0565** | [GetHotkeyList.ahk](lib-a_to_h/GetHotkeyList.ahk)
5.58kb - 2018-12-02 | lib-a_to_h| -| **0566** | [GetIEWindowInfo.ahk](lib-a_to_h/GetIEWindowInfo.ahk)
0.55kb - 2018-06-02 | lib-a_to_h| -| **0567** | [GetImageSize (2).ahk](lib-a_to_h/GetImageSize%20(2).ahk)
42.10kb - 2019-10-29 | lib-a_to_h| -| **0568** | [getImageSize.ahk](lib-a_to_h/getImageSize.ahk)
0.60kb - 2018-10-30 | lib-a_to_h| -| **0569** | [getInstalledPrograms.ahk](lib-a_to_h/getInstalledPrograms.ahk)
0.37kb - 2018-06-02 | lib-a_to_h| -| **0570** | [GetJScriptObject.ahk](lib-a_to_h/GetJScriptObject.ahk)
0.99kb - 2019-04-27 | lib-a_to_h| -| **0571** | [getKey.ahk](lib-a_to_h/getKey.ahk)
0.46kb - 2019-02-08 | lib-a_to_h| -| **0572** | [getKeyFromValue.ahk](lib-a_to_h/getKeyFromValue.ahk)
0.33kb - 2019-02-08 | lib-a_to_h| -| **0573** | [GetKnownFolderPath.ahk](lib-a_to_h/GetKnownFolderPath.ahk)
2.73kb - 2018-03-08 | lib-a_to_h| -| **0574** | [GetListViewItems.ahk](lib-a_to_h/GetListViewItems.ahk)
5.99kb - 2018-06-02 | lib-a_to_h| -| **0575** | [GetListViewText.ahk](lib-a_to_h/GetListViewText.ahk)
6.14kb - 2018-06-02 | lib-a_to_h| -| **0576** | [GetLogText.ahk](lib-a_to_h/GetLogText.ahk)
0.34kb - 2018-05-05 | lib-a_to_h| -| **0577** | [GetMacAddress.ahk](lib-a_to_h/GetMacAddress.ahk)
1.26kb - 2018-06-02 | lib-a_to_h| -| **0578** | [GetMachineType.ahk](lib-a_to_h/GetMachineType.ahk)
8.01kb - 2018-03-08 | lib-a_to_h| -| **0579** | [GetModuleBaseAddr.ahk](lib-a_to_h/GetModuleBaseAddr.ahk)
1.65kb - 2018-06-02 | lib-a_to_h| -| **0580** | [GetMonthNum.ahk](lib-a_to_h/GetMonthNum.ahk)
0.68kb - 2018-05-05 | lib-a_to_h| -| **0581** | [GetMostRecentTime.ahk](lib-a_to_h/GetMostRecentTime.ahk)
0.43kb - 2018-05-05 | lib-a_to_h| -| **0582** | [GetNetSpeed.ahk](lib-a_to_h/GetNetSpeed.ahk)
0.65kb - 2018-07-16 | lib-a_to_h| -| **0583** | [GetNumberFormat.ahk](lib-a_to_h/GetNumberFormat.ahk)
1.40kb - 2019-08-30 | lib-a_to_h| -| **0584** | [GetNumberFormatEx.ahk](lib-a_to_h/GetNumberFormatEx.ahk)
1.43kb - 2019-08-30 | lib-a_to_h| -| **0585** | [GetObject.ahk](lib-a_to_h/GetObject.ahk)
1.14kb - 2018-03-08 | lib-a_to_h| -| **0586** | [GetObjectType.ahk](lib-a_to_h/GetObjectType.ahk)
0.21kb - 2018-03-08 | lib-a_to_h| -| **0587** | [GetOSVersion.ahk](lib-a_to_h/GetOSVersion.ahk)
11.52kb - 2018-06-02 | lib-a_to_h| -| **0588** | [GetParentDir.ahk](lib-a_to_h/GetParentDir.ahk)
0.20kb - 2018-06-02 | lib-a_to_h| -| **0589** | [GetPathFromHandle.ahk](lib-a_to_h/GetPathFromHandle.ahk)
0.67kb - 2018-03-08 | lib-a_to_h| -| **0590** | [getPosFromAngle.ahk](lib-a_to_h/getPosFromAngle.ahk)
0.15kb - 2018-10-30 | lib-a_to_h| -| **0591** | [getProcessBaseAddress.AHK](lib-a_to_h/getProcessBaseAddress.AHK)
0.57kb - 2018-06-02 | lib-a_to_h| -| **0592** | [getProcessBassAddressFromModules.ahk](lib-a_to_h/getProcessBassAddressFromModules.ahk)
2.54kb - 2018-06-02 | lib-a_to_h| -| **0593** | [GetProcessCommandLine.ahk](lib-a_to_h/GetProcessCommandLine.ahk)
4.38kb - 2018-08-16 | lib-a_to_h| -| **0594** | [getProcesses.AHK](lib-a_to_h/getProcesses.AHK)
2.72kb - 2018-06-02 | lib-a_to_h| -| **0595** | [getProcessFileVersion.ahk](lib-a_to_h/getProcessFileVersion.ahk)
1.98kb - 2018-06-02 | lib-a_to_h| -| **0596** | [GetProcessMemoryInfo.ahk](lib-a_to_h/GetProcessMemoryInfo.ahk)
3.06kb - 2018-08-16 | lib-a_to_h| -| **0597** | [GetProcessModules.ahk](lib-a_to_h/GetProcessModules.ahk)
1.67kb - 2018-06-02 | lib-a_to_h| -| **0598** | [GetProcessPath.ahk](lib-a_to_h/GetProcessPath.ahk)
1.24kb - 2018-08-16 | lib-a_to_h| -| **0599** | [GetProcessPebAddr.ahk](lib-a_to_h/GetProcessPebAddr.ahk)
1.51kb - 2018-08-16 | lib-a_to_h| -| **0600** | [GetProcessPriority.ahk](lib-a_to_h/GetProcessPriority.ahk)
2.13kb - 2018-08-16 | lib-a_to_h| -| **0601** | [GetProcessThreads.ahk](lib-a_to_h/GetProcessThreads.ahk)
1.34kb - 2018-06-02 | lib-a_to_h| -| **0602** | [GetProcessWorkingDir.ahk](lib-a_to_h/GetProcessWorkingDir.ahk)
1.71kb - 2018-06-02 | lib-a_to_h| -| **0603** | [GetProcessWorkingSetSize.ahk](lib-a_to_h/GetProcessWorkingSetSize.ahk)
1.55kb - 2018-08-16 | lib-a_to_h| -| **0604** | [GetProgramWaveVolume.AHK](lib-a_to_h/GetProgramWaveVolume.AHK)
0.26kb - 2018-06-02 | lib-a_to_h| -| **0605** | [getScreenAspectRatio.ahk](lib-a_to_h/getScreenAspectRatio.ahk)
0.50kb - 2018-06-02 | lib-a_to_h| -| **0606** | [getScriptHandle.ahk](lib-a_to_h/getScriptHandle.ahk)
0.19kb - 2018-06-02 | lib-a_to_h| -| **0607** | [getSelected.ahk](lib-a_to_h/getSelected.ahk)
0.21kb - 2018-10-30 | lib-a_to_h| -| **0608** | [GetServerName.ahk](lib-a_to_h/GetServerName.ahk)
1.33kb - 2018-05-05 | lib-a_to_h| -| **0609** | [GetStockObject.ahk](lib-a_to_h/GetStockObject.ahk)
0.34kb - 2018-03-08 | lib-a_to_h| -| **0610** | [GetSystemDateFormat.ahk](lib-a_to_h/GetSystemDateFormat.ahk)
1.04kb - 2018-05-05 | lib-a_to_h| -| **0611** | [GetSystemErrorText.ahk](lib-a_to_h/GetSystemErrorText.ahk)
0.07kb - 2018-05-05 | lib-a_to_h| -| **0612** | [getSystemLanguage.ahk](lib-a_to_h/getSystemLanguage.ahk)
4.72kb - 2018-06-02 | lib-a_to_h| -| **0613** | [GetSystemVersion.ahk](lib-a_to_h/GetSystemVersion.ahk)
1.75kb - 2018-03-08 | lib-a_to_h| -| **0614** | [GetTaskInfos.ahk](lib-a_to_h/GetTaskInfos.ahk)
0.83kb - 2019-05-09 | lib-a_to_h| -| **0615** | [GetTcpTable.ahk](lib-a_to_h/GetTcpTable.ahk)
2.43kb - 2018-06-02 | lib-a_to_h| -| **0616** | [GetTempFile.ahk](lib-a_to_h/GetTempFile.ahk)
1.32kb - 2018-03-08 | lib-a_to_h| -| **0617** | [GetTextExtentPoint.ahk](lib-a_to_h/GetTextExtentPoint.ahk)
1.51kb - 2019-04-12 | lib-a_to_h| -| **0618** | [GetThreadStartAddr.ahk](lib-a_to_h/GetThreadStartAddr.ahk)
2.29kb - 2018-06-02 | lib-a_to_h| -| **0619** | [GetTimeDifference.ahk](lib-a_to_h/GetTimeDifference.ahk)
1.20kb - 2018-05-05 | lib-a_to_h| -| **0620** | [GetTuples.ahk](lib-a_to_h/GetTuples.ahk)
2.80kb - 2016-02-05 | lib-a_to_h| -| **0621** | [GetUdpTable.ahk](lib-a_to_h/GetUdpTable.ahk)
1.81kb - 2018-06-02 | lib-a_to_h| -| **0622** | [getUTCOffset.ahk](lib-a_to_h/getUTCOffset.ahk)
0.33kb - 2018-10-30 | lib-a_to_h| -| **0623** | [GetVolumePathNames.ahk](lib-a_to_h/GetVolumePathNames.ahk)
1.41kb - 2018-03-08 | lib-a_to_h| -| **0624** | [GetWanIp.ahk](lib-a_to_h/GetWanIp.ahk)
0.55kb - 2018-07-16 | lib-a_to_h| -| **0625** | [GetWeekDay_TwoLang.ahk](lib-a_to_h/GetWeekDay_TwoLang.ahk)
2.21kb - 2018-06-02 | lib-a_to_h| -| **0626** | [getWinClientSize.ahk](lib-a_to_h/getWinClientSize.ahk)
0.18kb - 2018-10-30 | lib-a_to_h| -| **0627** | [GetWindowClassStyle.ahk](lib-a_to_h/GetWindowClassStyle.ahk)
0.74kb - 2018-11-23 | lib-a_to_h| -| **0628** | [GetWindowInfo.ahk](lib-a_to_h/GetWindowInfo.ahk)
4.55kb - 2018-06-02 | lib-a_to_h| -| **0629** | [GetWindowParent.ahk](lib-a_to_h/GetWindowParent.ahk)
0.49kb - 2018-03-08 | lib-a_to_h| -| **0630** | [GetWindowPos.ahk](lib-a_to_h/GetWindowPos.ahk)
0.96kb - 2018-03-08 | lib-a_to_h| -| **0631** | [GetWindowProcessPath.ahk](lib-a_to_h/GetWindowProcessPath.ahk)
1.44kb - 2018-03-08 | lib-a_to_h| -| **0632** | [GetWindowThreadProcessId.ahk](lib-a_to_h/GetWindowThreadProcessId.ahk)
1.09kb - 2018-03-08 | lib-a_to_h| -| **0633** | [GetWindowTitle.ahk](lib-a_to_h/GetWindowTitle.ahk)
0.80kb - 2018-03-08 | lib-a_to_h| -| **0634** | [GetWindowtOwner.ahk](lib-a_to_h/GetWindowtOwner.ahk)
0.47kb - 2018-03-08 | lib-a_to_h| -| **0635** | [GetWindowTransparency.ahk](lib-a_to_h/GetWindowTransparency.ahk)
0.75kb - 2018-03-08 | lib-a_to_h| -| **0636** | [Get_Explorer_Paths.ahk](lib-a_to_h/Get_Explorer_Paths.ahk)
2.56kb - 2018-06-02 | lib-a_to_h| -| **0637** | [get_variance.ahk](lib-a_to_h/get_variance.ahk)
0.90kb - 2019-05-06 | lib-a_to_h| -| **0638** | [GIThubReleasesAPI.ahk](lib-a_to_h/GIThubReleasesAPI.ahk)
1.57kb - 2018-05-23 | lib-a_to_h| -| **0639** | [GitHub_UpdateCheck.ahk](lib-a_to_h/GitHub_UpdateCheck.ahk)
2.55kb - 2018-11-14 | lib-a_to_h| -| **0640** | [gl.ahk](lib-a_to_h/gl.ahk)
95.46kb - 2018-06-02 | lib-a_to_h| -| **0641** | [glext.ahk](lib-a_to_h/glext.ahk)
496.04kb - 2019-10-11 | lib-a_to_h| -| **0642** | [glLite.ahk](lib-a_to_h/glLite.ahk)
4.66kb - 2019-10-11 | lib-a_to_h| -| **0643** | [GlobalStruct.ahk](lib-a_to_h/GlobalStruct.ahk)
6.00kb - 2016-09-15 | lib-a_to_h| -| **0644** | [GlobalVarsScript.ahk](lib-a_to_h/GlobalVarsScript.ahk)
0.79kb - 2018-06-02 | lib-a_to_h| -| **0645** | [glScreensaver.ahk](lib-a_to_h/glScreensaver.ahk)
11.14kb - 2019-11-06 | lib-a_to_h| -| **0646** | [glu.ahk](lib-a_to_h/glu.ahk)
16.00kb - 2018-06-02 | lib-a_to_h| -| **0647** | [glVideo.ahk](lib-a_to_h/glVideo.ahk)
7.98kb - 2019-11-06 | lib-a_to_h| -| **0648** | [googl.ahk](lib-a_to_h/googl.ahk)
0.59kb - 2018-06-02 | lib-a_to_h| -| **0649** | [GoogleEarth.ahk](lib-a_to_h/GoogleEarth.ahk)
23.64kb - 2012-05-15 | lib-a_to_h| -| **0650** | [GoogleEarthCOM.ahk](lib-a_to_h/GoogleEarthCOM.ahk)
10.19kb - 2012-05-15 | lib-a_to_h| -| **0651** | [GoogleTranslate_perJS.ahk](lib-a_to_h/GoogleTranslate_perJS.ahk)
8.84kb - 2019-04-24 | lib-a_to_h| -| **0652** | [gpBinEncode.ahk](lib-a_to_h/gpBinEncode.ahk)
7.23kb - 2018-09-11 | lib-a_to_h| -| **0653** | [GPF.ahk](lib-a_to_h/GPF.ahk)
4.85kb - 2010-06-08 | lib-a_to_h| -| **0654** | [GPF_v1.1c.ahk](lib-a_to_h/GPF_v1.1c.ahk)
4.85kb - 2010-06-08 | lib-a_to_h| -| **0655** | [grep.ahk](lib-a_to_h/grep.ahk)
0.98kb - 2011-02-10 | lib-a_to_h| -| **0656** | [GroupBox.ahk](lib-a_to_h/GroupBox.ahk)
3.68kb - 2019-05-26 | lib-a_to_h| -| **0657** | [GTranslate.ahk](lib-a_to_h/GTranslate.ahk)
3.13kb - 2018-06-02 | lib-a_to_h| -| **0658** | [GuiAddColorPalette.ahk](lib-a_to_h/GuiAddColorPalette.ahk)
3.18kb - 2018-03-08 | lib-a_to_h| -| **0659** | [GuiAddF.ahk](lib-a_to_h/GuiAddF.ahk)
3.64kb - 2015-06-12 | lib-a_to_h| -| **0660** | [guiAddonInfo.ahk](lib-a_to_h/guiAddonInfo.ahk)
6.54kb - 2018-06-02 | lib-a_to_h| -| **0661** | [GuiButtonIcon.ahk](lib-a_to_h/GuiButtonIcon.ahk)
2.41kb - 2018-06-02 | lib-a_to_h| -| **0662** | [guiCompile.ahk](lib-a_to_h/guiCompile.ahk)
3.98kb - 2018-06-02 | lib-a_to_h| -| **0663** | [GuiControl.ahk](lib-a_to_h/GuiControl.ahk)
1.55kb - 2019-05-26 | lib-a_to_h| -| **0664** | [GuiControlAddBox.ahk](lib-a_to_h/GuiControlAddBox.ahk)
3.19kb - 2019-05-26 | lib-a_to_h| -| **0665** | [GuiControlTips.ahk](lib-a_to_h/GuiControlTips.ahk)
13.83kb - 2018-03-08 | lib-a_to_h| -| **0666** | [guiCreate.ahk](lib-a_to_h/guiCreate.ahk)
4.34kb - 2019-01-06 | lib-a_to_h| -| **0667** | [GuiCtl.ahk](lib-a_to_h/GuiCtl.ahk)
1.89kb - 2018-06-02 | lib-a_to_h| -| **0668** | [GUID.ahk](lib-a_to_h/GUID.ahk)
0.53kb - 2018-06-02 | lib-a_to_h| -| **0669** | [guids.ahk](lib-a_to_h/guids.ahk)
0.98kb - 2019-05-26 | lib-a_to_h| -| **0670** | [GUID_and_UUID.ahk](lib-a_to_h/GUID_and_UUID.ahk)
2.78kb - 2018-11-04 | lib-a_to_h| -| **0671** | [guiExplorer.ahk](lib-a_to_h/guiExplorer.ahk)
9.11kb - 2018-06-02 | lib-a_to_h| -| **0672** | [GUIHider.ahk](lib-a_to_h/GUIHider.ahk)
13.02kb - 2012-08-06 | lib-a_to_h| -| **0673** | [GuiLayout.ahk](lib-a_to_h/GuiLayout.ahk)
9.13kb - 2014-03-20 | lib-a_to_h| -| **0674** | [guiOffscreenCheck.ahk](lib-a_to_h/guiOffscreenCheck.ahk)
0.41kb - 2018-06-02 | lib-a_to_h| -| **0675** | [GuiSettings.ahk](lib-a_to_h/GuiSettings.ahk)
1.21kb - 2018-06-02 | lib-a_to_h| -| **0676** | [GuiTabEx.ahk](lib-a_to_h/GuiTabEx.ahk)
17.11kb - 2013-03-22 | lib-a_to_h| -| **0677** | [GUIUniqueDefault().ahk](lib-a_to_h/GUIUniqueDefault().ahk)
2.91kb - 2018-06-02 | lib-a_to_h| -| **0678** | [GuiVar.ahk](lib-a_to_h/GuiVar.ahk)
4.02kb - 2018-07-06 | lib-a_to_h| -| **0679** | [GuiWnd.ahk](lib-a_to_h/GuiWnd.ahk)
4.21kb - 2018-06-02 | lib-a_to_h| -| **0680** | [Hash.ahk](lib-a_to_h/Hash.ahk)
1.32kb - 2016-02-20 | lib-a_to_h| -| **0681** | [HashFile.ahk](lib-a_to_h/HashFile.ahk)
2.75kb - 2019-09-07 | lib-a_to_h| -| **0682** | [Help.ahk](lib-a_to_h/Help.ahk)
26.09kb - 2018-06-02 | lib-a_to_h| -| **0683** | [HelperFunctions.ahk](lib-a_to_h/HelperFunctions.ahk)
3.65kb - 2018-06-02 | lib-a_to_h| -| **0684** | [Hex2Bin.ahk](lib-a_to_h/Hex2Bin.ahk)
1.22kb - 2016-09-15 | lib-a_to_h| -| **0685** | [HexToBin.ahk](lib-a_to_h/HexToBin.ahk)
0.55kb - 2018-06-02 | lib-a_to_h| -| **0686** | [HexView.ahk](lib-a_to_h/HexView.ahk)
30.25kb - 2018-06-02 | lib-a_to_h| -| **0687** | [HIBYTE.ahk](lib-a_to_h/HIBYTE.ahk)
0.04kb - 2018-06-02 | lib-a_to_h| -| **0688** | [HideFocusBorder.ahk](lib-a_to_h/HideFocusBorder.ahk)
1.17kb - 2018-06-20 | lib-a_to_h| -| **0689** | [HideInfotipOnMouseOver.ahk](lib-a_to_h/HideInfotipOnMouseOver.ahk)
1.51kb - 2018-05-05 | lib-a_to_h| -| **0690** | [hideTaskbar.ahk](lib-a_to_h/hideTaskbar.ahk)
1.14kb - 2019-02-08 | lib-a_to_h| -| **0691** | [HiEdit.ahk](lib-a_to_h/HiEdit.ahk)
40.78kb - 2019-08-30 | lib-a_to_h| -| **0692** | [HimetricToPixel.ahk](lib-a_to_h/HimetricToPixel.ahk)
0.12kb - 2018-03-08 | lib-a_to_h| -| **0693** | [HIWORD.ahk](lib-a_to_h/HIWORD.ahk)
0.04kb - 2018-06-02 | lib-a_to_h| -| **0694** | [hkswap.ahk](lib-a_to_h/hkswap.ahk)
1.63kb - 2014-07-06 | lib-a_to_h| -| **0695** | [HL7.ahk](lib-a_to_h/HL7.ahk)
13.35kb - 2018-06-02 | lib-a_to_h| -| **0696** | [HLink.ahk](lib-a_to_h/HLink.ahk)
4.31kb - 2018-06-02 | lib-a_to_h| -| **0697** | [Hook.ahk](lib-a_to_h/Hook.ahk)
1.18kb - 2018-11-06 | lib-a_to_h| -| **0698** | [hotcorners.ahk](lib-a_to_h/hotcorners.ahk)
2.71kb - 2018-06-10 | lib-a_to_h| -| **0699** | [HotkeyControl.ahk](lib-a_to_h/HotkeyControl.ahk)
10.13kb - 2018-06-02 | lib-a_to_h| -| **0700** | [HotkeyGUI.ahk](lib-a_to_h/HotkeyGUI.ahk)
26.37kb - 2014-07-06 | lib-a_to_h| -| **0701** | [Hotkey_Functions.ahk](lib-a_to_h/Hotkey_Functions.ahk)
6.29kb - 2016-06-01 | lib-a_to_h| -| **0702** | [Hotkey_IfControlActive.ahk](lib-a_to_h/Hotkey_IfControlActive.ahk)
6.13kb - 2018-10-15 | lib-a_to_h| -| **0703** | [Hotstring.ahk](lib-a_to_h/Hotstring.ahk)
5.79kb - 2018-06-02 | lib-a_to_h| -| **0704** | [Hotstrings (2).ahk](lib-a_to_h/Hotstrings%20(2).ahk)
6.35kb - 2019-01-10 | lib-a_to_h| -| **0705** | [Hotstrings.ahk](lib-a_to_h/Hotstrings.ahk)
2.16kb - 2018-06-02 | lib-a_to_h| -| **0706** | [HoverScroll.ahk](lib-a_to_h/HoverScroll.ahk)
16.63kb - 2017-11-04 | lib-a_to_h| -| **0707** | [HPDF.ahk](lib-a_to_h/HPDF.ahk)
35.73kb - 2018-06-02 | lib-a_to_h| -| **0708** | [HtmDlg.ahk](lib-a_to_h/HtmDlg.ahk)
9.71kb - 2018-06-02 | lib-a_to_h| -| **0709** | [HTMLmodule.ahk](lib-a_to_h/HTMLmodule.ahk)
3.84kb - 2018-06-02 | lib-a_to_h| -| **0710** | [hToMs.ahk](lib-a_to_h/hToMs.ahk)
0.04kb - 2018-10-30 | lib-a_to_h| -| **0711** | [http-lib.ahk](lib-a_to_h/http-lib.ahk)
30.20kb - 2018-06-07 | lib-a_to_h| -| **0712** | [httpQuery.ahk](lib-a_to_h/httpQuery.ahk)
11.07kb - 2018-06-02 | lib-a_to_h| -| **0713** | [HttpQueryInfo.ahk](lib-a_to_h/HttpQueryInfo.ahk)
2.64kb - 2018-06-02 | lib-a_to_h| -| **0714** | [HTTPRequest.ahk](lib-a_to_h/HTTPRequest.ahk)
53.61kb - 2018-06-02 | lib-a_to_h| -| **0715** | [HTTPRequest_2.ahk](lib-a_to_h/HTTPRequest_2.ahk)
53.61kb - 2019-10-11 | lib-a_to_h| -| **0716** | [huffmann.ahk](lib-a_to_h/huffmann.ahk)
6.28kb - 2018-09-11 | lib-a_to_h| -| **0717** | [hwmonitor.ahk](lib-a_to_h/hwmonitor.ahk)
1.48kb - 2019-10-31 | lib-a_to_h| -| **0718** | [hwnd.ahk](lib-a_to_h/hwnd.ahk)
0.23kb - 2014-10-28 | lib-a_to_h| -| **0719** | [hwndHung.ahk](lib-a_to_h/hwndHung.ahk)
0.07kb - 2018-10-30 | lib-a_to_h| -| **0720** | [hXfromHBITMAP.ahk](lib-a_to_h/hXfromHBITMAP.ahk)
0.64kb - 2018-08-22 | lib-a_to_h| -| **0721** | [hyde.ahk](lib-a_to_h/hyde.ahk)
1.12kb - 2016-09-15 | lib-a_to_h| -| **0722** | [internet.ahk](lib-a_to_h/internet.ahk)
4.72kb - 2018-06-10 | lib-a_to_h| -| **0723** | [_.ahk](lib-a_to_h/_.ahk)
13.81kb - 2018-06-02 | lib-a_to_h| -| **0724** | [_filesystem.ahk](lib-a_to_h/_filesystem.ahk)
4.42kb - 2018-06-02 | lib-a_to_h| -| **0725** | [_Forms.ahk](lib-a_to_h/_Forms.ahk)
5.00kb - 2018-06-02 | lib-a_to_h| -| **0726** | [_guiCreate.ahk](lib-a_to_h/_guiCreate.ahk)
4.34kb - 2018-08-05 | lib-a_to_h| -| **0727** | [_MemoryLibrary.ahk](lib-a_to_h/_MemoryLibrary.ahk)
23.64kb - 2018-06-02 | lib-a_to_h| -| **0728** | [header.ahk](lib-a_to_h/core_audio_interfaces/header.ahk)
2.64kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0729** | [IAudioEndpointVolume.ahk](lib-a_to_h/core_audio_interfaces/IAudioEndpointVolume.ahk)
8.33kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0730** | [IAudioSessionControl.ahk](lib-a_to_h/core_audio_interfaces/IAudioSessionControl.ahk)
2.77kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0731** | [IAudioSessionControl2.ahk](lib-a_to_h/core_audio_interfaces/IAudioSessionControl2.ahk)
2.34kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0732** | [IAudioSessionEnumerator.ahk](lib-a_to_h/core_audio_interfaces/IAudioSessionEnumerator.ahk)
1.92kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0733** | [IAudioSessionManager2.ahk](lib-a_to_h/core_audio_interfaces/IAudioSessionManager2.ahk)
1.78kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0734** | [IMMDevice.ahk](lib-a_to_h/core_audio_interfaces/IMMDevice.ahk)
4.97kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0735** | [IMMDeviceCollection.ahk](lib-a_to_h/core_audio_interfaces/IMMDeviceCollection.ahk)
2.17kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0736** | [IMMDeviceEnumerator.ahk](lib-a_to_h/core_audio_interfaces/IMMDeviceEnumerator.ahk)
5.71kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0737** | [IPropertyStore.ahk](lib-a_to_h/core_audio_interfaces/IPropertyStore.ahk)
5.49kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0738** | [ISimpleAudioVolume.ahk](lib-a_to_h/core_audio_interfaces/ISimpleAudioVolume.ahk)
2.52kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| -| **0739** | [7zip.ahk](lib-i_to_z/7zip.ahk)
24.78kb - 2018-10-10 | lib-i_to_z| -| **0740** | [HTML_Util.ahk](lib-i_to_z/HTML_Util.ahk)
4.20kb - 2019-05-04 | lib-i_to_z| -| **0741** | [Icon.ahk](lib-i_to_z/Icon.ahk)
4.69kb - 2018-06-02 | lib-i_to_z| -| **0742** | [IconChanger.ahk](lib-i_to_z/IconChanger.ahk)
2.46kb - 2016-01-20 | lib-i_to_z| -| **0743** | [IconEx.ahk](lib-i_to_z/IconEx.ahk)
16.49kb - 2018-06-02 | lib-i_to_z| -| **0744** | [Icon_speciale.ahk](lib-i_to_z/Icon_speciale.ahk)
4.65kb - 2018-03-08 | lib-i_to_z| -| **0745** | [IDragSourceHelper.ahk](lib-i_to_z/IDragSourceHelper.ahk)
3.60kb - 2018-06-02 | lib-i_to_z| -| **0746** | [IDropSource.ahk](lib-i_to_z/IDropSource.ahk)
4.30kb - 2018-06-02 | lib-i_to_z| -| **0747** | [IE.ahk](lib-i_to_z/IE.ahk)
11.58kb - 2018-06-02 | lib-i_to_z| -| **0748** | [IE7_Dom.ahk](lib-i_to_z/IE7_Dom.ahk)
7.27kb - 2018-06-02 | lib-i_to_z| -| **0749** | [IEControl.ahk](lib-i_to_z/IEControl.ahk)
6.26kb - 2007-05-09 | lib-i_to_z| -| **0750** | [IEGet.ahk](lib-i_to_z/IEGet.ahk)
1.43kb - 2016-09-15 | lib-i_to_z| -| **0751** | [IEL.ahk](lib-i_to_z/IEL.ahk)
4.79kb - 2018-06-02 | lib-i_to_z| -| **0752** | [IELib.ahk](lib-i_to_z/IELib.ahk)
13.77kb - 2019-10-21 | lib-i_to_z| -| **0753** | [IEnumFORMATETC.ahk](lib-i_to_z/IEnumFORMATETC.ahk)
1.66kb - 2018-06-20 | lib-i_to_z| -| **0754** | [IEReady.ahk](lib-i_to_z/IEReady.ahk)
2.11kb - 2018-06-02 | lib-i_to_z| -| **0755** | [ifContains.ahk](lib-i_to_z/ifContains.ahk)
0.08kb - 2018-10-30 | lib-i_to_z| -| **0756** | [IfControlActive.ahk](lib-i_to_z/IfControlActive.ahk)
6.11kb - 2018-10-08 | lib-i_to_z| -| **0757** | [IFileDialog.ahk](lib-i_to_z/IFileDialog.ahk)
6.69kb - 2019-05-04 | lib-i_to_z| -| **0758** | [ifIn.ahk](lib-i_to_z/ifIn.ahk)
0.07kb - 2018-10-30 | lib-i_to_z| -| **0759** | [Ignore.ahk](lib-i_to_z/Ignore.ahk)
3.34kb - 2018-06-02 | lib-i_to_z| -| **0760** | [IL.ahk](lib-i_to_z/IL.ahk)
1.02kb - 2018-06-02 | lib-i_to_z| -| **0761** | [ILButton.ahk](lib-i_to_z/ILButton.ahk)
4.64kb - 2018-06-02 | lib-i_to_z| -| **0762** | [IL_EX.ahk](lib-i_to_z/IL_EX.ahk)
13.24kb - 2017-03-28 | lib-i_to_z| -| **0763** | [Image2Include.ahk](lib-i_to_z/Image2Include.ahk)
10.57kb - 2018-04-29 | lib-i_to_z| -| **0764** | [Image2Text.ahk](lib-i_to_z/Image2Text.ahk)
27.36kb - 2018-11-22 | lib-i_to_z| -| **0765** | [imageSearchc.ahk](lib-i_to_z/imageSearchc.ahk)
0.63kb - 2018-10-30 | lib-i_to_z| -| **0766** | [implode.ahk](lib-i_to_z/implode.ahk)
0.15kb - 2018-06-02 | lib-i_to_z| -| **0767** | [ImportTypeLib.ahk](lib-i_to_z/ImportTypeLib.ahk)
68.46kb - 2018-08-17 | lib-i_to_z| -| **0768** | [Include.ahk](lib-i_to_z/Include.ahk)
3.20kb - 2018-06-02 | lib-i_to_z| -| **0769** | [inc_mf_0_3.ahk](lib-i_to_z/inc_mf_0_3.ahk)
6.63kb - 2018-06-02 | lib-i_to_z| -| **0770** | [inc_mf_System_IO_0_3.ahk](lib-i_to_z/inc_mf_System_IO_0_3.ahk)
0.98kb - 2018-06-02 | lib-i_to_z| -| **0771** | [InfoGUI.ahk](lib-i_to_z/InfoGUI.ahk)
18.30kb - 2017-09-04 | lib-i_to_z| -| **0772** | [infogulchEncodings.ahk](lib-i_to_z/infogulchEncodings.ahk)
3.72kb - 2018-06-02 | lib-i_to_z| -| **0773** | [InfoTip.ahk](lib-i_to_z/InfoTip.ahk)
4.69kb - 2018-05-05 | lib-i_to_z| -| **0774** | [ini.ahk](lib-i_to_z/ini.ahk)
57.22kb - 2018-06-02 | lib-i_to_z| -| **0775** | [IniFile.ahk](lib-i_to_z/IniFile.ahk)
14.93kb - 2018-03-08 | lib-i_to_z| -| **0776** | [IniParser.ahk](lib-i_to_z/IniParser.ahk)
1.30kb - 2018-06-02 | lib-i_to_z| -| **0777** | [IniSettingsEditor.ahk](lib-i_to_z/IniSettingsEditor.ahk)
16.08kb - 2018-06-02 | lib-i_to_z| -| **0778** | [iniWrapper.ahk](lib-i_to_z/iniWrapper.ahk)
4.27kb - 2018-06-02 | lib-i_to_z| -| **0779** | [InjectAhkDll.ahk](lib-i_to_z/InjectAhkDll.ahk)
9.72kb - 2018-06-02 | lib-i_to_z| -| **0780** | [InjectDll (2).ahk](lib-i_to_z/InjectDll%20(2).ahk)
2.39kb - 2016-09-06 | lib-i_to_z| -| **0781** | [InjectDll.ahk](lib-i_to_z/InjectDll.ahk)
1.32kb - 2016-09-15 | lib-i_to_z| -| **0782** | [InjectDllA.ahk](lib-i_to_z/InjectDllA.ahk)
1.52kb - 2018-12-18 | lib-i_to_z| -| **0783** | [InMemoryWindowCapture.ahk](lib-i_to_z/InMemoryWindowCapture.ahk)
16.32kb - 2018-11-24 | lib-i_to_z| -| **0784** | [InputBox.ahk](lib-i_to_z/InputBox.ahk)
4.57kb - 2018-03-08 | lib-i_to_z| -| **0785** | [InputBoxEx.ahk](lib-i_to_z/InputBoxEx.ahk)
2.05kb - 2016-10-10 | lib-i_to_z| -| **0786** | [InsertionSort.ahk](lib-i_to_z/InsertionSort.ahk)
0.80kb - 2014-06-10 | lib-i_to_z| -| **0787** | [Install.ahk](lib-i_to_z/Install.ahk)
0.86kb - 2018-06-02 | lib-i_to_z| -| **0788** | [Instance.ahk](lib-i_to_z/Instance.ahk)
2.43kb - 2018-06-02 | lib-i_to_z| -| **0789** | [internet.ahk](lib-i_to_z/internet.ahk)
4.72kb - 2018-07-29 | lib-i_to_z| -| **0790** | [InternetCheckConnection.ahk](lib-i_to_z/InternetCheckConnection.ahk)
0.81kb - 2018-03-08 | lib-i_to_z| -| **0791** | [internetConnected.ahk](lib-i_to_z/internetConnected.ahk)
0.17kb - 2018-10-30 | lib-i_to_z| -| **0792** | [InternetFileRead.ahk](lib-i_to_z/InternetFileRead.ahk)
6.51kb - 2018-06-02 | lib-i_to_z| -| **0793** | [InternetGetRedirect 20110825.ahk](lib-i_to_z/InternetGetRedirect%2020110825.ahk)
1.18kb - 2011-08-25 | lib-i_to_z| -| **0794** | [InvBase64.ahk](lib-i_to_z/InvBase64.ahk)
0.67kb - 2015-05-21 | lib-i_to_z| -| **0795** | [invertCaseChr.ahk](lib-i_to_z/invertCaseChr.ahk)
0.08kb - 2018-10-30 | lib-i_to_z| -| **0796** | [invertCaseStr.ahk](lib-i_to_z/invertCaseStr.ahk)
0.14kb - 2018-10-30 | lib-i_to_z| -| **0797** | [IPC.ahk](lib-i_to_z/IPC.ahk)
3.35kb - 2016-02-20 | lib-i_to_z| -| **0798** | [IPToInt().ahk](lib-i_to_z/IPToInt().ahk)
0.29kb - 2013-07-22 | lib-i_to_z| -| **0799** | [Is.ahk](lib-i_to_z/Is.ahk)
1.00kb - 2018-12-18 | lib-i_to_z| -| **0800** | [is2.ahk](lib-i_to_z/is2.ahk)
8.74kb - 2019-04-05 | lib-i_to_z| -| **0801** | [is64bitExe.ahk](lib-i_to_z/is64bitExe.ahk)
0.09kb - 2018-10-30 | lib-i_to_z| -| **0802** | [isAlpha.ahk](lib-i_to_z/isAlpha.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0803** | [isAlphaNum.ahk](lib-i_to_z/isAlphaNum.ahk)
0.06kb - 2018-10-30 | lib-i_to_z| -| **0804** | [isBetween.ahk](lib-i_to_z/isBetween.ahk)
0.11kb - 2018-10-30 | lib-i_to_z| -| **0805** | [IsBom.ahk](lib-i_to_z/IsBom.ahk)
0.41kb - 2018-06-02 | lib-i_to_z| -| **0806** | [isDigit.ahk](lib-i_to_z/isDigit.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0807** | [IsDirectory.ahk](lib-i_to_z/IsDirectory.ahk)
0.54kb - 2018-03-08 | lib-i_to_z| -| **0808** | [IsEmpty.ahk](lib-i_to_z/IsEmpty.ahk)
2.22kb - 2018-06-02 | lib-i_to_z| -| **0809** | [IsFileInUse.ahk](lib-i_to_z/IsFileInUse.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| -| **0810** | [IsFilePathTooLong.ahk](lib-i_to_z/IsFilePathTooLong.ahk)
0.80kb - 2018-05-05 | lib-i_to_z| -| **0811** | [isFloat.ahk](lib-i_to_z/isFloat.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0812** | [IsFullScreen.ahk](lib-i_to_z/IsFullScreen.ahk)
3.72kb - 2018-05-05 | lib-i_to_z| -| **0813** | [IsFuncObj.ahk](lib-i_to_z/IsFuncObj.ahk)
0.44kb - 2018-12-18 | lib-i_to_z| -| **0814** | [isHex.ahk](lib-i_to_z/isHex.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0815** | [isInt.ahk](lib-i_to_z/isInt.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0816** | [isLikeHotkey.ahk](lib-i_to_z/isLikeHotkey.ahk)
3.72kb - 2019-11-06 | lib-i_to_z| -| **0817** | [isLower.ahk](lib-i_to_z/isLower.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0818** | [IsMouseOverTaskbar.ahk](lib-i_to_z/IsMouseOverTaskbar.ahk)
3.59kb - 2019-01-14 | lib-i_to_z| -| **0819** | [isNum.ahk](lib-i_to_z/isNum.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0820** | [IsPrime.ahk](lib-i_to_z/IsPrime.ahk)
0.46kb - 2018-03-08 | lib-i_to_z| -| **0821** | [IsProcess.ahk](lib-i_to_z/IsProcess.ahk)
3.08kb - 2018-08-16 | lib-i_to_z| -| **0822** | [IsProcessElevated.ahk](lib-i_to_z/IsProcessElevated.ahk)
1.27kb - 2018-06-02 | lib-i_to_z| -| **0823** | [IsService.ahk](lib-i_to_z/IsService.ahk)
1.35kb - 2018-03-08 | lib-i_to_z| -| **0824** | [isSpace.ahk](lib-i_to_z/isSpace.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0825** | [IsType.ahk](lib-i_to_z/IsType.ahk)
2.63kb - 2018-12-18 | lib-i_to_z| -| **0826** | [IsUpdated.ahk](lib-i_to_z/IsUpdated.ahk)
0.24kb - 2018-06-02 | lib-i_to_z| -| **0827** | [isUpper.ahk](lib-i_to_z/isUpper.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0828** | [isValidEmail.ahk](lib-i_to_z/isValidEmail.ahk)
0.37kb - 2018-06-02 | lib-i_to_z| -| **0829** | [IsValidFileName.ahk](lib-i_to_z/IsValidFileName.ahk)
1.17kb - 2019-04-19 | lib-i_to_z| -| **0830** | [IsWindow.ahk](lib-i_to_z/IsWindow.ahk)
1.00kb - 2018-03-08 | lib-i_to_z| -| **0831** | [IsWow64Process.ahk](lib-i_to_z/IsWow64Process.ahk)
1.39kb - 2018-08-16 | lib-i_to_z| -| **0832** | [iWeb.ahk](lib-i_to_z/iWeb.ahk)
17.34kb - 2018-06-02 | lib-i_to_z| -| **0833** | [iWeb_L.ahk](lib-i_to_z/iWeb_L.ahk)
11.35kb - 2018-06-02 | lib-i_to_z| -| **0834** | [JEEGetAllText.ahk](lib-i_to_z/JEEGetAllText.ahk)
2.91kb - 2018-06-02 | lib-i_to_z| -| **0835** | [JEEGuiText.ahk](lib-i_to_z/JEEGuiText.ahk)
108.24kb - 2018-06-02 | lib-i_to_z| -| **0836** | [JEE_Functions.ahk](lib-i_to_z/JEE_Functions.ahk)
163.28kb - 2019-09-03 | lib-i_to_z| -| **0837** | [JEE_GuiText.ahk](lib-i_to_z/JEE_GuiText.ahk)
106.79kb - 2018-07-07 | lib-i_to_z| -| **0838** | [JoinScript.ahk](lib-i_to_z/JoinScript.ahk)
4.88kb - 2016-09-15 | lib-i_to_z| -| **0839** | [JoystickTest.ahk](lib-i_to_z/JoystickTest.ahk)
2.73kb - 2018-06-02 | lib-i_to_z| -| **0840** | [JSON-Obj.ahk](lib-i_to_z/JSON-Obj.ahk)
15.27kb - 2017-04-07 | lib-i_to_z| -| **0841** | [json.ahk](lib-i_to_z/json.ahk)
1.59kb - 2011-02-10 | lib-i_to_z| -| **0842** | [Json4Ahk.ahk](lib-i_to_z/Json4Ahk.ahk)
2.09kb - 2019-08-11 | lib-i_to_z| -| **0843** | [JSONLibrary.ahk](lib-i_to_z/JSONLibrary.ahk)
13.24kb - 2019-05-03 | lib-i_to_z| -| **0844** | [JSON_Beautify.ahk](lib-i_to_z/JSON_Beautify.ahk)
2.17kb - 2018-06-02 | lib-i_to_z| -| **0845** | [JSON_FromObj.ahk](lib-i_to_z/JSON_FromObj.ahk)
1.62kb - 2018-06-02 | lib-i_to_z| -| **0846** | [JSON_ToObj.ahk](lib-i_to_z/JSON_ToObj.ahk)
3.54kb - 2018-06-02 | lib-i_to_z| -| **0847** | [JumpList.ahk](lib-i_to_z/JumpList.ahk)
11.56kb - 2017-09-04 | lib-i_to_z| -| **0848** | [Jxon.ahk](lib-i_to_z/Jxon.ahk)
6.01kb - 2018-06-02 | lib-i_to_z| -| **0849** | [Keyboard.ahk](lib-i_to_z/Keyboard.ahk)
6.07kb - 2018-09-15 | lib-i_to_z| -| **0850** | [KeyboardLayout.ahk](lib-i_to_z/KeyboardLayout.ahk)
2.94kb - 2018-06-02 | lib-i_to_z| -| **0851** | [KeyboardLED.ahk](lib-i_to_z/KeyboardLED.ahk)
2.41kb - 2015-05-12 | lib-i_to_z| -| **0852** | [lanConnected.ahk](lib-i_to_z/lanConnected.ahk)
0.13kb - 2018-10-30 | lib-i_to_z| -| **0853** | [Lastkey.ahk](lib-i_to_z/Lastkey.ahk)
10.65kb - 2019-10-11 | lib-i_to_z| -| **0854** | [LBDDLib.ahk](lib-i_to_z/LBDDLib.ahk)
44.83kb - 2019-05-07 | lib-i_to_z| -| **0855** | [LBEX.ahk](lib-i_to_z/LBEX.ahk)
29.10kb - 2019-05-07 | lib-i_to_z| -| **0856** | [LedControl.ahk](lib-i_to_z/LedControl.ahk)
3.37kb - 2017-10-23 | lib-i_to_z| -| **0857** | [LetterVariations.ahk](lib-i_to_z/LetterVariations.ahk)
2.15kb - 2018-06-02 | lib-i_to_z| -| **0858** | [LetUserSelectRect.ahk](lib-i_to_z/LetUserSelectRect.ahk)
1.46kb - 2018-08-20 | lib-i_to_z| -| **0859** | [LibCon.ahk](lib-i_to_z/LibCon.ahk)
30.94kb - 2017-10-23 | lib-i_to_z| -| **0860** | [libcurl.ahk](lib-i_to_z/libcurl.ahk)
20.34kb - 2018-06-02 | lib-i_to_z| -| **0861** | [libHaruUnicode.ahk](lib-i_to_z/libHaruUnicode.ahk)
36.70kb - 2018-12-21 | lib-i_to_z| -| **0862** | [Limit.ahk](lib-i_to_z/Limit.ahk)
0.25kb - 2018-03-08 | lib-i_to_z| -| **0863** | [LinearGradient.ahk](lib-i_to_z/LinearGradient.ahk)
6.89kb - 2019-02-08 | lib-i_to_z| -| **0864** | [lineReader.ahk](lib-i_to_z/lineReader.ahk)
8.22kb - 2018-06-02 | lib-i_to_z| -| **0865** | [List-Functions.ahk](lib-i_to_z/List-Functions.ahk)
6.99kb - 2019-04-20 | lib-i_to_z| -| **0866** | [List.ahk](lib-i_to_z/List.ahk)
5.41kb - 2018-06-02 | lib-i_to_z| -| **0867** | [ListboxFunctions.ahk](lib-i_to_z/ListboxFunctions.ahk)
1.99kb - 2018-07-13 | lib-i_to_z| -| **0868** | [ListCompare.ahk](lib-i_to_z/ListCompare.ahk)
2.29kb - 2018-06-02 | lib-i_to_z| -| **0869** | [ListFuncs.ahk](lib-i_to_z/ListFuncs.ahk)
24.98kb - 2019-10-31 | lib-i_to_z| -| **0870** | [ListIncludes.ahk](lib-i_to_z/ListIncludes.ahk)
3.41kb - 2011-09-30 | lib-i_to_z| -| **0871** | [listlines (2).ahk](lib-i_to_z/listlines%20(2).ahk)
1.57kb - 2017-04-07 | lib-i_to_z| -| **0872** | [ListLines.ahk](lib-i_to_z/ListLines.ahk)
0.84kb - 2018-06-02 | lib-i_to_z| -| **0873** | [Listvars.ahk](lib-i_to_z/Listvars.ahk)
1.12kb - 2017-04-07 | lib-i_to_z| -| **0874** | [List_Ex.ahk](lib-i_to_z/List_Ex.ahk)
24.98kb - 2019-04-08 | lib-i_to_z| -| **0875** | [LoadFile.ahk](lib-i_to_z/LoadFile.ahk)
2.66kb - 2018-11-04 | lib-i_to_z| -| **0876** | [loadimage.ahk](lib-i_to_z/loadimage.ahk)
1.08kb - 2017-11-08 | lib-i_to_z| -| **0877** | [LoadLib.ahk](lib-i_to_z/LoadLib.ahk)
0.27kb - 2018-08-17 | lib-i_to_z| -| **0878** | [LoadLibExtended.ahk](lib-i_to_z/LoadLibExtended.ahk)
0.45kb - 2018-11-04 | lib-i_to_z| -| **0879** | [LoadLibrary.ahk](lib-i_to_z/LoadLibrary.ahk)
0.99kb - 2019-10-11 | lib-i_to_z| -| **0880** | [LoadPicture.ahk](lib-i_to_z/LoadPicture.ahk)
21.73kb - 2018-06-02 | lib-i_to_z| -| **0881** | [LoadScriptString.ahk](lib-i_to_z/LoadScriptString.ahk)
1.11kb - 2014-03-21 | lib-i_to_z| -| **0882** | [LoadString.ahk](lib-i_to_z/LoadString.ahk)
1.67kb - 2018-03-08 | lib-i_to_z| -| **0883** | [LOBYTE.ahk](lib-i_to_z/LOBYTE.ahk)
0.03kb - 2018-06-02 | lib-i_to_z| -| **0884** | [LongOperationInit.ahk](lib-i_to_z/LongOperationInit.ahk)
0.20kb - 2016-09-15 | lib-i_to_z| -| **0885** | [LongOperationUpdate.ahk](lib-i_to_z/LongOperationUpdate.ahk)
0.34kb - 2016-09-15 | lib-i_to_z| -| **0886** | [LongOperationUpdateForSendKeys.ahk](lib-i_to_z/LongOperationUpdateForSendKeys.ahk)
0.34kb - 2016-09-15 | lib-i_to_z| -| **0887** | [LookupLanguageName.ahk](lib-i_to_z/LookupLanguageName.ahk)
0.83kb - 2018-03-08 | lib-i_to_z| -| **0888** | [LookupLanguageValue.ahk](lib-i_to_z/LookupLanguageValue.ahk)
1.07kb - 2018-03-08 | lib-i_to_z| -| **0889** | [LookupPrivilegeName.ahk](lib-i_to_z/LookupPrivilegeName.ahk)
1.01kb - 2018-08-16 | lib-i_to_z| -| **0890** | [LookupPrivilegeValue.ahk](lib-i_to_z/LookupPrivilegeValue.ahk)
2.01kb - 2018-08-16 | lib-i_to_z| -| **0891** | [Lower.ahk](lib-i_to_z/Lower.ahk)
0.28kb - 2018-06-02 | lib-i_to_z| -| **0892** | [LowerReplaceSpace.ahk](lib-i_to_z/LowerReplaceSpace.ahk)
0.35kb - 2018-06-02 | lib-i_to_z| -| **0893** | [LowLevel.ahk](lib-i_to_z/LowLevel.ahk)
16.70kb - 2010-08-06 | lib-i_to_z| -| **0894** | [LowLevel_code.ahk](lib-i_to_z/LowLevel_code.ahk)
37.29kb - 2009-08-30 | lib-i_to_z| -| **0895** | [LOWORD.ahk](lib-i_to_z/LOWORD.ahk)
0.03kb - 2018-06-02 | lib-i_to_z| -| **0896** | [LSON.ahk](lib-i_to_z/LSON.ahk)
10.44kb - 2016-09-15 | lib-i_to_z| -| **0897** | [lua.ahk](lib-i_to_z/lua.ahk)
65.19kb - 2015-01-10 | lib-i_to_z| -| **0898** | [LV.ahk](lib-i_to_z/LV.ahk)
1.58kb - 2018-06-02 | lib-i_to_z| -| **0899** | [LV_A.ahk](lib-i_to_z/LV_A.ahk)
31.33kb - 2018-06-02 | lib-i_to_z| -| **0900** | [LV_Color.ahk](lib-i_to_z/LV_Color.ahk)
3.86kb - 2016-09-15 | lib-i_to_z| -| **0901** | [LV_Colors.ahk](lib-i_to_z/LV_Colors.ahk)
20.67kb - 2018-06-02 | lib-i_to_z| -| **0902** | [LV_CustomColors.ahk](lib-i_to_z/LV_CustomColors.ahk)
9.32kb - 2019-08-05 | lib-i_to_z| -| **0903** | [LV_EDIT.ahk](lib-i_to_z/LV_EDIT.ahk)
9.09kb - 2018-06-02 | lib-i_to_z| -| **0904** | [LV_EX.ahk](lib-i_to_z/LV_EX.ahk)
39.74kb - 2019-03-24 | lib-i_to_z| -| **0905** | [LV_ExtListView.ahk](lib-i_to_z/LV_ExtListView.ahk)
15.79kb - 2018-12-21 | lib-i_to_z| -| **0906** | [LV_EX_2.ahk](lib-i_to_z/LV_EX_2.ahk)
45.14kb - 2019-06-16 | lib-i_to_z| -| **0907** | [LV_G.ahk](lib-i_to_z/LV_G.ahk)
23.89kb - 2018-06-02 | lib-i_to_z| -| **0908** | [LV_GetListViewText.ahk](lib-i_to_z/LV_GetListViewText.ahk)
6.14kb - 2018-04-16 | lib-i_to_z| -| **0909** | [LV_Group.ahk](lib-i_to_z/LV_Group.ahk)
11.57kb - 2018-08-09 | lib-i_to_z| -| **0910** | [LV_GroupView.ahk](lib-i_to_z/LV_GroupView.ahk)
1.23kb - 2017-09-24 | lib-i_to_z| -| **0911** | [LV_InCellEdit.ahk](lib-i_to_z/LV_InCellEdit.ahk)
26.54kb - 2018-06-02 | lib-i_to_z| -| **0912** | [LV_Lib_1.01.ahk](lib-i_to_z/LV_Lib_1.01.ahk)
8.06kb - 2018-06-02 | lib-i_to_z| -| **0913** | [LV_M.ahk](lib-i_to_z/LV_M.ahk)
9.21kb - 2018-07-13 | lib-i_to_z| -| **0914** | [LV_S.ahk](lib-i_to_z/LV_S.ahk)
7.79kb - 2018-08-20 | lib-i_to_z| -| **0915** | [LV_SortArrow.ahk](lib-i_to_z/LV_SortArrow.ahk)
1.45kb - 2018-06-02 | lib-i_to_z| -| **0916** | [LV_SpecialFunctions.ahk](lib-i_to_z/LV_SpecialFunctions.ahk)
12.73kb - 2018-04-22 | lib-i_to_z| -| **0917** | [LV_TV_CustomColors.ahk](lib-i_to_z/LV_TV_CustomColors.ahk)
18.02kb - 2018-08-20 | lib-i_to_z| -| **0918** | [LV_va.ahk](lib-i_to_z/LV_va.ahk)
2.11kb - 2017-04-07 | lib-i_to_z| -| **0919** | [LV_X.ahk](lib-i_to_z/LV_X.ahk)
6.11kb - 2018-06-02 | lib-i_to_z| -| **0920** | [m.ahk](lib-i_to_z/m.ahk)
0.10kb - 2014-10-28 | lib-i_to_z| -| **0921** | [majkinetor_Dock.ahk](lib-i_to_z/majkinetor_Dock.ahk)
12.26kb - 2018-11-04 | lib-i_to_z| -| **0922** | [MakeIco.ahk](lib-i_to_z/MakeIco.ahk)
3.53kb - 2015-05-31 | lib-i_to_z| -| **0923** | [MAKELANGID.ahk](lib-i_to_z/MAKELANGID.ahk)
0.06kb - 2018-06-02 | lib-i_to_z| -| **0924** | [MAKELCID.ahk](lib-i_to_z/MAKELCID.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| -| **0925** | [MAKELONG.ahk](lib-i_to_z/MAKELONG.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| -| **0926** | [MAKELPARAM.ahk](lib-i_to_z/MAKELPARAM.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| -| **0927** | [MAKELRESULT.ahk](lib-i_to_z/MAKELRESULT.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| -| **0928** | [MAKEWORD.ahk](lib-i_to_z/MAKEWORD.ahk)
0.05kb - 2018-06-02 | lib-i_to_z| -| **0929** | [MAKEWPARAM.ahk](lib-i_to_z/MAKEWPARAM.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| -| **0930** | [ManagedGuis.ahk](lib-i_to_z/ManagedGuis.ahk)
38.00kb - 2018-06-02 | lib-i_to_z| -| **0931** | [ManagedResources.ahk](lib-i_to_z/ManagedResources.ahk)
9.92kb - 2018-06-02 | lib-i_to_z| -| **0932** | [ManageFonts.ahk](lib-i_to_z/ManageFonts.ahk)
4.07kb - 2018-11-14 | lib-i_to_z| -| **0933** | [Manifest.ahk](lib-i_to_z/Manifest.ahk)
1.94kb - 2018-06-02 | lib-i_to_z| -| **0934** | [Map.ahk](lib-i_to_z/Map.ahk)
2.99kb - 2011-11-01 | lib-i_to_z| -| **0935** | [Markdown2HTML.ahk](lib-i_to_z/Markdown2HTML.ahk)
6.89kb - 2018-06-02 | lib-i_to_z| -| **0936** | [MatchItemFromList.ahk](lib-i_to_z/MatchItemFromList.ahk)
2.96kb - 2018-06-02 | lib-i_to_z| -| **0937** | [Math.ahk](lib-i_to_z/Math.ahk)
29.11kb - 2018-08-25 | lib-i_to_z| -| **0938** | [matrix.ahk](lib-i_to_z/matrix.ahk)
20.79kb - 2016-09-15 | lib-i_to_z| -| **0939** | [MCI.ahk](lib-i_to_z/MCI.ahk)
44.27kb - 2018-06-02 | lib-i_to_z| -| **0940** | [MCode.ahk](lib-i_to_z/MCode.ahk)
1.81kb - 2018-06-02 | lib-i_to_z| -| **0941** | [MCodeH.ahk](lib-i_to_z/MCodeH.ahk)
0.44kb - 2018-06-02 | lib-i_to_z| -| **0942** | [md5.ahk](lib-i_to_z/md5.ahk)
4.75kb - 2018-06-02 | lib-i_to_z| -| **0943** | [MD5_2.ahk](lib-i_to_z/MD5_2.ahk)
3.53kb - 2018-11-22 | lib-i_to_z| -| **0944** | [MD5_File.ahk](lib-i_to_z/MD5_File.ahk)
1.09kb - 2016-09-15 | lib-i_to_z| -| **0945** | [md5_L.ahk](lib-i_to_z/md5_L.ahk)
1.33kb - 2018-06-02 | lib-i_to_z| -| **0946** | [MDMF.ahk](lib-i_to_z/MDMF.ahk)
4.59kb - 2018-07-06 | lib-i_to_z| -| **0947** | [MeasureText.ahk](lib-i_to_z/MeasureText.ahk)
0.95kb - 2018-06-22 | lib-i_to_z| -| **0948** | [Mem.ahk](lib-i_to_z/Mem.ahk)
6.24kb - 2018-06-22 | lib-i_to_z| -| **0949** | [MemLib.ahk](lib-i_to_z/MemLib.ahk)
1.97kb - 2018-06-02 | lib-i_to_z| -| **0950** | [Memmngmnt.ahk](lib-i_to_z/Memmngmnt.ahk)
6.12kb - 2018-06-20 | lib-i_to_z| -| **0951** | [memory.ahk](lib-i_to_z/memory.ahk)
2.31kb - 2018-06-02 | lib-i_to_z| -| **0952** | [MemoryBuffer.ahk](lib-i_to_z/MemoryBuffer.ahk)
4.57kb - 2018-06-02 | lib-i_to_z| -| **0953** | [MemoryMore.ahk](lib-i_to_z/MemoryMore.ahk)
6.02kb - 2018-06-12 | lib-i_to_z| -| **0954** | [Menu.ahk](lib-i_to_z/Menu.ahk)
16.08kb - 2018-06-02 | lib-i_to_z| -| **0955** | [Menu_SetSysMenu.ahk](lib-i_to_z/Menu_SetSysMenu.ahk)
5.45kb - 2018-05-25 | lib-i_to_z| -| **0956** | [mg.ahk](lib-i_to_z/mg.ahk)
4.99kb - 2018-06-02 | lib-i_to_z| -| **0957** | [MI (2).ahk](lib-i_to_z/MI%20(2).ahk)
19.67kb - 2018-06-02 | lib-i_to_z| -| **0958** | [MI.ahk](lib-i_to_z/MI.ahk)
20.25kb - 2018-06-02 | lib-i_to_z| -| **0959** | [Midi.ahk](lib-i_to_z/Midi.ahk)
16.78kb - 2018-06-02 | lib-i_to_z| -| **0960** | [MimeTypes.ahk](lib-i_to_z/MimeTypes.ahk)
3.22kb - 2019-07-16 | lib-i_to_z| -| **0961** | [MiniDump.ahk](lib-i_to_z/MiniDump.ahk)
1.23kb - 2018-06-02 | lib-i_to_z| -| **0962** | [Misc Functions.ahk](lib-i_to_z/Misc%20Functions.ahk)
4.59kb - 2017-04-07 | lib-i_to_z| -| **0963** | [misc.ahk](lib-i_to_z/misc.ahk)
10.12kb - 2018-06-02 | lib-i_to_z| -| **0964** | [MiscFunctions.ahk](lib-i_to_z/MiscFunctions.ahk)
68.10kb - 2019-04-12 | lib-i_to_z| -| **0965** | [MMenu.ahk](lib-i_to_z/MMenu.ahk)
23.87kb - 2013-01-07 | lib-i_to_z| -| **0966** | [Monitor.ahk](lib-i_to_z/Monitor.ahk)
13.71kb - 2019-10-02 | lib-i_to_z| -| **0967** | [Monitorconfig.ahk](lib-i_to_z/Monitorconfig.ahk)
1.53kb - 2019-10-31 | lib-i_to_z| -| **0968** | [MonitorConstants.ahk](lib-i_to_z/MonitorConstants.ahk)
0.14kb - 2019-10-31 | lib-i_to_z| -| **0969** | [Mount.ahk](lib-i_to_z/Mount.ahk)
10.88kb - 2018-06-02 | lib-i_to_z| -| **0970** | [Mouse.ahk](lib-i_to_z/Mouse.ahk)
10.70kb - 2018-09-15 | lib-i_to_z| -| **0971** | [MouseExtras.ahk](lib-i_to_z/MouseExtras.ahk)
1.78kb - 2018-04-29 | lib-i_to_z| -| **0972** | [MouseKeyboardCounter.ahk](lib-i_to_z/MouseKeyboardCounter.ahk)
43.31kb - 2018-06-02 | lib-i_to_z| -| **0973** | [MouseMove_Ellipse.ahk](lib-i_to_z/MouseMove_Ellipse.ahk)
3.84kb - 2018-06-02 | lib-i_to_z| -| **0974** | [mouseOverWin.ahk](lib-i_to_z/mouseOverWin.ahk)
0.12kb - 2018-10-30 | lib-i_to_z| -| **0975** | [MoveTaskbar.ahk](lib-i_to_z/MoveTaskbar.ahk)
3.50kb - 2017-10-23 | lib-i_to_z| -| **0976** | [MPC-HC TimeCode.ahk](lib-i_to_z/MPC-HC%20TimeCode.ahk)
1.26kb - 2018-06-02 | lib-i_to_z| -| **0977** | [mpgc.ahk](lib-i_to_z/mpgc.ahk)
4.69kb - 2019-10-26 | lib-i_to_z| -| **0978** | [msg.ahk](lib-i_to_z/msg.ahk)
67.23kb - 2018-06-02 | lib-i_to_z| -| **0979** | [msTill.ahk](lib-i_to_z/msTill.ahk)
0.39kb - 2018-06-02 | lib-i_to_z| -| **0980** | [msToH.ahk](lib-i_to_z/msToH.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0981** | [msToM.ahk](lib-i_to_z/msToM.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0982** | [msToS.ahk](lib-i_to_z/msToS.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| -| **0983** | [mToMs.ahk](lib-i_to_z/mToMs.ahk)
0.04kb - 2018-10-30 | lib-i_to_z| -| **0984** | [Music.ahk](lib-i_to_z/Music.ahk)
12.94kb - 2018-06-02 | lib-i_to_z| -| **0985** | [muteWindow.ahk](lib-i_to_z/muteWindow.ahk)
0.42kb - 2018-10-30 | lib-i_to_z| -| **0986** | [mySQL.ahk](lib-i_to_z/mySQL.ahk)
11.39kb - 2018-06-02 | lib-i_to_z| -| **0987** | [NetGetControl.ahk](lib-i_to_z/NetGetControl.ahk)
9.04kb - 2019-04-07 | lib-i_to_z| -| **0988** | [NetShareEnum.ahk](lib-i_to_z/NetShareEnum.ahk)
2.91kb - 2018-06-02 | lib-i_to_z| -| **0989** | [NetworkAPI.ahk](lib-i_to_z/NetworkAPI.ahk)
4.58kb - 2018-06-02 | lib-i_to_z| -| **0990** | [NewChromeWin.ahk](lib-i_to_z/NewChromeWin.ahk)
0.93kb - 2019-10-21 | lib-i_to_z| -| **0991** | [newestFile.ahk](lib-i_to_z/newestFile.ahk)
0.91kb - 2018-06-02 | lib-i_to_z| -| **0992** | [nicRestart.ahk](lib-i_to_z/nicRestart.ahk)
0.21kb - 2018-10-30 | lib-i_to_z| -| **0993** | [nicSetState.ahk](lib-i_to_z/nicSetState.ahk)
0.17kb - 2018-10-30 | lib-i_to_z| -| **0994** | [NormaliseLineEndings.ahk](lib-i_to_z/NormaliseLineEndings.ahk)
1.28kb - 2018-05-05 | lib-i_to_z| -| **0995** | [Notify.ahk](lib-i_to_z/Notify.ahk)
18.95kb - 2018-05-05 | lib-i_to_z| -| **0996** | [NotifyOnTray.ahk](lib-i_to_z/NotifyOnTray.ahk)
19.83kb - 2018-06-02 | lib-i_to_z| -| **0997** | [NoTrayOrphans.ahk](lib-i_to_z/NoTrayOrphans.ahk)
3.56kb - 2016-09-15 | lib-i_to_z| -| **0998** | [NumGet_.ahk](lib-i_to_z/NumGet_.ahk)
1.40kb - 2019-10-28 | lib-i_to_z| -| **0999** | [NumOp-StrOp.ahk](lib-i_to_z/NumOp-StrOp.ahk)
9.67kb - 2019-04-27 | lib-i_to_z| -| **1000** | [NumSize.ahk](lib-i_to_z/NumSize.ahk)
0.11kb - 2018-06-02 | lib-i_to_z| -| **1001** | [NumType.ahk](lib-i_to_z/NumType.ahk)
0.17kb - 2018-06-02 | lib-i_to_z| -| **1002** | [OAuth.ahk](lib-i_to_z/OAuth.ahk)
17.21kb - 2019-10-11 | lib-i_to_z| -| **1003** | [Obj.ahk](lib-i_to_z/Obj.ahk)
1.18kb - 2018-06-02 | lib-i_to_z| -| **1004** | [ObjByRef.ahk](lib-i_to_z/ObjByRef.ahk)
4.43kb - 2018-06-02 | lib-i_to_z| -| **1005** | [ObjCSV.ahk](lib-i_to_z/ObjCSV.ahk)
80.91kb - 2018-06-02 | lib-i_to_z| -| **1006** | [ObjDump.ahk](lib-i_to_z/ObjDump.ahk)
3.39kb - 2018-06-02 | lib-i_to_z| -| **1007** | [object.ahk](lib-i_to_z/object.ahk)
12.08kb - 2018-06-02 | lib-i_to_z| -| **1008** | [Object.String.ahk](lib-i_to_z/Object.String.ahk)
31.97kb - 2019-06-12 | lib-i_to_z| -| **1009** | [ObjectBundles.ahk](lib-i_to_z/ObjectBundles.ahk)
13.57kb - 2018-06-02 | lib-i_to_z| -| **1010** | [ObjectHandling.ahk](lib-i_to_z/ObjectHandling.ahk)
13.04kb - 2018-12-21 | lib-i_to_z| -| **1011** | [ObjectTools.ahk](lib-i_to_z/ObjectTools.ahk)
11.06kb - 2017-04-07 | lib-i_to_z| -| **1012** | [ObjLoad.ahk](lib-i_to_z/ObjLoad.ahk)
1.48kb - 2018-07-25 | lib-i_to_z| -| **1013** | [ObjLoadandBump.ahk](lib-i_to_z/ObjLoadandBump.ahk)
3.61kb - 2018-06-02 | lib-i_to_z| -| **1014** | [ObjRegisterActive.ahk](lib-i_to_z/ObjRegisterActive.ahk)
1.39kb - 2018-08-17 | lib-i_to_z| -| **1015** | [ObjShare.ahk](lib-i_to_z/ObjShare.ahk)
0.39kb - 2018-06-02 | lib-i_to_z| -| **1016** | [ObjToFile.ahk](lib-i_to_z/ObjToFile.ahk)
3.47kb - 2019-10-26 | lib-i_to_z| -| **1017** | [objtostring.ahk](lib-i_to_z/objtostring.ahk)
4.68kb - 2019-10-26 | lib-i_to_z| -| **1018** | [ObjTree.ahk](lib-i_to_z/ObjTree.ahk)
23.54kb - 2018-06-02 | lib-i_to_z| -| **1019** | [OCR.ahk](lib-i_to_z/OCR.ahk)
5.38kb - 2018-06-02 | lib-i_to_z| -| **1020** | [ocrBWCompare.ahk](lib-i_to_z/ocrBWCompare.ahk)
0.42kb - 2018-06-20 | lib-i_to_z| -| **1021** | [ocrBWconverter.ahk](lib-i_to_z/ocrBWconverter.ahk)
0.35kb - 2018-06-20 | lib-i_to_z| -| **1022** | [ocrGetDigit.ahk](lib-i_to_z/ocrGetDigit.ahk)
0.56kb - 2018-06-20 | lib-i_to_z| -| **1023** | [ocrLeftToRight.ahk](lib-i_to_z/ocrLeftToRight.ahk)
0.56kb - 2018-06-20 | lib-i_to_z| -| **1024** | [OH.ahk](lib-i_to_z/OH.ahk)
22.81kb - 2018-12-08 | lib-i_to_z| -| **1025** | [oIE.ahk](lib-i_to_z/oIE.ahk)
5.21kb - 2018-08-20 | lib-i_to_z| -| **1026** | [OldToolbar.ahk](lib-i_to_z/OldToolbar.ahk)
44.71kb - 2015-10-31 | lib-i_to_z| -| **1027** | [On.ahk](lib-i_to_z/On.ahk)
11.28kb - 2018-06-02 | lib-i_to_z| -| **1028** | [OnExitF.ahk](lib-i_to_z/OnExitF.ahk)
0.64kb - 2018-06-02 | lib-i_to_z| -| **1029** | [OnMenuHilite.ahk](lib-i_to_z/OnMenuHilite.ahk)
1.91kb - 2018-06-02 | lib-i_to_z| -| **1030** | [OnPBMsg.ahk](lib-i_to_z/OnPBMsg.ahk)
4.60kb - 2018-06-02 | lib-i_to_z| -| **1031** | [OnWin.ahk](lib-i_to_z/OnWin.ahk)
9.57kb - 2018-06-02 | lib-i_to_z| -| **1032** | [OOPFunctions.ahk](lib-i_to_z/OOPFunctions.ahk)
0.70kb - 2018-06-02 | lib-i_to_z| -| **1033** | [OpenFileLocation.ahk](lib-i_to_z/OpenFileLocation.ahk)
0.46kb - 2018-05-05 | lib-i_to_z| -| **1034** | [OpenFilepaths.ahk](lib-i_to_z/OpenFilepaths.ahk)
3.59kb - 2018-05-05 | lib-i_to_z| -| **1035** | [OpenFolderAndSelectItems.ahk](lib-i_to_z/OpenFolderAndSelectItems.ahk)
2.49kb - 2018-03-08 | lib-i_to_z| -| **1036** | [OpenProcess.ahk](lib-i_to_z/OpenProcess.ahk)
1.22kb - 2018-08-16 | lib-i_to_z| -| **1037** | [OpenProcessToken.ahk](lib-i_to_z/OpenProcessToken.ahk)
1.28kb - 2018-08-16 | lib-i_to_z| -| **1038** | [OpenWith.ahk](lib-i_to_z/OpenWith.ahk)
0.75kb - 2018-03-08 | lib-i_to_z| -| **1039** | [Operators_Fct.ahk](lib-i_to_z/Operators_Fct.ahk)
8.99kb - 2017-07-14 | lib-i_to_z| -| **1040** | [OrderedArray.ahk](lib-i_to_z/OrderedArray.ahk)
3.82kb - 2019-10-20 | lib-i_to_z| -| **1041** | [OSTest.ahk](lib-i_to_z/OSTest.ahk)
1.38kb - 2017-07-14 | lib-i_to_z| -| **1042** | [Package.ahk](lib-i_to_z/Package.ahk)
4.28kb - 2018-06-02 | lib-i_to_z| -| **1043** | [PackingASentence.ahk](lib-i_to_z/PackingASentence.ahk)
0.81kb - 2019-11-01 | lib-i_to_z| -| **1044** | [Panel.ahk](lib-i_to_z/Panel.ahk)
8.00kb - 2019-04-24 | lib-i_to_z| -| **1045** | [para.ahk](lib-i_to_z/para.ahk)
11.56kb - 2019-09-10 | lib-i_to_z| -| **1046** | [pArr.ahk](lib-i_to_z/pArr.ahk)
0.74kb - 2017-05-09 | lib-i_to_z| -| **1047** | [Parse.ahk](lib-i_to_z/Parse.ahk)
4.88kb - 2018-06-02 | lib-i_to_z| -| **1048** | [ParseScriptCommandLine.ahk](lib-i_to_z/ParseScriptCommandLine.ahk)
2.61kb - 2018-02-28 | lib-i_to_z| -| **1049** | [PasteAsCSV.ahk](lib-i_to_z/PasteAsCSV.ahk)
3.77kb - 2019-02-16 | lib-i_to_z| -| **1050** | [path-win-to-unix.ahk](lib-i_to_z/path-win-to-unix.ahk)
0.34kb - 2019-11-01 | lib-i_to_z| -| **1051** | [Path.ahk](lib-i_to_z/Path.ahk)
1.60kb - 2018-06-02 | lib-i_to_z| -| **1052** | [Path2.ahk](lib-i_to_z/Path2.ahk)
24.78kb - 2018-05-25 | lib-i_to_z| -| **1053** | [patternScan.ahk](lib-i_to_z/patternScan.ahk)
5.97kb - 2014-03-21 | lib-i_to_z| -| **1054** | [PBhash.ahk](lib-i_to_z/PBhash.ahk)
31.85kb - 2018-08-23 | lib-i_to_z| -| **1055** | [PBhashtype.ahk](lib-i_to_z/PBhashtype.ahk)
1.26kb - 2018-08-23 | lib-i_to_z| -| **1056** | [pbkdf2.ahk](lib-i_to_z/pbkdf2.ahk)
6.10kb - 2018-10-03 | lib-i_to_z| -| **1057** | [PBtimeserver.ahk](lib-i_to_z/PBtimeserver.ahk)
0.72kb - 2018-08-23 | lib-i_to_z| -| **1058** | [Pebwa.ahk](lib-i_to_z/Pebwa.ahk)
9.98kb - 2018-06-02 | lib-i_to_z| -| **1059** | [PECreateEmpty.ahk](lib-i_to_z/PECreateEmpty.ahk)
3.34kb - 2018-06-02 | lib-i_to_z| -| **1060** | [Percent.ahk](lib-i_to_z/Percent.ahk)
0.41kb - 2018-03-08 | lib-i_to_z| -| **1061** | [PercentChange.ahk](lib-i_to_z/PercentChange.ahk)
0.59kb - 2018-03-08 | lib-i_to_z| -| **1062** | [PercentDiff.ahk](lib-i_to_z/PercentDiff.ahk)
0.64kb - 2018-03-08 | lib-i_to_z| -| **1063** | [PerfectPunctuation.ahk](lib-i_to_z/PerfectPunctuation.ahk)
1.40kb - 2019-11-01 | lib-i_to_z| -| **1064** | [Perl.ahk](lib-i_to_z/Perl.ahk)
1.89kb - 2018-06-02 | lib-i_to_z| -| **1065** | [Permutate.ahk](lib-i_to_z/Permutate.ahk)
0.68kb - 2019-08-30 | lib-i_to_z| -| **1066** | [Permutation.ahk](lib-i_to_z/Permutation.ahk)
0.98kb - 2018-11-18 | lib-i_to_z| -| **1067** | [pgArray.ahk](lib-i_to_z/pgArray.ahk)
3.00kb - 2018-06-02 | lib-i_to_z| -| **1068** | [PHY.ahk](lib-i_to_z/PHY.ahk)
16.84kb - 2018-06-02 | lib-i_to_z| -| **1069** | [Ping (2).ahk](lib-i_to_z/Ping%20(2).ahk)
1.57kb - 2018-06-02 | lib-i_to_z| -| **1070** | [ping.ahk](lib-i_to_z/ping.ahk)
10.51kb - 2018-06-02 | lib-i_to_z| -| **1071** | [ping2.ahk](lib-i_to_z/ping2.ahk)
3.44kb - 2018-06-02 | lib-i_to_z| -| **1072** | [ping_by_Uberi.ahk](lib-i_to_z/ping_by_Uberi.ahk)
13.92kb - 2019-07-31 | lib-i_to_z| -| **1073** | [PipeRun.ahk](lib-i_to_z/PipeRun.ahk)
2.24kb - 2018-06-02 | lib-i_to_z| -| **1074** | [PivotArraySort.ahk](lib-i_to_z/PivotArraySort.ahk)
3.46kb - 2019-05-12 | lib-i_to_z| -| **1075** | [PixelGetColorWithinTolerance.ahk](lib-i_to_z/PixelGetColorWithinTolerance.ahk)
2.15kb - 2019-04-20 | lib-i_to_z| -| **1076** | [PixelToHimetric.ahk](lib-i_to_z/PixelToHimetric.ahk)
0.12kb - 2018-03-08 | lib-i_to_z| -| **1077** | [PixelToTwip.ahk](lib-i_to_z/PixelToTwip.ahk)
0.11kb - 2018-03-08 | lib-i_to_z| -| **1078** | [PixPut.ahk](lib-i_to_z/PixPut.ahk)
2.81kb - 2011-02-10 | lib-i_to_z| -| **1079** | [PlaySound.ahk](lib-i_to_z/PlaySound.ahk)
1.43kb - 2018-06-02 | lib-i_to_z| -| **1080** | [PleasantNotify.ahk](lib-i_to_z/PleasantNotify.ahk)
2.09kb - 2018-06-02 | lib-i_to_z| -| **1081** | [PluginHelper.ahk](lib-i_to_z/PluginHelper.ahk)
1.11kb - 2018-06-02 | lib-i_to_z| -| **1082** | [plugins.ahk](lib-i_to_z/plugins.ahk)
1.65kb - 2018-06-02 | lib-i_to_z| -| **1083** | [PngToBase64.ahk](lib-i_to_z/PngToBase64.ahk)
0.69kb - 2019-03-31 | lib-i_to_z| -| **1084** | [PolynomialRouteSolver.ahk](lib-i_to_z/PolynomialRouteSolver.ahk)
2.54kb - 2019-05-05 | lib-i_to_z| -| **1085** | [PopUpMenuFix.ahk](lib-i_to_z/PopUpMenuFix.ahk)
4.89kb - 2019-05-25 | lib-i_to_z| -| **1086** | [PopupXY.ahk](lib-i_to_z/PopupXY.ahk)
4.76kb - 2011-04-25 | lib-i_to_z| -| **1087** | [portallib.ahk](lib-i_to_z/portallib.ahk)
163.72kb - 2019-02-18 | lib-i_to_z| -| **1088** | [portallib_cleared.ahk](lib-i_to_z/portallib_cleared.ahk)
157.08kb - 2019-02-18 | lib-i_to_z| -| **1089** | [PostClick.ahk](lib-i_to_z/PostClick.ahk)
0.21kb - 2014-06-06 | lib-i_to_z| -| **1090** | [PowerShell.ahk](lib-i_to_z/PowerShell.ahk)
0.78kb - 2018-03-08 | lib-i_to_z| -| **1091** | [Prefs.ahk](lib-i_to_z/Prefs.ahk)
3.09kb - 2018-06-02 | lib-i_to_z| -| **1092** | [prettyReport.ahk](lib-i_to_z/prettyReport.ahk)
18.76kb - 2016-09-15 | lib-i_to_z| -| **1093** | [print.ahk](lib-i_to_z/print.ahk)
4.40kb - 2016-04-03 | lib-i_to_z| -| **1094** | [Printer (2).ahk](lib-i_to_z/Printer%20(2).ahk)
2.46kb - 2018-03-08 | lib-i_to_z| -| **1095** | [Printer.ahk](lib-i_to_z/Printer.ahk)
2.46kb - 2018-09-15 | lib-i_to_z| -| **1096** | [printerfunctions.ahk](lib-i_to_z/printerfunctions.ahk)
1.62kb - 2018-06-02 | lib-i_to_z| -| **1097** | [printerfunctionsV102.ahk](lib-i_to_z/printerfunctionsV102.ahk)
1.69kb - 2019-02-18 | lib-i_to_z| -| **1098** | [Process.ahk](lib-i_to_z/Process.ahk)
7.92kb - 2018-06-02 | lib-i_to_z| -| **1099** | [processExist.ahk](lib-i_to_z/processExist.ahk)
0.07kb - 2018-10-30 | lib-i_to_z| -| **1100** | [ProcessInfo.ahk](lib-i_to_z/ProcessInfo.ahk)
2.80kb - 2018-06-15 | lib-i_to_z| -| **1101** | [ProcessList.ahk](lib-i_to_z/ProcessList.ahk)
2.94kb - 2019-04-30 | lib-i_to_z| -| **1102** | [ProcessMem.ahk](lib-i_to_z/ProcessMem.ahk)
1.58kb - 2018-06-02 | lib-i_to_z| -| **1103** | [processPriority.ahk](lib-i_to_z/processPriority.ahk)
0.16kb - 2018-10-30 | lib-i_to_z| -| **1104** | [ProfileHandler.ahk](lib-i_to_z/ProfileHandler.ahk)
9.78kb - 2015-09-17 | lib-i_to_z| -| **1105** | [Progress.ahk](lib-i_to_z/Progress.ahk)
4.79kb - 2018-03-08 | lib-i_to_z| -| **1106** | [progressBox.ahk](lib-i_to_z/progressBox.ahk)
0.68kb - 2018-06-02 | lib-i_to_z| -| **1107** | [Progress_Lib.ahk](lib-i_to_z/Progress_Lib.ahk)
13.95kb - 2016-09-15 | lib-i_to_z| -| **1108** | [Property.ahk](lib-i_to_z/Property.ahk)
17.67kb - 2018-06-02 | lib-i_to_z| -| **1109** | [PropertyWin.ahk](lib-i_to_z/PropertyWin.ahk)
57.85kb - 2014-03-19 | lib-i_to_z| -| **1110** | [psTool.ahk](lib-i_to_z/psTool.ahk)
1.91kb - 2019-08-09 | lib-i_to_z| -| **1111** | [PS_BMP.ahk](lib-i_to_z/PS_BMP.ahk)
35.92kb - 2018-11-18 | lib-i_to_z| -| **1112** | [PS_ExceptionHandler.ahk](lib-i_to_z/PS_ExceptionHandler.ahk)
4.68kb - 2019-04-23 | lib-i_to_z| -| **1113** | [PS_GIF.ahk](lib-i_to_z/PS_GIF.ahk)
59.09kb - 2018-11-18 | lib-i_to_z| -| **1114** | [PS_PAL.ahk](lib-i_to_z/PS_PAL.ahk)
46.69kb - 2018-11-18 | lib-i_to_z| -| **1115** | [PS_Quantization.ahk](lib-i_to_z/PS_Quantization.ahk)
17.73kb - 2018-11-18 | lib-i_to_z| -| **1116** | [PUM_API.ahk](lib-i_to_z/PUM_API.ahk)
22.73kb - 2018-06-02 | lib-i_to_z| -| **1117** | [QA.ahk](lib-i_to_z/QA.ahk)
15.39kb - 2019-10-28 | lib-i_to_z| -| **1118** | [Qhtm.ahk](lib-i_to_z/Qhtm.ahk)
18.76kb - 2018-06-02 | lib-i_to_z| -| **1119** | [QMsgBox.ahk](lib-i_to_z/QMsgBox.ahk)
5.65kb - 2013-10-30 | lib-i_to_z| -| **1120** | [QMsgBox_foos.ahk](lib-i_to_z/QMsgBox_foos.ahk)
2.72kb - 2013-10-30 | lib-i_to_z| -| **1121** | [QPX.ahk](lib-i_to_z/QPX.ahk)
0.46kb - 2011-02-10 | lib-i_to_z| -| **1122** | [Query.ahk](lib-i_to_z/Query.ahk)
1.36kb - 2018-07-29 | lib-i_to_z| -| **1123** | [QueryDosDevice.ahk](lib-i_to_z/QueryDosDevice.ahk)
0.79kb - 2018-09-15 | lib-i_to_z| -| **1124** | [QueryRecycleBin.ahk](lib-i_to_z/QueryRecycleBin.ahk)
3.89kb - 2018-03-08 | lib-i_to_z| -| **1125** | [QueryTokenPrivileges.ahk](lib-i_to_z/QueryTokenPrivileges.ahk)
3.09kb - 2018-08-16 | lib-i_to_z| -| **1126** | [quick_sort_array_no_recursion.ahk](lib-i_to_z/quick_sort_array_no_recursion.ahk)
1.95kb - 2018-11-18 | lib-i_to_z| -| **1127** | [Quoted String Replace.ahk](lib-i_to_z/Quoted%20String%20Replace.ahk)
1.21kb - 2016-03-11 | lib-i_to_z| -| **1128** | [RadianToDegree.ahk](lib-i_to_z/RadianToDegree.ahk)
0.29kb - 2018-03-08 | lib-i_to_z| -| **1129** | [RaGrid.ahk](lib-i_to_z/RaGrid.ahk)
23.86kb - 2018-06-02 | lib-i_to_z| -| **1130** | [rand.ahk](lib-i_to_z/rand.ahk)
0.09kb - 2018-10-30 | lib-i_to_z| -| **1131** | [RandBezier.ahk](lib-i_to_z/RandBezier.ahk)
1.45kb - 2017-10-23 | lib-i_to_z| -| **1132** | [Random jock StrX() Parsing.ahk](lib-i_to_z/Random%20jock%20StrX()%20Parsing.ahk)
1.92kb - 2018-06-02 | lib-i_to_z| -| **1133** | [RandomBezier.ahk](lib-i_to_z/RandomBezier.ahk)
2.71kb - 2018-06-02 | lib-i_to_z| -| **1134** | [randomdotorg.ahk](lib-i_to_z/randomdotorg.ahk)
49.91kb - 2018-06-02 | lib-i_to_z| -| **1135** | [RandomEx.ahk](lib-i_to_z/RandomEx.ahk)
2.79kb - 2018-03-08 | lib-i_to_z| -| **1136** | [RandomiseArray.ahk](lib-i_to_z/RandomiseArray.ahk)
0.87kb - 2018-06-02 | lib-i_to_z| -| **1137** | [RandomName(2).ahk](lib-i_to_z/RandomName(2).ahk)
7.67kb - 2019-01-24 | lib-i_to_z| -| **1138** | [RandomName.ahk](lib-i_to_z/RandomName.ahk)
7.73kb - 2018-06-02 | lib-i_to_z| -| **1139** | [RandomStr.AHK](lib-i_to_z/RandomStr.AHK)
0.22kb - 2018-06-02 | lib-i_to_z| -| **1140** | [RandomUniqNum.ahk](lib-i_to_z/RandomUniqNum.ahk)
0.60kb - 2018-06-02 | lib-i_to_z| -| **1141** | [RandomVar.ahk](lib-i_to_z/RandomVar.ahk)
2.26kb - 2018-06-02 | lib-i_to_z| -| **1142** | [RandSleep.ahk](lib-i_to_z/RandSleep.ahk)
1.04kb - 2017-10-23 | lib-i_to_z| -| **1143** | [randStr.ahk](lib-i_to_z/randStr.ahk)
0.89kb - 2018-10-30 | lib-i_to_z| -| **1144** | [range.ahk](lib-i_to_z/range.ahk)
1.40kb - 2019-10-26 | lib-i_to_z| -| **1145** | [RapidHotkey (2).ahk](lib-i_to_z/RapidHotkey%20(2).ahk)
2.81kb - 2016-09-15 | lib-i_to_z| -| **1146** | [RapidHotkey.ahk](lib-i_to_z/RapidHotkey.ahk)
48.48kb - 2018-06-02 | lib-i_to_z| -| **1147** | [RAW_POS_interpretation_for_QL_Swath_KMLs.ahk](lib-i_to_z/RAW_POS_interpretation_for_QL_Swath_KMLs.ahk)
28.75kb - 2019-07-26 | lib-i_to_z| -| **1148** | [RA_StringSort.ahk](lib-i_to_z/RA_StringSort.ahk)
0.27kb - 2018-08-20 | lib-i_to_z| -| **1149** | [ReadFileLine.ahk](lib-i_to_z/ReadFileLine.ahk)
0.99kb - 2018-03-08 | lib-i_to_z| -| **1150** | [readHotkeys.ahk](lib-i_to_z/readHotkeys.ahk)
0.99kb - 2018-10-30 | lib-i_to_z| -| **1151** | [ReadIni.ahk](lib-i_to_z/ReadIni.ahk)
4.43kb - 2018-05-05 | lib-i_to_z| -| **1152** | [ReadLocalizedString.ahk](lib-i_to_z/ReadLocalizedString.ahk)
2.00kb - 2018-03-08 | lib-i_to_z| -| **1153** | [ReadMemory.ahk](lib-i_to_z/ReadMemory.ahk)
2.34kb - 2018-06-02 | lib-i_to_z| -| **1154** | [ReadMemory_Str.ahk](lib-i_to_z/ReadMemory_Str.ahk)
1.89kb - 2018-06-02 | lib-i_to_z| -| **1155** | [ReadRawMemory.AHK](lib-i_to_z/ReadRawMemory.AHK)
0.85kb - 2018-06-02 | lib-i_to_z| -| **1156** | [readResource.ahk](lib-i_to_z/readResource.ahk)
0.64kb - 2018-06-02 | lib-i_to_z| -| **1157** | [Rebar.ahk](lib-i_to_z/Rebar.ahk)
26.50kb - 2018-06-02 | lib-i_to_z| -| **1158** | [RecordSetADO.ahk](lib-i_to_z/RecordSetADO.ahk)
2.02kb - 2018-06-02 | lib-i_to_z| -| **1159** | [RecordSetMySQL.ahk](lib-i_to_z/RecordSetMySQL.ahk)
1.99kb - 2018-06-02 | lib-i_to_z| -| **1160** | [RecordSetSqlLite.ahk](lib-i_to_z/RecordSetSqlLite.ahk)
3.52kb - 2018-06-02 | lib-i_to_z| -| **1161** | [RedrawDB.ahk](lib-i_to_z/RedrawDB.ahk)
3.58kb - 2018-08-25 | lib-i_to_z| -| **1162** | [RedrawWindow.ahk](lib-i_to_z/RedrawWindow.ahk)
1.81kb - 2018-03-08 | lib-i_to_z| -| **1163** | [ReduceWorkingSetSize.ahk](lib-i_to_z/ReduceWorkingSetSize.ahk)
0.22kb - 2018-08-16 | lib-i_to_z| -| **1164** | [ReFormatTime.ahk](lib-i_to_z/ReFormatTime.ahk)
0.25kb - 2018-06-02 | lib-i_to_z| -| **1165** | [REG to VBS.ahk](lib-i_to_z/REG%20to%20VBS.ahk)
7.83kb - 2018-06-02 | lib-i_to_z| -| **1166** | [RegEasy.ahk](lib-i_to_z/RegEasy.ahk)
4.19kb - 2018-12-21 | lib-i_to_z| -| **1167** | [RegEx.ahk](lib-i_to_z/RegEx.ahk)
6.56kb - 2018-12-08 | lib-i_to_z| -| **1168** | [RegExDebug.ahk](lib-i_to_z/RegExDebug.ahk)
5.11kb - 2018-05-05 | lib-i_to_z| -| **1169** | [RegExFileSearch.ahk](lib-i_to_z/RegExFileSearch.ahk)
7.13kb - 2018-05-05 | lib-i_to_z| -| **1170** | [regExMatchI.ahk](lib-i_to_z/regExMatchI.ahk)
0.19kb - 2018-10-30 | lib-i_to_z| -| **1171** | [regExReplaceI.ahk](lib-i_to_z/regExReplaceI.ahk)
0.21kb - 2018-10-30 | lib-i_to_z| -| **1172** | [RegExSort.ahk](lib-i_to_z/RegExSort.ahk)
2.16kb - 2016-02-05 | lib-i_to_z| -| **1173** | [regionGetColor.Ahk](lib-i_to_z/regionGetColor.Ahk)
7.94kb - 2018-07-12 | lib-i_to_z| -| **1174** | [RegionWaitChange.ahk](lib-i_to_z/RegionWaitChange.ahk)
1.98kb - 2017-04-07 | lib-i_to_z| -| **1175** | [RegisterSyncCallback.ahk](lib-i_to_z/RegisterSyncCallback.ahk)
3.87kb - 2018-06-14 | lib-i_to_z| -| **1176** | [releaseKeyspSend.ahk](lib-i_to_z/releaseKeyspSend.ahk)
0.68kb - 2018-06-02 | lib-i_to_z| -| **1177** | [reloadAsAdmin.ahk](lib-i_to_z/reloadAsAdmin.ahk)
2.95kb - 2018-07-29 | lib-i_to_z| -| **1178** | [ReloadScriptOnEdit.ahk](lib-i_to_z/ReloadScriptOnEdit.ahk)
1.02kb - 2018-07-29 | lib-i_to_z| -| **1179** | [RelToAbs.ahk](lib-i_to_z/RelToAbs.ahk)
0.54kb - 2019-04-19 | lib-i_to_z| -| **1180** | [RemoteBuf.ahk](lib-i_to_z/RemoteBuf.ahk)
12.66kb - 2019-04-14 | lib-i_to_z| -| **1181** | [RemoteObj.ahk](lib-i_to_z/RemoteObj.ahk)
1.20kb - 2018-12-07 | lib-i_to_z| -| **1182** | [RemoteResource.ahk](lib-i_to_z/RemoteResource.ahk)
4.04kb - 2019-09-07 | lib-i_to_z| -| **1183** | [RemoteScintilla.ahk](lib-i_to_z/RemoteScintilla.ahk)
8.23kb - 2019-04-14 | lib-i_to_z| -| **1184** | [RemoveDuplicates.ahk](lib-i_to_z/RemoveDuplicates.ahk)
0.20kb - 2013-05-24 | lib-i_to_z| -| **1185** | [RemoveIllegalFilenameCharacters.ahk](lib-i_to_z/RemoveIllegalFilenameCharacters.ahk)
0.70kb - 2018-05-05 | lib-i_to_z| -| **1186** | [rename.ahk](lib-i_to_z/rename.ahk)
2.30kb - 2018-11-11 | lib-i_to_z| -| **1187** | [rename_script.ahk](lib-i_to_z/rename_script.ahk)
2.30kb - 2019-02-10 | lib-i_to_z| -| **1188** | [ReplaceHtmlDecodedChars.ahk](lib-i_to_z/ReplaceHtmlDecodedChars.ahk)
22.93kb - 2018-05-05 | lib-i_to_z| -| **1189** | [ReplaceHtmlEncodedChars.ahk](lib-i_to_z/ReplaceHtmlEncodedChars.ahk)
30.33kb - 2018-05-05 | lib-i_to_z| -| **1190** | [ReplaceIllegalFilenameCharacters.ahk](lib-i_to_z/ReplaceIllegalFilenameCharacters.ahk)
0.72kb - 2018-05-05 | lib-i_to_z| -| **1191** | [replaceList.ahk](lib-i_to_z/replaceList.ahk)
0.20kb - 2018-08-31 | lib-i_to_z| -| **1192** | [ReplaceSystemVariables.ahk](lib-i_to_z/ReplaceSystemVariables.ahk)
13.47kb - 2018-05-05 | lib-i_to_z| -| **1193** | [ReplaceUrlEncodedChars.ahk](lib-i_to_z/ReplaceUrlEncodedChars.ahk)
10.46kb - 2018-05-05 | lib-i_to_z| -| **1194** | [ReplaceUserVariables.ahk](lib-i_to_z/ReplaceUserVariables.ahk)
2.90kb - 2018-05-05 | lib-i_to_z| -| **1195** | [Replicate.ahk](lib-i_to_z/Replicate.ahk)
0.32kb - 2018-05-05 | lib-i_to_z| -| **1196** | [ResDelete.ahk](lib-i_to_z/ResDelete.ahk)
0.19kb - 2018-06-02 | lib-i_to_z| -| **1197** | [ResDllCreate.ahk](lib-i_to_z/ResDllCreate.ahk)
0.57kb - 2018-06-02 | lib-i_to_z| -| **1198** | [ResExist.ahk](lib-i_to_z/ResExist.ahk)
1.13kb - 2018-06-02 | lib-i_to_z| -| **1199** | [ResGet.ahk](lib-i_to_z/ResGet.ahk)
1.31kb - 2018-06-02 | lib-i_to_z| -| **1200** | [ResizeandConvert_ICO.ahk](lib-i_to_z/ResizeandConvert_ICO.ahk)
3.47kb - 2019-10-29 | lib-i_to_z| -| **1201** | [ResolveHostname.ahk](lib-i_to_z/ResolveHostname.ahk)
1.56kb - 2018-06-02 | lib-i_to_z| -| **1202** | [ResourceID.ahk](lib-i_to_z/ResourceID.ahk)
1.23kb - 2018-06-02 | lib-i_to_z| -| **1203** | [ResourceIDOfIcon.ahk](lib-i_to_z/ResourceIDOfIcon.ahk)
1.15kb - 2018-07-29 | lib-i_to_z| -| **1204** | [ResourceIndexToId.ahk](lib-i_to_z/ResourceIndexToId.ahk)
0.91kb - 2018-06-02 | lib-i_to_z| -| **1205** | [ResourceMonitor.ahk](lib-i_to_z/ResourceMonitor.ahk)
6.19kb - 2019-10-28 | lib-i_to_z| -| **1206** | [ResourHackIcons.ahk](lib-i_to_z/ResourHackIcons.ahk)
9.03kb - 2018-06-02 | lib-i_to_z| -| **1207** | [ResPut.ahk](lib-i_to_z/ResPut.ahk)
0.24kb - 2018-06-02 | lib-i_to_z| -| **1208** | [ResPutFile.ahk](lib-i_to_z/ResPutFile.ahk)
0.29kb - 2018-06-02 | lib-i_to_z| -| **1209** | [RestartWindowsExplorer.ahk](lib-i_to_z/RestartWindowsExplorer.ahk)
0.59kb - 2018-03-08 | lib-i_to_z| -| **1210** | [ResumeProcess.ahk](lib-i_to_z/ResumeProcess.ahk)
0.91kb - 2018-08-16 | lib-i_to_z| -| **1211** | [reverseArray.AHK](lib-i_to_z/reverseArray.AHK)
1.66kb - 2018-06-02 | lib-i_to_z| -| **1212** | [ReverseBytes.ahk](lib-i_to_z/ReverseBytes.ahk)
1.07kb - 2018-03-08 | lib-i_to_z| -| **1213** | [ReverseLookup.ahk](lib-i_to_z/ReverseLookup.ahk)
1.55kb - 2018-06-02 | lib-i_to_z| -| **1214** | [ReverseSign.ahk](lib-i_to_z/ReverseSign.ahk)
0.21kb - 2013-05-24 | lib-i_to_z| -| **1215** | [rgbToHex.ahk](lib-i_to_z/rgbToHex.ahk)
0.89kb - 2018-06-02 | lib-i_to_z| -| **1216** | [RI.ahk](lib-i_to_z/RI.ahk)
19.68kb - 2017-09-01 | lib-i_to_z| -| **1217** | [Ribbon.ahk](lib-i_to_z/Ribbon.ahk)
3.95kb - 2019-05-27 | lib-i_to_z| -| **1218** | [RichEdit OleCallback.ahk](lib-i_to_z/RichEdit%20OleCallback.ahk)
9.12kb - 2018-03-13 | lib-i_to_z| -| **1219** | [RichEdit-Plus(Unready).ahk](lib-i_to_z/RichEdit-Plus(Unready).ahk)
31.12kb - 2019-05-13 | lib-i_to_z| -| **1220** | [RichEdit.ahk](lib-i_to_z/RichEdit.ahk)
80.60kb - 2019-09-01 | lib-i_to_z| -| **1221** | [RichEdit_OLECallback.ahk](lib-i_to_z/RichEdit_OLECallback.ahk)
21.07kb - 2018-02-08 | lib-i_to_z| -| **1222** | [RIni.ahk](lib-i_to_z/RIni.ahk)
65.74kb - 2018-06-02 | lib-i_to_z| -| **1223** | [RisImpax.ahk](lib-i_to_z/RisImpax.ahk)
32.18kb - 2018-03-10 | lib-i_to_z| -| **1224** | [RMO.ahk](lib-i_to_z/RMO.ahk)
9.90kb - 2015-08-23 | lib-i_to_z| -| **1225** | [RoboCopy.ahk](lib-i_to_z/RoboCopy.ahk)
2.07kb - 2018-03-08 | lib-i_to_z| -| **1226** | [RomanNumbers.ahk](lib-i_to_z/RomanNumbers.ahk)
3.52kb - 2018-06-02 | lib-i_to_z| -| **1227** | [round_near.ahk](lib-i_to_z/round_near.ahk)
0.05kb - 2018-08-31 | lib-i_to_z| -| **1228** | [RPath.ahk](lib-i_to_z/RPath.ahk)
3.61kb - 2011-02-10 | lib-i_to_z| -| **1229** | [RSHash.ahk](lib-i_to_z/RSHash.ahk)
0.80kb - 2018-03-08 | lib-i_to_z| -| **1230** | [rtf.ahk](lib-i_to_z/rtf.ahk)
1.68kb - 2019-08-27 | lib-i_to_z| -| **1231** | [RTV.ahk](lib-i_to_z/RTV.ahk)
9.26kb - 2017-09-04 | lib-i_to_z| -| **1232** | [RunAsAdmin.ahk](lib-i_to_z/RunAsAdmin.ahk)
0.87kb - 2018-06-02 | lib-i_to_z| -| **1233** | [RunFileDlg.ahk](lib-i_to_z/RunFileDlg.ahk)
1.29kb - 2018-03-08 | lib-i_to_z| -| **1234** | [runRemoteScript.AHK](lib-i_to_z/runRemoteScript.AHK)
2.77kb - 2014-03-21 | lib-i_to_z| -| **1235** | [RXMS.ahk](lib-i_to_z/RXMS.ahk)
13.31kb - 2018-06-02 | lib-i_to_z| -| **1236** | [SaveFile.ahk](lib-i_to_z/SaveFile.ahk)
9.21kb - 2018-06-20 | lib-i_to_z| -| **1237** | [SaveHICONtoFile.ahk](lib-i_to_z/SaveHICONtoFile.ahk)
5.24kb - 2018-12-19 | lib-i_to_z| -| **1238** | [SB (2).ahk](lib-i_to_z/SB%20(2).ahk)
2.97kb - 2018-06-02 | lib-i_to_z| -| **1239** | [SB.ahk](lib-i_to_z/SB.ahk)
5.13kb - 2018-06-02 | lib-i_to_z| -| **1240** | [SBAR.ahk](lib-i_to_z/SBAR.ahk)
72.52kb - 2017-07-04 | lib-i_to_z| -| **1241** | [SBAR_AVI.ahk](lib-i_to_z/SBAR_AVI.ahk)
26.65kb - 2017-07-04 | lib-i_to_z| -| **1242** | [SBAR_ProgressBar.ahk](lib-i_to_z/SBAR_ProgressBar.ahk)
19.89kb - 2017-07-04 | lib-i_to_z| -| **1243** | [SBAR_SetTextEx.ahk](lib-i_to_z/SBAR_SetTextEx.ahk)
13.79kb - 2017-07-04 | lib-i_to_z| -| **1244** | [SB_SETPROGRESS.ahk](lib-i_to_z/SB_SETPROGRESS.ahk)
5.02kb - 2018-04-11 | lib-i_to_z| -| **1245** | [sc.ahk](lib-i_to_z/sc.ahk)
9.03kb - 2018-06-02 | lib-i_to_z| -| **1246** | [SC2_MemoryAndGeneralFunctions.ahk](lib-i_to_z/SC2_MemoryAndGeneralFunctions.ahk)
153.75kb - 2018-06-02 | lib-i_to_z| -| **1247** | [Scheduler.ahk](lib-i_to_z/Scheduler.ahk)
11.93kb - 2018-06-02 | lib-i_to_z| -| **1248** | [SCI.ahk](lib-i_to_z/SCI.ahk)
37.73kb - 2018-06-20 | lib-i_to_z| -| **1249** | [ScINTILLA.ahk](lib-i_to_z/ScINTILLA.ahk)
128.83kb - 2019-04-12 | lib-i_to_z| -| **1250** | [Scintilla_CharWordPos.ahk](lib-i_to_z/Scintilla_CharWordPos.ahk)
3.09kb - 2019-04-07 | lib-i_to_z| -| **1251** | [SciTEOutput.ahk](lib-i_to_z/SciTEOutput.ahk)
0.72kb - 2018-05-05 | lib-i_to_z| -| **1252** | [SciX.ahk](lib-i_to_z/SciX.ahk)
15.67kb - 2019-09-03 | lib-i_to_z| -| **1253** | [scriptCompile.ahk](lib-i_to_z/scriptCompile.ahk)
4.95kb - 2018-06-02 | lib-i_to_z| -| **1254** | [scriptlib.ahk](lib-i_to_z/scriptlib.ahk)
52.90kb - 2018-05-05 | lib-i_to_z| -| **1255** | [ScriptMem [Function].ahk](lib-i_to_z/ScriptMem%20[Function].ahk)
0.86kb - 2013-04-07 | lib-i_to_z| -| **1256** | [ScriptParser.ahk](lib-i_to_z/ScriptParser.ahk)
8.28kb - 2018-06-13 | lib-i_to_z| -| **1257** | [ScriptStruct.ahk](lib-i_to_z/ScriptStruct.ahk)
4.85kb - 2016-09-15 | lib-i_to_z| -| **1258** | [Scrollable GUI.ahk](lib-i_to_z/Scrollable%20GUI.ahk)
4.09kb - 2016-09-15 | lib-i_to_z| -| **1259** | [ScrollBar.ahk](lib-i_to_z/ScrollBar.ahk)
8.70kb - 2018-06-02 | lib-i_to_z| -| **1260** | [Scroller.ahk](lib-i_to_z/Scroller.ahk)
6.85kb - 2018-06-02 | lib-i_to_z| -| **1261** | [ScrollWindow.ahk](lib-i_to_z/ScrollWindow.ahk)
0.71kb - 2018-03-08 | lib-i_to_z| -| **1262** | [SecondsToHHMMSS.ahk](lib-i_to_z/SecondsToHHMMSS.ahk)
2.46kb - 2011-04-25 | lib-i_to_z| -| **1263** | [SecureHash.ahk](lib-i_to_z/SecureHash.ahk)
11.36kb - 2018-07-26 | lib-i_to_z| -| **1264** | [SelectObject.ahk](lib-i_to_z/SelectObject.ahk)
0.31kb - 2018-03-08 | lib-i_to_z| -| **1265** | [selfCompile.ahk](lib-i_to_z/selfCompile.ahk)
1.35kb - 2018-01-06 | lib-i_to_z| -| **1266** | [semver.ahk](lib-i_to_z/semver.ahk)
1.99kb - 2018-10-26 | lib-i_to_z| -| **1267** | [SendEmail.ahk](lib-i_to_z/SendEmail.ahk)
3.79kb - 2018-06-02 | lib-i_to_z| -| **1268** | [SendGUI.ahk](lib-i_to_z/SendGUI.ahk)
30.67kb - 2018-06-02 | lib-i_to_z| -| **1269** | [sendmail.ahk](lib-i_to_z/sendmail.ahk)
1.22kb - 2012-12-05 | lib-i_to_z| -| **1270** | [SendMSG.ahk](lib-i_to_z/SendMSG.ahk)
4.65kb - 2017-04-07 | lib-i_to_z| -| **1271** | [SerDes.ahk](lib-i_to_z/SerDes.ahk)
8.37kb - 2017-03-07 | lib-i_to_z| -| **1272** | [Serial.ahk](lib-i_to_z/Serial.ahk)
10.68kb - 2012-04-29 | lib-i_to_z| -| **1273** | [serverTime.ahk](lib-i_to_z/serverTime.ahk)
1.73kb - 2019-11-06 | lib-i_to_z| -| **1274** | [Service.ahk](lib-i_to_z/Service.ahk)
8.95kb - 2018-10-06 | lib-i_to_z| -| **1275** | [set-timer-f.ahk](lib-i_to_z/set-timer-f.ahk)
2.24kb - 2015-03-20 | lib-i_to_z| -| **1276** | [SetAcrylicGlassEffect.ahk](lib-i_to_z/SetAcrylicGlassEffect.ahk)
2.10kb - 2019-04-27 | lib-i_to_z| -| **1277** | [SetBtnTxtColor.ahk](lib-i_to_z/SetBtnTxtColor.ahk)
7.51kb - 2018-06-02 | lib-i_to_z| -| **1278** | [SetButtonF.ahk](lib-i_to_z/SetButtonF.ahk)
4.37kb - 2018-06-02 | lib-i_to_z| -| **1279** | [SetDesktopWallpaper.ahk](lib-i_to_z/SetDesktopWallpaper.ahk)
0.44kb - 2018-03-08 | lib-i_to_z| -| **1280** | [SetEditPlaceholder.ahk](lib-i_to_z/SetEditPlaceholder.ahk)
1.09kb - 2018-06-02 | lib-i_to_z| -| **1281** | [SetExeSubsystem.ahk](lib-i_to_z/SetExeSubsystem.ahk)
0.32kb - 2018-06-02 | lib-i_to_z| -| **1282** | [SetFileAttributes.ahk](lib-i_to_z/SetFileAttributes.ahk)
1.25kb - 2018-03-08 | lib-i_to_z| -| **1283** | [SetHostsFile.ahk](lib-i_to_z/SetHostsFile.ahk)
1.94kb - 2018-05-05 | lib-i_to_z| -| **1284** | [SetIcon.ahk](lib-i_to_z/SetIcon.ahk)
0.91kb - 2018-06-02 | lib-i_to_z| -| **1285** | [setLowLevelInputHooks.ahk](lib-i_to_z/setLowLevelInputHooks.ahk)
6.89kb - 2018-06-02 | lib-i_to_z| -| **1286** | [SetProcessPriority.ahk](lib-i_to_z/SetProcessPriority.ahk)
1.72kb - 2018-08-16 | lib-i_to_z| -| **1287** | [SetProcessWorkingSetSize.ahk](lib-i_to_z/SetProcessWorkingSetSize.ahk)
1.62kb - 2018-08-16 | lib-i_to_z| -| **1288** | [SetSeDebugPrivileg.ahk](lib-i_to_z/SetSeDebugPrivileg.ahk)
1.11kb - 2019-05-02 | lib-i_to_z| -| **1289** | [SetShortcuts.ahk](lib-i_to_z/SetShortcuts.ahk)
1.49kb - 2018-06-02 | lib-i_to_z| -| **1290** | [SetSystemCursor (2).ahk](lib-i_to_z/SetSystemCursor%20(2).ahk)
3.81kb - 2011-04-25 | lib-i_to_z| -| **1291** | [SetSystemCursor.ahk](lib-i_to_z/SetSystemCursor.ahk)
1.40kb - 2018-03-08 | lib-i_to_z| -| **1292** | [SetTimer.ahk](lib-i_to_z/SetTimer.ahk)
6.89kb - 2018-06-02 | lib-i_to_z| -| **1293** | [SetTimerF.ahk](lib-i_to_z/SetTimerF.ahk)
5.25kb - 2019-05-27 | lib-i_to_z| -| **1294** | [Settings.ahk](lib-i_to_z/Settings.ahk)
2.09kb - 2018-06-02 | lib-i_to_z| -| **1295** | [SetWindowClassStyle.ahk](lib-i_to_z/SetWindowClassStyle.ahk)
0.65kb - 2018-03-08 | lib-i_to_z| -| **1296** | [SetWindowIcon.ahk](lib-i_to_z/SetWindowIcon.ahk)
1.38kb - 2018-03-08 | lib-i_to_z| -| **1297** | [SetWindowOwner.ahk](lib-i_to_z/SetWindowOwner.ahk)
0.74kb - 2018-03-08 | lib-i_to_z| -| **1298** | [SetWindowParent.ahk](lib-i_to_z/SetWindowParent.ahk)
0.92kb - 2018-03-08 | lib-i_to_z| -| **1299** | [SetWindowPos.ahk](lib-i_to_z/SetWindowPos.ahk)
2.65kb - 2018-03-08 | lib-i_to_z| -| **1300** | [SetWindowProgress.ahk](lib-i_to_z/SetWindowProgress.ahk)
1.78kb - 2018-03-08 | lib-i_to_z| -| **1301** | [SetWindowsHookEx.ahk](lib-i_to_z/SetWindowsHookEx.ahk)
1.38kb - 2016-09-15 | lib-i_to_z| -| **1302** | [SetWindowTitle.ahk](lib-i_to_z/SetWindowTitle.ahk)
0.46kb - 2018-03-08 | lib-i_to_z| -| **1303** | [SetWindowTransparency.ahk](lib-i_to_z/SetWindowTransparency.ahk)
1.34kb - 2018-03-08 | lib-i_to_z| -| **1304** | [setWindowVol.ahk](lib-i_to_z/setWindowVol.ahk)
0.81kb - 2018-10-30 | lib-i_to_z| -| **1305** | [SGDIPrint.ahk](lib-i_to_z/SGDIPrint.ahk)
17.13kb - 2018-06-02 | lib-i_to_z| -| **1306** | [SGL_Ahk_H_v1.ahk](lib-i_to_z/SGL_Ahk_H_v1.ahk)
11.15kb - 2019-08-21 | lib-i_to_z| -| **1307** | [SHA256 WITH HMAC.ahk](lib-i_to_z/SHA256%20WITH%20HMAC.ahk)
5.40kb - 2018-06-02 | lib-i_to_z| -| **1308** | [Shader.ahk](lib-i_to_z/Shader.ahk)
4.08kb - 2019-08-28 | lib-i_to_z| -| **1309** | [Shell Navigate - Shell Folder.ahk](lib-i_to_z/Shell%20Navigate%20-%20Shell%20Folder.ahk)
1.13kb - 2019-04-13 | lib-i_to_z| -| **1310** | [shell.ahk](lib-i_to_z/shell.ahk)
4.15kb - 2018-06-02 | lib-i_to_z| -| **1311** | [ShellAbout.ahk](lib-i_to_z/ShellAbout.ahk)
0.68kb - 2018-03-08 | lib-i_to_z| -| **1312** | [ShellContextMenu.ahk](lib-i_to_z/ShellContextMenu.ahk)
4.96kb - 2018-09-15 | lib-i_to_z| -| **1313** | [ShellContextMenu2.ahk](lib-i_to_z/ShellContextMenu2.ahk)
5.45kb - 2018-06-02 | lib-i_to_z| -| **1314** | [ShellFileOperation.ahk](lib-i_to_z/ShellFileOperation.ahk)
5.12kb - 2018-06-02 | lib-i_to_z| -| **1315** | [ShellRun.ahk](lib-i_to_z/ShellRun.ahk)
2.22kb - 2018-07-29 | lib-i_to_z| -| **1316** | [ShellRunEx.ahk](lib-i_to_z/ShellRunEx.ahk)
1.34kb - 2018-12-19 | lib-i_to_z| -| **1317** | [ShortcutCreate.ahk](lib-i_to_z/ShortcutCreate.ahk)
0.99kb - 2018-05-05 | lib-i_to_z| -| **1318** | [ShortcutDelete.ahk](lib-i_to_z/ShortcutDelete.ahk)
0.95kb - 2018-05-05 | lib-i_to_z| -| **1319** | [ShortcutExists.ahk](lib-i_to_z/ShortcutExists.ahk)
1.13kb - 2018-05-05 | lib-i_to_z| -| **1320** | [Show menu.ahk](lib-i_to_z/Show%20menu.ahk)
12.50kb - 2018-05-27 | lib-i_to_z| -| **1321** | [showabout.ahk](lib-i_to_z/showabout.ahk)
1.79kb - 2018-06-02 | lib-i_to_z| -| **1322** | [ShowDesktop.ahk](lib-i_to_z/ShowDesktop.ahk)
0.22kb - 2018-03-08 | lib-i_to_z| -| **1323** | [ShowGif().ahk](lib-i_to_z/ShowGif().ahk)
3.48kb - 2018-06-02 | lib-i_to_z| -| **1324** | [ShowHide.ahk](lib-i_to_z/ShowHide.ahk)
1.74kb - 2015-05-12 | lib-i_to_z| -| **1325** | [ShowHideTaskbar.ahk](lib-i_to_z/ShowHideTaskbar.ahk)
1.23kb - 2018-05-05 | lib-i_to_z| -| **1326** | [ShowHtmlDialog.ahk](lib-i_to_z/ShowHtmlDialog.ahk)
4.21kb - 2017-09-04 | lib-i_to_z| -| **1327** | [ShowMenu.ahk](lib-i_to_z/ShowMenu.ahk)
3.65kb - 2018-06-02 | lib-i_to_z| -| **1328** | [ShowOCRUnderMouse.ahk](lib-i_to_z/ShowOCRUnderMouse.ahk)
2.83kb - 2018-11-10 | lib-i_to_z| -| **1329** | [ShowStartMenu.ahk](lib-i_to_z/ShowStartMenu.ahk)
0.20kb - 2018-11-22 | lib-i_to_z| -| **1330** | [ShuffleString.ahk](lib-i_to_z/ShuffleString.ahk)
0.37kb - 2019-05-26 | lib-i_to_z| -| **1331** | [Sift.ahk](lib-i_to_z/Sift.ahk)
7.85kb - 2019-04-08 | lib-i_to_z| -| **1332** | [SignFile.ahk](lib-i_to_z/SignFile.ahk)
2.40kb - 2016-01-11 | lib-i_to_z| -| **1333** | [sizeof.ahk](lib-i_to_z/sizeof.ahk)
17.50kb - 2018-06-02 | lib-i_to_z| -| **1334** | [sleepMode.ahk](lib-i_to_z/sleepMode.ahk)
6.56kb - 2018-06-02 | lib-i_to_z| -| **1335** | [SleepWithoutInterruption.ahk](lib-i_to_z/SleepWithoutInterruption.ahk)
0.56kb - 2016-09-15 | lib-i_to_z| -| **1336** | [sleipnir.ahk](lib-i_to_z/sleipnir.ahk)
1.14kb - 2016-09-15 | lib-i_to_z| -| **1337** | [slots.ahk](lib-i_to_z/slots.ahk)
2.72kb - 2018-06-02 | lib-i_to_z| -| **1338** | [SmartZip.ahk](lib-i_to_z/SmartZip.ahk)
2.42kb - 2018-06-02 | lib-i_to_z| -| **1339** | [SnapFolderWindows.ahk](lib-i_to_z/SnapFolderWindows.ahk)
1.62kb - 2018-05-05 | lib-i_to_z| -| **1340** | [SnapX_Functions.ahk](lib-i_to_z/SnapX_Functions.ahk)
5.68kb - 2018-06-02 | lib-i_to_z| -| **1341** | [socket.ahk](lib-i_to_z/socket.ahk)
6.79kb - 2018-06-02 | lib-i_to_z| -| **1342** | [SoftModalMessageBox.ahk](lib-i_to_z/SoftModalMessageBox.ahk)
2.51kb - 2017-11-18 | lib-i_to_z| -| **1343** | [SoftwareProtectionLibrary.ahk](lib-i_to_z/SoftwareProtectionLibrary.ahk)
20.24kb - 2019-04-23 | lib-i_to_z| -| **1344** | [Sort.ahk](lib-i_to_z/Sort.ahk)
0.12kb - 2015-01-01 | lib-i_to_z| -| **1345** | [Sort2DArray.ahk](lib-i_to_z/Sort2DArray.ahk)
2.19kb - 2018-06-02 | lib-i_to_z| -| **1346** | [SortArray.ahk](lib-i_to_z/SortArray.ahk)
1.95kb - 2018-06-02 | lib-i_to_z| -| **1347** | [sort_len.ahk](lib-i_to_z/sort_len.ahk)
21.09kb - 2019-08-30 | lib-i_to_z| -| **1348** | [sound.ahk](lib-i_to_z/sound.ahk)
6.92kb - 2018-06-02 | lib-i_to_z| -| **1349** | [SoundCardCapabilities.ahk](lib-i_to_z/SoundCardCapabilities.ahk)
4.25kb - 2018-06-02 | lib-i_to_z| -| **1350** | [sourcegrab.ahk](lib-i_to_z/sourcegrab.ahk)
3.24kb - 2018-06-02 | lib-i_to_z| -| **1351** | [SpecialListviewFunctions.ahk](lib-i_to_z/SpecialListviewFunctions.ahk)
12.73kb - 2018-06-02 | lib-i_to_z| -| **1352** | [SpeechRecognition.ahk](lib-i_to_z/SpeechRecognition.ahk)
7.47kb - 2015-03-29 | lib-i_to_z| -| **1353** | [Spell.ahk](lib-i_to_z/Spell.ahk)
27.30kb - 2014-10-25 | lib-i_to_z| -| **1354** | [SplashImage.ahk](lib-i_to_z/SplashImage.ahk)
38.98kb - 2016-09-15 | lib-i_to_z| -| **1355** | [SplashOn.ahk](lib-i_to_z/SplashOn.ahk)
16.95kb - 2018-12-09 | lib-i_to_z| -| **1356** | [SplashTextOff.ahk](lib-i_to_z/SplashTextOff.ahk)
0.03kb - 2016-09-15 | lib-i_to_z| -| **1357** | [SplashTextOn.ahk](lib-i_to_z/SplashTextOn.ahk)
4.48kb - 2016-09-15 | lib-i_to_z| -| **1358** | [Splitter.ahk](lib-i_to_z/Splitter.ahk)
10.81kb - 2018-06-02 | lib-i_to_z| -| **1359** | [SpreadSheet.ahk](lib-i_to_z/SpreadSheet.ahk)
24.36kb - 2007-06-14 | lib-i_to_z| -| **1360** | [SQLite.ahk](lib-i_to_z/SQLite.ahk)
38.63kb - 2018-06-02 | lib-i_to_z| -| **1361** | [SQLiteDB_Class.ahk](lib-i_to_z/SQLiteDB_Class.ahk)
43.48kb - 2016-08-07 | lib-i_to_z| -| **1362** | [SQLite_L.ahk](lib-i_to_z/SQLite_L.ahk)
42.23kb - 2018-06-02 | lib-i_to_z| -| **1363** | [Sql_AddDelimiters.ahk](lib-i_to_z/Sql_AddDelimiters.ahk)
1.00kb - 2019-02-16 | lib-i_to_z| -| **1364** | [Sql_FormatSQL.ahk](lib-i_to_z/Sql_FormatSQL.ahk)
19.39kb - 2019-02-16 | lib-i_to_z| -| **1365** | [Sql_LineBreakOnSqlKeyword.ahk](lib-i_to_z/Sql_LineBreakOnSqlKeyword.ahk)
1.67kb - 2019-02-16 | lib-i_to_z| -| **1366** | [Sql_MakeSQLDynamic.ahk](lib-i_to_z/Sql_MakeSQLDynamic.ahk)
2.73kb - 2019-02-16 | lib-i_to_z| -| **1367** | [SrtSynch.ahk](lib-i_to_z/SrtSynch.ahk)
4.29kb - 2018-06-02 | lib-i_to_z| -| **1368** | [st.ahk](lib-i_to_z/st.ahk)
5.46kb - 2018-06-02 | lib-i_to_z| -| **1369** | [StartServiceCtrlDispatcher.ahk](lib-i_to_z/StartServiceCtrlDispatcher.ahk)
3.46kb - 2018-06-02 | lib-i_to_z| -| **1370** | [start_with_windows.ahk](lib-i_to_z/start_with_windows.ahk)
1.33kb - 2017-10-18 | lib-i_to_z| -| **1371** | [StayOnMonitor.ahk](lib-i_to_z/StayOnMonitor.ahk)
3.21kb - 2018-06-02 | lib-i_to_z| -| **1372** | [StdOutStream.ahk](lib-i_to_z/StdOutStream.ahk)
2.89kb - 2018-10-30 | lib-i_to_z| -| **1373** | [StdOutToVar (2).ahk](lib-i_to_z/StdOutToVar%20(2).ahk)
1.82kb - 2018-06-02 | lib-i_to_z| -| **1374** | [StdOutToVar.ahk](lib-i_to_z/StdOutToVar.ahk)
2.63kb - 2018-10-30 | lib-i_to_z| -| **1375** | [StdoutToVar_CreateProcess.ahk](lib-i_to_z/StdoutToVar_CreateProcess.ahk)
4.34kb - 2014-07-06 | lib-i_to_z| -| **1376** | [sToMs.ahk](lib-i_to_z/sToMs.ahk)
0.04kb - 2018-10-30 | lib-i_to_z| -| **1377** | [stopwatch.ahk](lib-i_to_z/stopwatch.ahk)
1.87kb - 2018-06-02 | lib-i_to_z| -| **1378** | [Str.ahk](lib-i_to_z/Str.ahk)
8.26kb - 2018-08-19 | lib-i_to_z| -| **1379** | [StRegX.ahk](lib-i_to_z/StRegX.ahk)
1.29kb - 2017-11-23 | lib-i_to_z| -| **1380** | [StrFormatByteSize.ahk](lib-i_to_z/StrFormatByteSize.ahk)
0.82kb - 2018-03-08 | lib-i_to_z| -| **1381** | [StrFormatByteSize64.ahk](lib-i_to_z/StrFormatByteSize64.ahk)
0.93kb - 2019-08-30 | lib-i_to_z| -| **1382** | [StrFormatByteSizeEx.ahk](lib-i_to_z/StrFormatByteSizeEx.ahk)
1.09kb - 2019-08-30 | lib-i_to_z| -| **1383** | [StrGet.ahk](lib-i_to_z/StrGet.ahk)
1.87kb - 2011-02-10 | lib-i_to_z| -| **1384** | [strI.ahk](lib-i_to_z/strI.ahk)
0.15kb - 2018-10-30 | lib-i_to_z| -| **1385** | [String.ahk](lib-i_to_z/String.ahk)
4.35kb - 2018-06-02 | lib-i_to_z| -| **1386** | [StringCounter.ahk](lib-i_to_z/StringCounter.ahk)
2.55kb - 2019-11-01 | lib-i_to_z| -| **1387** | [stringify.ahk](lib-i_to_z/stringify.ahk)
0.23kb - 2018-10-30 | lib-i_to_z| -| **1388** | [StringIndent_JEE_.ahk](lib-i_to_z/StringIndent_JEE_.ahk)
6.75kb - 2019-04-06 | lib-i_to_z| -| **1389** | [StringM.ahk](lib-i_to_z/StringM.ahk)
1.79kb - 2017-10-26 | lib-i_to_z| -| **1390** | [stringMore.ahk](lib-i_to_z/stringMore.ahk)
10.11kb - 2019-05-04 | lib-i_to_z| -| **1391** | [StringThings.ahk](lib-i_to_z/StringThings.ahk)
35.52kb - 2018-06-20 | lib-i_to_z| -| **1392** | [StrLen2.ahk](lib-i_to_z/StrLen2.ahk)
0.95kb - 2018-03-08 | lib-i_to_z| -| **1393** | [StrLower.ahk](lib-i_to_z/StrLower.ahk)
0.12kb - 2015-01-01 | lib-i_to_z| -| **1394** | [StrObj.ahk](lib-i_to_z/StrObj.ahk)
24.36kb - 2017-04-07 | lib-i_to_z| -| **1395** | [StrPut.ahk](lib-i_to_z/StrPut.ahk)
4.31kb - 2011-02-10 | lib-i_to_z| -| **1396** | [StrPutVar.ahk](lib-i_to_z/StrPutVar.ahk)
0.19kb - 2018-06-02 | lib-i_to_z| -| **1397** | [StrQ.ahk](lib-i_to_z/StrQ.ahk)
1.00kb - 2018-10-09 | lib-i_to_z| -| **1398** | [StrRepeat.ahk](lib-i_to_z/StrRepeat.ahk)
0.37kb - 2018-03-08 | lib-i_to_z| -| **1399** | [StrReplace.ahk](lib-i_to_z/StrReplace.ahk)
0.54kb - 2015-01-01 | lib-i_to_z| -| **1400** | [strReplaceI.ahk](lib-i_to_z/strReplaceI.ahk)
0.17kb - 2018-10-30 | lib-i_to_z| -| **1401** | [StrReplicate.ahk](lib-i_to_z/StrReplicate.ahk)
0.38kb - 2018-05-05 | lib-i_to_z| -| **1402** | [StrReverse.ahk](lib-i_to_z/StrReverse.ahk)
0.54kb - 2018-05-05 | lib-i_to_z| -| **1403** | [strTail.ahk](lib-i_to_z/strTail.ahk)
0.48kb - 2018-06-02 | lib-i_to_z| -| **1404** | [strToLower.ahk](lib-i_to_z/strToLower.ahk)
0.06kb - 2018-10-30 | lib-i_to_z| -| **1405** | [strToUpper.ahk](lib-i_to_z/strToUpper.ahk)
0.06kb - 2018-10-30 | lib-i_to_z| -| **1406** | [Struct.ahk](lib-i_to_z/Struct.ahk)
30.74kb - 2018-06-02 | lib-i_to_z| -| **1407** | [StrX.ahk](lib-i_to_z/StrX.ahk)
0.40kb - 2018-06-02 | lib-i_to_z| -| **1408** | [Subprocess.ahk](lib-i_to_z/Subprocess.ahk)
7.98kb - 2018-08-16 | lib-i_to_z| -| **1409** | [SubTitle.ahk](lib-i_to_z/SubTitle.ahk)
10.37kb - 2018-06-02 | lib-i_to_z| -| **1410** | [SUCCEEDED.ahk](lib-i_to_z/SUCCEEDED.ahk)
0.05kb - 2018-06-02 | lib-i_to_z| -| **1411** | [SuperMaxWindow.ahk](lib-i_to_z/SuperMaxWindow.ahk)
4.15kb - 2018-05-05 | lib-i_to_z| -| **1412** | [SuppressRuntimeErrors.ahk](lib-i_to_z/SuppressRuntimeErrors.ahk)
1.91kb - 2018-06-20 | lib-i_to_z| -| **1413** | [SuspendAfterDelay.ahk](lib-i_to_z/SuspendAfterDelay.ahk)
2.04kb - 2018-05-05 | lib-i_to_z| -| **1414** | [SuspendProcess.ahk](lib-i_to_z/SuspendProcess.ahk)
0.91kb - 2018-08-16 | lib-i_to_z| -| **1415** | [SuspendThread_ResumeThread.ahk](lib-i_to_z/SuspendThread_ResumeThread.ahk)
1.40kb - 2018-06-02 | lib-i_to_z| -| **1416** | [SVGraph.ahk](lib-i_to_z/SVGraph.ahk)
6.43kb - 2018-06-02 | lib-i_to_z| -| **1417** | [sXMLget.ahk](lib-i_to_z/sXMLget.ahk)
0.62kb - 2018-06-02 | lib-i_to_z| -| **1418** | [SysProcInfo.ahk](lib-i_to_z/SysProcInfo.ahk)
26.34kb - 2018-06-02 | lib-i_to_z| -| **1419** | [SystemCursor.ahk](lib-i_to_z/SystemCursor.ahk)
1.65kb - 2014-06-10 | lib-i_to_z| -| **1420** | [SystemMessage.ahk](lib-i_to_z/SystemMessage.ahk)
0.41kb - 2011-04-25 | lib-i_to_z| -| **1421** | [SystemMonitor.ahk](lib-i_to_z/SystemMonitor.ahk)
11.80kb - 2018-06-02 | lib-i_to_z| -| **1422** | [SystemTime.ahk](lib-i_to_z/SystemTime.ahk)
2.55kb - 2018-06-02 | lib-i_to_z| -| **1423** | [Tab.ahk](lib-i_to_z/Tab.ahk)
15.93kb - 2018-03-08 | lib-i_to_z| -| **1424** | [TabAlign.ahk](lib-i_to_z/TabAlign.ahk)
1.25kb - 2019-10-30 | lib-i_to_z| -| **1425** | [TabbedCBB.ahk](lib-i_to_z/TabbedCBB.ahk)
8.03kb - 2018-12-08 | lib-i_to_z| -| **1426** | [Table.ahk](lib-i_to_z/Table.ahk)
125.92kb - 2018-06-02 | lib-i_to_z| -| **1427** | [TabsToSpaces.ahk](lib-i_to_z/TabsToSpaces.ahk)
1.20kb - 2018-06-02 | lib-i_to_z| -| **1428** | [talk.ahk](lib-i_to_z/talk.ahk)
4.57kb - 2018-06-02 | lib-i_to_z| -| **1429** | [Taskbar.ahk](lib-i_to_z/Taskbar.ahk)
9.32kb - 2018-06-02 | lib-i_to_z| -| **1430** | [taskbarInterface.ahk](lib-i_to_z/taskbarInterface.ahk)
73.32kb - 2018-11-06 | lib-i_to_z| -| **1431** | [taskbarInterface_v2.ahk](lib-i_to_z/taskbarInterface_v2.ahk)
71.70kb - 2017-08-03 | lib-i_to_z| -| **1432** | [TaskbarMove.ahk](lib-i_to_z/TaskbarMove.ahk)
1.40kb - 2019-10-21 | lib-i_to_z| -| **1433** | [TaskBar_SetAttr.ahk](lib-i_to_z/TaskBar_SetAttr.ahk)
4.93kb - 2017-01-20 | lib-i_to_z| -| **1434** | [TaskButton(differentVersion).ahk](lib-i_to_z/TaskButton(differentVersion).ahk)
2.75kb - 2019-01-14 | lib-i_to_z| -| **1435** | [TaskButton.ahk](lib-i_to_z/TaskButton.ahk)
3.36kb - 2018-06-02 | lib-i_to_z| -| **1436** | [TaskDialog (2).ahk](lib-i_to_z/TaskDialog%20(2).ahk)
23.91kb - 2018-06-02 | lib-i_to_z| -| **1437** | [TaskDialog and more.ahk](lib-i_to_z/TaskDialog%20and%20more.ahk)
7.70kb - 2018-06-02 | lib-i_to_z| -| **1438** | [TaskDialog.ahk](lib-i_to_z/TaskDialog.ahk)
20.09kb - 2018-03-08 | lib-i_to_z| -| **1439** | [TaskDialogEx.ahk](lib-i_to_z/TaskDialogEx.ahk)
7.71kb - 2018-05-29 | lib-i_to_z| -| **1440** | [TaskTrayIcon.ahk](lib-i_to_z/TaskTrayIcon.ahk)
2.49kb - 2018-06-02 | lib-i_to_z| -| **1441** | [TbMenu-proto.ahk](lib-i_to_z/TbMenu-proto.ahk)
6.50kb - 2018-06-02 | lib-i_to_z| -| **1442** | [TCP-UDP-class.ahk](lib-i_to_z/TCP-UDP-class.ahk)
6.50kb - 2018-06-02 | lib-i_to_z| -| **1443** | [TCP.ahk](lib-i_to_z/TCP.ahk)
11.95kb - 2018-07-29 | lib-i_to_z| -| **1444** | [TCPUDP.ahk](lib-i_to_z/TCPUDP.ahk)
8.98kb - 2016-09-15 | lib-i_to_z| -| **1445** | [TCwdx.ahk](lib-i_to_z/TCwdx.ahk)
7.58kb - 2017-09-04 | lib-i_to_z| -| **1446** | [TC_EX.ahk](lib-i_to_z/TC_EX.ahk)
16.71kb - 2018-06-02 | lib-i_to_z| -| **1447** | [TEA.ahk](lib-i_to_z/TEA.ahk)
3.18kb - 2017-10-26 | lib-i_to_z| -| **1448** | [TEA_Encryption.ahk](lib-i_to_z/TEA_Encryption.ahk)
7.36kb - 2018-08-22 | lib-i_to_z| -| **1449** | [TerminateProcess.ahk](lib-i_to_z/TerminateProcess.ahk)
1.26kb - 2018-08-16 | lib-i_to_z| -| **1450** | [TermWait.ahk](lib-i_to_z/TermWait.ahk)
4.78kb - 2018-06-02 | lib-i_to_z| -| **1451** | [TermWaitLibs.ahk](lib-i_to_z/TermWaitLibs.ahk)
6.41kb - 2018-06-02 | lib-i_to_z| -| **1452** | [Text2Number.ahk](lib-i_to_z/Text2Number.ahk)
24.08kb - 2019-11-01 | lib-i_to_z| -| **1453** | [TextAreaDetect.ahk](lib-i_to_z/TextAreaDetect.ahk)
1.44kb - 2019-05-15 | lib-i_to_z| -| **1454** | [TextCompare.ahk](lib-i_to_z/TextCompare.ahk)
4.33kb - 2019-11-01 | lib-i_to_z| -| **1455** | [Textlists.ahk](lib-i_to_z/Textlists.ahk)
24.98kb - 2018-09-23 | lib-i_to_z| -| **1456** | [tf.ahk](lib-i_to_z/tf.ahk)
46.07kb - 2016-11-22 | lib-i_to_z| -| **1457** | [ThousandsSep.ahk](lib-i_to_z/ThousandsSep.ahk)
0.30kb - 2018-06-02 | lib-i_to_z| -| **1458** | [threadFunc.ahk](lib-i_to_z/threadFunc.ahk)
3.28kb - 2018-06-02 | lib-i_to_z| -| **1459** | [Threads.ahk](lib-i_to_z/Threads.ahk)
5.06kb - 2018-06-02 | lib-i_to_z| -| **1460** | [Thumbnail.ahk](lib-i_to_z/Thumbnail.ahk)
8.89kb - 2019-05-19 | lib-i_to_z| -| **1461** | [thumbnailer.ahk](lib-i_to_z/thumbnailer.ahk)
3.12kb - 2008-02-25 | lib-i_to_z| -| **1462** | [Timer.ahk](lib-i_to_z/Timer.ahk)
5.42kb - 2018-06-02 | lib-i_to_z| -| **1463** | [TimeStampAHK.ahk](lib-i_to_z/TimeStampAHK.ahk)
1.77kb - 2018-05-05 | lib-i_to_z| -| **1464** | [TimeStampSQL.ahk](lib-i_to_z/TimeStampSQL.ahk)
1.46kb - 2018-05-05 | lib-i_to_z| -| **1465** | [Tippy.ahk](lib-i_to_z/Tippy.ahk)
3.27kb - 2019-11-04 | lib-i_to_z| -| **1466** | [Title.ahk](lib-i_to_z/Title.ahk)
0.28kb - 2018-06-02 | lib-i_to_z| -| **1467** | [TLLib.ahk](lib-i_to_z/TLLib.ahk)
15.88kb - 2018-03-05 | lib-i_to_z| -| **1468** | [TO TextOverlay.ahk](lib-i_to_z/TO%20TextOverlay.ahk)
45.74kb - 2018-06-02 | lib-i_to_z| -| **1469** | [TO.ahk](lib-i_to_z/TO.ahk)
44.24kb - 2017-09-04 | lib-i_to_z| -| **1470** | [ToBase.ahk](lib-i_to_z/ToBase.ahk)
0.39kb - 2018-05-05 | lib-i_to_z| -| **1471** | [ToChar.ahk](lib-i_to_z/ToChar.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| -| **1472** | [todWulff.ahk](lib-i_to_z/todWulff.ahk)
5.35kb - 2018-06-02 | lib-i_to_z| -| **1473** | [ToInt.ahk](lib-i_to_z/ToInt.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| -| **1474** | [tokelex.ahk](lib-i_to_z/tokelex.ahk)
41.48kb - 2018-06-02 | lib-i_to_z| -| **1475** | [TokenIsElevated.ahk](lib-i_to_z/TokenIsElevated.ahk)
0.66kb - 2018-08-16 | lib-i_to_z| -| **1476** | [tool.ahk](lib-i_to_z/tool.ahk)
0.15kb - 2018-10-30 | lib-i_to_z| -| **1477** | [Toolbar.ahk](lib-i_to_z/Toolbar.ahk)
41.14kb - 2018-06-02 | lib-i_to_z| -| **1478** | [toolSpeak.ahk](lib-i_to_z/toolSpeak.ahk)
0.10kb - 2018-10-30 | lib-i_to_z| -| **1479** | [ToolTip.ahk](lib-i_to_z/ToolTip.ahk)
30.15kb - 2018-06-02 | lib-i_to_z| -| **1480** | [ToolTipEx.ahk](lib-i_to_z/ToolTipEx.ahk)
11.71kb - 2019-01-21 | lib-i_to_z| -| **1481** | [ToolTipG.ahk](lib-i_to_z/ToolTipG.ahk)
8.11kb - 2019-01-21 | lib-i_to_z| -| **1482** | [ToolTipOpt.ahk](lib-i_to_z/ToolTipOpt.ahk)
2.58kb - 2018-06-20 | lib-i_to_z| -| **1483** | [ToShort.ahk](lib-i_to_z/ToShort.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| -| **1484** | [tostring.ahk](lib-i_to_z/tostring.ahk)
0.59kb - 2011-11-06 | lib-i_to_z| -| **1485** | [TotalCmdFuncs.ahk](lib-i_to_z/TotalCmdFuncs.ahk)
3.61kb - 2019-05-23 | lib-i_to_z| -| **1486** | [touch.ahk](lib-i_to_z/touch.ahk)
3.77kb - 2019-10-30 | lib-i_to_z| -| **1487** | [ToUChar.ahk](lib-i_to_z/ToUChar.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| -| **1488** | [ToUInt.ahk](lib-i_to_z/ToUInt.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| -| **1489** | [ToUShort.ahk](lib-i_to_z/ToUShort.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| -| **1490** | [TransButtonsv1.ahk](lib-i_to_z/TransButtonsv1.ahk)
10.07kb - 2018-04-29 | lib-i_to_z| -| **1491** | [translate_google_api AHKV2.ahk](lib-i_to_z/translate_google_api%20AHKV2.ahk)
5.38kb - 2018-02-28 | lib-i_to_z| -| **1492** | [TransSplashText.ahk](lib-i_to_z/TransSplashText.ahk)
5.07kb - 2012-08-09 | lib-i_to_z| -| **1493** | [Tray.ahk](lib-i_to_z/Tray.ahk)
13.83kb - 2018-06-02 | lib-i_to_z| -| **1494** | [TrayIcon (2).ahk](lib-i_to_z/TrayIcon%20(2).ahk)
12.47kb - 2018-06-02 | lib-i_to_z| -| **1495** | [TrayIcon (3).ahk](lib-i_to_z/TrayIcon%20(3).ahk)
4.39kb - 2018-06-02 | lib-i_to_z| -| **1496** | [TrayIcon.ahk](lib-i_to_z/TrayIcon.ahk)
12.42kb - 2018-12-29 | lib-i_to_z| -| **1497** | [TrayIconInfo.ahk](lib-i_to_z/TrayIconInfo.ahk)
12.35kb - 2016-09-15 | lib-i_to_z| -| **1498** | [TrayRefresh.ahk](lib-i_to_z/TrayRefresh.ahk)
1.29kb - 2018-11-14 | lib-i_to_z| -| **1499** | [TrayTipEx.ahk](lib-i_to_z/TrayTipEx.ahk)
10.14kb - 2018-03-08 | lib-i_to_z| -| **1500** | [TreeBox.ahk](lib-i_to_z/TreeBox.ahk)
2.41kb - 2017-07-18 | lib-i_to_z| -| **1501** | [TreeView.ahk](lib-i_to_z/TreeView.ahk)
41.43kb - 2019-11-06 | lib-i_to_z| -| **1502** | [TskDlg.ahk](lib-i_to_z/TskDlg.ahk)
2.69kb - 2019-07-30 | lib-i_to_z| -| **1503** | [TT.ahk](lib-i_to_z/TT.ahk)
37.79kb - 2018-06-02 | lib-i_to_z| -| **1504** | [TVDAD.ahk](lib-i_to_z/TVDAD.ahk)
6.67kb - 2019-02-19 | lib-i_to_z| -| **1505** | [TVX.ahk](lib-i_to_z/TVX.ahk)
9.75kb - 2019-11-06 | lib-i_to_z| -| **1506** | [TV_SetSelColors.ahk](lib-i_to_z/TV_SetSelColors.ahk)
3.87kb - 2018-10-03 | lib-i_to_z| -| **1507** | [TwipToPixel.ahk](lib-i_to_z/TwipToPixel.ahk)
0.11kb - 2018-03-08 | lib-i_to_z| -| **1508** | [txtList.ahk](lib-i_to_z/txtList.ahk)
0.51kb - 2019-02-08 | lib-i_to_z| -| **1509** | [type.ahk](lib-i_to_z/type.ahk)
0.77kb - 2018-06-02 | lib-i_to_z| -| **1510** | [TypeFunctions.ahk](lib-i_to_z/TypeFunctions.ahk)
5.84kb - 2018-06-02 | lib-i_to_z| -| **1511** | [TypeLibHelperFunctions.ahk](lib-i_to_z/TypeLibHelperFunctions.ahk)
12.22kb - 2018-06-02 | lib-i_to_z| -| **1512** | [TypeLibInterfaces.ahk](lib-i_to_z/TypeLibInterfaces.ahk)
18.77kb - 2018-06-02 | lib-i_to_z| -| **1513** | [uia.ahk](lib-i_to_z/uia.ahk)
147.11kb - 2018-06-02 | lib-i_to_z| -| **1514** | [UIA2.ahk](lib-i_to_z/UIA2.ahk)
139.57kb - 2018-06-02 | lib-i_to_z| -| **1515** | [UIAutomationClient_1_0_64bit.ahk](lib-i_to_z/UIAutomationClient_1_0_64bit.ahk)
284.76kb - 2018-02-03 | lib-i_to_z| -| **1516** | [UIA_Interface.ahk](lib-i_to_z/UIA_Interface.ahk)
38.05kb - 2018-06-02 | lib-i_to_z| -| **1517** | [UnHTM.ahk](lib-i_to_z/UnHTM.ahk)
2.21kb - 2018-06-02 | lib-i_to_z| -| **1518** | [unhtml.ahk](lib-i_to_z/unhtml.ahk)
3.95kb - 2017-04-07 | lib-i_to_z| -| **1519** | [Unidecode.ahk](lib-i_to_z/Unidecode.ahk)
239.56kb - 2016-12-14 | lib-i_to_z| -| **1520** | [Unique_IDentifiers.ahk](lib-i_to_z/Unique_IDentifiers.ahk)
1.83kb - 2018-08-17 | lib-i_to_z| -| **1521** | [uniscribe.ahk](lib-i_to_z/uniscribe.ahk)
2.19kb - 2017-07-15 | lib-i_to_z| -| **1522** | [Update.ahk](lib-i_to_z/Update.ahk)
6.11kb - 2018-06-02 | lib-i_to_z| -| **1523** | [UpdateCursors.ahk](lib-i_to_z/UpdateCursors.ahk)
0.27kb - 2018-03-08 | lib-i_to_z| -| **1524** | [UpdateDesktop.ahk](lib-i_to_z/UpdateDesktop.ahk)
0.28kb - 2018-03-08 | lib-i_to_z| -| **1525** | [UpdateFolderTime.ahk](lib-i_to_z/UpdateFolderTime.ahk)
0.86kb - 2016-04-08 | lib-i_to_z| -| **1526** | [UpdateIcons.ahk](lib-i_to_z/UpdateIcons.ahk)
0.26kb - 2018-03-08 | lib-i_to_z| -| **1527** | [updateLibPath.ahk](lib-i_to_z/updateLibPath.ahk)
0.29kb - 2016-09-15 | lib-i_to_z| -| **1528** | [Updater_v2.ahk](lib-i_to_z/Updater_v2.ahk)
7.47kb - 2018-11-14 | lib-i_to_z| -| **1529** | [UpdateSysAssoc.ahk](lib-i_to_z/UpdateSysAssoc.ahk)
0.29kb - 2018-03-08 | lib-i_to_z| -| **1530** | [UpdRes.ahk](lib-i_to_z/UpdRes.ahk)
11.99kb - 2018-06-13 | lib-i_to_z| -| **1531** | [Upper.ahk](lib-i_to_z/Upper.ahk)
0.28kb - 2018-06-02 | lib-i_to_z| -| **1532** | [uriencode.ahk](lib-i_to_z/uriencode.ahk)
0.42kb - 2018-06-02 | lib-i_to_z| -| **1533** | [uriEncoder-Decoder.ahk](lib-i_to_z/uriEncoder-Decoder.ahk)
1.36kb - 2018-06-02 | lib-i_to_z| -| **1534** | [URL (2).ahk](lib-i_to_z/URL%20(2).ahk)
5.28kb - 2017-04-07 | lib-i_to_z| -| **1535** | [Url.ahk](lib-i_to_z/Url.ahk)
2.45kb - 2018-03-08 | lib-i_to_z| -| **1536** | [UrlDownload.ahk](lib-i_to_z/UrlDownload.ahk)
1.96kb - 2016-09-05 | lib-i_to_z| -| **1537** | [urlDownloadToFile.ahk](lib-i_to_z/urlDownloadToFile.ahk)
0.75kb - 2018-10-30 | lib-i_to_z| -| **1538** | [UrlDownloadToJson.ahk](lib-i_to_z/UrlDownloadToJson.ahk)
0.77kb - 2018-06-02 | lib-i_to_z| -| **1539** | [UrlDownloadToVar.ahk](lib-i_to_z/UrlDownloadToVar.ahk)
1.46kb - 2018-06-02 | lib-i_to_z| -| **1540** | [urlFileGetSize.ahk](lib-i_to_z/urlFileGetSize.ahk)
1.57kb - 2018-10-30 | lib-i_to_z| -| **1541** | [USBD.ahk](lib-i_to_z/USBD.ahk)
2.14kb - 2018-06-02 | lib-i_to_z| -| **1542** | [USBUIRT.ahk](lib-i_to_z/USBUIRT.ahk)
27.17kb - 2018-06-02 | lib-i_to_z| -| **1543** | [UTF8IniFile.ahk](lib-i_to_z/UTF8IniFile.ahk)
2.10kb - 2018-11-04 | lib-i_to_z| -| **1544** | [Util.ahk](lib-i_to_z/Util.ahk)
3.18kb - 2018-06-02 | lib-i_to_z| -| **1545** | [uuid.ahk](lib-i_to_z/uuid.ahk)
0.82kb - 2018-06-02 | lib-i_to_z| -| **1546** | [UUIDCreate.ahk](lib-i_to_z/UUIDCreate.ahk)
1.35kb - 2018-06-02 | lib-i_to_z| -| **1547** | [VA (2).ahk](lib-i_to_z/VA%20(2).ahk)
25.73kb - 2018-06-02 | lib-i_to_z| -| **1548** | [VA.ahk](lib-i_to_z/VA.ahk)
36.97kb - 2018-06-02 | lib-i_to_z| -| **1549** | [ValidIP.ahk](lib-i_to_z/ValidIP.ahk)
0.89kb - 2016-10-12 | lib-i_to_z| -| **1550** | [VarHistory.ahk](lib-i_to_z/VarHistory.ahk)
3.36kb - 2017-09-04 | lib-i_to_z| -| **1551** | [VARIANT.ahk](lib-i_to_z/VARIANT.ahk)
0.74kb - 2018-06-02 | lib-i_to_z| -| **1552** | [VariemClick.ahk](lib-i_to_z/VariemClick.ahk)
6.17kb - 2018-06-02 | lib-i_to_z| -| **1553** | [VariousFunctions.ahk](lib-i_to_z/VariousFunctions.ahk)
1.70kb - 2018-06-02 | lib-i_to_z| -| **1554** | [Varize.ahk](lib-i_to_z/Varize.ahk)
0.57kb - 2017-10-23 | lib-i_to_z| -| **1555** | [VarZ_Compress.ahk](lib-i_to_z/VarZ_Compress.ahk)
6.97kb - 2018-06-02 | lib-i_to_z| -| **1556** | [VAWrapper.ahk](lib-i_to_z/VAWrapper.ahk)
3.06kb - 2018-06-09 | lib-i_to_z| -| **1557** | [VersionCompare.ahk](lib-i_to_z/VersionCompare.ahk)
0.69kb - 2018-03-08 | lib-i_to_z| -| **1558** | [VersionRes.ahk](lib-i_to_z/VersionRes.ahk)
1.95kb - 2018-06-02 | lib-i_to_z| -| **1559** | [VerticalTextAlign.ahk](lib-i_to_z/VerticalTextAlign.ahk)
7.13kb - 2019-02-16 | lib-i_to_z| -| **1560** | [View-MSgBox.ahk](lib-i_to_z/View-MSgBox.ahk)
2.68kb - 2018-07-26 | lib-i_to_z| -| **1561** | [Vis2.ahk](lib-i_to_z/Vis2.ahk)
121.11kb - 2018-04-04 | lib-i_to_z| -| **1562** | [VJoy_lib.ahk](lib-i_to_z/VJoy_lib.ahk)
23.17kb - 2019-10-28 | lib-i_to_z| -| **1563** | [VKSend.ahk](lib-i_to_z/VKSend.ahk)
1.71kb - 2018-06-02 | lib-i_to_z| -| **1564** | [VLCHTTP3.ahk](lib-i_to_z/VLCHTTP3.ahk)
21.77kb - 2018-06-02 | lib-i_to_z| -| **1565** | [VOL.ahk](lib-i_to_z/VOL.ahk)
32.05kb - 2016-11-21 | lib-i_to_z| -| **1566** | [vpk.ahk](lib-i_to_z/vpk.ahk)
2.62kb - 2018-06-09 | lib-i_to_z| -| **1567** | [vtype.ahk](lib-i_to_z/vtype.ahk)
0.84kb - 2018-06-02 | lib-i_to_z| -| **1568** | [WaitForEvent.ahk](lib-i_to_z/WaitForEvent.ahk)
3.84kb - 2018-06-02 | lib-i_to_z| -| **1569** | [WaitForIEPageLoad.ahk](lib-i_to_z/WaitForIEPageLoad.ahk)
2.06kb - 2018-06-02 | lib-i_to_z| -| **1570** | [WaitPixelColor.ahk](lib-i_to_z/WaitPixelColor.ahk)
1.94kb - 2017-09-04 | lib-i_to_z| -| **1571** | [WakeOnLan.ahk](lib-i_to_z/WakeOnLan.ahk)
0.78kb - 2018-06-02 | lib-i_to_z| -| **1572** | [WAnim.ahk](lib-i_to_z/WAnim.ahk)
5.62kb - 2017-10-06 | lib-i_to_z| -| **1573** | [WatchDirectory.ahk](lib-i_to_z/WatchDirectory.ahk)
5.74kb - 2018-06-02 | lib-i_to_z| -| **1574** | [WatchFolder.ahk](lib-i_to_z/WatchFolder.ahk)
11.75kb - 2019-04-12 | lib-i_to_z| -| **1575** | [WBImg.ahk](lib-i_to_z/WBImg.ahk)
3.46kb - 2018-06-20 | lib-i_to_z| -| **1576** | [web.ahk](lib-i_to_z/web.ahk)
9.60kb - 2017-07-13 | lib-i_to_z| -| **1577** | [Webapp.ahk](lib-i_to_z/Webapp.ahk)
12.79kb - 2019-10-31 | lib-i_to_z| -| **1578** | [WebBrowserCtl.ahk](lib-i_to_z/WebBrowserCtl.ahk)
0.42kb - 2018-06-02 | lib-i_to_z| -| **1579** | [WebPic.ahk](lib-i_to_z/WebPic.ahk)
4.03kb - 2018-03-08 | lib-i_to_z| -| **1580** | [websocket.ahk](lib-i_to_z/websocket.ahk)
2.59kb - 2019-09-10 | lib-i_to_z| -| **1581** | [wgl.ahk](lib-i_to_z/wgl.ahk)
7.33kb - 2019-10-11 | lib-i_to_z| -| **1582** | [WIA.ahk](lib-i_to_z/WIA.ahk)
14.94kb - 2018-06-02 | lib-i_to_z| -| **1583** | [wic.ahk](lib-i_to_z/wic.ahk)
69.13kb - 2018-06-02 | lib-i_to_z| -| **1584** | [Win.ahk](lib-i_to_z/Win.ahk)
25.92kb - 2018-06-02 | lib-i_to_z| -| **1585** | [WinApi.ahk](lib-i_to_z/WinApi.ahk)
200.80kb - 2018-06-02 | lib-i_to_z| -| **1586** | [WinApiDef.ahk](lib-i_to_z/WinApiDef.ahk)
0.48kb - 2018-06-02 | lib-i_to_z| -| **1587** | [WinCaption.ahk](lib-i_to_z/WinCaption.ahk)
0.19kb - 2018-06-02 | lib-i_to_z| -| **1588** | [WinClip.ahk](lib-i_to_z/WinClip.ahk)
36.91kb - 2018-06-02 | lib-i_to_z| -| **1589** | [WinClipAPI.ahk](lib-i_to_z/WinClipAPI.ahk)
8.81kb - 2018-06-02 | lib-i_to_z| -| **1590** | [WINDERS.ahk](lib-i_to_z/WINDERS.ahk)
54.08kb - 2018-06-02 | lib-i_to_z| -| **1591** | [Window Roller.ahk](lib-i_to_z/Window%20Roller.ahk)
1.88kb - 2018-06-02 | lib-i_to_z| -| **1592** | [Window.ahk](lib-i_to_z/Window.ahk)
9.60kb - 2019-10-28 | lib-i_to_z| -| **1593** | [WindowFromPoint.ahk](lib-i_to_z/WindowFromPoint.ahk)
3.10kb - 2018-06-02 | lib-i_to_z| -| **1594** | [WindowFromRect.ahk](lib-i_to_z/WindowFromRect.ahk)
2.82kb - 2018-06-02 | lib-i_to_z| -| **1595** | [WindowPad.ahk](lib-i_to_z/WindowPad.ahk)
19.50kb - 2018-06-02 | lib-i_to_z| -| **1596** | [WindowsBase.ahk](lib-i_to_z/WindowsBase.ahk)
6.87kb - 2018-06-02 | lib-i_to_z| -| **1597** | [windowscalepos.ahk](lib-i_to_z/windowscalepos.ahk)
3.70kb - 2019-04-21 | lib-i_to_z| -| **1598** | [WindowShellEvent.ahk](lib-i_to_z/WindowShellEvent.ahk)
0.48kb - 2016-09-15 | lib-i_to_z| -| **1599** | [WindowsLogs.ahk](lib-i_to_z/WindowsLogs.ahk)
5.76kb - 2018-10-23 | lib-i_to_z| -| **1600** | [WindowSuperMaxStatus.ahk](lib-i_to_z/WindowSuperMaxStatus.ahk)
2.01kb - 2018-05-05 | lib-i_to_z| -| **1601** | [WinEnum.ahk](lib-i_to_z/WinEnum.ahk)
1.56kb - 2018-06-02 | lib-i_to_z| -| **1602** | [WinEvents.ahk](lib-i_to_z/WinEvents.ahk)
7.58kb - 2018-10-23 | lib-i_to_z| -| **1603** | [WinFade.ahk](lib-i_to_z/WinFade.ahk)
2.15kb - 2014-12-06 | lib-i_to_z| -| **1604** | [WinGetAll (2).ahk](lib-i_to_z/WinGetAll%20(2).ahk)
1.50kb - 2016-09-15 | lib-i_to_z| -| **1605** | [WinGetAll.ahk](lib-i_to_z/WinGetAll.ahk)
1.18kb - 2018-06-02 | lib-i_to_z| -| **1606** | [WinGetAtCoords.ahk](lib-i_to_z/WinGetAtCoords.ahk)
1.61kb - 2016-09-15 | lib-i_to_z| -| **1607** | [WinGetPidList.ahk](lib-i_to_z/WinGetPidList.ahk)
0.49kb - 2018-06-02 | lib-i_to_z| -| **1608** | [WinGetPos.ahk](lib-i_to_z/WinGetPos.ahk)
0.65kb - 2018-06-02 | lib-i_to_z| -| **1609** | [WinGetPosEx.ahk](lib-i_to_z/WinGetPosEx.ahk)
6.60kb - 2018-06-02 | lib-i_to_z| -| **1610** | [WinGroup.ahk](lib-i_to_z/WinGroup.ahk)
2.66kb - 2019-01-21 | lib-i_to_z| -| **1611** | [WinHttpRequest.ahk](lib-i_to_z/WinHttpRequest.ahk)
3.01kb - 2018-06-02 | lib-i_to_z| -| **1612** | [winInfo.ahk](lib-i_to_z/winInfo.ahk)
0.48kb - 2018-10-30 | lib-i_to_z| -| **1613** | [WinIniNet.ahk](lib-i_to_z/WinIniNet.ahk)
11.15kb - 2018-06-02 | lib-i_to_z| -| **1614** | [WinIsOverlay.ahk](lib-i_to_z/WinIsOverlay.ahk)
7.19kb - 2019-04-20 | lib-i_to_z| -| **1615** | [WinMoveGetPos.ahk](lib-i_to_z/WinMoveGetPos.ahk)
1.40kb - 2018-06-02 | lib-i_to_z| -| **1616** | [WinMovePos.ahk](lib-i_to_z/WinMovePos.ahk)
1.64kb - 2018-06-02 | lib-i_to_z| -| **1617** | [winos.ahk](lib-i_to_z/winos.ahk)
1.07kb - 2019-10-31 | lib-i_to_z| -| **1618** | [WinProps.ahk](lib-i_to_z/WinProps.ahk)
3.46kb - 2018-06-02 | lib-i_to_z| -| **1619** | [WinServ.ahk](lib-i_to_z/WinServ.ahk)
5.89kb - 2011-02-10 | lib-i_to_z| -| **1620** | [WinSet_Click_Through.ahk](lib-i_to_z/WinSet_Click_Through.ahk)
9.29kb - 2018-06-02 | lib-i_to_z| -| **1621** | [WinSet_NoActivate.ahk](lib-i_to_z/WinSet_NoActivate.ahk)
2.01kb - 2018-06-02 | lib-i_to_z| -| **1622** | [WinSock2.ahk](lib-i_to_z/WinSock2.ahk)
17.28kb - 2018-06-02 | lib-i_to_z| -| **1623** | [WinSysMenuApi.ahk](lib-i_to_z/WinSysMenuApi.ahk)
3.78kb - 2018-07-08 | lib-i_to_z| -| **1624** | [winvisible (2).ahk](lib-i_to_z/winvisible%20(2).ahk)
1.41kb - 2016-09-15 | lib-i_to_z| -| **1625** | [WinVisible.ahk](lib-i_to_z/WinVisible.ahk)
0.20kb - 2018-06-02 | lib-i_to_z| -| **1626** | [Win__Fling.ahk](lib-i_to_z/Win__Fling.ahk)
6.93kb - 2011-04-25 | lib-i_to_z| -| **1627** | [WLAN.ahk](lib-i_to_z/WLAN.ahk)
20.21kb - 2018-06-02 | lib-i_to_z| -| **1628** | [Wmic_Win32_FunctionLog.ahk](lib-i_to_z/Wmic_Win32_FunctionLog.ahk)
1.62kb - 2018-06-02 | lib-i_to_z| -| **1629** | [wordcount.ahk](lib-i_to_z/wordcount.ahk)
0.98kb - 2019-04-27 | lib-i_to_z| -| **1630** | [WorkerThread.ahk](lib-i_to_z/WorkerThread.ahk)
17.10kb - 2016-09-15 | lib-i_to_z| -| **1631** | [WPD.ahk](lib-i_to_z/WPD.ahk)
76.26kb - 2018-06-02 | lib-i_to_z| -| **1632** | [WRandom.ahk](lib-i_to_z/WRandom.ahk)
1.70kb - 2018-06-02 | lib-i_to_z| -| **1633** | [WrapText (2).ahk](lib-i_to_z/WrapText%20(2).ahk)
10.78kb - 2019-04-23 | lib-i_to_z| -| **1634** | [WrapText.ahk](lib-i_to_z/WrapText.ahk)
10.01kb - 2018-07-06 | lib-i_to_z| -| **1635** | [WriteFileLine.ahk](lib-i_to_z/WriteFileLine.ahk)
1.21kb - 2018-03-08 | lib-i_to_z| -| **1636** | [WriteMemory.ahk](lib-i_to_z/WriteMemory.ahk)
3.67kb - 2014-03-21 | lib-i_to_z| -| **1637** | [Writer.ahk](lib-i_to_z/Writer.ahk)
4.38kb - 2018-06-02 | lib-i_to_z| -| **1638** | [WriteToLogs.ahk](lib-i_to_z/WriteToLogs.ahk)
2.10kb - 2018-05-05 | lib-i_to_z| -| **1639** | [ws.ahk](lib-i_to_z/ws.ahk)
28.17kb - 2018-06-02 | lib-i_to_z| -| **1640** | [WS2.ahk](lib-i_to_z/WS2.ahk)
17.28kb - 2011-04-25 | lib-i_to_z| -| **1641** | [ws4ahk.ahk](lib-i_to_z/ws4ahk.ahk)
86.26kb - 2018-06-02 | lib-i_to_z| -| **1642** | [WS_CoEvent.ahk](lib-i_to_z/WS_CoEvent.ahk)
5.09kb - 2008-08-04 | lib-i_to_z| -| **1643** | [WS_DEControl.ahk](lib-i_to_z/WS_DEControl.ahk)
7.79kb - 2008-08-04 | lib-i_to_z| -| **1644** | [WS_DEControl2.ahk](lib-i_to_z/WS_DEControl2.ahk)
11.96kb - 2008-08-04 | lib-i_to_z| -| **1645** | [WS_RemoveErrChk.ahk](lib-i_to_z/WS_RemoveErrChk.ahk)
1.10kb - 2018-06-02 | lib-i_to_z| -| **1646** | [xa.ahk](lib-i_to_z/xa.ahk)
5.13kb - 2017-07-22 | lib-i_to_z| -| **1647** | [XButton.ahk](lib-i_to_z/XButton.ahk)
33.37kb - 2019-11-02 | lib-i_to_z| -| **1648** | [XGraph.ahk](lib-i_to_z/XGraph.ahk)
15.50kb - 2018-06-02 | lib-i_to_z| -| **1649** | [xHotkeyNormalize.ahk](lib-i_to_z/xHotkeyNormalize.ahk)
1.12kb - 2015-01-01 | lib-i_to_z| -| **1650** | [Xinput.ahk](lib-i_to_z/Xinput.ahk)
6.05kb - 2018-06-02 | lib-i_to_z| -| **1651** | [XML.ahk](lib-i_to_z/XML.ahk)
20.66kb - 2018-06-02 | lib-i_to_z| -| **1652** | [XMLHTTP_Post.ahk](lib-i_to_z/XMLHTTP_Post.ahk)
1.98kb - 2018-02-28 | lib-i_to_z| -| **1653** | [XMLHTTP_Request.ahk](lib-i_to_z/XMLHTTP_Request.ahk)
3.01kb - 2018-02-28 | lib-i_to_z| -| **1654** | [xmlPrettify.ahk](lib-i_to_z/xmlPrettify.ahk)
1.31kb - 2019-05-26 | lib-i_to_z| -| **1655** | [xpath.ahk](lib-i_to_z/xpath.ahk)
14.80kb - 2018-06-02 | lib-i_to_z| -| **1656** | [Yaml.ahk](lib-i_to_z/Yaml.ahk)
24.40kb - 2018-06-02 | lib-i_to_z| -| **1657** | [youtube (not tested).ahk](lib-i_to_z/youtube%20(not%20tested).ahk)
6.75kb - 2018-06-02 | lib-i_to_z| -| **1658** | [Zip.ahk](lib-i_to_z/Zip.ahk)
3.11kb - 2018-06-02 | lib-i_to_z| -| **1659** | [ZipFile.ahk](lib-i_to_z/ZipFile.ahk)
7.41kb - 2017-07-13 | lib-i_to_z| -| **1660** | [ZipFileRaw.ahk](lib-i_to_z/ZipFileRaw.ahk)
5.68kb - 2018-06-02 | lib-i_to_z| -| **1661** | [_RemoteBuf.ahk](lib-i_to_z/_RemoteBuf.ahk)
5.51kb - 2018-06-02 | lib-i_to_z| -| **1662** | [class_3DMatrix.ahk](classes/class_3DMatrix.ahk)
1.77kb - 2016-12-02 | classes| -| **1663** | [class_accessibility.ahk](classes/class_accessibility.ahk)
8.24kb - 2019-10-22 | classes| -| **1664** | [class_AccObj.ahk](classes/class_AccObj.ahk)
32.51kb - 2018-11-09 | classes| -| **1665** | [class_AccObjObject.ahk](classes/class_AccObjObject.ahk)
21.97kb - 2018-10-06 | classes| -| **1666** | [class_AccV2.ahk](classes/class_AccV2.ahk)
29.10kb - 2018-03-10 | classes| -| **1667** | [class_actionObject.ahk](classes/class_actionObject.ahk)
7.25kb - 2018-02-28 | classes| -| **1668** | [class_ActiveScript.ahk](classes/class_ActiveScript.ahk)
9.81kb - 2018-01-30 | classes| -| **1669** | [class_AddClearBtnToEdit.ahk](classes/class_AddClearBtnToEdit.ahk)
8.39kb - 2015-03-21 | classes| -| **1670** | [class_adhdlib.ahk](classes/class_adhdlib.ahk)
88.02kb - 2019-09-04 | classes| -| **1671** | [class_AES_und_CBC.ahk](classes/class_AES_und_CBC.ahk)
14.02kb - 2018-12-09 | classes| -| **1672** | [class_AhkPedal.ahk](classes/class_AhkPedal.ahk)
4.52kb - 2019-10-31 | classes| -| **1673** | [class_AHKWebDriver.ahk](classes/class_AHKWebDriver.ahk)
14.04kb - 2019-11-15 | classes| -| **1674** | [class_ALD.ahk](classes/class_ALD.ahk)
0.33kb - 2019-10-30 | classes| -| **1675** | [class_ALD.Connection.ahk](classes/class_ALD.Connection.ahk)
5.56kb - 2018-06-02 | classes| -| **1676** | [class_ALD.DefinitionGenerator.ahk](classes/class_ALD.DefinitionGenerator.ahk)
6.34kb - 2018-06-02 | classes| -| **1677** | [class_ALD.PackageGenerator.ahk](classes/class_ALD.PackageGenerator.ahk)
0.85kb - 2018-06-02 | classes| -| **1678** | [class_Animation.ahk](classes/class_Animation.ahk)
4.17kb - 2018-02-14 | classes| -| **1679** | [class_ansi.ahk](classes/class_ansi.ahk)
8.85kb - 2019-10-31 | classes| -| **1680** | [class_AppFactory.ahk](classes/class_AppFactory.ahk)
26.49kb - 2018-06-02 | classes| -| **1681** | [class_arrays.ahk](classes/class_arrays.ahk)
6.09kb - 2019-10-31 | classes| -| **1682** | [class_array_base.ahk](classes/class_array_base.ahk)
11.67kb - 2018-05-10 | classes| -| **1683** | [class_array_quicksort.ahk](classes/class_array_quicksort.ahk)
2.55kb - 2018-06-08 | classes| -| **1684** | [class_AsyncHttp.ahk](classes/class_AsyncHttp.ahk)
2.74kb - 2019-04-28 | classes| -| **1685** | [class_audioRouter.ahk](classes/class_audioRouter.ahk)
5.80kb - 2018-10-30 | classes| -| **1686** | [class_base64(2).ahk](classes/class_base64(2).ahk)
4.30kb - 2019-10-31 | classes| -| **1687** | [Class_Base64.ahk](classes/Class_Base64.ahk)
4.84kb - 2019-03-23 | classes| -| **1688** | [class_bcrypt.ahk](classes/class_bcrypt.ahk)
13.40kb - 2018-04-14 | classes| -| **1689** | [class_BinaryHeap.ahk](classes/class_BinaryHeap.ahk)
3.33kb - 2019-07-31 | classes| -| **1690** | [class_BindModeThread.ahk](classes/class_BindModeThread.ahk)
7.60kb - 2018-12-21 | classes| -| **1691** | [class_BinRun.ahk](classes/class_BinRun.ahk)
15.25kb - 2014-03-21 | classes| -| **1692** | [class_BrightnessSetter.ahk](classes/class_BrightnessSetter.ahk)
9.46kb - 2018-06-08 | classes| -| **1693** | [class_C.ahk](classes/class_C.ahk)
118.94kb - 2018-12-21 | classes| -| **1694** | [class_CApplication.ahk](classes/class_CApplication.ahk)
14.55kb - 2018-12-21 | classes| -| **1695** | [class_CaseSensitiveObject.ahk](classes/class_CaseSensitiveObject.ahk)
4.38kb - 2011-12-07 | classes| -| **1696** | [class_CDataBase.ahk](classes/class_CDataBase.ahk)
8.18kb - 2018-12-21 | classes| -| **1697** | [class_CDialogs.ahk](classes/class_CDialogs.ahk)
2.80kb - 2018-12-21 | classes| -| **1698** | [class_CDirectory.ahk](classes/class_CDirectory.ahk)
1.13kb - 2018-12-21 | classes| -| **1699** | [class_CEnumerator.ahk](classes/class_CEnumerator.ahk)
0.62kb - 2018-12-21 | classes| -| **1700** | [class_Cert.ahk](classes/class_Cert.ahk)
15.17kb - 2016-01-11 | classes| -| **1701** | [class_CFile.ahk](classes/class_CFile.ahk)
1.32kb - 2018-12-21 | classes| -| **1702** | [class_CFlyout.ahk](classes/class_CFlyout.ahk)
47.32kb - 2017-09-25 | classes| -| **1703** | [class_CFlyoutMenuHandler.ahk](classes/class_CFlyoutMenuHandler.ahk)
21.21kb - 2017-09-18 | classes| -| **1704** | [class_CFlyout_New.ahk](classes/class_CFlyout_New.ahk)
20.21kb - 2017-09-18 | classes| -| **1705** | [class_CFunction.ahk](classes/class_CFunction.ahk)
0.20kb - 2018-12-21 | classes| -| **1706** | [class_CGui.ahk](classes/class_CGui.ahk)
7.19kb - 2018-12-21 | classes| -| **1707** | [class_CGuiCtrl.ahk](classes/class_CGuiCtrl.ahk)
12.60kb - 2018-12-21 | classes| -| **1708** | [Class_Check.ahk](classes/Class_Check.ahk)
6.95kb - 2018-06-02 | classes| -| **1709** | [class_CHotKey.ahk](classes/class_CHotKey.ahk)
2.39kb - 2018-12-21 | classes| -| **1710** | [class_CHotstringOptions.ahk](classes/class_CHotstringOptions.ahk)
1.86kb - 2018-12-21 | classes| -| **1711** | [class_Chrome (2).ahk](classes/class_Chrome%20(2).ahk)
10.38kb - 2019-10-31 | classes| -| **1712** | [class_Chrome.ahk](classes/class_Chrome.ahk)
12.97kb - 2018-01-16 | classes| -| **1713** | [class_CIniFile.ahk](classes/class_CIniFile.ahk)
22.33kb - 2018-12-21 | classes| -| **1714** | [class_CInputDetector.ahk](classes/class_CInputDetector.ahk)
7.71kb - 2019-04-10 | classes| -| **1715** | [class_CircleProgressClass.ahk](classes/class_CircleProgressClass.ahk)
3.96kb - 2018-06-14 | classes| -| **1716** | [class_Classifier.ahk](classes/class_Classifier.ahk)
4.15kb - 2012-04-21 | classes| -| **1717** | [class_Clip2Object.ahk](classes/class_Clip2Object.ahk)
1.04kb - 2016-09-15 | classes| -| **1718** | [class_CLocalizer.ahk](classes/class_CLocalizer.ahk)
5.25kb - 2018-12-21 | classes| -| **1719** | [class_CmdLine.ahk](classes/class_CmdLine.ahk)
1.06kb - 2018-05-20 | classes| -| **1720** | [class_Collection.ahk](classes/class_Collection.ahk)
1.88kb - 2016-09-15 | classes| -| **1721** | [Class_ColorPicker.ahk](classes/Class_ColorPicker.ahk)
9.03kb - 2018-06-02 | classes| -| **1722** | [class_ComboBoxEx.ahk](classes/class_ComboBoxEx.ahk)
32.96kb - 2018-09-15 | classes| -| **1723** | [class_ComImplementationBase.ahk](classes/class_ComImplementationBase.ahk)
7.13kb - 2017-10-13 | classes| -| **1724** | [class_Compass.ahk](classes/class_Compass.ahk)
10.17kb - 2018-05-27 | classes| -| **1725** | [Class_Console.ahk](classes/Class_Console.ahk)
27.98kb - 2018-06-02 | classes| -| **1726** | [class_CP.ahk](classes/class_CP.ahk)
10.57kb - 2018-08-26 | classes| -| **1727** | [Class_CreateFormData.ahk](classes/Class_CreateFormData.ahk)
4.21kb - 2018-08-19 | classes| -| **1728** | [class_Crypt (2).ahk](classes/class_Crypt%20(2).ahk)
4.44kb - 2016-01-11 | classes| -| **1729** | [class_Crypt.ahk](classes/class_Crypt.ahk)
20.60kb - 2018-06-02 | classes| -| **1730** | [class_CryptConst.ahk](classes/class_CryptConst.ahk)
12.80kb - 2018-06-02 | classes| -| **1731** | [Class_CStruct.ahk](classes/Class_CStruct.ahk)
43.75kb - 2018-06-02 | classes| -| **1732** | [class_cTable.ahk](classes/class_cTable.ahk)
33.52kb - 2018-06-02 | classes| -| **1733** | [Class_CTLCOLORS.ahk](classes/Class_CTLCOLORS.ahk)
21.25kb - 2018-06-02 | classes| -| **1734** | [class_Cursor.ahk](classes/class_Cursor.ahk)
15.95kb - 2019-10-30 | classes| -| **1735** | [Class_CustomFont.ahk](classes/Class_CustomFont.ahk)
2.60kb - 2018-07-26 | classes| -| **1736** | [class_CustomImageList.ahk](classes/class_CustomImageList.ahk)
3.90kb - 2019-11-13 | classes| -| **1737** | [class_CutWindowSquare.ahk](classes/class_CutWindowSquare.ahk)
1.61kb - 2019-05-27 | classes| -| **1738** | [Class_DateTools.ahk](classes/Class_DateTools.ahk)
51.63kb - 2019-09-25 | classes| -| **1739** | [class_db.ahk](classes/class_db.ahk)
4.83kb - 2018-08-21 | classes| -| **1740** | [Class_DD.ahk](classes/Class_DD.ahk)
6.13kb - 2018-06-02 | classes| -| **1741** | [Class_Dictionary.ahk](classes/Class_Dictionary.ahk)
8.50kb - 2018-06-20 | classes| -| **1742** | [class_DigestAuth.ahk](classes/class_DigestAuth.ahk)
1.69kb - 2019-08-09 | classes| -| **1743** | [class_DllCallCheck.ahk](classes/class_DllCallCheck.ahk)
11.61kb - 2018-11-06 | classes| -| **1744** | [Class_Dock.ahk](classes/Class_Dock.ahk)
7.51kb - 2019-08-20 | classes| -| **1745** | [class_DoublyLinkedList.ahk](classes/class_DoublyLinkedList.ahk)
5.51kb - 2016-09-15 | classes| -| **1746** | [class_DragDrop.ahk](classes/class_DragDrop.ahk)
8.09kb - 2018-09-09 | classes| -| **1747** | [class_DriveMap.ahk](classes/class_DriveMap.ahk)
7.62kb - 2019-05-27 | classes| -| **1748** | [class_dual.ahk](classes/class_dual.ahk)
13.26kb - 2018-12-17 | classes| -| **1749** | [class_dual_defaults.ahk](classes/class_dual_defaults.ahk)
0.63kb - 2018-12-17 | classes| -| **1750** | [class_EasyCSV.ahk](classes/class_EasyCSV.ahk)
14.74kb - 2015-03-24 | classes| -| **1751** | [class_EasyIni.ahk](classes/class_EasyIni.ahk)
19.03kb - 2017-04-07 | classes| -| **1752** | [class_EasyXML.ahk](classes/class_EasyXML.ahk)
14.99kb - 2015-03-24 | classes| -| **1753** | [class_eAutocomplete.ahk](classes/class_eAutocomplete.ahk)
35.04kb - 2018-08-03 | classes| -| **1754** | [class_EditView.ahk](classes/class_EditView.ahk)
12.80kb - 2018-06-02 | classes| -| **1755** | [class_ExpandView.ahk](classes/class_ExpandView.ahk)
5.06kb - 2018-12-08 | classes| -| **1756** | [class_ExplorerTool.ahk](classes/class_ExplorerTool.ahk)
6.85kb - 2018-06-20 | classes| -| **1757** | [class_ExtObj.ahk](classes/class_ExtObj.ahk)
16.87kb - 2019-05-19 | classes| -| **1758** | [class_fancy.ahk](classes/class_fancy.ahk)
11.01kb - 2018-12-23 | classes| -| **1759** | [class_FileMapping.ahk](classes/class_FileMapping.ahk)
1.86kb - 2018-09-04 | classes| -| **1760** | [class_filey.ahk](classes/class_filey.ahk)
12.07kb - 2016-03-07 | classes| -| **1761** | [class_flexTable.ahk](classes/class_flexTable.ahk)
9.57kb - 2019-05-04 | classes| -| **1762** | [Class_Flyout.ahk](classes/Class_Flyout.ahk)
44.66kb - 2017-09-18 | classes| -| **1763** | [Class_FTP.ahk](classes/Class_FTP.ahk)
11.74kb - 2018-06-02 | classes| -| **1764** | [class_FTPv2.ahk](classes/class_FTPv2.ahk)
33.39kb - 2018-06-02 | classes| -| **1765** | [class_gdichart.ahk](classes/class_gdichart.ahk)
6.61kb - 2014-09-26 | classes| -| **1766** | [class_GDIp.ahk](classes/class_GDIp.ahk)
20.42kb - 2018-12-23 | classes| -| **1767** | [class_gdipChart.ahk](classes/class_gdipChart.ahk)
22.04kb - 2018-12-23 | classes| -| **1768** | [Class_GdipSnapshot.ahk](classes/Class_GdipSnapshot.ahk)
7.98kb - 2017-05-18 | classes| -| **1769** | [Class_GdipTooltip.ahk](classes/Class_GdipTooltip.ahk)
17.52kb - 2018-06-02 | classes| -| **1770** | [class_geometry.ahk](classes/class_geometry.ahk)
0.87kb - 2018-08-31 | classes| -| **1771** | [class_Gestures.ahk](classes/class_Gestures.ahk)
4.39kb - 2019-11-01 | classes| -| **1772** | [class_getopt.ahk](classes/class_getopt.ahk)
7.10kb - 2018-11-18 | classes| -| **1773** | [Class_Github (2).ahk](classes/Class_Github%20(2).ahk)
4.78kb - 2019-11-01 | classes| -| **1774** | [class_Github.ahk](classes/class_Github.ahk)
17.90kb - 2015-09-21 | classes| -| **1775** | [Class_Github_Gui.ahk](classes/Class_Github_Gui.ahk)
5.55kb - 2019-11-05 | classes| -| **1776** | [class_Graphics.ahk](classes/class_Graphics.ahk)
177.83kb - 2019-08-04 | classes| -| **1777** | [class_GroupSort.ahk](classes/class_GroupSort.ahk)
3.66kb - 2018-06-02 | classes| -| **1778** | [class_GuiControlTips.ahk](classes/class_GuiControlTips.ahk)
22.60kb - 2018-04-26 | classes| -| **1779** | [class_Guid.ahk](classes/class_Guid.ahk)
2.89kb - 2018-06-02 | classes| -| **1780** | [class_GuiDropFiles.ahk](classes/class_GuiDropFiles.ahk)
3.89kb - 2014-09-10 | classes| -| **1781** | [class_GuiPrompt.ahk](classes/class_GuiPrompt.ahk)
2.86kb - 2018-05-20 | classes| -| **1782** | [class_GuiTabEx.ahk](classes/class_GuiTabEx.ahk)
17.11kb - 2013-03-22 | classes| -| **1783** | [class_GuiVar.ahk](classes/class_GuiVar.ahk)
4.94kb - 2018-07-06 | classes| -| **1784** | [class_Gui_NoActivate.ahk](classes/class_Gui_NoActivate.ahk)
2.11kb - 2015-05-16 | classes| -| **1785** | [class_hashTable.ahk](classes/class_hashTable.ahk)
75.22kb - 2018-06-02 | classes| -| **1786** | [class_HashTable_small.ahk](classes/class_HashTable_small.ahk)
8.82kb - 2018-12-18 | classes| -| **1787** | [class_hashTable_v1.ahk](classes/class_hashTable_v1.ahk)
74.96kb - 2018-03-29 | classes| -| **1788** | [class_HL7.ahk](classes/class_HL7.ahk)
15.89kb - 2018-06-02 | classes| -| **1789** | [class_HotClass.ahk](classes/class_HotClass.ahk)
16.00kb - 2019-07-26 | classes| -| **1790** | [class_HotCorners.ahk](classes/class_HotCorners.ahk)
2.29kb - 2018-08-31 | classes| -| **1791** | [Class_Hotkey (2).ahk](classes/Class_Hotkey%20(2).ahk)
3.49kb - 2017-05-02 | classes| -| **1792** | [Class_Hotkey.ahk](classes/Class_Hotkey.ahk)
11.21kb - 2018-05-10 | classes| -| **1793** | [class_HotVoice.ahk](classes/class_HotVoice.ahk)
7.60kb - 2018-06-02 | classes| -| **1794** | [class_iAutoComplete.ahk](classes/class_iAutoComplete.ahk)
15.17kb - 2018-08-04 | classes| -| **1795** | [class_ICLRRuntimeHost.ahk](classes/class_ICLRRuntimeHost.ahk)
5.99kb - 2018-09-15 | classes| -| **1796** | [class_ICorRuntimeHost.ahk](classes/class_ICorRuntimeHost.ahk)
3.73kb - 2018-09-15 | classes| -| **1797** | [class_IDesktopWallpaper.ahk](classes/class_IDesktopWallpaper.ahk)
14.11kb - 2018-09-15 | classes| -| **1798** | [class_IDropTarget.ahk](classes/class_IDropTarget.ahk)
15.34kb - 2018-06-02 | classes| -| **1799** | [class_IEObj.ahk](classes/class_IEObj.ahk)
2.48kb - 2018-10-30 | classes| -| **1800** | [class_iexplorerClass.ahk](classes/class_iexplorerClass.ahk)
0.94kb - 2017-01-05 | classes| -| **1801** | [class_ImageButton.ahk](classes/class_ImageButton.ahk)
29.53kb - 2018-03-08 | classes| -| **1802** | [class_ImageConverter.ahk](classes/class_ImageConverter.ahk)
15.66kb - 2014-12-28 | classes| -| **1803** | [class_ImageProcessing.ahk](classes/class_ImageProcessing.ahk)
128.34kb - 2018-11-25 | classes| -| **1804** | [class_indirectReference.ahk](classes/class_indirectReference.ahk)
4.02kb - 2017-06-03 | classes| -| **1805** | [class_Ini.ahk](classes/class_Ini.ahk)
3.14kb - 2014-07-06 | classes| -| **1806** | [class_Input.ahk](classes/class_Input.ahk)
20.63kb - 2018-06-02 | classes| -| **1807** | [class_InputThread.ahk](classes/class_InputThread.ahk)
13.72kb - 2018-06-02 | classes| -| **1808** | [class_InsertBinToPNG (2).ahk](classes/class_InsertBinToPNG%20(2).ahk)
6.45kb - 2014-10-16 | classes| -| **1809** | [class_InsertBinToPNG.ahk](classes/class_InsertBinToPNG.ahk)
6.45kb - 2014-10-16 | classes| -| **1810** | [class_IPC.ahk](classes/class_IPC.ahk)
3.96kb - 2018-09-04 | classes| -| **1811** | [class_IPHelper.ahk](classes/class_IPHelper.ahk)
9.04kb - 2018-06-02 | classes| -| **1812** | [class_ItemTree.ahk](classes/class_ItemTree.ahk)
6.04kb - 2019-02-02 | classes| -| **1813** | [class_IUIAnimationManager.ahk](classes/class_IUIAnimationManager.ahk)
46.11kb - 2018-06-02 | classes| -| **1814** | [class_IUIAutomationEventHandler.ahk](classes/class_IUIAutomationEventHandler.ahk)
1.12kb - 2018-08-17 | classes| -| **1815** | [class_IUIAutomationEventHandler_extended.ahk](classes/class_IUIAutomationEventHandler_extended.ahk)
10.44kb - 2018-08-17 | classes| -| **1816** | [class_Joystick.ahk](classes/class_Joystick.ahk)
4.99kb - 2018-08-03 | classes| -| **1817** | [Class_JSON (2).ahk](classes/Class_JSON%20(2).ahk)
11.14kb - 2017-05-05 | classes| -| **1818** | [Class_JSON.ahk](classes/Class_JSON.ahk)
9.57kb - 2018-06-02 | classes| -| **1819** | [class_JSONData.ahk](classes/class_JSONData.ahk)
2.75kb - 2018-08-03 | classes| -| **1820** | [class_JSONFile.ahk](classes/class_JSONFile.ahk)
2.41kb - 2018-07-06 | classes| -| **1821** | [class_JSONV2.1.3.ahk](classes/class_JSONV2.1.3.ahk)
11.55kb - 2019-05-03 | classes| -| **1822** | [class_JsRT.ahk](classes/class_JsRT.ahk)
3.34kb - 2018-01-30 | classes| -| **1823** | [class_kbhook.ahk](classes/class_kbhook.ahk)
13.98kb - 2018-06-02 | classes| -| **1824** | [class_KeyValStore.ahk](classes/class_KeyValStore.ahk)
4.43kb - 2016-04-17 | classes| -| **1825** | [class_LastError.ahk](classes/class_LastError.ahk)
376.41kb - 2019-01-25 | classes| -| **1826** | [Class_LeapMenu.ahk](classes/Class_LeapMenu.ahk)
7.47kb - 2017-09-18 | classes| -| **1827** | [class_lexer.ahk](classes/class_lexer.ahk)
14.93kb - 2018-11-06 | classes| -| **1828** | [class_Linear.ahk](classes/class_Linear.ahk)
2.55kb - 2018-06-02 | classes| -| **1829** | [class_LineReader.ahk](classes/class_LineReader.ahk)
8.22kb - 2018-11-06 | classes| -| **1830** | [class_LinkedListAndHashTable.ahk](classes/class_LinkedListAndHashTable.ahk)
14.00kb - 2019-03-23 | classes| -| **1831** | [class_LLMouse.ahk](classes/class_LLMouse.ahk)
2.06kb - 2018-11-25 | classes| -| **1832** | [class_LoaderBar.ahk](classes/class_LoaderBar.ahk)
5.30kb - 2018-06-02 | classes| -| **1833** | [class_LoadPictureType.ahk](classes/class_LoadPictureType.ahk)
12.98kb - 2017-08-30 | classes| -| **1834** | [class_LocalWorker.ahk](classes/class_LocalWorker.ahk)
8.29kb - 2012-12-17 | classes| -| **1835** | [class_log4ahk.ahk](classes/class_log4ahk.ahk)
6.61kb - 2015-03-31 | classes| -| **1836** | [class_Log_class.ahk](classes/class_Log_class.ahk)
39.91kb - 2019-10-17 | classes| -| **1837** | [class_longhotkey.ahk](classes/class_longhotkey.ahk)
19.04kb - 2018-12-17 | classes| -| **1838** | [Class_LV_Colors.ahk](classes/Class_LV_Colors.ahk)
22.69kb - 2018-06-02 | classes| -| **1839** | [Class_LV_InCellEdit.ahk](classes/Class_LV_InCellEdit.ahk)
28.29kb - 2018-06-02 | classes| -| **1840** | [Class_LV_Rows.ahk](classes/Class_LV_Rows.ahk)
53.39kb - 2016-06-09 | classes| -| **1841** | [class_Lyt.ahk](classes/class_Lyt.ahk)
9.04kb - 2019-05-08 | classes| -| **1842** | [class_Mailslot.ahk](classes/class_Mailslot.ahk)
7.32kb - 2018-06-02 | classes| -| **1843** | [class_MailslotEx.ahk](classes/class_MailslotEx.ahk)
3.29kb - 2018-06-02 | classes| -| **1844** | [class_Matrix.ahk](classes/class_Matrix.ahk)
21.50kb - 2019-05-13 | classes| -| **1845** | [class_MemBlk (2).ahk](classes/class_MemBlk%20(2).ahk)
10.60kb - 2018-06-02 | classes| -| **1846** | [class_MemBlk.ahk](classes/class_MemBlk.ahk)
2.89kb - 2018-12-01 | classes| -| **1847** | [Class_Memory (2).ahk](classes/Class_Memory%20(2).ahk)
81.64kb - 2017-05-05 | classes| -| **1848** | [Class_Memory (3).ahk](classes/Class_Memory%20(3).ahk)
6.14kb - 2017-05-05 | classes| -| **1849** | [class_Memory.ahk](classes/class_Memory.ahk)
84.05kb - 2018-06-02 | classes| -| **1850** | [class_MemoryBuffer.ahk](classes/class_MemoryBuffer.ahk)
4.40kb - 2016-09-15 | classes| -| **1851** | [class_MemoryFileIO.ahk](classes/class_MemoryFileIO.ahk)
29.58kb - 2019-04-24 | classes| -| **1852** | [class_MemoryLibrary.ahk](classes/class_MemoryLibrary.ahk)
23.64kb - 2018-10-30 | classes| -| **1853** | [class_Mem_Injection.ahk](classes/class_Mem_Injection.ahk)
19.64kb - 2018-06-22 | classes| -| **1854** | [class_Menu.ahk](classes/class_Menu.ahk)
11.87kb - 2019-02-02 | classes| -| **1855** | [class_MenuEnumOption.ahk](classes/class_MenuEnumOption.ahk)
3.57kb - 2016-02-06 | classes| -| **1856** | [class_MenuToggleOption.ahk](classes/class_MenuToggleOption.ahk)
3.24kb - 2016-02-06 | classes| -| **1857** | [class_microWindows.ahk](classes/class_microWindows.ahk)
5.67kb - 2018-06-10 | classes| -| **1858** | [class_midiOut.ahk](classes/class_midiOut.ahk)
6.03kb - 2017-04-06 | classes| -| **1859** | [class_Monitor.ahk](classes/class_Monitor.ahk)
5.43kb - 2018-04-23 | classes| -| **1860** | [class_MonitorManager.ahk](classes/class_MonitorManager.ahk)
2.91kb - 2019-10-28 | classes| -| **1861** | [class_Mouse.ahk](classes/class_Mouse.ahk)
1.78kb - 2018-04-23 | classes| -| **1862** | [class_MouseDelta.ahk](classes/class_MouseDelta.ahk)
3.96kb - 2018-11-25 | classes| -| **1863** | [class_MouseHook.ahk](classes/class_MouseHook.ahk)
2.15kb - 2018-11-25 | classes| -| **1864** | [class_Mousetracker.ahk](classes/class_Mousetracker.ahk)
9.95kb - 2019-04-21 | classes| -| **1865** | [class_MsgBox.ahk](classes/class_MsgBox.ahk)
4.59kb - 2018-04-23 | classes| -| **1866** | [class_MS_SAPI.ahk](classes/class_MS_SAPI.ahk)
30.20kb - 2019-03-23 | classes| -| **1867** | [class_MS_XMLDOM.ahk](classes/class_MS_XMLDOM.ahk)
9.46kb - 2019-03-23 | classes| -| **1868** | [Class_Multipart.ahk](classes/Class_Multipart.ahk)
2.64kb - 2018-08-19 | classes| -| **1869** | [class_MultiTree Data Structure.ahk](classes/class_MultiTree%20Data%20Structure.ahk)
8.14kb - 2018-06-02 | classes| -| **1870** | [class_Mustache.ahk](classes/class_Mustache.ahk)
26.93kb - 2017-10-28 | classes| -| **1871** | [Class_myConsole.ahk](classes/Class_myConsole.ahk)
6.04kb - 2015-06-06 | classes| -| **1872** | [Class_MySQLAPI.ahk](classes/Class_MySQLAPI.ahk)
51.51kb - 2018-06-02 | classes| -| **1873** | [Class_NetworkManagement.ahk](classes/Class_NetworkManagement.ahk)
15.12kb - 2017-10-20 | classes| -| **1874** | [class_ObjectCheck.ahk](classes/class_ObjectCheck.ahk)
12.09kb - 2018-11-19 | classes| -| **1875** | [class_OD_Colors.ahk](classes/class_OD_Colors.ahk)
11.22kb - 2019-01-21 | classes| -| **1876** | [class_OfficeInfo.ahk](classes/class_OfficeInfo.ahk)
3.24kb - 2018-06-20 | classes| -| **1877** | [class_particles.ahk](classes/class_particles.ahk)
16.43kb - 2017-01-17 | classes| -| **1878** | [class_pastebin.ahk](classes/class_pastebin.ahk)
6.24kb - 2019-05-26 | classes| -| **1879** | [class_PerfomanceCounter.ahk](classes/class_PerfomanceCounter.ahk)
2.42kb - 2017-09-12 | classes| -| **1880** | [Class_Permissions.ahk](classes/Class_Permissions.ahk)
5.19kb - 2018-06-02 | classes| -| **1881** | [Class_PictureControl.ahk](classes/Class_PictureControl.ahk)
6.04kb - 2018-01-26 | classes| -| **1882** | [class_PIN.ahk](classes/class_PIN.ahk)
5.87kb - 2018-04-14 | classes| -| **1883** | [class_PIN_INI.ahk](classes/class_PIN_INI.ahk)
2.47kb - 2018-04-14 | classes| -| **1884** | [class_PixelState.ahk](classes/class_PixelState.ahk)
30.06kb - 2018-06-02 | classes| -| **1885** | [Class_ProcessExplorer.ahk](classes/Class_ProcessExplorer.ahk)
14.20kb - 2017-10-20 | classes| -| **1886** | [class_ProcessMonitor.ahk](classes/class_ProcessMonitor.ahk)
13.91kb - 2019-03-23 | classes| -| **1887** | [class_progress.ahk](classes/class_progress.ahk)
2.96kb - 2018-06-09 | classes| -| **1888** | [Class_Properties.ahk](classes/Class_Properties.ahk)
2.65kb - 2013-07-24 | classes| -| **1889** | [Class_PureNotify.ahk](classes/Class_PureNotify.ahk)
3.82kb - 2017-05-18 | classes| -| **1890** | [class_PushLog.ahk](classes/class_PushLog.ahk)
6.89kb - 2019-04-23 | classes| -| **1891** | [class_queue.ahk](classes/class_queue.ahk)
0.78kb - 2018-06-02 | classes| -| **1892** | [class_quicktimer.ahk](classes/class_quicktimer.ahk)
1.44kb - 2018-08-05 | classes| -| **1893** | [class_radical.ahk](classes/class_radical.ahk)
9.76kb - 2019-07-26 | classes| -| **1894** | [Class_Rebar.ahk](classes/Class_Rebar.ahk)
30.88kb - 2016-04-04 | classes| -| **1895** | [class_ref_StringsNumbersObjects.ahk](classes/class_ref_StringsNumbersObjects.ahk)
25.28kb - 2018-11-06 | classes| -| **1896** | [class_reg.ahk](classes/class_reg.ahk)
2.92kb - 2016-03-07 | classes| -| **1897** | [class_Regex (2).ahk](classes/class_Regex%20(2).ahk)
3.07kb - 2018-06-02 | classes| -| **1898** | [class_Regex.ahk](classes/class_Regex.ahk)
2.96kb - 2014-07-06 | classes| -| **1899** | [class_RemoteBuf.ahk](classes/class_RemoteBuf.ahk)
3.82kb - 2017-09-04 | classes| -| **1900** | [class_RemoteObj.ahk](classes/class_RemoteObj.ahk)
1.20kb - 2018-07-04 | classes| -| **1901** | [class_RichCode.ahk](classes/class_RichCode.ahk)
13.31kb - 2018-07-26 | classes| -| **1902** | [Class_RichEdit.ahk](classes/Class_RichEdit.ahk)
83.01kb - 2018-04-19 | classes| -| **1903** | [Class_RichEditDlgs.ahk](classes/Class_RichEditDlgs.ahk)
19.96kb - 2015-04-14 | classes| -| **1904** | [class_scintilla (2).ahk](classes/class_scintilla%20(2).ahk)
36.63kb - 2019-04-07 | classes| -| **1905** | [class_Scintilla.ahk](classes/class_Scintilla.ahk)
32.13kb - 2019-05-03 | classes| -| **1906** | [class_ScintillaG.ahk](classes/class_ScintillaG.ahk)
71.67kb - 2019-07-25 | classes| -| **1907** | [class_scriptobj.ahk](classes/class_scriptobj.ahk)
16.75kb - 2018-06-02 | classes| -| **1908** | [Class_ScrollGUI.ahk](classes/Class_ScrollGUI.ahk)
20.35kb - 2018-07-06 | classes| -| **1909** | [class_selector.ahk](classes/class_selector.ahk)
26.95kb - 2018-02-28 | classes| -| **1910** | [class_selectorActions.ahk](classes/class_selectorActions.ahk)
7.98kb - 2018-02-28 | classes| -| **1911** | [class_selectorRow.ahk](classes/class_selectorRow.ahk)
1.53kb - 2018-02-28 | classes| -| **1912** | [class_SerialPort.ahk](classes/class_SerialPort.ahk)
8.05kb - 2019-11-15 | classes| -| **1913** | [class_SideMenu.ahk](classes/class_SideMenu.ahk)
3.32kb - 2018-12-04 | classes| -| **1914** | [class_SimpleOSD.ahk](classes/class_SimpleOSD.ahk)
3.13kb - 2017-09-18 | classes| -| **1915** | [class_SlideWindows.ahk](classes/class_SlideWindows.ahk)
27.36kb - 2019-01-14 | classes| -| **1916** | [class_Socket.ahk](classes/class_Socket.ahk)
6.55kb - 2017-06-26 | classes| -| **1917** | [class_Soundcard.ahk](classes/class_Soundcard.ahk)
3.36kb - 2019-10-31 | classes| -| **1918** | [class_SpellCorrect.ahk](classes/class_SpellCorrect.ahk)
3.22kb - 2019-10-26 | classes| -| **1919** | [class_SpreadSheet.ahk](classes/class_SpreadSheet.ahk)
57.33kb - 2018-06-02 | classes| -| **1920** | [Class_SQLiteDB (2).ahk](classes/Class_SQLiteDB%20(2).ahk)
49.47kb - 2019-05-03 | classes| -| **1921** | [Class_SQLiteDB.ahk](classes/Class_SQLiteDB.ahk)
44.43kb - 2018-06-24 | classes| -| **1922** | [class_String.ahk](classes/class_String.ahk)
0.42kb - 2018-06-02 | classes| -| **1923** | [class_StringHelper.ahk](classes/class_StringHelper.ahk)
1.01kb - 2019-03-23 | classes| -| **1924** | [class_StringSimilarity.ahk](classes/class_StringSimilarity.ahk)
2.40kb - 2019-10-17 | classes| -| **1925** | [class_StrObj.ahk](classes/class_StrObj.ahk)
15.27kb - 2015-03-20 | classes| -| **1926** | [class_Struct.ahk](classes/class_Struct.ahk)
35.93kb - 2015-03-04 | classes| -| **1927** | [class_Subclass.ahk](classes/class_Subclass.ahk)
1.23kb - 2017-04-07 | classes| -| **1928** | [class_Subprocess.ahk](classes/class_Subprocess.ahk)
5.06kb - 2018-06-02 | classes| -| **1929** | [class_Subtitle.ahk](classes/class_Subtitle.ahk)
58.22kb - 2019-10-29 | classes| -| **1930** | [class_SyntaxTree.ahk](classes/class_SyntaxTree.ahk)
21.25kb - 2018-06-02 | classes| -| **1931** | [class_SystemTime.ahk](classes/class_SystemTime.ahk)
2.45kb - 2016-01-11 | classes| -| **1932** | [class_tableList (2).ahk](classes/class_tableList%20(2).ahk)
8.75kb - 2018-11-21 | classes| -| **1933** | [class_tableList.ahk](classes/class_tableList.ahk)
14.76kb - 2018-02-28 | classes| -| **1934** | [class_tableListMod (2).ahk](classes/class_tableListMod%20(2).ahk)
1.60kb - 2018-11-21 | classes| -| **1935** | [class_tableListMod.ahk](classes/class_tableListMod.ahk)
1.16kb - 2018-02-28 | classes| -| **1936** | [class_taskbarInterface.ahk](classes/class_taskbarInterface.ahk)
71.73kb - 2017-08-03 | classes| -| **1937** | [class_taskbarInterface_v2.ahk](classes/class_taskbarInterface_v2.ahk)
73.30kb - 2018-06-02 | classes| -| **1938** | [class_TaskView.ahk](classes/class_TaskView.ahk)
5.17kb - 2018-08-31 | classes| -| **1939** | [class_Tesseract.ahk](classes/class_Tesseract.ahk)
5.19kb - 2018-11-06 | classes| -| **1940** | [class_TextFader.ahk](classes/class_TextFader.ahk)
2.65kb - 2019-01-24 | classes| -| **1941** | [class_threadFunc.ahk](classes/class_threadFunc.ahk)
2.45kb - 2018-12-17 | classes| -| **1942** | [class_threadFunc_v1.ahk](classes/class_threadFunc_v1.ahk)
3.21kb - 2018-12-17 | classes| -| **1943** | [Class_ThreadInstance.ahk](classes/Class_ThreadInstance.ahk)
9.13kb - 2018-06-20 | classes| -| **1944** | [class_threadMan.ahk](classes/class_threadMan.ahk)
8.72kb - 2018-10-30 | classes| -| **1945** | [class_threefishCrypt.ahk](classes/class_threefishCrypt.ahk)
147.40kb - 2016-08-04 | classes| -| **1946** | [class_Thumbnail.ahk](classes/class_Thumbnail.ahk)
8.62kb - 2017-04-07 | classes| -| **1947** | [class_Toast.ahk](classes/class_Toast.ahk)
3.90kb - 2018-07-29 | classes| -| **1948** | [class_tokelex.ahk](classes/class_tokelex.ahk)
41.48kb - 2018-11-06 | classes| -| **1949** | [class_Toolbar (2).ahk](classes/class_Toolbar%20(2).ahk)
36.89kb - 2019-05-03 | classes| -| **1950** | [Class_Toolbar.ahk](classes/Class_Toolbar.ahk)
63.24kb - 2018-06-02 | classes| -| **1951** | [Class_TransparentListBox.ahk](classes/Class_TransparentListBox.ahk)
21.01kb - 2013-10-05 | classes| -| **1952** | [class_TreeList.ahk](classes/class_TreeList.ahk)
10.67kb - 2018-08-30 | classes| -| **1953** | [Class_Trie.ahk](classes/Class_Trie.ahk)
3.51kb - 2018-12-21 | classes| -| **1954** | [class_tv.ahk](classes/class_tv.ahk)
11.42kb - 2016-03-07 | classes| -| **1955** | [class_Viewport.ahk](classes/class_Viewport.ahk)
8.38kb - 2018-06-02 | classes| -| **1956** | [class_VirtualDesktopAccessor.ahk](classes/class_VirtualDesktopAccessor.ahk)
3.30kb - 2018-01-24 | classes| -| **1957** | [class_WBClientSite.ahk](classes/class_WBClientSite.ahk)
3.11kb - 2018-06-20 | classes| -| **1958** | [class_WBImg.ahk](classes/class_WBImg.ahk)
4.08kb - 2019-11-14 | classes| -| **1959** | [class_WebSocket.ahk](classes/class_WebSocket.ahk)
1.64kb - 2018-01-16 | classes| -| **1960** | [class_Win32.ahk](classes/class_Win32.ahk)
7.00kb - 2018-07-02 | classes| -| **1961** | [class_WinAPI.ahk](classes/class_WinAPI.ahk)
11.90kb - 2019-03-23 | classes| -| **1962** | [class_WinClip.ahk](classes/class_WinClip.ahk)
44.46kb - 2018-01-26 | classes| -| **1963** | [class_WinClipAPI.ahk](classes/class_WinClipAPI.ahk)
8.33kb - 2014-12-28 | classes| -| **1964** | [class_WindowFader.ahk](classes/class_WindowFader.ahk)
1.87kb - 2018-12-19 | classes| -| **1965** | [class_WindowsSettings.ahk](classes/class_WindowsSettings.ahk)
8.09kb - 2019-01-14 | classes| -| **1966** | [class_Window_Ext_Monitor.ahk](classes/class_Window_Ext_Monitor.ahk)
10.96kb - 2018-04-23 | classes| -| **1967** | [Class_WinEvents.ahk](classes/Class_WinEvents.ahk)
1.08kb - 2017-05-05 | classes| -| **1968** | [Class_WinRing0.ahk](classes/Class_WinRing0.ahk)
6.58kb - 2017-03-20 | classes| -| **1969** | [class_WinStructs.ahk](classes/class_WinStructs.ahk)
8.61kb - 2016-08-17 | classes| -| **1970** | [class_WMCommand_and_Notify.ahk](classes/class_WMCommand_and_Notify.ahk)
14.21kb - 2018-07-04 | classes| -| **1971** | [class_WM_Dlg.ahk](classes/class_WM_Dlg.ahk)
57.48kb - 2017-09-18 | classes| -| **1972** | [class_WorkerThread.ahk](classes/class_WorkerThread.ahk)
17.60kb - 2014-12-28 | classes| -| **1973** | [class_Worker_Local.ahk](classes/class_Worker_Local.ahk)
8.29kb - 2012-12-17 | classes| -| **1974** | [class_Worker_Network.ahk](classes/class_Worker_Network.ahk)
0.18kb - 2012-12-17 | classes| -| **1975** | [class_XBOX360.ahk](classes/class_XBOX360.ahk)
12.12kb - 2019-07-05 | classes| -| **1976** | [class_xcall.ahk](classes/class_xcall.ahk)
3.96kb - 2018-12-22 | classes| -| **1977** | [class_xHotkey.ahk](classes/class_xHotkey.ahk)
6.22kb - 2018-05-23 | classes| -| **1978** | [class_xlib.ahk](classes/class_xlib.ahk)
0.24kb - 2018-12-22 | classes| -| **1979** | [Class_xmlfile.ahk](classes/Class_xmlfile.ahk)
4.47kb - 2015-11-12 | classes| -| **1980** | [Class_XmlHelper.ahk](classes/Class_XmlHelper.ahk)
24.76kb - 2017-02-16 | classes| -| **1981** | [class_XNet.ahk](classes/class_XNet.ahk)
14.23kb - 2018-12-08 | classes| -| **1982** | [class_ZeeGrid.ahk](classes/class_ZeeGrid.ahk)
12.47kb - 2019-04-02 | classes| -| **1983** | [class__ini.ahk](classes/class__ini.ahk)
4.73kb - 2019-05-15 | classes| -| **1984** | [ComDispTable.ahk](classes/ComDispTable.ahk)
0.84kb - 2019-03-23 | classes| -| **1985** | [ComVar.ahk](classes/ComVar.ahk)
1.34kb - 2019-03-23 | classes| -| **1986** | [DataBaseAbstract.ahk](classes/DataBaseAbstract.ahk)
6.11kb - 2018-06-02 | classes| -| **1987** | [DataBaseADO.ahk](classes/DataBaseADO.ahk)
3.83kb - 2018-06-02 | classes| -| **1988** | [DataBaseFactory.ahk](classes/DataBaseFactory.ahk)
1.17kb - 2018-06-02 | classes| -| **1989** | [DataBaseMySQL.ahk](classes/DataBaseMySQL.ahk)
6.33kb - 2018-06-02 | classes| -| **1990** | [DataBaseSQLLite.ahk](classes/DataBaseSQLLite.ahk)
9.44kb - 2018-06-02 | classes| -| **1991** | [DBA.ahk](classes/DBA.ahk)
0.41kb - 2017-04-07 | classes| -| **1992** | [Delegate.ahk](classes/Delegate.ahk)
1.22kb - 2017-04-07 | classes| -| **1993** | [RecordSetADO.ahk](classes/RecordSetADO.ahk)
1.91kb - 2015-03-05 | classes| -| **1994** | [RecordSetMySQL.ahk](classes/RecordSetMySQL.ahk)
1.88kb - 2015-03-05 | classes| -| **1995** | [RecordSetSqlLite.ahk](classes/RecordSetSqlLite.ahk)
3.36kb - 2015-03-05 | classes| -| **1996** | [SQL_new.ahk](classes/SQL_new.ahk)
8.31kb - 2015-03-05 | classes| -| **1997** | [Class_PictureButton_v1.ahk](classes/Class_PictureButton-master/lib/Class_PictureButton_v1.ahk)
2.72kb - 2018-11-04 | classes/Class_PictureButton-master/lib| -| **1998** | [Class_PictureButton_v2.ahk](classes/Class_PictureButton-master/lib/Class_PictureButton_v2.ahk)
6.76kb - 2018-11-04 | classes/Class_PictureButton-master/lib| -| **1999** | [class_JavaAccessBridge.ahk](classes/class_Java-Access-Bridge/class_JavaAccessBridge.ahk)
42.20kb - 2017-10-31 | classes/class_Java-Access-Bridge| -| **2000** | [JavaAccessBridge.ahk](classes/class_Java-Access-Bridge/JavaAccessBridge.ahk)
62.94kb - 2017-10-31 | classes/class_Java-Access-Bridge| -| **2001** | [CCF.ahk](classes/COM-Classes-FrameWork/CCF.ahk)
17.50kb - 2012-03-16 | classes/COM-Classes-FrameWork| -| **2002** | [CCFramework.ahk](classes/COM-Classes-FrameWork/CCFramework.ahk)
6.27kb - 2012-03-16 | classes/COM-Classes-FrameWork| -| **2003** | [ImageList Header.ahk](classes/COM-Classes-FrameWork/ImageList%20Header.ahk)
0.65kb - 2012-03-16 | classes/COM-Classes-FrameWork| -| **2004** | [SaveHImage2File.ahk](classes/COM-Classes-FrameWork/SaveHImage2File.ahk)
2.16kb - 2012-03-16 | classes/COM-Classes-FrameWork| -| **2005** | [TaskbarList Header.ahk](classes/COM-Classes-FrameWork/TaskbarList%20Header.ahk)
0.47kb - 2012-03-16 | classes/COM-Classes-FrameWork| -| **2006** | [Type Information Header.ahk](classes/COM-Classes-FrameWork/Type%20Information%20Header.ahk)
1.22kb - 2012-03-16 | classes/COM-Classes-FrameWork| -| **2007** | [UIAutomation Header.ahk](classes/COM-Classes-FrameWork/UIAutomation%20Header.ahk)
0.38kb - 2012-03-16 | classes/COM-Classes-FrameWork| -| **2008** | [_CCF_Error_Handler_.ahk](classes/COM-Classes-FrameWork/_CCF_Error_Handler_.ahk)
0.72kb - 2012-03-16 | classes/COM-Classes-FrameWork| -| **2009** | [CALLCONV.ahk](classes/COM-Classes-FrameWork/Constant Classes/CALLCONV.ahk)
1.01kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2010** | [CF.ahk](classes/COM-Classes-FrameWork/Constant Classes/CF.ahk)
5.75kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2011** | [CLR.ahk](classes/COM-Classes-FrameWork/Constant Classes/CLR.ahk)
0.78kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2012** | [CLSCTX.ahk](classes/COM-Classes-FrameWork/Constant Classes/CLSCTX.ahk)
4.97kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2013** | [DESCKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/DESCKIND.ahk)
0.86kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2014** | [DEVICE_STATE.ahk](classes/COM-Classes-FrameWork/Constant Classes/DEVICE_STATE.ahk)
1.92kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2015** | [DISPATCHF.ahk](classes/COM-Classes-FrameWork/Constant Classes/DISPATCHF.ahk)
1.14kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2016** | [DISPID.ahk](classes/COM-Classes-FrameWork/Constant Classes/DISPID.ahk)
1.83kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2017** | [DVASPECT.ahk](classes/COM-Classes-FrameWork/Constant Classes/DVASPECT.ahk)
1.39kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2018** | [EDataFlow.ahk](classes/COM-Classes-FrameWork/Constant Classes/EDataFlow.ahk)
1.26kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2019** | [ERole.ahk](classes/COM-Classes-FrameWork/Constant Classes/ERole.ahk)
1.00kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2020** | [FILE_ATTRIBUTE.ahk](classes/COM-Classes-FrameWork/Constant Classes/FILE_ATTRIBUTE.ahk)
3.27kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2021** | [FUNCFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/FUNCFLAG.ahk)
2.71kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2022** | [FUNCKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/FUNCKIND.ahk)
1.07kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2023** | [IDC.ahk](classes/COM-Classes-FrameWork/Constant Classes/IDC.ahk)
0.87kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2024** | [IDI.ahk](classes/COM-Classes-FrameWork/Constant Classes/IDI.ahk)
0.74kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2025** | [IDLFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/IDLFLAG.ahk)
0.98kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2026** | [ILC.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILC.ahk)
2.18kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2027** | [ILCF.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILCF.ahk)
0.73kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2028** | [ILD.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILD.ahk)
2.99kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2029** | [ILDI.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILDI.ahk)
0.95kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2030** | [ILFIP.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILFIP.ahk)
0.67kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2031** | [ILGOS.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILGOS.ahk)
0.67kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2032** | [ILIF.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILIF.ahk)
0.78kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2033** | [ILR.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILR.ahk)
1.24kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2034** | [ILS.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILS.ahk)
1.24kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2035** | [IMPLTYPEFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/IMPLTYPEFLAG.ahk)
0.88kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2036** | [INVOKEKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/INVOKEKIND.ahk)
1.05kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2037** | [KDC.ahk](classes/COM-Classes-FrameWork/Constant Classes/KDC.ahk)
0.61kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2038** | [KNOWNFOLDERID.ahk](classes/COM-Classes-FrameWork/Constant Classes/KNOWNFOLDERID.ahk)
21.87kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2039** | [LIBFLAGS.ahk](classes/COM-Classes-FrameWork/Constant Classes/LIBFLAGS.ahk)
1.03kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2040** | [LOCKTYPE.ahk](classes/COM-Classes-FrameWork/Constant Classes/LOCKTYPE.ahk)
1.30kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2041** | [MEMBERID.ahk](classes/COM-Classes-FrameWork/Constant Classes/MEMBERID.ahk)
0.60kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2042** | [OBM.ahk](classes/COM-Classes-FrameWork/Constant Classes/OBM.ahk)
1.39kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2043** | [PARAMFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/PARAMFLAG.ahk)
1.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2044** | [PDOPSTATUS.ahk](classes/COM-Classes-FrameWork/Constant Classes/PDOPSTATUS.ahk)
1.03kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2045** | [PDTIMER.ahk](classes/COM-Classes-FrameWork/Constant Classes/PDTIMER.ahk)
0.82kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2046** | [PICTUREATTRIBUTES.ahk](classes/COM-Classes-FrameWork/Constant Classes/PICTUREATTRIBUTES.ahk)
1.22kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2047** | [PICTYPE.ahk](classes/COM-Classes-FrameWork/Constant Classes/PICTYPE.ahk)
1.74kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2048** | [PMODE.ahk](classes/COM-Classes-FrameWork/Constant Classes/PMODE.ahk)
1.25kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2049** | [PROGDLG.ahk](classes/COM-Classes-FrameWork/Constant Classes/PROGDLG.ahk)
3.11kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2050** | [PSC.ahk](classes/COM-Classes-FrameWork/Constant Classes/PSC.ahk)
0.85kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2051** | [RECO.ahk](classes/COM-Classes-FrameWork/Constant Classes/RECO.ahk)
0.81kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2052** | [REGKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/REGKIND.ahk)
0.66kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2053** | [REO.ahk](classes/COM-Classes-FrameWork/Constant Classes/REO.ahk)
3.73kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2054** | [SFGAO.ahk](classes/COM-Classes-FrameWork/Constant Classes/SFGAO.ahk)
7.48kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2055** | [SICHINT.ahk](classes/COM-Classes-FrameWork/Constant Classes/SICHINT.ahk)
1.20kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2056** | [SIGDN.ahk](classes/COM-Classes-FrameWork/Constant Classes/SIGDN.ahk)
2.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2057** | [SLGP.ahk](classes/COM-Classes-FrameWork/Constant Classes/SLGP.ahk)
1.04kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2058** | [SLR.ahk](classes/COM-Classes-FrameWork/Constant Classes/SLR.ahk)
3.00kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2059** | [SPACTION.ahk](classes/COM-Classes-FrameWork/Constant Classes/SPACTION.ahk)
1.91kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2060** | [STATFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/STATFLAG.ahk)
1.29kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2061** | [STGC.ahk](classes/COM-Classes-FrameWork/Constant Classes/STGC.ahk)
3.71kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2062** | [STGM.ahk](classes/COM-Classes-FrameWork/Constant Classes/STGM.ahk)
8.39kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2063** | [STGMOVE.ahk](classes/COM-Classes-FrameWork/Constant Classes/STGMOVE.ahk)
1.01kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2064** | [STGTY.ahk](classes/COM-Classes-FrameWork/Constant Classes/STGTY.ahk)
1.05kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2065** | [STPFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/STPFLAG.ahk)
2.00kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2066** | [STREAM_SEEK.ahk](classes/COM-Classes-FrameWork/Constant Classes/STREAM_SEEK.ahk)
1.16kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2067** | [SW.ahk](classes/COM-Classes-FrameWork/Constant Classes/SW.ahk)
2.61kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2068** | [SYSKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/SYSKIND.ahk)
1.14kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2069** | [TBPFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/TBPFLAG.ahk)
2.13kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2070** | [THUMBBUTTONFLAGS.ahk](classes/COM-Classes-FrameWork/Constant Classes/THUMBBUTTONFLAGS.ahk)
1.38kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2071** | [THUMBBUTTONMASK.ahk](classes/COM-Classes-FrameWork/Constant Classes/THUMBBUTTONMASK.ahk)
0.93kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2072** | [TYPEFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/TYPEFLAG.ahk)
2.62kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2073** | [TYPEKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/TYPEKIND.ahk)
1.25kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2074** | [VARENUM.ahk](classes/COM-Classes-FrameWork/Constant Classes/VARENUM.ahk)
3.59kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2075** | [VARFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/VARFLAG.ahk)
2.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2076** | [VARKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/VARKIND.ahk)
0.88kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| -| **2077** | [CustomDestinationList.ahk](classes/COM-Classes-FrameWork/CustomDestinationList/CustomDestinationList.ahk)
8.41kb - 2012-03-16 | classes/COM-Classes-FrameWork/CustomDestinationList| -| **2078** | [Dispatch.ahk](classes/COM-Classes-FrameWork/Dispatch/Dispatch.ahk)
4.98kb - 2012-03-16 | classes/COM-Classes-FrameWork/Dispatch| -| **2079** | [EnumShellItems.ahk](classes/COM-Classes-FrameWork/EnumShellItems/EnumShellItems.ahk)
2.70kb - 2012-03-16 | classes/COM-Classes-FrameWork/EnumShellItems| -| **2080** | [EnumSTATSTG.ahk](classes/COM-Classes-FrameWork/EnumSTATSTG/EnumSTATSTG.ahk)
2.61kb - 2012-03-16 | classes/COM-Classes-FrameWork/EnumSTATSTG| -| **2081** | [ImageList.ahk](classes/COM-Classes-FrameWork/ImageList/ImageList.ahk)
17.96kb - 2012-03-16 | classes/COM-Classes-FrameWork/ImageList| -| **2082** | [ImageList2.ahk](classes/COM-Classes-FrameWork/ImageList2/ImageList2.ahk)
6.71kb - 2012-03-16 | classes/COM-Classes-FrameWork/ImageList2| -| **2083** | [MMDevice.ahk](classes/COM-Classes-FrameWork/MMDevice/MMDevice.ahk)
3.56kb - 2012-03-16 | classes/COM-Classes-FrameWork/MMDevice| -| **2084** | [MMDeviceCollection.ahk](classes/COM-Classes-FrameWork/MMDeviceCollection/MMDeviceCollection.ahk)
1.68kb - 2012-03-16 | classes/COM-Classes-FrameWork/MMDeviceCollection| -| **2085** | [MMDeviceEnumerator.ahk](classes/COM-Classes-FrameWork/MMDeviceEnumerator/MMDeviceEnumerator.ahk)
5.12kb - 2012-03-16 | classes/COM-Classes-FrameWork/MMDeviceEnumerator| -| **2086** | [ObjectArray.ahk](classes/COM-Classes-FrameWork/ObjectArray/ObjectArray.ahk)
1.80kb - 2012-03-16 | classes/COM-Classes-FrameWork/ObjectArray| -| **2087** | [ObjectCollection.ahk](classes/COM-Classes-FrameWork/ObjectCollection/ObjectCollection.ahk)
2.22kb - 2012-03-16 | classes/COM-Classes-FrameWork/ObjectCollection| -| **2088** | [OperationsProgressDialog.ahk](classes/COM-Classes-FrameWork/OperationsProgressDialog/OperationsProgressDialog.ahk)
5.78kb - 2012-03-16 | classes/COM-Classes-FrameWork/OperationsProgressDialog| -| **2089** | [Persist.ahk](classes/COM-Classes-FrameWork/Persist/Persist.ahk)
1.28kb - 2012-03-16 | classes/COM-Classes-FrameWork/Persist| -| **2090** | [PersistFile.ahk](classes/COM-Classes-FrameWork/PersistFile/PersistFile.ahk)
3.79kb - 2012-03-16 | classes/COM-Classes-FrameWork/PersistFile| -| **2091** | [Picture.ahk](classes/COM-Classes-FrameWork/Picture/Picture.ahk)
11.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Picture| -| **2092** | [ProgressDialog.ahk](classes/COM-Classes-FrameWork/ProgressDialog/ProgressDialog.ahk)
6.09kb - 2012-03-16 | classes/COM-Classes-FrameWork/ProgressDialog| -| **2093** | [PropertyStore.ahk](classes/COM-Classes-FrameWork/PropertyStore/PropertyStore.ahk)
2.86kb - 2012-03-16 | classes/COM-Classes-FrameWork/PropertyStore| -| **2094** | [PropertyStoreCache.ahk](classes/COM-Classes-FrameWork/PropertyStoreCache/PropertyStoreCache.ahk)
3.47kb - 2012-03-16 | classes/COM-Classes-FrameWork/PropertyStoreCache| -| **2095** | [ProvideClassInfo.ahk](classes/COM-Classes-FrameWork/ProvideClassInfo/ProvideClassInfo.ahk)
1.39kb - 2012-03-16 | classes/COM-Classes-FrameWork/ProvideClassInfo| -| **2096** | [RichEditOLE.ahk](classes/COM-Classes-FrameWork/RichEditOLE/RichEditOLE.ahk)
11.92kb - 2012-03-16 | classes/COM-Classes-FrameWork/RichEditOLE| -| **2097** | [SequentialStream.ahk](classes/COM-Classes-FrameWork/SequentialStream/SequentialStream.ahk)
2.29kb - 2012-03-16 | classes/COM-Classes-FrameWork/SequentialStream| -| **2098** | [ShellItem.ahk](classes/COM-Classes-FrameWork/ShellItem/ShellItem.ahk)
9.04kb - 2012-03-16 | classes/COM-Classes-FrameWork/ShellItem| -| **2099** | [ShellLinkA.ahk](classes/COM-Classes-FrameWork/ShellLinkA/ShellLinkA.ahk)
7.95kb - 2012-03-16 | classes/COM-Classes-FrameWork/ShellLinkA| -| **2100** | [ShellLinkW.ahk](classes/COM-Classes-FrameWork/ShellLinkW/ShellLinkW.ahk)
7.95kb - 2012-03-16 | classes/COM-Classes-FrameWork/ShellLinkW| -| **2101** | [Storage.ahk](classes/COM-Classes-FrameWork/Storage/Storage.ahk)
12.28kb - 2012-03-16 | classes/COM-Classes-FrameWork/Storage| -| **2102** | [Stream.ahk](classes/COM-Classes-FrameWork/Stream/Stream.ahk)
6.41kb - 2012-03-16 | classes/COM-Classes-FrameWork/Stream| -| **2103** | [ARRAYDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/ARRAYDESC.ahk)
4.50kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2104** | [CHARRANGE.ahk](classes/COM-Classes-FrameWork/Structure Classes/CHARRANGE.ahk)
2.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2105** | [CUSTDATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/CUSTDATA.ahk)
3.53kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2106** | [CUSTDATAITEM.ahk](classes/COM-Classes-FrameWork/Structure Classes/CUSTDATAITEM.ahk)
3.23kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2107** | [DISPPARAMS.ahk](classes/COM-Classes-FrameWork/Structure Classes/DISPPARAMS.ahk)
4.60kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2108** | [ELEMDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/ELEMDESC.ahk)
3.44kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2109** | [EXCEPINFO.ahk](classes/COM-Classes-FrameWork/Structure Classes/EXCEPINFO.ahk)
4.15kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2110** | [FILETIME.ahk](classes/COM-Classes-FrameWork/Structure Classes/FILETIME.ahk)
2.93kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2111** | [FUNCDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/FUNCDESC.ahk)
6.95kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2112** | [IDLDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/IDLDESC.ahk)
2.46kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2113** | [IMAGEINFO.ahk](classes/COM-Classes-FrameWork/Structure Classes/IMAGEINFO.ahk)
3.33kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2114** | [IMAGELISTDRAWPARAMS.ahk](classes/COM-Classes-FrameWork/Structure Classes/IMAGELISTDRAWPARAMS.ahk)
8.25kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2115** | [IMAGELISTSTATS.ahk](classes/COM-Classes-FrameWork/Structure Classes/IMAGELISTSTATS.ahk)
2.43kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2116** | [INTERFACEDATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/INTERFACEDATA.ahk)
2.38kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2117** | [METHODDATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/METHODDATA.ahk)
3.49kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2118** | [PARAMDATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/PARAMDATA.ahk)
2.59kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2119** | [PARAMDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/PARAMDESC.ahk)
2.86kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2120** | [PARAMDESCEX.ahk](classes/COM-Classes-FrameWork/Structure Classes/PARAMDESCEX.ahk)
2.97kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2121** | [PICTDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/PICTDESC.ahk)
6.15kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2122** | [POINT.ahk](classes/COM-Classes-FrameWork/Structure Classes/POINT.ahk)
2.22kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2123** | [PROPERTYKEY.ahk](classes/COM-Classes-FrameWork/Structure Classes/PROPERTYKEY.ahk)
2.43kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2124** | [RECT.ahk](classes/COM-Classes-FrameWork/Structure Classes/RECT.ahk)
2.87kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2125** | [REOBJECT.ahk](classes/COM-Classes-FrameWork/Structure Classes/REOBJECT.ahk)
4.79kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2126** | [SAFEARRAYBOUND.ahk](classes/COM-Classes-FrameWork/Structure Classes/SAFEARRAYBOUND.ahk)
2.33kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2127** | [SIZE.ahk](classes/COM-Classes-FrameWork/Structure Classes/SIZE.ahk)
2.28kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2128** | [STATSTG.ahk](classes/COM-Classes-FrameWork/Structure Classes/STATSTG.ahk)
5.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2129** | [StructBase.ahk](classes/COM-Classes-FrameWork/Structure Classes/StructBase.ahk)
5.72kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2130** | [SYSTEMTIME.ahk](classes/COM-Classes-FrameWork/Structure Classes/SYSTEMTIME.ahk)
4.42kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2131** | [THUMBBUTTON.ahk](classes/COM-Classes-FrameWork/Structure Classes/THUMBBUTTON.ahk)
3.69kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2132** | [TLIBATTR.ahk](classes/COM-Classes-FrameWork/Structure Classes/TLIBATTR.ahk)
3.32kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2133** | [TYPEATTR.ahk](classes/COM-Classes-FrameWork/Structure Classes/TYPEATTR.ahk)
5.98kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2134** | [TYPEDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/TYPEDESC.ahk)
3.52kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2135** | [VARDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/VARDESC.ahk)
4.30kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2136** | [WIN32_FIND_DATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/WIN32_FIND_DATA.ahk)
5.04kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| -| **2137** | [TaskbarList.ahk](classes/COM-Classes-FrameWork/TaskbarList/TaskbarList.ahk)
3.60kb - 2012-03-16 | classes/COM-Classes-FrameWork/TaskbarList| -| **2138** | [TaskbarList2.ahk](classes/COM-Classes-FrameWork/TaskbarList2/TaskbarList2.ahk)
1.43kb - 2012-03-16 | classes/COM-Classes-FrameWork/TaskbarList2| -| **2139** | [TaskbarList3.ahk](classes/COM-Classes-FrameWork/TaskbarList3/TaskbarList3.ahk)
10.70kb - 2012-03-16 | classes/COM-Classes-FrameWork/TaskbarList3| -| **2140** | [TaskbarList4.ahk](classes/COM-Classes-FrameWork/TaskbarList4/TaskbarList4.ahk)
1.80kb - 2012-03-16 | classes/COM-Classes-FrameWork/TaskbarList4| -| **2141** | [TypeComp.ahk](classes/COM-Classes-FrameWork/TypeComp/TypeComp.ahk)
4.03kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeComp| -| **2142** | [TypeInfo.ahk](classes/COM-Classes-FrameWork/TypeInfo/TypeInfo.ahk)
15.15kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeInfo| -| **2143** | [TypeInfo2.ahk](classes/COM-Classes-FrameWork/TypeInfo2/TypeInfo2.ahk)
11.12kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeInfo2| -| **2144** | [TypeLib.ahk](classes/COM-Classes-FrameWork/TypeLib/TypeLib.ahk)
7.89kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeLib| -| **2145** | [TypeLib2.ahk](classes/COM-Classes-FrameWork/TypeLib2/TypeLib2.ahk)
3.86kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeLib2| -| **2146** | [UIAutomationBoolCondition.ahk](classes/COM-Classes-FrameWork/UIAutomationBoolCondition/UIAutomationBoolCondition.ahk)
2.04kb - 2012-03-16 | classes/COM-Classes-FrameWork/UIAutomationBoolCondition| -| **2147** | [UIAutomationCondition.ahk](classes/COM-Classes-FrameWork/UIAutomationCondition/UIAutomationCondition.ahk)
1.20kb - 2012-03-16 | classes/COM-Classes-FrameWork/UIAutomationCondition| -| **2148** | [UIAutomationElementArray.ahk](classes/COM-Classes-FrameWork/UIAutomationElementArray/UIAutomationElementArray.ahk)
2.34kb - 2012-03-16 | classes/COM-Classes-FrameWork/UIAutomationElementArray| -| **2149** | [UIAutomationNotCondition.ahk](classes/COM-Classes-FrameWork/UIAutomationNotCondition/UIAutomationNotCondition.ahk)
1.60kb - 2012-03-16 | classes/COM-Classes-FrameWork/UIAutomationNotCondition| -| **2150** | [Unknown.ahk](classes/COM-Classes-FrameWork/Unknown/Unknown.ahk)
4.22kb - 2012-03-16 | classes/COM-Classes-FrameWork/Unknown| -| **2151** | [DbgOut.ahk](more libs/DbgOut.ahk)
1.23kb - 2017-03-07 | more libs| -| **2152** | [Windy.ahk](more libs/Windy.ahk)
1.71kb - 2017-03-07 | more libs| -| **2153** | [ActiveScript.ahk](more libs/ActiveScript/ActiveScript.ahk)
9.81kb - 2018-01-29 | more libs/ActiveScript| -| **2154** | [ComDispatch0.ahk](more libs/ActiveScript/ComDispatch0.ahk)
5.84kb - 2018-01-29 | more libs/ActiveScript| -| **2155** | [JsRT.ahk](more libs/ActiveScript/JsRT.ahk)
3.34kb - 2018-01-29 | more libs/ActiveScript| -| **2156** | [AFC.ahk](more libs/AFC/AFC.ahk)
4.37kb - 2014-07-04 | more libs/AFC| -| **2157** | [CChildWindow.ahk](more libs/AFC/CChildWindow.ahk)
0.44kb - 2014-07-04 | more libs/AFC| -| **2158** | [CControl.ahk](more libs/AFC/CControl.ahk)
5.35kb - 2014-07-04 | more libs/AFC| -| **2159** | [CCtrlActiveX.ahk](more libs/AFC/CCtrlActiveX.ahk)
0.78kb - 2014-07-04 | more libs/AFC| -| **2160** | [CCtrlButton.ahk](more libs/AFC/CCtrlButton.ahk)
0.27kb - 2014-07-04 | more libs/AFC| -| **2161** | [CCtrlCalendar.ahk](more libs/AFC/CCtrlCalendar.ahk)
0.28kb - 2014-07-04 | more libs/AFC| -| **2162** | [CCtrlCheckBox.ahk](more libs/AFC/CCtrlCheckBox.ahk)
0.28kb - 2014-07-04 | more libs/AFC| -| **2163** | [CCtrlComboBox.ahk](more libs/AFC/CCtrlComboBox.ahk)
0.28kb - 2014-07-04 | more libs/AFC| -| **2164** | [CCtrlDateTime.ahk](more libs/AFC/CCtrlDateTime.ahk)
0.29kb - 2014-07-04 | more libs/AFC| -| **2165** | [CCtrlDropDown.ahk](more libs/AFC/CCtrlDropDown.ahk)
0.28kb - 2014-07-04 | more libs/AFC| -| **2166** | [CCtrlEdit.ahk](more libs/AFC/CCtrlEdit.ahk)
0.25kb - 2014-07-04 | more libs/AFC| -| **2167** | [CCtrlGroupBox.ahk](more libs/AFC/CCtrlGroupBox.ahk)
0.28kb - 2014-07-04 | more libs/AFC| -| **2168** | [CCtrlHotkey.ahk](more libs/AFC/CCtrlHotkey.ahk)
0.27kb - 2014-07-04 | more libs/AFC| -| **2169** | [CCtrlImage.ahk](more libs/AFC/CCtrlImage.ahk)
0.52kb - 2014-07-04 | more libs/AFC| -| **2170** | [CCtrlLabel.ahk](more libs/AFC/CCtrlLabel.ahk)
0.26kb - 2014-07-04 | more libs/AFC| -| **2171** | [CCtrlLink.ahk](more libs/AFC/CCtrlLink.ahk)
0.25kb - 2014-07-04 | more libs/AFC| -| **2172** | [CCtrlListBox.ahk](more libs/AFC/CCtrlListBox.ahk)
0.27kb - 2014-07-04 | more libs/AFC| -| **2173** | [CCtrlListView.ahk](more libs/AFC/CCtrlListView.ahk)
14.09kb - 2014-07-04 | more libs/AFC| -| **2174** | [CCtrlProgress.ahk](more libs/AFC/CCtrlProgress.ahk)
0.29kb - 2014-07-04 | more libs/AFC| -| **2175** | [CCtrlRadio.ahk](more libs/AFC/CCtrlRadio.ahk)
0.26kb - 2014-07-04 | more libs/AFC| -| **2176** | [CCtrlSlider.ahk](more libs/AFC/CCtrlSlider.ahk)
0.27kb - 2014-07-04 | more libs/AFC| -| **2177** | [CCtrlStatusBar.ahk](more libs/AFC/CCtrlStatusBar.ahk)
2.83kb - 2014-07-04 | more libs/AFC| -| **2178** | [CCtrlTab.ahk](more libs/AFC/CCtrlTab.ahk)
1.44kb - 2014-07-04 | more libs/AFC| -| **2179** | [CCtrlTreeView.ahk](more libs/AFC/CCtrlTreeView.ahk)
13.12kb - 2014-07-04 | more libs/AFC| -| **2180** | [CCtrlUpDown.ahk](more libs/AFC/CCtrlUpDown.ahk)
0.82kb - 2014-07-04 | more libs/AFC| -| **2181** | [CDefaultBase.ahk](more libs/AFC/CDefaultBase.ahk)
1.58kb - 2014-07-04 | more libs/AFC| -| **2182** | [CImageList.ahk](more libs/AFC/CImageList.ahk)
1.11kb - 2014-07-04 | more libs/AFC| -| **2183** | [CMsgDispatch.ahk](more libs/AFC/CMsgDispatch.ahk)
1.45kb - 2014-07-04 | more libs/AFC| -| **2184** | [CParentWindow.ahk](more libs/AFC/CParentWindow.ahk)
1.79kb - 2014-07-04 | more libs/AFC| -| **2185** | [CPropImpl.ahk](more libs/AFC/CPropImpl.ahk)
0.80kb - 2014-07-04 | more libs/AFC| -| **2186** | [CScrollableWindow.ahk](more libs/AFC/CScrollableWindow.ahk)
4.48kb - 2014-07-04 | more libs/AFC| -| **2187** | [CWindow.ahk](more libs/AFC/CWindow.ahk)
9.53kb - 2014-07-04 | more libs/AFC| -| **2188** | [Events.ahk](more libs/AHK-Object-Oriented-GUIs/gui/Events.ahk)
0.78kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| -| **2189** | [GuiBase.ahk](more libs/AHK-Object-Oriented-GUIs/gui/GuiBase.ahk)
6.95kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| -| **2190** | [ImageList.ahk](more libs/AHK-Object-Oriented-GUIs/gui/ImageList.ahk)
0.49kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| -| **2191** | [IndirectReferenceHolder.ahk](more libs/AHK-Object-Oriented-GUIs/gui/IndirectReferenceHolder.ahk)
1.07kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| -| **2192** | [PositionType.ahk](more libs/AHK-Object-Oriented-GUIs/gui/PositionType.ahk)
1.06kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| -| **2193** | [Brush.ahk](more libs/Canvas/Brush.ahk)
3.49kb - 2014-07-12 | more libs/Canvas| -| **2194** | [Canvas.ahk](more libs/Canvas/Canvas.ahk)
4.91kb - 2018-11-15 | more libs/Canvas| -| **2195** | [Font.ahk](more libs/Canvas/Font.ahk)
7.80kb - 2014-07-12 | more libs/Canvas| -| **2196** | [Pen.ahk](more libs/Canvas/Pen.ahk)
6.30kb - 2014-07-12 | more libs/Canvas| -| **2197** | [Surface.ahk](more libs/Canvas/Surface.ahk)
20.87kb - 2014-07-12 | more libs/Canvas| -| **2198** | [Viewport.ahk](more libs/Canvas/Viewport.ahk)
8.38kb - 2014-07-12 | more libs/Canvas| -| **2199** | [CActiveXControl.ahk](more libs/CGUI/CActiveXControl.ahk)
3.92kb - 2012-10-03 | more libs/CGUI| -| **2200** | [CButtonControl.ahk](more libs/CGUI/CButtonControl.ahk)
1.85kb - 2012-10-03 | more libs/CGUI| -| **2201** | [CCheckBoxControl.ahk](more libs/CGUI/CCheckBoxControl.ahk)
6.25kb - 2012-10-03 | more libs/CGUI| -| **2202** | [CChoiceControl.ahk](more libs/CGUI/CChoiceControl.ahk)
16.02kb - 2012-10-03 | more libs/CGUI| -| **2203** | [CCompoundControl.ahk](more libs/CGUI/CCompoundControl.ahk)
1.57kb - 2012-10-03 | more libs/CGUI| -| **2204** | [CControl.ahk](more libs/CGUI/CControl.ahk)
24.52kb - 2012-10-03 | more libs/CGUI| -| **2205** | [CEditControl.ahk](more libs/CGUI/CEditControl.ahk)
4.95kb - 2012-10-03 | more libs/CGUI| -| **2206** | [CEnumerator.ahk](more libs/CGUI/CEnumerator.ahk)
0.57kb - 2012-10-03 | more libs/CGUI| -| **2207** | [CFileDialog.ahk](more libs/CGUI/CFileDialog.ahk)
2.93kb - 2012-10-03 | more libs/CGUI| -| **2208** | [CFolderDialog.ahk](more libs/CGUI/CFolderDialog.ahk)
1.44kb - 2012-10-03 | more libs/CGUI| -| **2209** | [CGroupBoxControl.ahk](more libs/CGUI/CGroupBoxControl.ahk)
2.19kb - 2012-10-03 | more libs/CGUI| -| **2210** | [CGUI.ahk](more libs/CGUI/CGUI.ahk)
47.62kb - 2012-10-03 | more libs/CGUI| -| **2211** | [CHotkeyControl.ahk](more libs/CGUI/CHotkeyControl.ahk)
1.44kb - 2012-10-03 | more libs/CGUI| -| **2212** | [CLinkControl.ahk](more libs/CGUI/CLinkControl.ahk)
1.65kb - 2012-10-03 | more libs/CGUI| -| **2213** | [CListViewControl.ahk](more libs/CGUI/CListViewControl.ahk)
34.20kb - 2012-10-03 | more libs/CGUI| -| **2214** | [CMenu.ahk](more libs/CGUI/CMenu.ahk)
10.26kb - 2012-10-03 | more libs/CGUI| -| **2215** | [CPathPickerControl.ahk](more libs/CGUI/CPathPickerControl.ahk)
0.71kb - 2012-10-03 | more libs/CGUI| -| **2216** | [CPictureControl.ahk](more libs/CGUI/CPictureControl.ahk)
5.00kb - 2012-10-03 | more libs/CGUI| -| **2217** | [CProgressControl.ahk](more libs/CGUI/CProgressControl.ahk)
2.42kb - 2012-10-03 | more libs/CGUI| -| **2218** | [CSliderControl.ahk](more libs/CGUI/CSliderControl.ahk)
4.38kb - 2012-10-03 | more libs/CGUI| -| **2219** | [CStatusBarControl.ahk](more libs/CGUI/CStatusBarControl.ahk)
9.29kb - 2012-10-03 | more libs/CGUI| -| **2220** | [CTabControl.ahk](more libs/CGUI/CTabControl.ahk)
10.82kb - 2012-10-03 | more libs/CGUI| -| **2221** | [CTextControl.ahk](more libs/CGUI/CTextControl.ahk)
1.67kb - 2012-10-03 | more libs/CGUI| -| **2222** | [CTreeViewControl.ahk](more libs/CGUI/CTreeViewControl.ahk)
18.00kb - 2012-10-03 | more libs/CGUI| -| **2223** | [Delegate.ahk](more libs/CGUI/Delegate.ahk)
1.22kb - 2012-10-03 | more libs/CGUI| -| **2224** | [EventHandler.ahk](more libs/CGUI/EventHandler.ahk)
0.72kb - 2012-10-03 | more libs/CGUI| -| **2225** | [gdip.ahk](more libs/CGUI/gdip.ahk)
83.83kb - 2012-10-03 | more libs/CGUI| -| **2226** | [json.ahk](more libs/CGUI/json.ahk)
8.92kb - 2012-10-03 | more libs/CGUI| -| **2227** | [Parse.ahk](more libs/CGUI/Parse.ahk)
4.09kb - 2012-10-03 | more libs/CGUI| -| **2228** | [Regex.ahk](more libs/CGUI/Regex.ahk)
2.96kb - 2012-10-03 | more libs/CGUI| -| **2229** | [bcrypt_md2.ahk](more libs/CNG/win7/bcrypt_md2.ahk)
2.09kb - 2017-04-11 | more libs/CNG/win7| -| **2230** | [bcrypt_md2_file.ahk](more libs/CNG/win7/bcrypt_md2_file.ahk)
2.16kb - 2017-04-11 | more libs/CNG/win7| -| **2231** | [bcrypt_md2_hmac.ahk](more libs/CNG/win7/bcrypt_md2_hmac.ahk)
2.34kb - 2017-04-11 | more libs/CNG/win7| -| **2232** | [bcrypt_md4.ahk](more libs/CNG/win7/bcrypt_md4.ahk)
2.09kb - 2017-04-11 | more libs/CNG/win7| -| **2233** | [bcrypt_md4_file.ahk](more libs/CNG/win7/bcrypt_md4_file.ahk)
2.16kb - 2017-04-11 | more libs/CNG/win7| -| **2234** | [bcrypt_md4_hmac.ahk](more libs/CNG/win7/bcrypt_md4_hmac.ahk)
2.33kb - 2017-04-11 | more libs/CNG/win7| -| **2235** | [bcrypt_md5.ahk](more libs/CNG/win7/bcrypt_md5.ahk)
2.09kb - 2017-04-11 | more libs/CNG/win7| -| **2236** | [bcrypt_md5_file.ahk](more libs/CNG/win7/bcrypt_md5_file.ahk)
2.16kb - 2017-04-11 | more libs/CNG/win7| -| **2237** | [bcrypt_md5_hmac.ahk](more libs/CNG/win7/bcrypt_md5_hmac.ahk)
2.34kb - 2017-04-11 | more libs/CNG/win7| -| **2238** | [bcrypt_pbkdf2_md2.ahk](more libs/CNG/win7/bcrypt_pbkdf2_md2.ahk)
1.40kb - 2017-04-11 | more libs/CNG/win7| -| **2239** | [bcrypt_pbkdf2_md4.ahk](more libs/CNG/win7/bcrypt_pbkdf2_md4.ahk)
1.40kb - 2017-04-11 | more libs/CNG/win7| -| **2240** | [bcrypt_pbkdf2_md5.ahk](more libs/CNG/win7/bcrypt_pbkdf2_md5.ahk)
1.40kb - 2017-04-11 | more libs/CNG/win7| -| **2241** | [bcrypt_pbkdf2_sha1.ahk](more libs/CNG/win7/bcrypt_pbkdf2_sha1.ahk)
1.41kb - 2017-04-11 | more libs/CNG/win7| -| **2242** | [bcrypt_pbkdf2_sha256.ahk](more libs/CNG/win7/bcrypt_pbkdf2_sha256.ahk)
1.44kb - 2017-04-11 | more libs/CNG/win7| -| **2243** | [bcrypt_pbkdf2_sha384.ahk](more libs/CNG/win7/bcrypt_pbkdf2_sha384.ahk)
1.47kb - 2017-04-11 | more libs/CNG/win7| -| **2244** | [bcrypt_pbkdf2_sha512.ahk](more libs/CNG/win7/bcrypt_pbkdf2_sha512.ahk)
1.50kb - 2017-04-11 | more libs/CNG/win7| -| **2245** | [bcrypt_sha1.ahk](more libs/CNG/win7/bcrypt_sha1.ahk)
2.11kb - 2017-04-11 | more libs/CNG/win7| -| **2246** | [bcrypt_sha1_file.ahk](more libs/CNG/win7/bcrypt_sha1_file.ahk)
2.18kb - 2017-04-11 | more libs/CNG/win7| -| **2247** | [bcrypt_sha1_hmac.ahk](more libs/CNG/win7/bcrypt_sha1_hmac.ahk)
2.35kb - 2017-04-11 | more libs/CNG/win7| -| **2248** | [bcrypt_sha256.ahk](more libs/CNG/win7/bcrypt_sha256.ahk)
2.14kb - 2017-04-11 | more libs/CNG/win7| -| **2249** | [bcrypt_sha256_file.ahk](more libs/CNG/win7/bcrypt_sha256_file.ahk)
2.22kb - 2017-04-11 | more libs/CNG/win7| -| **2250** | [bcrypt_sha256_hmac.ahk](more libs/CNG/win7/bcrypt_sha256_hmac.ahk)
2.38kb - 2017-04-11 | more libs/CNG/win7| -| **2251** | [bcrypt_sha384.ahk](more libs/CNG/win7/bcrypt_sha384.ahk)
2.17kb - 2017-04-11 | more libs/CNG/win7| -| **2252** | [bcrypt_sha384_file.ahk](more libs/CNG/win7/bcrypt_sha384_file.ahk)
2.25kb - 2017-04-11 | more libs/CNG/win7| -| **2253** | [bcrypt_sha384_hmac.ahk](more libs/CNG/win7/bcrypt_sha384_hmac.ahk)
2.41kb - 2017-04-11 | more libs/CNG/win7| -| **2254** | [bcrypt_sha512.ahk](more libs/CNG/win7/bcrypt_sha512.ahk)
2.04kb - 2019-08-21 | more libs/CNG/win7| -| **2255** | [bcrypt_sha512_file.ahk](more libs/CNG/win7/bcrypt_sha512_file.ahk)
2.13kb - 2019-08-21 | more libs/CNG/win7| -| **2256** | [bcrypt_sha512_hmac.ahk](more libs/CNG/win7/bcrypt_sha512_hmac.ahk)
2.44kb - 2017-04-11 | more libs/CNG/win7| -| **2257** | [class_bcrypt.ahk](more libs/CNG/win7/class_bcrypt.ahk)
14.63kb - 2018-08-25 | more libs/CNG/win7| -| **2258** | [bcrypt_md2.ahk](more libs/CNG/win10/bcrypt_md2.ahk)
1.34kb - 2017-04-11 | more libs/CNG/win10| -| **2259** | [bcrypt_md2_file.ahk](more libs/CNG/win10/bcrypt_md2_file.ahk)
1.42kb - 2017-04-11 | more libs/CNG/win10| -| **2260** | [bcrypt_md2_hmac.ahk](more libs/CNG/win10/bcrypt_md2_hmac.ahk)
1.59kb - 2017-04-11 | more libs/CNG/win10| -| **2261** | [bcrypt_md4.ahk](more libs/CNG/win10/bcrypt_md4.ahk)
1.34kb - 2017-04-11 | more libs/CNG/win10| -| **2262** | [bcrypt_md4_file.ahk](more libs/CNG/win10/bcrypt_md4_file.ahk)
1.42kb - 2017-04-11 | more libs/CNG/win10| -| **2263** | [bcrypt_md4_hmac.ahk](more libs/CNG/win10/bcrypt_md4_hmac.ahk)
1.59kb - 2017-04-11 | more libs/CNG/win10| -| **2264** | [bcrypt_md5.ahk](more libs/CNG/win10/bcrypt_md5.ahk)
1.34kb - 2017-04-11 | more libs/CNG/win10| -| **2265** | [bcrypt_md5_file.ahk](more libs/CNG/win10/bcrypt_md5_file.ahk)
1.42kb - 2017-04-11 | more libs/CNG/win10| -| **2266** | [bcrypt_md5_hmac.ahk](more libs/CNG/win10/bcrypt_md5_hmac.ahk)
1.59kb - 2017-04-11 | more libs/CNG/win10| -| **2267** | [bcrypt_sha1.ahk](more libs/CNG/win10/bcrypt_sha1.ahk)
1.36kb - 2017-04-11 | more libs/CNG/win10| -| **2268** | [bcrypt_sha1_file.ahk](more libs/CNG/win10/bcrypt_sha1_file.ahk)
1.43kb - 2017-04-11 | more libs/CNG/win10| -| **2269** | [bcrypt_sha1_hmac.ahk](more libs/CNG/win10/bcrypt_sha1_hmac.ahk)
1.61kb - 2017-04-11 | more libs/CNG/win10| -| **2270** | [bcrypt_sha256.ahk](more libs/CNG/win10/bcrypt_sha256.ahk)
1.39kb - 2017-04-11 | more libs/CNG/win10| -| **2271** | [bcrypt_sha256_file.ahk](more libs/CNG/win10/bcrypt_sha256_file.ahk)
1.47kb - 2017-04-11 | more libs/CNG/win10| -| **2272** | [bcrypt_sha256_hmac.ahk](more libs/CNG/win10/bcrypt_sha256_hmac.ahk)
1.64kb - 2017-04-11 | more libs/CNG/win10| -| **2273** | [bcrypt_sha384.ahk](more libs/CNG/win10/bcrypt_sha384.ahk)
1.42kb - 2017-04-11 | more libs/CNG/win10| -| **2274** | [bcrypt_sha384_file.ahk](more libs/CNG/win10/bcrypt_sha384_file.ahk)
1.50kb - 2017-04-11 | more libs/CNG/win10| -| **2275** | [bcrypt_sha384_hmac.ahk](more libs/CNG/win10/bcrypt_sha384_hmac.ahk)
1.67kb - 2017-04-11 | more libs/CNG/win10| -| **2276** | [bcrypt_sha512.ahk](more libs/CNG/win10/bcrypt_sha512.ahk)
1.46kb - 2017-04-11 | more libs/CNG/win10| -| **2277** | [bcrypt_sha512_file.ahk](more libs/CNG/win10/bcrypt_sha512_file.ahk)
1.53kb - 2017-04-11 | more libs/CNG/win10| -| **2278** | [bcrypt_sha512_hmac.ahk](more libs/CNG/win10/bcrypt_sha512_hmac.ahk)
1.70kb - 2017-04-11 | more libs/CNG/win10| -| **2279** | [class_bcrypt.ahk](more libs/CNG/win10/class_bcrypt.ahk)
11.36kb - 2017-04-11 | more libs/CNG/win10| -| **2280** | [header.ahk](more libs/core_audio_interfaces/header.ahk)
2.64kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2281** | [IAudioEndpointVolume.ahk](more libs/core_audio_interfaces/IAudioEndpointVolume.ahk)
8.33kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2282** | [IAudioSessionControl.ahk](more libs/core_audio_interfaces/IAudioSessionControl.ahk)
2.77kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2283** | [IAudioSessionControl2.ahk](more libs/core_audio_interfaces/IAudioSessionControl2.ahk)
2.34kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2284** | [IAudioSessionEnumerator.ahk](more libs/core_audio_interfaces/IAudioSessionEnumerator.ahk)
1.92kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2285** | [IAudioSessionManager2.ahk](more libs/core_audio_interfaces/IAudioSessionManager2.ahk)
1.78kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2286** | [IMMDevice.ahk](more libs/core_audio_interfaces/IMMDevice.ahk)
4.97kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2287** | [IMMDeviceCollection.ahk](more libs/core_audio_interfaces/IMMDeviceCollection.ahk)
2.17kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2288** | [IMMDeviceEnumerator.ahk](more libs/core_audio_interfaces/IMMDeviceEnumerator.ahk)
5.71kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2289** | [IPropertyStore.ahk](more libs/core_audio_interfaces/IPropertyStore.ahk)
5.49kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2290** | [ISimpleAudioVolume.ahk](more libs/core_audio_interfaces/ISimpleAudioVolume.ahk)
2.52kb - 2018-08-16 | more libs/core_audio_interfaces| -| **2291** | [BarsBox.ahk](more libs/CustomBoxes/BarsBox.ahk)
2.27kb - 2018-12-18 | more libs/CustomBoxes| -| **2292** | [BetterBox.ahk](more libs/CustomBoxes/BetterBox.ahk)
1.66kb - 2018-12-18 | more libs/CustomBoxes| -| **2293** | [ButtonBox.ahk](more libs/CustomBoxes/ButtonBox.ahk)
1.42kb - 2018-12-18 | more libs/CustomBoxes| -| **2294** | [EditBox.ahk](more libs/CustomBoxes/EditBox.ahk)
1.47kb - 2018-12-18 | more libs/CustomBoxes| -| **2295** | [ListBox.ahk](more libs/CustomBoxes/ListBox.ahk)
1.45kb - 2018-12-18 | more libs/CustomBoxes| -| **2296** | [LoginBox.ahk](more libs/CustomBoxes/LoginBox.ahk)
1.30kb - 2018-12-18 | more libs/CustomBoxes| -| **2297** | [LV_Box.ahk](more libs/CustomBoxes/LV_Box.ahk)
2.73kb - 2018-12-18 | more libs/CustomBoxes| -| **2298** | [MonoBox.ahk](more libs/CustomBoxes/MonoBox.ahk)
1.36kb - 2018-12-18 | more libs/CustomBoxes| -| **2299** | [MultiBox.ahk](more libs/CustomBoxes/MultiBox.ahk)
1.38kb - 2018-12-18 | more libs/CustomBoxes| -| **2300** | [NumberBox.ahk](more libs/CustomBoxes/NumberBox.ahk)
2.26kb - 2018-12-18 | more libs/CustomBoxes| -| **2301** | [PassBox.ahk](more libs/CustomBoxes/PassBox.ahk)
1.19kb - 2018-12-18 | more libs/CustomBoxes| -| **2302** | [PictureBox.ahk](more libs/CustomBoxes/PictureBox.ahk)
1.00kb - 2018-12-18 | more libs/CustomBoxes| -| **2303** | [RadioBox.ahk](more libs/CustomBoxes/RadioBox.ahk)
1.71kb - 2018-12-18 | more libs/CustomBoxes| -| **2304** | [RadioBoxEx.ahk](more libs/CustomBoxes/RadioBoxEx.ahk)
1.70kb - 2018-12-18 | more libs/CustomBoxes| -| **2305** | [TreeBox.ahk](more libs/CustomBoxes/TreeBox.ahk)
2.41kb - 2018-12-18 | more libs/CustomBoxes| -| **2306** | [Dictation.ahk](more libs/Dictation-Interface/Dictation.ahk)
8.71kb - 2019-01-27 | more libs/Dictation-Interface| -| **2307** | [d3D.hooks.ahk](more libs/DirectX/AHK Injector/d3D.hooks.ahk)
12.65kb - 2015-09-24 | more libs/DirectX/AHK Injector| -| **2308** | [dinput.hooks.ahk](more libs/DirectX/AHK Injector/dinput.hooks.ahk)
0.14kb - 2015-06-26 | more libs/DirectX/AHK Injector| -| **2309** | [dshow.hooks.ahk](more libs/DirectX/AHK Injector/dshow.hooks.ahk)
0.54kb - 2015-06-26 | more libs/DirectX/AHK Injector| -| **2310** | [dsound.hooks.ahk](more libs/DirectX/AHK Injector/dsound.hooks.ahk)
0.08kb - 2015-08-28 | more libs/DirectX/AHK Injector| -| **2311** | [exlib.ahk](more libs/DirectX/AHK Injector/exlib.ahk)
0.51kb - 2015-09-14 | more libs/DirectX/AHK Injector| -| **2312** | [GDI.hooks.ahk](more libs/DirectX/AHK Injector/GDI.hooks.ahk)
0.95kb - 2015-08-22 | more libs/DirectX/AHK Injector| -| **2313** | [gl.hooks.ahk](more libs/DirectX/AHK Injector/gl.hooks.ahk)
9.67kb - 2015-09-16 | more libs/DirectX/AHK Injector| -| **2314** | [Help.ahk](more libs/DirectX/AHK Injector/Help.ahk)
19.31kb - 2015-09-22 | more libs/DirectX/AHK Injector| -| **2315** | [Injector.ahk](more libs/DirectX/AHK Injector/Injector.ahk)
9.61kb - 2015-09-23 | more libs/DirectX/AHK Injector| -| **2316** | [remote_lib.ahk](more libs/DirectX/AHK Injector/remote_lib.ahk)
0.61kb - 2015-09-17 | more libs/DirectX/AHK Injector| -| **2317** | [d3d.h.ahk](more libs/DirectX/headers/d3d.h.ahk)
32.50kb - 2014-09-14 | more libs/DirectX/headers| -| **2318** | [d3d11.h.ahk](more libs/DirectX/headers/d3d11.h.ahk)
67.78kb - 2015-02-24 | more libs/DirectX/headers| -| **2319** | [d3D9.h.ahk](more libs/DirectX/headers/d3D9.h.ahk)
53.86kb - 2014-09-14 | more libs/DirectX/headers| -| **2320** | [d3D9types.h.ahk](more libs/DirectX/headers/d3D9types.h.ahk)
11.45kb - 2014-09-14 | more libs/DirectX/headers| -| **2321** | [d3dtypes.h.ahk](more libs/DirectX/headers/d3dtypes.h.ahk)
9.49kb - 2015-03-12 | more libs/DirectX/headers| -| **2322** | [d3DX9.ahk](more libs/DirectX/headers/d3DX9.ahk)
2.47kb - 2014-11-10 | more libs/DirectX/headers| -| **2323** | [d3DX9core.h.ahk](more libs/DirectX/headers/d3DX9core.h.ahk)
5.02kb - 2014-11-09 | more libs/DirectX/headers| -| **2324** | [ddraw.h.ahk](more libs/DirectX/headers/ddraw.h.ahk)
75.27kb - 2014-09-14 | more libs/DirectX/headers| -| **2325** | [dinput.h.ahk](more libs/DirectX/headers/dinput.h.ahk)
67.13kb - 2014-09-14 | more libs/DirectX/headers| -| **2326** | [dshow.h.ahk](more libs/DirectX/headers/dshow.h.ahk)
16.29kb - 2015-01-26 | more libs/DirectX/headers| -| **2327** | [dsound.h.ahk](more libs/DirectX/headers/dsound.h.ahk)
34.92kb - 2014-09-14 | more libs/DirectX/headers| -| **2328** | [gl.h.ahk](more libs/DirectX/headers/gl.h.ahk)
44.13kb - 2015-07-03 | more libs/DirectX/headers| -| **2329** | [HeaderParser.ahk](more libs/DirectX/headers/HeaderParser.ahk)
7.69kb - 2015-07-03 | more libs/DirectX/headers| -| **2330** | [parser Directx1-10.ahk](more libs/DirectX/headers/parser%20Directx1-10.ahk)
5.24kb - 2015-07-03 | more libs/DirectX/headers| -| **2331** | [parser Directx11, DirectShow.ahk](more libs/DirectX/headers/parser%20Directx11,%20DirectShow.ahk)
2.74kb - 2015-02-09 | more libs/DirectX/headers| -| **2332** | [_d3D.h.ahk](more libs/DirectX/headers/_d3D.h.ahk)
2.71kb - 2015-08-10 | more libs/DirectX/headers| -| **2333** | [_d3D11.ahk](more libs/DirectX/headers/_d3D11.ahk)
1.28kb - 2015-02-26 | more libs/DirectX/headers| -| **2334** | [_d3D9.h.ahk](more libs/DirectX/headers/_d3D9.h.ahk)
0.83kb - 2015-02-07 | more libs/DirectX/headers| -| **2335** | [_ddraw.h.ahk](more libs/DirectX/headers/_ddraw.h.ahk)
5.79kb - 2015-06-27 | more libs/DirectX/headers| -| **2336** | [_dinput.h.ahk](more libs/DirectX/headers/_dinput.h.ahk)
0.98kb - 2015-06-23 | more libs/DirectX/headers| -| **2337** | [_dshow.ahk](more libs/DirectX/headers/_dshow.ahk)
2.72kb - 2015-01-28 | more libs/DirectX/headers| -| **2338** | [_dsound.h.ahk](more libs/DirectX/headers/_dsound.h.ahk)
0.97kb - 2014-10-15 | more libs/DirectX/headers| -| **2339** | [DDSFile.ahk](more libs/DirectX/Lib/DDSFile.ahk)
8.38kb - 2015-09-03 | more libs/DirectX/Lib| -| **2340** | [DInputEmu.ahk](more libs/DirectX/Lib/DInputEmu.ahk)
3.12kb - 2015-09-03 | more libs/DirectX/Lib| -| **2341** | [FileHooks.ahk](more libs/DirectX/Lib/FileHooks.ahk)
10.81kb - 2015-08-29 | more libs/DirectX/Lib| -| **2342** | [hRes.ahk](more libs/DirectX/Lib/hRes.ahk)
22.31kb - 2015-09-24 | more libs/DirectX/Lib| -| **2343** | [Lib.ahk](more libs/DirectX/Lib/Lib.ahk)
9.13kb - 2015-09-23 | more libs/DirectX/Lib| -| **2344** | [ref.ahk](more libs/DirectX/Lib/ref.ahk)
7.74kb - 2015-08-24 | more libs/DirectX/Lib| -| **2345** | [SurfaceHooks.ahk](more libs/DirectX/Lib/SurfaceHooks.ahk)
4.15kb - 2015-09-07 | more libs/DirectX/Lib| -| **2346** | [TexSwapLib.ahk](more libs/DirectX/Lib/TexSwap/TexSwapLib.ahk)
14.69kb - 2015-09-23 | more libs/DirectX/Lib/TexSwap| -| **2347** | [TexSwapLibGL.ahk](more libs/DirectX/Lib/TexSwap/TexSwapLibGL.ahk)
14.55kb - 2015-09-03 | more libs/DirectX/Lib/TexSwap| -| **2348** | [TextureHooks.ahk](more libs/DirectX/Lib/TexSwap/TextureHooks.ahk)
6.49kb - 2015-08-28 | more libs/DirectX/Lib/TexSwap| -| **2349** | [DoDragDrop.ahk](more libs/DoDragAndDrop/DoDragDrop.ahk)
3.69kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2350** | [IDataObject.ahk](more libs/DoDragAndDrop/IDataObject.ahk)
12.06kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2351** | [IDragSourceHelper.ahk](more libs/DoDragAndDrop/IDragSourceHelper.ahk)
3.71kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2352** | [IDropSource.ahk](more libs/DoDragAndDrop/IDropSource.ahk)
4.22kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2353** | [IDropSource_Sample.ahk](more libs/DoDragAndDrop/IDropSource_Sample.ahk)
0.66kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2354** | [IDropTarget.ahk](more libs/DoDragAndDrop/IDropTarget.ahk)
15.52kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2355** | [IDropTarget_Sample.ahk](more libs/DoDragAndDrop/IDropTarget_Sample.ahk)
6.06kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2356** | [IEnumFORMATETC.ahk](more libs/DoDragAndDrop/IEnumFORMATETC.ahk)
1.66kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2357** | [SHDataObject.ahk](more libs/DoDragAndDrop/SHDataObject.ahk)
4.26kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2358** | [SHDoDragDrop.ahk](more libs/DoDragAndDrop/SHDoDragDrop.ahk)
3.70kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2359** | [SHDoDragDrop_Sample.ahk](more libs/DoDragAndDrop/SHDoDragDrop_Sample.ahk)
4.66kb - 2017-03-19 | more libs/DoDragAndDrop| -| **2360** | [DX9_overlay.ahk](more libs/DX9-Overlay-API/include/ahk/DX9_overlay.ahk)
8.61kb - 2018-05-02 | more libs/DX9-Overlay-API/include/ahk| -| **2361** | [ImportTypeLib.ahk](more libs/ImportTypeLib/ImportTypeLib.ahk)
2.08kb - 2018-12-01 | more libs/ImportTypeLib| -| **2362** | [ITL.ahk](more libs/ImportTypeLib/ITL.ahk)
0.40kb - 2012-04-04 | more libs/ImportTypeLib| -| **2363** | [ITL_AbstractClassConstructor.ahk](more libs/ImportTypeLib/ITL_AbstractClassConstructor.ahk)
0.39kb - 2012-04-04 | more libs/ImportTypeLib| -| **2364** | [ITL_CoClassConstructor.ahk](more libs/ImportTypeLib/ITL_CoClassConstructor.ahk)
1.69kb - 2012-04-04 | more libs/ImportTypeLib| -| **2365** | [ITL_CoClassWrapper.ahk](more libs/ImportTypeLib/ITL_CoClassWrapper.ahk)
3.37kb - 2012-04-04 | more libs/ImportTypeLib| -| **2366** | [ITL_ConstantMemberWrapperBaseClass.ahk](more libs/ImportTypeLib/ITL_ConstantMemberWrapperBaseClass.ahk)
7.59kb - 2012-04-04 | more libs/ImportTypeLib| -| **2367** | [ITL_EnumWrapper.ahk](more libs/ImportTypeLib/ITL_EnumWrapper.ahk)
0.25kb - 2012-04-04 | more libs/ImportTypeLib| -| **2368** | [ITL_InterfaceConstructor.ahk](more libs/ImportTypeLib/ITL_InterfaceConstructor.ahk)
0.68kb - 2012-04-04 | more libs/ImportTypeLib| -| **2369** | [ITL_InterfaceWrapper.ahk](more libs/ImportTypeLib/ITL_InterfaceWrapper.ahk)
15.59kb - 2012-04-04 | more libs/ImportTypeLib| -| **2370** | [ITL_ModuleWrapper.ahk](more libs/ImportTypeLib/ITL_ModuleWrapper.ahk)
1.38kb - 2012-04-04 | more libs/ImportTypeLib| -| **2371** | [ITL_StructureArray.ahk](more libs/ImportTypeLib/ITL_StructureArray.ahk)
2.82kb - 2012-04-04 | more libs/ImportTypeLib| -| **2372** | [ITL_StructureConstructor.ahk](more libs/ImportTypeLib/ITL_StructureConstructor.ahk)
0.96kb - 2012-04-04 | more libs/ImportTypeLib| -| **2373** | [ITL_StructureWrapper.ahk](more libs/ImportTypeLib/ITL_StructureWrapper.ahk)
8.22kb - 2012-04-04 | more libs/ImportTypeLib| -| **2374** | [ITL_TypeLibWrapper.ahk](more libs/ImportTypeLib/ITL_TypeLibWrapper.ahk)
8.46kb - 2012-04-04 | more libs/ImportTypeLib| -| **2375** | [ITL_WrapperBaseClass.ahk](more libs/ImportTypeLib/ITL_WrapperBaseClass.ahk)
1.41kb - 2012-04-04 | more libs/ImportTypeLib| -| **2376** | [Main.ahk](more libs/ImportTypeLib/Main.ahk)
2.02kb - 2012-04-04 | more libs/ImportTypeLib| -| **2377** | [Misc.ahk](more libs/ImportTypeLib/Misc.ahk)
4.31kb - 2012-04-04 | more libs/ImportTypeLib| -| **2378** | [Properties.ahk](more libs/ImportTypeLib/Properties.ahk)
1.03kb - 2012-04-04 | more libs/ImportTypeLib| -| **2379** | [ITL_FAILED.ahk](more libs/ImportTypeLib/Lib/ITL_FAILED.ahk)
0.04kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2380** | [ITL_FormatError.ahk](more libs/ImportTypeLib/Lib/ITL_FormatError.ahk)
0.38kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2381** | [ITL_FormatException.ahk](more libs/ImportTypeLib/Lib/ITL_FormatException.ahk)
0.42kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2382** | [ITL_GUID.ahk](more libs/ImportTypeLib/Lib/ITL_GUID.ahk)
0.53kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2383** | [ITL_HasEnumFlag.ahk](more libs/ImportTypeLib/Lib/ITL_HasEnumFlag.ahk)
0.06kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2384** | [ITL_IsComObject.ahk](more libs/ImportTypeLib/Lib/ITL_IsComObject.ahk)
0.06kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2385** | [ITL_Max.ahk](more libs/ImportTypeLib/Lib/ITL_Max.ahk)
0.19kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2386** | [ITL_Mem.ahk](more libs/ImportTypeLib/Lib/ITL_Mem.ahk)
0.52kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2387** | [ITL_Min.ahk](more libs/ImportTypeLib/Lib/ITL_Min.ahk)
0.19kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2388** | [ITL_ParamToVARIANT.ahk](more libs/ImportTypeLib/Lib/ITL_ParamToVARIANT.ahk)
3.63kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2389** | [ITL_SUCCEEDED.ahk](more libs/ImportTypeLib/Lib/ITL_SUCCEEDED.ahk)
0.05kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2390** | [ITL_VARIANT.ahk](more libs/ImportTypeLib/Lib/ITL_VARIANT.ahk)
2.68kb - 2012-04-04 | more libs/ImportTypeLib/Lib| -| **2391** | [Binary.ahk](more libs/MCode-Ex/src/Binary.ahk)
1.91kb - 2018-07-29 | more libs/MCode-Ex/src| -| **2392** | [CompileResult.ahk](more libs/MCode-Ex/src/CompileResult.ahk)
3.40kb - 2018-07-29 | more libs/MCode-Ex/src| -| **2393** | [MCodeCompileChain.ahk](more libs/MCode-Ex/src/MCodeCompileChain.ahk)
1.54kb - 2018-07-29 | more libs/MCode-Ex/src| -| **2394** | [gcc.ahk](more libs/MCode-Ex/src/Compiler/gcc.ahk)
0.31kb - 2018-07-29 | more libs/MCode-Ex/src/Compiler| -| **2395** | [VSCompiler.ahk](more libs/MCode-Ex/src/Compiler/VSCompiler.ahk)
6.84kb - 2018-07-29 | more libs/MCode-Ex/src/Compiler| -| **2396** | [MinHook.ahk](more libs/MinHook/Lib/MinHook.ahk)
7.06kb - 2019-09-03 | more libs/MinHook/Lib| -| **2397** | [MinHook_Memory.ahk](more libs/MinHook/Lib/MinHook_Memory.ahk)
8.04kb - 2019-09-03 | more libs/MinHook/Lib| -| **2398** | [sizeof.ahk](more libs/MinHook/Lib/sizeof.ahk)
13.00kb - 2018-08-21 | more libs/MinHook/Lib| -| **2399** | [MfArgumentException.ahk](more libs/Mini_Framwork/Framework/src/System//MfArgumentException.ahk)
6.95kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2400** | [MfArgumentNullException.ahk](more libs/Mini_Framwork/Framework/src/System//MfArgumentNullException.ahk)
4.81kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2401** | [MfArgumentOutOfRangeException.ahk](more libs/Mini_Framwork/Framework/src/System//MfArgumentOutOfRangeException.ahk)
7.63kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2402** | [MfArithmeticException.ahk](more libs/Mini_Framwork/Framework/src/System//MfArithmeticException.ahk)
3.03kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2403** | [MfAttribute.ahk](more libs/Mini_Framwork/Framework/src/System//MfAttribute.ahk)
3.31kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2404** | [MfBidiCategory.ahk](more libs/Mini_Framwork/Framework/src/System//MfBidiCategory.ahk)
4.46kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2405** | [MfBigInt.ahk](more libs/Mini_Framwork/Framework/src/System//MfBigInt.ahk)
58.44kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2406** | [MfBigMathInt.ahk](more libs/Mini_Framwork/Framework/src/System//MfBigMathInt.ahk)
69.18kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2407** | [MfBinaryConverter.ahk](more libs/Mini_Framwork/Framework/src/System//MfBinaryConverter.ahk)
70.18kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2408** | [MfBinaryList.ahk](more libs/Mini_Framwork/Framework/src/System//MfBinaryList.ahk)
20.85kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2409** | [MfBool.ahk](more libs/Mini_Framwork/Framework/src/System//MfBool.ahk)
34.13kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2410** | [MfByte.ahk](more libs/Mini_Framwork/Framework/src/System//MfByte.ahk)
42.31kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2411** | [MfByteConverter.ahk](more libs/Mini_Framwork/Framework/src/System//MfByteConverter.ahk)
66.60kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2412** | [MfByteList.ahk](more libs/Mini_Framwork/Framework/src/System//MfByteList.ahk)
20.09kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2413** | [MfCast.ahk](more libs/Mini_Framwork/Framework/src/System//MfCast.ahk)
11.69kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2414** | [MfChar.ahk](more libs/Mini_Framwork/Framework/src/System//MfChar.ahk)
82.20kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2415** | [MfCharList.ahk](more libs/Mini_Framwork/Framework/src/System//MfCharList.ahk)
56.16kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2416** | [MfCharUnicodeInfo.ahk](more libs/Mini_Framwork/Framework/src/System//MfCharUnicodeInfo.ahk)
23.60kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2417** | [MfCollection.ahk](more libs/Mini_Framwork/Framework/src/System//MfCollection.ahk)
1.07kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2418** | [MfCollectionBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfCollectionBase.ahk)
24.86kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2419** | [MfConvert.ahk](more libs/Mini_Framwork/Framework/src/System//MfConvert.ahk)
31.42kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2420** | [MfDateTime.ahk](more libs/Mini_Framwork/Framework/src/System//MfDateTime.ahk)
4.81kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2421** | [MfDictionary.ahk](more libs/Mini_Framwork/Framework/src/System//MfDictionary.ahk)
2.11kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2422** | [MfDictionarybase.ahk](more libs/Mini_Framwork/Framework/src/System//MfDictionarybase.ahk)
22.73kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2423** | [MfDictionaryEntry.ahk](more libs/Mini_Framwork/Framework/src/System//MfDictionaryEntry.ahk)
3.13kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2424** | [MfDigitShapes.ahk](more libs/Mini_Framwork/Framework/src/System//MfDigitShapes.ahk)
6.29kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2425** | [MfDivideByZeroException.ahk](more libs/Mini_Framwork/Framework/src/System//MfDivideByZeroException.ahk)
3.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2426** | [MfEnum.ahk](more libs/Mini_Framwork/Framework/src/System//MfEnum.ahk)
74.01kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2427** | [MfEnumerableBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfEnumerableBase.ahk)
3.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2428** | [MfEnvironment.ahk](more libs/Mini_Framwork/Framework/src/System//MfEnvironment.ahk)
35.08kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2429** | [MfEqualityComparerBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfEqualityComparerBase.ahk)
3.69kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2430** | [MfEqualsOptions.ahk](more libs/Mini_Framwork/Framework/src/System//MfEqualsOptions.ahk)
4.97kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2431** | [MfException.ahk](more libs/Mini_Framwork/Framework/src/System//MfException.ahk)
25.29kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2432** | [MfFlagsAttribute.ahk](more libs/Mini_Framwork/Framework/src/System//MfFlagsAttribute.ahk)
5.04kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2433** | [MfFloat.ahk](more libs/Mini_Framwork/Framework/src/System//MfFloat.ahk)
63.20kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2434** | [MfFormatException.ahk](more libs/Mini_Framwork/Framework/src/System//MfFormatException.ahk)
2.97kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2435** | [MfFormatProvider.ahk](more libs/Mini_Framwork/Framework/src/System//MfFormatProvider.ahk)
2.28kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2436** | [MfFrameWorkOptions.ahk](more libs/Mini_Framwork/Framework/src/System//MfFrameWorkOptions.ahk)
4.62kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2437** | [MfGenericList.ahk](more libs/Mini_Framwork/Framework/src/System//MfGenericList.ahk)
12.68kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2438** | [MfHashTable.ahk](more libs/Mini_Framwork/Framework/src/System//MfHashTable.ahk)
14.60kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2439** | [MfIndexOutOfRangeException.ahk](more libs/Mini_Framwork/Framework/src/System//MfIndexOutOfRangeException.ahk)
3.07kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2440** | [MfInfo.ahk](more libs/Mini_Framwork/Framework/src/System//MfInfo.ahk)
3.65kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2441** | [MfInt16.ahk](more libs/Mini_Framwork/Framework/src/System//MfInt16.ahk)
47.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2442** | [MfInt64.ahk](more libs/Mini_Framwork/Framework/src/System//MfInt64.ahk)
43.19kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2443** | [MfInteger.ahk](more libs/Mini_Framwork/Framework/src/System//MfInteger.ahk)
44.00kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2444** | [MfInvalidCastException.ahk](more libs/Mini_Framwork/Framework/src/System//MfInvalidCastException.ahk)
4.19kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2445** | [MfInvalidOperationException.ahk](more libs/Mini_Framwork/Framework/src/System//MfInvalidOperationException.ahk)
2.99kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2446** | [MfList.ahk](more libs/Mini_Framwork/Framework/src/System//MfList.ahk)
1.39kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2447** | [MfListBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfListBase.ahk)
21.11kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2448** | [MfListVar.ahk](more libs/Mini_Framwork/Framework/src/System//MfListVar.ahk)
16.12kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2449** | [MfMath.ahk](more libs/Mini_Framwork/Framework/src/System//MfMath.ahk)
36.67kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2450** | [MfMemberAccessException.ahk](more libs/Mini_Framwork/Framework/src/System//MfMemberAccessException.ahk)
3.07kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2451** | [MfMemoryString.ahk](more libs/Mini_Framwork/Framework/src/System//MfMemoryString.ahk)
224.66kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2452** | [MfMidpointRounding.ahk](more libs/Mini_Framwork/Framework/src/System//MfMidpointRounding.ahk)
3.51kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2453** | [MfMissingFieldException.ahk](more libs/Mini_Framwork/Framework/src/System//MfMissingFieldException.ahk)
3.31kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2454** | [MfMissingMemberException.ahk](more libs/Mini_Framwork/Framework/src/System//MfMissingMemberException.ahk)
6.13kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2455** | [MfMissingMethodException.ahk](more libs/Mini_Framwork/Framework/src/System//MfMissingMethodException.ahk)
3.31kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2456** | [MfNameObjectCollectionBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfNameObjectCollectionBase.ahk)
5.03kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2457** | [MfNibbleList.ahk](more libs/Mini_Framwork/Framework/src/System//MfNibbleList.ahk)
22.02kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2458** | [MfNibConverter.ahk](more libs/Mini_Framwork/Framework/src/System//MfNibConverter.ahk)
72.37kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2459** | [MfNonMfObjectException.ahk](more libs/Mini_Framwork/Framework/src/System//MfNonMfObjectException.ahk)
4.59kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2460** | [MfNotImplementedException.ahk](more libs/Mini_Framwork/Framework/src/System//MfNotImplementedException.ahk)
2.65kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2461** | [MfNotSupportedException.ahk](more libs/Mini_Framwork/Framework/src/System//MfNotSupportedException.ahk)
2.60kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2462** | [MfNull.ahk](more libs/Mini_Framwork/Framework/src/System//MfNull.ahk)
12.41kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2463** | [MfNullReferenceException.ahk](more libs/Mini_Framwork/Framework/src/System//MfNullReferenceException.ahk)
2.64kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2464** | [MfNumber.ahk](more libs/Mini_Framwork/Framework/src/System//MfNumber.ahk)
37.54kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2465** | [MfNumberFormatInfo.ahk](more libs/Mini_Framwork/Framework/src/System//MfNumberFormatInfo.ahk)
42.06kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2466** | [MfNumberFormatInfoBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfNumberFormatInfoBase.ahk)
3.36kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2467** | [MfNumberStyles.ahk](more libs/Mini_Framwork/Framework/src/System//MfNumberStyles.ahk)
5.01kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2468** | [MfObject.ahk](more libs/Mini_Framwork/Framework/src/System//MfObject.ahk)
35.61kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2469** | [MfOrdinalComparer.ahk](more libs/Mini_Framwork/Framework/src/System//MfOrdinalComparer.ahk)
3.62kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2470** | [MfOutOfMemoryException.ahk](more libs/Mini_Framwork/Framework/src/System//MfOutOfMemoryException.ahk)
2.58kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2471** | [MfOverflowException.ahk](more libs/Mini_Framwork/Framework/src/System//MfOverflowException.ahk)
3.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2472** | [MfParams.ahk](more libs/Mini_Framwork/Framework/src/System//MfParams.ahk)
41.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2473** | [MfPrimitive.ahk](more libs/Mini_Framwork/Framework/src/System//MfPrimitive.ahk)
13.32kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2474** | [MfPrimitives.ahk](more libs/Mini_Framwork/Framework/src/System//MfPrimitives.ahk)
0.78kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2475** | [MfQueue.ahk](more libs/Mini_Framwork/Framework/src/System//MfQueue.ahk)
5.72kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2476** | [MfResourceManager.ahk](more libs/Mini_Framwork/Framework/src/System//MfResourceManager.ahk)
14.73kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2477** | [MfResourceSingletonBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfResourceSingletonBase.ahk)
4.54kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2478** | [MfSByte.ahk](more libs/Mini_Framwork/Framework/src/System//MfSByte.ahk)
43.42kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2479** | [MfSetFormatNumberType.ahk](more libs/Mini_Framwork/Framework/src/System//MfSetFormatNumberType.ahk)
4.13kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2480** | [MfSingletonBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfSingletonBase.ahk)
3.27kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2481** | [MfStack.ahk](more libs/Mini_Framwork/Framework/src/System//MfStack.ahk)
5.84kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2482** | [MfString.ahk](more libs/Mini_Framwork/Framework/src/System//MfString.ahk)
156.61kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2483** | [MfStringComparison.ahk](more libs/Mini_Framwork/Framework/src/System//MfStringComparison.ahk)
4.85kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2484** | [MfStringSplitOptions.ahk](more libs/Mini_Framwork/Framework/src/System//MfStringSplitOptions.ahk)
4.74kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2485** | [MfSystemException.ahk](more libs/Mini_Framwork/Framework/src/System//MfSystemException.ahk)
2.57kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2486** | [MfTimeSpan.ahk](more libs/Mini_Framwork/Framework/src/System//MfTimeSpan.ahk)
68.18kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2487** | [MfType.ahk](more libs/Mini_Framwork/Framework/src/System//MfType.ahk)
32.80kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2488** | [MfTypeCode.ahk](more libs/Mini_Framwork/Framework/src/System//MfTypeCode.ahk)
4.15kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2489** | [MfUint16.ahk](more libs/Mini_Framwork/Framework/src/System//MfUint16.ahk)
43.22kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2490** | [MfUInt32.ahk](more libs/Mini_Framwork/Framework/src/System//MfUInt32.ahk)
44.99kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2491** | [MfUInt64.ahk](more libs/Mini_Framwork/Framework/src/System//MfUInt64.ahk)
77.99kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2492** | [Mfunc.ahk](more libs/Mini_Framwork/Framework/src/System//Mfunc.ahk)
227.12kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2493** | [MfUnicodeCategory.ahk](more libs/Mini_Framwork/Framework/src/System//MfUnicodeCategory.ahk)
14.17kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2494** | [MfValueType.ahk](more libs/Mini_Framwork/Framework/src/System//MfValueType.ahk)
1.56kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2495** | [MfVersion.ahk](more libs/Mini_Framwork/Framework/src/System//MfVersion.ahk)
31.70kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| -| **2496** | [MfDirectoryNotFoundException.ahk](more libs/Mini_Framwork/Framework/src/System/IO/MfDirectoryNotFoundException.ahk)
5.55kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/IO| -| **2497** | [MfDriveNotFoundException.ahk](more libs/Mini_Framwork/Framework/src/System/IO/MfDriveNotFoundException.ahk)
5.76kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/IO| -| **2498** | [MfFileNotFoundException.ahk](more libs/Mini_Framwork/Framework/src/System/IO/MfFileNotFoundException.ahk)
10.16kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/IO| -| **2499** | [MfIOException.ahk](more libs/Mini_Framwork/Framework/src/System/IO/MfIOException.ahk)
5.80kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/IO| -| **2500** | [MfStruct.ahk](more libs/Mini_Framwork/Framework/src/System/MfStruct/MfStruct.ahk)
48.37kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfStruct| -| **2501** | [MfDataBaseFactory.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfDataBaseFactory.ahk)
1.17kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| -| **2502** | [MfDbUcdAbstract.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfDbUcdAbstract.ahk)
15.30kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| -| **2503** | [MfRecordSetSqlLite.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfRecordSetSqlLite.ahk)
4.40kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| -| **2504** | [MfSQLite_L.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfSQLite_L.ahk)
51.74kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| -| **2505** | [MfUcdDb.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfUcdDb.ahk)
12.29kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| -| **2506** | [UCDSqlite.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/UCDSqlite.ahk)
10.86kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| -| **2507** | [MfStringBuilder.ahk](more libs/Mini_Framwork/Framework/src/System/Text/MfStringBuilder.ahk)
110.42kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/Text| -| **2508** | [MfText.ahk](more libs/Mini_Framwork/Framework/src/System/Text/MfText.ahk)
0.74kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/Text| -| **2509** | [audioRouter.ahk](more libs/minilib/audioRouter.ahk)
5.80kb - 2018-06-02 | more libs/minilib| -| **2510** | [borderlessMode.ahk](more libs/minilib/borderlessMode.ahk)
0.21kb - 2018-06-02 | more libs/minilib| -| **2511** | [borderlessMove.ahk](more libs/minilib/borderlessMove.ahk)
0.75kb - 2018-06-02 | more libs/minilib| -| **2512** | [checkSession.ahk](more libs/minilib/checkSession.ahk)
1.97kb - 2018-06-02 | more libs/minilib| -| **2513** | [commaFormat.ahk](more libs/minilib/commaFormat.ahk)
0.24kb - 2018-06-02 | more libs/minilib| -| **2514** | [compileScript.ahk](more libs/minilib/compileScript.ahk)
0.50kb - 2018-06-02 | more libs/minilib| -| **2515** | [CopyDirStructure.ahk](more libs/minilib/CopyDirStructure.ahk)
0.95kb - 2018-06-02 | more libs/minilib| -| **2516** | [CreateOpenWithMenu.ahk](more libs/minilib/CreateOpenWithMenu.ahk)
7.53kb - 2018-06-02 | more libs/minilib| -| **2517** | [dpiOffset.ahk](more libs/minilib/dpiOffset.ahk)
0.09kb - 2018-06-02 | more libs/minilib| -| **2518** | [EmptyMem.ahk](more libs/minilib/EmptyMem.ahk)
0.53kb - 2018-06-02 | more libs/minilib| -| **2519** | [externalIP.ahk](more libs/minilib/externalIP.ahk)
1.05kb - 2018-06-02 | more libs/minilib| -| **2520** | [externalIP_old.ahk](more libs/minilib/externalIP_old.ahk)
0.47kb - 2018-06-02 | more libs/minilib| -| **2521** | [FileCountLines.ahk](more libs/minilib/FileCountLines.ahk)
0.74kb - 2018-06-02 | more libs/minilib| -| **2522** | [FileFindWord.ahk](more libs/minilib/FileFindWord.ahk)
0.83kb - 2018-06-02 | more libs/minilib| -| **2523** | [FileGetVersionInfo.ahk](more libs/minilib/FileGetVersionInfo.ahk)
1.03kb - 2018-06-02 | more libs/minilib| -| **2524** | [FileReadLastLines.ahk](more libs/minilib/FileReadLastLines.ahk)
1.01kb - 2018-06-02 | more libs/minilib| -| **2525** | [fileUnblock.ahk](more libs/minilib/fileUnblock.ahk)
0.09kb - 2018-06-02 | more libs/minilib| -| **2526** | [getCurrentTime.ahk](more libs/minilib/getCurrentTime.ahk)
0.79kb - 2018-06-02 | more libs/minilib| -| **2527** | [getImageSize.ahk](more libs/minilib/getImageSize.ahk)
0.60kb - 2018-06-02 | more libs/minilib| -| **2528** | [getPosFromAngle.ahk](more libs/minilib/getPosFromAngle.ahk)
0.15kb - 2018-06-02 | more libs/minilib| -| **2529** | [getSelected.ahk](more libs/minilib/getSelected.ahk)
0.21kb - 2018-06-02 | more libs/minilib| -| **2530** | [GetStringFileInfo.ahk](more libs/minilib/GetStringFileInfo.ahk)
1.33kb - 2018-06-02 | more libs/minilib| -| **2531** | [getUTCOffset.ahk](more libs/minilib/getUTCOffset.ahk)
0.33kb - 2018-06-02 | more libs/minilib| -| **2532** | [getWinClientSize.ahk](more libs/minilib/getWinClientSize.ahk)
0.18kb - 2018-06-02 | more libs/minilib| -| **2533** | [hour.ahk](more libs/minilib/hour.ahk)
0.04kb - 2018-06-02 | more libs/minilib| -| **2534** | [httpQuery.ahk](more libs/minilib/httpQuery.ahk)
21.94kb - 2018-06-02 | more libs/minilib| -| **2535** | [IEObj.ahk](more libs/minilib/IEObj.ahk)
2.48kb - 2018-06-02 | more libs/minilib| -| **2536** | [ifContains.ahk](more libs/minilib/ifContains.ahk)
0.08kb - 2018-06-02 | more libs/minilib| -| **2537** | [ifIn.ahk](more libs/minilib/ifIn.ahk)
0.07kb - 2018-06-02 | more libs/minilib| -| **2538** | [imageSearchc.ahk](more libs/minilib/imageSearchc.ahk)
0.63kb - 2018-06-02 | more libs/minilib| -| **2539** | [internetConnected.ahk](more libs/minilib/internetConnected.ahk)
0.17kb - 2018-06-02 | more libs/minilib| -| **2540** | [invertCaseChr.ahk](more libs/minilib/invertCaseChr.ahk)
0.08kb - 2018-06-02 | more libs/minilib| -| **2541** | [invertCaseStr.ahk](more libs/minilib/invertCaseStr.ahk)
0.10kb - 2018-06-02 | more libs/minilib| -| **2542** | [is64bitExe.ahk](more libs/minilib/is64bitExe.ahk)
0.09kb - 2018-06-02 | more libs/minilib| -| **2543** | [isAlpha.ahk](more libs/minilib/isAlpha.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2544** | [isAlphaNum.ahk](more libs/minilib/isAlphaNum.ahk)
0.06kb - 2018-06-02 | more libs/minilib| -| **2545** | [isBetween.ahk](more libs/minilib/isBetween.ahk)
0.11kb - 2018-06-02 | more libs/minilib| -| **2546** | [isDigit.ahk](more libs/minilib/isDigit.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2547** | [isFloat.ahk](more libs/minilib/isFloat.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2548** | [isHex.ahk](more libs/minilib/isHex.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2549** | [isInt.ahk](more libs/minilib/isInt.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2550** | [isLower.ahk](more libs/minilib/isLower.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2551** | [isNum.ahk](more libs/minilib/isNum.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2552** | [isSpace.ahk](more libs/minilib/isSpace.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2553** | [isUpper.ahk](more libs/minilib/isUpper.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2554** | [json.ahk](more libs/minilib/json.ahk)
1.64kb - 2018-06-02 | more libs/minilib| -| **2555** | [lanConnected.ahk](more libs/minilib/lanConnected.ahk)
0.13kb - 2018-06-02 | more libs/minilib| -| **2556** | [min.ahk](more libs/minilib/min.ahk)
0.04kb - 2018-06-02 | more libs/minilib| -| **2557** | [mouseOverWin.ahk](more libs/minilib/mouseOverWin.ahk)
0.12kb - 2018-06-02 | more libs/minilib| -| **2558** | [mtoh.ahk](more libs/minilib/mtoh.ahk)
0.04kb - 2018-06-02 | more libs/minilib| -| **2559** | [mtom.ahk](more libs/minilib/mtom.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2560** | [mtos.ahk](more libs/minilib/mtos.ahk)
0.05kb - 2018-06-02 | more libs/minilib| -| **2561** | [muteWindow.ahk](more libs/minilib/muteWindow.ahk)
0.42kb - 2018-06-02 | more libs/minilib| -| **2562** | [nicRestart.ahk](more libs/minilib/nicRestart.ahk)
0.21kb - 2018-06-02 | more libs/minilib| -| **2563** | [nicSetState.ahk](more libs/minilib/nicSetState.ahk)
0.17kb - 2018-06-02 | more libs/minilib| -| **2564** | [processExist.ahk](more libs/minilib/processExist.ahk)
0.07kb - 2018-06-02 | more libs/minilib| -| **2565** | [processPriority.ahk](more libs/minilib/processPriority.ahk)
0.16kb - 2018-06-02 | more libs/minilib| -| **2566** | [rand.ahk](more libs/minilib/rand.ahk)
0.09kb - 2018-06-02 | more libs/minilib| -| **2567** | [randStr.ahk](more libs/minilib/randStr.ahk)
0.89kb - 2018-06-02 | more libs/minilib| -| **2568** | [regExMatchI.ahk](more libs/minilib/regExMatchI.ahk)
0.17kb - 2018-06-02 | more libs/minilib| -| **2569** | [regExReplaceI.ahk](more libs/minilib/regExReplaceI.ahk)
0.21kb - 2018-06-02 | more libs/minilib| -| **2570** | [sec.ahk](more libs/minilib/sec.ahk)
0.04kb - 2018-06-02 | more libs/minilib| -| **2571** | [StdOutStream.ahk](more libs/minilib/StdOutStream.ahk)
2.89kb - 2018-06-02 | more libs/minilib| -| **2572** | [StdOutToVar.ahk](more libs/minilib/StdOutToVar.ahk)
2.63kb - 2018-06-02 | more libs/minilib| -| **2573** | [StealFuncFromLib.ahk](more libs/minilib/StealFuncFromLib.ahk)
7.42kb - 2018-01-21 | more libs/minilib| -| **2574** | [strI.ahk](more libs/minilib/strI.ahk)
0.15kb - 2018-06-02 | more libs/minilib| -| **2575** | [strReplaceI.ahk](more libs/minilib/strReplaceI.ahk)
0.17kb - 2018-06-02 | more libs/minilib| -| **2576** | [strToLower.ahk](more libs/minilib/strToLower.ahk)
0.06kb - 2018-06-02 | more libs/minilib| -| **2577** | [strToUpper.ahk](more libs/minilib/strToUpper.ahk)
0.06kb - 2018-06-02 | more libs/minilib| -| **2578** | [threadMan.ahk](more libs/minilib/threadMan.ahk)
2.64kb - 2018-06-02 | more libs/minilib| -| **2579** | [tool.ahk](more libs/minilib/tool.ahk)
0.15kb - 2018-06-02 | more libs/minilib| -| **2580** | [toolSpeak.ahk](more libs/minilib/toolSpeak.ahk)
0.10kb - 2018-06-02 | more libs/minilib| -| **2581** | [urlDownloadToFile.ahk](more libs/minilib/urlDownloadToFile.ahk)
0.86kb - 2018-06-02 | more libs/minilib| -| **2582** | [urlDownloadToVar.ahk](more libs/minilib/urlDownloadToVar.ahk)
0.40kb - 2018-06-02 | more libs/minilib| -| **2583** | [urlFileGetSize.ahk](more libs/minilib/urlFileGetSize.ahk)
1.57kb - 2018-06-02 | more libs/minilib| -| **2584** | [winInfo.ahk](more libs/minilib/winInfo.ahk)
0.44kb - 2018-06-02 | more libs/minilib| -| **2585** | [ObjCSV.ahk](more libs/ObjCSV/lib/ObjCSV.ahk)
75.73kb - 2017-07-20 | more libs/ObjCSV/lib| -| **2586** | [MainScript.ahk](more libs/RamDisk & CmdReturn/MainScript.ahk)
0.46kb - 2018-08-25 | more libs/RamDisk & CmdReturn| -| **2587** | [RamDrive.ahk](more libs/RamDisk & CmdReturn/RamDrive.ahk)
4.70kb - 2018-08-25 | more libs/RamDisk & CmdReturn| -| **2588** | [cSendInputW.ahk](more libs/SendInput/cSendInputW.ahk)
4.77kb - 2017-07-22 | more libs/SendInput| -| **2589** | [hookSend.ahk](more libs/SendInput/hookSend.ahk)
0.61kb - 2017-07-22 | more libs/SendInput| -| **2590** | [inputUnicode.ahk](more libs/SendInput/inputUnicode.ahk)
2.90kb - 2017-07-22 | more libs/SendInput| -| **2591** | [SendInput.ahk](more libs/SendInput/SendInput.ahk)
5.92kb - 2017-07-22 | more libs/SendInput| -| **2592** | [splashConsole.ahk](more libs/Splash-Gui/splashConsole.ahk)
1.00kb - 2019-02-08 | more libs/Splash-Gui| -| **2593** | [splashDir.ahk](more libs/Splash-Gui/splashDir.ahk)
0.77kb - 2019-02-08 | more libs/Splash-Gui| -| **2594** | [splashImageGUI.ahk](more libs/Splash-Gui/splashImageGUI.ahk)
0.34kb - 2019-02-08 | more libs/Splash-Gui| -| **2595** | [splashList.ahk](more libs/Splash-Gui/splashList.ahk)
1.55kb - 2019-02-08 | more libs/Splash-Gui| -| **2596** | [splashList_AltSubmit.ahk](more libs/Splash-Gui/splashList_AltSubmit.ahk)
1.60kb - 2019-02-08 | more libs/Splash-Gui| -| **2597** | [splashNote.ahk](more libs/Splash-Gui/splashNote.ahk)
1.48kb - 2019-02-08 | more libs/Splash-Gui| -| **2598** | [splashNoteFull.ahk](more libs/Splash-Gui/splashNoteFull.ahk)
1.07kb - 2019-02-08 | more libs/Splash-Gui| -| **2599** | [splashNoteSmall.ahk](more libs/Splash-Gui/splashNoteSmall.ahk)
1.40kb - 2019-02-08 | more libs/Splash-Gui| -| **2600** | [splashNotify.ahk](more libs/Splash-Gui/splashNotify.ahk)
0.76kb - 2019-02-08 | more libs/Splash-Gui| -| **2601** | [splashProgress.ahk](more libs/Splash-Gui/splashProgress.ahk)
0.32kb - 2019-02-08 | more libs/Splash-Gui| -| **2602** | [splashRadio.ahk](more libs/Splash-Gui/splashRadio.ahk)
1.77kb - 2019-02-08 | more libs/Splash-Gui| -| **2603** | [splashRadio2.ahk](more libs/Splash-Gui/splashRadio2.ahk)
1.35kb - 2019-02-08 | more libs/Splash-Gui| -| **2604** | [splashText.ahk](more libs/Splash-Gui/splashText.ahk)
1.92kb - 2019-02-08 | more libs/Splash-Gui| -| **2605** | [splashUI.ahk](more libs/Splash-Gui/splashUI.ahk)
0.23kb - 2019-02-08 | more libs/Splash-Gui| -| **2606** | [Edit.ahk](more libs/TAB/_Functions/Edit.ahk)
117.55kb - 2016-05-09 | more libs/TAB/_Functions| -| **2607** | [Fnt.ahk](more libs/TAB/_Functions/Fnt.ahk)
297.97kb - 2018-01-02 | more libs/TAB/_Functions| -| **2608** | [HSV.ahk](more libs/TAB/_Functions/HSV.ahk)
3.59kb - 2017-04-23 | more libs/TAB/_Functions| -| **2609** | [TAB.ahk](more libs/TAB/_Functions/TAB.ahk)
122.22kb - 2018-06-17 | more libs/TAB/_Functions| -| **2610** | [commonFunctions.ahk](more libs/windows10DesktopManager/commonFunctions.ahk)
1.34kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2611** | [desktopChanger.ahk](more libs/windows10DesktopManager/desktopChanger.ahk)
2.55kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2612** | [desktopManager.ahk](more libs/windows10DesktopManager/desktopManager.ahk)
2.40kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2613** | [desktopMapper.ahk](more libs/windows10DesktopManager/desktopMapper.ahk)
2.40kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2614** | [dllWindowMover.ahk](more libs/windows10DesktopManager/dllWindowMover.ahk)
2.36kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2615** | [hotkeyManager.ahk](more libs/windows10DesktopManager/hotkeyManager.ahk)
1.33kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2616** | [monitorMapper.ahk](more libs/windows10DesktopManager/monitorMapper.ahk)
1.39kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2617** | [virtualDesktopManager.ahk](more libs/windows10DesktopManager/virtualDesktopManager.ahk)
2.69kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2618** | [windowMover.ahk](more libs/windows10DesktopManager/windowMover.ahk)
2.34kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2619** | [windows10.ahk](more libs/windows10DesktopManager/windows10.ahk)
1.15kb - 2018-03-01 | more libs/windows10DesktopManager| -| **2620** | [dllCaller.ahk](more libs/windows10DesktopManager/injection dll/dllCaller.ahk)
3.24kb - 2018-03-01 | more libs/windows10DesktopManager/injection dll| -| **2621** | [Mony.ahk](more libs/Windy/Mony.ahk)
19.06kb - 2017-03-07 | more libs/Windy| -| **2622** | [Mousy.ahk](more libs/Windy/Mousy.ahk)
16.21kb - 2017-03-07 | more libs/Windy| -| **2623** | [MultiMony.ahk](more libs/Windy/MultiMony.ahk)
14.76kb - 2017-03-07 | more libs/Windy| -| **2624** | [Pointy.ahk](more libs/Windy/Pointy.ahk)
3.81kb - 2017-03-07 | more libs/Windy| -| **2625** | [Recty.ahk](more libs/Windy/Recty.ahk)
7.06kb - 2017-03-07 | more libs/Windy| -| **2626** | [WindLy.ahk](more libs/Windy/WindLy.ahk)
11.49kb - 2017-03-07 | more libs/Windy| -| **2627** | [Windy.ahk](more libs/Windy/Windy.ahk)
60.73kb - 2017-03-07 | more libs/Windy| -| **2628** | [AHKLogonMediaKeys.ahk](more libs/WinLogon/AHKLogonMediaKeys.ahk)
23.20kb - 2019-01-24 | more libs/WinLogon| -| **2629** | [Logon.ahk](more libs/WinLogon/Logon.ahk)
36.25kb - 2019-01-24 | more libs/WinLogon| -| **2630** | [LogonDesktop.ahk](more libs/WinLogon/LogonDesktop.ahk)
35.47kb - 2019-01-24 | more libs/WinLogon| -| **2631** | [StartVC.ahk](more libs/WinLogon/StartVC.ahk)
3.31kb - 2019-01-24 | more libs/WinLogon| -| **2632** | [TermWait.ahk](more libs/WinLogon/TermWait.ahk)
6.12kb - 2019-01-24 | more libs/WinLogon| -| **2633** | [xlib.ahk](more libs/xlib/xlib.ahk)
0.24kb - 2018-12-22 | more libs/xlib| -| **2634** | [bases.ahk](more libs/xlib/xinclude/common/bases.ahk)
1.90kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2635** | [callback.ahk](more libs/xlib/xinclude/common/callback.ahk)
6.25kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2636** | [common_includes.ahk](more libs/xlib/xinclude/common/common_includes.ahk)
0.78kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2637** | [constants.ahk](more libs/xlib/xinclude/common/constants.ahk)
0.44kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2638** | [core.ahk](more libs/xlib/xinclude/common/core.ahk)
1.46kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2639** | [createlib.ahk](more libs/xlib/xinclude/common/createlib.ahk)
0.91kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2640** | [error.ahk](more libs/xlib/xinclude/common/error.ahk)
1.96kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2641** | [jit.ahk](more libs/xlib/xinclude/common/jit.ahk)
12.64kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2642** | [malloc.ahk](more libs/xlib/xinclude/common/malloc.ahk)
3.19kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2643** | [misc.ahk](more libs/xlib/xinclude/common/misc.ahk)
2.09kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2644** | [struct.ahk](more libs/xlib/xinclude/common/struct.ahk)
3.63kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2645** | [type.ahk](more libs/xlib/xinclude/common/type.ahk)
6.50kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2646** | [typeArr.ahk](more libs/xlib/xinclude/common/typeArr.ahk)
2.45kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2647** | [ui.ahk](more libs/xlib/xinclude/common/ui.ahk)
2.47kb - 2018-12-22 | more libs/xlib/xinclude/common| -| **2648** | [poolbase.ahk](more libs/xlib/xinclude/pool/poolbase.ahk)
12.16kb - 2018-12-22 | more libs/xlib/xinclude/pool| -| **2649** | [poolCallback.ahk](more libs/xlib/xinclude/pool/poolCallback.ahk)
14.39kb - 2018-12-22 | more libs/xlib/xinclude/pool| -| **2650** | [poolcore.ahk](more libs/xlib/xinclude/pool/poolcore.ahk)
29.28kb - 2018-12-22 | more libs/xlib/xinclude/pool| -| **2651** | [pool_includes.ahk](more libs/xlib/xinclude/pool/pool_includes.ahk)
0.33kb - 2018-12-22 | more libs/xlib/xinclude/pool| -| **2652** | [threadPool.ahk](more libs/xlib/xinclude/pool/threadPool/threadPool.ahk)
8.71kb - 2018-12-22 | more libs/xlib/xinclude/pool/threadPool| -| **2653** | [coreThreads.ahk](more libs/xlib/xinclude/threads/coreThreads.ahk)
5.48kb - 2018-12-22 | more libs/xlib/xinclude/threads| -| **2654** | [threads_includes.ahk](more libs/xlib/xinclude/threads/threads_includes.ahk)
0.22kb - 2018-12-22 | more libs/xlib/xinclude/threads| -| **2655** | [ccore.ahk](more libs/xlib/xinclude/threads/threadHandler/ccore.ahk)
0.39kb - 2018-12-22 | more libs/xlib/xinclude/threads/threadHandler| -| **2656** | [threadHandler.ahk](more libs/xlib/xinclude/threads/threadHandler/threadHandler.ahk)
12.54kb - 2018-12-22 | more libs/xlib/xinclude/threads/threadHandler| -| **2657** | [xDllCall.ahk](more libs/xlib-xdllcall/xDllCall.ahk)
0.55kb - 2019-01-09 | more libs/xlib-xdllcall| -| **2658** | [xcall.ahk](more libs/xlib-xdllcall/lib/xcall.ahk)
3.96kb - 2019-01-09 | more libs/xlib-xdllcall/lib| -| **2659** | [xlib.ahk](more libs/xlib-xdllcall/lib/xlib.ahk)
0.24kb - 2019-01-09 | more libs/xlib-xdllcall/lib| -| **2660** | [Office_2010_Constants_(class).ahk](MSOffice/Office_2010_Constants_(class).ahk)
370.28kb - 2017-12-03 | MSOffice| -| **2661** | [Office_2010_Constants_(global).ahk](MSOffice/Office_2010_Constants_(global).ahk)
255.05kb - 2017-12-03 | MSOffice| -| **2662** | [Office_2010_Constants_(super_global).ahk](MSOffice/Office_2010_Constants_(super_global).ahk)
328.36kb - 2017-12-03 | MSOffice| -| **2663** | [DahkX2.ahk](MSOffice/DocX/DahkX2.ahk)
2.55kb - 2019-04-21 | MSOffice/DocX| +| **0003** | [ACC_more.ahk](lib-a_to_h/ACC_more.ahk)
9.39kb - 2018-06-02 | lib-a_to_h| +| **0004** | [ActiveX.ahk](lib-a_to_h/ActiveX.ahk)
22.69kb - 2019-12-04 | lib-a_to_h| +| **0005** | [AddCommas.ahk](lib-a_to_h/AddCommas.ahk)
1.67kb - 2019-12-04 | lib-a_to_h| +| **0006** | [addFile.ahk](lib-a_to_h/addFile.ahk)
0.27kb - 2018-06-03 | lib-a_to_h| +| **0007** | [AddFileIcon.ahk](lib-a_to_h/AddFileIcon.ahk)
3.98kb - 2012-05-17 | lib-a_to_h| +| **0008** | [AddGraphicButton.ahk](lib-a_to_h/AddGraphicButton.ahk)
3.73kb - 2018-06-02 | lib-a_to_h| +| **0009** | [addScript.ahk](lib-a_to_h/addScript.ahk)
0.28kb - 2018-06-02 | lib-a_to_h| +| **0010** | [AddTooltip.ahk](lib-a_to_h/AddTooltip.ahk)
10.67kb - 2017-04-04 | lib-a_to_h| +| **0011** | [AdjustPrivilege.ahk](lib-a_to_h/AdjustPrivilege.ahk)
2.15kb - 2018-08-16 | lib-a_to_h| +| **0012** | [AdjustTokenPrivileges.ahk](lib-a_to_h/AdjustTokenPrivileges.ahk)
3.61kb - 2018-08-16 | lib-a_to_h| +| **0013** | [Adler32.ahk](lib-a_to_h/Adler32.ahk)
0.19kb - 2018-03-08 | lib-a_to_h| +| **0014** | [ADO.ahk](lib-a_to_h/ADO.ahk)
1.13kb - 2018-06-02 | lib-a_to_h| +| **0015** | [adosql.ahk](lib-a_to_h/adosql.ahk)
7.27kb - 2018-06-02 | lib-a_to_h| +| **0016** | [ADO_ACCESS.ahk](lib-a_to_h/ADO_ACCESS.ahk)
3.09kb - 2016-09-15 | lib-a_to_h| +| **0017** | [Aero_Lib.ahk](lib-a_to_h/Aero_Lib.ahk)
28.78kb - 2018-06-02 | lib-a_to_h| +| **0018** | [Affinity.ahk](lib-a_to_h/Affinity.ahk)
4.98kb - 2018-06-02 | lib-a_to_h| +| **0019** | [agl.ahk](lib-a_to_h/agl.ahk)
275.67kb - 2019-10-11 | lib-a_to_h| +| **0020** | [AHK-LUA-API.ahk](lib-a_to_h/AHK-LUA-API.ahk)
3.98kb - 2019-12-04 | lib-a_to_h| +| **0021** | [AHKA.ahk](lib-a_to_h/AHKA.ahk)
23.25kb - 2018-06-02 | lib-a_to_h| +| **0022** | [AHKColorDialog.ahk](lib-a_to_h/AHKColorDialog.ahk)
14.73kb - 2019-11-09 | lib-a_to_h| +| **0023** | [AhkDllFunctions.ahk](lib-a_to_h/AhkDllFunctions.ahk)
2.05kb - 2016-09-15 | lib-a_to_h| +| **0024** | [AhkDllObject.ahk](lib-a_to_h/AhkDllObject.ahk)
1.09kb - 2018-06-02 | lib-a_to_h| +| **0025** | [AhkDllThread (2).ahk](lib-a_to_h/AhkDllThread%20(2).ahk)
5.01kb - 2014-07-06 | lib-a_to_h| +| **0026** | [AhkDllThread.ahk](lib-a_to_h/AhkDllThread.ahk)
4.98kb - 2018-06-02 | lib-a_to_h| +| **0027** | [ahkExec.ahk](lib-a_to_h/ahkExec.ahk)
0.24kb - 2018-06-02 | lib-a_to_h| +| **0028** | [ahkExecuteLine.ahk](lib-a_to_h/ahkExecuteLine.ahk)
0.32kb - 2018-06-03 | lib-a_to_h| +| **0029** | [AhkExported.ahk](lib-a_to_h/AhkExported.ahk)
0.73kb - 2018-06-02 | lib-a_to_h| +| **0030** | [AHKForumMemoryFunctions.ahk](lib-a_to_h/AHKForumMemoryFunctions.ahk)
3.34kb - 2018-06-02 | lib-a_to_h| +| **0031** | [AHKGroupEX.ahk](lib-a_to_h/AHKGroupEX.ahk)
1.13kb - 2019-05-26 | lib-a_to_h| +| **0032** | [AHKHID.ahk](lib-a_to_h/AHKHID.ahk)
27.55kb - 2011-02-10 | lib-a_to_h| +| **0033** | [ahkhook.ahk](lib-a_to_h/ahkhook.ahk)
15.72kb - 2018-06-02 | lib-a_to_h| +| **0034** | [AHKhttp.ahk](lib-a_to_h/AHKhttp.ahk)
8.64kb - 2017-05-28 | lib-a_to_h| +| **0035** | [AhkMini.ahk](lib-a_to_h/AhkMini.ahk)
0.13kb - 2019-12-04 | lib-a_to_h| +| **0036** | [ahkobj2comarray.ahk](lib-a_to_h/ahkobj2comarray.ahk)
0.86kb - 2019-12-04 | lib-a_to_h| +| **0037** | [AhkSelf.ahk](lib-a_to_h/AhkSelf.ahk)
0.81kb - 2019-12-04 | lib-a_to_h| +| **0038** | [AHKsock.ahk](lib-a_to_h/AHKsock.ahk)
69.45kb - 2019-12-04 | lib-a_to_h| +| **0039** | [ahkstructlib2.ahk](lib-a_to_h/ahkstructlib2.ahk)
8.98kb - 2019-12-04 | lib-a_to_h| +| **0040** | [ahkstructlib2_debug.ahk](lib-a_to_h/ahkstructlib2_debug.ahk)
2.15kb - 2019-12-04 | lib-a_to_h| +| **0041** | [AhkThread.ahk](lib-a_to_h/AhkThread.ahk)
1.59kb - 2018-06-02 | lib-a_to_h| +| **0042** | [AHKType.ahk](lib-a_to_h/AHKType.ahk)
1.54kb - 2019-12-04 | lib-a_to_h| +| **0043** | [AlarmClock.ahk](lib-a_to_h/AlarmClock.ahk)
1.11kb - 2019-12-18 | lib-a_to_h| +| **0044** | [align-columns.ahk](lib-a_to_h/align-columns.ahk)
1.60kb - 2020-01-03 | lib-a_to_h| +| **0045** | [Align.ahk](lib-a_to_h/Align.ahk)
4.60kb - 2019-12-04 | lib-a_to_h| +| **0046** | [AlphaSortEx.ahk](lib-a_to_h/AlphaSortEx.ahk)
0.65kb - 2019-12-04 | lib-a_to_h| +| **0047** | [AlreadyRunning.ahk](lib-a_to_h/AlreadyRunning.ahk)
3.06kb - 2019-12-04 | lib-a_to_h| +| **0048** | [AltTab_window_list.ahk](lib-a_to_h/AltTab_window_list.ahk)
1.44kb - 2018-05-05 | lib-a_to_h| +| **0049** | [Anchor.ahk](lib-a_to_h/Anchor.ahk)
3.25kb - 2019-12-04 | lib-a_to_h| +| **0050** | [AnchorL.ahk](lib-a_to_h/AnchorL.ahk)
3.37kb - 2019-12-04 | lib-a_to_h| +| **0051** | [AniGif.ahk](lib-a_to_h/AniGif.ahk)
5.22kb - 2018-06-02 | lib-a_to_h| +| **0052** | [Animated_Controls.ahk](lib-a_to_h/Animated_Controls.ahk)
10.24kb - 2019-12-04 | lib-a_to_h| +| **0053** | [API_Draw.ahk](lib-a_to_h/API_Draw.ahk)
14.82kb - 2019-12-04 | lib-a_to_h| +| **0054** | [API_GetWindowInfo.ahk](lib-a_to_h/API_GetWindowInfo.ahk)
2.88kb - 2019-12-04 | lib-a_to_h| +| **0055** | [API_Menu.ahk](lib-a_to_h/API_Menu.ahk)
8.36kb - 2019-12-04 | lib-a_to_h| +| **0056** | [AppBar.ahk](lib-a_to_h/AppBar.ahk)
11.52kb - 2019-12-04 | lib-a_to_h| +| **0057** | [ApplicationFramework.ahk](lib-a_to_h/ApplicationFramework.ahk)
7.06kb - 2019-12-04 | lib-a_to_h| +| **0058** | [ArchLogger.ahk](lib-a_to_h/ArchLogger.ahk)
0.59kb - 2019-12-04 | lib-a_to_h| +| **0059** | [Arduino.ahk](lib-a_to_h/Arduino.ahk)
1.39kb - 2019-12-04 | lib-a_to_h| +| **0060** | [argp.ahk](lib-a_to_h/argp.ahk)
36.66kb - 2019-12-04 | lib-a_to_h| +| **0061** | [Args.ahk](lib-a_to_h/Args.ahk)
7.00kb - 2012-02-26 | lib-a_to_h| +| **0062** | [Array Extensions.ahk](lib-a_to_h/Array%20Extensions.ahk)
11.07kb - 2019-12-04 | lib-a_to_h| +| **0063** | [Array.ahk](lib-a_to_h/Array.ahk)
3.11kb - 2019-12-04 | lib-a_to_h| +| **0064** | [ArrayObjToBitmap.ahk](lib-a_to_h/ArrayObjToBitmap.ahk)
1.61kb - 2018-03-08 | lib-a_to_h| +| **0065** | [array_.ahk](lib-a_to_h/array_.ahk)
10.29kb - 2019-12-04 | lib-a_to_h| +| **0066** | [Array_data.ahk](lib-a_to_h/Array_data.ahk)
5.48kb - 2019-12-04 | lib-a_to_h| +| **0067** | [Array_Gui_ext.ahk](lib-a_to_h/Array_Gui_ext.ahk)
5.56kb - 2018-12-21 | lib-a_to_h| +| **0068** | [array_playground.ahk](lib-a_to_h/array_playground.ahk)
3.88kb - 2019-12-04 | lib-a_to_h| +| **0069** | [AssociatedProgram.ahk](lib-a_to_h/AssociatedProgram.ahk)
3.73kb - 2019-12-04 | lib-a_to_h| +| **0070** | [AsyncHttp.ahk](lib-a_to_h/AsyncHttp.ahk)
1.95kb - 2019-12-04 | lib-a_to_h| +| **0071** | [AtachGui_to_other_window.ahk](lib-a_to_h/AtachGui_to_other_window.ahk)
3.85kb - 2019-12-04 | lib-a_to_h| +| **0072** | [ATan2.ahk](lib-a_to_h/ATan2.ahk)
0.24kb - 2018-03-08 | lib-a_to_h| +| **0073** | [Atl.ahk](lib-a_to_h/Atl.ahk)
1.36kb - 2019-12-04 | lib-a_to_h| +| **0074** | [Attach.ahk](lib-a_to_h/Attach.ahk)
9.41kb - 2019-12-04 | lib-a_to_h| +| **0075** | [AttachToolWindow.ahk](lib-a_to_h/AttachToolWindow.ahk)
1.97kb - 2019-12-04 | lib-a_to_h| +| **0076** | [Auth.ahk](lib-a_to_h/Auth.ahk)
13.95kb - 2019-12-04 | lib-a_to_h| +| **0077** | [Autocomplete.ahk](lib-a_to_h/Autocomplete.ahk)
5.94kb - 2019-12-04 | lib-a_to_h| +| **0078** | [AutoReload.ahk](lib-a_to_h/AutoReload.ahk)
0.34kb - 2019-12-04 | lib-a_to_h| +| **0079** | [Autoupdate.ahk](lib-a_to_h/Autoupdate.ahk)
0.67kb - 2019-12-04 | lib-a_to_h| +| **0080** | [AutoUpdateAHKv1.ahk](lib-a_to_h/AutoUpdateAHKv1.ahk)
1.36kb - 2019-12-04 | lib-a_to_h| +| **0081** | [AutoUpdateAHKv2a.ahk](lib-a_to_h/AutoUpdateAHKv2a.ahk)
2.11kb - 2019-12-04 | lib-a_to_h| +| **0082** | [AutoXYWH.ahk](lib-a_to_h/AutoXYWH.ahk)
2.13kb - 2018-06-02 | lib-a_to_h| +| **0083** | [AuxLib.ahk](lib-a_to_h/AuxLib.ahk)
7.21kb - 2018-09-17 | lib-a_to_h| +| **0084** | [Average.ahk](lib-a_to_h/Average.ahk)
0.38kb - 2018-03-08 | lib-a_to_h| +| **0085** | [AveragingFunctions.ahk](lib-a_to_h/AveragingFunctions.ahk)
1.51kb - 2019-12-04 | lib-a_to_h| +| **0086** | [AVICAP.ahk](lib-a_to_h/AVICAP.ahk)
1.21kb - 2019-12-04 | lib-a_to_h| +| **0087** | [AxC.ahk](lib-a_to_h/AxC.ahk)
13.34kb - 2019-12-04 | lib-a_to_h| +| **0088** | [A_caret.ahk](lib-a_to_h/A_caret.ahk)
0.97kb - 2019-12-04 | lib-a_to_h| +| **0089** | [BalloonTip.ahk](lib-a_to_h/BalloonTip.ahk)
8.73kb - 2019-12-04 | lib-a_to_h| +| **0090** | [Bar.ahk](lib-a_to_h/Bar.ahk)
18.46kb - 2019-12-04 | lib-a_to_h| +| **0091** | [BARCODER.ahk](lib-a_to_h/BARCODER.ahk)
117.60kb - 2018-06-02 | lib-a_to_h| +| **0092** | [Base.ahk](lib-a_to_h/Base.ahk)
6.96kb - 2019-12-04 | lib-a_to_h| +| **0093** | [Base32.ahk](lib-a_to_h/Base32.ahk)
1.42kb - 2018-03-08 | lib-a_to_h| +| **0094** | [Base64.ahk](lib-a_to_h/Base64.ahk)
6.46kb - 2018-03-08 | lib-a_to_h| +| **0095** | [baseConvert.ahk](lib-a_to_h/baseConvert.ahk)
11.93kb - 2019-12-04 | lib-a_to_h| +| **0096** | [Between.ahk](lib-a_to_h/Between.ahk)
0.55kb - 2018-03-08 | lib-a_to_h| +| **0097** | [Bin.ahk](lib-a_to_h/Bin.ahk)
12.26kb - 2019-12-04 | lib-a_to_h| +| **0098** | [Bin2Dec.ahk](lib-a_to_h/Bin2Dec.ahk)
0.24kb - 2019-12-04 | lib-a_to_h| +| **0099** | [BinArr.ahk](lib-a_to_h/BinArr.ahk)
1.26kb - 2019-12-04 | lib-a_to_h| +| **0100** | [BinaryEncodingDecoding.ahk](lib-a_to_h/BinaryEncodingDecoding.ahk)
3.08kb - 2019-12-04 | lib-a_to_h| +| **0101** | [BinGet.ahk](lib-a_to_h/BinGet.ahk)
5.73kb - 2019-12-04 | lib-a_to_h| +| **0102** | [bink.ahk](lib-a_to_h/bink.ahk)
6.71kb - 2018-06-02 | lib-a_to_h| +| **0103** | [BinReadWrite.ahk](lib-a_to_h/BinReadWrite.ahk)
7.44kb - 2019-12-04 | lib-a_to_h| +| **0104** | [BinRun.ahk](lib-a_to_h/BinRun.ahk)
11.89kb - 2019-12-04 | lib-a_to_h| +| **0105** | [binSearch.ahk](lib-a_to_h/binSearch.ahk)
0.20kb - 2018-10-30 | lib-a_to_h| +| **0106** | [BinToHex.ahk](lib-a_to_h/BinToHex.ahk)
0.52kb - 2018-06-02 | lib-a_to_h| +| **0107** | [Bitmap.ahk](lib-a_to_h/Bitmap.ahk)
11.67kb - 2018-03-08 | lib-a_to_h| +| **0108** | [BitmapGradient.ahk](lib-a_to_h/BitmapGradient.ahk)
4.42kb - 2019-12-04 | lib-a_to_h| +| **0109** | [BlockSysMenu.ahk](lib-a_to_h/BlockSysMenu.ahk)
0.45kb - 2019-12-04 | lib-a_to_h| +| **0110** | [bmpread.ahk](lib-a_to_h/bmpread.ahk)
4.76kb - 2019-12-04 | lib-a_to_h| +| **0111** | [borderlessMode.ahk](lib-a_to_h/borderlessMode.ahk)
0.21kb - 2018-10-30 | lib-a_to_h| +| **0112** | [borderlessMove.ahk](lib-a_to_h/borderlessMove.ahk)
0.75kb - 2018-10-30 | lib-a_to_h| +| **0113** | [BoxMuller.ahk](lib-a_to_h/BoxMuller.ahk)
0.31kb - 2019-05-26 | lib-a_to_h| +| **0114** | [BRA.ahk](lib-a_to_h/BRA.ahk)
15.99kb - 2019-12-04 | lib-a_to_h| +| **0115** | [BrowserEmulation.ahk](lib-a_to_h/BrowserEmulation.ahk)
2.43kb - 2019-12-04 | lib-a_to_h| +| **0116** | [bubbleSort2DArray.AHK](lib-a_to_h/bubbleSort2DArray.AHK)
1.80kb - 2019-12-04 | lib-a_to_h| +| **0117** | [buf.ahk](lib-a_to_h/buf.ahk)
43.54kb - 2017-10-07 | lib-a_to_h| +| **0118** | [BufferInput.AHK](lib-a_to_h/BufferInput.AHK)
5.39kb - 2019-12-04 | lib-a_to_h| +| **0119** | [BuildUserAhkApi.ahk](lib-a_to_h/BuildUserAhkApi.ahk)
3.56kb - 2019-12-04 | lib-a_to_h| +| **0120** | [byteWord.ahk](lib-a_to_h/byteWord.ahk)
0.27kb - 2018-07-29 | lib-a_to_h| +| **0121** | [CalcChecksum.ahk](lib-a_to_h/CalcChecksum.ahk)
2.83kb - 2018-06-02 | lib-a_to_h| +| **0122** | [CalculateDistance.ahk](lib-a_to_h/CalculateDistance.ahk)
0.09kb - 2018-06-02 | lib-a_to_h| +| **0123** | [Calenderfunctions.ahk](lib-a_to_h/Calenderfunctions.ahk)
27.52kb - 2018-06-02 | lib-a_to_h| +| **0124** | [callbackcreate.ahk](lib-a_to_h/callbackcreate.ahk)
4.31kb - 2019-01-06 | lib-a_to_h| +| **0125** | [capitalizeString.ahk](lib-a_to_h/capitalizeString.ahk)
0.29kb - 2018-06-09 | lib-a_to_h| +| **0126** | [CaseChange.ahk](lib-a_to_h/CaseChange.ahk)
0.63kb - 2018-07-29 | lib-a_to_h| +| **0127** | [CatchHandler.ahk](lib-a_to_h/CatchHandler.ahk)
1.43kb - 2018-05-05 | lib-a_to_h| +| **0128** | [CB.ahk](lib-a_to_h/CB.ahk)
5.54kb - 2019-12-04 | lib-a_to_h| +| **0129** | [CColor.ahk](lib-a_to_h/CColor.ahk)
4.53kb - 2019-12-04 | lib-a_to_h| +| **0130** | [cControls.ahk](lib-a_to_h/cControls.ahk)
23.31kb - 2019-12-04 | lib-a_to_h| +| **0131** | [cdomessage.ahk](lib-a_to_h/cdomessage.ahk)
2.29kb - 2019-12-04 | lib-a_to_h| +| **0132** | [Center MsgBox To Active Window.ahk](lib-a_to_h/Center%20MsgBox%20To%20Active%20Window.ahk)
1.27kb - 2019-12-04 | lib-a_to_h| +| **0133** | [CenterWindow (2).ahk](lib-a_to_h/CenterWindow%20(2).ahk)
1.25kb - 2019-12-04 | lib-a_to_h| +| **0134** | [CenterWindow.ahk](lib-a_to_h/CenterWindow.ahk)
2.20kb - 2018-03-08 | lib-a_to_h| +| **0135** | [Cert.ahk](lib-a_to_h/Cert.ahk)
15.55kb - 2019-12-04 | lib-a_to_h| +| **0136** | [cFTP.ahk](lib-a_to_h/cFTP.ahk)
35.33kb - 2019-12-04 | lib-a_to_h| +| **0137** | [ChangeCase.ahk](lib-a_to_h/ChangeCase.ahk)
0.56kb - 2019-12-04 | lib-a_to_h| +| **0138** | [ChangeProcessName.ahk](lib-a_to_h/ChangeProcessName.ahk)
0.79kb - 2014-06-10 | lib-a_to_h| +| **0139** | [changeScreenSize.ahk](lib-a_to_h/changeScreenSize.ahk)
7.81kb - 2020-01-02 | lib-a_to_h| +| **0140** | [CharWordPos.ahk](lib-a_to_h/CharWordPos.ahk)
2.97kb - 2016-09-15 | lib-a_to_h| +| **0141** | [chatGUI.ahk](lib-a_to_h/chatGUI.ahk)
26.24kb - 2018-06-02 | lib-a_to_h| +| **0142** | [CheckForUpdates.ahk](lib-a_to_h/CheckForUpdates.ahk)
0.74kb - 2019-12-04 | lib-a_to_h| +| **0143** | [checkSession.ahk](lib-a_to_h/checkSession.ahk)
1.97kb - 2018-10-30 | lib-a_to_h| +| **0144** | [CheckUpdate.ahk](lib-a_to_h/CheckUpdate.ahk)
6.70kb - 2019-12-04 | lib-a_to_h| +| **0145** | [Check_ForUpdate.ahk](lib-a_to_h/Check_ForUpdate.ahk)
7.21kb - 2019-12-04 | lib-a_to_h| +| **0146** | [ChooseColor (2).ahk](lib-a_to_h/ChooseColor%20(2).ahk)
3.99kb - 2018-03-08 | lib-a_to_h| +| **0147** | [ChooseColor.ahk](lib-a_to_h/ChooseColor.ahk)
5.37kb - 2018-11-14 | lib-a_to_h| +| **0148** | [ChooseFile.ahk](lib-a_to_h/ChooseFile.ahk)
7.41kb - 2018-03-08 | lib-a_to_h| +| **0149** | [ChooseFolder.ahk](lib-a_to_h/ChooseFolder.ahk)
7.42kb - 2018-06-20 | lib-a_to_h| +| **0150** | [ChooseFont.ahk](lib-a_to_h/ChooseFont.ahk)
3.86kb - 2018-06-20 | lib-a_to_h| +| **0151** | [ChooseIcon.ahk](lib-a_to_h/ChooseIcon.ahk)
0.95kb - 2018-06-20 | lib-a_to_h| +| **0152** | [ChooseImage.ahk](lib-a_to_h/ChooseImage.ahk)
9.94kb - 2018-03-08 | lib-a_to_h| +| **0153** | [cleanClipboard.ahk](lib-a_to_h/cleanClipboard.ahk)
0.51kb - 2019-02-08 | lib-a_to_h| +| **0154** | [ClearArray.ahk](lib-a_to_h/ClearArray.ahk)
1.83kb - 2016-02-05 | lib-a_to_h| +| **0155** | [Clip.ahk](lib-a_to_h/Clip.ahk)
1.28kb - 2018-04-23 | lib-a_to_h| +| **0156** | [Clip2Object.ahk](lib-a_to_h/Clip2Object.ahk)
1.05kb - 2018-06-02 | lib-a_to_h| +| **0157** | [Clipboard Manager.ahk](lib-a_to_h/Clipboard%20Manager.ahk)
2.40kb - 2018-06-02 | lib-a_to_h| +| **0158** | [clipboard.ahk](lib-a_to_h/clipboard.ahk)
3.33kb - 2019-05-04 | lib-a_to_h| +| **0159** | [ClipboardHelpers.ahk](lib-a_to_h/ClipboardHelpers.ahk)
0.57kb - 2017-10-23 | lib-a_to_h| +| **0160** | [clipHTML.ahk](lib-a_to_h/clipHTML.ahk)
0.09kb - 2019-02-08 | lib-a_to_h| +| **0161** | [ClipStore.ahk](lib-a_to_h/ClipStore.ahk)
3.92kb - 2018-12-02 | lib-a_to_h| +| **0162** | [CloseAllAhkExceptOne.ahk](lib-a_to_h/CloseAllAhkExceptOne.ahk)
0.91kb - 2016-09-15 | lib-a_to_h| +| **0163** | [CloseHandle.ahk](lib-a_to_h/CloseHandle.ahk)
0.43kb - 2018-03-08 | lib-a_to_h| +| **0164** | [CloseWindow.ahk](lib-a_to_h/CloseWindow.ahk)
2.95kb - 2018-03-08 | lib-a_to_h| +| **0165** | [CLR (2).ahk](lib-a_to_h/CLR%20(2).ahk)
5.20kb - 2018-08-18 | lib-a_to_h| +| **0166** | [CLR.ahk](lib-a_to_h/CLR.ahk)
10.17kb - 2018-06-02 | lib-a_to_h| +| **0167** | [cmd.ahk](lib-a_to_h/cmd.ahk)
3.83kb - 2018-06-09 | lib-a_to_h| +| **0168** | [CmdPromptRun.ahk](lib-a_to_h/CmdPromptRun.ahk)
1.36kb - 2018-12-02 | lib-a_to_h| +| **0169** | [CMDret.ahk](lib-a_to_h/CMDret.ahk)
4.43kb - 2018-06-02 | lib-a_to_h| +| **0170** | [CMDret_RunReturn.ahk](lib-a_to_h/CMDret_RunReturn.ahk)
1.63kb - 2016-09-15 | lib-a_to_h| +| **0171** | [CMDret_stream.ahk](lib-a_to_h/CMDret_stream.ahk)
4.93kb - 2018-06-02 | lib-a_to_h| +| **0172** | [CMenu.ahk](lib-a_to_h/CMenu.ahk)
1.24kb - 2018-06-02 | lib-a_to_h| +| **0173** | [CMenuBar.ahk](lib-a_to_h/CMenuBar.ahk)
9.71kb - 2018-06-02 | lib-a_to_h| +| **0174** | [CMenuItem.ahk](lib-a_to_h/CMenuItem.ahk)
13.71kb - 2018-06-02 | lib-a_to_h| +| **0175** | [cmp.ahk](lib-a_to_h/cmp.ahk)
1.75kb - 2018-08-05 | lib-a_to_h| +| **0176** | [CMsgbox.ahk](lib-a_to_h/CMsgbox.ahk)
3.74kb - 2018-06-02 | lib-a_to_h| +| **0177** | [CoHelper.ahk](lib-a_to_h/CoHelper.ahk)
10.63kb - 2018-06-02 | lib-a_to_h| +| **0178** | [Color.ahk](lib-a_to_h/Color.ahk)
4.00kb - 2018-04-23 | lib-a_to_h| +| **0179** | [Colored_Focus_Control.ahk](lib-a_to_h/Colored_Focus_Control.ahk)
4.18kb - 2019-04-12 | lib-a_to_h| +| **0180** | [colors.ahk](lib-a_to_h/colors.ahk)
0.81kb - 2019-05-26 | lib-a_to_h| +| **0181** | [ColURL.ahk](lib-a_to_h/ColURL.ahk)
3.74kb - 2018-06-02 | lib-a_to_h| +| **0182** | [com (2).ahk](lib-a_to_h/com%20(2).ahk)
25.72kb - 2018-06-02 | lib-a_to_h| +| **0183** | [COM (3).ahk](lib-a_to_h/COM%20(3).ahk)
21.20kb - 2018-06-02 | lib-a_to_h| +| **0184** | [com.ahk](lib-a_to_h/com.ahk)
25.72kb - 2018-06-02 | lib-a_to_h| +| **0185** | [ComboX.ahk](lib-a_to_h/ComboX.ahk)
5.27kb - 2018-06-02 | lib-a_to_h| +| **0186** | [ComDispatch.ahk](lib-a_to_h/ComDispatch.ahk)
5.26kb - 2014-07-13 | lib-a_to_h| +| **0187** | [ComDispatch0.ahk](lib-a_to_h/ComDispatch0.ahk)
5.84kb - 2018-01-30 | lib-a_to_h| +| **0188** | [ComDispTable.ahk](lib-a_to_h/ComDispTable.ahk)
0.84kb - 2014-07-13 | lib-a_to_h| +| **0189** | [commaFormat.ahk](lib-a_to_h/commaFormat.ahk)
0.24kb - 2018-10-30 | lib-a_to_h| +| **0190** | [CommonDialogs.ahk](lib-a_to_h/CommonDialogs.ahk)
5.73kb - 2018-06-02 | lib-a_to_h| +| **0191** | [COMo.ahk](lib-a_to_h/COMo.ahk)
1.02kb - 2018-06-02 | lib-a_to_h| +| **0192** | [CompareCursor.ahk](lib-a_to_h/CompareCursor.ahk)
7.53kb - 2020-01-04 | lib-a_to_h| +| **0193** | [CompareFileNameArray.ahk](lib-a_to_h/CompareFileNameArray.ahk)
1.04kb - 2018-05-05 | lib-a_to_h| +| **0194** | [Compass.ahk](lib-a_to_h/Compass.ahk)
2.80kb - 2015-04-24 | lib-a_to_h| +| **0195** | [compile to vpk.ahk](lib-a_to_h/compile%20to%20vpk.ahk)
2.73kb - 2018-06-02 | lib-a_to_h| +| **0196** | [compileScript.ahk](lib-a_to_h/compileScript.ahk)
0.50kb - 2018-10-30 | lib-a_to_h| +| **0197** | [ComVar (2).ahk](lib-a_to_h/ComVar%20(2).ahk)
1.34kb - 2014-07-13 | lib-a_to_h| +| **0198** | [ComVar.ahk](lib-a_to_h/ComVar.ahk)
0.47kb - 2018-06-02 | lib-a_to_h| +| **0199** | [ConnectedToInternet.ahk](lib-a_to_h/ConnectedToInternet.ahk)
0.23kb - 2018-06-02 | lib-a_to_h| +| **0200** | [ConsoleApp v1.2.ahk](lib-a_to_h/ConsoleApp%20v1.2.ahk)
22.33kb - 2018-06-02 | lib-a_to_h| +| **0201** | [ConsoleApp.ahk](lib-a_to_h/ConsoleApp.ahk)
22.57kb - 2018-06-02 | lib-a_to_h| +| **0202** | [Constants.ahk](lib-a_to_h/Constants.ahk)
0.54kb - 2018-03-08 | lib-a_to_h| +| **0203** | [Const_Theme.ahk](lib-a_to_h/Const_Theme.ahk)
51.15kb - 2019-12-02 | lib-a_to_h| +| **0204** | [Container.ahk](lib-a_to_h/Container.ahk)
26.89kb - 2018-06-02 | lib-a_to_h| +| **0205** | [Contains.ahk](lib-a_to_h/Contains.ahk)
3.38kb - 2018-06-02 | lib-a_to_h| +| **0206** | [ContextMenuLib.ahk](lib-a_to_h/ContextMenuLib.ahk)
1.76kb - 2018-05-21 | lib-a_to_h| +| **0207** | [ControlCol.ahk](lib-a_to_h/ControlCol.ahk)
2.87kb - 2018-06-02 | lib-a_to_h| +| **0208** | [ControlColor.ahk](lib-a_to_h/ControlColor.ahk)
1.67kb - 2018-06-02 | lib-a_to_h| +| **0209** | [Control_AniGif.ahk](lib-a_to_h/Control_AniGif.ahk)
7.40kb - 2018-06-02 | lib-a_to_h| +| **0210** | [Control_AVI.ahk](lib-a_to_h/Control_AVI.ahk)
7.17kb - 2018-06-02 | lib-a_to_h| +| **0211** | [Convert2Hex.ahk](lib-a_to_h/Convert2Hex.ahk)
2.36kb - 2018-06-02 | lib-a_to_h| +| **0212** | [ConvertFile.ahk](lib-a_to_h/ConvertFile.ahk)
6.16kb - 2019-11-02 | lib-a_to_h| +| **0213** | [ConvertImage.ahk](lib-a_to_h/ConvertImage.ahk)
5.83kb - 2018-06-02 | lib-a_to_h| +| **0214** | [ConvertKeyToKeyCode.ahk](lib-a_to_h/ConvertKeyToKeyCode.ahk)
4.32kb - 2017-10-16 | lib-a_to_h| +| **0215** | [ConvertToCamelCase.ahk](lib-a_to_h/ConvertToCamelCase.ahk)
1.01kb - 2019-02-16 | lib-a_to_h| +| **0216** | [ConvertToLoserCase.ahk](lib-a_to_h/ConvertToLoserCase.ahk)
1.37kb - 2019-02-16 | lib-a_to_h| +| **0217** | [ConvertToMp3.ahk](lib-a_to_h/ConvertToMp3.ahk)
2.29kb - 2018-12-02 | lib-a_to_h| +| **0218** | [ConvertToPascalCase.ahk](lib-a_to_h/ConvertToPascalCase.ahk)
1.39kb - 2019-02-16 | lib-a_to_h| +| **0219** | [CopyFilesToClipboard.ahk](lib-a_to_h/CopyFilesToClipboard.ahk)
1.57kb - 2018-08-21 | lib-a_to_h| +| **0220** | [CopyImage.ahk](lib-a_to_h/CopyImage.ahk)
1.45kb - 2018-03-08 | lib-a_to_h| +| **0221** | [CopyMemory.ahk](lib-a_to_h/CopyMemory.ahk)
0.82kb - 2018-03-08 | lib-a_to_h| +| **0222** | [CornerNotify.ahk](lib-a_to_h/CornerNotify.ahk)
3.02kb - 2013-06-19 | lib-a_to_h| +| **0223** | [Correlation Coefficient.ahk](lib-a_to_h/Correlation%20Coefficient.ahk)
0.91kb - 2019-11-06 | lib-a_to_h| +| **0224** | [Count.ahk](lib-a_to_h/Count.ahk)
0.66kb - 2018-06-02 | lib-a_to_h| +| **0225** | [CounterEditor.ahk](lib-a_to_h/CounterEditor.ahk)
5.00kb - 2018-06-02 | lib-a_to_h| +| **0226** | [CountOfFiles.ahk](lib-a_to_h/CountOfFiles.ahk)
1.02kb - 2018-12-02 | lib-a_to_h| +| **0227** | [CPULoad.ahk](lib-a_to_h/CPULoad.ahk)
2.12kb - 2019-05-09 | lib-a_to_h| +| **0228** | [cpumem.ahk](lib-a_to_h/cpumem.ahk)
3.16kb - 2011-05-15 | lib-a_to_h| +| **0229** | [CpyData.ahk](lib-a_to_h/CpyData.ahk)
2.04kb - 2018-06-02 | lib-a_to_h| +| **0230** | [CRC32.ahk](lib-a_to_h/CRC32.ahk)
1.16kb - 2018-03-08 | lib-a_to_h| +| **0231** | [CreateDIB.ahk](lib-a_to_h/CreateDIB.ahk)
6.98kb - 2018-03-08 | lib-a_to_h| +| **0232** | [CreateFileNameArray.ahk](lib-a_to_h/CreateFileNameArray.ahk)
1.27kb - 2018-05-05 | lib-a_to_h| +| **0233** | [CreateFocusRec.ahk](lib-a_to_h/CreateFocusRec.ahk)
2.13kb - 2018-07-16 | lib-a_to_h| +| **0234** | [CreateFolderFromString.ahk](lib-a_to_h/CreateFolderFromString.ahk)
2.02kb - 2018-05-05 | lib-a_to_h| +| **0235** | [CreateFont.ahk](lib-a_to_h/CreateFont.ahk)
1.40kb - 2016-09-15 | lib-a_to_h| +| **0236** | [CreateFormData.ahk](lib-a_to_h/CreateFormData.ahk)
2.91kb - 2016-06-17 | lib-a_to_h| +| **0237** | [CreateGist.ahk](lib-a_to_h/CreateGist.ahk)
0.61kb - 2017-01-26 | lib-a_to_h| +| **0238** | [CreateGUID.ahk](lib-a_to_h/CreateGUID.ahk)
0.32kb - 2018-08-17 | lib-a_to_h| +| **0239** | [CreateIconsDll.ahk](lib-a_to_h/CreateIconsDll.ahk)
3.45kb - 2018-06-02 | lib-a_to_h| +| **0240** | [CreateScript.ahk](lib-a_to_h/CreateScript.ahk)
4.21kb - 2018-06-02 | lib-a_to_h| +| **0241** | [CreateScriptV1.ahk](lib-a_to_h/CreateScriptV1.ahk)
3.85kb - 2018-09-04 | lib-a_to_h| +| **0242** | [CreateScriptV2.ahk](lib-a_to_h/CreateScriptV2.ahk)
3.32kb - 2018-09-04 | lib-a_to_h| +| **0243** | [CreateSystemErrorTextList.ahk](lib-a_to_h/CreateSystemErrorTextList.ahk)
0.38kb - 2018-05-05 | lib-a_to_h| +| **0244** | [cRichEdit.ahk](lib-a_to_h/cRichEdit.ahk)
22.52kb - 2018-06-02 | lib-a_to_h| +| **0245** | [CriticalSection.ahk](lib-a_to_h/CriticalSection.ahk)
0.28kb - 2018-06-02 | lib-a_to_h| +| **0246** | [crypt.ahk](lib-a_to_h/crypt.ahk)
4.67kb - 2017-04-07 | lib-a_to_h| +| **0247** | [CryptAES.ahk](lib-a_to_h/CryptAES.ahk)
1.33kb - 2018-06-02 | lib-a_to_h| +| **0248** | [CryptBy_nnik.ahk](lib-a_to_h/CryptBy_nnik.ahk)
3.78kb - 2018-08-26 | lib-a_to_h| +| **0249** | [CryptFoos.ahk](lib-a_to_h/CryptFoos.ahk)
1.59kb - 2018-06-02 | lib-a_to_h| +| **0250** | [CryptHash.ahk](lib-a_to_h/CryptHash.ahk)
7.09kb - 2018-03-08 | lib-a_to_h| +| **0251** | [CryptHash_AES.ahk](lib-a_to_h/CryptHash_AES.ahk)
2.38kb - 2011-02-10 | lib-a_to_h| +| **0252** | [crypto (2).ahk](lib-a_to_h/crypto%20(2).ahk)
3.52kb - 2012-10-03 | lib-a_to_h| +| **0253** | [Crypto.ahk](lib-a_to_h/Crypto.ahk)
1.81kb - 2019-03-23 | lib-a_to_h| +| **0254** | [CSS.ahk](lib-a_to_h/CSS.ahk)
1.85kb - 2019-10-30 | lib-a_to_h| +| **0255** | [CSV.ahk](lib-a_to_h/CSV.ahk)
24.52kb - 2018-06-02 | lib-a_to_h| +| **0256** | [CSVMultiTab.ahk](lib-a_to_h/CSVMultiTab.ahk)
3.11kb - 2019-10-26 | lib-a_to_h| +| **0257** | [CSV_.ahk](lib-a_to_h/CSV_.ahk)
6.32kb - 2017-04-07 | lib-a_to_h| +| **0258** | [CSV_Functions AHK_L.ahk](lib-a_to_h/CSV_Functions%20AHK_L.ahk)
24.61kb - 2018-06-02 | lib-a_to_h| +| **0259** | [CtlColorStatic.ahk](lib-a_to_h/CtlColorStatic.ahk)
1.60kb - 2019-01-21 | lib-a_to_h| +| **0260** | [CueBanner.ahk](lib-a_to_h/CueBanner.ahk)
14.57kb - 2017-07-26 | lib-a_to_h| +| **0261** | [cURL.ahk](lib-a_to_h/cURL.ahk)
9.24kb - 2018-11-14 | lib-a_to_h| +| **0262** | [Cursor.ahk](lib-a_to_h/Cursor.ahk)
3.72kb - 2018-06-02 | lib-a_to_h| +| **0263** | [Cycle.ahk](lib-a_to_h/Cycle.ahk)
0.68kb - 2018-06-02 | lib-a_to_h| +| **0264** | [d2d1.ahk](lib-a_to_h/d2d1.ahk)
89.09kb - 2018-06-02 | lib-a_to_h| +| **0265** | [d3D.ahk](lib-a_to_h/d3D.ahk)
19.06kb - 2018-06-02 | lib-a_to_h| +| **0266** | [d3D11.ahk](lib-a_to_h/d3D11.ahk)
5.00kb - 2018-06-02 | lib-a_to_h| +| **0267** | [d3D9.ahk](lib-a_to_h/d3D9.ahk)
9.67kb - 2018-06-02 | lib-a_to_h| +| **0268** | [d3Dx9.ahk](lib-a_to_h/d3Dx9.ahk)
4.08kb - 2018-06-02 | lib-a_to_h| +| **0269** | [Damerau-Levenshtein-Distance_Fuzzy-searches.ahk](lib-a_to_h/Damerau-Levenshtein-Distance_Fuzzy-searches.ahk)
2.15kb - 2018-08-25 | lib-a_to_h| +| **0270** | [DamerauLevenshteinDistance.ahk](lib-a_to_h/DamerauLevenshteinDistance.ahk)
0.93kb - 2018-06-02 | lib-a_to_h| +| **0271** | [data.ahk](lib-a_to_h/data.ahk)
5.69kb - 2019-06-05 | lib-a_to_h| +| **0272** | [DateAdd.ahk](lib-a_to_h/DateAdd.ahk)
2.09kb - 2018-05-05 | lib-a_to_h| +| **0273** | [DateDiff.ahk](lib-a_to_h/DateDiff.ahk)
2.55kb - 2018-12-02 | lib-a_to_h| +| **0274** | [DateParse.ahk](lib-a_to_h/DateParse.ahk)
5.65kb - 2018-06-02 | lib-a_to_h| +| **0275** | [dates.ahk](lib-a_to_h/dates.ahk)
3.52kb - 2019-05-26 | lib-a_to_h| +| **0276** | [dateTime.ahk](lib-a_to_h/dateTime.ahk)
4.43kb - 2019-05-04 | lib-a_to_h| +| **0277** | [DayOfdate.ahk](lib-a_to_h/DayOfdate.ahk)
1.20kb - 2018-06-02 | lib-a_to_h| +| **0278** | [DBA.ahk](lib-a_to_h/DBA.ahk)
0.67kb - 2018-06-02 | lib-a_to_h| +| **0279** | [DBase.ahk](lib-a_to_h/DBase.ahk)
23.45kb - 2019-09-25 | lib-a_to_h| +| **0280** | [DBGP.ahk](lib-a_to_h/DBGP.ahk)
19.08kb - 2018-08-13 | lib-a_to_h| +| **0281** | [dcomp.ahk](lib-a_to_h/dcomp.ahk)
56.72kb - 2018-06-02 | lib-a_to_h| +| **0282** | [DDE.ahk](lib-a_to_h/DDE.ahk)
5.30kb - 2018-06-02 | lib-a_to_h| +| **0283** | [DDEMessage.ahk](lib-a_to_h/DDEMessage.ahk)
3.07kb - 2018-06-02 | lib-a_to_h| +| **0284** | [DDEML.ahk](lib-a_to_h/DDEML.ahk)
1.52kb - 2018-06-02 | lib-a_to_h| +| **0285** | [DDLManager.ahk](lib-a_to_h/DDLManager.ahk)
12.36kb - 2011-04-25 | lib-a_to_h| +| **0286** | [ddraw.ahk](lib-a_to_h/ddraw.ahk)
25.20kb - 2018-06-02 | lib-a_to_h| +| **0287** | [Debug.ahk](lib-a_to_h/Debug.ahk)
1.85kb - 2014-07-06 | lib-a_to_h| +| **0288** | [DebugPrintArray.ahk](lib-a_to_h/DebugPrintArray.ahk)
4.19kb - 2018-06-12 | lib-a_to_h| +| **0289** | [Decodeu.ahk](lib-a_to_h/Decodeu.ahk)
0.96kb - 2019-10-13 | lib-a_to_h| +| **0290** | [Decompiler.ahk](lib-a_to_h/Decompiler.ahk)
8.06kb - 2018-06-02 | lib-a_to_h| +| **0291** | [Decrypt.ahk](lib-a_to_h/Decrypt.ahk)
2.26kb - 2011-02-10 | lib-a_to_h| +| **0292** | [deepcopy.ahk](lib-a_to_h/deepcopy.ahk)
0.59kb - 2020-01-04 | lib-a_to_h| +| **0293** | [Default.ahk](lib-a_to_h/Default.ahk)
6.49kb - 2018-06-02 | lib-a_to_h| +| **0294** | [DegreeToRadian.ahk](lib-a_to_h/DegreeToRadian.ahk)
0.29kb - 2018-03-08 | lib-a_to_h| +| **0295** | [Delay.ahk](lib-a_to_h/Delay.ahk)
0.44kb - 2011-02-10 | lib-a_to_h| +| **0296** | [DeleteCursor.ahk](lib-a_to_h/DeleteCursor.ahk)
0.14kb - 2018-03-08 | lib-a_to_h| +| **0297** | [DeleteObject.ahk](lib-a_to_h/DeleteObject.ahk)
0.29kb - 2018-03-08 | lib-a_to_h| +| **0298** | [DeluxeClipboard.ahk](lib-a_to_h/DeluxeClipboard.ahk)
6.94kb - 2018-06-02 | lib-a_to_h| +| **0299** | [Desktophidelib.ahk](lib-a_to_h/Desktophidelib.ahk)
2.13kb - 2018-10-26 | lib-a_to_h| +| **0300** | [DesktopScreenCoordinates.ahk](lib-a_to_h/DesktopScreenCoordinates.ahk)
0.51kb - 2018-06-02 | lib-a_to_h| +| **0301** | [detectPowerMessage.ahk](lib-a_to_h/detectPowerMessage.ahk)
3.49kb - 2015-03-24 | lib-a_to_h| +| **0302** | [detect_PowerMessage.ahk](lib-a_to_h/detect_PowerMessage.ahk)
3.49kb - 2020-01-03 | lib-a_to_h| +| **0303** | [DeviceInterfaces.ahk](lib-a_to_h/DeviceInterfaces.ahk)
27.98kb - 2014-08-18 | lib-a_to_h| +| **0304** | [Devices.ahk](lib-a_to_h/Devices.ahk)
5.49kb - 2018-08-23 | lib-a_to_h| +| **0305** | [Dic.ahk](lib-a_to_h/Dic.ahk)
7.31kb - 2007-06-18 | lib-a_to_h| +| **0306** | [Dictionary.ahk](lib-a_to_h/Dictionary.ahk)
6.60kb - 2018-06-02 | lib-a_to_h| +| **0307** | [DictionaryDatabase.ahk](lib-a_to_h/DictionaryDatabase.ahk)
14.38kb - 2018-08-22 | lib-a_to_h| +| **0308** | [Difference.ahk](lib-a_to_h/Difference.ahk)
1.59kb - 2018-12-11 | lib-a_to_h| +| **0309** | [DigitsByRecognition.ahk](lib-a_to_h/DigitsByRecognition.ahk)
38.75kb - 2019-04-20 | lib-a_to_h| +| **0310** | [dinput.ahk](lib-a_to_h/dinput.ahk)
4.13kb - 2018-06-02 | lib-a_to_h| +| **0311** | [DirGetParent.ahk](lib-a_to_h/DirGetParent.ahk)
0.19kb - 2018-06-02 | lib-a_to_h| +| **0312** | [Display_get_Window_context.ahk](lib-a_to_h/Display_get_Window_context.ahk)
16.31kb - 2018-12-01 | lib-a_to_h| +| **0313** | [display_window.ahk](lib-a_to_h/display_window.ahk)
16.22kb - 2019-10-27 | lib-a_to_h| +| **0314** | [Dlg.ahk](lib-a_to_h/Dlg.ahk)
17.85kb - 2018-06-02 | lib-a_to_h| +| **0315** | [Dlg2.ahk](lib-a_to_h/Dlg2.ahk)
105.30kb - 2016-05-09 | lib-a_to_h| +| **0316** | [Dlg2_v0.2.1.ahk](lib-a_to_h/Dlg2_v0.2.1.ahk)
111.24kb - 2019-02-18 | lib-a_to_h| +| **0317** | [Dlg2_v03.ahk](lib-a_to_h/Dlg2_v03.ahk)
108.48kb - 2015-04-13 | lib-a_to_h| +| **0318** | [DLG_FileOpenSave.ahk](lib-a_to_h/DLG_FileOpenSave.ahk)
12.57kb - 2017-09-04 | lib-a_to_h| +| **0319** | [dll.ahk](lib-a_to_h/dll.ahk)
2.87kb - 2018-06-02 | lib-a_to_h| +| **0320** | [DllCall Data Types.ahk](lib-a_to_h/DllCall%20Data%20Types.ahk)
2.54kb - 2011-02-10 | lib-a_to_h| +| **0321** | [DllCallStruct.ahk](lib-a_to_h/DllCallStruct.ahk)
8.59kb - 2018-06-02 | lib-a_to_h| +| **0322** | [dllcall_struct.ahk](lib-a_to_h/dllcall_struct.ahk)
6.00kb - 2019-01-06 | lib-a_to_h| +| **0323** | [DllExports.ahk](lib-a_to_h/DllExports.ahk)
5.79kb - 2018-03-08 | lib-a_to_h| +| **0324** | [DLLPack.ahk](lib-a_to_h/DLLPack.ahk)
2.78kb - 2018-06-02 | lib-a_to_h| +| **0325** | [DllPackFiles.ahk](lib-a_to_h/DllPackFiles.ahk)
2.84kb - 2011-09-15 | lib-a_to_h| +| **0326** | [dmp.ahk](lib-a_to_h/dmp.ahk)
10.31kb - 2018-06-02 | lib-a_to_h| +| **0327** | [DnsFlushResolverCache.ahk](lib-a_to_h/DnsFlushResolverCache.ahk)
0.32kb - 2018-03-08 | lib-a_to_h| +| **0328** | [Dock.ahk](lib-a_to_h/Dock.ahk)
13.69kb - 2018-06-02 | lib-a_to_h| +| **0329** | [DockA.ahk](lib-a_to_h/DockA.ahk)
6.03kb - 2018-06-02 | lib-a_to_h| +| **0330** | [DoDragDrop.ahk](lib-a_to_h/DoDragDrop.ahk)
2.08kb - 2018-06-02 | lib-a_to_h| +| **0331** | [Download-with-Progress.ahk](lib-a_to_h/Download-with-Progress.ahk)
1.25kb - 2018-11-14 | lib-a_to_h| +| **0332** | [DownloadFile.ahk](lib-a_to_h/DownloadFile.ahk)
7.32kb - 2018-03-08 | lib-a_to_h| +| **0333** | [DownloadText.ahk](lib-a_to_h/DownloadText.ahk)
2.30kb - 2018-03-08 | lib-a_to_h| +| **0334** | [DownloadToFile.ahk](lib-a_to_h/DownloadToFile.ahk)
0.88kb - 2018-06-02 | lib-a_to_h| +| **0335** | [DownloadToString.ahk](lib-a_to_h/DownloadToString.ahk)
0.89kb - 2018-06-02 | lib-a_to_h| +| **0336** | [dpi.ahk](lib-a_to_h/dpi.ahk)
1.67kb - 2017-10-18 | lib-a_to_h| +| **0337** | [dpiOffset.ahk](lib-a_to_h/dpiOffset.ahk)
0.09kb - 2018-10-30 | lib-a_to_h| +| **0338** | [DrawScreen.ahk](lib-a_to_h/DrawScreen.ahk)
1.99kb - 2018-06-02 | lib-a_to_h| +| **0339** | [DrawShadowText9x.ahk](lib-a_to_h/DrawShadowText9x.ahk)
6.68kb - 2017-07-26 | lib-a_to_h| +| **0340** | [DriveGetLabels.ahk](lib-a_to_h/DriveGetLabels.ahk)
1.66kb - 2018-05-05 | lib-a_to_h| +| **0341** | [dshow.ahk](lib-a_to_h/dshow.ahk)
0.71kb - 2018-06-02 | lib-a_to_h| +| **0342** | [dSleep.ahk](lib-a_to_h/dSleep.ahk)
0.05kb - 2018-06-02 | lib-a_to_h| +| **0343** | [dsound.ahk](lib-a_to_h/dsound.ahk)
6.01kb - 2018-06-02 | lib-a_to_h| +| **0344** | [dSpeak.ahk](lib-a_to_h/dSpeak.ahk)
1.25kb - 2018-06-02 | lib-a_to_h| +| **0345** | [DumpHistory.ahk](lib-a_to_h/DumpHistory.ahk)
0.84kb - 2018-06-02 | lib-a_to_h| +| **0346** | [DuplicateFinderAndCounter.ahk](lib-a_to_h/DuplicateFinderAndCounter.ahk)
2.06kb - 2019-04-27 | lib-a_to_h| +| **0347** | [DuplicateHandle.ahk](lib-a_to_h/DuplicateHandle.ahk)
2.33kb - 2018-03-08 | lib-a_to_h| +| **0348** | [DuplicateToken.ahk](lib-a_to_h/DuplicateToken.ahk)
3.14kb - 2018-08-16 | lib-a_to_h| +| **0349** | [dwrite (2).ahk](lib-a_to_h/dwrite%20(2).ahk)
79.40kb - 2018-06-02 | lib-a_to_h| +| **0350** | [dwrite.ahk](lib-a_to_h/dwrite.ahk)
70.79kb - 2018-06-02 | lib-a_to_h| +| **0351** | [DynaExpr.ahk](lib-a_to_h/DynaExpr.ahk)
2.21kb - 2017-09-18 | lib-a_to_h| +| **0352** | [DynamicInclude.ahk](lib-a_to_h/DynamicInclude.ahk)
3.13kb - 2018-12-01 | lib-a_to_h| +| **0353** | [DynaRun.ahk](lib-a_to_h/DynaRun.ahk)
1.51kb - 2018-06-02 | lib-a_to_h| +| **0354** | [easytranscript-pedal-x64.ahk](lib-a_to_h/easytranscript-pedal-x64.ahk)
4.06kb - 2015-04-25 | lib-a_to_h| +| **0355** | [easytranscript-pedal-x86.ahk](lib-a_to_h/easytranscript-pedal-x86.ahk)
3.58kb - 2015-04-25 | lib-a_to_h| +| **0356** | [Edit.ahk](lib-a_to_h/Edit.ahk)
116.65kb - 2016-05-09 | lib-a_to_h| +| **0357** | [EditControl.ahk](lib-a_to_h/EditControl.ahk)
54.56kb - 2019-07-25 | lib-a_to_h| +| **0358** | [EditFunctions.ahk](lib-a_to_h/EditFunctions.ahk)
5.18kb - 2016-09-15 | lib-a_to_h| +| **0359** | [EditorWin.ahk](lib-a_to_h/EditorWin.ahk)
71.39kb - 2014-03-19 | lib-a_to_h| +| **0360** | [Edit_AutoSetTabStops.ahk](lib-a_to_h/Edit_AutoSetTabStops.ahk)
5.94kb - 2016-05-07 | lib-a_to_h| +| **0361** | [Edit_BlockMove.ahk](lib-a_to_h/Edit_BlockMove.ahk)
6.34kb - 2016-01-05 | lib-a_to_h| +| **0362** | [Edit_Controls.ahk](lib-a_to_h/Edit_Controls.ahk)
4.69kb - 2018-10-15 | lib-a_to_h| +| **0363** | [Edit_CutLine.ahk](lib-a_to_h/Edit_CutLine.ahk)
0.84kb - 2015-09-23 | lib-a_to_h| +| **0364** | [Edit_DeleteLine.ahk](lib-a_to_h/Edit_DeleteLine.ahk)
0.80kb - 2015-09-23 | lib-a_to_h| +| **0365** | [Edit_Duplicate.ahk](lib-a_to_h/Edit_Duplicate.ahk)
4.57kb - 2016-01-05 | lib-a_to_h| +| **0366** | [Edit_SelectLine.ahk](lib-a_to_h/Edit_SelectLine.ahk)
1.44kb - 2015-09-23 | lib-a_to_h| +| **0367** | [Edit_Sort.ahk](lib-a_to_h/Edit_Sort.ahk)
3.44kb - 2016-01-05 | lib-a_to_h| +| **0368** | [Edit_SpellCheckGUI.ahk](lib-a_to_h/Edit_SpellCheckGUI.ahk)
27.71kb - 2016-05-09 | lib-a_to_h| +| **0369** | [Edit_TTSGUI.ahk](lib-a_to_h/Edit_TTSGUI.ahk)
33.03kb - 2016-05-08 | lib-a_to_h| +| **0370** | [Edit_v1.1.ahk](lib-a_to_h/Edit_v1.1.ahk)
52.82kb - 2011-02-10 | lib-a_to_h| +| **0371** | [Edit_v2.1.ahk](lib-a_to_h/Edit_v2.1.ahk)
117.58kb - 2019-07-30 | lib-a_to_h| +| **0372** | [EjectDevice.ahk](lib-a_to_h/EjectDevice.ahk)
4.04kb - 2018-08-23 | lib-a_to_h| +| **0373** | [ElapsedTime.ahk](lib-a_to_h/ElapsedTime.ahk)
3.05kb - 2011-04-25 | lib-a_to_h| +| **0374** | [EmptyMem.ahk](lib-a_to_h/EmptyMem.ahk)
1.77kb - 2018-06-02 | lib-a_to_h| +| **0375** | [EmptyRecycleBin.ahk](lib-a_to_h/EmptyRecycleBin.ahk)
1.10kb - 2018-03-08 | lib-a_to_h| +| **0376** | [EmptyWorkingSets.ahk](lib-a_to_h/EmptyWorkingSets.ahk)
0.25kb - 2016-09-15 | lib-a_to_h| +| **0377** | [EnableUIAccess.ahk](lib-a_to_h/EnableUIAccess.ahk)
10.94kb - 2018-06-02 | lib-a_to_h| +| **0378** | [Encoding.ahk](lib-a_to_h/Encoding.ahk)
2.51kb - 2018-06-02 | lib-a_to_h| +| **0379** | [Encrypt.ahk](lib-a_to_h/Encrypt.ahk)
2.26kb - 2011-02-10 | lib-a_to_h| +| **0380** | [EntryForm.ahk](lib-a_to_h/EntryForm.ahk)
20.25kb - 2014-09-19 | lib-a_to_h| +| **0381** | [EnumClipFormats.ahk](lib-a_to_h/EnumClipFormats.ahk)
0.42kb - 2019-10-29 | lib-a_to_h| +| **0382** | [EnumComMembers.ahk](lib-a_to_h/EnumComMembers.ahk)
2.53kb - 2019-05-15 | lib-a_to_h| +| **0383** | [EnumDiskDrives.ahk](lib-a_to_h/EnumDiskDrives.ahk)
1.06kb - 2018-03-08 | lib-a_to_h| +| **0384** | [enumdisplaydevices.ahk](lib-a_to_h/enumdisplaydevices.ahk)
3.35kb - 2019-10-29 | lib-a_to_h| +| **0385** | [EnumerateChildProcesses.ahk](lib-a_to_h/EnumerateChildProcesses.ahk)
1.14kb - 2019-10-29 | lib-a_to_h| +| **0386** | [EnumerateDrives.ahk](lib-a_to_h/EnumerateDrives.ahk)
2.17kb - 2018-03-08 | lib-a_to_h| +| **0387** | [EnumerateProcesses.ahk](lib-a_to_h/EnumerateProcesses.ahk)
4.71kb - 2018-08-16 | lib-a_to_h| +| **0388** | [EnumerateServices.ahk](lib-a_to_h/EnumerateServices.ahk)
7.96kb - 2018-03-08 | lib-a_to_h| +| **0389** | [EnumerateVolumes.ahk](lib-a_to_h/EnumerateVolumes.ahk)
0.92kb - 2018-03-08 | lib-a_to_h| +| **0390** | [EnumIncludes.ahk](lib-a_to_h/EnumIncludes.ahk)
5.87kb - 2018-06-02 | lib-a_to_h| +| **0391** | [EnumToolbarButtons.ahk](lib-a_to_h/EnumToolbarButtons.ahk)
4.55kb - 2020-01-02 | lib-a_to_h| +| **0392** | [EnumWindows.ahk](lib-a_to_h/EnumWindows.ahk)
1.51kb - 2018-03-08 | lib-a_to_h| +| **0393** | [Enum_Explorer.ahk](lib-a_to_h/Enum_Explorer.ahk)
1.43kb - 2019-05-15 | lib-a_to_h| +| **0394** | [Environment.ahk](lib-a_to_h/Environment.ahk)
9.48kb - 2019-01-03 | lib-a_to_h| +| **0395** | [EnvUpdate.ahk](lib-a_to_h/EnvUpdate.ahk)
0.20kb - 2016-09-15 | lib-a_to_h| +| **0396** | [eol-convert.ahk](lib-a_to_h/eol-convert.ahk)
2.15kb - 2019-05-26 | lib-a_to_h| +| **0397** | [eol.ahk](lib-a_to_h/eol.ahk)
1.89kb - 2018-06-02 | lib-a_to_h| +| **0398** | [ErrMsg.ahk](lib-a_to_h/ErrMsg.ahk)
2.28kb - 2016-02-20 | lib-a_to_h| +| **0399** | [ErrorMessage.ahk](lib-a_to_h/ErrorMessage.ahk)
0.18kb - 2018-06-02 | lib-a_to_h| +| **0400** | [euler.ahk](lib-a_to_h/euler.ahk)
53.63kb - 2019-05-07 | lib-a_to_h| +| **0401** | [eval (2).ahk](lib-a_to_h/eval%20(2).ahk)
7.85kb - 2019-10-11 | lib-a_to_h| +| **0402** | [Eval.ahk](lib-a_to_h/Eval.ahk)
12.92kb - 2018-06-02 | lib-a_to_h| +| **0403** | [EventHandler.ahk](lib-a_to_h/EventHandler.ahk)
0.72kb - 2016-09-15 | lib-a_to_h| +| **0404** | [EventIsDue.ahk](lib-a_to_h/EventIsDue.ahk)
5.20kb - 2018-05-05 | lib-a_to_h| +| **0405** | [EventLibrary.ahk](lib-a_to_h/EventLibrary.ahk)
5.18kb - 2018-05-25 | lib-a_to_h| +| **0406** | [EWinHook.ahk](lib-a_to_h/EWinHook.ahk)
10.08kb - 2018-06-02 | lib-a_to_h| +| **0407** | [Exec.ahk](lib-a_to_h/Exec.ahk)
25.51kb - 2018-06-02 | lib-a_to_h| +| **0408** | [ExecScript (2).ahk](lib-a_to_h/ExecScript%20(2).ahk)
5.17kb - 2018-12-01 | lib-a_to_h| +| **0409** | [ExecScript.ahk](lib-a_to_h/ExecScript.ahk)
0.74kb - 2018-06-02 | lib-a_to_h| +| **0410** | [ExecuteSQL.ahk](lib-a_to_h/ExecuteSQL.ahk)
9.06kb - 2018-12-02 | lib-a_to_h| +| **0411** | [ExecuteSQL_orig.ahk](lib-a_to_h/ExecuteSQL_orig.ahk)
7.50kb - 2018-12-02 | lib-a_to_h| +| **0412** | [ExeFunctions.ahk](lib-a_to_h/ExeFunctions.ahk)
0.87kb - 2016-09-15 | lib-a_to_h| +| **0413** | [Expand.ahk](lib-a_to_h/Expand.ahk)
1.03kb - 2018-02-28 | lib-a_to_h| +| **0414** | [ExpandEnv.ahk](lib-a_to_h/ExpandEnv.ahk)
0.15kb - 2015-11-20 | lib-a_to_h| +| **0415** | [ExpandEnvironmentStrings.ahk](lib-a_to_h/ExpandEnvironmentStrings.ahk)
0.64kb - 2019-08-03 | lib-a_to_h| +| **0416** | [ExpandPostIDs.ahk](lib-a_to_h/ExpandPostIDs.ahk)
3.91kb - 2018-02-28 | lib-a_to_h| +| **0417** | [ExploreDir.ahk](lib-a_to_h/ExploreDir.ahk)
2.21kb - 2018-03-08 | lib-a_to_h| +| **0418** | [ExploreObj.ahk](lib-a_to_h/ExploreObj.ahk)
0.30kb - 2016-09-15 | lib-a_to_h| +| **0419** | [Explorer (2).ahk](lib-a_to_h/Explorer%20(2).ahk)
2.48kb - 2017-10-23 | lib-a_to_h| +| **0420** | [Explorer.ahk](lib-a_to_h/Explorer.ahk)
2.21kb - 2019-04-10 | lib-a_to_h| +| **0421** | [ExplorerGrouping.ahk](lib-a_to_h/ExplorerGrouping.ahk)
4.10kb - 2019-04-10 | lib-a_to_h| +| **0422** | [explorer_path.ahk](lib-a_to_h/explorer_path.ahk)
1.24kb - 2015-03-20 | lib-a_to_h| +| **0423** | [ExternalHeaderLib.ahk](lib-a_to_h/ExternalHeaderLib.ahk)
9.17kb - 2019-01-14 | lib-a_to_h| +| **0424** | [externalIP.ahk](lib-a_to_h/externalIP.ahk)
0.82kb - 2018-10-30 | lib-a_to_h| +| **0425** | [externalIP_old.ahk](lib-a_to_h/externalIP_old.ahk)
0.47kb - 2018-10-30 | lib-a_to_h| +| **0426** | [ExtractIconFromExecutable.ahk](lib-a_to_h/ExtractIconFromExecutable.ahk)
2.37kb - 2018-06-02 | lib-a_to_h| +| **0427** | [ExtractTableData.ahk](lib-a_to_h/ExtractTableData.ahk)
3.89kb - 2019-10-27 | lib-a_to_h| +| **0428** | [Facade_Array.ahk](lib-a_to_h/Facade_Array.ahk)
8.48kb - 2018-12-20 | lib-a_to_h| +| **0429** | [Facade_Func.ahk](lib-a_to_h/Facade_Func.ahk)
9.54kb - 2018-12-20 | lib-a_to_h| +| **0430** | [Facade_Ht.ahk](lib-a_to_h/Facade_Ht.ahk)
4.48kb - 2018-12-20 | lib-a_to_h| +| **0431** | [Facade_Math.ahk](lib-a_to_h/Facade_Math.ahk)
6.35kb - 2018-12-20 | lib-a_to_h| +| **0432** | [Facade_Nested.ahk](lib-a_to_h/Facade_Nested.ahk)
5.32kb - 2018-12-20 | lib-a_to_h| +| **0433** | [Facade_Op.ahk](lib-a_to_h/Facade_Op.ahk)
4.32kb - 2018-12-20 | lib-a_to_h| +| **0434** | [Facade_Validate.ahk](lib-a_to_h/Facade_Validate.ahk)
9.87kb - 2018-12-20 | lib-a_to_h| +| **0435** | [Factor.ahk](lib-a_to_h/Factor.ahk)
0.90kb - 2018-03-08 | lib-a_to_h| +| **0436** | [Factorial.ahk](lib-a_to_h/Factorial.ahk)
0.38kb - 2018-03-08 | lib-a_to_h| +| **0437** | [Fade.ahk](lib-a_to_h/Fade.ahk)
0.66kb - 2017-10-23 | lib-a_to_h| +| **0438** | [FAILED.ahk](lib-a_to_h/FAILED.ahk)
0.04kb - 2018-06-02 | lib-a_to_h| +| **0439** | [FC.ahk](lib-a_to_h/FC.ahk)
68.68kb - 2018-06-02 | lib-a_to_h| +| **0440** | [FcnLib-Misc.ahk](lib-a_to_h/FcnLib-Misc.ahk)
1.05kb - 2018-06-02 | lib-a_to_h| +| **0441** | [FcnLib-Opera.ahk](lib-a_to_h/FcnLib-Opera.ahk)
1.85kb - 2018-06-02 | lib-a_to_h| +| **0442** | [FcnLib-Rewrites.ahk](lib-a_to_h/FcnLib-Rewrites.ahk)
13.83kb - 2018-06-02 | lib-a_to_h| +| **0443** | [FcnLib.ahk](lib-a_to_h/FcnLib.ahk)
48.74kb - 2018-06-02 | lib-a_to_h| +| **0444** | [FE.ahk](lib-a_to_h/FE.ahk)
2.76kb - 2018-06-02 | lib-a_to_h| +| **0445** | [FFMpeg_ScreenRecord.ahk](lib-a_to_h/FFMpeg_ScreenRecord.ahk)
5.42kb - 2019-11-24 | lib-a_to_h| +| **0446** | [FGP.ahk](lib-a_to_h/FGP.ahk)
3.23kb - 2018-06-02 | lib-a_to_h| +| **0447** | [Fifo.ahk](lib-a_to_h/Fifo.ahk)
1.02kb - 2018-06-02 | lib-a_to_h| +| **0448** | [File (3).ahk](lib-a_to_h/File%20(3).ahk)
3.91kb - 2018-06-02 | lib-a_to_h| +| **0449** | [file-open-utils.ahk](lib-a_to_h/file-open-utils.ahk)
5.30kb - 2019-12-04 | lib-a_to_h| +| **0450** | [File.ahk](lib-a_to_h/File.ahk)
5.60kb - 2018-06-02 | lib-a_to_h| +| **0451** | [FileExtract.ahk](lib-a_to_h/FileExtract.ahk)
6.75kb - 2018-06-02 | lib-a_to_h| +| **0452** | [FileFunctions_JEE.ahk](lib-a_to_h/FileFunctions_JEE.ahk)
2.05kb - 2018-07-06 | lib-a_to_h| +| **0453** | [FileGetInfo.ahk](lib-a_to_h/FileGetInfo.ahk)
1.19kb - 2018-06-02 | lib-a_to_h| +| **0454** | [FileGetVersionInfo.ahk](lib-a_to_h/FileGetVersionInfo.ahk)
1.55kb - 2018-06-02 | lib-a_to_h| +| **0455** | [FileGetVersionInfo_AW.ahk](lib-a_to_h/FileGetVersionInfo_AW.ahk)
1.38kb - 2019-02-08 | lib-a_to_h| +| **0456** | [FileHelperAndHash.ahk](lib-a_to_h/FileHelperAndHash.ahk)
6.56kb - 2018-06-02 | lib-a_to_h| +| **0457** | [FileInstallList.ahk](lib-a_to_h/FileInstallList.ahk)
1.55kb - 2018-06-02 | lib-a_to_h| +| **0458** | [fileIsBinary.ahk](lib-a_to_h/fileIsBinary.ahk)
0.29kb - 2018-06-02 | lib-a_to_h| +| **0459** | [FileIsType.ahk](lib-a_to_h/FileIsType.ahk)
38.14kb - 2018-07-06 | lib-a_to_h| +| **0460** | [FileMD5.ahk](lib-a_to_h/FileMD5.ahk)
2.58kb - 2011-04-25 | lib-a_to_h| +| **0461** | [FileQ.ahk](lib-a_to_h/FileQ.ahk)
0.45kb - 2018-10-09 | lib-a_to_h| +| **0462** | [FileReadLines.ahk](lib-a_to_h/FileReadLines.ahk)
2.63kb - 2019-04-19 | lib-a_to_h| +| **0463** | [FileReplace.ahk](lib-a_to_h/FileReplace.ahk)
0.21kb - 2018-06-02 | lib-a_to_h| +| **0464** | [FileResData.ahk](lib-a_to_h/FileResData.ahk)
8.61kb - 2018-03-08 | lib-a_to_h| +| **0465** | [FilesearchByCriteria.ahk](lib-a_to_h/FilesearchByCriteria.ahk)
2.88kb - 2019-04-20 | lib-a_to_h| +| **0466** | [FileTail.ahk](lib-a_to_h/FileTail.ahk)
1.65kb - 2018-06-02 | lib-a_to_h| +| **0467** | [fileUnblock.ahk](lib-a_to_h/fileUnblock.ahk)
0.09kb - 2018-10-30 | lib-a_to_h| +| **0468** | [FileVerInfo (2).ahk](lib-a_to_h/FileVerInfo%20(2).ahk)
5.07kb - 2018-07-06 | lib-a_to_h| +| **0469** | [FileVerInfo.ahk](lib-a_to_h/FileVerInfo.ahk)
5.37kb - 2018-06-02 | lib-a_to_h| +| **0470** | [FindClick.ahk](lib-a_to_h/FindClick.ahk)
101.65kb - 2018-06-02 | lib-a_to_h| +| **0471** | [findexe.ahk](lib-a_to_h/findexe.ahk)
3.78kb - 2018-02-28 | lib-a_to_h| +| **0472** | [FindFunc.ahk](lib-a_to_h/FindFunc.ahk)
0.17kb - 2018-06-02 | lib-a_to_h| +| **0473** | [FindLabel.ahk](lib-a_to_h/FindLabel.ahk)
0.17kb - 2018-06-02 | lib-a_to_h| +| **0474** | [FindLimit.ahk](lib-a_to_h/FindLimit.ahk)
0.11kb - 2015-05-21 | lib-a_to_h| +| **0475** | [FindText on Screen.ahk](lib-a_to_h/FindText%20on%20Screen.ahk)
14.63kb - 2018-05-27 | lib-a_to_h| +| **0476** | [FixURI.ahk](lib-a_to_h/FixURI.ahk)
2.04kb - 2018-06-02 | lib-a_to_h| +| **0477** | [FlightLogMetrics_23.ahk](lib-a_to_h/FlightLogMetrics_23.ahk)
99.04kb - 2019-07-26 | lib-a_to_h| +| **0478** | [FloatToFraction.ahk](lib-a_to_h/FloatToFraction.ahk)
4.63kb - 2016-02-05 | lib-a_to_h| +| **0479** | [FlushDNS.ahk](lib-a_to_h/FlushDNS.ahk)
0.61kb - 2018-06-02 | lib-a_to_h| +| **0480** | [Fnt.ahk](lib-a_to_h/Fnt.ahk)
135.65kb - 2016-11-30 | lib-a_to_h| +| **0481** | [fn_CMsgBox.ahk](lib-a_to_h/fn_CMsgBox.ahk)
5.26kb - 2018-06-02 | lib-a_to_h| +| **0482** | [Focusless Scroll.ahk](lib-a_to_h/Focusless%20Scroll.ahk)
5.10kb - 2019-04-12 | lib-a_to_h| +| **0483** | [Font.ahk](lib-a_to_h/Font.ahk)
12.71kb - 2018-03-08 | lib-a_to_h| +| **0484** | [Form Filler.ahk](lib-a_to_h/Form%20Filler.ahk)
2.36kb - 2018-06-02 | lib-a_to_h| +| **0485** | [Form.ahk](lib-a_to_h/Form.ahk)
19.26kb - 2018-06-02 | lib-a_to_h| +| **0486** | [format.ahk](lib-a_to_h/format.ahk)
3.15kb - 2018-06-20 | lib-a_to_h| +| **0487** | [Format4Csv.ahk](lib-a_to_h/Format4Csv.ahk)
0.79kb - 2018-06-02 | lib-a_to_h| +| **0488** | [FormatAHK.ahk](lib-a_to_h/FormatAHK.ahk)
16.21kb - 2019-11-02 | lib-a_to_h| +| **0489** | [FormatDword.ahk](lib-a_to_h/FormatDword.ahk)
1.67kb - 2019-12-18 | lib-a_to_h| +| **0490** | [FormatHRESULT.ahk](lib-a_to_h/FormatHRESULT.ahk)
0.36kb - 2018-06-02 | lib-a_to_h| +| **0491** | [FormatNumberCommas.ahk](lib-a_to_h/FormatNumberCommas.ahk)
1.81kb - 2018-12-02 | lib-a_to_h| +| **0492** | [formatTickCount.ahk](lib-a_to_h/formatTickCount.ahk)
0.48kb - 2018-06-02 | lib-a_to_h| +| **0493** | [ForumFunctions.ahk](lib-a_to_h/ForumFunctions.ahk)
7.08kb - 2019-07-31 | lib-a_to_h| +| **0494** | [FreeImage.ahk](lib-a_to_h/FreeImage.ahk)
13.88kb - 2018-06-02 | lib-a_to_h| +| **0495** | [FS.ahk](lib-a_to_h/FS.ahk)
7.42kb - 2018-06-02 | lib-a_to_h| +| **0496** | [ftp.ahk](lib-a_to_h/ftp.ahk)
9.15kb - 2018-06-02 | lib-a_to_h| +| **0497** | [FuncAutokeyWord.ahk](lib-a_to_h/FuncAutokeyWord.ahk)
3.04kb - 2019-05-06 | lib-a_to_h| +| **0498** | [funcs.ahk](lib-a_to_h/funcs.ahk)
14.26kb - 2019-08-28 | lib-a_to_h| +| **0499** | [FuncsForClasses_misc.ahk](lib-a_to_h/FuncsForClasses_misc.ahk)
10.12kb - 2018-11-06 | lib-a_to_h| +| **0500** | [funcStrRegEx.ahk](lib-a_to_h/funcStrRegEx.ahk)
17.62kb - 2019-07-31 | lib-a_to_h| +| **0501** | [Functions (2).ahk](lib-a_to_h/Functions%20(2).ahk)
18.36kb - 2019-10-31 | lib-a_to_h| +| **0502** | [Functions.ahk](lib-a_to_h/Functions.ahk)
6.97kb - 2018-06-02 | lib-a_to_h| +| **0503** | [Func_IniSettingsEditor_v6.ahk](lib-a_to_h/Func_IniSettingsEditor_v6.ahk)
23.90kb - 2018-06-02 | lib-a_to_h| +| **0504** | [Fuzzy(2).ahk](lib-a_to_h/Fuzzy(2).ahk)
3.02kb - 2019-05-12 | lib-a_to_h| +| **0505** | [Fuzzy.ahk](lib-a_to_h/Fuzzy.ahk)
3.02kb - 2019-01-14 | lib-a_to_h| +| **0506** | [FuzzySearch.ahk](lib-a_to_h/FuzzySearch.ahk)
3.82kb - 2018-11-23 | lib-a_to_h| +| **0507** | [g.ahk](lib-a_to_h/g.ahk)
0.35kb - 2018-08-05 | lib-a_to_h| +| **0508** | [GActiveXCtl.ahk](lib-a_to_h/GActiveXCtl.ahk)
0.28kb - 2018-06-02 | lib-a_to_h| +| **0509** | [Gaussian.ahk](lib-a_to_h/Gaussian.ahk)
0.30kb - 2019-05-26 | lib-a_to_h| +| **0510** | [GButtonCtl.ahk](lib-a_to_h/GButtonCtl.ahk)
0.08kb - 2018-06-02 | lib-a_to_h| +| **0511** | [GCD.ahk](lib-a_to_h/GCD.ahk)
0.24kb - 2018-03-08 | lib-a_to_h| +| **0512** | [Gdip.ahk](lib-a_to_h/Gdip.ahk)
95.53kb - 2018-06-02 | lib-a_to_h| +| **0513** | [GDIPlusHelper.ahk](lib-a_to_h/GDIPlusHelper.ahk)
28.20kb - 2018-06-02 | lib-a_to_h| +| **0514** | [GDIplusWrapper.ahk](lib-a_to_h/GDIplusWrapper.ahk)
21.41kb - 2018-06-02 | lib-a_to_h| +| **0515** | [gdiplus_outlinedtext.ahk](lib-a_to_h/gdiplus_outlinedtext.ahk)
7.02kb - 2018-06-02 | lib-a_to_h| +| **0516** | [GDIPrinter.ahk](lib-a_to_h/GDIPrinter.ahk)
1.20kb - 2014-08-07 | lib-a_to_h| +| **0517** | [Gdip_AddPathBeziers.ahk](lib-a_to_h/Gdip_AddPathBeziers.ahk)
3.90kb - 2018-06-02 | lib-a_to_h| +| **0518** | [Gdip_All-v1.45.ahk](lib-a_to_h/Gdip_All-v1.45.ahk)
95.30kb - 2018-06-02 | lib-a_to_h| +| **0519** | [Gdip_All-v1.50.ahk](lib-a_to_h/Gdip_All-v1.50.ahk)
99.40kb - 2017-03-04 | lib-a_to_h| +| **0520** | [Gdip_All-V1.54.ahk](lib-a_to_h/Gdip_All-V1.54.ahk)
94.17kb - 2019-09-21 | lib-a_to_h| +| **0521** | [Gdip_All.ahk](lib-a_to_h/Gdip_All.ahk)
284.71kb - 2019-12-10 | lib-a_to_h| +| **0522** | [Gdip_box.ahk](lib-a_to_h/Gdip_box.ahk)
3.43kb - 2015-02-18 | lib-a_to_h| +| **0523** | [Gdip_draw_n_Gui.ahk](lib-a_to_h/Gdip_draw_n_Gui.ahk)
2.72kb - 2018-06-02 | lib-a_to_h| +| **0524** | [Gdip_Ext.ahk](lib-a_to_h/Gdip_Ext.ahk)
9.65kb - 2018-06-02 | lib-a_to_h| +| **0525** | [Gdip_ImageSearch.ahk](lib-a_to_h/Gdip_ImageSearch.ahk)
33.17kb - 2018-06-02 | lib-a_to_h| +| **0526** | [Gdip_TilePicture.ahk](lib-a_to_h/Gdip_TilePicture.ahk)
1.83kb - 2018-11-14 | lib-a_to_h| +| **0527** | [GEditCtl.ahk](lib-a_to_h/GEditCtl.ahk)
0.08kb - 2018-06-02 | lib-a_to_h| +| **0528** | [genrandom.ahk](lib-a_to_h/genrandom.ahk)
1.09kb - 2019-05-09 | lib-a_to_h| +| **0529** | [Geolocation.ahk](lib-a_to_h/Geolocation.ahk)
5.40kb - 2016-03-11 | lib-a_to_h| +| **0530** | [Get Scintilla Constants and Message Numbers.ahk](lib-a_to_h/Get%20Scintilla%20Constants%20and%20Message%20Numbers.ahk)
6.78kb - 2019-05-16 | lib-a_to_h| +| **0531** | [get-active-browser-url.ahk](lib-a_to_h/get-active-browser-url.ahk)
5.58kb - 2015-03-20 | lib-a_to_h| +| **0532** | [GetActiveBrowserURL.ahk](lib-a_to_h/GetActiveBrowserURL.ahk)
6.41kb - 2016-09-15 | lib-a_to_h| +| **0533** | [GetActiveObjects.ahk](lib-a_to_h/GetActiveObjects.ahk)
1.41kb - 2018-11-04 | lib-a_to_h| +| **0534** | [GetActiveWindow.ahk](lib-a_to_h/GetActiveWindow.ahk)
0.29kb - 2018-03-08 | lib-a_to_h| +| **0535** | [GetAdapterAdresses.ahk](lib-a_to_h/GetAdapterAdresses.ahk)
1.97kb - 2019-05-27 | lib-a_to_h| +| **0536** | [GetAddressOfData.ahk](lib-a_to_h/GetAddressOfData.ahk)
3.32kb - 2018-08-16 | lib-a_to_h| +| **0537** | [GetAppsInfo.ahk](lib-a_to_h/GetAppsInfo.ahk)
2.61kb - 2019-04-27 | lib-a_to_h| +| **0538** | [GetAvailableFileName.ahk](lib-a_to_h/GetAvailableFileName.ahk)
3.03kb - 2018-06-02 | lib-a_to_h| +| **0539** | [GetBinaryType (2).ahk](lib-a_to_h/GetBinaryType%20(2).ahk)
0.55kb - 2019-05-27 | lib-a_to_h| +| **0540** | [GetBinaryType.ahk](lib-a_to_h/GetBinaryType.ahk)
1.09kb - 2018-03-08 | lib-a_to_h| +| **0541** | [GetChildHWND.ahk](lib-a_to_h/GetChildHWND.ahk)
0.77kb - 2018-06-02 | lib-a_to_h| +| **0542** | [GetClipboardData.ahk](lib-a_to_h/GetClipboardData.ahk)
1.10kb - 2019-05-03 | lib-a_to_h| +| **0543** | [GetColor.ahk](lib-a_to_h/GetColor.ahk)
2.60kb - 2018-12-08 | lib-a_to_h| +| **0544** | [GetColumnList.ahk](lib-a_to_h/GetColumnList.ahk)
1.21kb - 2018-12-02 | lib-a_to_h| +| **0545** | [GetCOMError.ahk](lib-a_to_h/GetCOMError.ahk)
0.67kb - 2019-04-13 | lib-a_to_h| +| **0546** | [GetCommonPath.ahk](lib-a_to_h/GetCommonPath.ahk)
1.96kb - 2018-06-02 | lib-a_to_h| +| **0547** | [GetConnectionString.ahk](lib-a_to_h/GetConnectionString.ahk)
1.02kb - 2018-12-02 | lib-a_to_h| +| **0548** | [GetControlsInfo.ahk](lib-a_to_h/GetControlsInfo.ahk)
1.93kb - 2018-06-02 | lib-a_to_h| +| **0549** | [GetCurrencyFormat.ahk](lib-a_to_h/GetCurrencyFormat.ahk)
1.41kb - 2019-08-30 | lib-a_to_h| +| **0550** | [GetCurrencyFormatEx.ahk](lib-a_to_h/GetCurrencyFormatEx.ahk)
1.44kb - 2019-08-30 | lib-a_to_h| +| **0551** | [GetCurrentProcess.ahk](lib-a_to_h/GetCurrentProcess.ahk)
0.33kb - 2018-08-16 | lib-a_to_h| +| **0552** | [getCurrentTime.ahk](lib-a_to_h/getCurrentTime.ahk)
0.79kb - 2018-10-30 | lib-a_to_h| +| **0553** | [GetDesktopWallpaper.ahk](lib-a_to_h/GetDesktopWallpaper.ahk)
0.46kb - 2018-03-08 | lib-a_to_h| +| **0554** | [GetDirParent.ahk](lib-a_to_h/GetDirParent.ahk)
0.39kb - 2018-03-08 | lib-a_to_h| +| **0555** | [GetDllBase.ahk](lib-a_to_h/GetDllBase.ahk)
0.76kb - 2018-06-02 | lib-a_to_h| +| **0556** | [GetDnsAddress.ahk](lib-a_to_h/GetDnsAddress.ahk)
1.18kb - 2018-06-02 | lib-a_to_h| +| **0557** | [GetDriveLetter.ahk](lib-a_to_h/GetDriveLetter.ahk)
1.23kb - 2018-05-05 | lib-a_to_h| +| **0558** | [GetDriveType.ahk](lib-a_to_h/GetDriveType.ahk)
1.60kb - 2018-03-08 | lib-a_to_h| +| **0559** | [GetDurationFromMilliseconds.ahk](lib-a_to_h/GetDurationFromMilliseconds.ahk)
1.00kb - 2018-05-05 | lib-a_to_h| +| **0560** | [GetEnv.ahk](lib-a_to_h/GetEnv.ahk)
0.44kb - 2018-06-02 | lib-a_to_h| +| **0561** | [GetEnvironmentVariables.ahk](lib-a_to_h/GetEnvironmentVariables.ahk)
4.53kb - 2018-12-02 | lib-a_to_h| +| **0562** | [GetExeMachine.ahk](lib-a_to_h/GetExeMachine.ahk)
0.17kb - 2018-06-02 | lib-a_to_h| +| **0563** | [GetFFTab.ahk](lib-a_to_h/GetFFTab.ahk)
1.81kb - 2014-03-20 | lib-a_to_h| +| **0564** | [GetFileAttributes.ahk](lib-a_to_h/GetFileAttributes.ahk)
1.65kb - 2018-03-08 | lib-a_to_h| +| **0565** | [GetFileEncoding (2).ahk](lib-a_to_h/GetFileEncoding%20(2).ahk)
3.35kb - 2018-03-08 | lib-a_to_h| +| **0566** | [GetFileEncoding.ahk](lib-a_to_h/GetFileEncoding.ahk)
0.45kb - 2018-06-02 | lib-a_to_h| +| **0567** | [GetFileFolderSize.ahk](lib-a_to_h/GetFileFolderSize.ahk)
0.68kb - 2018-06-02 | lib-a_to_h| +| **0568** | [GetFileOwner.ahk](lib-a_to_h/GetFileOwner.ahk)
0.86kb - 2018-03-08 | lib-a_to_h| +| **0569** | [GetFileVersionInfo 1.4.ahk](lib-a_to_h/GetFileVersionInfo%201.4.ahk)
2.34kb - 2017-07-14 | lib-a_to_h| +| **0570** | [GetFileVersionInfo.ahk](lib-a_to_h/GetFileVersionInfo.ahk)
2.00kb - 2018-03-08 | lib-a_to_h| +| **0571** | [GetFocusedHwnd.ahk](lib-a_to_h/GetFocusedHwnd.ahk)
0.25kb - 2016-09-15 | lib-a_to_h| +| **0572** | [GetFreeDriveSpace.ahk](lib-a_to_h/GetFreeDriveSpace.ahk)
0.50kb - 2018-06-02 | lib-a_to_h| +| **0573** | [GetFullSysVer.ahk](lib-a_to_h/GetFullSysVer.ahk)
2.60kb - 2017-07-14 | lib-a_to_h| +| **0574** | [GetHeaderDate.ahk](lib-a_to_h/GetHeaderDate.ahk)
5.42kb - 2019-03-30 | lib-a_to_h| +| **0575** | [GetHotkeyList.ahk](lib-a_to_h/GetHotkeyList.ahk)
5.58kb - 2018-12-02 | lib-a_to_h| +| **0576** | [GetIEWindowInfo.ahk](lib-a_to_h/GetIEWindowInfo.ahk)
0.55kb - 2018-06-02 | lib-a_to_h| +| **0577** | [GetImageSize (2).ahk](lib-a_to_h/GetImageSize%20(2).ahk)
42.10kb - 2019-10-29 | lib-a_to_h| +| **0578** | [getImageSize.ahk](lib-a_to_h/getImageSize.ahk)
0.60kb - 2018-10-30 | lib-a_to_h| +| **0579** | [getInstalledPrograms.ahk](lib-a_to_h/getInstalledPrograms.ahk)
0.37kb - 2018-06-02 | lib-a_to_h| +| **0580** | [GetJScriptObject.ahk](lib-a_to_h/GetJScriptObject.ahk)
0.99kb - 2019-04-27 | lib-a_to_h| +| **0581** | [getKey.ahk](lib-a_to_h/getKey.ahk)
0.46kb - 2019-02-08 | lib-a_to_h| +| **0582** | [getKeyFromValue.ahk](lib-a_to_h/getKeyFromValue.ahk)
0.33kb - 2019-02-08 | lib-a_to_h| +| **0583** | [GetKnownFolderPath.ahk](lib-a_to_h/GetKnownFolderPath.ahk)
2.73kb - 2018-03-08 | lib-a_to_h| +| **0584** | [GetListViewItems.ahk](lib-a_to_h/GetListViewItems.ahk)
5.99kb - 2018-06-02 | lib-a_to_h| +| **0585** | [GetListViewText.ahk](lib-a_to_h/GetListViewText.ahk)
6.14kb - 2018-06-02 | lib-a_to_h| +| **0586** | [GetLogText.ahk](lib-a_to_h/GetLogText.ahk)
0.34kb - 2018-05-05 | lib-a_to_h| +| **0587** | [GetMacAddress.ahk](lib-a_to_h/GetMacAddress.ahk)
1.26kb - 2018-06-02 | lib-a_to_h| +| **0588** | [GetMachineType.ahk](lib-a_to_h/GetMachineType.ahk)
8.01kb - 2018-03-08 | lib-a_to_h| +| **0589** | [GetModuleBaseAddr.ahk](lib-a_to_h/GetModuleBaseAddr.ahk)
1.65kb - 2018-06-02 | lib-a_to_h| +| **0590** | [GetMonthNum.ahk](lib-a_to_h/GetMonthNum.ahk)
0.68kb - 2018-05-05 | lib-a_to_h| +| **0591** | [GetMostRecentTime.ahk](lib-a_to_h/GetMostRecentTime.ahk)
0.43kb - 2018-05-05 | lib-a_to_h| +| **0592** | [GetNetSpeed.ahk](lib-a_to_h/GetNetSpeed.ahk)
0.65kb - 2018-07-16 | lib-a_to_h| +| **0593** | [GetNumberFormat.ahk](lib-a_to_h/GetNumberFormat.ahk)
1.40kb - 2019-08-30 | lib-a_to_h| +| **0594** | [GetNumberFormatEx.ahk](lib-a_to_h/GetNumberFormatEx.ahk)
1.43kb - 2019-08-30 | lib-a_to_h| +| **0595** | [GetObject.ahk](lib-a_to_h/GetObject.ahk)
1.14kb - 2018-03-08 | lib-a_to_h| +| **0596** | [GetObjectType.ahk](lib-a_to_h/GetObjectType.ahk)
0.21kb - 2018-03-08 | lib-a_to_h| +| **0597** | [GetOSVersion.ahk](lib-a_to_h/GetOSVersion.ahk)
11.52kb - 2018-06-02 | lib-a_to_h| +| **0598** | [GetParentDir.ahk](lib-a_to_h/GetParentDir.ahk)
0.20kb - 2018-06-02 | lib-a_to_h| +| **0599** | [GetPathFromHandle.ahk](lib-a_to_h/GetPathFromHandle.ahk)
0.67kb - 2018-03-08 | lib-a_to_h| +| **0600** | [getPosFromAngle.ahk](lib-a_to_h/getPosFromAngle.ahk)
0.15kb - 2018-10-30 | lib-a_to_h| +| **0601** | [getProcessBaseAddress.AHK](lib-a_to_h/getProcessBaseAddress.AHK)
0.57kb - 2018-06-02 | lib-a_to_h| +| **0602** | [getProcessBassAddressFromModules.ahk](lib-a_to_h/getProcessBassAddressFromModules.ahk)
2.54kb - 2018-06-02 | lib-a_to_h| +| **0603** | [GetProcessCommandLine.ahk](lib-a_to_h/GetProcessCommandLine.ahk)
4.38kb - 2018-08-16 | lib-a_to_h| +| **0604** | [getProcesses.AHK](lib-a_to_h/getProcesses.AHK)
2.72kb - 2018-06-02 | lib-a_to_h| +| **0605** | [getProcessFileVersion.ahk](lib-a_to_h/getProcessFileVersion.ahk)
1.98kb - 2018-06-02 | lib-a_to_h| +| **0606** | [GetProcessMemoryInfo.ahk](lib-a_to_h/GetProcessMemoryInfo.ahk)
3.06kb - 2018-08-16 | lib-a_to_h| +| **0607** | [GetProcessModules.ahk](lib-a_to_h/GetProcessModules.ahk)
1.67kb - 2018-06-02 | lib-a_to_h| +| **0608** | [GetProcessPath.ahk](lib-a_to_h/GetProcessPath.ahk)
1.24kb - 2018-08-16 | lib-a_to_h| +| **0609** | [GetProcessPebAddr.ahk](lib-a_to_h/GetProcessPebAddr.ahk)
1.51kb - 2018-08-16 | lib-a_to_h| +| **0610** | [GetProcessPriority.ahk](lib-a_to_h/GetProcessPriority.ahk)
2.13kb - 2018-08-16 | lib-a_to_h| +| **0611** | [GetProcessThreads.ahk](lib-a_to_h/GetProcessThreads.ahk)
1.34kb - 2018-06-02 | lib-a_to_h| +| **0612** | [GetProcessWorkingDir.ahk](lib-a_to_h/GetProcessWorkingDir.ahk)
1.71kb - 2018-06-02 | lib-a_to_h| +| **0613** | [GetProcessWorkingSetSize.ahk](lib-a_to_h/GetProcessWorkingSetSize.ahk)
1.55kb - 2018-08-16 | lib-a_to_h| +| **0614** | [GetProgramWaveVolume.AHK](lib-a_to_h/GetProgramWaveVolume.AHK)
0.26kb - 2018-06-02 | lib-a_to_h| +| **0615** | [getScreenAspectRatio.ahk](lib-a_to_h/getScreenAspectRatio.ahk)
0.50kb - 2018-06-02 | lib-a_to_h| +| **0616** | [getScriptHandle.ahk](lib-a_to_h/getScriptHandle.ahk)
0.19kb - 2018-06-02 | lib-a_to_h| +| **0617** | [getSelected.ahk](lib-a_to_h/getSelected.ahk)
0.21kb - 2018-10-30 | lib-a_to_h| +| **0618** | [GetServerName.ahk](lib-a_to_h/GetServerName.ahk)
1.33kb - 2018-05-05 | lib-a_to_h| +| **0619** | [GetStockObject.ahk](lib-a_to_h/GetStockObject.ahk)
0.34kb - 2018-03-08 | lib-a_to_h| +| **0620** | [GetSystemDateFormat.ahk](lib-a_to_h/GetSystemDateFormat.ahk)
1.04kb - 2018-05-05 | lib-a_to_h| +| **0621** | [GetSystemErrorText.ahk](lib-a_to_h/GetSystemErrorText.ahk)
0.07kb - 2018-05-05 | lib-a_to_h| +| **0622** | [getSystemLanguage.ahk](lib-a_to_h/getSystemLanguage.ahk)
4.72kb - 2018-06-02 | lib-a_to_h| +| **0623** | [GetSystemVersion.ahk](lib-a_to_h/GetSystemVersion.ahk)
1.75kb - 2018-03-08 | lib-a_to_h| +| **0624** | [GetTaskInfos.ahk](lib-a_to_h/GetTaskInfos.ahk)
0.83kb - 2019-05-09 | lib-a_to_h| +| **0625** | [GetTcpTable.ahk](lib-a_to_h/GetTcpTable.ahk)
2.43kb - 2018-06-02 | lib-a_to_h| +| **0626** | [GetTempFile.ahk](lib-a_to_h/GetTempFile.ahk)
1.32kb - 2018-03-08 | lib-a_to_h| +| **0627** | [GetTextExtentPoint.ahk](lib-a_to_h/GetTextExtentPoint.ahk)
1.51kb - 2019-04-12 | lib-a_to_h| +| **0628** | [GetThreadStartAddr.ahk](lib-a_to_h/GetThreadStartAddr.ahk)
2.29kb - 2018-06-02 | lib-a_to_h| +| **0629** | [GetTimeDifference.ahk](lib-a_to_h/GetTimeDifference.ahk)
1.20kb - 2018-05-05 | lib-a_to_h| +| **0630** | [GetTuples.ahk](lib-a_to_h/GetTuples.ahk)
2.80kb - 2016-02-05 | lib-a_to_h| +| **0631** | [GetUdpTable.ahk](lib-a_to_h/GetUdpTable.ahk)
1.81kb - 2018-06-02 | lib-a_to_h| +| **0632** | [getUTCOffset.ahk](lib-a_to_h/getUTCOffset.ahk)
0.33kb - 2018-10-30 | lib-a_to_h| +| **0633** | [GetVolumePathNames.ahk](lib-a_to_h/GetVolumePathNames.ahk)
1.41kb - 2018-03-08 | lib-a_to_h| +| **0634** | [GetWanIp.ahk](lib-a_to_h/GetWanIp.ahk)
0.55kb - 2018-07-16 | lib-a_to_h| +| **0635** | [GetWeekDay_TwoLang.ahk](lib-a_to_h/GetWeekDay_TwoLang.ahk)
2.21kb - 2018-06-02 | lib-a_to_h| +| **0636** | [getWinClientSize.ahk](lib-a_to_h/getWinClientSize.ahk)
0.18kb - 2018-10-30 | lib-a_to_h| +| **0637** | [GetWindowClassStyle.ahk](lib-a_to_h/GetWindowClassStyle.ahk)
0.74kb - 2018-11-23 | lib-a_to_h| +| **0638** | [GetWindowInfo.ahk](lib-a_to_h/GetWindowInfo.ahk)
4.55kb - 2018-06-02 | lib-a_to_h| +| **0639** | [GetWindowParent.ahk](lib-a_to_h/GetWindowParent.ahk)
0.49kb - 2018-03-08 | lib-a_to_h| +| **0640** | [GetWindowPos.ahk](lib-a_to_h/GetWindowPos.ahk)
0.96kb - 2018-03-08 | lib-a_to_h| +| **0641** | [GetWindowProcessPath.ahk](lib-a_to_h/GetWindowProcessPath.ahk)
1.44kb - 2018-03-08 | lib-a_to_h| +| **0642** | [GetWindowThreadProcessId.ahk](lib-a_to_h/GetWindowThreadProcessId.ahk)
1.09kb - 2018-03-08 | lib-a_to_h| +| **0643** | [GetWindowTitle.ahk](lib-a_to_h/GetWindowTitle.ahk)
0.80kb - 2018-03-08 | lib-a_to_h| +| **0644** | [GetWindowtOwner.ahk](lib-a_to_h/GetWindowtOwner.ahk)
0.47kb - 2018-03-08 | lib-a_to_h| +| **0645** | [GetWindowTransparency.ahk](lib-a_to_h/GetWindowTransparency.ahk)
0.75kb - 2018-03-08 | lib-a_to_h| +| **0646** | [GET_Devices.ahk](lib-a_to_h/GET_Devices.ahk)
13.21kb - 2019-12-06 | lib-a_to_h| +| **0647** | [Get_Explorer_Paths.ahk](lib-a_to_h/Get_Explorer_Paths.ahk)
2.56kb - 2018-06-02 | lib-a_to_h| +| **0648** | [get_variance.ahk](lib-a_to_h/get_variance.ahk)
0.90kb - 2019-05-06 | lib-a_to_h| +| **0649** | [GIThubReleasesAPI.ahk](lib-a_to_h/GIThubReleasesAPI.ahk)
1.57kb - 2018-05-23 | lib-a_to_h| +| **0650** | [GitHub_UpdateCheck.ahk](lib-a_to_h/GitHub_UpdateCheck.ahk)
2.55kb - 2018-11-14 | lib-a_to_h| +| **0651** | [gl.ahk](lib-a_to_h/gl.ahk)
95.46kb - 2018-06-02 | lib-a_to_h| +| **0652** | [glext.ahk](lib-a_to_h/glext.ahk)
496.04kb - 2019-10-11 | lib-a_to_h| +| **0653** | [glLite.ahk](lib-a_to_h/glLite.ahk)
4.66kb - 2019-10-11 | lib-a_to_h| +| **0654** | [GlobalStruct.ahk](lib-a_to_h/GlobalStruct.ahk)
6.00kb - 2016-09-15 | lib-a_to_h| +| **0655** | [GlobalVarsScript.ahk](lib-a_to_h/GlobalVarsScript.ahk)
0.79kb - 2018-06-02 | lib-a_to_h| +| **0656** | [glScreensaver.ahk](lib-a_to_h/glScreensaver.ahk)
11.14kb - 2019-11-06 | lib-a_to_h| +| **0657** | [glu.ahk](lib-a_to_h/glu.ahk)
16.00kb - 2018-06-02 | lib-a_to_h| +| **0658** | [glVideo.ahk](lib-a_to_h/glVideo.ahk)
7.98kb - 2019-11-06 | lib-a_to_h| +| **0659** | [googl.ahk](lib-a_to_h/googl.ahk)
0.59kb - 2018-06-02 | lib-a_to_h| +| **0660** | [GoogleEarth.ahk](lib-a_to_h/GoogleEarth.ahk)
23.64kb - 2012-05-15 | lib-a_to_h| +| **0661** | [GoogleEarthCOM.ahk](lib-a_to_h/GoogleEarthCOM.ahk)
10.19kb - 2012-05-15 | lib-a_to_h| +| **0662** | [GoogleTranslate_perJS.ahk](lib-a_to_h/GoogleTranslate_perJS.ahk)
8.84kb - 2019-04-24 | lib-a_to_h| +| **0663** | [gpBinEncode.ahk](lib-a_to_h/gpBinEncode.ahk)
7.23kb - 2018-09-11 | lib-a_to_h| +| **0664** | [GPF.ahk](lib-a_to_h/GPF.ahk)
4.85kb - 2010-06-08 | lib-a_to_h| +| **0665** | [GPF_v1.1c.ahk](lib-a_to_h/GPF_v1.1c.ahk)
4.85kb - 2010-06-08 | lib-a_to_h| +| **0666** | [grep.ahk](lib-a_to_h/grep.ahk)
0.98kb - 2011-02-10 | lib-a_to_h| +| **0667** | [GroupBox.ahk](lib-a_to_h/GroupBox.ahk)
3.68kb - 2019-05-26 | lib-a_to_h| +| **0668** | [GTranslate.ahk](lib-a_to_h/GTranslate.ahk)
3.13kb - 2018-06-02 | lib-a_to_h| +| **0669** | [GuiAddColorPalette.ahk](lib-a_to_h/GuiAddColorPalette.ahk)
3.18kb - 2018-03-08 | lib-a_to_h| +| **0670** | [GuiAddF.ahk](lib-a_to_h/GuiAddF.ahk)
3.64kb - 2015-06-12 | lib-a_to_h| +| **0671** | [guiAddonInfo.ahk](lib-a_to_h/guiAddonInfo.ahk)
6.54kb - 2018-06-02 | lib-a_to_h| +| **0672** | [GuiButtonIcon.ahk](lib-a_to_h/GuiButtonIcon.ahk)
2.41kb - 2018-06-02 | lib-a_to_h| +| **0673** | [guiCompile.ahk](lib-a_to_h/guiCompile.ahk)
3.98kb - 2018-06-02 | lib-a_to_h| +| **0674** | [GuiControl.ahk](lib-a_to_h/GuiControl.ahk)
1.55kb - 2019-05-26 | lib-a_to_h| +| **0675** | [GuiControlAddBox.ahk](lib-a_to_h/GuiControlAddBox.ahk)
3.19kb - 2019-05-26 | lib-a_to_h| +| **0676** | [GuiControlTips.ahk](lib-a_to_h/GuiControlTips.ahk)
13.83kb - 2018-03-08 | lib-a_to_h| +| **0677** | [guiCreate.ahk](lib-a_to_h/guiCreate.ahk)
4.34kb - 2019-01-06 | lib-a_to_h| +| **0678** | [GuiCtl.ahk](lib-a_to_h/GuiCtl.ahk)
1.89kb - 2018-06-02 | lib-a_to_h| +| **0679** | [GUID.ahk](lib-a_to_h/GUID.ahk)
0.53kb - 2018-06-02 | lib-a_to_h| +| **0680** | [guids.ahk](lib-a_to_h/guids.ahk)
0.98kb - 2019-05-26 | lib-a_to_h| +| **0681** | [GUID_and_UUID.ahk](lib-a_to_h/GUID_and_UUID.ahk)
2.78kb - 2018-11-04 | lib-a_to_h| +| **0682** | [guiExplorer.ahk](lib-a_to_h/guiExplorer.ahk)
9.11kb - 2018-06-02 | lib-a_to_h| +| **0683** | [GUIHider.ahk](lib-a_to_h/GUIHider.ahk)
13.02kb - 2012-08-06 | lib-a_to_h| +| **0684** | [GuiLayout.ahk](lib-a_to_h/GuiLayout.ahk)
9.13kb - 2014-03-20 | lib-a_to_h| +| **0685** | [guiOffscreenCheck.ahk](lib-a_to_h/guiOffscreenCheck.ahk)
0.41kb - 2018-06-02 | lib-a_to_h| +| **0686** | [GuiSettings.ahk](lib-a_to_h/GuiSettings.ahk)
1.21kb - 2018-06-02 | lib-a_to_h| +| **0687** | [GuiTabEx.ahk](lib-a_to_h/GuiTabEx.ahk)
17.11kb - 2013-03-22 | lib-a_to_h| +| **0688** | [GUIUniqueDefault().ahk](lib-a_to_h/GUIUniqueDefault().ahk)
2.91kb - 2018-06-02 | lib-a_to_h| +| **0689** | [GuiVar.ahk](lib-a_to_h/GuiVar.ahk)
4.02kb - 2018-07-06 | lib-a_to_h| +| **0690** | [GuiWnd.ahk](lib-a_to_h/GuiWnd.ahk)
4.21kb - 2018-06-02 | lib-a_to_h| +| **0691** | [Hash.ahk](lib-a_to_h/Hash.ahk)
1.32kb - 2016-02-20 | lib-a_to_h| +| **0692** | [HashFile.ahk](lib-a_to_h/HashFile.ahk)
2.75kb - 2019-09-07 | lib-a_to_h| +| **0693** | [Help.ahk](lib-a_to_h/Help.ahk)
26.09kb - 2018-06-02 | lib-a_to_h| +| **0694** | [HelperFunctions.ahk](lib-a_to_h/HelperFunctions.ahk)
3.65kb - 2018-06-02 | lib-a_to_h| +| **0695** | [Hex2Bin.ahk](lib-a_to_h/Hex2Bin.ahk)
1.22kb - 2016-09-15 | lib-a_to_h| +| **0696** | [HexToBin.ahk](lib-a_to_h/HexToBin.ahk)
0.55kb - 2018-06-02 | lib-a_to_h| +| **0697** | [HexView.ahk](lib-a_to_h/HexView.ahk)
30.25kb - 2018-06-02 | lib-a_to_h| +| **0698** | [HIBYTE.ahk](lib-a_to_h/HIBYTE.ahk)
0.04kb - 2018-06-02 | lib-a_to_h| +| **0699** | [HideFocusBorder.ahk](lib-a_to_h/HideFocusBorder.ahk)
1.17kb - 2018-06-20 | lib-a_to_h| +| **0700** | [HideInfotipOnMouseOver.ahk](lib-a_to_h/HideInfotipOnMouseOver.ahk)
1.51kb - 2018-05-05 | lib-a_to_h| +| **0701** | [hideTaskbar.ahk](lib-a_to_h/hideTaskbar.ahk)
1.14kb - 2019-02-08 | lib-a_to_h| +| **0702** | [HiEdit.ahk](lib-a_to_h/HiEdit.ahk)
40.78kb - 2019-08-30 | lib-a_to_h| +| **0703** | [HimetricToPixel.ahk](lib-a_to_h/HimetricToPixel.ahk)
0.12kb - 2018-03-08 | lib-a_to_h| +| **0704** | [HIWORD.ahk](lib-a_to_h/HIWORD.ahk)
0.04kb - 2018-06-02 | lib-a_to_h| +| **0705** | [hkswap.ahk](lib-a_to_h/hkswap.ahk)
1.63kb - 2014-07-06 | lib-a_to_h| +| **0706** | [HL7.ahk](lib-a_to_h/HL7.ahk)
13.35kb - 2018-06-02 | lib-a_to_h| +| **0707** | [HLink.ahk](lib-a_to_h/HLink.ahk)
4.31kb - 2018-06-02 | lib-a_to_h| +| **0708** | [Hook.ahk](lib-a_to_h/Hook.ahk)
1.18kb - 2018-11-06 | lib-a_to_h| +| **0709** | [hotcorners.ahk](lib-a_to_h/hotcorners.ahk)
2.71kb - 2018-06-10 | lib-a_to_h| +| **0710** | [HotkeyControl.ahk](lib-a_to_h/HotkeyControl.ahk)
10.13kb - 2018-06-02 | lib-a_to_h| +| **0711** | [HotkeyGUI.ahk](lib-a_to_h/HotkeyGUI.ahk)
26.37kb - 2014-07-06 | lib-a_to_h| +| **0712** | [Hotkey_Functions.ahk](lib-a_to_h/Hotkey_Functions.ahk)
6.29kb - 2016-06-01 | lib-a_to_h| +| **0713** | [Hotkey_IfControlActive.ahk](lib-a_to_h/Hotkey_IfControlActive.ahk)
6.13kb - 2018-10-15 | lib-a_to_h| +| **0714** | [Hotstring.ahk](lib-a_to_h/Hotstring.ahk)
5.79kb - 2018-06-02 | lib-a_to_h| +| **0715** | [Hotstrings (2).ahk](lib-a_to_h/Hotstrings%20(2).ahk)
6.35kb - 2019-01-10 | lib-a_to_h| +| **0716** | [Hotstrings.ahk](lib-a_to_h/Hotstrings.ahk)
2.16kb - 2018-06-02 | lib-a_to_h| +| **0717** | [HoverScroll.ahk](lib-a_to_h/HoverScroll.ahk)
16.63kb - 2017-11-04 | lib-a_to_h| +| **0718** | [HPDF.ahk](lib-a_to_h/HPDF.ahk)
35.73kb - 2018-06-02 | lib-a_to_h| +| **0719** | [HtmDlg.ahk](lib-a_to_h/HtmDlg.ahk)
9.71kb - 2018-06-02 | lib-a_to_h| +| **0720** | [HTMLmodule.ahk](lib-a_to_h/HTMLmodule.ahk)
3.84kb - 2018-06-02 | lib-a_to_h| +| **0721** | [hToMs.ahk](lib-a_to_h/hToMs.ahk)
0.04kb - 2018-10-30 | lib-a_to_h| +| **0722** | [http-lib.ahk](lib-a_to_h/http-lib.ahk)
30.20kb - 2018-06-07 | lib-a_to_h| +| **0723** | [httpQuery.ahk](lib-a_to_h/httpQuery.ahk)
11.07kb - 2018-06-02 | lib-a_to_h| +| **0724** | [HttpQueryInfo.ahk](lib-a_to_h/HttpQueryInfo.ahk)
2.64kb - 2018-06-02 | lib-a_to_h| +| **0725** | [HTTPRequest.ahk](lib-a_to_h/HTTPRequest.ahk)
53.61kb - 2018-06-02 | lib-a_to_h| +| **0726** | [HTTPRequest_2.ahk](lib-a_to_h/HTTPRequest_2.ahk)
53.61kb - 2019-10-11 | lib-a_to_h| +| **0727** | [huffmann.ahk](lib-a_to_h/huffmann.ahk)
6.28kb - 2018-09-11 | lib-a_to_h| +| **0728** | [hwmonitor.ahk](lib-a_to_h/hwmonitor.ahk)
1.48kb - 2019-10-31 | lib-a_to_h| +| **0729** | [hwnd.ahk](lib-a_to_h/hwnd.ahk)
0.23kb - 2014-10-28 | lib-a_to_h| +| **0730** | [hwndHung.ahk](lib-a_to_h/hwndHung.ahk)
0.07kb - 2018-10-30 | lib-a_to_h| +| **0731** | [hXfromHBITMAP.ahk](lib-a_to_h/hXfromHBITMAP.ahk)
0.64kb - 2018-08-22 | lib-a_to_h| +| **0732** | [hyde.ahk](lib-a_to_h/hyde.ahk)
1.12kb - 2016-09-15 | lib-a_to_h| +| **0733** | [_.ahk](lib-a_to_h/_.ahk)
13.81kb - 2018-06-02 | lib-a_to_h| +| **0734** | [_filesystem.ahk](lib-a_to_h/_filesystem.ahk)
4.42kb - 2018-06-02 | lib-a_to_h| +| **0735** | [_Forms.ahk](lib-a_to_h/_Forms.ahk)
5.00kb - 2018-06-02 | lib-a_to_h| +| **0736** | [_guiCreate.ahk](lib-a_to_h/_guiCreate.ahk)
4.34kb - 2018-08-05 | lib-a_to_h| +| **0737** | [_MemoryLibrary.ahk](lib-a_to_h/_MemoryLibrary.ahk)
23.64kb - 2018-06-02 | lib-a_to_h| +| **0738** | [header.ahk](lib-a_to_h/core_audio_interfaces/header.ahk)
2.64kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0739** | [IAudioEndpointVolume.ahk](lib-a_to_h/core_audio_interfaces/IAudioEndpointVolume.ahk)
8.33kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0740** | [IAudioSessionControl.ahk](lib-a_to_h/core_audio_interfaces/IAudioSessionControl.ahk)
2.77kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0741** | [IAudioSessionControl2.ahk](lib-a_to_h/core_audio_interfaces/IAudioSessionControl2.ahk)
2.34kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0742** | [IAudioSessionEnumerator.ahk](lib-a_to_h/core_audio_interfaces/IAudioSessionEnumerator.ahk)
1.92kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0743** | [IAudioSessionManager2.ahk](lib-a_to_h/core_audio_interfaces/IAudioSessionManager2.ahk)
1.78kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0744** | [IMMDevice.ahk](lib-a_to_h/core_audio_interfaces/IMMDevice.ahk)
4.97kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0745** | [IMMDeviceCollection.ahk](lib-a_to_h/core_audio_interfaces/IMMDeviceCollection.ahk)
2.17kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0746** | [IMMDeviceEnumerator.ahk](lib-a_to_h/core_audio_interfaces/IMMDeviceEnumerator.ahk)
5.71kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0747** | [IPropertyStore.ahk](lib-a_to_h/core_audio_interfaces/IPropertyStore.ahk)
5.49kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0748** | [ISimpleAudioVolume.ahk](lib-a_to_h/core_audio_interfaces/ISimpleAudioVolume.ahk)
2.52kb - 2018-09-15 | lib-a_to_h/core_audio_interfaces| +| **0749** | [7zip.ahk](lib-i_to_z/7zip.ahk)
24.78kb - 2018-10-10 | lib-i_to_z| +| **0750** | [HTML_Util.ahk](lib-i_to_z/HTML_Util.ahk)
4.20kb - 2019-05-04 | lib-i_to_z| +| **0751** | [Icon.ahk](lib-i_to_z/Icon.ahk)
4.69kb - 2018-06-02 | lib-i_to_z| +| **0752** | [IconChanger.ahk](lib-i_to_z/IconChanger.ahk)
2.46kb - 2016-01-20 | lib-i_to_z| +| **0753** | [IconEx.ahk](lib-i_to_z/IconEx.ahk)
16.49kb - 2018-06-02 | lib-i_to_z| +| **0754** | [Icon_speciale.ahk](lib-i_to_z/Icon_speciale.ahk)
4.65kb - 2018-03-08 | lib-i_to_z| +| **0755** | [IDragSourceHelper.ahk](lib-i_to_z/IDragSourceHelper.ahk)
3.60kb - 2018-06-02 | lib-i_to_z| +| **0756** | [IDropSource.ahk](lib-i_to_z/IDropSource.ahk)
4.30kb - 2018-06-02 | lib-i_to_z| +| **0757** | [IE.ahk](lib-i_to_z/IE.ahk)
11.58kb - 2018-06-02 | lib-i_to_z| +| **0758** | [IE7_Dom.ahk](lib-i_to_z/IE7_Dom.ahk)
7.27kb - 2018-06-02 | lib-i_to_z| +| **0759** | [IEControl.ahk](lib-i_to_z/IEControl.ahk)
6.26kb - 2007-05-09 | lib-i_to_z| +| **0760** | [IEGet.ahk](lib-i_to_z/IEGet.ahk)
1.43kb - 2016-09-15 | lib-i_to_z| +| **0761** | [IEL.ahk](lib-i_to_z/IEL.ahk)
4.79kb - 2018-06-02 | lib-i_to_z| +| **0762** | [IELib.ahk](lib-i_to_z/IELib.ahk)
13.77kb - 2019-10-21 | lib-i_to_z| +| **0763** | [IEnumFORMATETC.ahk](lib-i_to_z/IEnumFORMATETC.ahk)
1.66kb - 2018-06-20 | lib-i_to_z| +| **0764** | [IEReady.ahk](lib-i_to_z/IEReady.ahk)
2.11kb - 2018-06-02 | lib-i_to_z| +| **0765** | [ifContains.ahk](lib-i_to_z/ifContains.ahk)
0.08kb - 2018-10-30 | lib-i_to_z| +| **0766** | [IfControlActive.ahk](lib-i_to_z/IfControlActive.ahk)
6.11kb - 2018-10-08 | lib-i_to_z| +| **0767** | [IFileDialog.ahk](lib-i_to_z/IFileDialog.ahk)
6.69kb - 2019-05-04 | lib-i_to_z| +| **0768** | [ifIn.ahk](lib-i_to_z/ifIn.ahk)
0.07kb - 2018-10-30 | lib-i_to_z| +| **0769** | [Ignore.ahk](lib-i_to_z/Ignore.ahk)
3.34kb - 2018-06-02 | lib-i_to_z| +| **0770** | [IL.ahk](lib-i_to_z/IL.ahk)
1.02kb - 2018-06-02 | lib-i_to_z| +| **0771** | [ILButton.ahk](lib-i_to_z/ILButton.ahk)
4.64kb - 2018-06-02 | lib-i_to_z| +| **0772** | [IL_EX.ahk](lib-i_to_z/IL_EX.ahk)
13.24kb - 2017-03-28 | lib-i_to_z| +| **0773** | [Image2Include.ahk](lib-i_to_z/Image2Include.ahk)
10.57kb - 2018-04-29 | lib-i_to_z| +| **0774** | [Image2Text.ahk](lib-i_to_z/Image2Text.ahk)
27.36kb - 2018-11-22 | lib-i_to_z| +| **0775** | [ImageList.ahk](lib-i_to_z/ImageList.ahk)
5.08kb - 2019-12-08 | lib-i_to_z| +| **0776** | [imageSearchc.ahk](lib-i_to_z/imageSearchc.ahk)
0.63kb - 2018-10-30 | lib-i_to_z| +| **0777** | [implode.ahk](lib-i_to_z/implode.ahk)
0.15kb - 2018-06-02 | lib-i_to_z| +| **0778** | [ImportTypeLib.ahk](lib-i_to_z/ImportTypeLib.ahk)
68.46kb - 2018-08-17 | lib-i_to_z| +| **0779** | [Include.ahk](lib-i_to_z/Include.ahk)
3.20kb - 2018-06-02 | lib-i_to_z| +| **0780** | [inc_mf_0_3.ahk](lib-i_to_z/inc_mf_0_3.ahk)
6.63kb - 2018-06-02 | lib-i_to_z| +| **0781** | [inc_mf_System_IO_0_3.ahk](lib-i_to_z/inc_mf_System_IO_0_3.ahk)
0.98kb - 2018-06-02 | lib-i_to_z| +| **0782** | [InfoGUI.ahk](lib-i_to_z/InfoGUI.ahk)
18.30kb - 2017-09-04 | lib-i_to_z| +| **0783** | [infogulchEncodings.ahk](lib-i_to_z/infogulchEncodings.ahk)
3.72kb - 2018-06-02 | lib-i_to_z| +| **0784** | [InfoTip.ahk](lib-i_to_z/InfoTip.ahk)
4.69kb - 2018-05-05 | lib-i_to_z| +| **0785** | [ini.ahk](lib-i_to_z/ini.ahk)
57.22kb - 2018-06-02 | lib-i_to_z| +| **0786** | [IniFile.ahk](lib-i_to_z/IniFile.ahk)
14.93kb - 2018-03-08 | lib-i_to_z| +| **0787** | [IniParser.ahk](lib-i_to_z/IniParser.ahk)
1.30kb - 2018-06-02 | lib-i_to_z| +| **0788** | [IniSettingsEditor.ahk](lib-i_to_z/IniSettingsEditor.ahk)
16.08kb - 2018-06-02 | lib-i_to_z| +| **0789** | [iniWrapper.ahk](lib-i_to_z/iniWrapper.ahk)
4.27kb - 2018-06-02 | lib-i_to_z| +| **0790** | [InjectAhkDll.ahk](lib-i_to_z/InjectAhkDll.ahk)
9.72kb - 2018-06-02 | lib-i_to_z| +| **0791** | [InjectDll (2).ahk](lib-i_to_z/InjectDll%20(2).ahk)
2.39kb - 2016-09-06 | lib-i_to_z| +| **0792** | [InjectDll.ahk](lib-i_to_z/InjectDll.ahk)
1.32kb - 2016-09-15 | lib-i_to_z| +| **0793** | [InjectDllA.ahk](lib-i_to_z/InjectDllA.ahk)
1.52kb - 2018-12-18 | lib-i_to_z| +| **0794** | [InMemoryWindowCapture.ahk](lib-i_to_z/InMemoryWindowCapture.ahk)
16.32kb - 2018-11-24 | lib-i_to_z| +| **0795** | [InputBox.ahk](lib-i_to_z/InputBox.ahk)
4.57kb - 2018-03-08 | lib-i_to_z| +| **0796** | [InputBoxEx.ahk](lib-i_to_z/InputBoxEx.ahk)
2.05kb - 2016-10-10 | lib-i_to_z| +| **0797** | [InsertionSort.ahk](lib-i_to_z/InsertionSort.ahk)
0.80kb - 2014-06-10 | lib-i_to_z| +| **0798** | [Install.ahk](lib-i_to_z/Install.ahk)
0.86kb - 2018-06-02 | lib-i_to_z| +| **0799** | [Instance.ahk](lib-i_to_z/Instance.ahk)
2.43kb - 2018-06-02 | lib-i_to_z| +| **0800** | [internet.ahk](lib-i_to_z/internet.ahk)
4.72kb - 2018-06-10 | lib-i_to_z| +| **0801** | [InternetCheckConnection.ahk](lib-i_to_z/InternetCheckConnection.ahk)
0.81kb - 2018-03-08 | lib-i_to_z| +| **0802** | [internetConnected.ahk](lib-i_to_z/internetConnected.ahk)
0.17kb - 2018-10-30 | lib-i_to_z| +| **0803** | [InternetFileRead.ahk](lib-i_to_z/InternetFileRead.ahk)
6.51kb - 2018-06-02 | lib-i_to_z| +| **0804** | [InternetGetRedirect 20110825.ahk](lib-i_to_z/InternetGetRedirect%2020110825.ahk)
1.18kb - 2011-08-25 | lib-i_to_z| +| **0805** | [InvBase64.ahk](lib-i_to_z/InvBase64.ahk)
0.67kb - 2015-05-21 | lib-i_to_z| +| **0806** | [invertCaseChr.ahk](lib-i_to_z/invertCaseChr.ahk)
0.08kb - 2018-10-30 | lib-i_to_z| +| **0807** | [invertCaseStr.ahk](lib-i_to_z/invertCaseStr.ahk)
0.14kb - 2018-10-30 | lib-i_to_z| +| **0808** | [IPC.ahk](lib-i_to_z/IPC.ahk)
3.35kb - 2016-02-20 | lib-i_to_z| +| **0809** | [IPToInt().ahk](lib-i_to_z/IPToInt().ahk)
0.29kb - 2013-07-22 | lib-i_to_z| +| **0810** | [Is.ahk](lib-i_to_z/Is.ahk)
1.00kb - 2018-12-18 | lib-i_to_z| +| **0811** | [is2.ahk](lib-i_to_z/is2.ahk)
8.74kb - 2019-04-05 | lib-i_to_z| +| **0812** | [is64bitExe.ahk](lib-i_to_z/is64bitExe.ahk)
0.09kb - 2018-10-30 | lib-i_to_z| +| **0813** | [isAlpha.ahk](lib-i_to_z/isAlpha.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0814** | [isAlphaNum.ahk](lib-i_to_z/isAlphaNum.ahk)
0.06kb - 2018-10-30 | lib-i_to_z| +| **0815** | [isBetween.ahk](lib-i_to_z/isBetween.ahk)
0.11kb - 2018-10-30 | lib-i_to_z| +| **0816** | [IsBom.ahk](lib-i_to_z/IsBom.ahk)
0.41kb - 2018-06-02 | lib-i_to_z| +| **0817** | [isDigit.ahk](lib-i_to_z/isDigit.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0818** | [IsDirectory.ahk](lib-i_to_z/IsDirectory.ahk)
0.54kb - 2018-03-08 | lib-i_to_z| +| **0819** | [IsEmpty.ahk](lib-i_to_z/IsEmpty.ahk)
2.22kb - 2018-06-02 | lib-i_to_z| +| **0820** | [IsFileInUse.ahk](lib-i_to_z/IsFileInUse.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| +| **0821** | [IsFilePathTooLong.ahk](lib-i_to_z/IsFilePathTooLong.ahk)
0.80kb - 2018-05-05 | lib-i_to_z| +| **0822** | [isFloat.ahk](lib-i_to_z/isFloat.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0823** | [IsFullScreen.ahk](lib-i_to_z/IsFullScreen.ahk)
3.72kb - 2018-05-05 | lib-i_to_z| +| **0824** | [IsFuncObj.ahk](lib-i_to_z/IsFuncObj.ahk)
0.44kb - 2018-12-18 | lib-i_to_z| +| **0825** | [isHex.ahk](lib-i_to_z/isHex.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0826** | [isInt.ahk](lib-i_to_z/isInt.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0827** | [isLikeHotkey.ahk](lib-i_to_z/isLikeHotkey.ahk)
3.72kb - 2019-11-06 | lib-i_to_z| +| **0828** | [isLower.ahk](lib-i_to_z/isLower.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0829** | [IsMouseOverTaskbar.ahk](lib-i_to_z/IsMouseOverTaskbar.ahk)
3.59kb - 2019-01-14 | lib-i_to_z| +| **0830** | [isNum.ahk](lib-i_to_z/isNum.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0831** | [IsPrime.ahk](lib-i_to_z/IsPrime.ahk)
0.46kb - 2018-03-08 | lib-i_to_z| +| **0832** | [IsProcess.ahk](lib-i_to_z/IsProcess.ahk)
3.08kb - 2018-08-16 | lib-i_to_z| +| **0833** | [IsProcessElevated.ahk](lib-i_to_z/IsProcessElevated.ahk)
1.27kb - 2018-06-02 | lib-i_to_z| +| **0834** | [IsService.ahk](lib-i_to_z/IsService.ahk)
1.35kb - 2018-03-08 | lib-i_to_z| +| **0835** | [isSpace.ahk](lib-i_to_z/isSpace.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0836** | [IsType.ahk](lib-i_to_z/IsType.ahk)
2.63kb - 2018-12-18 | lib-i_to_z| +| **0837** | [IsUpdated.ahk](lib-i_to_z/IsUpdated.ahk)
0.24kb - 2018-06-02 | lib-i_to_z| +| **0838** | [isUpper.ahk](lib-i_to_z/isUpper.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0839** | [isValidEmail.ahk](lib-i_to_z/isValidEmail.ahk)
0.37kb - 2018-06-02 | lib-i_to_z| +| **0840** | [IsValidFileName.ahk](lib-i_to_z/IsValidFileName.ahk)
1.17kb - 2019-04-19 | lib-i_to_z| +| **0841** | [IsWindow.ahk](lib-i_to_z/IsWindow.ahk)
1.00kb - 2018-03-08 | lib-i_to_z| +| **0842** | [IsWow64Process.ahk](lib-i_to_z/IsWow64Process.ahk)
1.39kb - 2018-08-16 | lib-i_to_z| +| **0843** | [iWeb.ahk](lib-i_to_z/iWeb.ahk)
17.34kb - 2018-06-02 | lib-i_to_z| +| **0844** | [iWeb_L.ahk](lib-i_to_z/iWeb_L.ahk)
11.35kb - 2018-06-02 | lib-i_to_z| +| **0845** | [JEEGetAllText.ahk](lib-i_to_z/JEEGetAllText.ahk)
2.91kb - 2018-06-02 | lib-i_to_z| +| **0846** | [JEEGuiText.ahk](lib-i_to_z/JEEGuiText.ahk)
108.24kb - 2018-06-02 | lib-i_to_z| +| **0847** | [JEE_Functions.ahk](lib-i_to_z/JEE_Functions.ahk)
163.28kb - 2019-09-03 | lib-i_to_z| +| **0848** | [JEE_GuiText.ahk](lib-i_to_z/JEE_GuiText.ahk)
106.79kb - 2018-07-07 | lib-i_to_z| +| **0849** | [JoinScript.ahk](lib-i_to_z/JoinScript.ahk)
4.88kb - 2016-09-15 | lib-i_to_z| +| **0850** | [JoystickTest.ahk](lib-i_to_z/JoystickTest.ahk)
2.73kb - 2018-06-02 | lib-i_to_z| +| **0851** | [json.ahk](lib-i_to_z/json.ahk)
1.59kb - 2011-02-10 | lib-i_to_z| +| **0852** | [Json4Ahk.ahk](lib-i_to_z/Json4Ahk.ahk)
2.09kb - 2019-08-11 | lib-i_to_z| +| **0853** | [JSON_AHk_Parsing_for_ahk2.ahk](lib-i_to_z/JSON_AHk_Parsing_for_ahk2.ahk)
11.36kb - 2020-01-04 | lib-i_to_z| +| **0854** | [JSON_Beautify.ahk](lib-i_to_z/JSON_Beautify.ahk)
2.17kb - 2018-06-02 | lib-i_to_z| +| **0855** | [JSON_Build&Parse.ahk](lib-i_to_z/JSON_Build&Parse.ahk)
3.07kb - 2020-01-04 | lib-i_to_z| +| **0856** | [JSON_FromObj.ahk](lib-i_to_z/JSON_FromObj.ahk)
1.62kb - 2018-06-02 | lib-i_to_z| +| **0857** | [JSON_Library.ahk](lib-i_to_z/JSON_Library.ahk)
13.24kb - 2019-05-03 | lib-i_to_z| +| **0858** | [JSON_ToObj.ahk](lib-i_to_z/JSON_ToObj.ahk)
3.54kb - 2020-01-04 | lib-i_to_z| +| **0859** | [JumpList.ahk](lib-i_to_z/JumpList.ahk)
11.56kb - 2017-09-04 | lib-i_to_z| +| **0860** | [Jxon.ahk](lib-i_to_z/Jxon.ahk)
6.01kb - 2018-06-02 | lib-i_to_z| +| **0861** | [Keyboard.ahk](lib-i_to_z/Keyboard.ahk)
6.07kb - 2018-09-15 | lib-i_to_z| +| **0862** | [KeyboardLayout.ahk](lib-i_to_z/KeyboardLayout.ahk)
2.94kb - 2018-06-02 | lib-i_to_z| +| **0863** | [KeyboardLED.ahk](lib-i_to_z/KeyboardLED.ahk)
2.41kb - 2015-05-12 | lib-i_to_z| +| **0864** | [lanConnected.ahk](lib-i_to_z/lanConnected.ahk)
0.13kb - 2018-10-30 | lib-i_to_z| +| **0865** | [Lastkey.ahk](lib-i_to_z/Lastkey.ahk)
10.65kb - 2019-10-11 | lib-i_to_z| +| **0866** | [LBDDLib.ahk](lib-i_to_z/LBDDLib.ahk)
44.83kb - 2019-05-07 | lib-i_to_z| +| **0867** | [LBEX.ahk](lib-i_to_z/LBEX.ahk)
29.10kb - 2019-05-07 | lib-i_to_z| +| **0868** | [LedControl.ahk](lib-i_to_z/LedControl.ahk)
3.37kb - 2017-10-23 | lib-i_to_z| +| **0869** | [LetterVariations.ahk](lib-i_to_z/LetterVariations.ahk)
2.15kb - 2018-06-02 | lib-i_to_z| +| **0870** | [LetUserSelectRect.ahk](lib-i_to_z/LetUserSelectRect.ahk)
1.46kb - 2018-08-20 | lib-i_to_z| +| **0871** | [LibCon.ahk](lib-i_to_z/LibCon.ahk)
30.94kb - 2017-10-23 | lib-i_to_z| +| **0872** | [libcurl.ahk](lib-i_to_z/libcurl.ahk)
20.34kb - 2018-06-02 | lib-i_to_z| +| **0873** | [libHaruUnicode.ahk](lib-i_to_z/libHaruUnicode.ahk)
36.70kb - 2018-12-21 | lib-i_to_z| +| **0874** | [Limit.ahk](lib-i_to_z/Limit.ahk)
0.25kb - 2018-03-08 | lib-i_to_z| +| **0875** | [LinearGradient.ahk](lib-i_to_z/LinearGradient.ahk)
6.89kb - 2019-02-08 | lib-i_to_z| +| **0876** | [lineReader.ahk](lib-i_to_z/lineReader.ahk)
8.22kb - 2018-06-02 | lib-i_to_z| +| **0877** | [List-Functions.ahk](lib-i_to_z/List-Functions.ahk)
6.99kb - 2019-04-20 | lib-i_to_z| +| **0878** | [List.ahk](lib-i_to_z/List.ahk)
5.41kb - 2018-06-02 | lib-i_to_z| +| **0879** | [ListboxFunctions.ahk](lib-i_to_z/ListboxFunctions.ahk)
1.99kb - 2018-07-13 | lib-i_to_z| +| **0880** | [ListCompare.ahk](lib-i_to_z/ListCompare.ahk)
2.29kb - 2018-06-02 | lib-i_to_z| +| **0881** | [ListFuncs.ahk](lib-i_to_z/ListFuncs.ahk)
24.98kb - 2019-10-31 | lib-i_to_z| +| **0882** | [ListIncludes.ahk](lib-i_to_z/ListIncludes.ahk)
3.41kb - 2011-09-30 | lib-i_to_z| +| **0883** | [listlines (2).ahk](lib-i_to_z/listlines%20(2).ahk)
1.57kb - 2017-04-07 | lib-i_to_z| +| **0884** | [ListLines.ahk](lib-i_to_z/ListLines.ahk)
0.84kb - 2018-06-02 | lib-i_to_z| +| **0885** | [Listvars.ahk](lib-i_to_z/Listvars.ahk)
1.12kb - 2017-04-07 | lib-i_to_z| +| **0886** | [List_Ex.ahk](lib-i_to_z/List_Ex.ahk)
24.98kb - 2019-04-08 | lib-i_to_z| +| **0887** | [LoadFile.ahk](lib-i_to_z/LoadFile.ahk)
2.66kb - 2018-11-04 | lib-i_to_z| +| **0888** | [loadimage.ahk](lib-i_to_z/loadimage.ahk)
1.08kb - 2017-11-08 | lib-i_to_z| +| **0889** | [LoadLib.ahk](lib-i_to_z/LoadLib.ahk)
0.27kb - 2018-08-17 | lib-i_to_z| +| **0890** | [LoadLibExtended.ahk](lib-i_to_z/LoadLibExtended.ahk)
0.45kb - 2018-11-04 | lib-i_to_z| +| **0891** | [LoadLibrary.ahk](lib-i_to_z/LoadLibrary.ahk)
0.99kb - 2019-10-11 | lib-i_to_z| +| **0892** | [LoadPicture.ahk](lib-i_to_z/LoadPicture.ahk)
21.73kb - 2018-06-02 | lib-i_to_z| +| **0893** | [LoadScriptString.ahk](lib-i_to_z/LoadScriptString.ahk)
1.11kb - 2014-03-21 | lib-i_to_z| +| **0894** | [LoadString.ahk](lib-i_to_z/LoadString.ahk)
1.67kb - 2018-03-08 | lib-i_to_z| +| **0895** | [LOBYTE.ahk](lib-i_to_z/LOBYTE.ahk)
0.03kb - 2018-06-02 | lib-i_to_z| +| **0896** | [LongOperationInit.ahk](lib-i_to_z/LongOperationInit.ahk)
0.20kb - 2016-09-15 | lib-i_to_z| +| **0897** | [LongOperationUpdate.ahk](lib-i_to_z/LongOperationUpdate.ahk)
0.34kb - 2016-09-15 | lib-i_to_z| +| **0898** | [LongOperationUpdateForSendKeys.ahk](lib-i_to_z/LongOperationUpdateForSendKeys.ahk)
0.34kb - 2016-09-15 | lib-i_to_z| +| **0899** | [LookupLanguageName.ahk](lib-i_to_z/LookupLanguageName.ahk)
0.83kb - 2018-03-08 | lib-i_to_z| +| **0900** | [LookupLanguageValue.ahk](lib-i_to_z/LookupLanguageValue.ahk)
1.07kb - 2018-03-08 | lib-i_to_z| +| **0901** | [LookupPrivilegeName.ahk](lib-i_to_z/LookupPrivilegeName.ahk)
1.01kb - 2018-08-16 | lib-i_to_z| +| **0902** | [LookupPrivilegeValue.ahk](lib-i_to_z/LookupPrivilegeValue.ahk)
2.01kb - 2018-08-16 | lib-i_to_z| +| **0903** | [Lower.ahk](lib-i_to_z/Lower.ahk)
0.28kb - 2018-06-02 | lib-i_to_z| +| **0904** | [LowerReplaceSpace.ahk](lib-i_to_z/LowerReplaceSpace.ahk)
0.35kb - 2018-06-02 | lib-i_to_z| +| **0905** | [LowLevel.ahk](lib-i_to_z/LowLevel.ahk)
16.70kb - 2010-08-06 | lib-i_to_z| +| **0906** | [LowLevel_code.ahk](lib-i_to_z/LowLevel_code.ahk)
37.29kb - 2009-08-30 | lib-i_to_z| +| **0907** | [LOWORD.ahk](lib-i_to_z/LOWORD.ahk)
0.03kb - 2018-06-02 | lib-i_to_z| +| **0908** | [LSON.ahk](lib-i_to_z/LSON.ahk)
10.44kb - 2016-09-15 | lib-i_to_z| +| **0909** | [lua.ahk](lib-i_to_z/lua.ahk)
65.19kb - 2015-01-10 | lib-i_to_z| +| **0910** | [LV.ahk](lib-i_to_z/LV.ahk)
1.58kb - 2018-06-02 | lib-i_to_z| +| **0911** | [LVOrder.ahk](lib-i_to_z/LVOrder.ahk)
1.52kb - 2019-11-20 | lib-i_to_z| +| **0912** | [LV_A.ahk](lib-i_to_z/LV_A.ahk)
31.33kb - 2018-06-02 | lib-i_to_z| +| **0913** | [LV_Color.ahk](lib-i_to_z/LV_Color.ahk)
3.86kb - 2016-09-15 | lib-i_to_z| +| **0914** | [LV_Colors.ahk](lib-i_to_z/LV_Colors.ahk)
20.67kb - 2018-06-02 | lib-i_to_z| +| **0915** | [LV_CustomColors.ahk](lib-i_to_z/LV_CustomColors.ahk)
9.32kb - 2019-08-05 | lib-i_to_z| +| **0916** | [LV_EDIT.ahk](lib-i_to_z/LV_EDIT.ahk)
9.09kb - 2018-06-02 | lib-i_to_z| +| **0917** | [LV_EX.ahk](lib-i_to_z/LV_EX.ahk)
39.74kb - 2019-03-24 | lib-i_to_z| +| **0918** | [LV_ExtListView.ahk](lib-i_to_z/LV_ExtListView.ahk)
15.79kb - 2018-12-21 | lib-i_to_z| +| **0919** | [LV_EX_2.ahk](lib-i_to_z/LV_EX_2.ahk)
45.14kb - 2019-06-16 | lib-i_to_z| +| **0920** | [LV_G.ahk](lib-i_to_z/LV_G.ahk)
23.89kb - 2018-06-02 | lib-i_to_z| +| **0921** | [LV_GetListViewText.ahk](lib-i_to_z/LV_GetListViewText.ahk)
6.14kb - 2018-04-16 | lib-i_to_z| +| **0922** | [LV_Group.ahk](lib-i_to_z/LV_Group.ahk)
11.57kb - 2018-08-09 | lib-i_to_z| +| **0923** | [LV_GroupView.ahk](lib-i_to_z/LV_GroupView.ahk)
1.23kb - 2017-09-24 | lib-i_to_z| +| **0924** | [LV_InCellEdit.ahk](lib-i_to_z/LV_InCellEdit.ahk)
26.54kb - 2018-06-02 | lib-i_to_z| +| **0925** | [LV_Lib_1.01.ahk](lib-i_to_z/LV_Lib_1.01.ahk)
8.06kb - 2018-06-02 | lib-i_to_z| +| **0926** | [LV_M.ahk](lib-i_to_z/LV_M.ahk)
9.21kb - 2018-07-13 | lib-i_to_z| +| **0927** | [LV_S.ahk](lib-i_to_z/LV_S.ahk)
7.79kb - 2018-08-20 | lib-i_to_z| +| **0928** | [LV_SortArrow.ahk](lib-i_to_z/LV_SortArrow.ahk)
1.45kb - 2018-06-02 | lib-i_to_z| +| **0929** | [LV_SpecialFunctions.ahk](lib-i_to_z/LV_SpecialFunctions.ahk)
12.73kb - 2018-04-22 | lib-i_to_z| +| **0930** | [LV_TV_CustomColors.ahk](lib-i_to_z/LV_TV_CustomColors.ahk)
18.02kb - 2018-08-20 | lib-i_to_z| +| **0931** | [LV_va.ahk](lib-i_to_z/LV_va.ahk)
2.11kb - 2017-04-07 | lib-i_to_z| +| **0932** | [LV_X.ahk](lib-i_to_z/LV_X.ahk)
6.11kb - 2018-06-02 | lib-i_to_z| +| **0933** | [m.ahk](lib-i_to_z/m.ahk)
0.10kb - 2014-10-28 | lib-i_to_z| +| **0934** | [majkinetor_Dock.ahk](lib-i_to_z/majkinetor_Dock.ahk)
12.26kb - 2018-11-04 | lib-i_to_z| +| **0935** | [MakeIco.ahk](lib-i_to_z/MakeIco.ahk)
3.53kb - 2015-05-31 | lib-i_to_z| +| **0936** | [MAKELANGID.ahk](lib-i_to_z/MAKELANGID.ahk)
0.06kb - 2018-06-02 | lib-i_to_z| +| **0937** | [MAKELCID.ahk](lib-i_to_z/MAKELCID.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| +| **0938** | [MAKELONG.ahk](lib-i_to_z/MAKELONG.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| +| **0939** | [MAKELPARAM.ahk](lib-i_to_z/MAKELPARAM.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| +| **0940** | [MAKELRESULT.ahk](lib-i_to_z/MAKELRESULT.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| +| **0941** | [MAKEWORD.ahk](lib-i_to_z/MAKEWORD.ahk)
0.05kb - 2018-06-02 | lib-i_to_z| +| **0942** | [MAKEWPARAM.ahk](lib-i_to_z/MAKEWPARAM.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| +| **0943** | [ManagedGuis.ahk](lib-i_to_z/ManagedGuis.ahk)
38.00kb - 2018-06-02 | lib-i_to_z| +| **0944** | [ManagedResources.ahk](lib-i_to_z/ManagedResources.ahk)
9.92kb - 2018-06-02 | lib-i_to_z| +| **0945** | [ManageFonts.ahk](lib-i_to_z/ManageFonts.ahk)
4.07kb - 2018-11-14 | lib-i_to_z| +| **0946** | [Manifest.ahk](lib-i_to_z/Manifest.ahk)
1.94kb - 2018-06-02 | lib-i_to_z| +| **0947** | [Map.ahk](lib-i_to_z/Map.ahk)
2.99kb - 2011-11-01 | lib-i_to_z| +| **0948** | [Markdown2HTML.ahk](lib-i_to_z/Markdown2HTML.ahk)
6.89kb - 2018-06-02 | lib-i_to_z| +| **0949** | [MatchItemFromList.ahk](lib-i_to_z/MatchItemFromList.ahk)
2.96kb - 2018-06-02 | lib-i_to_z| +| **0950** | [Math.ahk](lib-i_to_z/Math.ahk)
29.11kb - 2018-08-25 | lib-i_to_z| +| **0951** | [matrix.ahk](lib-i_to_z/matrix.ahk)
20.79kb - 2016-09-15 | lib-i_to_z| +| **0952** | [MCI.ahk](lib-i_to_z/MCI.ahk)
44.27kb - 2018-06-02 | lib-i_to_z| +| **0953** | [MCode.ahk](lib-i_to_z/MCode.ahk)
1.81kb - 2018-06-02 | lib-i_to_z| +| **0954** | [MCodeH.ahk](lib-i_to_z/MCodeH.ahk)
0.44kb - 2018-06-02 | lib-i_to_z| +| **0955** | [md5.ahk](lib-i_to_z/md5.ahk)
4.75kb - 2018-06-02 | lib-i_to_z| +| **0956** | [MD5_2.ahk](lib-i_to_z/MD5_2.ahk)
3.53kb - 2018-11-22 | lib-i_to_z| +| **0957** | [MD5_File.ahk](lib-i_to_z/MD5_File.ahk)
1.09kb - 2016-09-15 | lib-i_to_z| +| **0958** | [md5_L.ahk](lib-i_to_z/md5_L.ahk)
1.33kb - 2018-06-02 | lib-i_to_z| +| **0959** | [MDMF.ahk](lib-i_to_z/MDMF.ahk)
4.59kb - 2018-07-06 | lib-i_to_z| +| **0960** | [MeasureText.ahk](lib-i_to_z/MeasureText.ahk)
0.95kb - 2018-06-22 | lib-i_to_z| +| **0961** | [Mem.ahk](lib-i_to_z/Mem.ahk)
6.24kb - 2018-06-22 | lib-i_to_z| +| **0962** | [MemLib.ahk](lib-i_to_z/MemLib.ahk)
1.97kb - 2018-06-02 | lib-i_to_z| +| **0963** | [Memmngmnt.ahk](lib-i_to_z/Memmngmnt.ahk)
6.12kb - 2018-06-20 | lib-i_to_z| +| **0964** | [memory.ahk](lib-i_to_z/memory.ahk)
2.31kb - 2018-06-02 | lib-i_to_z| +| **0965** | [MemoryBuffer.ahk](lib-i_to_z/MemoryBuffer.ahk)
4.57kb - 2018-06-02 | lib-i_to_z| +| **0966** | [MemoryMore.ahk](lib-i_to_z/MemoryMore.ahk)
6.02kb - 2018-06-12 | lib-i_to_z| +| **0967** | [Menu.ahk](lib-i_to_z/Menu.ahk)
16.08kb - 2018-06-02 | lib-i_to_z| +| **0968** | [Menu_SetSysMenu.ahk](lib-i_to_z/Menu_SetSysMenu.ahk)
5.45kb - 2018-05-25 | lib-i_to_z| +| **0969** | [mg.ahk](lib-i_to_z/mg.ahk)
4.99kb - 2018-06-02 | lib-i_to_z| +| **0970** | [MI (2).ahk](lib-i_to_z/MI%20(2).ahk)
19.67kb - 2018-06-02 | lib-i_to_z| +| **0971** | [MI.ahk](lib-i_to_z/MI.ahk)
20.25kb - 2018-06-02 | lib-i_to_z| +| **0972** | [Midi.ahk](lib-i_to_z/Midi.ahk)
16.78kb - 2018-06-02 | lib-i_to_z| +| **0973** | [MimeTypes.ahk](lib-i_to_z/MimeTypes.ahk)
3.22kb - 2019-07-16 | lib-i_to_z| +| **0974** | [MiniDump.ahk](lib-i_to_z/MiniDump.ahk)
1.23kb - 2018-06-02 | lib-i_to_z| +| **0975** | [Misc Functions.ahk](lib-i_to_z/Misc%20Functions.ahk)
4.59kb - 2017-04-07 | lib-i_to_z| +| **0976** | [misc.ahk](lib-i_to_z/misc.ahk)
10.12kb - 2018-06-02 | lib-i_to_z| +| **0977** | [MiscFunctions.ahk](lib-i_to_z/MiscFunctions.ahk)
68.10kb - 2019-04-12 | lib-i_to_z| +| **0978** | [MMenu.ahk](lib-i_to_z/MMenu.ahk)
23.87kb - 2013-01-07 | lib-i_to_z| +| **0979** | [Monitor.ahk](lib-i_to_z/Monitor.ahk)
13.71kb - 2019-10-02 | lib-i_to_z| +| **0980** | [Monitorconfig.ahk](lib-i_to_z/Monitorconfig.ahk)
1.53kb - 2019-10-31 | lib-i_to_z| +| **0981** | [MonitorConstants.ahk](lib-i_to_z/MonitorConstants.ahk)
0.14kb - 2019-10-31 | lib-i_to_z| +| **0982** | [Months.ahk](lib-i_to_z/Months.ahk)
0.88kb - 2019-12-05 | lib-i_to_z| +| **0983** | [Mount.ahk](lib-i_to_z/Mount.ahk)
10.88kb - 2018-06-02 | lib-i_to_z| +| **0984** | [Mouse.ahk](lib-i_to_z/Mouse.ahk)
10.70kb - 2018-09-15 | lib-i_to_z| +| **0985** | [MouseExtras.ahk](lib-i_to_z/MouseExtras.ahk)
1.78kb - 2018-04-29 | lib-i_to_z| +| **0986** | [MouseKeyboardCounter.ahk](lib-i_to_z/MouseKeyboardCounter.ahk)
43.31kb - 2018-06-02 | lib-i_to_z| +| **0987** | [MouseMove_Ellipse.ahk](lib-i_to_z/MouseMove_Ellipse.ahk)
3.84kb - 2018-06-02 | lib-i_to_z| +| **0988** | [mouseOverWin.ahk](lib-i_to_z/mouseOverWin.ahk)
0.12kb - 2018-10-30 | lib-i_to_z| +| **0989** | [MoveTaskbar.ahk](lib-i_to_z/MoveTaskbar.ahk)
3.50kb - 2017-10-23 | lib-i_to_z| +| **0990** | [MPC-HC TimeCode.ahk](lib-i_to_z/MPC-HC%20TimeCode.ahk)
1.26kb - 2018-06-02 | lib-i_to_z| +| **0991** | [mpgc.ahk](lib-i_to_z/mpgc.ahk)
4.69kb - 2019-10-26 | lib-i_to_z| +| **0992** | [msg.ahk](lib-i_to_z/msg.ahk)
67.23kb - 2018-06-02 | lib-i_to_z| +| **0993** | [msTill.ahk](lib-i_to_z/msTill.ahk)
0.39kb - 2018-06-02 | lib-i_to_z| +| **0994** | [msToH.ahk](lib-i_to_z/msToH.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0995** | [msToM.ahk](lib-i_to_z/msToM.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0996** | [msToS.ahk](lib-i_to_z/msToS.ahk)
0.05kb - 2018-10-30 | lib-i_to_z| +| **0997** | [mToMs.ahk](lib-i_to_z/mToMs.ahk)
0.04kb - 2018-10-30 | lib-i_to_z| +| **0998** | [Music.ahk](lib-i_to_z/Music.ahk)
12.94kb - 2018-06-02 | lib-i_to_z| +| **0999** | [muteWindow.ahk](lib-i_to_z/muteWindow.ahk)
0.42kb - 2018-10-30 | lib-i_to_z| +| **1000** | [mySQL.ahk](lib-i_to_z/mySQL.ahk)
11.39kb - 2018-06-02 | lib-i_to_z| +| **1001** | [NetGetControl.ahk](lib-i_to_z/NetGetControl.ahk)
9.04kb - 2019-04-07 | lib-i_to_z| +| **1002** | [NetShareEnum.ahk](lib-i_to_z/NetShareEnum.ahk)
2.91kb - 2018-06-02 | lib-i_to_z| +| **1003** | [NetworkAPI.ahk](lib-i_to_z/NetworkAPI.ahk)
4.58kb - 2018-06-02 | lib-i_to_z| +| **1004** | [NewChromeWin.ahk](lib-i_to_z/NewChromeWin.ahk)
0.93kb - 2019-10-21 | lib-i_to_z| +| **1005** | [newestFile.ahk](lib-i_to_z/newestFile.ahk)
0.91kb - 2018-06-02 | lib-i_to_z| +| **1006** | [nicRestart.ahk](lib-i_to_z/nicRestart.ahk)
0.21kb - 2018-10-30 | lib-i_to_z| +| **1007** | [nicSetState.ahk](lib-i_to_z/nicSetState.ahk)
0.17kb - 2018-10-30 | lib-i_to_z| +| **1008** | [NormaliseLineEndings.ahk](lib-i_to_z/NormaliseLineEndings.ahk)
1.28kb - 2018-05-05 | lib-i_to_z| +| **1009** | [Notify.ahk](lib-i_to_z/Notify.ahk)
18.95kb - 2018-05-05 | lib-i_to_z| +| **1010** | [NotifyOnTray.ahk](lib-i_to_z/NotifyOnTray.ahk)
19.83kb - 2018-06-02 | lib-i_to_z| +| **1011** | [NoTrayOrphans.ahk](lib-i_to_z/NoTrayOrphans.ahk)
3.56kb - 2016-09-15 | lib-i_to_z| +| **1012** | [NumBase.ahk](lib-i_to_z/NumBase.ahk)
1.04kb - 2019-12-04 | lib-i_to_z| +| **1013** | [NumGet_.ahk](lib-i_to_z/NumGet_.ahk)
1.40kb - 2019-10-28 | lib-i_to_z| +| **1014** | [NumOp-StrOp.ahk](lib-i_to_z/NumOp-StrOp.ahk)
9.67kb - 2019-04-27 | lib-i_to_z| +| **1015** | [NumSize.ahk](lib-i_to_z/NumSize.ahk)
0.11kb - 2018-06-02 | lib-i_to_z| +| **1016** | [NumType.ahk](lib-i_to_z/NumType.ahk)
0.17kb - 2018-06-02 | lib-i_to_z| +| **1017** | [OAuth.ahk](lib-i_to_z/OAuth.ahk)
17.21kb - 2019-10-11 | lib-i_to_z| +| **1018** | [Obj.ahk](lib-i_to_z/Obj.ahk)
1.18kb - 2018-06-02 | lib-i_to_z| +| **1019** | [ObjByRef.ahk](lib-i_to_z/ObjByRef.ahk)
4.43kb - 2018-06-02 | lib-i_to_z| +| **1020** | [ObjCSV.ahk](lib-i_to_z/ObjCSV.ahk)
80.91kb - 2018-06-02 | lib-i_to_z| +| **1021** | [ObjDump.ahk](lib-i_to_z/ObjDump.ahk)
3.39kb - 2018-06-02 | lib-i_to_z| +| **1022** | [object.ahk](lib-i_to_z/object.ahk)
12.08kb - 2018-06-02 | lib-i_to_z| +| **1023** | [Object.String.ahk](lib-i_to_z/Object.String.ahk)
31.97kb - 2019-06-12 | lib-i_to_z| +| **1024** | [ObjectBundles.ahk](lib-i_to_z/ObjectBundles.ahk)
13.57kb - 2018-06-02 | lib-i_to_z| +| **1025** | [ObjectHandling.ahk](lib-i_to_z/ObjectHandling.ahk)
13.04kb - 2018-12-21 | lib-i_to_z| +| **1026** | [ObjectTools.ahk](lib-i_to_z/ObjectTools.ahk)
11.06kb - 2017-04-07 | lib-i_to_z| +| **1027** | [ObjLoad.ahk](lib-i_to_z/ObjLoad.ahk)
1.48kb - 2018-07-25 | lib-i_to_z| +| **1028** | [ObjLoadandBump.ahk](lib-i_to_z/ObjLoadandBump.ahk)
3.61kb - 2018-06-02 | lib-i_to_z| +| **1029** | [ObjRegisterActive.ahk](lib-i_to_z/ObjRegisterActive.ahk)
1.39kb - 2018-08-17 | lib-i_to_z| +| **1030** | [ObjShare.ahk](lib-i_to_z/ObjShare.ahk)
0.39kb - 2018-06-02 | lib-i_to_z| +| **1031** | [ObjToFile.ahk](lib-i_to_z/ObjToFile.ahk)
3.47kb - 2019-10-26 | lib-i_to_z| +| **1032** | [objtostring.ahk](lib-i_to_z/objtostring.ahk)
4.68kb - 2019-10-26 | lib-i_to_z| +| **1033** | [ObjTree.ahk](lib-i_to_z/ObjTree.ahk)
23.54kb - 2018-06-02 | lib-i_to_z| +| **1034** | [OCR.ahk](lib-i_to_z/OCR.ahk)
5.38kb - 2018-06-02 | lib-i_to_z| +| **1035** | [ocrBWCompare.ahk](lib-i_to_z/ocrBWCompare.ahk)
0.42kb - 2018-06-20 | lib-i_to_z| +| **1036** | [ocrBWconverter.ahk](lib-i_to_z/ocrBWconverter.ahk)
0.35kb - 2018-06-20 | lib-i_to_z| +| **1037** | [ocrGetDigit.ahk](lib-i_to_z/ocrGetDigit.ahk)
0.56kb - 2018-06-20 | lib-i_to_z| +| **1038** | [ocrLeftToRight.ahk](lib-i_to_z/ocrLeftToRight.ahk)
0.56kb - 2018-06-20 | lib-i_to_z| +| **1039** | [OH.ahk](lib-i_to_z/OH.ahk)
22.81kb - 2018-12-08 | lib-i_to_z| +| **1040** | [oIE.ahk](lib-i_to_z/oIE.ahk)
5.21kb - 2018-08-20 | lib-i_to_z| +| **1041** | [OldToolbar.ahk](lib-i_to_z/OldToolbar.ahk)
44.71kb - 2015-10-31 | lib-i_to_z| +| **1042** | [On.ahk](lib-i_to_z/On.ahk)
11.28kb - 2018-06-02 | lib-i_to_z| +| **1043** | [OnExitF.ahk](lib-i_to_z/OnExitF.ahk)
0.64kb - 2018-06-02 | lib-i_to_z| +| **1044** | [OnMenuHilite.ahk](lib-i_to_z/OnMenuHilite.ahk)
1.91kb - 2018-06-02 | lib-i_to_z| +| **1045** | [OnPBMsg.ahk](lib-i_to_z/OnPBMsg.ahk)
4.60kb - 2018-06-02 | lib-i_to_z| +| **1046** | [OnWin.ahk](lib-i_to_z/OnWin.ahk)
9.57kb - 2018-06-02 | lib-i_to_z| +| **1047** | [OOPFunctions.ahk](lib-i_to_z/OOPFunctions.ahk)
0.70kb - 2018-06-02 | lib-i_to_z| +| **1048** | [OpenFileLocation.ahk](lib-i_to_z/OpenFileLocation.ahk)
0.46kb - 2018-05-05 | lib-i_to_z| +| **1049** | [OpenFilepaths.ahk](lib-i_to_z/OpenFilepaths.ahk)
3.59kb - 2018-05-05 | lib-i_to_z| +| **1050** | [OpenFolderAndSelectItems.ahk](lib-i_to_z/OpenFolderAndSelectItems.ahk)
2.49kb - 2018-03-08 | lib-i_to_z| +| **1051** | [OpenProcess.ahk](lib-i_to_z/OpenProcess.ahk)
1.22kb - 2018-08-16 | lib-i_to_z| +| **1052** | [OpenProcessToken.ahk](lib-i_to_z/OpenProcessToken.ahk)
1.28kb - 2018-08-16 | lib-i_to_z| +| **1053** | [OpenWith.ahk](lib-i_to_z/OpenWith.ahk)
0.75kb - 2018-03-08 | lib-i_to_z| +| **1054** | [Operators_Fct.ahk](lib-i_to_z/Operators_Fct.ahk)
8.99kb - 2017-07-14 | lib-i_to_z| +| **1055** | [OrderedArray.ahk](lib-i_to_z/OrderedArray.ahk)
3.82kb - 2019-10-20 | lib-i_to_z| +| **1056** | [OSTest.ahk](lib-i_to_z/OSTest.ahk)
1.38kb - 2017-07-14 | lib-i_to_z| +| **1057** | [Package.ahk](lib-i_to_z/Package.ahk)
4.28kb - 2018-06-02 | lib-i_to_z| +| **1058** | [PackingASentence.ahk](lib-i_to_z/PackingASentence.ahk)
0.81kb - 2019-11-01 | lib-i_to_z| +| **1059** | [Panel.ahk](lib-i_to_z/Panel.ahk)
8.00kb - 2019-04-24 | lib-i_to_z| +| **1060** | [para.ahk](lib-i_to_z/para.ahk)
11.56kb - 2019-09-10 | lib-i_to_z| +| **1061** | [pArr.ahk](lib-i_to_z/pArr.ahk)
0.74kb - 2017-05-09 | lib-i_to_z| +| **1062** | [Parse.ahk](lib-i_to_z/Parse.ahk)
4.88kb - 2018-06-02 | lib-i_to_z| +| **1063** | [ParseScriptCommandLine.ahk](lib-i_to_z/ParseScriptCommandLine.ahk)
2.61kb - 2018-02-28 | lib-i_to_z| +| **1064** | [PasteAsCSV.ahk](lib-i_to_z/PasteAsCSV.ahk)
3.77kb - 2019-02-16 | lib-i_to_z| +| **1065** | [path-win-to-unix.ahk](lib-i_to_z/path-win-to-unix.ahk)
0.34kb - 2019-11-01 | lib-i_to_z| +| **1066** | [Path.ahk](lib-i_to_z/Path.ahk)
1.60kb - 2018-06-02 | lib-i_to_z| +| **1067** | [Path2.ahk](lib-i_to_z/Path2.ahk)
24.78kb - 2018-05-25 | lib-i_to_z| +| **1068** | [patternScan.ahk](lib-i_to_z/patternScan.ahk)
5.97kb - 2014-03-21 | lib-i_to_z| +| **1069** | [PBhash.ahk](lib-i_to_z/PBhash.ahk)
31.85kb - 2018-08-23 | lib-i_to_z| +| **1070** | [PBhashtype.ahk](lib-i_to_z/PBhashtype.ahk)
1.26kb - 2018-08-23 | lib-i_to_z| +| **1071** | [pbkdf2.ahk](lib-i_to_z/pbkdf2.ahk)
6.10kb - 2018-10-03 | lib-i_to_z| +| **1072** | [PBtimeserver.ahk](lib-i_to_z/PBtimeserver.ahk)
0.72kb - 2018-08-23 | lib-i_to_z| +| **1073** | [Pebwa.ahk](lib-i_to_z/Pebwa.ahk)
9.98kb - 2018-06-02 | lib-i_to_z| +| **1074** | [PECreateEmpty.ahk](lib-i_to_z/PECreateEmpty.ahk)
3.34kb - 2018-06-02 | lib-i_to_z| +| **1075** | [Percent.ahk](lib-i_to_z/Percent.ahk)
0.41kb - 2018-03-08 | lib-i_to_z| +| **1076** | [PercentChange.ahk](lib-i_to_z/PercentChange.ahk)
0.59kb - 2018-03-08 | lib-i_to_z| +| **1077** | [PercentDiff.ahk](lib-i_to_z/PercentDiff.ahk)
0.64kb - 2018-03-08 | lib-i_to_z| +| **1078** | [PerfectPunctuation.ahk](lib-i_to_z/PerfectPunctuation.ahk)
1.40kb - 2019-11-01 | lib-i_to_z| +| **1079** | [Perl.ahk](lib-i_to_z/Perl.ahk)
1.89kb - 2018-06-02 | lib-i_to_z| +| **1080** | [Permutate.ahk](lib-i_to_z/Permutate.ahk)
0.68kb - 2019-08-30 | lib-i_to_z| +| **1081** | [Permutation.ahk](lib-i_to_z/Permutation.ahk)
0.98kb - 2018-11-18 | lib-i_to_z| +| **1082** | [pgArray.ahk](lib-i_to_z/pgArray.ahk)
3.00kb - 2018-06-02 | lib-i_to_z| +| **1083** | [PHY.ahk](lib-i_to_z/PHY.ahk)
16.84kb - 2018-06-02 | lib-i_to_z| +| **1084** | [Ping (2).ahk](lib-i_to_z/Ping%20(2).ahk)
1.57kb - 2018-06-02 | lib-i_to_z| +| **1085** | [ping.ahk](lib-i_to_z/ping.ahk)
10.51kb - 2018-06-02 | lib-i_to_z| +| **1086** | [ping2.ahk](lib-i_to_z/ping2.ahk)
3.44kb - 2018-06-02 | lib-i_to_z| +| **1087** | [ping_by_Uberi.ahk](lib-i_to_z/ping_by_Uberi.ahk)
13.92kb - 2019-07-31 | lib-i_to_z| +| **1088** | [PipeRun.ahk](lib-i_to_z/PipeRun.ahk)
2.24kb - 2018-06-02 | lib-i_to_z| +| **1089** | [PivotArraySort.ahk](lib-i_to_z/PivotArraySort.ahk)
3.46kb - 2019-05-12 | lib-i_to_z| +| **1090** | [PixelGetColorWithinTolerance.ahk](lib-i_to_z/PixelGetColorWithinTolerance.ahk)
2.15kb - 2019-04-20 | lib-i_to_z| +| **1091** | [PixelToHimetric.ahk](lib-i_to_z/PixelToHimetric.ahk)
0.12kb - 2018-03-08 | lib-i_to_z| +| **1092** | [PixelToTwip.ahk](lib-i_to_z/PixelToTwip.ahk)
0.11kb - 2018-03-08 | lib-i_to_z| +| **1093** | [PixPut.ahk](lib-i_to_z/PixPut.ahk)
2.81kb - 2011-02-10 | lib-i_to_z| +| **1094** | [PlaySound.ahk](lib-i_to_z/PlaySound.ahk)
1.43kb - 2018-06-02 | lib-i_to_z| +| **1095** | [PleasantNotify.ahk](lib-i_to_z/PleasantNotify.ahk)
2.09kb - 2018-06-02 | lib-i_to_z| +| **1096** | [PluginHelper.ahk](lib-i_to_z/PluginHelper.ahk)
1.11kb - 2018-06-02 | lib-i_to_z| +| **1097** | [plugins.ahk](lib-i_to_z/plugins.ahk)
1.65kb - 2018-06-02 | lib-i_to_z| +| **1098** | [PngToBase64.ahk](lib-i_to_z/PngToBase64.ahk)
0.69kb - 2019-03-31 | lib-i_to_z| +| **1099** | [PolynomialRouteSolver.ahk](lib-i_to_z/PolynomialRouteSolver.ahk)
2.54kb - 2019-05-05 | lib-i_to_z| +| **1100** | [PopUpMenuFix.ahk](lib-i_to_z/PopUpMenuFix.ahk)
4.89kb - 2019-05-25 | lib-i_to_z| +| **1101** | [PopupXY.ahk](lib-i_to_z/PopupXY.ahk)
4.76kb - 2011-04-25 | lib-i_to_z| +| **1102** | [portallib.ahk](lib-i_to_z/portallib.ahk)
163.72kb - 2019-02-18 | lib-i_to_z| +| **1103** | [portallib_cleared.ahk](lib-i_to_z/portallib_cleared.ahk)
157.08kb - 2019-02-18 | lib-i_to_z| +| **1104** | [PostClick.ahk](lib-i_to_z/PostClick.ahk)
0.21kb - 2014-06-06 | lib-i_to_z| +| **1105** | [PowerShell.ahk](lib-i_to_z/PowerShell.ahk)
0.78kb - 2018-03-08 | lib-i_to_z| +| **1106** | [Prefs.ahk](lib-i_to_z/Prefs.ahk)
3.09kb - 2018-06-02 | lib-i_to_z| +| **1107** | [prettyReport.ahk](lib-i_to_z/prettyReport.ahk)
18.76kb - 2016-09-15 | lib-i_to_z| +| **1108** | [print.ahk](lib-i_to_z/print.ahk)
4.40kb - 2016-04-03 | lib-i_to_z| +| **1109** | [Printer (2).ahk](lib-i_to_z/Printer%20(2).ahk)
2.46kb - 2018-03-08 | lib-i_to_z| +| **1110** | [Printer.ahk](lib-i_to_z/Printer.ahk)
2.46kb - 2018-09-15 | lib-i_to_z| +| **1111** | [printerfunctions.ahk](lib-i_to_z/printerfunctions.ahk)
1.62kb - 2018-06-02 | lib-i_to_z| +| **1112** | [printerfunctionsV102.ahk](lib-i_to_z/printerfunctionsV102.ahk)
1.69kb - 2019-02-18 | lib-i_to_z| +| **1113** | [Process.ahk](lib-i_to_z/Process.ahk)
7.92kb - 2018-06-02 | lib-i_to_z| +| **1114** | [processExist.ahk](lib-i_to_z/processExist.ahk)
0.07kb - 2018-10-30 | lib-i_to_z| +| **1115** | [ProcessInfo.ahk](lib-i_to_z/ProcessInfo.ahk)
2.80kb - 2018-06-15 | lib-i_to_z| +| **1116** | [ProcessList.ahk](lib-i_to_z/ProcessList.ahk)
2.94kb - 2019-04-30 | lib-i_to_z| +| **1117** | [ProcessMem.ahk](lib-i_to_z/ProcessMem.ahk)
1.58kb - 2018-06-02 | lib-i_to_z| +| **1118** | [processPriority.ahk](lib-i_to_z/processPriority.ahk)
0.16kb - 2018-10-30 | lib-i_to_z| +| **1119** | [ProfileHandler.ahk](lib-i_to_z/ProfileHandler.ahk)
9.78kb - 2015-09-17 | lib-i_to_z| +| **1120** | [Progress.ahk](lib-i_to_z/Progress.ahk)
4.79kb - 2018-03-08 | lib-i_to_z| +| **1121** | [progressBox.ahk](lib-i_to_z/progressBox.ahk)
0.68kb - 2018-06-02 | lib-i_to_z| +| **1122** | [Progress_Lib.ahk](lib-i_to_z/Progress_Lib.ahk)
13.95kb - 2016-09-15 | lib-i_to_z| +| **1123** | [Property.ahk](lib-i_to_z/Property.ahk)
17.67kb - 2018-06-02 | lib-i_to_z| +| **1124** | [PropertyWin.ahk](lib-i_to_z/PropertyWin.ahk)
57.85kb - 2014-03-19 | lib-i_to_z| +| **1125** | [psTool.ahk](lib-i_to_z/psTool.ahk)
1.91kb - 2019-08-09 | lib-i_to_z| +| **1126** | [PS_BMP.ahk](lib-i_to_z/PS_BMP.ahk)
35.92kb - 2018-11-18 | lib-i_to_z| +| **1127** | [PS_ExceptionHandler.ahk](lib-i_to_z/PS_ExceptionHandler.ahk)
4.68kb - 2019-04-23 | lib-i_to_z| +| **1128** | [PS_GIF.ahk](lib-i_to_z/PS_GIF.ahk)
59.09kb - 2018-11-18 | lib-i_to_z| +| **1129** | [PS_PAL.ahk](lib-i_to_z/PS_PAL.ahk)
46.69kb - 2018-11-18 | lib-i_to_z| +| **1130** | [PS_Quantization.ahk](lib-i_to_z/PS_Quantization.ahk)
17.73kb - 2018-11-18 | lib-i_to_z| +| **1131** | [PUM_API.ahk](lib-i_to_z/PUM_API.ahk)
22.73kb - 2018-06-02 | lib-i_to_z| +| **1132** | [QA.ahk](lib-i_to_z/QA.ahk)
15.39kb - 2019-10-28 | lib-i_to_z| +| **1133** | [Qhtm.ahk](lib-i_to_z/Qhtm.ahk)
18.76kb - 2018-06-02 | lib-i_to_z| +| **1134** | [QMsgBox.ahk](lib-i_to_z/QMsgBox.ahk)
5.65kb - 2013-10-30 | lib-i_to_z| +| **1135** | [QMsgBox_foos.ahk](lib-i_to_z/QMsgBox_foos.ahk)
2.72kb - 2013-10-30 | lib-i_to_z| +| **1136** | [QPX.ahk](lib-i_to_z/QPX.ahk)
0.46kb - 2011-02-10 | lib-i_to_z| +| **1137** | [Query.ahk](lib-i_to_z/Query.ahk)
1.36kb - 2018-07-29 | lib-i_to_z| +| **1138** | [QueryDosDevice.ahk](lib-i_to_z/QueryDosDevice.ahk)
0.79kb - 2018-09-15 | lib-i_to_z| +| **1139** | [QueryRecycleBin.ahk](lib-i_to_z/QueryRecycleBin.ahk)
3.89kb - 2018-03-08 | lib-i_to_z| +| **1140** | [QueryTokenPrivileges.ahk](lib-i_to_z/QueryTokenPrivileges.ahk)
3.09kb - 2018-08-16 | lib-i_to_z| +| **1141** | [quick_sort_array_no_recursion.ahk](lib-i_to_z/quick_sort_array_no_recursion.ahk)
1.95kb - 2018-11-18 | lib-i_to_z| +| **1142** | [Quoted String Replace.ahk](lib-i_to_z/Quoted%20String%20Replace.ahk)
1.21kb - 2016-03-11 | lib-i_to_z| +| **1143** | [RadianToDegree.ahk](lib-i_to_z/RadianToDegree.ahk)
0.29kb - 2018-03-08 | lib-i_to_z| +| **1144** | [RaGrid.ahk](lib-i_to_z/RaGrid.ahk)
23.86kb - 2018-06-02 | lib-i_to_z| +| **1145** | [rand.ahk](lib-i_to_z/rand.ahk)
0.09kb - 2018-10-30 | lib-i_to_z| +| **1146** | [RandBezier.ahk](lib-i_to_z/RandBezier.ahk)
1.45kb - 2017-10-23 | lib-i_to_z| +| **1147** | [Random jock StrX() Parsing.ahk](lib-i_to_z/Random%20jock%20StrX()%20Parsing.ahk)
1.92kb - 2018-06-02 | lib-i_to_z| +| **1148** | [RandomBezier.ahk](lib-i_to_z/RandomBezier.ahk)
2.71kb - 2018-06-02 | lib-i_to_z| +| **1149** | [randomdotorg.ahk](lib-i_to_z/randomdotorg.ahk)
49.91kb - 2018-06-02 | lib-i_to_z| +| **1150** | [RandomEx.ahk](lib-i_to_z/RandomEx.ahk)
2.79kb - 2018-03-08 | lib-i_to_z| +| **1151** | [RandomiseArray.ahk](lib-i_to_z/RandomiseArray.ahk)
0.87kb - 2018-06-02 | lib-i_to_z| +| **1152** | [RandomName(2).ahk](lib-i_to_z/RandomName(2).ahk)
7.67kb - 2019-01-24 | lib-i_to_z| +| **1153** | [RandomName.ahk](lib-i_to_z/RandomName.ahk)
7.73kb - 2018-06-02 | lib-i_to_z| +| **1154** | [RandomStr.AHK](lib-i_to_z/RandomStr.AHK)
0.22kb - 2018-06-02 | lib-i_to_z| +| **1155** | [RandomUniqNum.ahk](lib-i_to_z/RandomUniqNum.ahk)
0.60kb - 2018-06-02 | lib-i_to_z| +| **1156** | [RandomVar.ahk](lib-i_to_z/RandomVar.ahk)
2.26kb - 2018-06-02 | lib-i_to_z| +| **1157** | [RandSleep.ahk](lib-i_to_z/RandSleep.ahk)
1.04kb - 2017-10-23 | lib-i_to_z| +| **1158** | [randStr.ahk](lib-i_to_z/randStr.ahk)
0.89kb - 2018-10-30 | lib-i_to_z| +| **1159** | [range.ahk](lib-i_to_z/range.ahk)
1.40kb - 2019-10-26 | lib-i_to_z| +| **1160** | [RapidHotkey (2).ahk](lib-i_to_z/RapidHotkey%20(2).ahk)
2.81kb - 2016-09-15 | lib-i_to_z| +| **1161** | [RapidHotkey.ahk](lib-i_to_z/RapidHotkey.ahk)
48.48kb - 2018-06-02 | lib-i_to_z| +| **1162** | [RAW_POS_interpretation_for_QL_Swath_KMLs.ahk](lib-i_to_z/RAW_POS_interpretation_for_QL_Swath_KMLs.ahk)
28.75kb - 2019-07-26 | lib-i_to_z| +| **1163** | [RA_StringSort.ahk](lib-i_to_z/RA_StringSort.ahk)
0.27kb - 2018-08-20 | lib-i_to_z| +| **1164** | [ReadFileLine.ahk](lib-i_to_z/ReadFileLine.ahk)
0.99kb - 2018-03-08 | lib-i_to_z| +| **1165** | [readHotkeys.ahk](lib-i_to_z/readHotkeys.ahk)
0.99kb - 2018-10-30 | lib-i_to_z| +| **1166** | [ReadIni.ahk](lib-i_to_z/ReadIni.ahk)
4.43kb - 2018-05-05 | lib-i_to_z| +| **1167** | [ReadLocalizedString.ahk](lib-i_to_z/ReadLocalizedString.ahk)
2.00kb - 2018-03-08 | lib-i_to_z| +| **1168** | [ReadMemory.ahk](lib-i_to_z/ReadMemory.ahk)
2.34kb - 2018-06-02 | lib-i_to_z| +| **1169** | [ReadMemory_Str.ahk](lib-i_to_z/ReadMemory_Str.ahk)
1.89kb - 2018-06-02 | lib-i_to_z| +| **1170** | [ReadRawMemory.AHK](lib-i_to_z/ReadRawMemory.AHK)
0.85kb - 2018-06-02 | lib-i_to_z| +| **1171** | [readResource.ahk](lib-i_to_z/readResource.ahk)
0.64kb - 2018-06-02 | lib-i_to_z| +| **1172** | [Rebar.ahk](lib-i_to_z/Rebar.ahk)
26.50kb - 2018-06-02 | lib-i_to_z| +| **1173** | [RecordSetADO.ahk](lib-i_to_z/RecordSetADO.ahk)
2.02kb - 2018-06-02 | lib-i_to_z| +| **1174** | [RecordSetMySQL.ahk](lib-i_to_z/RecordSetMySQL.ahk)
1.99kb - 2018-06-02 | lib-i_to_z| +| **1175** | [RecordSetSqlLite.ahk](lib-i_to_z/RecordSetSqlLite.ahk)
3.52kb - 2018-06-02 | lib-i_to_z| +| **1176** | [RedrawDB.ahk](lib-i_to_z/RedrawDB.ahk)
3.58kb - 2018-08-25 | lib-i_to_z| +| **1177** | [RedrawWindow.ahk](lib-i_to_z/RedrawWindow.ahk)
1.81kb - 2018-03-08 | lib-i_to_z| +| **1178** | [ReduceWorkingSetSize.ahk](lib-i_to_z/ReduceWorkingSetSize.ahk)
0.22kb - 2018-08-16 | lib-i_to_z| +| **1179** | [ReFormatTime.ahk](lib-i_to_z/ReFormatTime.ahk)
0.25kb - 2018-06-02 | lib-i_to_z| +| **1180** | [REG to VBS.ahk](lib-i_to_z/REG%20to%20VBS.ahk)
7.83kb - 2018-06-02 | lib-i_to_z| +| **1181** | [RegEasy.ahk](lib-i_to_z/RegEasy.ahk)
4.19kb - 2018-12-21 | lib-i_to_z| +| **1182** | [RegEx.ahk](lib-i_to_z/RegEx.ahk)
6.56kb - 2018-12-08 | lib-i_to_z| +| **1183** | [RegExDebug.ahk](lib-i_to_z/RegExDebug.ahk)
5.11kb - 2018-05-05 | lib-i_to_z| +| **1184** | [RegExFileSearch.ahk](lib-i_to_z/RegExFileSearch.ahk)
7.13kb - 2018-05-05 | lib-i_to_z| +| **1185** | [regExMatchI.ahk](lib-i_to_z/regExMatchI.ahk)
0.19kb - 2018-10-30 | lib-i_to_z| +| **1186** | [regExReplaceI.ahk](lib-i_to_z/regExReplaceI.ahk)
0.21kb - 2018-10-30 | lib-i_to_z| +| **1187** | [RegExSort.ahk](lib-i_to_z/RegExSort.ahk)
2.16kb - 2016-02-05 | lib-i_to_z| +| **1188** | [regionGetColor.Ahk](lib-i_to_z/regionGetColor.Ahk)
7.94kb - 2018-07-12 | lib-i_to_z| +| **1189** | [RegionWaitChange.ahk](lib-i_to_z/RegionWaitChange.ahk)
1.98kb - 2017-04-07 | lib-i_to_z| +| **1190** | [RegisterSyncCallback.ahk](lib-i_to_z/RegisterSyncCallback.ahk)
3.87kb - 2018-06-14 | lib-i_to_z| +| **1191** | [releaseKeyspSend.ahk](lib-i_to_z/releaseKeyspSend.ahk)
0.68kb - 2018-06-02 | lib-i_to_z| +| **1192** | [reloadAsAdmin.ahk](lib-i_to_z/reloadAsAdmin.ahk)
2.95kb - 2018-07-29 | lib-i_to_z| +| **1193** | [ReloadScriptOnEdit.ahk](lib-i_to_z/ReloadScriptOnEdit.ahk)
1.02kb - 2018-07-29 | lib-i_to_z| +| **1194** | [RelToAbs.ahk](lib-i_to_z/RelToAbs.ahk)
0.54kb - 2019-04-19 | lib-i_to_z| +| **1195** | [RemoteBuf.ahk](lib-i_to_z/RemoteBuf.ahk)
12.66kb - 2019-04-14 | lib-i_to_z| +| **1196** | [RemoteObj.ahk](lib-i_to_z/RemoteObj.ahk)
1.20kb - 2018-12-07 | lib-i_to_z| +| **1197** | [RemoteResource.ahk](lib-i_to_z/RemoteResource.ahk)
4.04kb - 2019-09-07 | lib-i_to_z| +| **1198** | [RemoteScintilla.ahk](lib-i_to_z/RemoteScintilla.ahk)
8.23kb - 2019-04-14 | lib-i_to_z| +| **1199** | [RemoveDuplicates.ahk](lib-i_to_z/RemoveDuplicates.ahk)
0.20kb - 2013-05-24 | lib-i_to_z| +| **1200** | [RemoveIllegalFilenameCharacters.ahk](lib-i_to_z/RemoveIllegalFilenameCharacters.ahk)
0.70kb - 2018-05-05 | lib-i_to_z| +| **1201** | [rename.ahk](lib-i_to_z/rename.ahk)
2.30kb - 2018-11-11 | lib-i_to_z| +| **1202** | [rename_script.ahk](lib-i_to_z/rename_script.ahk)
2.30kb - 2019-02-10 | lib-i_to_z| +| **1203** | [ReplaceHtmlDecodedChars.ahk](lib-i_to_z/ReplaceHtmlDecodedChars.ahk)
22.93kb - 2018-05-05 | lib-i_to_z| +| **1204** | [ReplaceHtmlEncodedChars.ahk](lib-i_to_z/ReplaceHtmlEncodedChars.ahk)
30.33kb - 2018-05-05 | lib-i_to_z| +| **1205** | [ReplaceIllegalFilenameCharacters.ahk](lib-i_to_z/ReplaceIllegalFilenameCharacters.ahk)
0.72kb - 2018-05-05 | lib-i_to_z| +| **1206** | [replaceList.ahk](lib-i_to_z/replaceList.ahk)
0.20kb - 2018-08-31 | lib-i_to_z| +| **1207** | [ReplaceSystemVariables.ahk](lib-i_to_z/ReplaceSystemVariables.ahk)
13.47kb - 2018-05-05 | lib-i_to_z| +| **1208** | [ReplaceUrlEncodedChars.ahk](lib-i_to_z/ReplaceUrlEncodedChars.ahk)
10.46kb - 2018-05-05 | lib-i_to_z| +| **1209** | [ReplaceUserVariables.ahk](lib-i_to_z/ReplaceUserVariables.ahk)
2.90kb - 2018-05-05 | lib-i_to_z| +| **1210** | [Replicate.ahk](lib-i_to_z/Replicate.ahk)
0.32kb - 2018-05-05 | lib-i_to_z| +| **1211** | [ResDelete.ahk](lib-i_to_z/ResDelete.ahk)
0.19kb - 2018-06-02 | lib-i_to_z| +| **1212** | [ResDllCreate.ahk](lib-i_to_z/ResDllCreate.ahk)
0.57kb - 2018-06-02 | lib-i_to_z| +| **1213** | [ResExist.ahk](lib-i_to_z/ResExist.ahk)
1.13kb - 2018-06-02 | lib-i_to_z| +| **1214** | [ResGet.ahk](lib-i_to_z/ResGet.ahk)
1.31kb - 2018-06-02 | lib-i_to_z| +| **1215** | [ResizeandConvert_ICO.ahk](lib-i_to_z/ResizeandConvert_ICO.ahk)
3.47kb - 2019-10-29 | lib-i_to_z| +| **1216** | [ResolveHostname.ahk](lib-i_to_z/ResolveHostname.ahk)
1.56kb - 2018-06-02 | lib-i_to_z| +| **1217** | [ResourceID.ahk](lib-i_to_z/ResourceID.ahk)
1.23kb - 2018-06-02 | lib-i_to_z| +| **1218** | [ResourceIDOfIcon.ahk](lib-i_to_z/ResourceIDOfIcon.ahk)
1.15kb - 2018-07-29 | lib-i_to_z| +| **1219** | [ResourceIndexToId.ahk](lib-i_to_z/ResourceIndexToId.ahk)
0.91kb - 2018-06-02 | lib-i_to_z| +| **1220** | [ResourceMonitor.ahk](lib-i_to_z/ResourceMonitor.ahk)
6.19kb - 2019-10-28 | lib-i_to_z| +| **1221** | [ResourHackIcons.ahk](lib-i_to_z/ResourHackIcons.ahk)
9.03kb - 2018-06-02 | lib-i_to_z| +| **1222** | [ResPut.ahk](lib-i_to_z/ResPut.ahk)
0.24kb - 2018-06-02 | lib-i_to_z| +| **1223** | [ResPutFile.ahk](lib-i_to_z/ResPutFile.ahk)
0.29kb - 2018-06-02 | lib-i_to_z| +| **1224** | [RestartWindowsExplorer.ahk](lib-i_to_z/RestartWindowsExplorer.ahk)
0.59kb - 2018-03-08 | lib-i_to_z| +| **1225** | [ResumeProcess.ahk](lib-i_to_z/ResumeProcess.ahk)
0.91kb - 2018-08-16 | lib-i_to_z| +| **1226** | [reverseArray.AHK](lib-i_to_z/reverseArray.AHK)
1.66kb - 2018-06-02 | lib-i_to_z| +| **1227** | [ReverseBytes.ahk](lib-i_to_z/ReverseBytes.ahk)
1.07kb - 2018-03-08 | lib-i_to_z| +| **1228** | [ReverseLookup.ahk](lib-i_to_z/ReverseLookup.ahk)
1.55kb - 2018-06-02 | lib-i_to_z| +| **1229** | [ReverseSign.ahk](lib-i_to_z/ReverseSign.ahk)
0.21kb - 2013-05-24 | lib-i_to_z| +| **1230** | [rgbToHex.ahk](lib-i_to_z/rgbToHex.ahk)
0.89kb - 2018-06-02 | lib-i_to_z| +| **1231** | [RI.ahk](lib-i_to_z/RI.ahk)
19.68kb - 2017-09-01 | lib-i_to_z| +| **1232** | [Ribbon.ahk](lib-i_to_z/Ribbon.ahk)
3.95kb - 2019-05-27 | lib-i_to_z| +| **1233** | [RichEdit OleCallback.ahk](lib-i_to_z/RichEdit%20OleCallback.ahk)
9.12kb - 2018-03-13 | lib-i_to_z| +| **1234** | [RichEdit-Plus(Unready).ahk](lib-i_to_z/RichEdit-Plus(Unready).ahk)
31.12kb - 2019-05-13 | lib-i_to_z| +| **1235** | [RichEdit.ahk](lib-i_to_z/RichEdit.ahk)
80.60kb - 2019-09-01 | lib-i_to_z| +| **1236** | [RichEdit_OLECallback.ahk](lib-i_to_z/RichEdit_OLECallback.ahk)
21.07kb - 2018-02-08 | lib-i_to_z| +| **1237** | [RIni.ahk](lib-i_to_z/RIni.ahk)
65.74kb - 2018-06-02 | lib-i_to_z| +| **1238** | [RisImpax.ahk](lib-i_to_z/RisImpax.ahk)
32.18kb - 2018-03-10 | lib-i_to_z| +| **1239** | [RMO.ahk](lib-i_to_z/RMO.ahk)
9.90kb - 2015-08-23 | lib-i_to_z| +| **1240** | [RoboCopy.ahk](lib-i_to_z/RoboCopy.ahk)
2.07kb - 2018-03-08 | lib-i_to_z| +| **1241** | [RomanNumbers.ahk](lib-i_to_z/RomanNumbers.ahk)
3.52kb - 2018-06-02 | lib-i_to_z| +| **1242** | [round_near.ahk](lib-i_to_z/round_near.ahk)
0.05kb - 2018-08-31 | lib-i_to_z| +| **1243** | [RPath.ahk](lib-i_to_z/RPath.ahk)
3.61kb - 2011-02-10 | lib-i_to_z| +| **1244** | [RSHash.ahk](lib-i_to_z/RSHash.ahk)
0.80kb - 2018-03-08 | lib-i_to_z| +| **1245** | [rtf.ahk](lib-i_to_z/rtf.ahk)
1.68kb - 2019-08-27 | lib-i_to_z| +| **1246** | [RTV.ahk](lib-i_to_z/RTV.ahk)
9.26kb - 2017-09-04 | lib-i_to_z| +| **1247** | [RunAsAdmin.ahk](lib-i_to_z/RunAsAdmin.ahk)
0.87kb - 2018-06-02 | lib-i_to_z| +| **1248** | [RunFileDlg.ahk](lib-i_to_z/RunFileDlg.ahk)
1.29kb - 2018-03-08 | lib-i_to_z| +| **1249** | [runRemoteScript.AHK](lib-i_to_z/runRemoteScript.AHK)
2.77kb - 2014-03-21 | lib-i_to_z| +| **1250** | [RXMS.ahk](lib-i_to_z/RXMS.ahk)
13.31kb - 2018-06-02 | lib-i_to_z| +| **1251** | [SaveFile.ahk](lib-i_to_z/SaveFile.ahk)
9.21kb - 2018-06-20 | lib-i_to_z| +| **1252** | [SaveHICONtoFile.ahk](lib-i_to_z/SaveHICONtoFile.ahk)
5.24kb - 2018-12-19 | lib-i_to_z| +| **1253** | [SB (2).ahk](lib-i_to_z/SB%20(2).ahk)
2.97kb - 2018-06-02 | lib-i_to_z| +| **1254** | [SB.ahk](lib-i_to_z/SB.ahk)
5.13kb - 2018-06-02 | lib-i_to_z| +| **1255** | [SBAR.ahk](lib-i_to_z/SBAR.ahk)
72.52kb - 2017-07-04 | lib-i_to_z| +| **1256** | [SBAR_AVI.ahk](lib-i_to_z/SBAR_AVI.ahk)
26.65kb - 2017-07-04 | lib-i_to_z| +| **1257** | [SBAR_ProgressBar.ahk](lib-i_to_z/SBAR_ProgressBar.ahk)
19.89kb - 2017-07-04 | lib-i_to_z| +| **1258** | [SBAR_SetTextEx.ahk](lib-i_to_z/SBAR_SetTextEx.ahk)
13.79kb - 2017-07-04 | lib-i_to_z| +| **1259** | [SB_SETPROGRESS.ahk](lib-i_to_z/SB_SETPROGRESS.ahk)
5.02kb - 2018-04-11 | lib-i_to_z| +| **1260** | [sc.ahk](lib-i_to_z/sc.ahk)
9.03kb - 2018-06-02 | lib-i_to_z| +| **1261** | [SC2_MemoryAndGeneralFunctions.ahk](lib-i_to_z/SC2_MemoryAndGeneralFunctions.ahk)
153.75kb - 2018-06-02 | lib-i_to_z| +| **1262** | [Scheduler.ahk](lib-i_to_z/Scheduler.ahk)
11.93kb - 2018-06-02 | lib-i_to_z| +| **1263** | [SCI.ahk](lib-i_to_z/SCI.ahk)
37.73kb - 2018-06-20 | lib-i_to_z| +| **1264** | [ScINTILLA.ahk](lib-i_to_z/ScINTILLA.ahk)
128.83kb - 2019-04-12 | lib-i_to_z| +| **1265** | [Scintilla_CharWordPos.ahk](lib-i_to_z/Scintilla_CharWordPos.ahk)
3.09kb - 2019-04-07 | lib-i_to_z| +| **1266** | [SciTEOutput.ahk](lib-i_to_z/SciTEOutput.ahk)
0.72kb - 2018-05-05 | lib-i_to_z| +| **1267** | [SciX.ahk](lib-i_to_z/SciX.ahk)
15.67kb - 2019-09-03 | lib-i_to_z| +| **1268** | [scriptCompile.ahk](lib-i_to_z/scriptCompile.ahk)
4.95kb - 2018-06-02 | lib-i_to_z| +| **1269** | [scriptlib.ahk](lib-i_to_z/scriptlib.ahk)
52.90kb - 2018-05-05 | lib-i_to_z| +| **1270** | [ScriptMem [Function].ahk](lib-i_to_z/ScriptMem%20[Function].ahk)
0.86kb - 2013-04-07 | lib-i_to_z| +| **1271** | [ScriptParser.ahk](lib-i_to_z/ScriptParser.ahk)
8.28kb - 2018-06-13 | lib-i_to_z| +| **1272** | [ScriptStruct.ahk](lib-i_to_z/ScriptStruct.ahk)
4.85kb - 2016-09-15 | lib-i_to_z| +| **1273** | [Scrollable GUI.ahk](lib-i_to_z/Scrollable%20GUI.ahk)
4.09kb - 2016-09-15 | lib-i_to_z| +| **1274** | [ScrollBar.ahk](lib-i_to_z/ScrollBar.ahk)
8.70kb - 2018-06-02 | lib-i_to_z| +| **1275** | [Scroller.ahk](lib-i_to_z/Scroller.ahk)
6.85kb - 2018-06-02 | lib-i_to_z| +| **1276** | [ScrollWindow.ahk](lib-i_to_z/ScrollWindow.ahk)
0.71kb - 2018-03-08 | lib-i_to_z| +| **1277** | [SecondsToHHMMSS.ahk](lib-i_to_z/SecondsToHHMMSS.ahk)
2.46kb - 2011-04-25 | lib-i_to_z| +| **1278** | [SecureHash.ahk](lib-i_to_z/SecureHash.ahk)
11.36kb - 2018-07-26 | lib-i_to_z| +| **1279** | [SelectObject.ahk](lib-i_to_z/SelectObject.ahk)
0.31kb - 2018-03-08 | lib-i_to_z| +| **1280** | [selfCompile.ahk](lib-i_to_z/selfCompile.ahk)
1.35kb - 2018-01-06 | lib-i_to_z| +| **1281** | [semver.ahk](lib-i_to_z/semver.ahk)
1.99kb - 2018-10-26 | lib-i_to_z| +| **1282** | [SendEmail.ahk](lib-i_to_z/SendEmail.ahk)
3.79kb - 2018-06-02 | lib-i_to_z| +| **1283** | [SendGUI.ahk](lib-i_to_z/SendGUI.ahk)
30.67kb - 2018-06-02 | lib-i_to_z| +| **1284** | [sendmail.ahk](lib-i_to_z/sendmail.ahk)
1.22kb - 2012-12-05 | lib-i_to_z| +| **1285** | [SendMessageList-Script.ahk](lib-i_to_z/SendMessageList-Script.ahk)
4.46kb - 2019-11-05 | lib-i_to_z| +| **1286** | [SendMSG.ahk](lib-i_to_z/SendMSG.ahk)
4.65kb - 2017-04-07 | lib-i_to_z| +| **1287** | [SerDes.ahk](lib-i_to_z/SerDes.ahk)
8.37kb - 2017-03-07 | lib-i_to_z| +| **1288** | [Serial.ahk](lib-i_to_z/Serial.ahk)
10.68kb - 2012-04-29 | lib-i_to_z| +| **1289** | [serverTime.ahk](lib-i_to_z/serverTime.ahk)
1.73kb - 2019-11-06 | lib-i_to_z| +| **1290** | [Service.ahk](lib-i_to_z/Service.ahk)
8.95kb - 2018-10-06 | lib-i_to_z| +| **1291** | [set-timer-f.ahk](lib-i_to_z/set-timer-f.ahk)
2.24kb - 2015-03-20 | lib-i_to_z| +| **1292** | [SetAcrylicGlassEffect.ahk](lib-i_to_z/SetAcrylicGlassEffect.ahk)
2.10kb - 2019-04-27 | lib-i_to_z| +| **1293** | [SetBtnTxtColor.ahk](lib-i_to_z/SetBtnTxtColor.ahk)
7.51kb - 2018-06-02 | lib-i_to_z| +| **1294** | [SetButtonF.ahk](lib-i_to_z/SetButtonF.ahk)
4.37kb - 2018-06-02 | lib-i_to_z| +| **1295** | [SetDesktopWallpaper.ahk](lib-i_to_z/SetDesktopWallpaper.ahk)
0.44kb - 2018-03-08 | lib-i_to_z| +| **1296** | [SetEditPlaceholder.ahk](lib-i_to_z/SetEditPlaceholder.ahk)
1.09kb - 2018-06-02 | lib-i_to_z| +| **1297** | [SetExeSubsystem.ahk](lib-i_to_z/SetExeSubsystem.ahk)
0.32kb - 2018-06-02 | lib-i_to_z| +| **1298** | [SetFileAttributes.ahk](lib-i_to_z/SetFileAttributes.ahk)
1.25kb - 2018-03-08 | lib-i_to_z| +| **1299** | [SetHostsFile.ahk](lib-i_to_z/SetHostsFile.ahk)
1.94kb - 2018-05-05 | lib-i_to_z| +| **1300** | [SetIcon.ahk](lib-i_to_z/SetIcon.ahk)
0.91kb - 2018-06-02 | lib-i_to_z| +| **1301** | [setLowLevelInputHooks.ahk](lib-i_to_z/setLowLevelInputHooks.ahk)
6.89kb - 2018-06-02 | lib-i_to_z| +| **1302** | [SetProcessPriority.ahk](lib-i_to_z/SetProcessPriority.ahk)
1.72kb - 2018-08-16 | lib-i_to_z| +| **1303** | [SetProcessWorkingSetSize.ahk](lib-i_to_z/SetProcessWorkingSetSize.ahk)
1.62kb - 2018-08-16 | lib-i_to_z| +| **1304** | [SetSeDebugPrivileg.ahk](lib-i_to_z/SetSeDebugPrivileg.ahk)
1.11kb - 2019-05-02 | lib-i_to_z| +| **1305** | [SetShortcuts.ahk](lib-i_to_z/SetShortcuts.ahk)
1.49kb - 2018-06-02 | lib-i_to_z| +| **1306** | [SetSystemCursor (2).ahk](lib-i_to_z/SetSystemCursor%20(2).ahk)
3.81kb - 2011-04-25 | lib-i_to_z| +| **1307** | [SetSystemCursor.ahk](lib-i_to_z/SetSystemCursor.ahk)
1.40kb - 2018-03-08 | lib-i_to_z| +| **1308** | [SetTimer.ahk](lib-i_to_z/SetTimer.ahk)
6.89kb - 2018-06-02 | lib-i_to_z| +| **1309** | [SetTimerF.ahk](lib-i_to_z/SetTimerF.ahk)
5.25kb - 2019-05-27 | lib-i_to_z| +| **1310** | [Settings.ahk](lib-i_to_z/Settings.ahk)
2.09kb - 2018-06-02 | lib-i_to_z| +| **1311** | [SetWindowClassStyle.ahk](lib-i_to_z/SetWindowClassStyle.ahk)
0.65kb - 2018-03-08 | lib-i_to_z| +| **1312** | [SetWindowIcon.ahk](lib-i_to_z/SetWindowIcon.ahk)
1.38kb - 2018-03-08 | lib-i_to_z| +| **1313** | [SetWindowOwner.ahk](lib-i_to_z/SetWindowOwner.ahk)
0.74kb - 2018-03-08 | lib-i_to_z| +| **1314** | [SetWindowParent.ahk](lib-i_to_z/SetWindowParent.ahk)
0.92kb - 2018-03-08 | lib-i_to_z| +| **1315** | [SetWindowPos.ahk](lib-i_to_z/SetWindowPos.ahk)
2.65kb - 2018-03-08 | lib-i_to_z| +| **1316** | [SetWindowProgress.ahk](lib-i_to_z/SetWindowProgress.ahk)
1.78kb - 2018-03-08 | lib-i_to_z| +| **1317** | [SetWindowsHookEx.ahk](lib-i_to_z/SetWindowsHookEx.ahk)
1.38kb - 2016-09-15 | lib-i_to_z| +| **1318** | [SetWindowTitle.ahk](lib-i_to_z/SetWindowTitle.ahk)
0.46kb - 2018-03-08 | lib-i_to_z| +| **1319** | [SetWindowTransparency.ahk](lib-i_to_z/SetWindowTransparency.ahk)
1.34kb - 2018-03-08 | lib-i_to_z| +| **1320** | [setWindowVol.ahk](lib-i_to_z/setWindowVol.ahk)
0.81kb - 2018-10-30 | lib-i_to_z| +| **1321** | [SGDIPrint.ahk](lib-i_to_z/SGDIPrint.ahk)
17.13kb - 2018-06-02 | lib-i_to_z| +| **1322** | [SGL_Ahk_H_v1.ahk](lib-i_to_z/SGL_Ahk_H_v1.ahk)
11.15kb - 2019-08-21 | lib-i_to_z| +| **1323** | [SHA256 WITH HMAC.ahk](lib-i_to_z/SHA256%20WITH%20HMAC.ahk)
5.40kb - 2018-06-02 | lib-i_to_z| +| **1324** | [Shader.ahk](lib-i_to_z/Shader.ahk)
4.08kb - 2019-08-28 | lib-i_to_z| +| **1325** | [Shell Navigate - Shell Folder.ahk](lib-i_to_z/Shell%20Navigate%20-%20Shell%20Folder.ahk)
1.13kb - 2019-04-13 | lib-i_to_z| +| **1326** | [shell.ahk](lib-i_to_z/shell.ahk)
4.15kb - 2018-06-02 | lib-i_to_z| +| **1327** | [ShellAbout.ahk](lib-i_to_z/ShellAbout.ahk)
0.68kb - 2018-03-08 | lib-i_to_z| +| **1328** | [ShellContextMenu.ahk](lib-i_to_z/ShellContextMenu.ahk)
4.96kb - 2018-09-15 | lib-i_to_z| +| **1329** | [ShellContextMenu2.ahk](lib-i_to_z/ShellContextMenu2.ahk)
5.45kb - 2018-06-02 | lib-i_to_z| +| **1330** | [ShellFileOperation.ahk](lib-i_to_z/ShellFileOperation.ahk)
5.12kb - 2018-06-02 | lib-i_to_z| +| **1331** | [ShellRun.ahk](lib-i_to_z/ShellRun.ahk)
2.22kb - 2018-07-29 | lib-i_to_z| +| **1332** | [ShellRunEx.ahk](lib-i_to_z/ShellRunEx.ahk)
1.34kb - 2018-12-19 | lib-i_to_z| +| **1333** | [ShortcutCreate.ahk](lib-i_to_z/ShortcutCreate.ahk)
0.99kb - 2018-05-05 | lib-i_to_z| +| **1334** | [ShortcutDelete.ahk](lib-i_to_z/ShortcutDelete.ahk)
0.95kb - 2018-05-05 | lib-i_to_z| +| **1335** | [ShortcutExists.ahk](lib-i_to_z/ShortcutExists.ahk)
1.13kb - 2018-05-05 | lib-i_to_z| +| **1336** | [Show menu.ahk](lib-i_to_z/Show%20menu.ahk)
12.50kb - 2018-05-27 | lib-i_to_z| +| **1337** | [showabout.ahk](lib-i_to_z/showabout.ahk)
1.79kb - 2018-06-02 | lib-i_to_z| +| **1338** | [ShowDesktop.ahk](lib-i_to_z/ShowDesktop.ahk)
0.22kb - 2018-03-08 | lib-i_to_z| +| **1339** | [ShowGif().ahk](lib-i_to_z/ShowGif().ahk)
3.48kb - 2018-06-02 | lib-i_to_z| +| **1340** | [ShowHide.ahk](lib-i_to_z/ShowHide.ahk)
1.74kb - 2015-05-12 | lib-i_to_z| +| **1341** | [ShowHideTaskbar.ahk](lib-i_to_z/ShowHideTaskbar.ahk)
1.23kb - 2018-05-05 | lib-i_to_z| +| **1342** | [ShowHtmlDialog.ahk](lib-i_to_z/ShowHtmlDialog.ahk)
4.21kb - 2017-09-04 | lib-i_to_z| +| **1343** | [ShowMenu.ahk](lib-i_to_z/ShowMenu.ahk)
3.65kb - 2018-06-02 | lib-i_to_z| +| **1344** | [ShowOCRUnderMouse.ahk](lib-i_to_z/ShowOCRUnderMouse.ahk)
2.83kb - 2018-11-10 | lib-i_to_z| +| **1345** | [ShowStartMenu.ahk](lib-i_to_z/ShowStartMenu.ahk)
0.20kb - 2018-11-22 | lib-i_to_z| +| **1346** | [ShuffleString.ahk](lib-i_to_z/ShuffleString.ahk)
0.37kb - 2019-05-26 | lib-i_to_z| +| **1347** | [Sift.ahk](lib-i_to_z/Sift.ahk)
7.85kb - 2019-04-08 | lib-i_to_z| +| **1348** | [SignFile.ahk](lib-i_to_z/SignFile.ahk)
2.40kb - 2016-01-11 | lib-i_to_z| +| **1349** | [sizeof.ahk](lib-i_to_z/sizeof.ahk)
17.50kb - 2018-06-02 | lib-i_to_z| +| **1350** | [sleepMode.ahk](lib-i_to_z/sleepMode.ahk)
6.56kb - 2018-06-02 | lib-i_to_z| +| **1351** | [SleepWithoutInterruption.ahk](lib-i_to_z/SleepWithoutInterruption.ahk)
0.56kb - 2016-09-15 | lib-i_to_z| +| **1352** | [sleipnir.ahk](lib-i_to_z/sleipnir.ahk)
1.14kb - 2016-09-15 | lib-i_to_z| +| **1353** | [slots.ahk](lib-i_to_z/slots.ahk)
2.72kb - 2018-06-02 | lib-i_to_z| +| **1354** | [SmartZip.ahk](lib-i_to_z/SmartZip.ahk)
2.42kb - 2018-06-02 | lib-i_to_z| +| **1355** | [SnapFolderWindows.ahk](lib-i_to_z/SnapFolderWindows.ahk)
1.62kb - 2018-05-05 | lib-i_to_z| +| **1356** | [SnapX_Functions.ahk](lib-i_to_z/SnapX_Functions.ahk)
5.68kb - 2018-06-02 | lib-i_to_z| +| **1357** | [socket.ahk](lib-i_to_z/socket.ahk)
6.79kb - 2018-06-02 | lib-i_to_z| +| **1358** | [SoftModalMessageBox.ahk](lib-i_to_z/SoftModalMessageBox.ahk)
2.51kb - 2017-11-18 | lib-i_to_z| +| **1359** | [SoftwareProtectionLibrary.ahk](lib-i_to_z/SoftwareProtectionLibrary.ahk)
20.24kb - 2019-04-23 | lib-i_to_z| +| **1360** | [Sort.ahk](lib-i_to_z/Sort.ahk)
0.12kb - 2015-01-01 | lib-i_to_z| +| **1361** | [Sort2DArray.ahk](lib-i_to_z/Sort2DArray.ahk)
2.19kb - 2018-06-02 | lib-i_to_z| +| **1362** | [SortArray.ahk](lib-i_to_z/SortArray.ahk)
1.95kb - 2018-06-02 | lib-i_to_z| +| **1363** | [sort_len.ahk](lib-i_to_z/sort_len.ahk)
21.09kb - 2019-08-30 | lib-i_to_z| +| **1364** | [sound.ahk](lib-i_to_z/sound.ahk)
6.92kb - 2018-06-02 | lib-i_to_z| +| **1365** | [SoundCardCapabilities.ahk](lib-i_to_z/SoundCardCapabilities.ahk)
4.25kb - 2018-06-02 | lib-i_to_z| +| **1366** | [sourcegrab.ahk](lib-i_to_z/sourcegrab.ahk)
3.24kb - 2018-06-02 | lib-i_to_z| +| **1367** | [SpecialListviewFunctions.ahk](lib-i_to_z/SpecialListviewFunctions.ahk)
12.73kb - 2018-06-02 | lib-i_to_z| +| **1368** | [SpeechRecognition.ahk](lib-i_to_z/SpeechRecognition.ahk)
7.47kb - 2015-03-29 | lib-i_to_z| +| **1369** | [Spell.ahk](lib-i_to_z/Spell.ahk)
27.30kb - 2014-10-25 | lib-i_to_z| +| **1370** | [SplashImage.ahk](lib-i_to_z/SplashImage.ahk)
38.98kb - 2016-09-15 | lib-i_to_z| +| **1371** | [SplashOn.ahk](lib-i_to_z/SplashOn.ahk)
16.95kb - 2018-12-09 | lib-i_to_z| +| **1372** | [SplashTextOff.ahk](lib-i_to_z/SplashTextOff.ahk)
0.03kb - 2016-09-15 | lib-i_to_z| +| **1373** | [SplashTextOn.ahk](lib-i_to_z/SplashTextOn.ahk)
4.48kb - 2016-09-15 | lib-i_to_z| +| **1374** | [Splitter.ahk](lib-i_to_z/Splitter.ahk)
10.81kb - 2018-06-02 | lib-i_to_z| +| **1375** | [SpreadSheet.ahk](lib-i_to_z/SpreadSheet.ahk)
24.36kb - 2007-06-14 | lib-i_to_z| +| **1376** | [SQLite.ahk](lib-i_to_z/SQLite.ahk)
38.63kb - 2018-06-02 | lib-i_to_z| +| **1377** | [SQLiteDB_Class.ahk](lib-i_to_z/SQLiteDB_Class.ahk)
43.48kb - 2016-08-07 | lib-i_to_z| +| **1378** | [SQLite_L.ahk](lib-i_to_z/SQLite_L.ahk)
42.23kb - 2018-06-02 | lib-i_to_z| +| **1379** | [Sql_AddDelimiters.ahk](lib-i_to_z/Sql_AddDelimiters.ahk)
1.00kb - 2019-02-16 | lib-i_to_z| +| **1380** | [Sql_FormatSQL.ahk](lib-i_to_z/Sql_FormatSQL.ahk)
19.39kb - 2019-02-16 | lib-i_to_z| +| **1381** | [Sql_LineBreakOnSqlKeyword.ahk](lib-i_to_z/Sql_LineBreakOnSqlKeyword.ahk)
1.67kb - 2019-02-16 | lib-i_to_z| +| **1382** | [Sql_MakeSQLDynamic.ahk](lib-i_to_z/Sql_MakeSQLDynamic.ahk)
2.73kb - 2019-02-16 | lib-i_to_z| +| **1383** | [SrtSynch.ahk](lib-i_to_z/SrtSynch.ahk)
4.29kb - 2018-06-02 | lib-i_to_z| +| **1384** | [st.ahk](lib-i_to_z/st.ahk)
5.46kb - 2018-06-02 | lib-i_to_z| +| **1385** | [StartServiceCtrlDispatcher.ahk](lib-i_to_z/StartServiceCtrlDispatcher.ahk)
3.46kb - 2018-06-02 | lib-i_to_z| +| **1386** | [start_with_windows.ahk](lib-i_to_z/start_with_windows.ahk)
1.33kb - 2017-10-18 | lib-i_to_z| +| **1387** | [StaticVar.ahk](lib-i_to_z/StaticVar.ahk)
0.22kb - 2019-11-10 | lib-i_to_z| +| **1388** | [StayOnMonitor.ahk](lib-i_to_z/StayOnMonitor.ahk)
3.21kb - 2018-06-02 | lib-i_to_z| +| **1389** | [StdOutStream.ahk](lib-i_to_z/StdOutStream.ahk)
2.89kb - 2018-10-30 | lib-i_to_z| +| **1390** | [StdOutToVar (2).ahk](lib-i_to_z/StdOutToVar%20(2).ahk)
1.82kb - 2018-06-02 | lib-i_to_z| +| **1391** | [StdOutToVar.ahk](lib-i_to_z/StdOutToVar.ahk)
2.63kb - 2018-10-30 | lib-i_to_z| +| **1392** | [StdoutToVar_CreateProcess.ahk](lib-i_to_z/StdoutToVar_CreateProcess.ahk)
4.34kb - 2014-07-06 | lib-i_to_z| +| **1393** | [sToMs.ahk](lib-i_to_z/sToMs.ahk)
0.04kb - 2018-10-30 | lib-i_to_z| +| **1394** | [stopwatch.ahk](lib-i_to_z/stopwatch.ahk)
1.87kb - 2018-06-02 | lib-i_to_z| +| **1395** | [Str.ahk](lib-i_to_z/Str.ahk)
8.26kb - 2018-08-19 | lib-i_to_z| +| **1396** | [StRegX.ahk](lib-i_to_z/StRegX.ahk)
1.29kb - 2017-11-23 | lib-i_to_z| +| **1397** | [StrFormatByteSize.ahk](lib-i_to_z/StrFormatByteSize.ahk)
0.82kb - 2018-03-08 | lib-i_to_z| +| **1398** | [StrFormatByteSize64.ahk](lib-i_to_z/StrFormatByteSize64.ahk)
0.93kb - 2019-08-30 | lib-i_to_z| +| **1399** | [StrFormatByteSizeEx.ahk](lib-i_to_z/StrFormatByteSizeEx.ahk)
1.09kb - 2019-08-30 | lib-i_to_z| +| **1400** | [StrGet.ahk](lib-i_to_z/StrGet.ahk)
1.87kb - 2011-02-10 | lib-i_to_z| +| **1401** | [strI.ahk](lib-i_to_z/strI.ahk)
0.15kb - 2018-10-30 | lib-i_to_z| +| **1402** | [String.ahk](lib-i_to_z/String.ahk)
4.35kb - 2018-06-02 | lib-i_to_z| +| **1403** | [StringCounter.ahk](lib-i_to_z/StringCounter.ahk)
2.55kb - 2019-11-01 | lib-i_to_z| +| **1404** | [stringify.ahk](lib-i_to_z/stringify.ahk)
0.23kb - 2018-10-30 | lib-i_to_z| +| **1405** | [StringIndent_JEE_.ahk](lib-i_to_z/StringIndent_JEE_.ahk)
6.75kb - 2019-04-06 | lib-i_to_z| +| **1406** | [StringM.ahk](lib-i_to_z/StringM.ahk)
1.79kb - 2017-10-26 | lib-i_to_z| +| **1407** | [stringMore.ahk](lib-i_to_z/stringMore.ahk)
10.11kb - 2019-05-04 | lib-i_to_z| +| **1408** | [StringThings.ahk](lib-i_to_z/StringThings.ahk)
35.52kb - 2018-06-20 | lib-i_to_z| +| **1409** | [StrLen2.ahk](lib-i_to_z/StrLen2.ahk)
0.95kb - 2018-03-08 | lib-i_to_z| +| **1410** | [StrLower.ahk](lib-i_to_z/StrLower.ahk)
0.12kb - 2015-01-01 | lib-i_to_z| +| **1411** | [StrObj.ahk](lib-i_to_z/StrObj.ahk)
24.36kb - 2017-04-07 | lib-i_to_z| +| **1412** | [StrPut.ahk](lib-i_to_z/StrPut.ahk)
4.31kb - 2011-02-10 | lib-i_to_z| +| **1413** | [StrPutVar.ahk](lib-i_to_z/StrPutVar.ahk)
0.19kb - 2018-06-02 | lib-i_to_z| +| **1414** | [StrQ.ahk](lib-i_to_z/StrQ.ahk)
1.00kb - 2018-10-09 | lib-i_to_z| +| **1415** | [StrRepeat.ahk](lib-i_to_z/StrRepeat.ahk)
0.37kb - 2018-03-08 | lib-i_to_z| +| **1416** | [StrReplace.ahk](lib-i_to_z/StrReplace.ahk)
0.54kb - 2015-01-01 | lib-i_to_z| +| **1417** | [strReplaceI.ahk](lib-i_to_z/strReplaceI.ahk)
0.17kb - 2018-10-30 | lib-i_to_z| +| **1418** | [StrReplicate.ahk](lib-i_to_z/StrReplicate.ahk)
0.38kb - 2018-05-05 | lib-i_to_z| +| **1419** | [StrReverse.ahk](lib-i_to_z/StrReverse.ahk)
0.54kb - 2018-05-05 | lib-i_to_z| +| **1420** | [strTail.ahk](lib-i_to_z/strTail.ahk)
0.48kb - 2018-06-02 | lib-i_to_z| +| **1421** | [strToLower.ahk](lib-i_to_z/strToLower.ahk)
0.06kb - 2018-10-30 | lib-i_to_z| +| **1422** | [strToUpper.ahk](lib-i_to_z/strToUpper.ahk)
0.06kb - 2018-10-30 | lib-i_to_z| +| **1423** | [Struct.ahk](lib-i_to_z/Struct.ahk)
30.74kb - 2018-06-02 | lib-i_to_z| +| **1424** | [StrX.ahk](lib-i_to_z/StrX.ahk)
0.40kb - 2018-06-02 | lib-i_to_z| +| **1425** | [Subprocess.ahk](lib-i_to_z/Subprocess.ahk)
7.98kb - 2018-08-16 | lib-i_to_z| +| **1426** | [SubTitle.ahk](lib-i_to_z/SubTitle.ahk)
10.37kb - 2018-06-02 | lib-i_to_z| +| **1427** | [SUCCEEDED.ahk](lib-i_to_z/SUCCEEDED.ahk)
0.05kb - 2018-06-02 | lib-i_to_z| +| **1428** | [SuperMaxWindow.ahk](lib-i_to_z/SuperMaxWindow.ahk)
4.15kb - 2018-05-05 | lib-i_to_z| +| **1429** | [SuppressRuntimeErrors.ahk](lib-i_to_z/SuppressRuntimeErrors.ahk)
1.91kb - 2018-06-20 | lib-i_to_z| +| **1430** | [SuspendAfterDelay.ahk](lib-i_to_z/SuspendAfterDelay.ahk)
2.04kb - 2018-05-05 | lib-i_to_z| +| **1431** | [SuspendProcess.ahk](lib-i_to_z/SuspendProcess.ahk)
0.91kb - 2018-08-16 | lib-i_to_z| +| **1432** | [SuspendThread_ResumeThread.ahk](lib-i_to_z/SuspendThread_ResumeThread.ahk)
1.40kb - 2018-06-02 | lib-i_to_z| +| **1433** | [SVGraph.ahk](lib-i_to_z/SVGraph.ahk)
6.43kb - 2018-06-02 | lib-i_to_z| +| **1434** | [sXMLget.ahk](lib-i_to_z/sXMLget.ahk)
0.62kb - 2018-06-02 | lib-i_to_z| +| **1435** | [SysProcInfo.ahk](lib-i_to_z/SysProcInfo.ahk)
26.34kb - 2018-06-02 | lib-i_to_z| +| **1436** | [SystemCursor.ahk](lib-i_to_z/SystemCursor.ahk)
1.65kb - 2014-06-10 | lib-i_to_z| +| **1437** | [SystemMessage.ahk](lib-i_to_z/SystemMessage.ahk)
0.41kb - 2011-04-25 | lib-i_to_z| +| **1438** | [SystemMonitor.ahk](lib-i_to_z/SystemMonitor.ahk)
11.80kb - 2018-06-02 | lib-i_to_z| +| **1439** | [SystemTime.ahk](lib-i_to_z/SystemTime.ahk)
2.55kb - 2018-06-02 | lib-i_to_z| +| **1440** | [Tab.ahk](lib-i_to_z/Tab.ahk)
15.93kb - 2018-03-08 | lib-i_to_z| +| **1441** | [TabAlign.ahk](lib-i_to_z/TabAlign.ahk)
1.25kb - 2020-01-04 | lib-i_to_z| +| **1442** | [TabbedCBB.ahk](lib-i_to_z/TabbedCBB.ahk)
8.03kb - 2018-12-08 | lib-i_to_z| +| **1443** | [Table.ahk](lib-i_to_z/Table.ahk)
125.92kb - 2018-06-02 | lib-i_to_z| +| **1444** | [TabsToSpaces.ahk](lib-i_to_z/TabsToSpaces.ahk)
1.20kb - 2018-06-02 | lib-i_to_z| +| **1445** | [talk.ahk](lib-i_to_z/talk.ahk)
4.57kb - 2018-06-02 | lib-i_to_z| +| **1446** | [Taskbar.ahk](lib-i_to_z/Taskbar.ahk)
9.32kb - 2018-06-02 | lib-i_to_z| +| **1447** | [taskbarInterface.ahk](lib-i_to_z/taskbarInterface.ahk)
73.32kb - 2018-11-06 | lib-i_to_z| +| **1448** | [taskbarInterface_v2.ahk](lib-i_to_z/taskbarInterface_v2.ahk)
71.70kb - 2017-08-03 | lib-i_to_z| +| **1449** | [TaskbarMove.ahk](lib-i_to_z/TaskbarMove.ahk)
1.40kb - 2019-10-21 | lib-i_to_z| +| **1450** | [TaskBar_SetAttr.ahk](lib-i_to_z/TaskBar_SetAttr.ahk)
4.93kb - 2017-01-20 | lib-i_to_z| +| **1451** | [TaskButton(differentVersion).ahk](lib-i_to_z/TaskButton(differentVersion).ahk)
2.75kb - 2019-01-14 | lib-i_to_z| +| **1452** | [TaskButton.ahk](lib-i_to_z/TaskButton.ahk)
3.36kb - 2018-06-02 | lib-i_to_z| +| **1453** | [TaskDialog (2).ahk](lib-i_to_z/TaskDialog%20(2).ahk)
23.91kb - 2018-06-02 | lib-i_to_z| +| **1454** | [TaskDialog and more.ahk](lib-i_to_z/TaskDialog%20and%20more.ahk)
7.70kb - 2018-06-02 | lib-i_to_z| +| **1455** | [TaskDialog.ahk](lib-i_to_z/TaskDialog.ahk)
20.09kb - 2018-03-08 | lib-i_to_z| +| **1456** | [TaskDialogEx.ahk](lib-i_to_z/TaskDialogEx.ahk)
7.71kb - 2018-05-29 | lib-i_to_z| +| **1457** | [TaskTrayIcon.ahk](lib-i_to_z/TaskTrayIcon.ahk)
2.49kb - 2018-06-02 | lib-i_to_z| +| **1458** | [TbMenu-proto.ahk](lib-i_to_z/TbMenu-proto.ahk)
6.50kb - 2018-06-02 | lib-i_to_z| +| **1459** | [TCP-UDP-class.ahk](lib-i_to_z/TCP-UDP-class.ahk)
6.50kb - 2018-06-02 | lib-i_to_z| +| **1460** | [TCP.ahk](lib-i_to_z/TCP.ahk)
11.95kb - 2018-07-29 | lib-i_to_z| +| **1461** | [TCPUDP.ahk](lib-i_to_z/TCPUDP.ahk)
8.98kb - 2016-09-15 | lib-i_to_z| +| **1462** | [TCwdx.ahk](lib-i_to_z/TCwdx.ahk)
7.58kb - 2017-09-04 | lib-i_to_z| +| **1463** | [TC_EX.ahk](lib-i_to_z/TC_EX.ahk)
16.71kb - 2018-06-02 | lib-i_to_z| +| **1464** | [TEA.ahk](lib-i_to_z/TEA.ahk)
3.18kb - 2017-10-26 | lib-i_to_z| +| **1465** | [TEA_Encryption.ahk](lib-i_to_z/TEA_Encryption.ahk)
7.36kb - 2018-08-22 | lib-i_to_z| +| **1466** | [TerminateProcess.ahk](lib-i_to_z/TerminateProcess.ahk)
1.26kb - 2018-08-16 | lib-i_to_z| +| **1467** | [TermWait.ahk](lib-i_to_z/TermWait.ahk)
4.78kb - 2018-06-02 | lib-i_to_z| +| **1468** | [TermWaitLibs.ahk](lib-i_to_z/TermWaitLibs.ahk)
6.41kb - 2018-06-02 | lib-i_to_z| +| **1469** | [Text2Number.ahk](lib-i_to_z/Text2Number.ahk)
24.08kb - 2019-11-01 | lib-i_to_z| +| **1470** | [TextAreaDetect.ahk](lib-i_to_z/TextAreaDetect.ahk)
1.44kb - 2019-05-15 | lib-i_to_z| +| **1471** | [TextCompare.ahk](lib-i_to_z/TextCompare.ahk)
4.33kb - 2019-11-01 | lib-i_to_z| +| **1472** | [Textlists.ahk](lib-i_to_z/Textlists.ahk)
24.98kb - 2018-09-23 | lib-i_to_z| +| **1473** | [tf.ahk](lib-i_to_z/tf.ahk)
46.07kb - 2016-11-22 | lib-i_to_z| +| **1474** | [ThousandsSep.ahk](lib-i_to_z/ThousandsSep.ahk)
0.30kb - 2018-06-02 | lib-i_to_z| +| **1475** | [threadFunc.ahk](lib-i_to_z/threadFunc.ahk)
3.28kb - 2018-06-02 | lib-i_to_z| +| **1476** | [Threads.ahk](lib-i_to_z/Threads.ahk)
5.06kb - 2018-06-02 | lib-i_to_z| +| **1477** | [Thumbnail.ahk](lib-i_to_z/Thumbnail.ahk)
8.89kb - 2019-05-19 | lib-i_to_z| +| **1478** | [thumbnailer.ahk](lib-i_to_z/thumbnailer.ahk)
3.12kb - 2008-02-25 | lib-i_to_z| +| **1479** | [Timer.ahk](lib-i_to_z/Timer.ahk)
5.42kb - 2018-06-02 | lib-i_to_z| +| **1480** | [TimeStampAHK.ahk](lib-i_to_z/TimeStampAHK.ahk)
1.77kb - 2018-05-05 | lib-i_to_z| +| **1481** | [TimeStampSQL.ahk](lib-i_to_z/TimeStampSQL.ahk)
1.46kb - 2018-05-05 | lib-i_to_z| +| **1482** | [Tippy.ahk](lib-i_to_z/Tippy.ahk)
3.27kb - 2019-11-04 | lib-i_to_z| +| **1483** | [Title.ahk](lib-i_to_z/Title.ahk)
0.28kb - 2018-06-02 | lib-i_to_z| +| **1484** | [TLLib.ahk](lib-i_to_z/TLLib.ahk)
15.88kb - 2018-03-05 | lib-i_to_z| +| **1485** | [TO TextOverlay.ahk](lib-i_to_z/TO%20TextOverlay.ahk)
45.74kb - 2018-06-02 | lib-i_to_z| +| **1486** | [TO.ahk](lib-i_to_z/TO.ahk)
44.24kb - 2017-09-04 | lib-i_to_z| +| **1487** | [ToBase.ahk](lib-i_to_z/ToBase.ahk)
0.39kb - 2018-05-05 | lib-i_to_z| +| **1488** | [ToChar.ahk](lib-i_to_z/ToChar.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| +| **1489** | [todWulff.ahk](lib-i_to_z/todWulff.ahk)
5.35kb - 2018-06-02 | lib-i_to_z| +| **1490** | [ToInt.ahk](lib-i_to_z/ToInt.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| +| **1491** | [tokelex.ahk](lib-i_to_z/tokelex.ahk)
41.48kb - 2018-06-02 | lib-i_to_z| +| **1492** | [TokenIsElevated.ahk](lib-i_to_z/TokenIsElevated.ahk)
0.66kb - 2018-08-16 | lib-i_to_z| +| **1493** | [tool.ahk](lib-i_to_z/tool.ahk)
0.15kb - 2018-10-30 | lib-i_to_z| +| **1494** | [Toolbar.ahk](lib-i_to_z/Toolbar.ahk)
41.14kb - 2018-06-02 | lib-i_to_z| +| **1495** | [toolSpeak.ahk](lib-i_to_z/toolSpeak.ahk)
0.10kb - 2018-10-30 | lib-i_to_z| +| **1496** | [ToolTip.ahk](lib-i_to_z/ToolTip.ahk)
30.15kb - 2018-06-02 | lib-i_to_z| +| **1497** | [ToolTipEx.ahk](lib-i_to_z/ToolTipEx.ahk)
11.71kb - 2019-01-21 | lib-i_to_z| +| **1498** | [ToolTipG.ahk](lib-i_to_z/ToolTipG.ahk)
8.11kb - 2019-01-21 | lib-i_to_z| +| **1499** | [ToolTipOpt.ahk](lib-i_to_z/ToolTipOpt.ahk)
2.58kb - 2018-06-20 | lib-i_to_z| +| **1500** | [ToShort.ahk](lib-i_to_z/ToShort.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| +| **1501** | [tostring.ahk](lib-i_to_z/tostring.ahk)
0.59kb - 2011-11-06 | lib-i_to_z| +| **1502** | [TotalCmdFuncs.ahk](lib-i_to_z/TotalCmdFuncs.ahk)
3.61kb - 2019-05-23 | lib-i_to_z| +| **1503** | [touch.ahk](lib-i_to_z/touch.ahk)
3.77kb - 2019-10-30 | lib-i_to_z| +| **1504** | [ToUChar.ahk](lib-i_to_z/ToUChar.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| +| **1505** | [ToUInt.ahk](lib-i_to_z/ToUInt.ahk)
0.07kb - 2018-06-02 | lib-i_to_z| +| **1506** | [ToUShort.ahk](lib-i_to_z/ToUShort.ahk)
0.08kb - 2018-06-02 | lib-i_to_z| +| **1507** | [TransButtonsv1.ahk](lib-i_to_z/TransButtonsv1.ahk)
10.07kb - 2018-04-29 | lib-i_to_z| +| **1508** | [translate_google_api AHKV2.ahk](lib-i_to_z/translate_google_api%20AHKV2.ahk)
5.38kb - 2018-02-28 | lib-i_to_z| +| **1509** | [TransSplashText.ahk](lib-i_to_z/TransSplashText.ahk)
5.07kb - 2012-08-09 | lib-i_to_z| +| **1510** | [Tray.ahk](lib-i_to_z/Tray.ahk)
13.83kb - 2018-06-02 | lib-i_to_z| +| **1511** | [TrayIcon (2).ahk](lib-i_to_z/TrayIcon%20(2).ahk)
12.47kb - 2018-06-02 | lib-i_to_z| +| **1512** | [TrayIcon (3).ahk](lib-i_to_z/TrayIcon%20(3).ahk)
4.39kb - 2018-06-02 | lib-i_to_z| +| **1513** | [TrayIcon.ahk](lib-i_to_z/TrayIcon.ahk)
12.42kb - 2018-12-29 | lib-i_to_z| +| **1514** | [TrayIconInfo.ahk](lib-i_to_z/TrayIconInfo.ahk)
12.35kb - 2016-09-15 | lib-i_to_z| +| **1515** | [TrayRefresh.ahk](lib-i_to_z/TrayRefresh.ahk)
1.29kb - 2018-11-14 | lib-i_to_z| +| **1516** | [TrayTipEx.ahk](lib-i_to_z/TrayTipEx.ahk)
10.14kb - 2018-03-08 | lib-i_to_z| +| **1517** | [TreeBox.ahk](lib-i_to_z/TreeBox.ahk)
2.41kb - 2017-07-18 | lib-i_to_z| +| **1518** | [TreeView.ahk](lib-i_to_z/TreeView.ahk)
44.83kb - 2019-12-04 | lib-i_to_z| +| **1519** | [TskDlg.ahk](lib-i_to_z/TskDlg.ahk)
2.69kb - 2019-07-30 | lib-i_to_z| +| **1520** | [TT.ahk](lib-i_to_z/TT.ahk)
37.79kb - 2018-06-02 | lib-i_to_z| +| **1521** | [TVDAD.ahk](lib-i_to_z/TVDAD.ahk)
6.67kb - 2019-02-19 | lib-i_to_z| +| **1522** | [TVX.ahk](lib-i_to_z/TVX.ahk)
9.75kb - 2019-11-06 | lib-i_to_z| +| **1523** | [TV_SetSelColors.ahk](lib-i_to_z/TV_SetSelColors.ahk)
3.87kb - 2018-10-03 | lib-i_to_z| +| **1524** | [TwipToPixel.ahk](lib-i_to_z/TwipToPixel.ahk)
0.11kb - 2018-03-08 | lib-i_to_z| +| **1525** | [txtList.ahk](lib-i_to_z/txtList.ahk)
0.51kb - 2019-02-08 | lib-i_to_z| +| **1526** | [type.ahk](lib-i_to_z/type.ahk)
0.77kb - 2018-06-02 | lib-i_to_z| +| **1527** | [TypeFunctions.ahk](lib-i_to_z/TypeFunctions.ahk)
5.84kb - 2018-06-02 | lib-i_to_z| +| **1528** | [TypeLibHelperFunctions.ahk](lib-i_to_z/TypeLibHelperFunctions.ahk)
12.22kb - 2018-06-02 | lib-i_to_z| +| **1529** | [TypeLibInterfaces.ahk](lib-i_to_z/TypeLibInterfaces.ahk)
18.77kb - 2018-06-02 | lib-i_to_z| +| **1530** | [uia.ahk](lib-i_to_z/uia.ahk)
147.11kb - 2018-06-02 | lib-i_to_z| +| **1531** | [UIA2.ahk](lib-i_to_z/UIA2.ahk)
139.57kb - 2018-06-02 | lib-i_to_z| +| **1532** | [UIAutomationClient_1_0_64bit.ahk](lib-i_to_z/UIAutomationClient_1_0_64bit.ahk)
284.76kb - 2018-02-03 | lib-i_to_z| +| **1533** | [UIA_Interface.ahk](lib-i_to_z/UIA_Interface.ahk)
38.05kb - 2018-06-02 | lib-i_to_z| +| **1534** | [UnHTM.ahk](lib-i_to_z/UnHTM.ahk)
2.21kb - 2018-06-02 | lib-i_to_z| +| **1535** | [unhtml.ahk](lib-i_to_z/unhtml.ahk)
3.95kb - 2017-04-07 | lib-i_to_z| +| **1536** | [Unidecode.ahk](lib-i_to_z/Unidecode.ahk)
239.56kb - 2016-12-14 | lib-i_to_z| +| **1537** | [Unique_IDentifiers.ahk](lib-i_to_z/Unique_IDentifiers.ahk)
1.83kb - 2018-08-17 | lib-i_to_z| +| **1538** | [uniscribe.ahk](lib-i_to_z/uniscribe.ahk)
2.19kb - 2017-07-15 | lib-i_to_z| +| **1539** | [Update.ahk](lib-i_to_z/Update.ahk)
6.11kb - 2018-06-02 | lib-i_to_z| +| **1540** | [UpdateCursors.ahk](lib-i_to_z/UpdateCursors.ahk)
0.27kb - 2018-03-08 | lib-i_to_z| +| **1541** | [UpdateDesktop.ahk](lib-i_to_z/UpdateDesktop.ahk)
0.28kb - 2018-03-08 | lib-i_to_z| +| **1542** | [UpdateFolderTime.ahk](lib-i_to_z/UpdateFolderTime.ahk)
0.86kb - 2016-04-08 | lib-i_to_z| +| **1543** | [UpdateIcons.ahk](lib-i_to_z/UpdateIcons.ahk)
0.26kb - 2018-03-08 | lib-i_to_z| +| **1544** | [updateLibPath.ahk](lib-i_to_z/updateLibPath.ahk)
0.29kb - 2016-09-15 | lib-i_to_z| +| **1545** | [Updater_v2.ahk](lib-i_to_z/Updater_v2.ahk)
7.47kb - 2018-11-14 | lib-i_to_z| +| **1546** | [UpdateSysAssoc.ahk](lib-i_to_z/UpdateSysAssoc.ahk)
0.29kb - 2018-03-08 | lib-i_to_z| +| **1547** | [UpdRes.ahk](lib-i_to_z/UpdRes.ahk)
11.99kb - 2018-06-13 | lib-i_to_z| +| **1548** | [Upper.ahk](lib-i_to_z/Upper.ahk)
0.28kb - 2018-06-02 | lib-i_to_z| +| **1549** | [uriencode.ahk](lib-i_to_z/uriencode.ahk)
0.42kb - 2018-06-02 | lib-i_to_z| +| **1550** | [uriEncoder-Decoder.ahk](lib-i_to_z/uriEncoder-Decoder.ahk)
1.36kb - 2018-06-02 | lib-i_to_z| +| **1551** | [URL (2).ahk](lib-i_to_z/URL%20(2).ahk)
5.28kb - 2017-04-07 | lib-i_to_z| +| **1552** | [Url.ahk](lib-i_to_z/Url.ahk)
2.45kb - 2018-03-08 | lib-i_to_z| +| **1553** | [UrlDownload.ahk](lib-i_to_z/UrlDownload.ahk)
1.96kb - 2016-09-05 | lib-i_to_z| +| **1554** | [urlDownloadToFile.ahk](lib-i_to_z/urlDownloadToFile.ahk)
0.75kb - 2018-10-30 | lib-i_to_z| +| **1555** | [UrlDownloadToJson.ahk](lib-i_to_z/UrlDownloadToJson.ahk)
0.77kb - 2018-06-02 | lib-i_to_z| +| **1556** | [UrlDownloadToVar.ahk](lib-i_to_z/UrlDownloadToVar.ahk)
1.46kb - 2018-06-02 | lib-i_to_z| +| **1557** | [urlFileGetSize.ahk](lib-i_to_z/urlFileGetSize.ahk)
1.57kb - 2018-10-30 | lib-i_to_z| +| **1558** | [USBD.ahk](lib-i_to_z/USBD.ahk)
2.14kb - 2018-06-02 | lib-i_to_z| +| **1559** | [USBUIRT.ahk](lib-i_to_z/USBUIRT.ahk)
27.17kb - 2018-06-02 | lib-i_to_z| +| **1560** | [UTF8IniFile.ahk](lib-i_to_z/UTF8IniFile.ahk)
2.10kb - 2018-11-04 | lib-i_to_z| +| **1561** | [Util.ahk](lib-i_to_z/Util.ahk)
3.18kb - 2018-06-02 | lib-i_to_z| +| **1562** | [uuid.ahk](lib-i_to_z/uuid.ahk)
0.82kb - 2018-06-02 | lib-i_to_z| +| **1563** | [UUIDCreate.ahk](lib-i_to_z/UUIDCreate.ahk)
1.35kb - 2018-06-02 | lib-i_to_z| +| **1564** | [UxTheme.ahk](lib-i_to_z/UxTheme.ahk)
14.96kb - 2019-12-02 | lib-i_to_z| +| **1565** | [VA (2).ahk](lib-i_to_z/VA%20(2).ahk)
25.73kb - 2018-06-02 | lib-i_to_z| +| **1566** | [VA.ahk](lib-i_to_z/VA.ahk)
36.97kb - 2018-06-02 | lib-i_to_z| +| **1567** | [ValidIP.ahk](lib-i_to_z/ValidIP.ahk)
0.89kb - 2016-10-12 | lib-i_to_z| +| **1568** | [VarHistory.ahk](lib-i_to_z/VarHistory.ahk)
3.36kb - 2017-09-04 | lib-i_to_z| +| **1569** | [VARIANT.ahk](lib-i_to_z/VARIANT.ahk)
0.74kb - 2018-06-02 | lib-i_to_z| +| **1570** | [VariemClick.ahk](lib-i_to_z/VariemClick.ahk)
6.17kb - 2018-06-02 | lib-i_to_z| +| **1571** | [VariousFunctions.ahk](lib-i_to_z/VariousFunctions.ahk)
1.70kb - 2018-06-02 | lib-i_to_z| +| **1572** | [Varize.ahk](lib-i_to_z/Varize.ahk)
0.57kb - 2017-10-23 | lib-i_to_z| +| **1573** | [VarZ_Compress.ahk](lib-i_to_z/VarZ_Compress.ahk)
6.97kb - 2018-06-02 | lib-i_to_z| +| **1574** | [VAWrapper.ahk](lib-i_to_z/VAWrapper.ahk)
3.06kb - 2018-06-09 | lib-i_to_z| +| **1575** | [VersionCompare.ahk](lib-i_to_z/VersionCompare.ahk)
0.69kb - 2018-03-08 | lib-i_to_z| +| **1576** | [VersionRes.ahk](lib-i_to_z/VersionRes.ahk)
1.95kb - 2018-06-02 | lib-i_to_z| +| **1577** | [VerticalTextAlign.ahk](lib-i_to_z/VerticalTextAlign.ahk)
7.20kb - 2020-01-04 | lib-i_to_z| +| **1578** | [View-MSgBox.ahk](lib-i_to_z/View-MSgBox.ahk)
2.68kb - 2018-07-26 | lib-i_to_z| +| **1579** | [Vis2.ahk](lib-i_to_z/Vis2.ahk)
121.11kb - 2018-04-04 | lib-i_to_z| +| **1580** | [VJoy_lib.ahk](lib-i_to_z/VJoy_lib.ahk)
23.17kb - 2019-10-28 | lib-i_to_z| +| **1581** | [VKSend.ahk](lib-i_to_z/VKSend.ahk)
1.71kb - 2018-06-02 | lib-i_to_z| +| **1582** | [VLCHTTP3.ahk](lib-i_to_z/VLCHTTP3.ahk)
21.77kb - 2018-06-02 | lib-i_to_z| +| **1583** | [VOL.ahk](lib-i_to_z/VOL.ahk)
32.05kb - 2016-11-21 | lib-i_to_z| +| **1584** | [vpk.ahk](lib-i_to_z/vpk.ahk)
2.62kb - 2018-06-09 | lib-i_to_z| +| **1585** | [vtype.ahk](lib-i_to_z/vtype.ahk)
0.84kb - 2018-06-02 | lib-i_to_z| +| **1586** | [WaitForEvent.ahk](lib-i_to_z/WaitForEvent.ahk)
3.84kb - 2018-06-02 | lib-i_to_z| +| **1587** | [WaitForIEPageLoad.ahk](lib-i_to_z/WaitForIEPageLoad.ahk)
2.06kb - 2018-06-02 | lib-i_to_z| +| **1588** | [WaitPixelColor.ahk](lib-i_to_z/WaitPixelColor.ahk)
1.94kb - 2017-09-04 | lib-i_to_z| +| **1589** | [WakeOnLan.ahk](lib-i_to_z/WakeOnLan.ahk)
0.78kb - 2018-06-02 | lib-i_to_z| +| **1590** | [WAnim.ahk](lib-i_to_z/WAnim.ahk)
5.62kb - 2017-10-06 | lib-i_to_z| +| **1591** | [WatchDirectory.ahk](lib-i_to_z/WatchDirectory.ahk)
5.74kb - 2018-06-02 | lib-i_to_z| +| **1592** | [WatchFolder.ahk](lib-i_to_z/WatchFolder.ahk)
11.75kb - 2019-04-12 | lib-i_to_z| +| **1593** | [WBImg.ahk](lib-i_to_z/WBImg.ahk)
3.46kb - 2018-06-20 | lib-i_to_z| +| **1594** | [web.ahk](lib-i_to_z/web.ahk)
9.60kb - 2017-07-13 | lib-i_to_z| +| **1595** | [Webapp.ahk](lib-i_to_z/Webapp.ahk)
12.79kb - 2019-10-31 | lib-i_to_z| +| **1596** | [WebBrowserCtl.ahk](lib-i_to_z/WebBrowserCtl.ahk)
0.42kb - 2018-06-02 | lib-i_to_z| +| **1597** | [WebPic.ahk](lib-i_to_z/WebPic.ahk)
4.03kb - 2018-03-08 | lib-i_to_z| +| **1598** | [websocket.ahk](lib-i_to_z/websocket.ahk)
2.59kb - 2019-09-10 | lib-i_to_z| +| **1599** | [wgl.ahk](lib-i_to_z/wgl.ahk)
7.33kb - 2019-10-11 | lib-i_to_z| +| **1600** | [WIA.ahk](lib-i_to_z/WIA.ahk)
14.94kb - 2018-06-02 | lib-i_to_z| +| **1601** | [wic.ahk](lib-i_to_z/wic.ahk)
69.13kb - 2018-06-02 | lib-i_to_z| +| **1602** | [Win.ahk](lib-i_to_z/Win.ahk)
25.92kb - 2018-06-02 | lib-i_to_z| +| **1603** | [WinApi.ahk](lib-i_to_z/WinApi.ahk)
200.80kb - 2018-06-02 | lib-i_to_z| +| **1604** | [WinApiDef.ahk](lib-i_to_z/WinApiDef.ahk)
0.48kb - 2018-06-02 | lib-i_to_z| +| **1605** | [WinCaption.ahk](lib-i_to_z/WinCaption.ahk)
0.19kb - 2018-06-02 | lib-i_to_z| +| **1606** | [WinClip.ahk](lib-i_to_z/WinClip.ahk)
36.91kb - 2018-06-02 | lib-i_to_z| +| **1607** | [WinClipAPI.ahk](lib-i_to_z/WinClipAPI.ahk)
8.81kb - 2018-06-02 | lib-i_to_z| +| **1608** | [WINDERS.ahk](lib-i_to_z/WINDERS.ahk)
54.08kb - 2018-06-02 | lib-i_to_z| +| **1609** | [Window Roller.ahk](lib-i_to_z/Window%20Roller.ahk)
1.88kb - 2018-06-02 | lib-i_to_z| +| **1610** | [Window.ahk](lib-i_to_z/Window.ahk)
9.60kb - 2019-10-28 | lib-i_to_z| +| **1611** | [WindowFilter.ahk](lib-i_to_z/WindowFilter.ahk)
5.54kb - 2020-01-04 | lib-i_to_z| +| **1612** | [WindowFromPoint.ahk](lib-i_to_z/WindowFromPoint.ahk)
3.10kb - 2018-06-02 | lib-i_to_z| +| **1613** | [WindowFromRect.ahk](lib-i_to_z/WindowFromRect.ahk)
2.82kb - 2018-06-02 | lib-i_to_z| +| **1614** | [WindowPad.ahk](lib-i_to_z/WindowPad.ahk)
19.50kb - 2018-06-02 | lib-i_to_z| +| **1615** | [WindowsBase.ahk](lib-i_to_z/WindowsBase.ahk)
6.87kb - 2018-06-02 | lib-i_to_z| +| **1616** | [windowscalepos.ahk](lib-i_to_z/windowscalepos.ahk)
3.70kb - 2019-04-21 | lib-i_to_z| +| **1617** | [WindowShellEvent.ahk](lib-i_to_z/WindowShellEvent.ahk)
0.48kb - 2016-09-15 | lib-i_to_z| +| **1618** | [WindowsLogs.ahk](lib-i_to_z/WindowsLogs.ahk)
5.76kb - 2018-10-23 | lib-i_to_z| +| **1619** | [WindowSuperMaxStatus.ahk](lib-i_to_z/WindowSuperMaxStatus.ahk)
2.01kb - 2018-05-05 | lib-i_to_z| +| **1620** | [WinEnum.ahk](lib-i_to_z/WinEnum.ahk)
1.56kb - 2018-06-02 | lib-i_to_z| +| **1621** | [WinEvents.ahk](lib-i_to_z/WinEvents.ahk)
7.58kb - 2018-10-23 | lib-i_to_z| +| **1622** | [WinFade.ahk](lib-i_to_z/WinFade.ahk)
2.15kb - 2014-12-06 | lib-i_to_z| +| **1623** | [WinGetAll (2).ahk](lib-i_to_z/WinGetAll%20(2).ahk)
1.50kb - 2016-09-15 | lib-i_to_z| +| **1624** | [WinGetAll.ahk](lib-i_to_z/WinGetAll.ahk)
1.18kb - 2018-06-02 | lib-i_to_z| +| **1625** | [WinGetAtCoords.ahk](lib-i_to_z/WinGetAtCoords.ahk)
1.61kb - 2016-09-15 | lib-i_to_z| +| **1626** | [WinGetPidList.ahk](lib-i_to_z/WinGetPidList.ahk)
0.49kb - 2018-06-02 | lib-i_to_z| +| **1627** | [WinGetPos.ahk](lib-i_to_z/WinGetPos.ahk)
0.65kb - 2018-06-02 | lib-i_to_z| +| **1628** | [WinGetPosEx.ahk](lib-i_to_z/WinGetPosEx.ahk)
6.60kb - 2018-06-02 | lib-i_to_z| +| **1629** | [WinGroup.ahk](lib-i_to_z/WinGroup.ahk)
2.66kb - 2019-01-21 | lib-i_to_z| +| **1630** | [WinHttpRequest.ahk](lib-i_to_z/WinHttpRequest.ahk)
3.01kb - 2018-06-02 | lib-i_to_z| +| **1631** | [winInfo.ahk](lib-i_to_z/winInfo.ahk)
0.48kb - 2018-10-30 | lib-i_to_z| +| **1632** | [WinIniNet.ahk](lib-i_to_z/WinIniNet.ahk)
11.15kb - 2018-06-02 | lib-i_to_z| +| **1633** | [WinIsOverlay.ahk](lib-i_to_z/WinIsOverlay.ahk)
7.19kb - 2019-04-20 | lib-i_to_z| +| **1634** | [WinMoveGetPos.ahk](lib-i_to_z/WinMoveGetPos.ahk)
1.40kb - 2018-06-02 | lib-i_to_z| +| **1635** | [WinMovePos.ahk](lib-i_to_z/WinMovePos.ahk)
1.64kb - 2018-06-02 | lib-i_to_z| +| **1636** | [winos.ahk](lib-i_to_z/winos.ahk)
1.07kb - 2019-10-31 | lib-i_to_z| +| **1637** | [WinProps.ahk](lib-i_to_z/WinProps.ahk)
3.46kb - 2018-06-02 | lib-i_to_z| +| **1638** | [WinServ.ahk](lib-i_to_z/WinServ.ahk)
5.89kb - 2011-02-10 | lib-i_to_z| +| **1639** | [WinSet_Click_Through.ahk](lib-i_to_z/WinSet_Click_Through.ahk)
9.29kb - 2018-06-02 | lib-i_to_z| +| **1640** | [WinSet_NoActivate.ahk](lib-i_to_z/WinSet_NoActivate.ahk)
2.01kb - 2018-06-02 | lib-i_to_z| +| **1641** | [WinSock2.ahk](lib-i_to_z/WinSock2.ahk)
17.28kb - 2018-06-02 | lib-i_to_z| +| **1642** | [WinSysMenuApi.ahk](lib-i_to_z/WinSysMenuApi.ahk)
3.78kb - 2018-07-08 | lib-i_to_z| +| **1643** | [winvisible (2).ahk](lib-i_to_z/winvisible%20(2).ahk)
1.41kb - 2016-09-15 | lib-i_to_z| +| **1644** | [WinVisible.ahk](lib-i_to_z/WinVisible.ahk)
0.20kb - 2018-06-02 | lib-i_to_z| +| **1645** | [Win__Fling.ahk](lib-i_to_z/Win__Fling.ahk)
6.93kb - 2011-04-25 | lib-i_to_z| +| **1646** | [WLAN.ahk](lib-i_to_z/WLAN.ahk)
20.21kb - 2018-06-02 | lib-i_to_z| +| **1647** | [Wmic_Win32_FunctionLog.ahk](lib-i_to_z/Wmic_Win32_FunctionLog.ahk)
1.62kb - 2018-06-02 | lib-i_to_z| +| **1648** | [wordcount.ahk](lib-i_to_z/wordcount.ahk)
0.98kb - 2019-04-27 | lib-i_to_z| +| **1649** | [WorkerThread.ahk](lib-i_to_z/WorkerThread.ahk)
17.10kb - 2016-09-15 | lib-i_to_z| +| **1650** | [WPD.ahk](lib-i_to_z/WPD.ahk)
76.26kb - 2018-06-02 | lib-i_to_z| +| **1651** | [WRandom.ahk](lib-i_to_z/WRandom.ahk)
1.70kb - 2018-06-02 | lib-i_to_z| +| **1652** | [WrapText (2).ahk](lib-i_to_z/WrapText%20(2).ahk)
10.78kb - 2019-04-23 | lib-i_to_z| +| **1653** | [WrapText.ahk](lib-i_to_z/WrapText.ahk)
10.01kb - 2018-07-06 | lib-i_to_z| +| **1654** | [WriteFileLine.ahk](lib-i_to_z/WriteFileLine.ahk)
1.21kb - 2018-03-08 | lib-i_to_z| +| **1655** | [WriteMemory.ahk](lib-i_to_z/WriteMemory.ahk)
3.67kb - 2014-03-21 | lib-i_to_z| +| **1656** | [Writer.ahk](lib-i_to_z/Writer.ahk)
4.38kb - 2018-06-02 | lib-i_to_z| +| **1657** | [WriteToLogs.ahk](lib-i_to_z/WriteToLogs.ahk)
2.10kb - 2018-05-05 | lib-i_to_z| +| **1658** | [ws.ahk](lib-i_to_z/ws.ahk)
28.17kb - 2018-06-02 | lib-i_to_z| +| **1659** | [WS2.ahk](lib-i_to_z/WS2.ahk)
17.28kb - 2011-04-25 | lib-i_to_z| +| **1660** | [ws4ahk.ahk](lib-i_to_z/ws4ahk.ahk)
86.26kb - 2018-06-02 | lib-i_to_z| +| **1661** | [WS_CoEvent.ahk](lib-i_to_z/WS_CoEvent.ahk)
5.09kb - 2008-08-04 | lib-i_to_z| +| **1662** | [WS_DEControl.ahk](lib-i_to_z/WS_DEControl.ahk)
7.79kb - 2008-08-04 | lib-i_to_z| +| **1663** | [WS_DEControl2.ahk](lib-i_to_z/WS_DEControl2.ahk)
11.96kb - 2008-08-04 | lib-i_to_z| +| **1664** | [WS_RemoveErrChk.ahk](lib-i_to_z/WS_RemoveErrChk.ahk)
1.10kb - 2018-06-02 | lib-i_to_z| +| **1665** | [xa.ahk](lib-i_to_z/xa.ahk)
5.13kb - 2017-07-22 | lib-i_to_z| +| **1666** | [XButton.ahk](lib-i_to_z/XButton.ahk)
33.37kb - 2019-11-02 | lib-i_to_z| +| **1667** | [XGraph.ahk](lib-i_to_z/XGraph.ahk)
15.50kb - 2018-06-02 | lib-i_to_z| +| **1668** | [xHotkeyNormalize.ahk](lib-i_to_z/xHotkeyNormalize.ahk)
1.12kb - 2015-01-01 | lib-i_to_z| +| **1669** | [Xinput.ahk](lib-i_to_z/Xinput.ahk)
6.05kb - 2018-06-02 | lib-i_to_z| +| **1670** | [XML-Encode_Decode.ahk](lib-i_to_z/XML-Encode_Decode.ahk)
1.82kb - 2019-12-04 | lib-i_to_z| +| **1671** | [XML.ahk](lib-i_to_z/XML.ahk)
20.66kb - 2018-06-02 | lib-i_to_z| +| **1672** | [XMLHTTP_Post.ahk](lib-i_to_z/XMLHTTP_Post.ahk)
1.98kb - 2018-02-28 | lib-i_to_z| +| **1673** | [XMLHTTP_Request.ahk](lib-i_to_z/XMLHTTP_Request.ahk)
3.01kb - 2018-02-28 | lib-i_to_z| +| **1674** | [xmlPrettify.ahk](lib-i_to_z/xmlPrettify.ahk)
1.31kb - 2019-05-26 | lib-i_to_z| +| **1675** | [xpath.ahk](lib-i_to_z/xpath.ahk)
14.80kb - 2018-06-02 | lib-i_to_z| +| **1676** | [Yaml.ahk](lib-i_to_z/Yaml.ahk)
24.40kb - 2018-06-02 | lib-i_to_z| +| **1677** | [youtube (not tested).ahk](lib-i_to_z/youtube%20(not%20tested).ahk)
6.75kb - 2018-06-02 | lib-i_to_z| +| **1678** | [Zip.ahk](lib-i_to_z/Zip.ahk)
3.11kb - 2018-06-02 | lib-i_to_z| +| **1679** | [ZipFile.ahk](lib-i_to_z/ZipFile.ahk)
7.41kb - 2017-07-13 | lib-i_to_z| +| **1680** | [ZipFileRaw.ahk](lib-i_to_z/ZipFileRaw.ahk)
5.68kb - 2018-06-02 | lib-i_to_z| +| **1681** | [_RemoteBuf.ahk](lib-i_to_z/_RemoteBuf.ahk)
5.51kb - 2018-06-02 | lib-i_to_z| +| **1682** | [class_3DMatrix.ahk](classes/class_3DMatrix.ahk)
1.77kb - 2016-12-02 | classes| +| **1683** | [class_accessibility.ahk](classes/class_accessibility.ahk)
8.24kb - 2019-10-22 | classes| +| **1684** | [class_AccObj.ahk](classes/class_AccObj.ahk)
32.51kb - 2018-11-09 | classes| +| **1685** | [class_AccObjObject.ahk](classes/class_AccObjObject.ahk)
21.97kb - 2018-10-06 | classes| +| **1686** | [class_AccV2.ahk](classes/class_AccV2.ahk)
37.28kb - 2019-12-06 | classes| +| **1687** | [class_actionObject.ahk](classes/class_actionObject.ahk)
7.25kb - 2018-02-28 | classes| +| **1688** | [class_ActiveScript.ahk](classes/class_ActiveScript.ahk)
9.81kb - 2018-01-30 | classes| +| **1689** | [class_AddClearBtnToEdit.ahk](classes/class_AddClearBtnToEdit.ahk)
8.39kb - 2015-03-21 | classes| +| **1690** | [class_adhdlib.ahk](classes/class_adhdlib.ahk)
88.02kb - 2019-09-04 | classes| +| **1691** | [class_AES_und_CBC.ahk](classes/class_AES_und_CBC.ahk)
14.02kb - 2018-12-09 | classes| +| **1692** | [class_AhkPedal.ahk](classes/class_AhkPedal.ahk)
4.52kb - 2019-10-31 | classes| +| **1693** | [class_AHKWebDriver.ahk](classes/class_AHKWebDriver.ahk)
14.44kb - 2019-12-17 | classes| +| **1694** | [class_ALD.ahk](classes/class_ALD.ahk)
0.33kb - 2019-10-30 | classes| +| **1695** | [class_ALD.Connection.ahk](classes/class_ALD.Connection.ahk)
5.56kb - 2018-06-02 | classes| +| **1696** | [class_ALD.DefinitionGenerator.ahk](classes/class_ALD.DefinitionGenerator.ahk)
6.34kb - 2018-06-02 | classes| +| **1697** | [class_ALD.PackageGenerator.ahk](classes/class_ALD.PackageGenerator.ahk)
0.85kb - 2018-06-02 | classes| +| **1698** | [class_Animation.ahk](classes/class_Animation.ahk)
4.17kb - 2018-02-14 | classes| +| **1699** | [class_ansi.ahk](classes/class_ansi.ahk)
8.85kb - 2019-10-31 | classes| +| **1700** | [class_AppFactory.ahk](classes/class_AppFactory.ahk)
26.49kb - 2018-06-02 | classes| +| **1701** | [class_Array.Prototype.ahk](classes/class_Array.Prototype.ahk)
10.69kb - 2019-12-29 | classes| +| **1702** | [class_arrays.ahk](classes/class_arrays.ahk)
6.09kb - 2019-10-31 | classes| +| **1703** | [class_array_base.ahk](classes/class_array_base.ahk)
11.67kb - 2018-05-10 | classes| +| **1704** | [class_array_quicksort.ahk](classes/class_array_quicksort.ahk)
2.55kb - 2018-06-08 | classes| +| **1705** | [class_AsyncHttp.ahk](classes/class_AsyncHttp.ahk)
2.74kb - 2019-04-28 | classes| +| **1706** | [class_audioRouter.ahk](classes/class_audioRouter.ahk)
5.80kb - 2018-10-30 | classes| +| **1707** | [class_AutoPath_AHK2.ahk](classes/class_AutoPath_AHK2.ahk)
5.22kb - 2018-11-24 | classes| +| **1708** | [class_base64(2).ahk](classes/class_base64(2).ahk)
4.30kb - 2019-10-31 | classes| +| **1709** | [Class_Base64.ahk](classes/Class_Base64.ahk)
4.84kb - 2019-03-23 | classes| +| **1710** | [class_bcrypt.ahk](classes/class_bcrypt.ahk)
13.40kb - 2018-04-14 | classes| +| **1711** | [class_BinaryHeap.ahk](classes/class_BinaryHeap.ahk)
3.33kb - 2019-07-31 | classes| +| **1712** | [class_BindModeThread.ahk](classes/class_BindModeThread.ahk)
7.60kb - 2018-12-21 | classes| +| **1713** | [class_BinRun.ahk](classes/class_BinRun.ahk)
15.25kb - 2014-03-21 | classes| +| **1714** | [class_Bound.ahk](classes/class_Bound.ahk)
1.08kb - 2020-01-03 | classes| +| **1715** | [class_BrightnessSetter.ahk](classes/class_BrightnessSetter.ahk)
9.46kb - 2018-06-08 | classes| +| **1716** | [class_C.ahk](classes/class_C.ahk)
118.94kb - 2018-12-21 | classes| +| **1717** | [class_CApplication.ahk](classes/class_CApplication.ahk)
14.55kb - 2018-12-21 | classes| +| **1718** | [class_CaseSensitiveObject.ahk](classes/class_CaseSensitiveObject.ahk)
4.38kb - 2011-12-07 | classes| +| **1719** | [class_CDataBase.ahk](classes/class_CDataBase.ahk)
8.18kb - 2018-12-21 | classes| +| **1720** | [class_CDialogs.ahk](classes/class_CDialogs.ahk)
2.80kb - 2018-12-21 | classes| +| **1721** | [class_CDirectory.ahk](classes/class_CDirectory.ahk)
1.13kb - 2018-12-21 | classes| +| **1722** | [class_CEnumerator.ahk](classes/class_CEnumerator.ahk)
0.62kb - 2018-12-21 | classes| +| **1723** | [class_Cert.ahk](classes/class_Cert.ahk)
15.17kb - 2016-01-11 | classes| +| **1724** | [class_CFile.ahk](classes/class_CFile.ahk)
1.32kb - 2018-12-21 | classes| +| **1725** | [class_CFlyout.ahk](classes/class_CFlyout.ahk)
47.32kb - 2017-09-25 | classes| +| **1726** | [class_CFlyoutMenuHandler.ahk](classes/class_CFlyoutMenuHandler.ahk)
21.21kb - 2017-09-18 | classes| +| **1727** | [class_CFlyout_New.ahk](classes/class_CFlyout_New.ahk)
20.21kb - 2017-09-18 | classes| +| **1728** | [class_CFunction.ahk](classes/class_CFunction.ahk)
0.20kb - 2018-12-21 | classes| +| **1729** | [class_CGui.ahk](classes/class_CGui.ahk)
7.19kb - 2018-12-21 | classes| +| **1730** | [class_CGuiCtrl.ahk](classes/class_CGuiCtrl.ahk)
12.60kb - 2018-12-21 | classes| +| **1731** | [Class_Check.ahk](classes/Class_Check.ahk)
6.95kb - 2018-06-02 | classes| +| **1732** | [class_CHotKey.ahk](classes/class_CHotKey.ahk)
2.39kb - 2018-12-21 | classes| +| **1733** | [class_CHotstringOptions.ahk](classes/class_CHotstringOptions.ahk)
1.86kb - 2018-12-21 | classes| +| **1734** | [class_Chrome (2).ahk](classes/class_Chrome%20(2).ahk)
10.38kb - 2019-10-31 | classes| +| **1735** | [class_Chrome.ahk](classes/class_Chrome.ahk)
12.97kb - 2018-01-16 | classes| +| **1736** | [class_CIniFile.ahk](classes/class_CIniFile.ahk)
22.33kb - 2018-12-21 | classes| +| **1737** | [class_CInputDetector.ahk](classes/class_CInputDetector.ahk)
7.71kb - 2019-04-10 | classes| +| **1738** | [class_CircleProgressClass.ahk](classes/class_CircleProgressClass.ahk)
3.96kb - 2018-06-14 | classes| +| **1739** | [class_Classifier.ahk](classes/class_Classifier.ahk)
4.15kb - 2012-04-21 | classes| +| **1740** | [class_Clip2Object.ahk](classes/class_Clip2Object.ahk)
1.04kb - 2016-09-15 | classes| +| **1741** | [class_CLocalizer.ahk](classes/class_CLocalizer.ahk)
5.25kb - 2018-12-21 | classes| +| **1742** | [class_CmdLine.ahk](classes/class_CmdLine.ahk)
1.06kb - 2018-05-20 | classes| +| **1743** | [class_Collection.ahk](classes/class_Collection.ahk)
1.88kb - 2016-09-15 | classes| +| **1744** | [Class_ColorPicker.ahk](classes/Class_ColorPicker.ahk)
9.03kb - 2018-06-02 | classes| +| **1745** | [class_ComboBoxEx.ahk](classes/class_ComboBoxEx.ahk)
32.96kb - 2018-09-15 | classes| +| **1746** | [class_ComImplementationBase.ahk](classes/class_ComImplementationBase.ahk)
7.13kb - 2017-10-13 | classes| +| **1747** | [class_Compass.ahk](classes/class_Compass.ahk)
10.17kb - 2018-05-27 | classes| +| **1748** | [Class_Console.ahk](classes/Class_Console.ahk)
27.98kb - 2018-06-02 | classes| +| **1749** | [class_CP.ahk](classes/class_CP.ahk)
10.57kb - 2018-08-26 | classes| +| **1750** | [Class_CreateFormData.ahk](classes/Class_CreateFormData.ahk)
4.21kb - 2018-08-19 | classes| +| **1751** | [class_Crypt (2).ahk](classes/class_Crypt%20(2).ahk)
4.44kb - 2016-01-11 | classes| +| **1752** | [class_Crypt.ahk](classes/class_Crypt.ahk)
20.60kb - 2018-06-02 | classes| +| **1753** | [class_CryptConst.ahk](classes/class_CryptConst.ahk)
12.80kb - 2018-06-02 | classes| +| **1754** | [Class_CStruct.ahk](classes/Class_CStruct.ahk)
43.75kb - 2018-06-02 | classes| +| **1755** | [class_cTable.ahk](classes/class_cTable.ahk)
33.52kb - 2018-06-02 | classes| +| **1756** | [Class_CTLCOLORS.ahk](classes/Class_CTLCOLORS.ahk)
21.25kb - 2018-06-02 | classes| +| **1757** | [class_Cursor.ahk](classes/class_Cursor.ahk)
15.95kb - 2019-10-30 | classes| +| **1758** | [Class_CustomFont.ahk](classes/Class_CustomFont.ahk)
2.60kb - 2018-07-26 | classes| +| **1759** | [class_CustomImageList.ahk](classes/class_CustomImageList.ahk)
3.90kb - 2019-11-13 | classes| +| **1760** | [class_CutWindowSquare.ahk](classes/class_CutWindowSquare.ahk)
1.61kb - 2019-05-27 | classes| +| **1761** | [Class_DateTools.ahk](classes/Class_DateTools.ahk)
51.63kb - 2019-09-25 | classes| +| **1762** | [class_db.ahk](classes/class_db.ahk)
4.83kb - 2018-08-21 | classes| +| **1763** | [Class_DD.ahk](classes/Class_DD.ahk)
6.13kb - 2018-06-02 | classes| +| **1764** | [Class_Dictionary.ahk](classes/Class_Dictionary.ahk)
8.50kb - 2018-06-20 | classes| +| **1765** | [class_DigestAuth.ahk](classes/class_DigestAuth.ahk)
1.69kb - 2019-08-09 | classes| +| **1766** | [class_DllCallCheck.ahk](classes/class_DllCallCheck.ahk)
11.61kb - 2018-11-06 | classes| +| **1767** | [Class_Dock.ahk](classes/Class_Dock.ahk)
7.51kb - 2019-08-20 | classes| +| **1768** | [class_DoublyLinkedList.ahk](classes/class_DoublyLinkedList.ahk)
5.51kb - 2016-09-15 | classes| +| **1769** | [class_DragDrop.ahk](classes/class_DragDrop.ahk)
8.09kb - 2018-09-09 | classes| +| **1770** | [class_DriveMap.ahk](classes/class_DriveMap.ahk)
7.62kb - 2019-05-27 | classes| +| **1771** | [class_dual.ahk](classes/class_dual.ahk)
13.26kb - 2018-12-17 | classes| +| **1772** | [class_dual_defaults.ahk](classes/class_dual_defaults.ahk)
0.63kb - 2018-12-17 | classes| +| **1773** | [class_EasyCSV.ahk](classes/class_EasyCSV.ahk)
14.74kb - 2015-03-24 | classes| +| **1774** | [class_EasyIni.ahk](classes/class_EasyIni.ahk)
19.03kb - 2017-04-07 | classes| +| **1775** | [class_EasyXML.ahk](classes/class_EasyXML.ahk)
14.99kb - 2015-03-24 | classes| +| **1776** | [class_eAutocomplete.ahk](classes/class_eAutocomplete.ahk)
35.04kb - 2019-12-17 | classes| +| **1777** | [class_EditView.ahk](classes/class_EditView.ahk)
12.80kb - 2018-06-02 | classes| +| **1778** | [class_ExpandView.ahk](classes/class_ExpandView.ahk)
5.06kb - 2018-12-08 | classes| +| **1779** | [class_ExplorerTool.ahk](classes/class_ExplorerTool.ahk)
6.85kb - 2018-06-20 | classes| +| **1780** | [class_ExtObj.ahk](classes/class_ExtObj.ahk)
16.87kb - 2019-05-19 | classes| +| **1781** | [class_fancy.ahk](classes/class_fancy.ahk)
11.01kb - 2018-12-23 | classes| +| **1782** | [class_FFAAS.ahk](classes/class_FFAAS.ahk)
18.65kb - 2018-06-02 | classes| +| **1783** | [class_FileMapping.ahk](classes/class_FileMapping.ahk)
1.86kb - 2018-09-04 | classes| +| **1784** | [class_filey.ahk](classes/class_filey.ahk)
12.07kb - 2016-03-07 | classes| +| **1785** | [class_flexTable.ahk](classes/class_flexTable.ahk)
9.57kb - 2019-05-04 | classes| +| **1786** | [Class_Flyout.ahk](classes/Class_Flyout.ahk)
44.66kb - 2017-09-18 | classes| +| **1787** | [Class_FTP.ahk](classes/Class_FTP.ahk)
11.74kb - 2018-06-02 | classes| +| **1788** | [class_FTPv2.ahk](classes/class_FTPv2.ahk)
33.39kb - 2018-06-02 | classes| +| **1789** | [class_gdichart.ahk](classes/class_gdichart.ahk)
6.61kb - 2014-09-26 | classes| +| **1790** | [class_GDIp.ahk](classes/class_GDIp.ahk)
20.42kb - 2018-12-23 | classes| +| **1791** | [class_gdipChart.ahk](classes/class_gdipChart.ahk)
22.04kb - 2018-12-23 | classes| +| **1792** | [Class_GdipSnapshot.ahk](classes/Class_GdipSnapshot.ahk)
7.98kb - 2017-05-18 | classes| +| **1793** | [Class_GdipTooltip.ahk](classes/Class_GdipTooltip.ahk)
17.52kb - 2018-06-02 | classes| +| **1794** | [class_GDIp_Canvas.ahk](classes/class_GDIp_Canvas.ahk)
3.43kb - 2019-12-29 | classes| +| **1795** | [class_GDIP_Geometry.ahk](classes/class_GDIP_Geometry.ahk)
5.57kb - 2019-12-29 | classes| +| **1796** | [class_geometry.ahk](classes/class_geometry.ahk)
0.87kb - 2018-08-31 | classes| +| **1797** | [class_Gestures.ahk](classes/class_Gestures.ahk)
4.39kb - 2019-11-01 | classes| +| **1798** | [class_getError_AHK2.ahk](classes/class_getError_AHK2.ahk)
233.79kb - 2018-11-24 | classes| +| **1799** | [class_getopt.ahk](classes/class_getopt.ahk)
7.10kb - 2018-11-18 | classes| +| **1800** | [Class_Github (2).ahk](classes/Class_Github%20(2).ahk)
4.78kb - 2019-11-01 | classes| +| **1801** | [class_Github.ahk](classes/class_Github.ahk)
17.90kb - 2015-09-21 | classes| +| **1802** | [Class_Github_Gui.ahk](classes/Class_Github_Gui.ahk)
5.55kb - 2019-11-05 | classes| +| **1803** | [class_Graphics.ahk](classes/class_Graphics.ahk)
177.83kb - 2019-08-04 | classes| +| **1804** | [class_GroupSort.ahk](classes/class_GroupSort.ahk)
3.66kb - 2018-06-02 | classes| +| **1805** | [class_GuiControlTips.ahk](classes/class_GuiControlTips.ahk)
22.60kb - 2018-04-26 | classes| +| **1806** | [class_Guid.ahk](classes/class_Guid.ahk)
2.89kb - 2018-06-02 | classes| +| **1807** | [class_GuiDropFiles.ahk](classes/class_GuiDropFiles.ahk)
3.89kb - 2014-09-10 | classes| +| **1808** | [class_GuiPrompt.ahk](classes/class_GuiPrompt.ahk)
2.86kb - 2018-05-20 | classes| +| **1809** | [class_GuiTabEx.ahk](classes/class_GuiTabEx.ahk)
17.11kb - 2013-03-22 | classes| +| **1810** | [class_GuiVar.ahk](classes/class_GuiVar.ahk)
4.94kb - 2018-07-06 | classes| +| **1811** | [class_Gui_NoActivate.ahk](classes/class_Gui_NoActivate.ahk)
2.11kb - 2015-05-16 | classes| +| **1812** | [class_hashTable.ahk](classes/class_hashTable.ahk)
75.22kb - 2018-06-02 | classes| +| **1813** | [class_HashTable_small.ahk](classes/class_HashTable_small.ahk)
8.82kb - 2018-12-18 | classes| +| **1814** | [class_hashTable_v1.ahk](classes/class_hashTable_v1.ahk)
74.96kb - 2018-03-29 | classes| +| **1815** | [class_HL7.ahk](classes/class_HL7.ahk)
15.89kb - 2018-06-02 | classes| +| **1816** | [class_HotClass.ahk](classes/class_HotClass.ahk)
16.00kb - 2019-07-26 | classes| +| **1817** | [class_HotCorners.ahk](classes/class_HotCorners.ahk)
2.29kb - 2018-08-31 | classes| +| **1818** | [Class_Hotkey (2).ahk](classes/Class_Hotkey%20(2).ahk)
3.49kb - 2017-05-02 | classes| +| **1819** | [Class_Hotkey.ahk](classes/Class_Hotkey.ahk)
11.21kb - 2018-05-10 | classes| +| **1820** | [class_HotVoice.ahk](classes/class_HotVoice.ahk)
7.60kb - 2018-06-02 | classes| +| **1821** | [class_iAutoComplete.ahk](classes/class_iAutoComplete.ahk)
15.17kb - 2018-08-04 | classes| +| **1822** | [class_ICLRRuntimeHost.ahk](classes/class_ICLRRuntimeHost.ahk)
5.99kb - 2018-09-15 | classes| +| **1823** | [class_ICorRuntimeHost.ahk](classes/class_ICorRuntimeHost.ahk)
3.73kb - 2018-09-15 | classes| +| **1824** | [class_IDesktopWallpaper.ahk](classes/class_IDesktopWallpaper.ahk)
14.11kb - 2018-09-15 | classes| +| **1825** | [class_IDropTarget.ahk](classes/class_IDropTarget.ahk)
15.34kb - 2018-06-02 | classes| +| **1826** | [class_IEObj.ahk](classes/class_IEObj.ahk)
2.48kb - 2018-10-30 | classes| +| **1827** | [class_iexplorerClass.ahk](classes/class_iexplorerClass.ahk)
0.94kb - 2017-01-05 | classes| +| **1828** | [class_ImageButton.ahk](classes/class_ImageButton.ahk)
29.53kb - 2018-03-08 | classes| +| **1829** | [class_ImageConverter.ahk](classes/class_ImageConverter.ahk)
15.66kb - 2014-12-28 | classes| +| **1830** | [class_ImageProcessing.ahk](classes/class_ImageProcessing.ahk)
128.34kb - 2018-11-25 | classes| +| **1831** | [class_indirectReference.ahk](classes/class_indirectReference.ahk)
4.02kb - 2017-06-03 | classes| +| **1832** | [class_Ini.ahk](classes/class_Ini.ahk)
3.14kb - 2014-07-06 | classes| +| **1833** | [class_Input.ahk](classes/class_Input.ahk)
20.63kb - 2018-06-02 | classes| +| **1834** | [class_InputBlocker.ahk](classes/class_InputBlocker.ahk)
2.71kb - 2019-04-19 | classes| +| **1835** | [class_InputThread.ahk](classes/class_InputThread.ahk)
13.72kb - 2018-06-02 | classes| +| **1836** | [class_InsertBinToPNG (2).ahk](classes/class_InsertBinToPNG%20(2).ahk)
6.45kb - 2014-10-16 | classes| +| **1837** | [class_InsertBinToPNG.ahk](classes/class_InsertBinToPNG.ahk)
6.45kb - 2014-10-16 | classes| +| **1838** | [class_IPC.ahk](classes/class_IPC.ahk)
3.96kb - 2018-09-04 | classes| +| **1839** | [class_IPHelper.ahk](classes/class_IPHelper.ahk)
9.04kb - 2018-06-02 | classes| +| **1840** | [class_ItemTree.ahk](classes/class_ItemTree.ahk)
6.04kb - 2019-02-02 | classes| +| **1841** | [class_IUIAnimationManager.ahk](classes/class_IUIAnimationManager.ahk)
46.11kb - 2018-06-02 | classes| +| **1842** | [class_IUIAutomationEventHandler.ahk](classes/class_IUIAutomationEventHandler.ahk)
1.12kb - 2018-08-17 | classes| +| **1843** | [class_IUIAutomationEventHandler_extended.ahk](classes/class_IUIAutomationEventHandler_extended.ahk)
10.44kb - 2018-08-17 | classes| +| **1844** | [class_Joystick.ahk](classes/class_Joystick.ahk)
4.99kb - 2018-08-03 | classes| +| **1845** | [Class_JSON.ahk](classes/Class_JSON.ahk)
11.14kb - 2017-05-05 | classes| +| **1846** | [class_JSONData.ahk](classes/class_JSONData.ahk)
2.75kb - 2018-08-03 | classes| +| **1847** | [class_JSONFile.ahk](classes/class_JSONFile.ahk)
2.41kb - 2018-07-06 | classes| +| **1848** | [Class_JSONv2.0.00.00.ahk](classes/Class_JSONv2.0.00.00.ahk)
9.53kb - 2020-01-04 | classes| +| **1849** | [class_JSONV2.1.3.ahk](classes/class_JSONV2.1.3.ahk)
11.55kb - 2019-05-03 | classes| +| **1850** | [class_JsRT.ahk](classes/class_JsRT.ahk)
3.34kb - 2018-01-30 | classes| +| **1851** | [class_kbhook.ahk](classes/class_kbhook.ahk)
13.98kb - 2018-06-02 | classes| +| **1852** | [class_KeyValStore.ahk](classes/class_KeyValStore.ahk)
4.43kb - 2016-04-17 | classes| +| **1853** | [class_LastError.ahk](classes/class_LastError.ahk)
376.41kb - 2019-01-25 | classes| +| **1854** | [Class_LeapMenu.ahk](classes/Class_LeapMenu.ahk)
7.47kb - 2017-09-18 | classes| +| **1855** | [class_lexer.ahk](classes/class_lexer.ahk)
14.93kb - 2018-11-06 | classes| +| **1856** | [class_Linear.ahk](classes/class_Linear.ahk)
2.55kb - 2018-06-02 | classes| +| **1857** | [class_LineReader.ahk](classes/class_LineReader.ahk)
8.22kb - 2018-11-06 | classes| +| **1858** | [class_LinkedListAndHashTable.ahk](classes/class_LinkedListAndHashTable.ahk)
14.00kb - 2019-03-23 | classes| +| **1859** | [class_LLMouse.ahk](classes/class_LLMouse.ahk)
2.06kb - 2018-11-25 | classes| +| **1860** | [class_LoaderBar.ahk](classes/class_LoaderBar.ahk)
5.30kb - 2018-06-02 | classes| +| **1861** | [class_LoadPictureType.ahk](classes/class_LoadPictureType.ahk)
12.98kb - 2017-08-30 | classes| +| **1862** | [class_LocalWorker.ahk](classes/class_LocalWorker.ahk)
8.29kb - 2012-12-17 | classes| +| **1863** | [class_log4ahk.ahk](classes/class_log4ahk.ahk)
6.61kb - 2015-03-31 | classes| +| **1864** | [class_Log_class.ahk](classes/class_Log_class.ahk)
39.91kb - 2019-10-17 | classes| +| **1865** | [class_longhotkey.ahk](classes/class_longhotkey.ahk)
19.04kb - 2018-12-17 | classes| +| **1866** | [Class_LV_Colors.ahk](classes/Class_LV_Colors.ahk)
22.69kb - 2018-06-02 | classes| +| **1867** | [Class_LV_InCellEdit.ahk](classes/Class_LV_InCellEdit.ahk)
28.29kb - 2018-06-02 | classes| +| **1868** | [Class_LV_Rows.ahk](classes/Class_LV_Rows.ahk)
53.39kb - 2016-06-09 | classes| +| **1869** | [class_Lyt.ahk](classes/class_Lyt.ahk)
9.04kb - 2019-05-08 | classes| +| **1870** | [class_Mailslot.ahk](classes/class_Mailslot.ahk)
7.32kb - 2018-06-02 | classes| +| **1871** | [class_MailslotEx.ahk](classes/class_MailslotEx.ahk)
3.29kb - 2018-06-02 | classes| +| **1872** | [class_Matrix.ahk](classes/class_Matrix.ahk)
21.50kb - 2019-05-13 | classes| +| **1873** | [class_MemBlk (2).ahk](classes/class_MemBlk%20(2).ahk)
10.60kb - 2018-06-02 | classes| +| **1874** | [class_MemBlk.ahk](classes/class_MemBlk.ahk)
2.89kb - 2018-12-01 | classes| +| **1875** | [class_memClass_AHK2.ahk](classes/class_memClass_AHK2.ahk)
4.94kb - 2018-11-24 | classes| +| **1876** | [Class_Memory (2).ahk](classes/Class_Memory%20(2).ahk)
81.64kb - 2017-05-05 | classes| +| **1877** | [Class_Memory (3).ahk](classes/Class_Memory%20(3).ahk)
6.14kb - 2017-05-05 | classes| +| **1878** | [class_Memory.ahk](classes/class_Memory.ahk)
84.05kb - 2018-06-02 | classes| +| **1879** | [class_MemoryBuffer.ahk](classes/class_MemoryBuffer.ahk)
4.40kb - 2016-09-15 | classes| +| **1880** | [class_MemoryFileIO.ahk](classes/class_MemoryFileIO.ahk)
29.58kb - 2019-04-24 | classes| +| **1881** | [class_MemoryLibrary.ahk](classes/class_MemoryLibrary.ahk)
23.64kb - 2018-10-30 | classes| +| **1882** | [class_Memory_AHK2_64bit.ahk](classes/class_Memory_AHK2_64bit.ahk)
81.83kb - 2018-11-24 | classes| +| **1883** | [class_Mem_Injection.ahk](classes/class_Mem_Injection.ahk)
19.64kb - 2018-06-22 | classes| +| **1884** | [class_Menu.ahk](classes/class_Menu.ahk)
11.87kb - 2019-02-02 | classes| +| **1885** | [class_MenuEnumOption.ahk](classes/class_MenuEnumOption.ahk)
3.57kb - 2016-02-06 | classes| +| **1886** | [class_MenuToggleOption.ahk](classes/class_MenuToggleOption.ahk)
3.24kb - 2016-02-06 | classes| +| **1887** | [class_microWindows.ahk](classes/class_microWindows.ahk)
5.67kb - 2018-06-10 | classes| +| **1888** | [class_midiOut.ahk](classes/class_midiOut.ahk)
6.03kb - 2017-04-06 | classes| +| **1889** | [class_Monitor.ahk](classes/class_Monitor.ahk)
5.43kb - 2018-04-23 | classes| +| **1890** | [class_MonitorManager.ahk](classes/class_MonitorManager.ahk)
2.91kb - 2019-10-28 | classes| +| **1891** | [class_Mouse.ahk](classes/class_Mouse.ahk)
1.78kb - 2018-04-23 | classes| +| **1892** | [class_MouseDelta.ahk](classes/class_MouseDelta.ahk)
3.96kb - 2018-11-25 | classes| +| **1893** | [class_MouseHook.ahk](classes/class_MouseHook.ahk)
2.15kb - 2018-11-25 | classes| +| **1894** | [class_Mousetracker.ahk](classes/class_Mousetracker.ahk)
9.95kb - 2019-04-21 | classes| +| **1895** | [class_MsgBox.ahk](classes/class_MsgBox.ahk)
4.59kb - 2018-04-23 | classes| +| **1896** | [class_MS_SAPI.ahk](classes/class_MS_SAPI.ahk)
30.20kb - 2019-03-23 | classes| +| **1897** | [class_MS_XMLDOM.ahk](classes/class_MS_XMLDOM.ahk)
9.46kb - 2019-03-23 | classes| +| **1898** | [Class_Multipart.ahk](classes/Class_Multipart.ahk)
2.64kb - 2018-08-19 | classes| +| **1899** | [class_MultiTree Data Structure.ahk](classes/class_MultiTree%20Data%20Structure.ahk)
8.14kb - 2018-06-02 | classes| +| **1900** | [class_Mustache.ahk](classes/class_Mustache.ahk)
26.93kb - 2017-10-28 | classes| +| **1901** | [Class_myConsole.ahk](classes/Class_myConsole.ahk)
6.04kb - 2015-06-06 | classes| +| **1902** | [Class_MySQLAPI.ahk](classes/Class_MySQLAPI.ahk)
51.51kb - 2018-06-02 | classes| +| **1903** | [Class_NetworkManagement.ahk](classes/Class_NetworkManagement.ahk)
15.12kb - 2017-10-20 | classes| +| **1904** | [class_ObjectCheck.ahk](classes/class_ObjectCheck.ahk)
12.09kb - 2018-11-19 | classes| +| **1905** | [class_OD_Colors.ahk](classes/class_OD_Colors.ahk)
11.22kb - 2019-01-21 | classes| +| **1906** | [class_OfficeInfo.ahk](classes/class_OfficeInfo.ahk)
3.24kb - 2018-06-20 | classes| +| **1907** | [class_particles.ahk](classes/class_particles.ahk)
16.43kb - 2017-01-17 | classes| +| **1908** | [class_pastebin.ahk](classes/class_pastebin.ahk)
5.67kb - 2019-12-05 | classes| +| **1909** | [class_PerfomanceCounter.ahk](classes/class_PerfomanceCounter.ahk)
2.42kb - 2017-09-12 | classes| +| **1910** | [Class_Permissions.ahk](classes/Class_Permissions.ahk)
5.19kb - 2018-06-02 | classes| +| **1911** | [Class_PictureControl.ahk](classes/Class_PictureControl.ahk)
6.04kb - 2018-01-26 | classes| +| **1912** | [class_PIN.ahk](classes/class_PIN.ahk)
5.87kb - 2018-04-14 | classes| +| **1913** | [class_PIN_INI.ahk](classes/class_PIN_INI.ahk)
2.47kb - 2018-04-14 | classes| +| **1914** | [class_PixelState.ahk](classes/class_PixelState.ahk)
30.06kb - 2018-06-02 | classes| +| **1915** | [class_Printers.ahk](classes/class_Printers.ahk)
7.28kb - 2019-12-18 | classes| +| **1916** | [class_print_AHK2.ahk](classes/class_print_AHK2.ahk)
2.34kb - 2018-11-24 | classes| +| **1917** | [Class_ProcessExplorer.ahk](classes/Class_ProcessExplorer.ahk)
14.20kb - 2017-10-20 | classes| +| **1918** | [class_ProcessMonitor.ahk](classes/class_ProcessMonitor.ahk)
13.91kb - 2019-03-23 | classes| +| **1919** | [class_progress.ahk](classes/class_progress.ahk)
2.96kb - 2018-06-09 | classes| +| **1920** | [Class_Properties.ahk](classes/Class_Properties.ahk)
2.65kb - 2013-07-24 | classes| +| **1921** | [Class_PureNotify.ahk](classes/Class_PureNotify.ahk)
3.82kb - 2017-05-18 | classes| +| **1922** | [class_PushLog.ahk](classes/class_PushLog.ahk)
6.89kb - 2019-04-23 | classes| +| **1923** | [class_queue.ahk](classes/class_queue.ahk)
0.78kb - 2018-06-02 | classes| +| **1924** | [class_quicktimer.ahk](classes/class_quicktimer.ahk)
1.44kb - 2018-08-05 | classes| +| **1925** | [class_radical.ahk](classes/class_radical.ahk)
9.76kb - 2019-07-26 | classes| +| **1926** | [Class_Rebar.ahk](classes/Class_Rebar.ahk)
30.88kb - 2016-04-04 | classes| +| **1927** | [class_ref_StringsNumbersObjects.ahk](classes/class_ref_StringsNumbersObjects.ahk)
25.28kb - 2018-11-06 | classes| +| **1928** | [class_reg.ahk](classes/class_reg.ahk)
2.92kb - 2016-03-07 | classes| +| **1929** | [class_Regex (2).ahk](classes/class_Regex%20(2).ahk)
3.07kb - 2018-06-02 | classes| +| **1930** | [class_Regex.ahk](classes/class_Regex.ahk)
2.96kb - 2014-07-06 | classes| +| **1931** | [class_RemoteBuf.ahk](classes/class_RemoteBuf.ahk)
3.82kb - 2017-09-04 | classes| +| **1932** | [class_RemoteObj.ahk](classes/class_RemoteObj.ahk)
1.20kb - 2018-07-04 | classes| +| **1933** | [class_RichCode.ahk](classes/class_RichCode.ahk)
13.31kb - 2018-07-26 | classes| +| **1934** | [Class_RichEdit.ahk](classes/Class_RichEdit.ahk)
83.01kb - 2018-04-19 | classes| +| **1935** | [Class_RichEditDlgs.ahk](classes/Class_RichEditDlgs.ahk)
19.96kb - 2015-04-14 | classes| +| **1936** | [class_scintilla (2).ahk](classes/class_scintilla%20(2).ahk)
36.63kb - 2019-04-07 | classes| +| **1937** | [class_Scintilla.ahk](classes/class_Scintilla.ahk)
32.13kb - 2019-05-03 | classes| +| **1938** | [class_ScintillaG.ahk](classes/class_ScintillaG.ahk)
71.67kb - 2019-07-25 | classes| +| **1939** | [class_SciTEdirector_AHK2.ahk](classes/class_SciTEdirector_AHK2.ahk)
1.67kb - 2018-11-24 | classes| +| **1940** | [class_scriptobj.ahk](classes/class_scriptobj.ahk)
16.75kb - 2018-06-02 | classes| +| **1941** | [Class_ScrollGUI.ahk](classes/Class_ScrollGUI.ahk)
20.35kb - 2018-07-06 | classes| +| **1942** | [class_selector.ahk](classes/class_selector.ahk)
26.95kb - 2018-02-28 | classes| +| **1943** | [class_selectorActions.ahk](classes/class_selectorActions.ahk)
7.98kb - 2018-02-28 | classes| +| **1944** | [class_selectorRow.ahk](classes/class_selectorRow.ahk)
1.53kb - 2018-02-28 | classes| +| **1945** | [class_SerialPort.ahk](classes/class_SerialPort.ahk)
8.05kb - 2019-11-15 | classes| +| **1946** | [class_SideMenu.ahk](classes/class_SideMenu.ahk)
3.32kb - 2018-12-04 | classes| +| **1947** | [class_SimpleOSD.ahk](classes/class_SimpleOSD.ahk)
3.13kb - 2017-09-18 | classes| +| **1948** | [class_SlideWindows.ahk](classes/class_SlideWindows.ahk)
27.36kb - 2019-01-14 | classes| +| **1949** | [class_Socket.ahk](classes/class_Socket.ahk)
6.55kb - 2017-06-26 | classes| +| **1950** | [class_Soundcard.ahk](classes/class_Soundcard.ahk)
3.36kb - 2019-10-31 | classes| +| **1951** | [class_SpellCorrect.ahk](classes/class_SpellCorrect.ahk)
3.22kb - 2019-10-26 | classes| +| **1952** | [class_Spinner.ahk](classes/class_Spinner.ahk)
3.17kb - 2017-07-25 | classes| +| **1953** | [class_SpreadSheet.ahk](classes/class_SpreadSheet.ahk)
57.33kb - 2018-06-02 | classes| +| **1954** | [Class_SQLiteDB (2).ahk](classes/Class_SQLiteDB%20(2).ahk)
49.47kb - 2019-05-03 | classes| +| **1955** | [Class_SQLiteDB.ahk](classes/Class_SQLiteDB.ahk)
44.43kb - 2018-06-24 | classes| +| **1956** | [class_String.ahk](classes/class_String.ahk)
0.42kb - 2018-06-02 | classes| +| **1957** | [class_StringHelper.ahk](classes/class_StringHelper.ahk)
1.01kb - 2019-03-23 | classes| +| **1958** | [class_StringObject.ahk](classes/class_StringObject.ahk)
15.27kb - 2017-04-07 | classes| +| **1959** | [class_StringSimilarity.ahk](classes/class_StringSimilarity.ahk)
2.40kb - 2019-10-17 | classes| +| **1960** | [class_StrObj.ahk](classes/class_StrObj.ahk)
15.27kb - 2015-03-20 | classes| +| **1961** | [class_Struct.ahk](classes/class_Struct.ahk)
35.93kb - 2015-03-04 | classes| +| **1962** | [class_Subclass.ahk](classes/class_Subclass.ahk)
1.23kb - 2017-04-07 | classes| +| **1963** | [class_Subprocess.ahk](classes/class_Subprocess.ahk)
5.06kb - 2018-06-02 | classes| +| **1964** | [class_Subtitle.ahk](classes/class_Subtitle.ahk)
58.22kb - 2019-10-29 | classes| +| **1965** | [class_SyntaxTree.ahk](classes/class_SyntaxTree.ahk)
21.25kb - 2018-06-02 | classes| +| **1966** | [class_SystemTime.ahk](classes/class_SystemTime.ahk)
2.45kb - 2016-01-11 | classes| +| **1967** | [class_tableList (2).ahk](classes/class_tableList%20(2).ahk)
8.75kb - 2018-11-21 | classes| +| **1968** | [class_tableList.ahk](classes/class_tableList.ahk)
14.76kb - 2018-02-28 | classes| +| **1969** | [class_tableListMod (2).ahk](classes/class_tableListMod%20(2).ahk)
1.60kb - 2018-11-21 | classes| +| **1970** | [class_tableListMod.ahk](classes/class_tableListMod.ahk)
1.16kb - 2018-02-28 | classes| +| **1971** | [class_taskbarInterface.ahk](classes/class_taskbarInterface.ahk)
72.82kb - 2019-12-17 | classes| +| **1972** | [class_taskbarInterface_v2.ahk](classes/class_taskbarInterface_v2.ahk)
72.80kb - 2019-12-17 | classes| +| **1973** | [class_TaskView.ahk](classes/class_TaskView.ahk)
5.17kb - 2018-08-31 | classes| +| **1974** | [class_Tesseract.ahk](classes/class_Tesseract.ahk)
5.19kb - 2018-11-06 | classes| +| **1975** | [class_TextFader.ahk](classes/class_TextFader.ahk)
2.65kb - 2019-01-24 | classes| +| **1976** | [class_threadFunc.ahk](classes/class_threadFunc.ahk)
2.45kb - 2018-12-17 | classes| +| **1977** | [class_threadFunc_v1.ahk](classes/class_threadFunc_v1.ahk)
3.21kb - 2018-12-17 | classes| +| **1978** | [Class_ThreadInstance.ahk](classes/Class_ThreadInstance.ahk)
9.13kb - 2018-06-20 | classes| +| **1979** | [class_threadMan.ahk](classes/class_threadMan.ahk)
8.72kb - 2018-10-30 | classes| +| **1980** | [class_threefishCrypt.ahk](classes/class_threefishCrypt.ahk)
147.40kb - 2016-08-04 | classes| +| **1981** | [class_Thumbnail.ahk](classes/class_Thumbnail.ahk)
8.62kb - 2017-04-07 | classes| +| **1982** | [class_Toast.ahk](classes/class_Toast.ahk)
3.90kb - 2018-07-29 | classes| +| **1983** | [class_tokelex.ahk](classes/class_tokelex.ahk)
41.48kb - 2018-11-06 | classes| +| **1984** | [class_Toolbar (2).ahk](classes/class_Toolbar%20(2).ahk)
36.89kb - 2019-05-03 | classes| +| **1985** | [Class_Toolbar.ahk](classes/Class_Toolbar.ahk)
63.24kb - 2018-06-02 | classes| +| **1986** | [Class_TransparentListBox.ahk](classes/Class_TransparentListBox.ahk)
21.01kb - 2013-10-05 | classes| +| **1987** | [class_TreeList.ahk](classes/class_TreeList.ahk)
10.67kb - 2018-08-30 | classes| +| **1988** | [class_TreeOf.ahk](classes/class_TreeOf.ahk)
12.68kb - 2019-12-28 | classes| +| **1989** | [Class_Trie.ahk](classes/Class_Trie.ahk)
3.51kb - 2018-12-21 | classes| +| **1990** | [class_tv.ahk](classes/class_tv.ahk)
11.42kb - 2016-03-07 | classes| +| **1991** | [class_Viewport.ahk](classes/class_Viewport.ahk)
8.38kb - 2018-06-02 | classes| +| **1992** | [class_VirtualDesktopAccessor.ahk](classes/class_VirtualDesktopAccessor.ahk)
3.30kb - 2018-01-24 | classes| +| **1993** | [Class_VisualStyle.ahk](classes/Class_VisualStyle.ahk)
25.11kb - 2019-12-02 | classes| +| **1994** | [class_WBClientSite.ahk](classes/class_WBClientSite.ahk)
3.11kb - 2018-06-20 | classes| +| **1995** | [class_WBImg.ahk](classes/class_WBImg.ahk)
4.08kb - 2019-11-14 | classes| +| **1996** | [class_WebSocket.ahk](classes/class_WebSocket.ahk)
1.64kb - 2018-01-16 | classes| +| **1997** | [class_Win32.ahk](classes/class_Win32.ahk)
7.00kb - 2018-07-02 | classes| +| **1998** | [class_WinAPI.ahk](classes/class_WinAPI.ahk)
11.90kb - 2019-03-23 | classes| +| **1999** | [class_WinClip.ahk](classes/class_WinClip.ahk)
44.46kb - 2018-01-26 | classes| +| **2000** | [class_WinClipAPI.ahk](classes/class_WinClipAPI.ahk)
8.33kb - 2014-12-28 | classes| +| **2001** | [class_WindowFader.ahk](classes/class_WindowFader.ahk)
1.87kb - 2018-12-19 | classes| +| **2002** | [class_WindowsSettings.ahk](classes/class_WindowsSettings.ahk)
8.09kb - 2019-01-14 | classes| +| **2003** | [class_Window_Ext_Monitor.ahk](classes/class_Window_Ext_Monitor.ahk)
10.96kb - 2018-04-23 | classes| +| **2004** | [class_WinEventHook.ahk](classes/class_WinEventHook.ahk)
9.93kb - 2019-12-20 | classes| +| **2005** | [Class_WinEvents.ahk](classes/Class_WinEvents.ahk)
1.08kb - 2017-05-05 | classes| +| **2006** | [Class_WinRing0.ahk](classes/Class_WinRing0.ahk)
6.58kb - 2017-03-20 | classes| +| **2007** | [class_WinStructs.ahk](classes/class_WinStructs.ahk)
8.61kb - 2016-08-17 | classes| +| **2008** | [class_WMCommand_and_Notify.ahk](classes/class_WMCommand_and_Notify.ahk)
14.21kb - 2018-07-04 | classes| +| **2009** | [class_WM_Dlg.ahk](classes/class_WM_Dlg.ahk)
57.48kb - 2017-09-18 | classes| +| **2010** | [class_WorkerThread.ahk](classes/class_WorkerThread.ahk)
17.60kb - 2014-12-28 | classes| +| **2011** | [class_Worker_Local.ahk](classes/class_Worker_Local.ahk)
8.29kb - 2012-12-17 | classes| +| **2012** | [class_Worker_Network.ahk](classes/class_Worker_Network.ahk)
0.18kb - 2012-12-17 | classes| +| **2013** | [class_XBOX360.ahk](classes/class_XBOX360.ahk)
12.12kb - 2019-07-05 | classes| +| **2014** | [class_xcall.ahk](classes/class_xcall.ahk)
3.96kb - 2018-12-22 | classes| +| **2015** | [class_xHotkey.ahk](classes/class_xHotkey.ahk)
6.22kb - 2018-05-23 | classes| +| **2016** | [class_xlib.ahk](classes/class_xlib.ahk)
0.24kb - 2018-12-22 | classes| +| **2017** | [Class_xmlfile.ahk](classes/Class_xmlfile.ahk)
4.47kb - 2015-11-12 | classes| +| **2018** | [Class_XmlHelper.ahk](classes/Class_XmlHelper.ahk)
24.76kb - 2017-02-16 | classes| +| **2019** | [class_XNet.ahk](classes/class_XNet.ahk)
14.23kb - 2018-12-08 | classes| +| **2020** | [class_ZeeGrid.ahk](classes/class_ZeeGrid.ahk)
12.37kb - 2019-12-17 | classes| +| **2021** | [class__ini.ahk](classes/class__ini.ahk)
4.73kb - 2019-05-15 | classes| +| **2022** | [ComDispTable.ahk](classes/ComDispTable.ahk)
0.84kb - 2019-03-23 | classes| +| **2023** | [ComVar.ahk](classes/ComVar.ahk)
1.34kb - 2019-03-23 | classes| +| **2024** | [DataBaseAbstract.ahk](classes/DataBaseAbstract.ahk)
6.11kb - 2018-06-02 | classes| +| **2025** | [DataBaseADO.ahk](classes/DataBaseADO.ahk)
3.83kb - 2018-06-02 | classes| +| **2026** | [DataBaseFactory.ahk](classes/DataBaseFactory.ahk)
1.17kb - 2018-06-02 | classes| +| **2027** | [DataBaseMySQL.ahk](classes/DataBaseMySQL.ahk)
6.33kb - 2018-06-02 | classes| +| **2028** | [DataBaseSQLLite.ahk](classes/DataBaseSQLLite.ahk)
9.44kb - 2018-06-02 | classes| +| **2029** | [DBA.ahk](classes/DBA.ahk)
0.41kb - 2017-04-07 | classes| +| **2030** | [Delegate.ahk](classes/Delegate.ahk)
1.22kb - 2017-04-07 | classes| +| **2031** | [RecordSetADO.ahk](classes/RecordSetADO.ahk)
1.91kb - 2015-03-05 | classes| +| **2032** | [RecordSetMySQL.ahk](classes/RecordSetMySQL.ahk)
1.88kb - 2015-03-05 | classes| +| **2033** | [RecordSetSqlLite.ahk](classes/RecordSetSqlLite.ahk)
3.36kb - 2015-03-05 | classes| +| **2034** | [SQL_new.ahk](classes/SQL_new.ahk)
8.31kb - 2015-03-05 | classes| +| **2035** | [Class_PictureButton_v1.ahk](classes/Class_PictureButton-master/lib/Class_PictureButton_v1.ahk)
2.72kb - 2018-11-04 | classes/Class_PictureButton-master/lib| +| **2036** | [Class_PictureButton_v2.ahk](classes/Class_PictureButton-master/lib/Class_PictureButton_v2.ahk)
6.76kb - 2018-11-04 | classes/Class_PictureButton-master/lib| +| **2037** | [class_JavaAccessBridge.ahk](classes/class_Java-Access-Bridge/class_JavaAccessBridge.ahk)
42.20kb - 2017-10-31 | classes/class_Java-Access-Bridge| +| **2038** | [JavaAccessBridge.ahk](classes/class_Java-Access-Bridge/JavaAccessBridge.ahk)
62.94kb - 2017-10-31 | classes/class_Java-Access-Bridge| +| **2039** | [CCF.ahk](classes/COM-Classes-FrameWork/CCF.ahk)
17.50kb - 2012-03-16 | classes/COM-Classes-FrameWork| +| **2040** | [CCFramework.ahk](classes/COM-Classes-FrameWork/CCFramework.ahk)
6.27kb - 2012-03-16 | classes/COM-Classes-FrameWork| +| **2041** | [ImageList Header.ahk](classes/COM-Classes-FrameWork/ImageList%20Header.ahk)
0.65kb - 2012-03-16 | classes/COM-Classes-FrameWork| +| **2042** | [SaveHImage2File.ahk](classes/COM-Classes-FrameWork/SaveHImage2File.ahk)
2.16kb - 2012-03-16 | classes/COM-Classes-FrameWork| +| **2043** | [TaskbarList Header.ahk](classes/COM-Classes-FrameWork/TaskbarList%20Header.ahk)
0.47kb - 2012-03-16 | classes/COM-Classes-FrameWork| +| **2044** | [Type Information Header.ahk](classes/COM-Classes-FrameWork/Type%20Information%20Header.ahk)
1.22kb - 2012-03-16 | classes/COM-Classes-FrameWork| +| **2045** | [UIAutomation Header.ahk](classes/COM-Classes-FrameWork/UIAutomation%20Header.ahk)
0.38kb - 2012-03-16 | classes/COM-Classes-FrameWork| +| **2046** | [_CCF_Error_Handler_.ahk](classes/COM-Classes-FrameWork/_CCF_Error_Handler_.ahk)
0.72kb - 2012-03-16 | classes/COM-Classes-FrameWork| +| **2047** | [CALLCONV.ahk](classes/COM-Classes-FrameWork/Constant Classes/CALLCONV.ahk)
1.01kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2048** | [CF.ahk](classes/COM-Classes-FrameWork/Constant Classes/CF.ahk)
5.75kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2049** | [CLR.ahk](classes/COM-Classes-FrameWork/Constant Classes/CLR.ahk)
0.78kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2050** | [CLSCTX.ahk](classes/COM-Classes-FrameWork/Constant Classes/CLSCTX.ahk)
4.97kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2051** | [DESCKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/DESCKIND.ahk)
0.86kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2052** | [DEVICE_STATE.ahk](classes/COM-Classes-FrameWork/Constant Classes/DEVICE_STATE.ahk)
1.92kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2053** | [DISPATCHF.ahk](classes/COM-Classes-FrameWork/Constant Classes/DISPATCHF.ahk)
1.14kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2054** | [DISPID.ahk](classes/COM-Classes-FrameWork/Constant Classes/DISPID.ahk)
1.83kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2055** | [DVASPECT.ahk](classes/COM-Classes-FrameWork/Constant Classes/DVASPECT.ahk)
1.39kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2056** | [EDataFlow.ahk](classes/COM-Classes-FrameWork/Constant Classes/EDataFlow.ahk)
1.26kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2057** | [ERole.ahk](classes/COM-Classes-FrameWork/Constant Classes/ERole.ahk)
1.00kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2058** | [FILE_ATTRIBUTE.ahk](classes/COM-Classes-FrameWork/Constant Classes/FILE_ATTRIBUTE.ahk)
3.27kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2059** | [FUNCFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/FUNCFLAG.ahk)
2.71kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2060** | [FUNCKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/FUNCKIND.ahk)
1.07kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2061** | [IDC.ahk](classes/COM-Classes-FrameWork/Constant Classes/IDC.ahk)
0.87kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2062** | [IDI.ahk](classes/COM-Classes-FrameWork/Constant Classes/IDI.ahk)
0.74kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2063** | [IDLFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/IDLFLAG.ahk)
0.98kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2064** | [ILC.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILC.ahk)
2.18kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2065** | [ILCF.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILCF.ahk)
0.73kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2066** | [ILD.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILD.ahk)
2.99kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2067** | [ILDI.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILDI.ahk)
0.95kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2068** | [ILFIP.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILFIP.ahk)
0.67kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2069** | [ILGOS.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILGOS.ahk)
0.67kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2070** | [ILIF.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILIF.ahk)
0.78kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2071** | [ILR.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILR.ahk)
1.24kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2072** | [ILS.ahk](classes/COM-Classes-FrameWork/Constant Classes/ILS.ahk)
1.24kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2073** | [IMPLTYPEFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/IMPLTYPEFLAG.ahk)
0.88kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2074** | [INVOKEKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/INVOKEKIND.ahk)
1.05kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2075** | [KDC.ahk](classes/COM-Classes-FrameWork/Constant Classes/KDC.ahk)
0.61kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2076** | [KNOWNFOLDERID.ahk](classes/COM-Classes-FrameWork/Constant Classes/KNOWNFOLDERID.ahk)
21.87kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2077** | [LIBFLAGS.ahk](classes/COM-Classes-FrameWork/Constant Classes/LIBFLAGS.ahk)
1.03kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2078** | [LOCKTYPE.ahk](classes/COM-Classes-FrameWork/Constant Classes/LOCKTYPE.ahk)
1.30kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2079** | [MEMBERID.ahk](classes/COM-Classes-FrameWork/Constant Classes/MEMBERID.ahk)
0.60kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2080** | [OBM.ahk](classes/COM-Classes-FrameWork/Constant Classes/OBM.ahk)
1.39kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2081** | [PARAMFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/PARAMFLAG.ahk)
1.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2082** | [PDOPSTATUS.ahk](classes/COM-Classes-FrameWork/Constant Classes/PDOPSTATUS.ahk)
1.03kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2083** | [PDTIMER.ahk](classes/COM-Classes-FrameWork/Constant Classes/PDTIMER.ahk)
0.82kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2084** | [PICTUREATTRIBUTES.ahk](classes/COM-Classes-FrameWork/Constant Classes/PICTUREATTRIBUTES.ahk)
1.22kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2085** | [PICTYPE.ahk](classes/COM-Classes-FrameWork/Constant Classes/PICTYPE.ahk)
1.74kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2086** | [PMODE.ahk](classes/COM-Classes-FrameWork/Constant Classes/PMODE.ahk)
1.25kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2087** | [PROGDLG.ahk](classes/COM-Classes-FrameWork/Constant Classes/PROGDLG.ahk)
3.11kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2088** | [PSC.ahk](classes/COM-Classes-FrameWork/Constant Classes/PSC.ahk)
0.85kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2089** | [RECO.ahk](classes/COM-Classes-FrameWork/Constant Classes/RECO.ahk)
0.81kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2090** | [REGKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/REGKIND.ahk)
0.66kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2091** | [REO.ahk](classes/COM-Classes-FrameWork/Constant Classes/REO.ahk)
3.73kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2092** | [SFGAO.ahk](classes/COM-Classes-FrameWork/Constant Classes/SFGAO.ahk)
7.48kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2093** | [SICHINT.ahk](classes/COM-Classes-FrameWork/Constant Classes/SICHINT.ahk)
1.20kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2094** | [SIGDN.ahk](classes/COM-Classes-FrameWork/Constant Classes/SIGDN.ahk)
2.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2095** | [SLGP.ahk](classes/COM-Classes-FrameWork/Constant Classes/SLGP.ahk)
1.04kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2096** | [SLR.ahk](classes/COM-Classes-FrameWork/Constant Classes/SLR.ahk)
3.00kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2097** | [SPACTION.ahk](classes/COM-Classes-FrameWork/Constant Classes/SPACTION.ahk)
1.91kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2098** | [STATFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/STATFLAG.ahk)
1.29kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2099** | [STGC.ahk](classes/COM-Classes-FrameWork/Constant Classes/STGC.ahk)
3.71kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2100** | [STGM.ahk](classes/COM-Classes-FrameWork/Constant Classes/STGM.ahk)
8.39kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2101** | [STGMOVE.ahk](classes/COM-Classes-FrameWork/Constant Classes/STGMOVE.ahk)
1.01kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2102** | [STGTY.ahk](classes/COM-Classes-FrameWork/Constant Classes/STGTY.ahk)
1.05kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2103** | [STPFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/STPFLAG.ahk)
2.00kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2104** | [STREAM_SEEK.ahk](classes/COM-Classes-FrameWork/Constant Classes/STREAM_SEEK.ahk)
1.16kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2105** | [SW.ahk](classes/COM-Classes-FrameWork/Constant Classes/SW.ahk)
2.61kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2106** | [SYSKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/SYSKIND.ahk)
1.14kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2107** | [TBPFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/TBPFLAG.ahk)
2.13kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2108** | [THUMBBUTTONFLAGS.ahk](classes/COM-Classes-FrameWork/Constant Classes/THUMBBUTTONFLAGS.ahk)
1.38kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2109** | [THUMBBUTTONMASK.ahk](classes/COM-Classes-FrameWork/Constant Classes/THUMBBUTTONMASK.ahk)
0.93kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2110** | [TYPEFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/TYPEFLAG.ahk)
2.62kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2111** | [TYPEKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/TYPEKIND.ahk)
1.25kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2112** | [VARENUM.ahk](classes/COM-Classes-FrameWork/Constant Classes/VARENUM.ahk)
3.59kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2113** | [VARFLAG.ahk](classes/COM-Classes-FrameWork/Constant Classes/VARFLAG.ahk)
2.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2114** | [VARKIND.ahk](classes/COM-Classes-FrameWork/Constant Classes/VARKIND.ahk)
0.88kb - 2012-03-16 | classes/COM-Classes-FrameWork/Constant Classes| +| **2115** | [CustomDestinationList.ahk](classes/COM-Classes-FrameWork/CustomDestinationList/CustomDestinationList.ahk)
8.41kb - 2012-03-16 | classes/COM-Classes-FrameWork/CustomDestinationList| +| **2116** | [Dispatch.ahk](classes/COM-Classes-FrameWork/Dispatch/Dispatch.ahk)
4.98kb - 2012-03-16 | classes/COM-Classes-FrameWork/Dispatch| +| **2117** | [EnumShellItems.ahk](classes/COM-Classes-FrameWork/EnumShellItems/EnumShellItems.ahk)
2.70kb - 2012-03-16 | classes/COM-Classes-FrameWork/EnumShellItems| +| **2118** | [EnumSTATSTG.ahk](classes/COM-Classes-FrameWork/EnumSTATSTG/EnumSTATSTG.ahk)
2.61kb - 2012-03-16 | classes/COM-Classes-FrameWork/EnumSTATSTG| +| **2119** | [ImageList.ahk](classes/COM-Classes-FrameWork/ImageList/ImageList.ahk)
17.96kb - 2012-03-16 | classes/COM-Classes-FrameWork/ImageList| +| **2120** | [ImageList2.ahk](classes/COM-Classes-FrameWork/ImageList2/ImageList2.ahk)
6.71kb - 2012-03-16 | classes/COM-Classes-FrameWork/ImageList2| +| **2121** | [MMDevice.ahk](classes/COM-Classes-FrameWork/MMDevice/MMDevice.ahk)
3.56kb - 2012-03-16 | classes/COM-Classes-FrameWork/MMDevice| +| **2122** | [MMDeviceCollection.ahk](classes/COM-Classes-FrameWork/MMDeviceCollection/MMDeviceCollection.ahk)
1.68kb - 2012-03-16 | classes/COM-Classes-FrameWork/MMDeviceCollection| +| **2123** | [MMDeviceEnumerator.ahk](classes/COM-Classes-FrameWork/MMDeviceEnumerator/MMDeviceEnumerator.ahk)
5.12kb - 2012-03-16 | classes/COM-Classes-FrameWork/MMDeviceEnumerator| +| **2124** | [ObjectArray.ahk](classes/COM-Classes-FrameWork/ObjectArray/ObjectArray.ahk)
1.80kb - 2012-03-16 | classes/COM-Classes-FrameWork/ObjectArray| +| **2125** | [ObjectCollection.ahk](classes/COM-Classes-FrameWork/ObjectCollection/ObjectCollection.ahk)
2.22kb - 2012-03-16 | classes/COM-Classes-FrameWork/ObjectCollection| +| **2126** | [OperationsProgressDialog.ahk](classes/COM-Classes-FrameWork/OperationsProgressDialog/OperationsProgressDialog.ahk)
5.78kb - 2012-03-16 | classes/COM-Classes-FrameWork/OperationsProgressDialog| +| **2127** | [Persist.ahk](classes/COM-Classes-FrameWork/Persist/Persist.ahk)
1.28kb - 2012-03-16 | classes/COM-Classes-FrameWork/Persist| +| **2128** | [PersistFile.ahk](classes/COM-Classes-FrameWork/PersistFile/PersistFile.ahk)
3.79kb - 2012-03-16 | classes/COM-Classes-FrameWork/PersistFile| +| **2129** | [Picture.ahk](classes/COM-Classes-FrameWork/Picture/Picture.ahk)
11.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Picture| +| **2130** | [ProgressDialog.ahk](classes/COM-Classes-FrameWork/ProgressDialog/ProgressDialog.ahk)
6.09kb - 2012-03-16 | classes/COM-Classes-FrameWork/ProgressDialog| +| **2131** | [PropertyStore.ahk](classes/COM-Classes-FrameWork/PropertyStore/PropertyStore.ahk)
2.86kb - 2012-03-16 | classes/COM-Classes-FrameWork/PropertyStore| +| **2132** | [PropertyStoreCache.ahk](classes/COM-Classes-FrameWork/PropertyStoreCache/PropertyStoreCache.ahk)
3.47kb - 2012-03-16 | classes/COM-Classes-FrameWork/PropertyStoreCache| +| **2133** | [ProvideClassInfo.ahk](classes/COM-Classes-FrameWork/ProvideClassInfo/ProvideClassInfo.ahk)
1.39kb - 2012-03-16 | classes/COM-Classes-FrameWork/ProvideClassInfo| +| **2134** | [RichEditOLE.ahk](classes/COM-Classes-FrameWork/RichEditOLE/RichEditOLE.ahk)
11.92kb - 2012-03-16 | classes/COM-Classes-FrameWork/RichEditOLE| +| **2135** | [SequentialStream.ahk](classes/COM-Classes-FrameWork/SequentialStream/SequentialStream.ahk)
2.29kb - 2012-03-16 | classes/COM-Classes-FrameWork/SequentialStream| +| **2136** | [ShellItem.ahk](classes/COM-Classes-FrameWork/ShellItem/ShellItem.ahk)
9.04kb - 2012-03-16 | classes/COM-Classes-FrameWork/ShellItem| +| **2137** | [ShellLinkA.ahk](classes/COM-Classes-FrameWork/ShellLinkA/ShellLinkA.ahk)
7.95kb - 2012-03-16 | classes/COM-Classes-FrameWork/ShellLinkA| +| **2138** | [ShellLinkW.ahk](classes/COM-Classes-FrameWork/ShellLinkW/ShellLinkW.ahk)
7.95kb - 2012-03-16 | classes/COM-Classes-FrameWork/ShellLinkW| +| **2139** | [Storage.ahk](classes/COM-Classes-FrameWork/Storage/Storage.ahk)
12.28kb - 2012-03-16 | classes/COM-Classes-FrameWork/Storage| +| **2140** | [Stream.ahk](classes/COM-Classes-FrameWork/Stream/Stream.ahk)
6.41kb - 2012-03-16 | classes/COM-Classes-FrameWork/Stream| +| **2141** | [ARRAYDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/ARRAYDESC.ahk)
4.50kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2142** | [CHARRANGE.ahk](classes/COM-Classes-FrameWork/Structure Classes/CHARRANGE.ahk)
2.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2143** | [CUSTDATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/CUSTDATA.ahk)
3.53kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2144** | [CUSTDATAITEM.ahk](classes/COM-Classes-FrameWork/Structure Classes/CUSTDATAITEM.ahk)
3.23kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2145** | [DISPPARAMS.ahk](classes/COM-Classes-FrameWork/Structure Classes/DISPPARAMS.ahk)
4.60kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2146** | [ELEMDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/ELEMDESC.ahk)
3.44kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2147** | [EXCEPINFO.ahk](classes/COM-Classes-FrameWork/Structure Classes/EXCEPINFO.ahk)
4.15kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2148** | [FILETIME.ahk](classes/COM-Classes-FrameWork/Structure Classes/FILETIME.ahk)
2.93kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2149** | [FUNCDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/FUNCDESC.ahk)
6.95kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2150** | [IDLDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/IDLDESC.ahk)
2.46kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2151** | [IMAGEINFO.ahk](classes/COM-Classes-FrameWork/Structure Classes/IMAGEINFO.ahk)
3.33kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2152** | [IMAGELISTDRAWPARAMS.ahk](classes/COM-Classes-FrameWork/Structure Classes/IMAGELISTDRAWPARAMS.ahk)
8.25kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2153** | [IMAGELISTSTATS.ahk](classes/COM-Classes-FrameWork/Structure Classes/IMAGELISTSTATS.ahk)
2.43kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2154** | [INTERFACEDATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/INTERFACEDATA.ahk)
2.38kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2155** | [METHODDATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/METHODDATA.ahk)
3.49kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2156** | [PARAMDATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/PARAMDATA.ahk)
2.59kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2157** | [PARAMDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/PARAMDESC.ahk)
2.86kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2158** | [PARAMDESCEX.ahk](classes/COM-Classes-FrameWork/Structure Classes/PARAMDESCEX.ahk)
2.97kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2159** | [PICTDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/PICTDESC.ahk)
6.15kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2160** | [POINT.ahk](classes/COM-Classes-FrameWork/Structure Classes/POINT.ahk)
2.22kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2161** | [PROPERTYKEY.ahk](classes/COM-Classes-FrameWork/Structure Classes/PROPERTYKEY.ahk)
2.43kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2162** | [RECT.ahk](classes/COM-Classes-FrameWork/Structure Classes/RECT.ahk)
2.87kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2163** | [REOBJECT.ahk](classes/COM-Classes-FrameWork/Structure Classes/REOBJECT.ahk)
4.79kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2164** | [SAFEARRAYBOUND.ahk](classes/COM-Classes-FrameWork/Structure Classes/SAFEARRAYBOUND.ahk)
2.33kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2165** | [SIZE.ahk](classes/COM-Classes-FrameWork/Structure Classes/SIZE.ahk)
2.28kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2166** | [STATSTG.ahk](classes/COM-Classes-FrameWork/Structure Classes/STATSTG.ahk)
5.51kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2167** | [StructBase.ahk](classes/COM-Classes-FrameWork/Structure Classes/StructBase.ahk)
5.72kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2168** | [SYSTEMTIME.ahk](classes/COM-Classes-FrameWork/Structure Classes/SYSTEMTIME.ahk)
4.42kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2169** | [THUMBBUTTON.ahk](classes/COM-Classes-FrameWork/Structure Classes/THUMBBUTTON.ahk)
3.69kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2170** | [TLIBATTR.ahk](classes/COM-Classes-FrameWork/Structure Classes/TLIBATTR.ahk)
3.32kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2171** | [TYPEATTR.ahk](classes/COM-Classes-FrameWork/Structure Classes/TYPEATTR.ahk)
5.98kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2172** | [TYPEDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/TYPEDESC.ahk)
3.52kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2173** | [VARDESC.ahk](classes/COM-Classes-FrameWork/Structure Classes/VARDESC.ahk)
4.30kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2174** | [WIN32_FIND_DATA.ahk](classes/COM-Classes-FrameWork/Structure Classes/WIN32_FIND_DATA.ahk)
5.04kb - 2012-03-16 | classes/COM-Classes-FrameWork/Structure Classes| +| **2175** | [TaskbarList.ahk](classes/COM-Classes-FrameWork/TaskbarList/TaskbarList.ahk)
3.60kb - 2012-03-16 | classes/COM-Classes-FrameWork/TaskbarList| +| **2176** | [TaskbarList2.ahk](classes/COM-Classes-FrameWork/TaskbarList2/TaskbarList2.ahk)
1.43kb - 2012-03-16 | classes/COM-Classes-FrameWork/TaskbarList2| +| **2177** | [TaskbarList3.ahk](classes/COM-Classes-FrameWork/TaskbarList3/TaskbarList3.ahk)
10.70kb - 2012-03-16 | classes/COM-Classes-FrameWork/TaskbarList3| +| **2178** | [TaskbarList4.ahk](classes/COM-Classes-FrameWork/TaskbarList4/TaskbarList4.ahk)
1.80kb - 2012-03-16 | classes/COM-Classes-FrameWork/TaskbarList4| +| **2179** | [TypeComp.ahk](classes/COM-Classes-FrameWork/TypeComp/TypeComp.ahk)
4.03kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeComp| +| **2180** | [TypeInfo.ahk](classes/COM-Classes-FrameWork/TypeInfo/TypeInfo.ahk)
15.15kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeInfo| +| **2181** | [TypeInfo2.ahk](classes/COM-Classes-FrameWork/TypeInfo2/TypeInfo2.ahk)
11.12kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeInfo2| +| **2182** | [TypeLib.ahk](classes/COM-Classes-FrameWork/TypeLib/TypeLib.ahk)
7.89kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeLib| +| **2183** | [TypeLib2.ahk](classes/COM-Classes-FrameWork/TypeLib2/TypeLib2.ahk)
3.86kb - 2012-03-16 | classes/COM-Classes-FrameWork/TypeLib2| +| **2184** | [UIAutomationBoolCondition.ahk](classes/COM-Classes-FrameWork/UIAutomationBoolCondition/UIAutomationBoolCondition.ahk)
2.04kb - 2012-03-16 | classes/COM-Classes-FrameWork/UIAutomationBoolCondition| +| **2185** | [UIAutomationCondition.ahk](classes/COM-Classes-FrameWork/UIAutomationCondition/UIAutomationCondition.ahk)
1.20kb - 2012-03-16 | classes/COM-Classes-FrameWork/UIAutomationCondition| +| **2186** | [UIAutomationElementArray.ahk](classes/COM-Classes-FrameWork/UIAutomationElementArray/UIAutomationElementArray.ahk)
2.34kb - 2012-03-16 | classes/COM-Classes-FrameWork/UIAutomationElementArray| +| **2187** | [UIAutomationNotCondition.ahk](classes/COM-Classes-FrameWork/UIAutomationNotCondition/UIAutomationNotCondition.ahk)
1.60kb - 2012-03-16 | classes/COM-Classes-FrameWork/UIAutomationNotCondition| +| **2188** | [Unknown.ahk](classes/COM-Classes-FrameWork/Unknown/Unknown.ahk)
4.22kb - 2012-03-16 | classes/COM-Classes-FrameWork/Unknown| +| **2189** | [DbgOut.ahk](more libs/DbgOut.ahk)
1.23kb - 2017-03-07 | more libs| +| **2190** | [Windy.ahk](more libs/Windy.ahk)
1.71kb - 2017-03-07 | more libs| +| **2191** | [ActiveScript.ahk](more libs/ActiveScript/ActiveScript.ahk)
9.81kb - 2018-01-29 | more libs/ActiveScript| +| **2192** | [ComDispatch0.ahk](more libs/ActiveScript/ComDispatch0.ahk)
5.84kb - 2018-01-29 | more libs/ActiveScript| +| **2193** | [JsRT.ahk](more libs/ActiveScript/JsRT.ahk)
3.34kb - 2018-01-29 | more libs/ActiveScript| +| **2194** | [AFC.ahk](more libs/AFC/AFC.ahk)
4.37kb - 2014-07-04 | more libs/AFC| +| **2195** | [CChildWindow.ahk](more libs/AFC/CChildWindow.ahk)
0.44kb - 2014-07-04 | more libs/AFC| +| **2196** | [CControl.ahk](more libs/AFC/CControl.ahk)
5.35kb - 2014-07-04 | more libs/AFC| +| **2197** | [CCtrlActiveX.ahk](more libs/AFC/CCtrlActiveX.ahk)
0.78kb - 2014-07-04 | more libs/AFC| +| **2198** | [CCtrlButton.ahk](more libs/AFC/CCtrlButton.ahk)
0.27kb - 2014-07-04 | more libs/AFC| +| **2199** | [CCtrlCalendar.ahk](more libs/AFC/CCtrlCalendar.ahk)
0.28kb - 2014-07-04 | more libs/AFC| +| **2200** | [CCtrlCheckBox.ahk](more libs/AFC/CCtrlCheckBox.ahk)
0.28kb - 2014-07-04 | more libs/AFC| +| **2201** | [CCtrlComboBox.ahk](more libs/AFC/CCtrlComboBox.ahk)
0.28kb - 2014-07-04 | more libs/AFC| +| **2202** | [CCtrlDateTime.ahk](more libs/AFC/CCtrlDateTime.ahk)
0.29kb - 2014-07-04 | more libs/AFC| +| **2203** | [CCtrlDropDown.ahk](more libs/AFC/CCtrlDropDown.ahk)
0.28kb - 2014-07-04 | more libs/AFC| +| **2204** | [CCtrlEdit.ahk](more libs/AFC/CCtrlEdit.ahk)
0.25kb - 2014-07-04 | more libs/AFC| +| **2205** | [CCtrlGroupBox.ahk](more libs/AFC/CCtrlGroupBox.ahk)
0.28kb - 2014-07-04 | more libs/AFC| +| **2206** | [CCtrlHotkey.ahk](more libs/AFC/CCtrlHotkey.ahk)
0.27kb - 2014-07-04 | more libs/AFC| +| **2207** | [CCtrlImage.ahk](more libs/AFC/CCtrlImage.ahk)
0.52kb - 2014-07-04 | more libs/AFC| +| **2208** | [CCtrlLabel.ahk](more libs/AFC/CCtrlLabel.ahk)
0.26kb - 2014-07-04 | more libs/AFC| +| **2209** | [CCtrlLink.ahk](more libs/AFC/CCtrlLink.ahk)
0.25kb - 2014-07-04 | more libs/AFC| +| **2210** | [CCtrlListBox.ahk](more libs/AFC/CCtrlListBox.ahk)
0.27kb - 2014-07-04 | more libs/AFC| +| **2211** | [CCtrlListView.ahk](more libs/AFC/CCtrlListView.ahk)
14.09kb - 2014-07-04 | more libs/AFC| +| **2212** | [CCtrlProgress.ahk](more libs/AFC/CCtrlProgress.ahk)
0.29kb - 2014-07-04 | more libs/AFC| +| **2213** | [CCtrlRadio.ahk](more libs/AFC/CCtrlRadio.ahk)
0.26kb - 2014-07-04 | more libs/AFC| +| **2214** | [CCtrlSlider.ahk](more libs/AFC/CCtrlSlider.ahk)
0.27kb - 2014-07-04 | more libs/AFC| +| **2215** | [CCtrlStatusBar.ahk](more libs/AFC/CCtrlStatusBar.ahk)
2.83kb - 2014-07-04 | more libs/AFC| +| **2216** | [CCtrlTab.ahk](more libs/AFC/CCtrlTab.ahk)
1.44kb - 2014-07-04 | more libs/AFC| +| **2217** | [CCtrlTreeView.ahk](more libs/AFC/CCtrlTreeView.ahk)
13.12kb - 2014-07-04 | more libs/AFC| +| **2218** | [CCtrlUpDown.ahk](more libs/AFC/CCtrlUpDown.ahk)
0.82kb - 2014-07-04 | more libs/AFC| +| **2219** | [CDefaultBase.ahk](more libs/AFC/CDefaultBase.ahk)
1.58kb - 2014-07-04 | more libs/AFC| +| **2220** | [CImageList.ahk](more libs/AFC/CImageList.ahk)
1.11kb - 2014-07-04 | more libs/AFC| +| **2221** | [CMsgDispatch.ahk](more libs/AFC/CMsgDispatch.ahk)
1.45kb - 2014-07-04 | more libs/AFC| +| **2222** | [CParentWindow.ahk](more libs/AFC/CParentWindow.ahk)
1.79kb - 2014-07-04 | more libs/AFC| +| **2223** | [CPropImpl.ahk](more libs/AFC/CPropImpl.ahk)
0.80kb - 2014-07-04 | more libs/AFC| +| **2224** | [CScrollableWindow.ahk](more libs/AFC/CScrollableWindow.ahk)
4.48kb - 2014-07-04 | more libs/AFC| +| **2225** | [CWindow.ahk](more libs/AFC/CWindow.ahk)
9.53kb - 2014-07-04 | more libs/AFC| +| **2226** | [Events.ahk](more libs/AHK-Object-Oriented-GUIs/gui/Events.ahk)
0.78kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| +| **2227** | [GuiBase.ahk](more libs/AHK-Object-Oriented-GUIs/gui/GuiBase.ahk)
6.95kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| +| **2228** | [ImageList.ahk](more libs/AHK-Object-Oriented-GUIs/gui/ImageList.ahk)
0.49kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| +| **2229** | [IndirectReferenceHolder.ahk](more libs/AHK-Object-Oriented-GUIs/gui/IndirectReferenceHolder.ahk)
1.07kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| +| **2230** | [PositionType.ahk](more libs/AHK-Object-Oriented-GUIs/gui/PositionType.ahk)
1.06kb - 2018-06-06 | more libs/AHK-Object-Oriented-GUIs/gui| +| **2231** | [Brush.ahk](more libs/Canvas/Brush.ahk)
3.49kb - 2014-07-12 | more libs/Canvas| +| **2232** | [Canvas.ahk](more libs/Canvas/Canvas.ahk)
4.91kb - 2018-11-15 | more libs/Canvas| +| **2233** | [Font.ahk](more libs/Canvas/Font.ahk)
7.80kb - 2014-07-12 | more libs/Canvas| +| **2234** | [Pen.ahk](more libs/Canvas/Pen.ahk)
6.30kb - 2014-07-12 | more libs/Canvas| +| **2235** | [Surface.ahk](more libs/Canvas/Surface.ahk)
20.87kb - 2014-07-12 | more libs/Canvas| +| **2236** | [Viewport.ahk](more libs/Canvas/Viewport.ahk)
8.38kb - 2014-07-12 | more libs/Canvas| +| **2237** | [CActiveXControl.ahk](more libs/CGUI/CActiveXControl.ahk)
3.92kb - 2012-10-03 | more libs/CGUI| +| **2238** | [CButtonControl.ahk](more libs/CGUI/CButtonControl.ahk)
1.85kb - 2012-10-03 | more libs/CGUI| +| **2239** | [CCheckBoxControl.ahk](more libs/CGUI/CCheckBoxControl.ahk)
6.25kb - 2012-10-03 | more libs/CGUI| +| **2240** | [CChoiceControl.ahk](more libs/CGUI/CChoiceControl.ahk)
16.02kb - 2012-10-03 | more libs/CGUI| +| **2241** | [CCompoundControl.ahk](more libs/CGUI/CCompoundControl.ahk)
1.57kb - 2012-10-03 | more libs/CGUI| +| **2242** | [CControl.ahk](more libs/CGUI/CControl.ahk)
24.52kb - 2012-10-03 | more libs/CGUI| +| **2243** | [CEditControl.ahk](more libs/CGUI/CEditControl.ahk)
4.95kb - 2012-10-03 | more libs/CGUI| +| **2244** | [CEnumerator.ahk](more libs/CGUI/CEnumerator.ahk)
0.57kb - 2012-10-03 | more libs/CGUI| +| **2245** | [CFileDialog.ahk](more libs/CGUI/CFileDialog.ahk)
2.93kb - 2012-10-03 | more libs/CGUI| +| **2246** | [CFolderDialog.ahk](more libs/CGUI/CFolderDialog.ahk)
1.44kb - 2012-10-03 | more libs/CGUI| +| **2247** | [CGroupBoxControl.ahk](more libs/CGUI/CGroupBoxControl.ahk)
2.19kb - 2012-10-03 | more libs/CGUI| +| **2248** | [CGUI.ahk](more libs/CGUI/CGUI.ahk)
47.62kb - 2012-10-03 | more libs/CGUI| +| **2249** | [CHotkeyControl.ahk](more libs/CGUI/CHotkeyControl.ahk)
1.44kb - 2012-10-03 | more libs/CGUI| +| **2250** | [CLinkControl.ahk](more libs/CGUI/CLinkControl.ahk)
1.65kb - 2012-10-03 | more libs/CGUI| +| **2251** | [CListViewControl.ahk](more libs/CGUI/CListViewControl.ahk)
34.20kb - 2012-10-03 | more libs/CGUI| +| **2252** | [CMenu.ahk](more libs/CGUI/CMenu.ahk)
10.26kb - 2012-10-03 | more libs/CGUI| +| **2253** | [CPathPickerControl.ahk](more libs/CGUI/CPathPickerControl.ahk)
0.71kb - 2012-10-03 | more libs/CGUI| +| **2254** | [CPictureControl.ahk](more libs/CGUI/CPictureControl.ahk)
5.00kb - 2012-10-03 | more libs/CGUI| +| **2255** | [CProgressControl.ahk](more libs/CGUI/CProgressControl.ahk)
2.42kb - 2012-10-03 | more libs/CGUI| +| **2256** | [CSliderControl.ahk](more libs/CGUI/CSliderControl.ahk)
4.38kb - 2012-10-03 | more libs/CGUI| +| **2257** | [CStatusBarControl.ahk](more libs/CGUI/CStatusBarControl.ahk)
9.29kb - 2012-10-03 | more libs/CGUI| +| **2258** | [CTabControl.ahk](more libs/CGUI/CTabControl.ahk)
10.82kb - 2012-10-03 | more libs/CGUI| +| **2259** | [CTextControl.ahk](more libs/CGUI/CTextControl.ahk)
1.67kb - 2012-10-03 | more libs/CGUI| +| **2260** | [CTreeViewControl.ahk](more libs/CGUI/CTreeViewControl.ahk)
18.00kb - 2012-10-03 | more libs/CGUI| +| **2261** | [Delegate.ahk](more libs/CGUI/Delegate.ahk)
1.22kb - 2012-10-03 | more libs/CGUI| +| **2262** | [EventHandler.ahk](more libs/CGUI/EventHandler.ahk)
0.72kb - 2012-10-03 | more libs/CGUI| +| **2263** | [gdip.ahk](more libs/CGUI/gdip.ahk)
83.83kb - 2012-10-03 | more libs/CGUI| +| **2264** | [json.ahk](more libs/CGUI/json.ahk)
8.98kb - 2020-01-04 | more libs/CGUI| +| **2265** | [Parse.ahk](more libs/CGUI/Parse.ahk)
4.09kb - 2012-10-03 | more libs/CGUI| +| **2266** | [Regex.ahk](more libs/CGUI/Regex.ahk)
2.96kb - 2012-10-03 | more libs/CGUI| +| **2267** | [bcrypt_md2.ahk](more libs/CNG/win7/bcrypt_md2.ahk)
2.09kb - 2017-04-11 | more libs/CNG/win7| +| **2268** | [bcrypt_md2_file.ahk](more libs/CNG/win7/bcrypt_md2_file.ahk)
2.16kb - 2017-04-11 | more libs/CNG/win7| +| **2269** | [bcrypt_md2_hmac.ahk](more libs/CNG/win7/bcrypt_md2_hmac.ahk)
2.34kb - 2017-04-11 | more libs/CNG/win7| +| **2270** | [bcrypt_md4.ahk](more libs/CNG/win7/bcrypt_md4.ahk)
2.09kb - 2017-04-11 | more libs/CNG/win7| +| **2271** | [bcrypt_md4_file.ahk](more libs/CNG/win7/bcrypt_md4_file.ahk)
2.16kb - 2017-04-11 | more libs/CNG/win7| +| **2272** | [bcrypt_md4_hmac.ahk](more libs/CNG/win7/bcrypt_md4_hmac.ahk)
2.33kb - 2017-04-11 | more libs/CNG/win7| +| **2273** | [bcrypt_md5.ahk](more libs/CNG/win7/bcrypt_md5.ahk)
2.09kb - 2017-04-11 | more libs/CNG/win7| +| **2274** | [bcrypt_md5_file.ahk](more libs/CNG/win7/bcrypt_md5_file.ahk)
2.16kb - 2017-04-11 | more libs/CNG/win7| +| **2275** | [bcrypt_md5_hmac.ahk](more libs/CNG/win7/bcrypt_md5_hmac.ahk)
2.34kb - 2017-04-11 | more libs/CNG/win7| +| **2276** | [bcrypt_pbkdf2_md2.ahk](more libs/CNG/win7/bcrypt_pbkdf2_md2.ahk)
1.40kb - 2017-04-11 | more libs/CNG/win7| +| **2277** | [bcrypt_pbkdf2_md4.ahk](more libs/CNG/win7/bcrypt_pbkdf2_md4.ahk)
1.40kb - 2017-04-11 | more libs/CNG/win7| +| **2278** | [bcrypt_pbkdf2_md5.ahk](more libs/CNG/win7/bcrypt_pbkdf2_md5.ahk)
1.40kb - 2017-04-11 | more libs/CNG/win7| +| **2279** | [bcrypt_pbkdf2_sha1.ahk](more libs/CNG/win7/bcrypt_pbkdf2_sha1.ahk)
1.41kb - 2017-04-11 | more libs/CNG/win7| +| **2280** | [bcrypt_pbkdf2_sha256.ahk](more libs/CNG/win7/bcrypt_pbkdf2_sha256.ahk)
1.44kb - 2017-04-11 | more libs/CNG/win7| +| **2281** | [bcrypt_pbkdf2_sha384.ahk](more libs/CNG/win7/bcrypt_pbkdf2_sha384.ahk)
1.47kb - 2017-04-11 | more libs/CNG/win7| +| **2282** | [bcrypt_pbkdf2_sha512.ahk](more libs/CNG/win7/bcrypt_pbkdf2_sha512.ahk)
1.50kb - 2017-04-11 | more libs/CNG/win7| +| **2283** | [bcrypt_sha1.ahk](more libs/CNG/win7/bcrypt_sha1.ahk)
2.11kb - 2017-04-11 | more libs/CNG/win7| +| **2284** | [bcrypt_sha1_file.ahk](more libs/CNG/win7/bcrypt_sha1_file.ahk)
2.18kb - 2017-04-11 | more libs/CNG/win7| +| **2285** | [bcrypt_sha1_hmac.ahk](more libs/CNG/win7/bcrypt_sha1_hmac.ahk)
2.35kb - 2017-04-11 | more libs/CNG/win7| +| **2286** | [bcrypt_sha256.ahk](more libs/CNG/win7/bcrypt_sha256.ahk)
2.14kb - 2017-04-11 | more libs/CNG/win7| +| **2287** | [bcrypt_sha256_file.ahk](more libs/CNG/win7/bcrypt_sha256_file.ahk)
2.22kb - 2017-04-11 | more libs/CNG/win7| +| **2288** | [bcrypt_sha256_hmac.ahk](more libs/CNG/win7/bcrypt_sha256_hmac.ahk)
2.38kb - 2017-04-11 | more libs/CNG/win7| +| **2289** | [bcrypt_sha384.ahk](more libs/CNG/win7/bcrypt_sha384.ahk)
2.17kb - 2017-04-11 | more libs/CNG/win7| +| **2290** | [bcrypt_sha384_file.ahk](more libs/CNG/win7/bcrypt_sha384_file.ahk)
2.25kb - 2017-04-11 | more libs/CNG/win7| +| **2291** | [bcrypt_sha384_hmac.ahk](more libs/CNG/win7/bcrypt_sha384_hmac.ahk)
2.41kb - 2017-04-11 | more libs/CNG/win7| +| **2292** | [bcrypt_sha512.ahk](more libs/CNG/win7/bcrypt_sha512.ahk)
2.04kb - 2019-08-21 | more libs/CNG/win7| +| **2293** | [bcrypt_sha512_file.ahk](more libs/CNG/win7/bcrypt_sha512_file.ahk)
2.13kb - 2019-08-21 | more libs/CNG/win7| +| **2294** | [bcrypt_sha512_hmac.ahk](more libs/CNG/win7/bcrypt_sha512_hmac.ahk)
2.44kb - 2017-04-11 | more libs/CNG/win7| +| **2295** | [class_bcrypt.ahk](more libs/CNG/win7/class_bcrypt.ahk)
14.63kb - 2018-08-25 | more libs/CNG/win7| +| **2296** | [bcrypt_md2.ahk](more libs/CNG/win10/bcrypt_md2.ahk)
1.34kb - 2017-04-11 | more libs/CNG/win10| +| **2297** | [bcrypt_md2_file.ahk](more libs/CNG/win10/bcrypt_md2_file.ahk)
1.42kb - 2017-04-11 | more libs/CNG/win10| +| **2298** | [bcrypt_md2_hmac.ahk](more libs/CNG/win10/bcrypt_md2_hmac.ahk)
1.59kb - 2017-04-11 | more libs/CNG/win10| +| **2299** | [bcrypt_md4.ahk](more libs/CNG/win10/bcrypt_md4.ahk)
1.34kb - 2017-04-11 | more libs/CNG/win10| +| **2300** | [bcrypt_md4_file.ahk](more libs/CNG/win10/bcrypt_md4_file.ahk)
1.42kb - 2017-04-11 | more libs/CNG/win10| +| **2301** | [bcrypt_md4_hmac.ahk](more libs/CNG/win10/bcrypt_md4_hmac.ahk)
1.59kb - 2017-04-11 | more libs/CNG/win10| +| **2302** | [bcrypt_md5.ahk](more libs/CNG/win10/bcrypt_md5.ahk)
1.34kb - 2017-04-11 | more libs/CNG/win10| +| **2303** | [bcrypt_md5_file.ahk](more libs/CNG/win10/bcrypt_md5_file.ahk)
1.42kb - 2017-04-11 | more libs/CNG/win10| +| **2304** | [bcrypt_md5_hmac.ahk](more libs/CNG/win10/bcrypt_md5_hmac.ahk)
1.59kb - 2017-04-11 | more libs/CNG/win10| +| **2305** | [bcrypt_sha1.ahk](more libs/CNG/win10/bcrypt_sha1.ahk)
1.36kb - 2017-04-11 | more libs/CNG/win10| +| **2306** | [bcrypt_sha1_file.ahk](more libs/CNG/win10/bcrypt_sha1_file.ahk)
1.43kb - 2017-04-11 | more libs/CNG/win10| +| **2307** | [bcrypt_sha1_hmac.ahk](more libs/CNG/win10/bcrypt_sha1_hmac.ahk)
1.61kb - 2017-04-11 | more libs/CNG/win10| +| **2308** | [bcrypt_sha256.ahk](more libs/CNG/win10/bcrypt_sha256.ahk)
1.39kb - 2017-04-11 | more libs/CNG/win10| +| **2309** | [bcrypt_sha256_file.ahk](more libs/CNG/win10/bcrypt_sha256_file.ahk)
1.47kb - 2017-04-11 | more libs/CNG/win10| +| **2310** | [bcrypt_sha256_hmac.ahk](more libs/CNG/win10/bcrypt_sha256_hmac.ahk)
1.64kb - 2017-04-11 | more libs/CNG/win10| +| **2311** | [bcrypt_sha384.ahk](more libs/CNG/win10/bcrypt_sha384.ahk)
1.42kb - 2017-04-11 | more libs/CNG/win10| +| **2312** | [bcrypt_sha384_file.ahk](more libs/CNG/win10/bcrypt_sha384_file.ahk)
1.50kb - 2017-04-11 | more libs/CNG/win10| +| **2313** | [bcrypt_sha384_hmac.ahk](more libs/CNG/win10/bcrypt_sha384_hmac.ahk)
1.67kb - 2017-04-11 | more libs/CNG/win10| +| **2314** | [bcrypt_sha512.ahk](more libs/CNG/win10/bcrypt_sha512.ahk)
1.46kb - 2017-04-11 | more libs/CNG/win10| +| **2315** | [bcrypt_sha512_file.ahk](more libs/CNG/win10/bcrypt_sha512_file.ahk)
1.53kb - 2017-04-11 | more libs/CNG/win10| +| **2316** | [bcrypt_sha512_hmac.ahk](more libs/CNG/win10/bcrypt_sha512_hmac.ahk)
1.70kb - 2017-04-11 | more libs/CNG/win10| +| **2317** | [class_bcrypt.ahk](more libs/CNG/win10/class_bcrypt.ahk)
11.36kb - 2017-04-11 | more libs/CNG/win10| +| **2318** | [header.ahk](more libs/core_audio_interfaces/header.ahk)
2.64kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2319** | [IAudioEndpointVolume.ahk](more libs/core_audio_interfaces/IAudioEndpointVolume.ahk)
8.33kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2320** | [IAudioSessionControl.ahk](more libs/core_audio_interfaces/IAudioSessionControl.ahk)
2.77kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2321** | [IAudioSessionControl2.ahk](more libs/core_audio_interfaces/IAudioSessionControl2.ahk)
2.34kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2322** | [IAudioSessionEnumerator.ahk](more libs/core_audio_interfaces/IAudioSessionEnumerator.ahk)
1.92kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2323** | [IAudioSessionManager2.ahk](more libs/core_audio_interfaces/IAudioSessionManager2.ahk)
1.78kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2324** | [IMMDevice.ahk](more libs/core_audio_interfaces/IMMDevice.ahk)
4.97kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2325** | [IMMDeviceCollection.ahk](more libs/core_audio_interfaces/IMMDeviceCollection.ahk)
2.17kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2326** | [IMMDeviceEnumerator.ahk](more libs/core_audio_interfaces/IMMDeviceEnumerator.ahk)
5.71kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2327** | [IPropertyStore.ahk](more libs/core_audio_interfaces/IPropertyStore.ahk)
5.49kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2328** | [ISimpleAudioVolume.ahk](more libs/core_audio_interfaces/ISimpleAudioVolume.ahk)
2.52kb - 2018-08-16 | more libs/core_audio_interfaces| +| **2329** | [BarsBox.ahk](more libs/CustomBoxes/BarsBox.ahk)
2.27kb - 2018-12-18 | more libs/CustomBoxes| +| **2330** | [BetterBox.ahk](more libs/CustomBoxes/BetterBox.ahk)
1.66kb - 2018-12-18 | more libs/CustomBoxes| +| **2331** | [ButtonBox.ahk](more libs/CustomBoxes/ButtonBox.ahk)
1.42kb - 2018-12-18 | more libs/CustomBoxes| +| **2332** | [EditBox.ahk](more libs/CustomBoxes/EditBox.ahk)
1.47kb - 2018-12-18 | more libs/CustomBoxes| +| **2333** | [ListBox.ahk](more libs/CustomBoxes/ListBox.ahk)
1.45kb - 2018-12-18 | more libs/CustomBoxes| +| **2334** | [LoginBox.ahk](more libs/CustomBoxes/LoginBox.ahk)
1.30kb - 2018-12-18 | more libs/CustomBoxes| +| **2335** | [LV_Box.ahk](more libs/CustomBoxes/LV_Box.ahk)
2.73kb - 2018-12-18 | more libs/CustomBoxes| +| **2336** | [MonoBox.ahk](more libs/CustomBoxes/MonoBox.ahk)
1.36kb - 2018-12-18 | more libs/CustomBoxes| +| **2337** | [MultiBox.ahk](more libs/CustomBoxes/MultiBox.ahk)
1.38kb - 2018-12-18 | more libs/CustomBoxes| +| **2338** | [NumberBox.ahk](more libs/CustomBoxes/NumberBox.ahk)
2.26kb - 2018-12-18 | more libs/CustomBoxes| +| **2339** | [PassBox.ahk](more libs/CustomBoxes/PassBox.ahk)
1.19kb - 2018-12-18 | more libs/CustomBoxes| +| **2340** | [PictureBox.ahk](more libs/CustomBoxes/PictureBox.ahk)
1.00kb - 2018-12-18 | more libs/CustomBoxes| +| **2341** | [RadioBox.ahk](more libs/CustomBoxes/RadioBox.ahk)
1.71kb - 2018-12-18 | more libs/CustomBoxes| +| **2342** | [RadioBoxEx.ahk](more libs/CustomBoxes/RadioBoxEx.ahk)
1.70kb - 2018-12-18 | more libs/CustomBoxes| +| **2343** | [TreeBox.ahk](more libs/CustomBoxes/TreeBox.ahk)
2.41kb - 2018-12-18 | more libs/CustomBoxes| +| **2344** | [Dictation.ahk](more libs/Dictation-Interface/Dictation.ahk)
8.71kb - 2019-01-27 | more libs/Dictation-Interface| +| **2345** | [d3D.hooks.ahk](more libs/DirectX/AHK Injector/d3D.hooks.ahk)
12.65kb - 2015-09-24 | more libs/DirectX/AHK Injector| +| **2346** | [dinput.hooks.ahk](more libs/DirectX/AHK Injector/dinput.hooks.ahk)
0.14kb - 2015-06-26 | more libs/DirectX/AHK Injector| +| **2347** | [dshow.hooks.ahk](more libs/DirectX/AHK Injector/dshow.hooks.ahk)
0.54kb - 2015-06-26 | more libs/DirectX/AHK Injector| +| **2348** | [dsound.hooks.ahk](more libs/DirectX/AHK Injector/dsound.hooks.ahk)
0.08kb - 2015-08-28 | more libs/DirectX/AHK Injector| +| **2349** | [exlib.ahk](more libs/DirectX/AHK Injector/exlib.ahk)
0.51kb - 2015-09-14 | more libs/DirectX/AHK Injector| +| **2350** | [GDI.hooks.ahk](more libs/DirectX/AHK Injector/GDI.hooks.ahk)
0.95kb - 2015-08-22 | more libs/DirectX/AHK Injector| +| **2351** | [gl.hooks.ahk](more libs/DirectX/AHK Injector/gl.hooks.ahk)
9.67kb - 2015-09-16 | more libs/DirectX/AHK Injector| +| **2352** | [Help.ahk](more libs/DirectX/AHK Injector/Help.ahk)
19.31kb - 2015-09-22 | more libs/DirectX/AHK Injector| +| **2353** | [Injector.ahk](more libs/DirectX/AHK Injector/Injector.ahk)
9.61kb - 2015-09-23 | more libs/DirectX/AHK Injector| +| **2354** | [remote_lib.ahk](more libs/DirectX/AHK Injector/remote_lib.ahk)
0.61kb - 2015-09-17 | more libs/DirectX/AHK Injector| +| **2355** | [d3d.h.ahk](more libs/DirectX/headers/d3d.h.ahk)
32.50kb - 2014-09-14 | more libs/DirectX/headers| +| **2356** | [d3d11.h.ahk](more libs/DirectX/headers/d3d11.h.ahk)
67.78kb - 2015-02-24 | more libs/DirectX/headers| +| **2357** | [d3D9.h.ahk](more libs/DirectX/headers/d3D9.h.ahk)
53.86kb - 2014-09-14 | more libs/DirectX/headers| +| **2358** | [d3D9types.h.ahk](more libs/DirectX/headers/d3D9types.h.ahk)
11.45kb - 2014-09-14 | more libs/DirectX/headers| +| **2359** | [d3dtypes.h.ahk](more libs/DirectX/headers/d3dtypes.h.ahk)
9.49kb - 2015-03-12 | more libs/DirectX/headers| +| **2360** | [d3DX9.ahk](more libs/DirectX/headers/d3DX9.ahk)
2.47kb - 2014-11-10 | more libs/DirectX/headers| +| **2361** | [d3DX9core.h.ahk](more libs/DirectX/headers/d3DX9core.h.ahk)
5.02kb - 2014-11-09 | more libs/DirectX/headers| +| **2362** | [ddraw.h.ahk](more libs/DirectX/headers/ddraw.h.ahk)
75.27kb - 2014-09-14 | more libs/DirectX/headers| +| **2363** | [dinput.h.ahk](more libs/DirectX/headers/dinput.h.ahk)
67.13kb - 2014-09-14 | more libs/DirectX/headers| +| **2364** | [dshow.h.ahk](more libs/DirectX/headers/dshow.h.ahk)
16.29kb - 2015-01-26 | more libs/DirectX/headers| +| **2365** | [dsound.h.ahk](more libs/DirectX/headers/dsound.h.ahk)
34.92kb - 2014-09-14 | more libs/DirectX/headers| +| **2366** | [gl.h.ahk](more libs/DirectX/headers/gl.h.ahk)
44.13kb - 2015-07-03 | more libs/DirectX/headers| +| **2367** | [HeaderParser.ahk](more libs/DirectX/headers/HeaderParser.ahk)
7.69kb - 2015-07-03 | more libs/DirectX/headers| +| **2368** | [parser Directx1-10.ahk](more libs/DirectX/headers/parser%20Directx1-10.ahk)
5.24kb - 2015-07-03 | more libs/DirectX/headers| +| **2369** | [parser Directx11, DirectShow.ahk](more libs/DirectX/headers/parser%20Directx11,%20DirectShow.ahk)
2.74kb - 2015-02-09 | more libs/DirectX/headers| +| **2370** | [_d3D.h.ahk](more libs/DirectX/headers/_d3D.h.ahk)
2.71kb - 2015-08-10 | more libs/DirectX/headers| +| **2371** | [_d3D11.ahk](more libs/DirectX/headers/_d3D11.ahk)
1.28kb - 2015-02-26 | more libs/DirectX/headers| +| **2372** | [_d3D9.h.ahk](more libs/DirectX/headers/_d3D9.h.ahk)
0.83kb - 2015-02-07 | more libs/DirectX/headers| +| **2373** | [_ddraw.h.ahk](more libs/DirectX/headers/_ddraw.h.ahk)
5.79kb - 2015-06-27 | more libs/DirectX/headers| +| **2374** | [_dinput.h.ahk](more libs/DirectX/headers/_dinput.h.ahk)
0.98kb - 2015-06-23 | more libs/DirectX/headers| +| **2375** | [_dshow.ahk](more libs/DirectX/headers/_dshow.ahk)
2.72kb - 2015-01-28 | more libs/DirectX/headers| +| **2376** | [_dsound.h.ahk](more libs/DirectX/headers/_dsound.h.ahk)
0.97kb - 2014-10-15 | more libs/DirectX/headers| +| **2377** | [DDSFile.ahk](more libs/DirectX/Lib/DDSFile.ahk)
8.38kb - 2015-09-03 | more libs/DirectX/Lib| +| **2378** | [DInputEmu.ahk](more libs/DirectX/Lib/DInputEmu.ahk)
3.12kb - 2015-09-03 | more libs/DirectX/Lib| +| **2379** | [FileHooks.ahk](more libs/DirectX/Lib/FileHooks.ahk)
10.81kb - 2015-08-29 | more libs/DirectX/Lib| +| **2380** | [hRes.ahk](more libs/DirectX/Lib/hRes.ahk)
22.31kb - 2015-09-24 | more libs/DirectX/Lib| +| **2381** | [Lib.ahk](more libs/DirectX/Lib/Lib.ahk)
9.13kb - 2015-09-23 | more libs/DirectX/Lib| +| **2382** | [ref.ahk](more libs/DirectX/Lib/ref.ahk)
7.74kb - 2015-08-24 | more libs/DirectX/Lib| +| **2383** | [SurfaceHooks.ahk](more libs/DirectX/Lib/SurfaceHooks.ahk)
4.15kb - 2015-09-07 | more libs/DirectX/Lib| +| **2384** | [TexSwapLib.ahk](more libs/DirectX/Lib/TexSwap/TexSwapLib.ahk)
14.69kb - 2015-09-23 | more libs/DirectX/Lib/TexSwap| +| **2385** | [TexSwapLibGL.ahk](more libs/DirectX/Lib/TexSwap/TexSwapLibGL.ahk)
14.55kb - 2015-09-03 | more libs/DirectX/Lib/TexSwap| +| **2386** | [TextureHooks.ahk](more libs/DirectX/Lib/TexSwap/TextureHooks.ahk)
6.49kb - 2015-08-28 | more libs/DirectX/Lib/TexSwap| +| **2387** | [DoDragDrop.ahk](more libs/DoDragAndDrop/DoDragDrop.ahk)
3.69kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2388** | [IDataObject.ahk](more libs/DoDragAndDrop/IDataObject.ahk)
12.06kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2389** | [IDragSourceHelper.ahk](more libs/DoDragAndDrop/IDragSourceHelper.ahk)
3.71kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2390** | [IDropSource.ahk](more libs/DoDragAndDrop/IDropSource.ahk)
4.22kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2391** | [IDropSource_Sample.ahk](more libs/DoDragAndDrop/IDropSource_Sample.ahk)
0.66kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2392** | [IDropTarget.ahk](more libs/DoDragAndDrop/IDropTarget.ahk)
15.52kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2393** | [IDropTarget_Sample.ahk](more libs/DoDragAndDrop/IDropTarget_Sample.ahk)
6.06kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2394** | [IEnumFORMATETC.ahk](more libs/DoDragAndDrop/IEnumFORMATETC.ahk)
1.66kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2395** | [SHDataObject.ahk](more libs/DoDragAndDrop/SHDataObject.ahk)
4.26kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2396** | [SHDoDragDrop.ahk](more libs/DoDragAndDrop/SHDoDragDrop.ahk)
3.70kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2397** | [SHDoDragDrop_Sample.ahk](more libs/DoDragAndDrop/SHDoDragDrop_Sample.ahk)
4.66kb - 2017-03-19 | more libs/DoDragAndDrop| +| **2398** | [DX9_overlay.ahk](more libs/DX9-Overlay-API/include/ahk/DX9_overlay.ahk)
8.61kb - 2018-05-02 | more libs/DX9-Overlay-API/include/ahk| +| **2399** | [arr.ahk](more libs/exLibs/arr.ahk)
2.38kb - 2019-12-31 | more libs/exLibs| +| **2400** | [guiex.ahk](more libs/exLibs/guiex.ahk)
10.33kb - 2019-12-31 | more libs/exLibs| +| **2401** | [hkex.ahk](more libs/exLibs/hkex.ahk)
0.33kb - 2019-12-31 | more libs/exLibs| +| **2402** | [http.ahk](more libs/exLibs/http.ahk)
0.17kb - 2019-12-31 | more libs/exLibs| +| **2403** | [iniex.ahk](more libs/exLibs/iniex.ahk)
1.20kb - 2019-12-31 | more libs/exLibs| +| **2404** | [mkex.ahk](more libs/exLibs/mkex.ahk)
2.66kb - 2019-12-31 | more libs/exLibs| +| **2405** | [strex.ahk](more libs/exLibs/strex.ahk)
0.82kb - 2019-12-31 | more libs/exLibs| +| **2406** | [winex.ahk](more libs/exLibs/winex.ahk)
0.60kb - 2019-12-31 | more libs/exLibs| +| **2407** | [AddTooltip.ahk](more libs/Edit/_Functions/AddTooltip.ahk)
8.66kb - 2015-11-23 | more libs/Edit/_Functions| +| **2408** | [Dlg2.ahk](more libs/Edit/_Functions/Dlg2.ahk)
105.30kb - 2016-05-09 | more libs/Edit/_Functions| +| **2409** | [Edit.ahk](more libs/Edit/_Functions/Edit.ahk)
116.65kb - 2016-05-09 | more libs/Edit/_Functions| +| **2410** | [Edit_AutoSetTabStops.ahk](more libs/Edit/_Functions/Edit_AutoSetTabStops.ahk)
5.94kb - 2016-05-07 | more libs/Edit/_Functions| +| **2411** | [Edit_BlockMove.ahk](more libs/Edit/_Functions/Edit_BlockMove.ahk)
6.34kb - 2016-01-05 | more libs/Edit/_Functions| +| **2412** | [Edit_CutLine.ahk](more libs/Edit/_Functions/Edit_CutLine.ahk)
0.84kb - 2015-09-23 | more libs/Edit/_Functions| +| **2413** | [Edit_DeleteLine.ahk](more libs/Edit/_Functions/Edit_DeleteLine.ahk)
0.80kb - 2015-09-23 | more libs/Edit/_Functions| +| **2414** | [Edit_Duplicate.ahk](more libs/Edit/_Functions/Edit_Duplicate.ahk)
4.57kb - 2016-01-05 | more libs/Edit/_Functions| +| **2415** | [Edit_SelectLine.ahk](more libs/Edit/_Functions/Edit_SelectLine.ahk)
1.44kb - 2015-09-23 | more libs/Edit/_Functions| +| **2416** | [Edit_Sort.ahk](more libs/Edit/_Functions/Edit_Sort.ahk)
3.44kb - 2016-01-05 | more libs/Edit/_Functions| +| **2417** | [Edit_SpellCheckGUI.ahk](more libs/Edit/_Functions/Edit_SpellCheckGUI.ahk)
27.71kb - 2016-05-09 | more libs/Edit/_Functions| +| **2418** | [Edit_TTSGUI.ahk](more libs/Edit/_Functions/Edit_TTSGUI.ahk)
33.03kb - 2016-05-08 | more libs/Edit/_Functions| +| **2419** | [Fnt.ahk](more libs/Edit/_Functions/Fnt.ahk)
139.23kb - 2016-05-09 | more libs/Edit/_Functions| +| **2420** | [Fnt_RandomTTFont.ahk](more libs/Edit/_Functions/Fnt_RandomTTFont.ahk)
3.45kb - 2016-03-09 | more libs/Edit/_Functions| +| **2421** | [MoveChildWindow.ahk](more libs/Edit/_Functions/MoveChildWindow.ahk)
13.77kb - 2015-10-29 | more libs/Edit/_Functions| +| **2422** | [SortOptionsGUI.ahk](more libs/Edit/_Functions/SortOptionsGUI.ahk)
20.68kb - 2016-05-08 | more libs/Edit/_Functions| +| **2423** | [Spell.ahk](more libs/Edit/_Functions/Spell.ahk)
27.03kb - 2016-05-09 | more libs/Edit/_Functions| +| **2424** | [WinGetPosEx.ahk](more libs/Edit/_Functions/WinGetPosEx.ahk)
5.97kb - 2016-02-12 | more libs/Edit/_Functions| +| **2425** | [ImportTypeLib.ahk](more libs/ImportTypeLib/ImportTypeLib.ahk)
2.08kb - 2018-12-01 | more libs/ImportTypeLib| +| **2426** | [ITL.ahk](more libs/ImportTypeLib/ITL.ahk)
0.40kb - 2012-04-04 | more libs/ImportTypeLib| +| **2427** | [ITL_AbstractClassConstructor.ahk](more libs/ImportTypeLib/ITL_AbstractClassConstructor.ahk)
0.39kb - 2012-04-04 | more libs/ImportTypeLib| +| **2428** | [ITL_CoClassConstructor.ahk](more libs/ImportTypeLib/ITL_CoClassConstructor.ahk)
1.69kb - 2012-04-04 | more libs/ImportTypeLib| +| **2429** | [ITL_CoClassWrapper.ahk](more libs/ImportTypeLib/ITL_CoClassWrapper.ahk)
3.37kb - 2012-04-04 | more libs/ImportTypeLib| +| **2430** | [ITL_ConstantMemberWrapperBaseClass.ahk](more libs/ImportTypeLib/ITL_ConstantMemberWrapperBaseClass.ahk)
7.59kb - 2012-04-04 | more libs/ImportTypeLib| +| **2431** | [ITL_EnumWrapper.ahk](more libs/ImportTypeLib/ITL_EnumWrapper.ahk)
0.25kb - 2012-04-04 | more libs/ImportTypeLib| +| **2432** | [ITL_InterfaceConstructor.ahk](more libs/ImportTypeLib/ITL_InterfaceConstructor.ahk)
0.68kb - 2012-04-04 | more libs/ImportTypeLib| +| **2433** | [ITL_InterfaceWrapper.ahk](more libs/ImportTypeLib/ITL_InterfaceWrapper.ahk)
15.59kb - 2012-04-04 | more libs/ImportTypeLib| +| **2434** | [ITL_ModuleWrapper.ahk](more libs/ImportTypeLib/ITL_ModuleWrapper.ahk)
1.38kb - 2012-04-04 | more libs/ImportTypeLib| +| **2435** | [ITL_StructureArray.ahk](more libs/ImportTypeLib/ITL_StructureArray.ahk)
2.82kb - 2012-04-04 | more libs/ImportTypeLib| +| **2436** | [ITL_StructureConstructor.ahk](more libs/ImportTypeLib/ITL_StructureConstructor.ahk)
0.96kb - 2012-04-04 | more libs/ImportTypeLib| +| **2437** | [ITL_StructureWrapper.ahk](more libs/ImportTypeLib/ITL_StructureWrapper.ahk)
8.22kb - 2012-04-04 | more libs/ImportTypeLib| +| **2438** | [ITL_TypeLibWrapper.ahk](more libs/ImportTypeLib/ITL_TypeLibWrapper.ahk)
8.46kb - 2012-04-04 | more libs/ImportTypeLib| +| **2439** | [ITL_WrapperBaseClass.ahk](more libs/ImportTypeLib/ITL_WrapperBaseClass.ahk)
1.41kb - 2012-04-04 | more libs/ImportTypeLib| +| **2440** | [Main.ahk](more libs/ImportTypeLib/Main.ahk)
2.02kb - 2012-04-04 | more libs/ImportTypeLib| +| **2441** | [Misc.ahk](more libs/ImportTypeLib/Misc.ahk)
4.31kb - 2012-04-04 | more libs/ImportTypeLib| +| **2442** | [Properties.ahk](more libs/ImportTypeLib/Properties.ahk)
1.03kb - 2012-04-04 | more libs/ImportTypeLib| +| **2443** | [ITL_FAILED.ahk](more libs/ImportTypeLib/Lib/ITL_FAILED.ahk)
0.04kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2444** | [ITL_FormatError.ahk](more libs/ImportTypeLib/Lib/ITL_FormatError.ahk)
0.38kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2445** | [ITL_FormatException.ahk](more libs/ImportTypeLib/Lib/ITL_FormatException.ahk)
0.42kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2446** | [ITL_GUID.ahk](more libs/ImportTypeLib/Lib/ITL_GUID.ahk)
0.53kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2447** | [ITL_HasEnumFlag.ahk](more libs/ImportTypeLib/Lib/ITL_HasEnumFlag.ahk)
0.06kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2448** | [ITL_IsComObject.ahk](more libs/ImportTypeLib/Lib/ITL_IsComObject.ahk)
0.06kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2449** | [ITL_Max.ahk](more libs/ImportTypeLib/Lib/ITL_Max.ahk)
0.19kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2450** | [ITL_Mem.ahk](more libs/ImportTypeLib/Lib/ITL_Mem.ahk)
0.52kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2451** | [ITL_Min.ahk](more libs/ImportTypeLib/Lib/ITL_Min.ahk)
0.19kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2452** | [ITL_ParamToVARIANT.ahk](more libs/ImportTypeLib/Lib/ITL_ParamToVARIANT.ahk)
3.63kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2453** | [ITL_SUCCEEDED.ahk](more libs/ImportTypeLib/Lib/ITL_SUCCEEDED.ahk)
0.05kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2454** | [ITL_VARIANT.ahk](more libs/ImportTypeLib/Lib/ITL_VARIANT.ahk)
2.68kb - 2012-04-04 | more libs/ImportTypeLib/Lib| +| **2455** | [Binary.ahk](more libs/MCode-Ex/src/Binary.ahk)
1.91kb - 2018-07-29 | more libs/MCode-Ex/src| +| **2456** | [CompileResult.ahk](more libs/MCode-Ex/src/CompileResult.ahk)
3.40kb - 2018-07-29 | more libs/MCode-Ex/src| +| **2457** | [MCodeCompileChain.ahk](more libs/MCode-Ex/src/MCodeCompileChain.ahk)
1.54kb - 2018-07-29 | more libs/MCode-Ex/src| +| **2458** | [gcc.ahk](more libs/MCode-Ex/src/Compiler/gcc.ahk)
0.31kb - 2018-07-29 | more libs/MCode-Ex/src/Compiler| +| **2459** | [VSCompiler.ahk](more libs/MCode-Ex/src/Compiler/VSCompiler.ahk)
6.84kb - 2018-07-29 | more libs/MCode-Ex/src/Compiler| +| **2460** | [MinHook.ahk](more libs/MinHook/Lib/MinHook.ahk)
7.06kb - 2019-09-03 | more libs/MinHook/Lib| +| **2461** | [MinHook_Memory.ahk](more libs/MinHook/Lib/MinHook_Memory.ahk)
8.04kb - 2019-09-03 | more libs/MinHook/Lib| +| **2462** | [sizeof.ahk](more libs/MinHook/Lib/sizeof.ahk)
13.00kb - 2018-08-21 | more libs/MinHook/Lib| +| **2463** | [MfArgumentException.ahk](more libs/Mini_Framwork/Framework/src/System//MfArgumentException.ahk)
6.95kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2464** | [MfArgumentNullException.ahk](more libs/Mini_Framwork/Framework/src/System//MfArgumentNullException.ahk)
4.81kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2465** | [MfArgumentOutOfRangeException.ahk](more libs/Mini_Framwork/Framework/src/System//MfArgumentOutOfRangeException.ahk)
7.63kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2466** | [MfArithmeticException.ahk](more libs/Mini_Framwork/Framework/src/System//MfArithmeticException.ahk)
3.03kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2467** | [MfAttribute.ahk](more libs/Mini_Framwork/Framework/src/System//MfAttribute.ahk)
3.31kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2468** | [MfBidiCategory.ahk](more libs/Mini_Framwork/Framework/src/System//MfBidiCategory.ahk)
4.46kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2469** | [MfBigInt.ahk](more libs/Mini_Framwork/Framework/src/System//MfBigInt.ahk)
58.44kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2470** | [MfBigMathInt.ahk](more libs/Mini_Framwork/Framework/src/System//MfBigMathInt.ahk)
69.18kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2471** | [MfBinaryConverter.ahk](more libs/Mini_Framwork/Framework/src/System//MfBinaryConverter.ahk)
70.18kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2472** | [MfBinaryList.ahk](more libs/Mini_Framwork/Framework/src/System//MfBinaryList.ahk)
20.85kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2473** | [MfBool.ahk](more libs/Mini_Framwork/Framework/src/System//MfBool.ahk)
34.13kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2474** | [MfByte.ahk](more libs/Mini_Framwork/Framework/src/System//MfByte.ahk)
42.31kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2475** | [MfByteConverter.ahk](more libs/Mini_Framwork/Framework/src/System//MfByteConverter.ahk)
66.60kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2476** | [MfByteList.ahk](more libs/Mini_Framwork/Framework/src/System//MfByteList.ahk)
20.09kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2477** | [MfCast.ahk](more libs/Mini_Framwork/Framework/src/System//MfCast.ahk)
11.69kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2478** | [MfChar.ahk](more libs/Mini_Framwork/Framework/src/System//MfChar.ahk)
82.20kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2479** | [MfCharList.ahk](more libs/Mini_Framwork/Framework/src/System//MfCharList.ahk)
56.16kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2480** | [MfCharUnicodeInfo.ahk](more libs/Mini_Framwork/Framework/src/System//MfCharUnicodeInfo.ahk)
23.60kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2481** | [MfCollection.ahk](more libs/Mini_Framwork/Framework/src/System//MfCollection.ahk)
1.07kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2482** | [MfCollectionBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfCollectionBase.ahk)
24.86kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2483** | [MfConvert.ahk](more libs/Mini_Framwork/Framework/src/System//MfConvert.ahk)
31.42kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2484** | [MfDateTime.ahk](more libs/Mini_Framwork/Framework/src/System//MfDateTime.ahk)
4.81kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2485** | [MfDictionary.ahk](more libs/Mini_Framwork/Framework/src/System//MfDictionary.ahk)
2.11kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2486** | [MfDictionarybase.ahk](more libs/Mini_Framwork/Framework/src/System//MfDictionarybase.ahk)
22.73kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2487** | [MfDictionaryEntry.ahk](more libs/Mini_Framwork/Framework/src/System//MfDictionaryEntry.ahk)
3.13kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2488** | [MfDigitShapes.ahk](more libs/Mini_Framwork/Framework/src/System//MfDigitShapes.ahk)
6.29kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2489** | [MfDivideByZeroException.ahk](more libs/Mini_Framwork/Framework/src/System//MfDivideByZeroException.ahk)
3.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2490** | [MfEnum.ahk](more libs/Mini_Framwork/Framework/src/System//MfEnum.ahk)
74.01kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2491** | [MfEnumerableBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfEnumerableBase.ahk)
3.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2492** | [MfEnvironment.ahk](more libs/Mini_Framwork/Framework/src/System//MfEnvironment.ahk)
35.08kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2493** | [MfEqualityComparerBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfEqualityComparerBase.ahk)
3.69kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2494** | [MfEqualsOptions.ahk](more libs/Mini_Framwork/Framework/src/System//MfEqualsOptions.ahk)
4.97kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2495** | [MfException.ahk](more libs/Mini_Framwork/Framework/src/System//MfException.ahk)
25.29kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2496** | [MfFlagsAttribute.ahk](more libs/Mini_Framwork/Framework/src/System//MfFlagsAttribute.ahk)
5.04kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2497** | [MfFloat.ahk](more libs/Mini_Framwork/Framework/src/System//MfFloat.ahk)
63.20kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2498** | [MfFormatException.ahk](more libs/Mini_Framwork/Framework/src/System//MfFormatException.ahk)
2.97kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2499** | [MfFormatProvider.ahk](more libs/Mini_Framwork/Framework/src/System//MfFormatProvider.ahk)
2.28kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2500** | [MfFrameWorkOptions.ahk](more libs/Mini_Framwork/Framework/src/System//MfFrameWorkOptions.ahk)
4.62kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2501** | [MfGenericList.ahk](more libs/Mini_Framwork/Framework/src/System//MfGenericList.ahk)
12.68kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2502** | [MfHashTable.ahk](more libs/Mini_Framwork/Framework/src/System//MfHashTable.ahk)
14.60kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2503** | [MfIndexOutOfRangeException.ahk](more libs/Mini_Framwork/Framework/src/System//MfIndexOutOfRangeException.ahk)
3.07kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2504** | [MfInfo.ahk](more libs/Mini_Framwork/Framework/src/System//MfInfo.ahk)
3.65kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2505** | [MfInt16.ahk](more libs/Mini_Framwork/Framework/src/System//MfInt16.ahk)
47.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2506** | [MfInt64.ahk](more libs/Mini_Framwork/Framework/src/System//MfInt64.ahk)
43.19kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2507** | [MfInteger.ahk](more libs/Mini_Framwork/Framework/src/System//MfInteger.ahk)
44.00kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2508** | [MfInvalidCastException.ahk](more libs/Mini_Framwork/Framework/src/System//MfInvalidCastException.ahk)
4.19kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2509** | [MfInvalidOperationException.ahk](more libs/Mini_Framwork/Framework/src/System//MfInvalidOperationException.ahk)
2.99kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2510** | [MfList.ahk](more libs/Mini_Framwork/Framework/src/System//MfList.ahk)
1.39kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2511** | [MfListBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfListBase.ahk)
21.11kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2512** | [MfListVar.ahk](more libs/Mini_Framwork/Framework/src/System//MfListVar.ahk)
16.12kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2513** | [MfMath.ahk](more libs/Mini_Framwork/Framework/src/System//MfMath.ahk)
36.67kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2514** | [MfMemberAccessException.ahk](more libs/Mini_Framwork/Framework/src/System//MfMemberAccessException.ahk)
3.07kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2515** | [MfMemoryString.ahk](more libs/Mini_Framwork/Framework/src/System//MfMemoryString.ahk)
224.66kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2516** | [MfMidpointRounding.ahk](more libs/Mini_Framwork/Framework/src/System//MfMidpointRounding.ahk)
3.51kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2517** | [MfMissingFieldException.ahk](more libs/Mini_Framwork/Framework/src/System//MfMissingFieldException.ahk)
3.31kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2518** | [MfMissingMemberException.ahk](more libs/Mini_Framwork/Framework/src/System//MfMissingMemberException.ahk)
6.13kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2519** | [MfMissingMethodException.ahk](more libs/Mini_Framwork/Framework/src/System//MfMissingMethodException.ahk)
3.31kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2520** | [MfNameObjectCollectionBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfNameObjectCollectionBase.ahk)
5.03kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2521** | [MfNibbleList.ahk](more libs/Mini_Framwork/Framework/src/System//MfNibbleList.ahk)
22.02kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2522** | [MfNibConverter.ahk](more libs/Mini_Framwork/Framework/src/System//MfNibConverter.ahk)
72.37kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2523** | [MfNonMfObjectException.ahk](more libs/Mini_Framwork/Framework/src/System//MfNonMfObjectException.ahk)
4.59kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2524** | [MfNotImplementedException.ahk](more libs/Mini_Framwork/Framework/src/System//MfNotImplementedException.ahk)
2.65kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2525** | [MfNotSupportedException.ahk](more libs/Mini_Framwork/Framework/src/System//MfNotSupportedException.ahk)
2.60kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2526** | [MfNull.ahk](more libs/Mini_Framwork/Framework/src/System//MfNull.ahk)
12.41kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2527** | [MfNullReferenceException.ahk](more libs/Mini_Framwork/Framework/src/System//MfNullReferenceException.ahk)
2.64kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2528** | [MfNumber.ahk](more libs/Mini_Framwork/Framework/src/System//MfNumber.ahk)
37.54kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2529** | [MfNumberFormatInfo.ahk](more libs/Mini_Framwork/Framework/src/System//MfNumberFormatInfo.ahk)
42.06kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2530** | [MfNumberFormatInfoBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfNumberFormatInfoBase.ahk)
3.36kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2531** | [MfNumberStyles.ahk](more libs/Mini_Framwork/Framework/src/System//MfNumberStyles.ahk)
5.01kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2532** | [MfObject.ahk](more libs/Mini_Framwork/Framework/src/System//MfObject.ahk)
35.61kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2533** | [MfOrdinalComparer.ahk](more libs/Mini_Framwork/Framework/src/System//MfOrdinalComparer.ahk)
3.62kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2534** | [MfOutOfMemoryException.ahk](more libs/Mini_Framwork/Framework/src/System//MfOutOfMemoryException.ahk)
2.58kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2535** | [MfOverflowException.ahk](more libs/Mini_Framwork/Framework/src/System//MfOverflowException.ahk)
3.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2536** | [MfParams.ahk](more libs/Mini_Framwork/Framework/src/System//MfParams.ahk)
41.05kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2537** | [MfPrimitive.ahk](more libs/Mini_Framwork/Framework/src/System//MfPrimitive.ahk)
13.32kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2538** | [MfPrimitives.ahk](more libs/Mini_Framwork/Framework/src/System//MfPrimitives.ahk)
0.78kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2539** | [MfQueue.ahk](more libs/Mini_Framwork/Framework/src/System//MfQueue.ahk)
5.72kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2540** | [MfResourceManager.ahk](more libs/Mini_Framwork/Framework/src/System//MfResourceManager.ahk)
14.73kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2541** | [MfResourceSingletonBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfResourceSingletonBase.ahk)
4.54kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2542** | [MfSByte.ahk](more libs/Mini_Framwork/Framework/src/System//MfSByte.ahk)
43.42kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2543** | [MfSetFormatNumberType.ahk](more libs/Mini_Framwork/Framework/src/System//MfSetFormatNumberType.ahk)
4.13kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2544** | [MfSingletonBase.ahk](more libs/Mini_Framwork/Framework/src/System//MfSingletonBase.ahk)
3.27kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2545** | [MfStack.ahk](more libs/Mini_Framwork/Framework/src/System//MfStack.ahk)
5.84kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2546** | [MfString.ahk](more libs/Mini_Framwork/Framework/src/System//MfString.ahk)
156.61kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2547** | [MfStringComparison.ahk](more libs/Mini_Framwork/Framework/src/System//MfStringComparison.ahk)
4.85kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2548** | [MfStringSplitOptions.ahk](more libs/Mini_Framwork/Framework/src/System//MfStringSplitOptions.ahk)
4.74kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2549** | [MfSystemException.ahk](more libs/Mini_Framwork/Framework/src/System//MfSystemException.ahk)
2.57kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2550** | [MfTimeSpan.ahk](more libs/Mini_Framwork/Framework/src/System//MfTimeSpan.ahk)
68.18kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2551** | [MfType.ahk](more libs/Mini_Framwork/Framework/src/System//MfType.ahk)
32.80kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2552** | [MfTypeCode.ahk](more libs/Mini_Framwork/Framework/src/System//MfTypeCode.ahk)
4.15kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2553** | [MfUint16.ahk](more libs/Mini_Framwork/Framework/src/System//MfUint16.ahk)
43.22kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2554** | [MfUInt32.ahk](more libs/Mini_Framwork/Framework/src/System//MfUInt32.ahk)
44.99kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2555** | [MfUInt64.ahk](more libs/Mini_Framwork/Framework/src/System//MfUInt64.ahk)
77.99kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2556** | [Mfunc.ahk](more libs/Mini_Framwork/Framework/src/System//Mfunc.ahk)
227.12kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2557** | [MfUnicodeCategory.ahk](more libs/Mini_Framwork/Framework/src/System//MfUnicodeCategory.ahk)
14.17kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2558** | [MfValueType.ahk](more libs/Mini_Framwork/Framework/src/System//MfValueType.ahk)
1.56kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2559** | [MfVersion.ahk](more libs/Mini_Framwork/Framework/src/System//MfVersion.ahk)
31.70kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/| +| **2560** | [MfDirectoryNotFoundException.ahk](more libs/Mini_Framwork/Framework/src/System/IO/MfDirectoryNotFoundException.ahk)
5.55kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/IO| +| **2561** | [MfDriveNotFoundException.ahk](more libs/Mini_Framwork/Framework/src/System/IO/MfDriveNotFoundException.ahk)
5.76kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/IO| +| **2562** | [MfFileNotFoundException.ahk](more libs/Mini_Framwork/Framework/src/System/IO/MfFileNotFoundException.ahk)
10.16kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/IO| +| **2563** | [MfIOException.ahk](more libs/Mini_Framwork/Framework/src/System/IO/MfIOException.ahk)
5.80kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/IO| +| **2564** | [MfStruct.ahk](more libs/Mini_Framwork/Framework/src/System/MfStruct/MfStruct.ahk)
48.37kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfStruct| +| **2565** | [MfDataBaseFactory.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfDataBaseFactory.ahk)
1.17kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| +| **2566** | [MfDbUcdAbstract.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfDbUcdAbstract.ahk)
15.30kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| +| **2567** | [MfRecordSetSqlLite.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfRecordSetSqlLite.ahk)
4.40kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| +| **2568** | [MfSQLite_L.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfSQLite_L.ahk)
51.74kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| +| **2569** | [MfUcdDb.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/MfUcdDb.ahk)
12.29kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| +| **2570** | [UCDSqlite.ahk](more libs/Mini_Framwork/Framework/src/System/MfUnicode/UCDSqlite.ahk)
10.86kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/MfUnicode| +| **2571** | [MfStringBuilder.ahk](more libs/Mini_Framwork/Framework/src/System/Text/MfStringBuilder.ahk)
110.42kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/Text| +| **2572** | [MfText.ahk](more libs/Mini_Framwork/Framework/src/System/Text/MfText.ahk)
0.74kb - 2017-06-14 | more libs/Mini_Framwork/Framework/src/System/Text| +| **2573** | [audioRouter.ahk](more libs/minilib/audioRouter.ahk)
5.80kb - 2018-06-02 | more libs/minilib| +| **2574** | [borderlessMode.ahk](more libs/minilib/borderlessMode.ahk)
0.21kb - 2018-06-02 | more libs/minilib| +| **2575** | [borderlessMove.ahk](more libs/minilib/borderlessMove.ahk)
0.75kb - 2018-06-02 | more libs/minilib| +| **2576** | [checkSession.ahk](more libs/minilib/checkSession.ahk)
1.97kb - 2018-06-02 | more libs/minilib| +| **2577** | [commaFormat.ahk](more libs/minilib/commaFormat.ahk)
0.24kb - 2018-06-02 | more libs/minilib| +| **2578** | [compileScript.ahk](more libs/minilib/compileScript.ahk)
0.50kb - 2018-06-02 | more libs/minilib| +| **2579** | [CopyDirStructure.ahk](more libs/minilib/CopyDirStructure.ahk)
0.95kb - 2018-06-02 | more libs/minilib| +| **2580** | [CreateOpenWithMenu.ahk](more libs/minilib/CreateOpenWithMenu.ahk)
7.53kb - 2018-06-02 | more libs/minilib| +| **2581** | [dpiOffset.ahk](more libs/minilib/dpiOffset.ahk)
0.09kb - 2018-06-02 | more libs/minilib| +| **2582** | [EmptyMem.ahk](more libs/minilib/EmptyMem.ahk)
0.53kb - 2018-06-02 | more libs/minilib| +| **2583** | [externalIP.ahk](more libs/minilib/externalIP.ahk)
1.05kb - 2018-06-02 | more libs/minilib| +| **2584** | [externalIP_old.ahk](more libs/minilib/externalIP_old.ahk)
0.47kb - 2018-06-02 | more libs/minilib| +| **2585** | [FileCountLines.ahk](more libs/minilib/FileCountLines.ahk)
0.74kb - 2018-06-02 | more libs/minilib| +| **2586** | [FileFindWord.ahk](more libs/minilib/FileFindWord.ahk)
0.83kb - 2018-06-02 | more libs/minilib| +| **2587** | [FileGetVersionInfo.ahk](more libs/minilib/FileGetVersionInfo.ahk)
1.03kb - 2018-06-02 | more libs/minilib| +| **2588** | [FileReadLastLines.ahk](more libs/minilib/FileReadLastLines.ahk)
1.01kb - 2018-06-02 | more libs/minilib| +| **2589** | [fileUnblock.ahk](more libs/minilib/fileUnblock.ahk)
0.09kb - 2018-06-02 | more libs/minilib| +| **2590** | [getCurrentTime.ahk](more libs/minilib/getCurrentTime.ahk)
0.79kb - 2018-06-02 | more libs/minilib| +| **2591** | [getImageSize.ahk](more libs/minilib/getImageSize.ahk)
0.60kb - 2018-06-02 | more libs/minilib| +| **2592** | [getPosFromAngle.ahk](more libs/minilib/getPosFromAngle.ahk)
0.15kb - 2018-06-02 | more libs/minilib| +| **2593** | [getSelected.ahk](more libs/minilib/getSelected.ahk)
0.21kb - 2018-06-02 | more libs/minilib| +| **2594** | [GetStringFileInfo.ahk](more libs/minilib/GetStringFileInfo.ahk)
1.33kb - 2018-06-02 | more libs/minilib| +| **2595** | [getUTCOffset.ahk](more libs/minilib/getUTCOffset.ahk)
0.33kb - 2018-06-02 | more libs/minilib| +| **2596** | [getWinClientSize.ahk](more libs/minilib/getWinClientSize.ahk)
0.18kb - 2018-06-02 | more libs/minilib| +| **2597** | [hour.ahk](more libs/minilib/hour.ahk)
0.04kb - 2018-06-02 | more libs/minilib| +| **2598** | [httpQuery.ahk](more libs/minilib/httpQuery.ahk)
21.94kb - 2018-06-02 | more libs/minilib| +| **2599** | [IEObj.ahk](more libs/minilib/IEObj.ahk)
2.48kb - 2018-06-02 | more libs/minilib| +| **2600** | [ifContains.ahk](more libs/minilib/ifContains.ahk)
0.08kb - 2018-06-02 | more libs/minilib| +| **2601** | [ifIn.ahk](more libs/minilib/ifIn.ahk)
0.07kb - 2018-06-02 | more libs/minilib| +| **2602** | [imageSearchc.ahk](more libs/minilib/imageSearchc.ahk)
0.63kb - 2018-06-02 | more libs/minilib| +| **2603** | [internetConnected.ahk](more libs/minilib/internetConnected.ahk)
0.17kb - 2018-06-02 | more libs/minilib| +| **2604** | [invertCaseChr.ahk](more libs/minilib/invertCaseChr.ahk)
0.08kb - 2018-06-02 | more libs/minilib| +| **2605** | [invertCaseStr.ahk](more libs/minilib/invertCaseStr.ahk)
0.10kb - 2018-06-02 | more libs/minilib| +| **2606** | [is64bitExe.ahk](more libs/minilib/is64bitExe.ahk)
0.09kb - 2018-06-02 | more libs/minilib| +| **2607** | [isAlpha.ahk](more libs/minilib/isAlpha.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2608** | [isAlphaNum.ahk](more libs/minilib/isAlphaNum.ahk)
0.06kb - 2018-06-02 | more libs/minilib| +| **2609** | [isBetween.ahk](more libs/minilib/isBetween.ahk)
0.11kb - 2018-06-02 | more libs/minilib| +| **2610** | [isDigit.ahk](more libs/minilib/isDigit.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2611** | [isFloat.ahk](more libs/minilib/isFloat.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2612** | [isHex.ahk](more libs/minilib/isHex.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2613** | [isInt.ahk](more libs/minilib/isInt.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2614** | [isLower.ahk](more libs/minilib/isLower.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2615** | [isNum.ahk](more libs/minilib/isNum.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2616** | [isSpace.ahk](more libs/minilib/isSpace.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2617** | [isUpper.ahk](more libs/minilib/isUpper.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2618** | [json.ahk](more libs/minilib/json.ahk)
1.64kb - 2018-06-02 | more libs/minilib| +| **2619** | [lanConnected.ahk](more libs/minilib/lanConnected.ahk)
0.13kb - 2018-06-02 | more libs/minilib| +| **2620** | [min.ahk](more libs/minilib/min.ahk)
0.04kb - 2018-06-02 | more libs/minilib| +| **2621** | [mouseOverWin.ahk](more libs/minilib/mouseOverWin.ahk)
0.12kb - 2018-06-02 | more libs/minilib| +| **2622** | [mtoh.ahk](more libs/minilib/mtoh.ahk)
0.04kb - 2018-06-02 | more libs/minilib| +| **2623** | [mtom.ahk](more libs/minilib/mtom.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2624** | [mtos.ahk](more libs/minilib/mtos.ahk)
0.05kb - 2018-06-02 | more libs/minilib| +| **2625** | [muteWindow.ahk](more libs/minilib/muteWindow.ahk)
0.42kb - 2018-06-02 | more libs/minilib| +| **2626** | [nicRestart.ahk](more libs/minilib/nicRestart.ahk)
0.21kb - 2018-06-02 | more libs/minilib| +| **2627** | [nicSetState.ahk](more libs/minilib/nicSetState.ahk)
0.17kb - 2018-06-02 | more libs/minilib| +| **2628** | [processExist.ahk](more libs/minilib/processExist.ahk)
0.07kb - 2018-06-02 | more libs/minilib| +| **2629** | [processPriority.ahk](more libs/minilib/processPriority.ahk)
0.16kb - 2018-06-02 | more libs/minilib| +| **2630** | [rand.ahk](more libs/minilib/rand.ahk)
0.09kb - 2018-06-02 | more libs/minilib| +| **2631** | [randStr.ahk](more libs/minilib/randStr.ahk)
0.89kb - 2018-06-02 | more libs/minilib| +| **2632** | [regExMatchI.ahk](more libs/minilib/regExMatchI.ahk)
0.17kb - 2018-06-02 | more libs/minilib| +| **2633** | [regExReplaceI.ahk](more libs/minilib/regExReplaceI.ahk)
0.21kb - 2018-06-02 | more libs/minilib| +| **2634** | [sec.ahk](more libs/minilib/sec.ahk)
0.04kb - 2018-06-02 | more libs/minilib| +| **2635** | [StdOutStream.ahk](more libs/minilib/StdOutStream.ahk)
2.89kb - 2018-06-02 | more libs/minilib| +| **2636** | [StdOutToVar.ahk](more libs/minilib/StdOutToVar.ahk)
2.63kb - 2018-06-02 | more libs/minilib| +| **2637** | [StealFuncFromLib.ahk](more libs/minilib/StealFuncFromLib.ahk)
7.42kb - 2018-01-21 | more libs/minilib| +| **2638** | [strI.ahk](more libs/minilib/strI.ahk)
0.15kb - 2018-06-02 | more libs/minilib| +| **2639** | [strReplaceI.ahk](more libs/minilib/strReplaceI.ahk)
0.17kb - 2018-06-02 | more libs/minilib| +| **2640** | [strToLower.ahk](more libs/minilib/strToLower.ahk)
0.06kb - 2018-06-02 | more libs/minilib| +| **2641** | [strToUpper.ahk](more libs/minilib/strToUpper.ahk)
0.06kb - 2018-06-02 | more libs/minilib| +| **2642** | [threadMan.ahk](more libs/minilib/threadMan.ahk)
2.64kb - 2018-06-02 | more libs/minilib| +| **2643** | [tool.ahk](more libs/minilib/tool.ahk)
0.15kb - 2018-06-02 | more libs/minilib| +| **2644** | [toolSpeak.ahk](more libs/minilib/toolSpeak.ahk)
0.10kb - 2018-06-02 | more libs/minilib| +| **2645** | [urlDownloadToFile.ahk](more libs/minilib/urlDownloadToFile.ahk)
0.86kb - 2018-06-02 | more libs/minilib| +| **2646** | [urlDownloadToVar.ahk](more libs/minilib/urlDownloadToVar.ahk)
0.40kb - 2018-06-02 | more libs/minilib| +| **2647** | [urlFileGetSize.ahk](more libs/minilib/urlFileGetSize.ahk)
1.57kb - 2018-06-02 | more libs/minilib| +| **2648** | [winInfo.ahk](more libs/minilib/winInfo.ahk)
0.44kb - 2018-06-02 | more libs/minilib| +| **2649** | [ObjCSV.ahk](more libs/ObjCSV/lib/ObjCSV.ahk)
75.73kb - 2017-07-20 | more libs/ObjCSV/lib| +| **2650** | [MainScript.ahk](more libs/RamDisk & CmdReturn/MainScript.ahk)
0.46kb - 2018-08-25 | more libs/RamDisk & CmdReturn| +| **2651** | [RamDrive.ahk](more libs/RamDisk & CmdReturn/RamDrive.ahk)
4.70kb - 2018-08-25 | more libs/RamDisk & CmdReturn| +| **2652** | [cSendInputW.ahk](more libs/SendInput/cSendInputW.ahk)
4.77kb - 2017-07-22 | more libs/SendInput| +| **2653** | [hookSend.ahk](more libs/SendInput/hookSend.ahk)
0.61kb - 2017-07-22 | more libs/SendInput| +| **2654** | [inputUnicode.ahk](more libs/SendInput/inputUnicode.ahk)
2.90kb - 2017-07-22 | more libs/SendInput| +| **2655** | [SendInput.ahk](more libs/SendInput/SendInput.ahk)
5.92kb - 2017-07-22 | more libs/SendInput| +| **2656** | [splashConsole.ahk](more libs/Splash-Gui/splashConsole.ahk)
1.00kb - 2019-02-08 | more libs/Splash-Gui| +| **2657** | [splashDir.ahk](more libs/Splash-Gui/splashDir.ahk)
0.77kb - 2019-02-08 | more libs/Splash-Gui| +| **2658** | [splashImageGUI.ahk](more libs/Splash-Gui/splashImageGUI.ahk)
0.34kb - 2019-02-08 | more libs/Splash-Gui| +| **2659** | [splashList.ahk](more libs/Splash-Gui/splashList.ahk)
1.55kb - 2019-02-08 | more libs/Splash-Gui| +| **2660** | [splashList_AltSubmit.ahk](more libs/Splash-Gui/splashList_AltSubmit.ahk)
1.60kb - 2019-02-08 | more libs/Splash-Gui| +| **2661** | [splashNote.ahk](more libs/Splash-Gui/splashNote.ahk)
1.48kb - 2019-02-08 | more libs/Splash-Gui| +| **2662** | [splashNoteFull.ahk](more libs/Splash-Gui/splashNoteFull.ahk)
1.07kb - 2019-02-08 | more libs/Splash-Gui| +| **2663** | [splashNoteSmall.ahk](more libs/Splash-Gui/splashNoteSmall.ahk)
1.40kb - 2019-02-08 | more libs/Splash-Gui| +| **2664** | [splashNotify.ahk](more libs/Splash-Gui/splashNotify.ahk)
0.76kb - 2019-02-08 | more libs/Splash-Gui| +| **2665** | [splashProgress.ahk](more libs/Splash-Gui/splashProgress.ahk)
0.32kb - 2019-02-08 | more libs/Splash-Gui| +| **2666** | [splashRadio.ahk](more libs/Splash-Gui/splashRadio.ahk)
1.77kb - 2019-02-08 | more libs/Splash-Gui| +| **2667** | [splashRadio2.ahk](more libs/Splash-Gui/splashRadio2.ahk)
1.35kb - 2019-02-08 | more libs/Splash-Gui| +| **2668** | [splashText.ahk](more libs/Splash-Gui/splashText.ahk)
1.92kb - 2019-02-08 | more libs/Splash-Gui| +| **2669** | [splashUI.ahk](more libs/Splash-Gui/splashUI.ahk)
0.23kb - 2019-02-08 | more libs/Splash-Gui| +| **2670** | [Edit.ahk](more libs/TAB/_Functions/Edit.ahk)
117.55kb - 2016-05-09 | more libs/TAB/_Functions| +| **2671** | [Fnt.ahk](more libs/TAB/_Functions/Fnt.ahk)
297.97kb - 2018-01-02 | more libs/TAB/_Functions| +| **2672** | [HSV.ahk](more libs/TAB/_Functions/HSV.ahk)
3.59kb - 2017-04-23 | more libs/TAB/_Functions| +| **2673** | [TAB.ahk](more libs/TAB/_Functions/TAB.ahk)
122.22kb - 2018-06-17 | more libs/TAB/_Functions| +| **2674** | [ansi.ahk](more libs/Various1/lib/ansi.ahk)
8.85kb - 2019-10-31 | more libs/Various1/lib| +| **2675** | [app.ahk](more libs/Various1/lib/app.ahk)
0.65kb - 2019-10-31 | more libs/Various1/lib| +| **2676** | [arrays.ahk](more libs/Various1/lib/arrays.ahk)
6.09kb - 2019-10-31 | more libs/Various1/lib| +| **2677** | [base64.ahk](more libs/Various1/lib/base64.ahk)
4.30kb - 2019-10-31 | more libs/Various1/lib| +| **2678** | [bitset.ahk](more libs/Various1/lib/bitset.ahk)
11.94kb - 2019-10-31 | more libs/Various1/lib| +| **2679** | [calendar.ahk](more libs/Various1/lib/calendar.ahk)
10.35kb - 2019-10-31 | more libs/Various1/lib| +| **2680** | [console.ahk](more libs/Various1/lib/console.ahk)
14.36kb - 2019-10-31 | more libs/Various1/lib| +| **2681** | [cron.ahk](more libs/Various1/lib/cron.ahk)
4.19kb - 2019-10-31 | more libs/Various1/lib| +| **2682** | [crypto.ahk](more libs/Various1/lib/crypto.ahk)
4.55kb - 2019-10-31 | more libs/Various1/lib| +| **2683** | [datatable.ahk](more libs/Various1/lib/datatable.ahk)
9.45kb - 2019-10-31 | more libs/Various1/lib| +| **2684** | [dimension.ahk](more libs/Various1/lib/dimension.ahk)
2.30kb - 2019-10-31 | more libs/Various1/lib| +| **2685** | [flimsydata.ahk](more libs/Various1/lib/flimsydata.ahk)
1.49kb - 2019-10-31 | more libs/Various1/lib| +| **2686** | [ldap.ahk](more libs/Various1/lib/ldap.ahk)
20.74kb - 2019-10-31 | more libs/Various1/lib| +| **2687** | [long.ahk](more libs/Various1/lib/long.ahk)
0.75kb - 2019-10-31 | more libs/Various1/lib| +| **2688** | [math.ahk](more libs/Various1/lib/math.ahk)
8.53kb - 2019-10-31 | more libs/Various1/lib| +| **2689** | [object.ahk](more libs/Various1/lib/object.ahk)
3.78kb - 2019-10-31 | more libs/Various1/lib| +| **2690** | [optparser.ahk](more libs/Various1/lib/optparser.ahk)
7.54kb - 2019-10-31 | more libs/Various1/lib| +| **2691** | [pager.ahk](more libs/Various1/lib/pager.ahk)
2.81kb - 2019-10-31 | more libs/Various1/lib| +| **2692** | [queue.ahk](more libs/Various1/lib/queue.ahk)
1.14kb - 2019-10-31 | more libs/Various1/lib| +| **2693** | [random.ahk](more libs/Various1/lib/random.ahk)
4.43kb - 2019-10-31 | more libs/Various1/lib| +| **2694** | [string.ahk](more libs/Various1/lib/string.ahk)
18.89kb - 2019-10-31 | more libs/Various1/lib| +| **2695** | [system.ahk](more libs/Various1/lib/system.ahk)
9.20kb - 2019-10-31 | more libs/Various1/lib| +| **2696** | [testcase.ahk](more libs/Various1/lib/testcase.ahk)
16.86kb - 2019-10-31 | more libs/Various1/lib| +| **2697** | [commonFunctions.ahk](more libs/windows10DesktopManager/commonFunctions.ahk)
1.34kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2698** | [desktopChanger.ahk](more libs/windows10DesktopManager/desktopChanger.ahk)
2.55kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2699** | [desktopManager.ahk](more libs/windows10DesktopManager/desktopManager.ahk)
2.40kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2700** | [desktopMapper.ahk](more libs/windows10DesktopManager/desktopMapper.ahk)
2.40kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2701** | [dllWindowMover.ahk](more libs/windows10DesktopManager/dllWindowMover.ahk)
2.36kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2702** | [hotkeyManager.ahk](more libs/windows10DesktopManager/hotkeyManager.ahk)
1.33kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2703** | [monitorMapper.ahk](more libs/windows10DesktopManager/monitorMapper.ahk)
1.39kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2704** | [virtualDesktopManager.ahk](more libs/windows10DesktopManager/virtualDesktopManager.ahk)
2.69kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2705** | [windowMover.ahk](more libs/windows10DesktopManager/windowMover.ahk)
2.34kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2706** | [windows10.ahk](more libs/windows10DesktopManager/windows10.ahk)
1.15kb - 2018-03-01 | more libs/windows10DesktopManager| +| **2707** | [dllCaller.ahk](more libs/windows10DesktopManager/injection dll/dllCaller.ahk)
3.24kb - 2018-03-01 | more libs/windows10DesktopManager/injection dll| +| **2708** | [Mony.ahk](more libs/Windy/Mony.ahk)
19.06kb - 2017-03-07 | more libs/Windy| +| **2709** | [Mousy.ahk](more libs/Windy/Mousy.ahk)
16.21kb - 2017-03-07 | more libs/Windy| +| **2710** | [MultiMony.ahk](more libs/Windy/MultiMony.ahk)
14.76kb - 2017-03-07 | more libs/Windy| +| **2711** | [Pointy.ahk](more libs/Windy/Pointy.ahk)
3.81kb - 2017-03-07 | more libs/Windy| +| **2712** | [Recty.ahk](more libs/Windy/Recty.ahk)
7.06kb - 2017-03-07 | more libs/Windy| +| **2713** | [WindLy.ahk](more libs/Windy/WindLy.ahk)
11.49kb - 2017-03-07 | more libs/Windy| +| **2714** | [Windy.ahk](more libs/Windy/Windy.ahk)
60.73kb - 2017-03-07 | more libs/Windy| +| **2715** | [AHKLogonMediaKeys.ahk](more libs/WinLogon/AHKLogonMediaKeys.ahk)
23.20kb - 2019-01-24 | more libs/WinLogon| +| **2716** | [Logon.ahk](more libs/WinLogon/Logon.ahk)
36.25kb - 2019-01-24 | more libs/WinLogon| +| **2717** | [LogonDesktop.ahk](more libs/WinLogon/LogonDesktop.ahk)
35.47kb - 2019-01-24 | more libs/WinLogon| +| **2718** | [StartVC.ahk](more libs/WinLogon/StartVC.ahk)
3.31kb - 2019-01-24 | more libs/WinLogon| +| **2719** | [TermWait.ahk](more libs/WinLogon/TermWait.ahk)
6.12kb - 2019-01-24 | more libs/WinLogon| +| **2720** | [Const_WinUser.ahk](more libs/Wy/lib/Const_WinUser.ahk)
26.04kb - 2019-12-31 | more libs/Wy/lib| +| **2721** | [Wy.ahk](more libs/Wy/lib/Wy.ahk)
3.83kb - 2019-12-31 | more libs/Wy/lib| +| **2722** | [GdipC.ahk](more libs/Wy/lib/GdipC/GdipC.ahk)
10.63kb - 2019-12-31 | more libs/Wy/lib/GdipC| +| **2723** | [Colory.ahk](more libs/Wy/lib/Wy/Colory.ahk)
3.79kb - 2019-12-31 | more libs/Wy/lib/Wy| +| **2724** | [DbgOut.ahk](more libs/Wy/lib/Wy/DbgOut.ahk)
1.23kb - 2019-12-31 | more libs/Wy/lib/Wy| +| **2725** | [JSON.ahk](more libs/Wy/lib/Wy/JSON.ahk)
11.29kb - 2019-12-31 | more libs/Wy/lib/Wy| +| **2726** | [Mony.ahk](more libs/Wy/lib/Wy/Mony.ahk)
16.94kb - 2019-12-31 | more libs/Wy/lib/Wy| +| **2727** | [MultiMony.ahk](more libs/Wy/lib/Wy/MultiMony.ahk)
13.37kb - 2019-12-31 | more libs/Wy/lib/Wy| +| **2728** | [ScreenSavy.ahk](more libs/Wy/lib/Wy/ScreenSavy.ahk)
2.71kb - 2019-12-31 | more libs/Wy/lib/Wy| +| **2729** | [xlib.ahk](more libs/xlib/xlib.ahk)
0.24kb - 2018-12-22 | more libs/xlib| +| **2730** | [bases.ahk](more libs/xlib/xinclude/common/bases.ahk)
1.90kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2731** | [callback.ahk](more libs/xlib/xinclude/common/callback.ahk)
6.25kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2732** | [common_includes.ahk](more libs/xlib/xinclude/common/common_includes.ahk)
0.78kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2733** | [constants.ahk](more libs/xlib/xinclude/common/constants.ahk)
0.44kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2734** | [core.ahk](more libs/xlib/xinclude/common/core.ahk)
1.46kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2735** | [createlib.ahk](more libs/xlib/xinclude/common/createlib.ahk)
0.91kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2736** | [error.ahk](more libs/xlib/xinclude/common/error.ahk)
1.96kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2737** | [jit.ahk](more libs/xlib/xinclude/common/jit.ahk)
12.64kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2738** | [malloc.ahk](more libs/xlib/xinclude/common/malloc.ahk)
3.19kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2739** | [misc.ahk](more libs/xlib/xinclude/common/misc.ahk)
2.09kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2740** | [struct.ahk](more libs/xlib/xinclude/common/struct.ahk)
3.63kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2741** | [type.ahk](more libs/xlib/xinclude/common/type.ahk)
6.50kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2742** | [typeArr.ahk](more libs/xlib/xinclude/common/typeArr.ahk)
2.45kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2743** | [ui.ahk](more libs/xlib/xinclude/common/ui.ahk)
2.47kb - 2018-12-22 | more libs/xlib/xinclude/common| +| **2744** | [poolbase.ahk](more libs/xlib/xinclude/pool/poolbase.ahk)
12.16kb - 2018-12-22 | more libs/xlib/xinclude/pool| +| **2745** | [poolCallback.ahk](more libs/xlib/xinclude/pool/poolCallback.ahk)
14.39kb - 2018-12-22 | more libs/xlib/xinclude/pool| +| **2746** | [poolcore.ahk](more libs/xlib/xinclude/pool/poolcore.ahk)
29.28kb - 2018-12-22 | more libs/xlib/xinclude/pool| +| **2747** | [pool_includes.ahk](more libs/xlib/xinclude/pool/pool_includes.ahk)
0.33kb - 2018-12-22 | more libs/xlib/xinclude/pool| +| **2748** | [threadPool.ahk](more libs/xlib/xinclude/pool/threadPool/threadPool.ahk)
8.71kb - 2018-12-22 | more libs/xlib/xinclude/pool/threadPool| +| **2749** | [coreThreads.ahk](more libs/xlib/xinclude/threads/coreThreads.ahk)
5.48kb - 2018-12-22 | more libs/xlib/xinclude/threads| +| **2750** | [threads_includes.ahk](more libs/xlib/xinclude/threads/threads_includes.ahk)
0.22kb - 2018-12-22 | more libs/xlib/xinclude/threads| +| **2751** | [ccore.ahk](more libs/xlib/xinclude/threads/threadHandler/ccore.ahk)
0.39kb - 2018-12-22 | more libs/xlib/xinclude/threads/threadHandler| +| **2752** | [threadHandler.ahk](more libs/xlib/xinclude/threads/threadHandler/threadHandler.ahk)
12.54kb - 2018-12-22 | more libs/xlib/xinclude/threads/threadHandler| +| **2753** | [xDllCall.ahk](more libs/xlib-xdllcall/xDllCall.ahk)
0.55kb - 2019-01-09 | more libs/xlib-xdllcall| +| **2754** | [xcall.ahk](more libs/xlib-xdllcall/lib/xcall.ahk)
3.96kb - 2019-01-09 | more libs/xlib-xdllcall/lib| +| **2755** | [xlib.ahk](more libs/xlib-xdllcall/lib/xlib.ahk)
0.24kb - 2019-01-09 | more libs/xlib-xdllcall/lib| +| **2756** | [Office_2010_Constants_(class).ahk](MSOffice/Office_2010_Constants_(class).ahk)
370.28kb - 2017-12-03 | MSOffice| +| **2757** | [Office_2010_Constants_(global).ahk](MSOffice/Office_2010_Constants_(global).ahk)
255.05kb - 2017-12-03 | MSOffice| +| **2758** | [Office_2010_Constants_(super_global).ahk](MSOffice/Office_2010_Constants_(super_global).ahk)
328.36kb - 2017-12-03 | MSOffice| +| **2759** | [DahkX2.ahk](MSOffice/DocX/DahkX2.ahk)
2.55kb - 2019-04-21 | MSOffice/DocX| diff --git a/classes/Class_JSON.ahk b/classes/Class_JSON.ahk index cd5892fe..f130f6d8 100644 --- a/classes/Class_JSON.ahk +++ b/classes/Class_JSON.ahk @@ -1,8 +1,8 @@ -/** +/** * Lib: JSON.ahk * JSON lib for AutoHotkey. * Version: - * v2.0.00.00 [updated 11/07/2015 (MM/DD/YYYY)] + * v2.1.3 [updated 04/18/2016 (MM/DD/YYYY)] * License: * WTFPL [http://wtfpl.net/] * Requirements: @@ -35,21 +35,24 @@ class JSON * value := JSON.Load( text [, reviver ] ) * Parameter(s): * value [retval] - parsed value - * text [in, opt] - JSON formatted string + * text [in, ByRef] - JSON formatted string * reviver [in, opt] - function object, similar to JavaScript's * JSON.parse() 'reviver' parameter */ class Load extends JSON.Functor { - Call(self, text, reviver:="") + Call(self, ByRef text, reviver:="") { this.rev := IsObject(reviver) ? reviver : false + ; Object keys(and array indices) are temporarily stored in arrays so that + ; we can enumerate them in the order they appear in the document/text instead + ; of alphabetically. Skip if no reviver function is specified. this.keys := this.rev ? {} : false - static q := Chr(34) - , json_value := q . "{[01234567890-tfn" - , json_value_or_array_closing := q . "{[]01234567890-tfn" - , object_key_or_object_closing := q . "}" + static quot := Chr(34), bashq := "\" . quot + , json_value := quot . "{[01234567890-tfn" + , json_value_or_array_closing := quot . "{[]01234567890-tfn" + , object_key_or_object_closing := quot . "}" key := "" is_key := false @@ -68,7 +71,7 @@ class JSON is_array := holder.IsArray if InStr(",:", ch) { - next := (is_key := !is_array && ch == ",") ? q : json_value + next := (is_key := !is_array && ch == ",") ? quot : json_value } else if InStr("}]", ch) { ObjRemoveAt(stack, 1) @@ -96,26 +99,26 @@ class JSON this.keys[value] := [] } else { - if (ch == q) { + if (ch == quot) { i := pos - while (i := InStr(text, q,, i+1)) { + while (i := InStr(text, quot,, i+1)) { value := StrReplace(SubStr(text, pos+1, i-pos-1), "\\", "\u005c") - static ss_end := A_AhkVersion<"2" ? 0 : -1 - if (SubStr(value, ss_end) != "\") + static tail := A_AhkVersion<"2" ? 0 : -1 + if (SubStr(value, tail) != "\") break } if (!i) this.ParseError("'", text, pos) - value := StrReplace(value, "\/", "/") - , value := StrReplace(value, "\" . q, q) - , value := StrReplace(value, "\b", "`b") - , value := StrReplace(value, "\f", "`f") - , value := StrReplace(value, "\n", "`n") - , value := StrReplace(value, "\r", "`r") - , value := StrReplace(value, "\t", "`t") + value := StrReplace(value, "\/", "/") + , value := StrReplace(value, bashq, quot) + , value := StrReplace(value, "\b", "`b") + , value := StrReplace(value, "\f", "`f") + , value := StrReplace(value, "\n", "`n") + , value := StrReplace(value, "\r", "`r") + , value := StrReplace(value, "\t", "`t") pos := i ; update pos @@ -137,11 +140,16 @@ class JSON } else { value := SubStr(text, pos, i := RegExMatch(text, "[\]\},\s]|$",, pos)-pos) - static number := "number", null := "" + static number := "number", integer :="integer" if value is %number% - value += 0 - else if (value == "true" || value == "false" || value == "null") + { + if value is %integer% + value += 0 + } + else if (value == "true" || value == "false") value := %value% + 0 + else if (value == "null") + value := "" else ; we can do more here to pinpoint the actual culprit ; but that's just too much extra work. @@ -164,23 +172,23 @@ class JSON return this.rev ? this.Walk(root, "") : root[""] } - ParseError(expect, text, pos, len:=1) + ParseError(expect, ByRef text, pos, len:=1) { - static q := Chr(34) + static quot := Chr(34), qurly := quot . "}" line := StrSplit(SubStr(text, 1, pos), "`n", "`r").Length() col := pos - InStr(text, "`n",, -(StrLen(text)-pos+1)) msg := Format("{1}`n`nLine:`t{2}`nCol:`t{3}`nChar:`t{4}" - , (expect == "") ? "Extra data" - : (expect == "'") ? "Unterminated string starting at" - : (expect == "\") ? "Invalid \escape" - : (expect == ":") ? "Expecting ':' delimiter" - : (expect == q) ? "Expecting object key enclosed in double quotes" - : (expect == q . "}") ? "Expecting object key enclosed in double quotes or object closing '}'" - : (expect == ",}") ? "Expecting ',' delimiter or object closing '}'" - : (expect == ",]") ? "Expecting ',' delimiter or array closing ']'" - : InStr(expect, "]") ? "Expecting JSON value or array closing ']'" - : "Expecting JSON value(string, number, true, false, null, object or array)" + , (expect == "") ? "Extra data" + : (expect == "'") ? "Unterminated string starting at" + : (expect == "\") ? "Invalid \escape" + : (expect == ":") ? "Expecting ':' delimiter" + : (expect == quot) ? "Expecting object key enclosed in double quotes" + : (expect == qurly) ? "Expecting object key enclosed in double quotes or object closing '}'" + : (expect == ",}") ? "Expecting ',' delimiter or object closing '}'" + : (expect == ",]") ? "Expecting ',' delimiter or array closing ']'" + : InStr(expect, "]") ? "Expecting JSON value or array closing ']'" + : "Expecting JSON value(string, number, true, false, null, object or array)" , line, col, pos) static offset := A_AhkVersion<"2" ? -3 : -4 @@ -190,9 +198,16 @@ class JSON Walk(holder, key) { value := holder[key] - if IsObject(value) - for i, k in this.keys[value] - value[k] := this.Walk.Call(this, value, k) ; bypass __Call + if IsObject(value) { + for i, k in this.keys[value] { + ; check if ObjHasKey(value, k) ?? + v := this.Walk(value, k) + if (v != JSON.Undefined) + value[k] := v + else + ObjDelete(value, k) + } + } return this.rev.Call(holder, key, value) } @@ -237,90 +252,123 @@ class JSON value := holder[key] if (this.rep) - value := this.rep.Call(holder, key, value) + value := this.rep.Call(holder, key, ObjHasKey(holder, key) ? value : JSON.Undefined) if IsObject(value) { - if (this.gap) { - stepback := this.indent - this.indent .= this.gap - } + ; Check object type, skip serialization for other object types such as + ; ComObject, Func, BoundFunc, FileObject, RegExMatchObject, Property, etc. + static type := A_AhkVersion<"2" ? "" : Func("Type") + if (type ? type.Call(value) == "Object" : ObjGetCapacity(value) != "") { + if (this.gap) { + stepback := this.indent + this.indent .= this.gap + } - is_array := value.IsArray + is_array := value.IsArray ; Array() is not overridden, rollback to old method of - ; identifying array-like objects - if (!is_array) { - for i in value - is_array := i == A_Index - until !is_array - } + ; identifying array-like objects. Due to the use of a for-loop + ; sparse arrays such as '[1,,3]' are detected as objects({}). + if (!is_array) { + for i in value + is_array := i == A_Index + until !is_array + } - str := "" - if (is_array) { - Loop, % value.Length() { - if (this.gap) - str .= this.indent - - str .= value.HasKey(A_Index) ? this.Str(value, A_Index) . "," : "null," + str := "" + if (is_array) { + Loop, % value.Length() { + if (this.gap) + str .= this.indent + + v := this.Str(value, A_Index) + str .= (v != "") ? v . "," : "null," + } + } else { + colon := this.gap ? ": " : ":" + for k in value { + v := this.Str(value, k) + if (v != "") { + if (this.gap) + str .= this.indent + + str .= this.Quote(k) . colon . v . "," + } + } } - } else { - colon := this.gap ? ": " : ":" - for k in value { - if (this.gap) - str .= this.indent - str .= this.Quote(k) . colon . this.Str(value, k) . "," + if (str != "") { + str := RTrim(str, ",") + if (this.gap) + str .= stepback } - } - if (str != "") { - str := RTrim(str, ",") if (this.gap) - str .= stepback - } - - if (this.gap) - this.indent := stepback + this.indent := stepback - return is_array ? "[" . str . "]" : "{" . str . "}" - } - ; is_number ? value : "value" - return ObjGetCapacity([value], 1)=="" ? value : this.Quote(value) + return is_array ? "[" . str . "]" : "{" . str . "}" + } + + } else ; is_number ? value : "value" + return ObjGetCapacity([value], 1)=="" ? value : this.Quote(value) } Quote(string) { - static q := Chr(34) + static quot := Chr(34), bashq := "\" . quot if (string != "") { - string := StrReplace(string, "\", "\\") - ; , string := StrReplace(string, "/", "\/") ; optional in ECMAScript - , string := StrReplace(string, q, "\" . q) - , string := StrReplace(string, "`b", "\b") - , string := StrReplace(string, "`f", "\f") - , string := StrReplace(string, "`n", "\n") - , string := StrReplace(string, "`r", "\r") - , string := StrReplace(string, "`t", "\t") + string := StrReplace(string, "\", "\\") + ; , string := StrReplace(string, "/", "\/") ; optional in ECMAScript + , string := StrReplace(string, quot, bashq) + , string := StrReplace(string, "`b", "\b") + , string := StrReplace(string, "`f", "\f") + , string := StrReplace(string, "`n", "\n") + , string := StrReplace(string, "`r", "\r") + , string := StrReplace(string, "`t", "\t") static rx_escapable := A_AhkVersion<"2" ? "O)[^\x20-\x7e]" : "[^\x20-\x7e]" while RegExMatch(string, rx_escapable, m) string := StrReplace(string, m.Value, Format("\u{1:04x}", Ord(m.Value))) } - return q . string . q + return quot . string . quot + } + } + + /** + * Property: Undefined + * Proxy for 'undefined' type + * Syntax: + * undefined := JSON.Undefined + * Remarks: + * For use with reviver and replacer functions since AutoHotkey does not + * have an 'undefined' type. Returning blank("") or 0 won't work since these + * can't be distnguished from actual JSON values. This leaves us with objects. + * Replacer() - the caller may return a non-serializable AHK objects such as + * ComObject, Func, BoundFunc, FileObject, RegExMatchObject, and Property to + * mimic the behavior of returning 'undefined' in JavaScript but for the sake + * of code readability and convenience, it's better to do 'return JSON.Undefined'. + * Internally, the property returns a ComObject with the variant type of VT_EMPTY. + */ + Undefined[] + { + get { + static empty := {}, vt_empty := ComObject(0, &empty, 1) + return vt_empty } } class Functor { - __Call(method, args*) + __Call(method, ByRef arg, args*) { ; When casting to Call(), use a new instance of the "function object" ; so as to avoid directly storing the properties(used across sub-methods) ; into the "function object" itself. if IsObject(method) - return (new this).Call(method, args*) + return (new this).Call(method, arg, args*) else if (method == "") - return (new this).Call(args*) + return (new this).Call(arg, args*) } } } \ No newline at end of file diff --git a/classes/Class_JSONv2.0.00.00.ahk b/classes/Class_JSONv2.0.00.00.ahk new file mode 100644 index 00000000..c387fa5c --- /dev/null +++ b/classes/Class_JSONv2.0.00.00.ahk @@ -0,0 +1,326 @@ +/** + * Lib: JSON.ahk + * JSON lib for AutoHotkey. + * Version: + * v2.0.00.00 [updated 11/07/2015 (MM/DD/YYYY)] + * License: + * WTFPL [http://wtfpl.net/] + * Requirements: + * Latest version of AutoHotkey (v1.1+ or v2.0-a+) + * Installation: + * Use #Include JSON.ahk or copy into a function library folder and then + * use #Include + * Links: + * GitHub: - https://github.com/cocobelgica/AutoHotkey-JSON + * Forum Topic - http://goo.gl/r0zI8t + * Email: - cocobelgica gmail com + */ + + +/** + * Class: JSON + * The JSON object contains methods for parsing JSON and converting values + * to JSON. Callable - NO; Instantiable - YES; Subclassable - YES; + * Nestable(via #Include) - NO. + * Methods: + * Load() - see relevant documentation before method definition header + * Dump() - see relevant documentation before method definition header + */ +class JSON +{ + /** + * Method: Load + * Parses a JSON string into an AHK value + * Syntax: + * value := JSON.Load( text [, reviver ] ) + * Parameter(s): + * value [retval] - parsed value + * text [in, opt] - JSON formatted string + * reviver [in, opt] - function object, similar to JavaScript's + * JSON.parse() 'reviver' parameter + */ + class Load extends JSON.Functor + { + Call(self, text, reviver:="") + { + this.rev := IsObject(reviver) ? reviver : false + this.keys := this.rev ? {} : false + + static q := Chr(34) + , json_value := q . "{[01234567890-tfn" + , json_value_or_array_closing := q . "{[]01234567890-tfn" + , object_key_or_object_closing := q . "}" + + key := "" + is_key := false + root := {} + stack := [root] + next := json_value + pos := 0 + + while ((ch := SubStr(text, ++pos, 1)) != "") { + if InStr(" `t`r`n", ch) + continue + if !InStr(next, ch, 1) + this.ParseError(next, text, pos) + + holder := stack[1] + is_array := holder.IsArray + + if InStr(",:", ch) { + next := (is_key := !is_array && ch == ",") ? q : json_value + + } else if InStr("}]", ch) { + ObjRemoveAt(stack, 1) + next := stack[1]==root ? "" : stack[1].IsArray ? ",]" : ",}" + + } else { + if InStr("{[", ch) { + ; Check if Array() is overridden and if its return value has + ; the 'IsArray' property. If so, Array() will be called normally, + ; otherwise, use a custom base object for arrays + static json_array := Func("Array").IsBuiltIn || ![].IsArray ? {IsArray: true} : 0 + + ; sacrifice readability for minor(actually negligible) performance gain + (ch == "{") + ? ( is_key := true + , value := {} + , next := object_key_or_object_closing ) + ; ch == "[" + : ( value := json_array ? new json_array : [] + , next := json_value_or_array_closing ) + + ObjInsertAt(stack, 1, value) + + if (this.keys) + this.keys[value] := [] + + } else { + if (ch == q) { + i := pos + while (i := InStr(text, q,, i+1)) { + value := StrReplace(SubStr(text, pos+1, i-pos-1), "\\", "\u005c") + + static ss_end := A_AhkVersion<"2" ? 0 : -1 + if (SubStr(value, ss_end) != "\") + break + } + + if (!i) + this.ParseError("'", text, pos) + + value := StrReplace(value, "\/", "/") + , value := StrReplace(value, "\" . q, q) + , value := StrReplace(value, "\b", "`b") + , value := StrReplace(value, "\f", "`f") + , value := StrReplace(value, "\n", "`n") + , value := StrReplace(value, "\r", "`r") + , value := StrReplace(value, "\t", "`t") + + pos := i ; update pos + + i := 0 + while (i := InStr(value, "\",, i+1)) { + if !(SubStr(value, i+1, 1) == "u") + this.ParseError("\", text, pos - StrLen(SubStr(value, i+1))) + + uffff := Abs("0x" . SubStr(value, i+2, 4)) + if (A_IsUnicode || uffff < 0x100) + value := SubStr(value, 1, i-1) . Chr(uffff) . SubStr(value, i+6) + } + + if (is_key) { + key := value, next := ":" + continue + } + + } else { + value := SubStr(text, pos, i := RegExMatch(text, "[\]\},\s]|$",, pos)-pos) + + static number := "number", null := "" + if value is %number% + value += 0 + else if (value == "true" || value == "false" || value == "null") + value := %value% + 0 + else + ; we can do more here to pinpoint the actual culprit + ; but that's just too much extra work. + this.ParseError(next, text, pos, i) + + pos += i-1 + } + + next := holder==root ? "" : is_array ? ",]" : ",}" + } ; If InStr("{[", ch) { ... } else + + is_array? key := ObjPush(holder, value) : holder[key] := value + + if (this.keys && this.keys.HasKey(holder)) + this.keys[holder].Push(key) + } + + } ; while ( ... ) + + return this.rev ? this.Walk(root, "") : root[""] + } + + ParseError(expect, text, pos, len:=1) + { + static q := Chr(34) + + line := StrSplit(SubStr(text, 1, pos), "`n", "`r").Length() + col := pos - InStr(text, "`n",, -(StrLen(text)-pos+1)) + msg := Format("{1}`n`nLine:`t{2}`nCol:`t{3}`nChar:`t{4}" + , (expect == "") ? "Extra data" + : (expect == "'") ? "Unterminated string starting at" + : (expect == "\") ? "Invalid \escape" + : (expect == ":") ? "Expecting ':' delimiter" + : (expect == q) ? "Expecting object key enclosed in double quotes" + : (expect == q . "}") ? "Expecting object key enclosed in double quotes or object closing '}'" + : (expect == ",}") ? "Expecting ',' delimiter or object closing '}'" + : (expect == ",]") ? "Expecting ',' delimiter or array closing ']'" + : InStr(expect, "]") ? "Expecting JSON value or array closing ']'" + : "Expecting JSON value(string, number, true, false, null, object or array)" + , line, col, pos) + + static offset := A_AhkVersion<"2" ? -3 : -4 + throw Exception(msg, offset, SubStr(text, pos, len)) + } + + Walk(holder, key) + { + value := holder[key] + if IsObject(value) + for i, k in this.keys[value] + value[k] := this.Walk.Call(this, value, k) ; bypass __Call + + return this.rev.Call(holder, key, value) + } + } + + /** + * Method: Dump + * Converts an AHK value into a JSON string + * Syntax: + * str := JSON.Dump( value [, replacer, space ] ) + * Parameter(s): + * str [retval] - JSON representation of an AHK value + * value [in] - any value(object, string, number) + * replacer [in, opt] - function object, similar to JavaScript's + * JSON.stringify() 'replacer' parameter + * space [in, opt] - similar to JavaScript's JSON.stringify() + * 'space' parameter + */ + class Dump extends JSON.Functor + { + Call(self, value, replacer:="", space:="") + { + this.rep := IsObject(replacer) ? replacer : "" + + this.gap := "" + if (space) { + static integer := "integer" + if space is %integer% + Loop, % ((n := Abs(space))>10 ? 10 : n) + this.gap .= " " + else + this.gap := SubStr(space, 1, 10) + + this.indent := "`n" + } + + return this.Str({"": value}, "") + } + + Str(holder, key) + { + value := holder[key] + + if (this.rep) + value := this.rep.Call(holder, key, value) + + if IsObject(value) { + if (this.gap) { + stepback := this.indent + this.indent .= this.gap + } + + is_array := value.IsArray + ; Array() is not overridden, rollback to old method of + ; identifying array-like objects + if (!is_array) { + for i in value + is_array := i == A_Index + until !is_array + } + + str := "" + if (is_array) { + Loop, % value.Length() { + if (this.gap) + str .= this.indent + + str .= value.HasKey(A_Index) ? this.Str(value, A_Index) . "," : "null," + } + } else { + colon := this.gap ? ": " : ":" + for k in value { + if (this.gap) + str .= this.indent + + str .= this.Quote(k) . colon . this.Str(value, k) . "," + } + } + + if (str != "") { + str := RTrim(str, ",") + if (this.gap) + str .= stepback + } + + if (this.gap) + this.indent := stepback + + return is_array ? "[" . str . "]" : "{" . str . "}" + } + ; is_number ? value : "value" + return ObjGetCapacity([value], 1)=="" ? value : this.Quote(value) + } + + Quote(string) + { + static q := Chr(34) + + if (string != "") { + string := StrReplace(string, "\", "\\") + ; , string := StrReplace(string, "/", "\/") ; optional in ECMAScript + , string := StrReplace(string, q, "\" . q) + , string := StrReplace(string, "`b", "\b") + , string := StrReplace(string, "`f", "\f") + , string := StrReplace(string, "`n", "\n") + , string := StrReplace(string, "`r", "\r") + , string := StrReplace(string, "`t", "\t") + + static rx_escapable := A_AhkVersion<"2" ? "O)[^\x20-\x7e]" : "[^\x20-\x7e]" + while RegExMatch(string, rx_escapable, m) + string := StrReplace(string, m.Value, Format("\u{1:04x}", Ord(m.Value))) + } + + return q . string . q + } + } + + class Functor + { + __Call(method, args*) + { + ; When casting to Call(), use a new instance of the "function object" + ; so as to avoid directly storing the properties(used across sub-methods) + ; into the "function object" itself. + if IsObject(method) + return (new this).Call(method, args*) + else if (method == "") + return (new this).Call(args*) + } + } +} \ No newline at end of file diff --git a/classes/Class_VisualStyle.ahk b/classes/Class_VisualStyle.ahk new file mode 100644 index 00000000..f8ac53a5 --- /dev/null +++ b/classes/Class_VisualStyle.ahk @@ -0,0 +1,751 @@ +; ==================================================================================================================================================; +; **************************************************************************************************************************************************; +; +; UX_THEME / VISUAL STYLE / AEROWIZARD +; +; Author: MIAMIGUY | CHESHIRECAT +; Developed: 04/27/2008 - 11/13/2019 +; Function: Create AeroWizard with AHK | Perform other Visual Style modifications to GUI and/or Controls +; Tested with: AHK 1.1.20.00+ (A32/U32) +; Tested On: Win Vista | Win 7 | Win 10 +; Org. Forum: https://autohotkey.com/board/topic/28522-help-with-extending-client-area-in-vista-gui/ +; +; Changes: +; 0.1.00.00/2019-11-13 - initial release +; **************************************************************************************************************************************************; +; +; THIS CODE AND/OR INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +; INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +; IN NO EVENT WILL THE AUTHOR BE HELD LIABLE FOR ANY DAMAGES ARISING FROM THE USE OR MISUSE OF THIS SOFTWARE. +; +; ==================================================================================================================================================; + +#Include + +Class VisualStyle { + + static DerivedObjects := {} + static DerivedObjectsCount := 0 + static UxThemeInit := 0 + + __New() { + + if ! UxThemeInit + if ! (UxThemeInit := UxTheme_Init()) + Return + + VisualStyle.DerivedObjectsCount += 1 + + if (VisualStyle.DerivedObjectsCount = 1) { + OnMessage(WM_LBUTTONDOWN, this.WM_LBUTTONDOWN := ObjBindMethod(VisualStyle, "WM_LBUTTONDOWN")) + OnMessage(WM_PAINT, this.WM_PAINT := ObjBindMethod(VisualStyle, "WM_PAINT")) + OnMessage(WM_CTLCOLORBTN, this.WM_CTLCOLORBTN := ObjBindMethod(VisualStyle, "WM_CTLCOLORBTN")) + OnMessage(WM_DWMCOMPOSITIONCHANGED, this.WM_DWMCOMPOSITIONCHANGED:= ObjBindMethod(VisualStyle, "WM_DWMCOMPOSITIONCHANGED")) + OnMessage(WM_SETCURSOR, this.WM_SETCURSOR := ObjBindMethod(VisualStyle, "WM_SETCURSOR")) + OnMessage(WM_NCACTIVATE, this.WM_NCACTIVATE := ObjBindMethod(VisualStyle, "WM_NCACTIVATE")) + OnMessage(WM_CTLCOLORDLG, this.WM_CTLCOLORDLG := ObjBindMethod(VisualStyle, "WM_CTLCOLORDLG")) + } + } + + __Delete() { + + VisualStyle.DerivedObjects.Delete(this.wProperty.hwnd) + VisualStyle.DerivedObjectsCount -= 1 + + Gui, % this.wProperty.hwnd ": Destroy" + + this.wProperty := "" + + if (VisualStyle.DerivedObjectsCount = 0) + { + OnMessage(WM_LBUTTONDOWN, this.WM_LBUTTONDOWN, 0) + OnMessage(WM_PAINT, this.WM_PAINT, 0) + OnMessage(WM_CTLCOLORBTN, this.WM_CTLCOLORBTN, 0) + OnMessage(WM_DWMCOMPOSITIONCHANGED,this.WM_DWMCOMPOSITIONCHANGED, 0) + OnMessage(WM_SETCURSOR, this.WM_SETCURSOR, 0) + OnMessage(WM_NCACTIVATE, this.WM_NCACTIVATE, 0) + OnMessage(WM_CTLCOLORDLG, this.WM_CTLCOLORDLG, 0) + } + } + + WinCreate(wCaption, BkBtnLabel, NxtBtnLabel, CancelBtnLabel, wIcon:="", X:="", Y:="", W:="", H:="", Style:= "Wiz") { + + W := (W!=""?W:570), H := (H!=""?H:408), X := (X!=""?X:"Center"), Y := (Y!=""?Y:"Center"), btnX := (W-(68*2)-17), btnY := (H-(25+8)) + + Gui, New, +HwndhWnd +Owner -MinimizeBox +Caption +0x40000 +MaxSize +MinSize, % wCaption + + this.wProperty := {hwnd: hwnd} + + Font := this.GetFontProperties("AEROWIZARD", AW_CONTENTAREA) + Gui, % hWnd ": Font", % "s" Font.Size, % Font.Name + VisualStyle.DerivedObjects[hwnd] := &this + + if (Style = "Wiz") + { + Gui, % hwnd ": Add" , Button, % " x0 y0 w30 h30 +Disabled hwndhNavBtn g" BkBtnLabel, + + UxTheme_SetWindowTheme(hNavBtn, "EXPLORER", "NAVIGATION") + + this.wProperty.NavBtn := hNavBtn + } + + Gui, % hwnd ": Add" , Button, % " x" btnX " y" btnY " w68 h23 hWndhCmdBtn1 g" NxtBtnLabel, Next + Gui, % hwnd ": Add" , Button, % " x+7 yp wp hp hWndhCmdBtn2 g" CancelBtnLabel, Cancel + + this.wProperty.CmdBtnNext := hCmdBtn1, this.wProperty.CmdBtnCancel := hCmdBtn2 + + Icon := StrSplit(wIcon,","," `t" , 2), wIcon:= Icon[1], nIcon := (Icon[2] ? Icon[2] : 1) + + (wIcon && wIcon != -1) ? (DllCall("user32\SendMessage", "Ptr", hWnd, "uInt", WM_SETICON, "uInt", 0, "Ptr", (hIcon := LoadPicture(wIcon, "Icon" nIcon " GDI+ h16", vType)))) + : (wIcon = -1) ? (hIcon := -1) : (hIcon := DllCall("user32\SendMessage", "Ptr", hWnd, "uInt", WM_GETICON, "uInt", 0)) + + this.wProperty.Icon := hIcon + + if (Style = "Wiz" || Style = "Win" && hIcon = -1 && wCaption = -1) + dwFlags := dwMask := (WTNCA_NOMIRRORHELP|WTNCA_NOSYSMENU|WTNCA_NODRAWICON|WTNCA_NODRAWCAPTION) + else if (Style = "Win" && hIcon = -1 && wCaption != -1) + dwFlags := dwMask := (WTNCA_NOMIRRORHELP|WTNCA_NOSYSMENU|WTNCA_NODRAWICON) + else if (Style = "Win" && hIcon != -1 && wCaption = -1) + dwFlags := dwMask := (WTNCA_NOMIRRORHELP|WTNCA_NOSYSMENU|WTNCA_NODRAWCAPTION) + else + dwFlags := dwMask := "" + + cbAttribute := VarSetCapacity(pvAttribute, 8, 0) + NumPut(dwFlags, pvAttribute, 0) + NumPut(dwMask, pvAttribute, 4) + UxTheme_SetWindowThemeAttribute(hWnd, WTA_NONCLIENT, &pvAttribute, cbAttribute) + + if (UxTheme_IsCompositionActive() && Style = "Wiz") + { + VarSetCapacity(pMarInset, 16, 0) + NumPut(0, NumPut(DWM_WINEXTENT, NumPut(0, NumPut(0, pMarInset)))) + DllCall("dwMapi\DwmExtendFrameIntoClientArea", "Ptr", hWnd, "Ptr", &pMarInset) + } + + Gui, % hwnd ": Show" , % " Hide x" X " y" Y " w" W " h" H, + + SysGet, CXSIZEFRAME, 32 + SysGet, CXFIXEDFRAME, 7 + SysGet, CXEDGE, 45 + + this.wProperty.Style := wStyle := (Style = "Wiz" ? DWM_WINEXTENT : 0) + + VarSetCapacity(cRect, 16,0) + DllCall("user32\GetClientRect","Ptr", hWnd, "Ptr", &cRect) + pW := (NumGet(cRect, 8)-NumGet(cRect, 0)), pH := (NumGet(cRect, 12)-NumGet(cRect, 4)) + + Gui, % hwnd ": Add" , Tab3, % " +Right hWndhPageCtrl x0 y" (wStyle) " w" W " h" H-(wStyle+45), 1 + + this.wProperty.hPage := hPageCtrl + + VarSetCapacity(pRect, 16, 0) + DllCall("SendMessage", "Ptr", hPageCtrl, "uInt", (0x1300+10), "Int", 1, "Ptr", &pRect) + ppW := (NumGet(pRect, 8)-NumGet(pRect, 0)), ppH := (NumGet(pRect, 12)-NumGet(pRect, 4)) + + GuiControl, Move, % hPageCtrl, % " w" (pW+(ppW+(CXFIXEDFRAME*2))-4) + + Return this.wProperty + } + + WinShow(aParams:="", wCaption="") { + + Gui, % this.wProperty.hwnd ": Show", % aParams, % wCaption + + if this.wProperty.hPage + Return DllCall("ShowWindow", "Ptr", this.wProperty.hPage, "Int", SW_HIDE) + + DllCall("SendMessage", "Ptr", this.wProperty.hwnd, "uInt", WM_SETREDRAW, "Int", False, "Int", 0) + DllCall("ShowWindow", "Ptr", this.wProperty.hPage, "Int", SW_SHOW) + + GuiControl, Choose, % this.wProperty.hPage, 1 + + DllCall("SendMessage", "Ptr", this.wProperty.hwnd, "uInt", WM_SETREDRAW, "Int", True, "Int", 0) + DllCall("ShowWindow", "Ptr", this.wProperty.hPage, "Int", SW_HIDE) + + WinSet, Redraw,, % "ahk_id " this.wProperty.hwnd + } + + PagingCreate(nPages, vPage:="PageCtrl") { + + Loop % nPages + P .= A_Index "|" + + if (nPages > 1) + { + GuiControl,, % this.wProperty.hPage, % "|" SubStr(P, 1, -1) + GuiControl, % "+v" vPage, % this.wProperty.hPage + } + } + + PageAdd(nPage) { + + Gui, % this.wProperty.hwnd ": Tab", % nPage + } + + PageChoose(nPage) { + + Critical + + DllCall("SendMessage", "Ptr", this.wProperty.hwnd, "uInt", WM_SETREDRAW, "Int", False, "Int", 0) + DllCall("ShowWindow", "Ptr", this.wProperty.hPage, "Int", SW_SHOW) + + GuiControl, Choose, % this.wProperty.hPage, % "|" nPage + + DllCall("SendMessage", "Ptr", this.wProperty.hwnd, "uInt", WM_SETREDRAW, "Int", True, "Int", 0) + DllCall("ShowWindow", "Ptr", this.wProperty.hPage, "Int", SW_HIDE) + } + + GetFontProperties(pszClassList, iPartId, iStateId:=0) { + + if UxTheme_IsThemeActive() + { + hTheme := UxTheme_OpenThemeData(this.wProperty.hwnd, pszClassList) + DC := DllCall("user32\GetDC", "Ptr", this.wProperty.hwnd) + + UxTheme_GetThemeColor(hTheme, iPartId, iStateId, TMT_TEXTCOLOR, ColorRef) + + VarSetCapacity(LOGFONT, (szLOGFONT := 60 * (A_IsUnicode ? 2 : 1))) + UxTheme_GetThemeFont(hTheme, DC, iPartId, iStateId, TMT_FONT, &LOGFONT) + + UxTheme_CloseThemeData(hTheme) + DllCall("user32.dll\ReleaseDC", Ptr, this.wProperty.hwnd, Ptr, DC) + + Return {Color: Format("{1:#x}", ((ColorRef >> 16) & 0xFF) | (ColorRef & 0x00FF00) | ((ColorRef & 0xFF) << 16)) + , Size: Round((-NumGet(LOGFONT, 0, "Int") * 72) / A_ScreenDPI) + , Name: DllCall("kernel32.dll\MulDiv", "Int", &LOGFONT+28, "Int", 1, "Int", 1, "wStr")} + } + } + + GetWinColor(iColorID) { + + if UxTheme_IsThemeActive() + { + hTheme := UxTheme_OpenThemeData(this.wProperty.hwnd, "WINDOW") + ColorRef := UxTheme_GetThemeSysColor(hTheme, iColorID) + UxTheme_CloseThemeData(hTheme) + Return Format("{1:#x}", ((ColorRef >> 16) & 0xFF) | (ColorRef & 0x00FF00) | ((ColorRef & 0xFF) << 16)) + } + } + + GetTextExtent(Text, pszClassList, iPartId, iStateId, dwTextFlags) { + + pszClassList ? pszClassList : pszClassList := "TEXTSTYLE" + iPartId ? iPartId : iPartId := TEXT_BODYTEXT + iStateId ? iStateId : iStateId := 0 + dwTextFlags ? dwTextFlags : dwTextFlags := DT_LEFT + + if UxTheme_IsThemeActive() + { + hTheme := UxTheme_OpenThemeData(this.wProperty.hwnd, pszClassList) + + hDC := DllCall("user32\GetDC", "Ptr", this.wProperty.hwnd) + + VarSetCapacity(cRect, 16, 0) + DllCall("user32\GetClientRect", "Ptr", this.wProperty.hwnd, "Ptr", &cRect) + + VarSetCapacity(pExtentRect, 16, 0) + HRESULTS := UxTheme_GetThemeTextExtent(hTheme, hDC, iPartId, iStateId, Text, (StrLen(Text) + 1), dwTextFlags, &cRect, &pExtentRect) + + DllCall("user32.dll\ReleaseDC", Ptr, this.wProperty.hwnd, Ptr, hDC) + UxTheme_CloseThemeData(hTheme) + + if (HRESULTS = 0) + Return {W: (NumGet(pExtentRect, 8)-NumGet(pExtentRect, 0)-4), H: (NumGet(pExtentRect, 12)-NumGet(pExtentRect, 4)+2)} + } + } + + DrawBackground(hDC, X, Y, W, H, ThemeClass:="AEROWIZARD", iPart:="AW_CONTENTAREA", iState:="0") { + + VarSetCapacity(cRect, 16, 0) + NumPut(X, cRect, 0, "Int") + NumPut(Y, cRect, 4, "Int") + NumPut(W, cRect, 8, "Int") + NumPut(Y+H, cRect, 12, "Int") + + if UxTheme_IsThemeActive() + { + if (UxTheme_BufferedPaintInit() = S_OK) + { + if hPaintBuffer := UxTheme_BeginBufferedPaint(hDC, &cRect, "BPBF_COMPATIBLEBITMAP", "", hBufferDC) + { + if hTheme := UxTheme_OpenThemeData(this.wProperty.hwnd, ThemeClass) + { + HRESULT := UxTheme_DrawThemeBackground(hTheme, hBufferDC, iPart, iState, &cRect, 0) + + UxTheme_CloseThemeData(hTheme) + } + UxTheme_EndBufferedPaint(hPaintBuffer, 1) + } + UxTheme_BufferedPaintUnInit() + } + Return HRESULT + } + } + + CommandLink(gLabel, X:="", Y:="", W:="", H:="", wCaption:="", Note:="", Default:=0) { + + Gui, % this.wProperty.hwnd ": Add", Custom, % "ClassButton +" (Default ? BS_DEFCOMMANDLINK : BS_COMMANDLINK) " hwndhBtn g" gLabel " x" X " y" Y " w" W " h" H, % wCaption + + Note ? this.CommandLinkSetNote(hBtn, Note) : "" + + Return hBtn + } + + CommandLinkSetNote(hWnd, sNote="") { + + Return DllCall("SendMessage", "Ptr", hWnd, "uInt", BCM_SETNOTE, "Int", 0, "wStr", sNote) + } + + CommandLinkSetText(hWnd, sText="") { + + Return DllCall("SendMessage", "Ptr", hWnd, "uInt", WM_SETTEXT, "Int", 0, "Str", sText) + } + + CommandLinkGetNoteLength(hWnd) { + + Return DllCall("SendMessage", "Ptr", hWnd, "uInt", BCM_GETNOTELENGTH, "Int", 0, "Int", 0) + } + + CommandLinkGetNote(hWnd) { + + nLen := this.CommandLinkGetNoteLength(hWnd) + + VarSetCapacity(sText, (nLen * (A_IsUnicode ? 1 : 2)), 0) + NumPut(nLen, sText, 0, "uInt") + + DllCall("SendMessage", "Ptr", hWnd, "uInt", BCM_GETNOTE, "Ptr", &nLen, "Ptr", &sText) + + Return % StrGet(&sText, nLen, "UTF-16") + } + + ButtonSetImage(hWnd, pIcon="", nIcon="", szIcon="") { + + hIcon := LoadPicture(pIcon, "Icon" nIcon "GDI+ h" szIcon, vType) + + Return DllCall("SendMessage", "Ptr", hWnd, "uInt", BM_SETIMAGE, "Int", IMAGE_ICON, "Ptr", hIcon) + + } + + ButtonSetElevationRequiredState(hWnd, fRequired:=1) { + + Return DllCall("SendMessage", "Ptr", hWnd, "uInt", BCM_SETSHIELD, "Int", 0, "Int", fRequired) + + } + + ProgBarSetState(hWnd, State, sMarquee:=50) { + + Style := {Normal: PBST_NORMAL, Error: PBST_ERROR, Pause: PBST_PAUSE, Marquee: PBS_MARQUEE, SetMarquee: PBM_SETMARQUEE, Smooth: PBS_SMOOTH, SetState: PBM_SETSTATE} + + if (State = "Marquee") + { + WinSet, Style, % "+" Style[(State)], % "ahk_id " hWnd + Return DllCall("SendMessage", "Ptr", hWnd, "uInt", Style.SetMarquee, "Int", sMarquee, "Int", sMarquee) + } + + Return DllCall("SendMessage", "Ptr", hWnd, "uInt", Style.SetState, "uInt", Style[(State)], "uInt", 0) + } + + TVSetExtendedStyle(hWnd, xStyle) { + + SendMessage, % TVM_SETEXTENDEDSTYLE, % xStyle, % xStyle, , % "ahk_id " hWnd + + Return ErrorLevel + } + + TVSetIndent(hwnd, Indent) { + + SendMessage, % TVM_SETINDENT, % Indent, 0, , % "ahk_id " hWnd + + Return ErrorLevel + } + + TVSetTextColor(hWnd, Color) { + + SendMessage, % TVM_SETTEXTCOLOR, 0, % Color, , % "ahk_id " hWnd + + Return ErrorLevel + } + + TVSetBKColor(hWnd, Color) { + + SendMessage, % TVM_SETBKCOLOR, 0, % Color, , % "ahk_id " hWnd + + Return ErrorLevel + } + + SetCueBannerText(hWnd, lpcwText, fDrawFocused:=0) { + + Return DllCall("SendMessage", "Ptr", hWnd, "uInt", EM_SETCUEBANNER, "Int", fDrawFocused, "wStr", lpcwText) + } + + ContentLink(lAddress, wCaption:="", X:=0, Y:=0, sStyle:="HELPLINK", bgvsClass:="", bgiPart:="") { + + Static init:=0 + + if ! lAddress + Return + + if (SubStr(lAddress, 1, 1) = "g") + { + if ! Islabel(Label := SubStr(lAddress, 2, (StrLen(lAddress) - 1))) + Return + else + lAddress := Label + } + + if ! init + { + vPIs64 := (A_PtrSize=8) + vSize := vPIs64?80:48 + + VarSetCapacity(WC, vSize, 0) + NumPut(vSize, WC, 0, "uInt") + NumPut((CS_VREDRAW|CS_HREDRAW|CS_PARENTDC), WC, 4, "uInt") + NumPut(RegisterCallback("ContentLink_WndProc", "F", 4) , WC, 8, "Ptr") + NumPut(DllCall("LoadCursor", "Ptr", 0, "Ptr", IDC_HAND, "Ptr"), WC, vPIs64?40:28, "Ptr") + NumPut(&(cName:="ContentLink"), WC, vPIs64?64:40, "Ptr") + + if ! (init := DllCall("user32\RegisterClassEx", "Ptr", &WC, "uShort")) + Return + } + + ObjRelease(pcLinkInfo) + + cLinkInfo := {Caption: wCaption ? wCaption : lAddress + , Address: lAddress + , Style: clStyle[(sStyle)]=7||clStyle[(sStyle)]=8||clStyle[(sStyle)]=10||clStyle[(sStyle)]=11 ? clStyle[(sStyle)] : CPANEL_HELPLINK + , bgClass: bgvsClass ? bgvsClass : "CONTROLPANEL" + , bgPart: bgiPart ? bgiPart : CPANEL_CONTENTPANE} + + ObjAddRef(pcLinkInfo := &cLinkInfo) + + ext := this.GetTextExtent(cLinkInfo.Caption, "CONTROLPANEL", cLinkInfo.Style, CPCL_HOT, DT_CALCRECT) + + Gui, % this.wProperty.hwnd ": Add", Custom, % "ClassContentLink W" ext.W " H" ext.H " X" X " Y" Y " hWndhCntLnk", % pcLinkInfo + + Return % hCntLnk + } + + GetErrorString(eMsg="") { + + Static FORMAT_MESSAGE_FROM_SYSTEM := 0x1000 + , LANG_SYSTEM_DEFAULT := 0x10000 + , LANG_USER_DEFAULT := 0x20000 + + eMsg := "" ? eMsg := A_LastError : eMsg + + sizeOf := VarSetCapacity(eMsgStr, 1024, 0) + + DllCall("FormatMessage" + , "uInt", FORMAT_MESSAGE_FROM_SYSTEM + , "uInt", "" + , "uInt", eMsg + , "uInt", LANG_SYSTEM_DEFAULT|LANG_USER_DEFAULT + , "Str" , eMsgStr + , "uInt", sizeOf + , "Str" , "") + Return % StrReplace(eMsgStr, "`r`n", A_Space) + } + + WM_SETCURSOR(wParam, lParam) + { + Static hArrow := DllCall("LoadCursor", "Ptr", 0, "uInt", 32512, "uPtr") + + HitTest := lParam & 0xFFFF + + if (HitTest > 9) && (HitTest < 19) + { + DllCall("SetCursor", "Ptr", hArrow) + + Return True + } + } + + WM_LBUTTONDOWN(wParam, lParam) + { + Static HTCAPTION := 2 + + if (VisualStyle.DerivedObjects.HasKey(A_Gui)) + this := Object(VisualStyle.DerivedObjects[A_Gui]) + + if (A_GuiControl || this.wProperty.Style != DWM_WINEXTENT) + Return + + MouseGetPos, , , , Ctrl + WinGetPos,,, W, H, % "ahk_id " this.wProperty.hwnd + X := (lParam & 0xFFFF), Y := (lParam & 0xFFFF0000) >> 16 + + if ((X >= 0) && (X <= W) && (Y >= 0) && (Y <= (DWM_WINEXTENT - 2)) && (Ctrl = "")) + DllCall("user32.dll\PostMessage", "Ptr", this.wProperty.hwnd, "uInt", WM_NCLBUTTONDOWN, "Int", HTCAPTION, "Int", 0) + } + + WM_NCACTIVATE(wParam, lParam) + { + if (VisualStyle.DerivedObjects.HasKey(A_Gui)) + this := Object(VisualStyle.DerivedObjects[A_Gui]) + + if ! UxTheme_IsCompositionActive() + DllCall("RedrawWindow", "Ptr", this.wProperty.hwnd, "Ptr", "", "Ptr", lParam, "uInt", (RDW_INTERNALPAINT|RDW_INVALIDATE|RDW_UPDATENOW|RDW_ALLCHILDREN)) + } + + WM_CTLCOLORBTN(wParam, lParam) + { + if (VisualStyle.DerivedObjects.HasKey(A_Gui)) + this := Object(VisualStyle.DerivedObjects[A_Gui]) + + if UxTheme_IsThemeActive() + { + if hTheme := UxTheme_OpenThemeData(this.wProperty.hwnd, "WINDOW") + { + hBrush := UxTheme_GetThemeSysColorBrush(hTheme, ((lParam = this.wProperty.NavBtn) ? (UxTheme_IsCompositionActive() ? COLOR_BACKGROUND + : (WinActive("ahk_id" this.wProperty.hwnd) ? COLOR_GRADIENTACTIVECAPTION : COLOR_GRADIENTINACTIVECAPTION)) + : (lParam = this.wProperty.CmdBtnNext || lParam = this.wProperty.CmdBtnCancel) ? COLOR_BTNFACE + : ((WinActive("ahk_id" this.wProperty.hwnd) ? COLOR_WINDOW : "")))) + + UxTheme_CloseThemeData(hTheme) + } + } + Return hBrush + } + + WM_DWMCOMPOSITIONCHANGED(wParam, lParam) + { + Reload + } + + WM_CTLCOLORDLG(wParam, lParam) + { + Static brushArray := {} + + if (brushArray.HasKey(lParam)) + Return brushArray[(lParam)] + else + { + if (VisualStyle.DerivedObjects.HasKey(A_Gui)) + this := Object(VisualStyle.DerivedObjects[A_Gui]) + + if UxTheme_IsThemeActive() + { + hdcPaint := DllCall("CreateCompatibleDC", "Ptr", wParam) + + VarSetCapacity(cRect, 16, 0) + DllCall("user32\GetClientRect", "Ptr", this.wProperty.hwnd, "Ptr", &cRect) + W := (NumGet(cRect, 8)-NumGet(cRect, 0)), H := (NumGet(cRect, 12)-NumGet(cRect, 4)) + + VarSetCapacity(dib, 40, 0) + NumPut(40, dib, 0) + NumPut(W, dib, 4) + NumPut(-H, dib, 8) + NumPut(1, dib, 12, "UShort") + NumPut(32, dib, 14, "UShort") + NumPut(0, dib, 16) + + hBM := DllCall("CreateDIBSection", "Ptr", wParam, "uInt" , &dib, "uInt", 0, "uIntP", "", "uInt" , 0, "uInt" , 0) + + hbmOld := DllCall("SelectObject", "Ptr", hdcPaint, "Ptr", hBM) + + if ! UxTheme_IsCompositionActive() + this.DrawBackground(hdcPaint, 0, 0, W, this.wProperty.Style, "AEROWIZARD", AW_TITLEBAR, (WinActive("ahk_id" this.wProperty.hwnd) ? AW_S_TITLEBAR_ACTIVE : AW_S_TITLEBAR_INACTIVE)) + else + { + VarSetCapacity(cRect, 16, 0) + NumPut(W, cRect, 8, "Int") + NumPut(this.wProperty.Style, cRect, 12, "Int") + + if UxTheme_IsThemeActive() + { + if hTheme := UxTheme_OpenThemeData(this.wProperty.hwnd, "WINDOW") + { + hBrush := UxTheme_GetThemeSysColorBrush(hTheme, COLOR_BACKGROUND) + + UxTheme_CloseThemeData(hTheme) + } + } + + DllCall("FillRect", "Ptr", hdcPaint, "Ptr", &cRect, "Ptr", hBrush) + DllCall("DeleteObject", "Ptr", hBrush) + } + + this.DrawBackground(hdcPaint, -2 + , this.wProperty.Style-(UxTheme_IsCompositionActive() ? 0 : 3) + , W+(UxTheme_IsCompositionActive() ? 0 : 2) + , H-this.wProperty.Style-(UxTheme_IsCompositionActive() ? 45 : 40) + , "EDIT", (UxTheme_IsCompositionActive() ? ETS_SELECTED : EBS_NORMAL)) + this.DrawBackground(hdcPaint, 0, (H-45), W, 45, "AEROWIZARD", AW_COMMANDAREA) + + DllCall("BitBlt", "Ptr", wParam, "Int", 0, "Int", 0, "Int", W, "Int", this.wProperty.Style, "Ptr", hdcPaint, "Int", 0, "Int", 0, "Int", SRCCOPY) + + DllCall("SelectObject", "Ptr", hdcPaint, "Ptr", hbmOld) + DllCall("DeleteDC", "Ptr", hdcPaint) + + brushArray[(lParam)] := DllCall("CreatePatternBrush", "uInt", hBM) + DllCall("DeleteObject", "Ptr" hBM) + } + } + Return brushArray[(lParam)] + } + + WM_PAINT(wParam, lParam, uMsg, hWnd) + { + if (VisualStyle.DerivedObjects.HasKey(A_Gui)) + this := Object(VisualStyle.DerivedObjects[A_Gui]) + + if (hWnd != this.wProperty.hwnd || this.wProperty.Style != DWM_WINEXTENT) + Return DllCall("user32\DefWindowProc", "uPtr", wParam, "uInt", lParam, "Ptr", uMsg, "Ptr", this.wProperty.hwnd, "Ptr") + + if UxTheme_IsThemeActive() + { + VarSetCapacity(lpPaint, 64, 0) + if ! hDC := DllCall("BeginPaint", "Ptr", this.wProperty.hwnd, "Ptr", &lpPaint) + Return 0 + + WinGetPos,,, W, H, % "ahk_id " this.wProperty.hwnd + ControlGetPos, iX,iY,iW,iH,, % "ahk_id " this.wProperty.NavBtn + + VarSetCapacity(cRect, 16) + NumPut(iW, cRect, 0, "Int") + NumPut(W, cRect, 8, "Int") + NumPut(iH, cRect, 12, "Int") + + if (UxTheme_BufferedPaintInit() = S_OK) + { + sizeof := VarSetCapacity(bpPaintParams, 16, 0) + NumPut(sizeof, bpPaintParams, 0, "uInt") + NumPut((BPPF_NOCLIP|BPPF_ERASE), bpPaintParams, 4, "uInt") + + if hPaintBuffer := UxTheme_BeginBufferedPaint(hDC, &cRect, BPBF_TOPDOWNDIB, &bpPaintParams, hBufferDC) + { + if hTheme := UxTheme_OpenThemeData(this.wProperty.hwnd, "AEROWIZARD") + { + if ! UxTheme_IsCompositionActive() + this.DrawBackground(hBufferDC, 0, 0, W, DWM_WINEXTENT, "AEROWIZARD", AW_TITLEBAR, (WinActive("ahk_id" this.wProperty.hwnd) ? AW_S_TITLEBAR_ACTIVE : AW_S_TITLEBAR_INACTIVE)) + + if (this.wProperty.Icon != -1) + { + hIcon := DllCall("user32\SendMessage", "Ptr", this.wProperty.hwnd, "uInt", WM_GETICON, "uInt", 0) + iSize := 16 + DllCall("DrawIconEx", "Ptr", hBufferDC, "Int" , (iW+7), "Int" , 7, "Ptr", hIcon, "Int", iSize, "Int", iSize, "Int", 0, "Int", 0, "Int", 3) + } + else + iSize := -6 + + WinGetTitle, wCaption, % "ahk_id " this.wProperty.hwnd + pExt := this.GetTextExtent(wCaption, "WINDOW", WP_CAPTION, CS_ACTIVE, DT_CALCRECT) + + sizeof := VarSetCapacity(dttOpts, 64, 0) + NumPut(sizeof, dttOpts, 0, "uInt") + NumPut((DTT_GLOWSIZE|DTT_COMPOSITED), dttOpts, 4) + NumPut(10, dttOpts, 52, "Int") ;This Changes Glowing Effect of text + + VarSetCapacity(rcPaint, 64, 0) + DllCall("RtlMoveMemory", "Ptr", &rcPaint, "Ptr", cRect, "Int", 16) + NumPut((pExt.H+6), NumPut((pExt.W+50), NumPut(8, NumPut(((iW+7)+(iSize+7)), rcPaint)))) + + UxTheme_DrawThemeTextEx(hTheme, hBufferDC, AW_TITLEBAR, 0, wCaption, StrLen(wCaption), DT_LEFT, &rcPaint, (UxTheme_IsCompositionActive() ? &dttOpts : "")) + + UxTheme_CloseThemeData(hTheme) + } + UxTheme_EndBufferedPaint(hPaintBuffer, 1) + } + UxTheme_BufferedPaintUnInit() + } + DllCall("EndPaint", "Ptr", this.wProperty.hwnd, "Ptr", &lpPaint) + } + Return DllCall("user32\DefWindowProc", "uPtr", wParam, "uInt", lParam, "Ptr", uMsg, "Ptr", this.wProperty.hwnd, "Ptr") + } +} + +ContentLink_WndProc(hWnd, uMsg, wParam, lParam) { + + Static CONTENTLINKSTATE + + if (uMsg = WM_MOUSEFIRST) + { + VarSetCapacity(ET, 16) + NumPut(16, ET, 0) + NumPut(TME_HOVER|TME_LEAVE, ET, 4) + NumPut(hWnd, ET, 8) + NumPut(1, ET, 12) + DllCall("TrackMouseEvent", "uInt", &ET) + } + + if (uMsg = WM_MOUSEHOVER) + { + CONTENTLINKSTATE := CPCL_HOT + WinSet, Redraw,, % "ahk_id " hWnd + } + + if (uMsg = WM_MOUSELEAVE) + { + CONTENTLINKSTATE := CPCL_NORMAL + WinSet, Redraw,, % "ahk_id " hWnd + } + + if (uMsg = WM_LBUTTONUP) + { + WinGetTitle, pcLinkInfo, % "ahk_id " hWnd + cLinkInfo := Object(pcLinkInfo) + if IsObject(cLinkInfo) + lAddress := cLinkInfo.Address + + CONTENTLINKSTATE := CPCL_PRESSED + WinSet, Redraw,, % "ahk_id " hWnd + + if IsLabel(lAddress) + Gosub % lAddress + else + Run % lAddress + } + + if (uMsg = WM_PAINT) + { + if UxTheme_IsThemeActive() + { + VarSetCapacity(lpPaint, 64, 0) + if hDC := DllCall("BeginPaint", "Ptr", hWnd, "Ptr", &lpPaint) + { + WinGetTitle, pcLinkInfo, % "ahk_id " hWnd + cLinkInfo := Object(pcLinkInfo) + if IsObject(cLinkInfo) + { + wCaption := cLinkInfo.Caption + CONTENTLINKSTYLE := cLinkInfo.Style + BGCLASS := cLinkInfo.bgClass + BGPART := cLinkInfo.bgPart + } + + VarSetCapacity(cRect, 16) + DllCall("user32\GetClientRect", "Ptr", hWnd, "uInt", &cRect) + + if (UxTheme_BufferedPaintInit() = S_OK) + { + if hPaintBuffer := UxTheme_BeginBufferedPaint(hDC, &cRect, BPBF_COMPATIBLEBITMAP, "", hBufferDC) + { + if hTheme := UxTheme_OpenThemeData(hWnd, BGCLASS) + { + UxTheme_GetThemeBackgroundExtent(hTheme, hBufferDC, BGPART, "", &cRect, &cRect) + + ;~ UxTheme_DrawThemeParentBackground(hWnd, hBufferDC, &cRect) + + UxTheme_DrawThemeBackground(hTheme, hBufferDC, BGPART, "", &cRect, 0) + + if (BGCLASS != "CONTROLPANEL") + { + UxTheme_CloseThemeData(hTheme) + hTheme := UxTheme_OpenThemeData(hWnd, "CONTROLPANEL") + } + + UxTheme_DrawThemeText(hTheme, hBufferDC, CONTENTLINKSTYLE, CONTENTLINKSTATE, wCaption, StrLen(wCaption), (DT_CENTER|DT_VCENTER|DT_PATH_ELLIPSIS|DT_WORDBREAK|DT_END_ELLIPSIS), 0, &cRect) + + UxTheme_CloseThemeData(hTheme) + } + UxTheme_EndBufferedPaint(hPaintBuffer, 1) + } + UxTheme_BufferedPaintUnInit() + } + DllCall("EndPaint", "Ptr", hWnd, "Ptr", &lpPaint) + } + } + } + Return DllCall("user32\DefWindowProc", "Ptr", hWnd, "uInt", uMsg, "uPtr", wParam, "Ptr", lParam, "Ptr") +} \ No newline at end of file diff --git a/classes/_docs/class_Chrome-README.md b/classes/_docs/class_Chrome-README.md new file mode 100644 index 00000000..aa4d4da8 --- /dev/null +++ b/classes/_docs/class_Chrome-README.md @@ -0,0 +1,75 @@ +# Chrome.ahk + +Automate Google Chrome using native AutoHotkey. + + +## How it works + +Chrome offers a WebSocket based API they call the **Chrome DevTools Protocol**. This API is what allows web development tools to build integrations, and tools such as Selenium to perform their automation. The protocol's documentation describes a plethora of exciting endpoints accessible using this library, and can be found at the link below. + +https://chromedevtools.github.io/devtools-protocol/ + + +## Advantages + +* **No external dependencies such as Selenium are required** +* Chrome can be automated even when running in headless mode + * Launching in headless mode is not currently supported by this library +* Chrome consistently benchmarks better than Internet Explorer +* Chrome offers extensions which provide unique opportunities for interaction + * Automate your Chromecast + * Connect to remote servers with FoxyProxy and update web based configs + * Manage your password vault with LastPass +* Many features are available that would be difficult to replicate in Internet Explorer + * `Page.printToPDF` + * `Page.captureScreenshot` + * Geolocation spoofing + + +## Limitations + +* Chrome **must** be started in debug mode + * If chrome is already running out of debug mode, it must either be **closed and reopened** or **launched again under a new profile** that isn't already running + * **You cannot attach to an existing non-debug session** +* Less flexible than Internet Explorer's COM interface + * Cannot pass function references for callbacks + + +## Using this Library + +To start using this library you need to create an instance of the class `Chrome`. `Chrome`'s constructor accepts four optional parameters: + +1. **ProfilePath** - This is the path, relative to the working directory, that your Chrome user profile is located. If an empty folder is given, chrome will generate a new user profile in it. **When this parameter is omitted, Chrome will be launched under the default user profile.** However, if chrome is already running under that user profile out of debug mode, this will fail. Because of this, **it is recommended to always launch Chrome under an alternate user profile.** +2. **URLs** - The page or array of pages that chrome should initially be opened to. Pass an empty string to open Chrome's homepage. **When this parameter is omitted, Chrome will be opened to `about:blank`.** +3. **ChromePath** - The path to find the Chrome executable file. **When this parameter is omitted, Chrome will be launched from the path in its start menu entry.** +4. **DebugPort** - The network port to communicate with Chrome over. **When this parameter is omitted, port `9222` will be used** as specified in the Chrome DevTools Protocol documentation. + +Once an instance of the class `Chrome` has been created, Google Chrome will be launched. To connect to the newly opened page call `PageInstance := ChromeInstance.GetPage()`. Afterward, use `PageInstance.Call()` to call protocol endpoints, and `PageInstance.Evaluate()` to execute JavaScript. + +```AutoHotkey +#Include Chrome.ahk + +; Create an instance of the Chrome class using +; the folder ChromeProfile to store the user profile +FileCreateDir, ChromeProfile +ChromeInst := new Chrome("ChromeProfile") + +; Connect to the newly opened tab and navigate to another website +; Note: If your first action is to navigate away, it may be just as +; effective to provide the target URL when instantiating the Chrome class +PageInst := ChromeInst.GetPage() +PageInst.Call("Page.navigate", {"url": "https://autohotkey.com/"}) +PageInst.WaitForLoad() + +; Execute some JavaScript +PageInst.Evaluate("alert('Hello World!');") + +; Close the browser (note: this closes *all* pages/tabs) +PageInst.Call("Browser.close") +PageInst.Disconnect() + +ExitApp +return +``` + +**You can find more sample code showing how to use this library in the Examples folder.** \ No newline at end of file diff --git a/classes/_examples/Class_Dock-Example.ahk b/classes/_examples/Class_Dock-Example.ahk index 09d8aef0..3ae93ecb 100644 --- a/classes/_examples/Class_Dock-Example.ahk +++ b/classes/_examples/Class_Dock-Example.ahk @@ -1,8 +1,10 @@ #NoEnv #SingleInstance, force +#include %A_ScriptDir%\..\class_dock.ahk + Gui, +hwndGuihwnd -Gui, Font, s13 +Gui, Font, s13 Gui, Add, Button, gBtn, Dock to Top Gui, Add, Button, gBtn, Dock to Bottom Gui, Add, Button, gBtn, Dock to Right @@ -12,7 +14,7 @@ Gui, Add, Button, gAdd, Add dock to Top Gui, Add, Button, gAdd, Add dock to Bottom Gui, Add, Button, gAdd, Add dock to Right Gui, Add, Button, gAdd, Add dock to Left -Gui, Show, xCenter yCenter w300, class Dock Example +Gui, Show, xCenter yCenter w300, class Dock Example ParentID:= WinExist("Editor") ;exDock := new Dock(Guihwnd, Dock.HelperFunc.Run("notepad.exe")) diff --git a/classes/_examples/Class_NetworkManagement_Sample.ahk b/classes/_examples/Class_NetworkManagement_Sample.ahk index 5bfa329b..a9fceb93 100644 --- a/classes/_examples/Class_NetworkManagement_Sample.ahk +++ b/classes/_examples/Class_NetworkManagement_Sample.ahk @@ -7,7 +7,7 @@ SetBatchLines -1 ; SCRIPT ======================================================================================================================== -/* + NetUserEnum := NetworkManagement.NetUserEnum("192.168.0.1") for k, v in NetUserEnum MsgBox % "Name:`t`t" v.Name "`n" @@ -18,27 +18,27 @@ for k, v in NetUserEnum . "Comment:`t" v.Comment "`n" . "Flags:`t`t" v.Flags "`n" . "ScriptPath:`t" v.ScriptPath -*/ + ; ======================================================================================= -/* + NetUserGetGroups := NetworkManagement.NetUserGetGroups(A_UserName, "192.168.0.1") for k, v in NetUserGetGroups MsgBox % v -*/ + ; ======================================================================================= -/* + NetUserGetLocalGroups := NetworkManagement.NetUserGetLocalGroups(A_UserName, "EXAMPLE\", "192.168.0.1") for k, v in NetUserGetLocalGroups MsgBox % v -*/ + ; ======================================================================================= -/* + NetWkstaGetInfo := NetworkManagement.NetWkstaGetInfo("192.168.0.1") MsgBox % "Platform_ID:`t" NetWkstaGetInfo.Platform_ID "`n" . "ComputerName:`t" NetWkstaGetInfo.ComputerName "`n" @@ -47,39 +47,39 @@ MsgBox % "Platform_ID:`t" NetWkstaGetInfo.Platform_ID "`n" . "VerMinor:`t`t" NetWkstaGetInfo.VerMinor "`n" . "LanRoot:`t`t" NetWkstaGetInfo.LanRoot "`n" . "LoggedOnUser:`t" NetWkstaGetInfo.LoggedOnUser -*/ + ; ======================================================================================= -/* + NetWkstaTransportEnum := NetworkManagement.NetWkstaTransportEnum("192.168.0.1") MsgBox % "QualityOfService:`t" NetWkstaTransportEnum.QualityOfService "`n" . "NumberOfVcs:`t" NetWkstaTransportEnum.NumberOfVcs "`n" . "TransportName:`t`t" NetWkstaTransportEnum.TransportName "`n" . "TransportAddress:`t`t" NetWkstaTransportEnum.TransportAddress "`n" . "WanIsh:`t`t" NetWkstaTransportEnum.WanIsh -*/ + ; ======================================================================================= -/* + NetWkstaUserEnum := NetworkManagement.NetWkstaUserEnum("192.168.0.1") for k, v in NetWkstaUserEnum MsgBox % "UserName:`t" v.UserName "`n" . "LogonDomain:`t" v.LogonDomain "`n" . "OtherDomains:`t" v.OtherDomains "`n" . "LogonServer:`t" v.LogonServer -*/ + ; ======================================================================================= -/* + NetWkstaUserGetInfo := NetworkManagement.NetWkstaUserGetInfo() MsgBox % "UserName:`t" NetWkstaUserGetInfo.UserName "`n" . "LogonDomain:`t" NetWkstaUserGetInfo.LogonDomain "`n" . "OtherDomains:`t" NetWkstaUserGetInfo.OtherDomains "`n" . "LogonServer:`t" NetWkstaUserGetInfo.LogonServer -*/ + ; EXIT ========================================================================================================================== @@ -89,7 +89,7 @@ ExitApp ; INCLUDES ====================================================================================================================== -#Include Class_NetworkManagement.ahk +#include %A_ScriptDir%\..\class_NetworkManagement.ahk ; =============================================================================================================================== \ No newline at end of file diff --git a/classes/_examples/MyFile.png b/classes/_examples/MyFile.png new file mode 100644 index 00000000..cc3a5897 Binary files /dev/null and b/classes/_examples/MyFile.png differ diff --git a/classes/_examples/WordList English Gutenberg.txt b/classes/_examples/WordList English Gutenberg.txt new file mode 100644 index 00000000..0b99be6b --- /dev/null +++ b/classes/_examples/WordList English Gutenberg.txt @@ -0,0 +1,2 @@ + +404: Not Found diff --git a/classes/_examples/cGitHub_Class/lib/JSON.ahk b/classes/_examples/cGitHub_Class/lib/JSON.ahk index d7769061..c5c27ed7 100644 --- a/classes/_examples/cGitHub_Class/lib/JSON.ahk +++ b/classes/_examples/cGitHub_Class/lib/JSON.ahk @@ -1,6 +1,6 @@ -; Credits: rbrtryn / http://www.autohotkey.com/board/topic/95262-obj-json-obj/ +; Credits: rbrtryn / http://www.autohotkey.com/board/topic/95262-obj-json-obj/ /**************************************************************************************** - Function: BuildJson(obj) + Function: BuildJson(obj) Builds a JSON string from an AutoHotkey object Parameters: @@ -9,15 +9,14 @@ Remarks: Originally Obj2Str() by Coco, http://www.autohotkey.com/board/topic/93300-what-format-to-store-settings-in/page-2#entry588373 - + Modified to use double quotes instead of single quotes and to leave numeric values unquoted. Returns: The JSON string */ -BuildJson(obj) -{ +BuildJson(obj) { str := "" , array := true for k in obj { if (k == A_Index) @@ -26,7 +25,7 @@ BuildJson(obj) break } for a, b in obj - str .= (array ? "" : """" a """: ") . (IsObject(b) ? BuildJson(b) : IsNumber(b) ? b : """" b """") . ", " + str .= (array ? "" : """" a """: ") . (IsObject(b) ? BuildJson(b) : IsNumber(b) ? b : """" b """") . ", " str := RTrim(str, " ,") return (array ? "[" str "]" : "{" str "}") } @@ -45,9 +44,8 @@ BuildJson(obj) Returns: The AutoHotkey object. */ -ParseJson(jsonStr) -{ - SC := ComObjCreate("ScriptControl") +ParseJson(jsonStr) { + SC := ComObjCreate("ScriptControl") SC.Language := "JScript" ComObjError(false) jsCode = @@ -76,8 +74,7 @@ ParseJson(jsonStr) Function: convertJScriptObjToAhks(jsObj) Used by ParseJson() */ -convertJScriptObjToAhks(jsObj) -{ +convertJScriptObjToAhks(jsObj) { if(jsObj[0]="object"){ obj := {}, keys := jsObj[1][0], values := jsObj[1][1] loop % keys.length @@ -99,8 +96,7 @@ convertJScriptObjToAhks(jsObj) Returns: True if Num is a number, false if not */ -IsNumber(Num) -{ +IsNumber(Num) { if Num is number return true else diff --git a/classes/_examples/class_AHKWebDriver-test_cookies.ahk b/classes/_examples/class_AHKWebDriver-test_cookies.ahk index e92a5145..63ee7c6c 100644 --- a/classes/_examples/class_AHKWebDriver-test_cookies.ahk +++ b/classes/_examples/class_AHKWebDriver-test_cookies.ahk @@ -1,5 +1,6 @@ #noenv -#include AHKWebDriver.ahk +#include %A_ScriptDir%\..\class_AHKWebDriver.ahk +#include %A_ScriptDir%\..\class_JSON.ahk wd := new WDSession() if(wd.rc.isError){ diff --git a/classes/_examples/class_Chrome-Examples/EventCallbacks.ahk b/classes/_examples/class_Chrome-Examples/EventCallbacks.ahk new file mode 100644 index 00000000..7d46847b --- /dev/null +++ b/classes/_examples/class_Chrome-Examples/EventCallbacks.ahk @@ -0,0 +1,111 @@ +#NoEnv +SetBatchLines, -1 + +#Include ../Chrome.ahk + +TestPages := 3 + + +; --- Define a data URL for the test page --- + +; https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs +DataURL = +( Comments +data:Text/html, ; This line makes it a URL + + + + ; Use {} to allow text insertion using Format() later + Test Page {} + + + + + +) + + +; --- Define some JavaScript to be injected into each page --- + +JS = +( Comments +; Using a self-invoking anonymous function for scope management +; https://blog.mgechev.com/2012/08/29/self-invoking-functions-in-javascript-or-immediately-invoked-function-expression/ +(function(){ + var clickCount = 0; + + ; Whenever the button tag with class someclass is clicked + document.querySelector("button.someclass").onclick = function() { + clickCount++; + + ; Prefix the message with AHK: so it can be + ; filtered out in the AHK-based callback function + console.log("AHK:" + clickCount); + }; +})(); +) + + +; --- Create a new Chrome instance --- + +; Define an array of pages to open +DataURLs := [] +Loop, %TestPages% + DataURLs.Push(Format(DataURL, A_Index)) + +; Open Chrome with those pages +FileCreateDir, ChromeProfile +ChromeInst := new Chrome("ChromeProfile", DataURLs) + + +; --- Connect to the pages --- + +PageInstances := [] +Loop, %TestPages% +{ + ; Bind the page number to the function for extra information in the callback + BoundCallback := Func("Callback").Bind(A_Index) + + ; Get an instance of the page, passing in the callback function + if !(PageInst := ChromeInst.GetPageByTitle(A_Index, "contains",, BoundCallback)) + { + MsgBox, Could not retrieve page %A_Index%! + ChromeInst.Kill() + ExitApp + } + PageInstances.Push(PageInst) + + ; Enable console events and inject the JS payload + PageInst.WaitForLoad() + PageInst.Call("Console.enable") + PageInst.Evaluate(JS) +} + +MsgBox, Running... Click OK to exit + + +; --- Close the Chrome instance --- + +try + PageInstances[1].Call("Browser.close") ; Fails when running headless +catch + ChromeInst.Kill() +for Index, PageInst in PageInstances + PageInst.Disconnect() + +ExitApp +return + + +Callback(PageNum, Event) +{ + ; Filter for console messages starting with "AHK:" + if (Event.Method == "Console.messageAdded" + && InStr(Event.params.message.text, "AHK:") == 1) + { + ; Strip out the leading AHK: + Text := SubStr(Event.params.message.text, 5) + + ToolTip, Clicked %Text% times on page %PageNum% + } +} diff --git a/classes/_examples/class_Chrome-Examples/ExportPDF.ahk b/classes/_examples/class_Chrome-Examples/ExportPDF.ahk new file mode 100644 index 00000000..b83ceead --- /dev/null +++ b/classes/_examples/class_Chrome-Examples/ExportPDF.ahk @@ -0,0 +1,72 @@ +#NoEnv +SetBatchLines, -1 + +#Include ../Chrome.ahk + + +; --- Create a new headless Chrome instance --- + +FileCreateDir, ChromeProfile +ChromeInst := new Chrome("ChromeProfile", "https://example.com", "--headless") + + +; --- Connect to the page --- + +if !(PageInst := ChromeInst.GetPage()) +{ + MsgBox, Could not retrieve page! + ChromeInst.Kill() +} +else +{ + PageInst.WaitForLoad() + + + ; --- Export a PDF of the page --- + + ; Get the PDF in Base64 + Base64PDF := PageInst.Call("Page.printToPDF").data + + ; Convert to a normal binary PDF + Size := Base64_Decode(BinaryPDF, Base64PDF) + + ; Write the binary PDF to a file + FileName := "Exported_" A_TickCount ".pdf" + FileOpen(FileName, "w").RawWrite(BinaryPDF, Size) + + ; Open the file + Run, %FileName% + + + ; --- Close the Chrome instance --- + + try + PageInst.Call("Browser.close") ; Fails when running headless + catch + ChromeInst.Kill() + PageInst.Disconnect() +} + +ExitApp +return + + +Base64_Encode(ByRef Out, ByRef In, InLen) +{ + DllCall("Crypt32.dll\CryptBinaryToString", "Ptr", &In + , "UInt", InLen, "UInt", 0x40000001, "Ptr", 0, "UInt*", OutLen) + VarSetCapacity(Out, OutLen * (1+A_IsUnicode)) + DllCall("Crypt32.dll\CryptBinaryToString", "Ptr", &In + , "UInt", InLen, "UInt", 0x40000001, "Str", Out, "UInt*", OutLen) + return OutLen +} + +Base64_Decode(ByRef Out, ByRef In) +{ + DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &In, "UInt", StrLen(In) + , "UInt", 0x1, "Ptr", 0, "UInt*", OutLen, "Ptr", 0, "Ptr", 0) + VarSetCapacity(Out, OutLen) + DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &In, "UInt", StrLen(In) + , "UInt", 0x1, "Str", Out, "UInt*", OutLen, "Ptr", 0, "Ptr", 0) + return OutLen +} \ No newline at end of file diff --git a/classes/_examples/class_Chrome-Examples/InjectJS.ahk b/classes/_examples/class_Chrome-Examples/InjectJS.ahk new file mode 100644 index 00000000..31380974 --- /dev/null +++ b/classes/_examples/class_Chrome-Examples/InjectJS.ahk @@ -0,0 +1,63 @@ +#NoEnv +SetBatchLines, -1 + +#Include ../Chrome.ahk + + +; --- Create a new Chrome instance --- + +FileCreateDir, ChromeProfile +ChromeInst := new Chrome("ChromeProfile", "https://autohotkey.com/") + + +; --- Connect to the page --- + +if !(PageInst := ChromeInst.GetPage()) +{ + MsgBox, Could not retrieve page! + ChromeInst.Kill() +} +else +{ + ; --- Perform JavaScript injection --- + + Loop + { + InputBox, JS,, + ( LTrim + Enter some JavaScript to be run on the page, or leave blank to exit. For example: + + alert('hi'); + window.location = "https://p.ahkscript.org/"; + ) + + if (JS == "" || ErrorLevel) + break + + try + Result := PageInst.Evaluate(JS) + catch e + { + MsgBox, % "Exception encountered in " e.What ":`n`n" + . e.Message "`n`n" + . "Specifically:`n`n" + . Chrome.Jxon_Dump(Chrome.Jxon_Load(e.Extra), "`t") + + continue + } + + MsgBox, % "Result:`n" Chrome.Jxon_Dump(Result, "`t") + } + + + ; --- Close the Chrome instance --- + + try + PageInst.Call("Browser.close") ; Fails when running headless + catch + ChromeInst.Kill() + PageInst.Disconnect() +} + +ExitApp +return diff --git a/classes/_examples/class_Chrome-Examples/Pastebin.ahk b/classes/_examples/class_Chrome-Examples/Pastebin.ahk new file mode 100644 index 00000000..e8e1c9a7 --- /dev/null +++ b/classes/_examples/class_Chrome-Examples/Pastebin.ahk @@ -0,0 +1,75 @@ +#NoEnv +SetBatchLines, -1 + +#Include ../Chrome.ahk + + +; --- Create a new Chrome instance --- + +; Instead of providing a URL here, let's try +; navigating later for demonstration purposes +FileCreateDir, ChromeProfile +ChromeInst := new Chrome("ChromeProfile") + + +; --- Connect to the page --- + +if !(PageInst := ChromeInst.GetPage()) +{ + MsgBox, Could not retrieve page! + ChromeInst.Kill() +} +else +{ + ; --- Navigate to the desired URL --- + + PageInst.Call("Page.navigate", {"url": "https://p.ahkscript.org/"}) + PageInst.WaitForLoad() + + + ; --- Manipulate the page using the DOM endpoint --- + ; One of the ways you can interact with elements on the page is by using + ; the Chrome debugger API's DOM (Document Object Model) input. While this + ; works, it can be more difficult than injecting JavaScript to perform + ; the same manipulations. + ; + ; However, one benefit this method has over JavaScript injection is that + ; you would not need to escape values before passing them to the endpoint. + ; If you were using JavaScript injection and your value had a stray + ; non-escaped end-quote in it, the text could break out of its string and + ; be the cause of a JavaScript injection vulnerability (or just buggy code). + + ; Find the root node + RootNode := PageInst.Call("DOM.getDocument").root + + ; Find and change the name element + NameNode := PageInst.Call("DOM.querySelector", {"nodeId": RootNode.nodeId, "selector": "input[name=name]"}) + PageInst.Call("DOM.setAttributeValue", {"nodeId": NameNode.NodeId, "name": "value", "value": "ChromeBot"}) + + ; Find and change the description element + DescNode := PageInst.Call("DOM.querySelector", {"nodeId": RootNode.nodeId, "selector": "input[name=desc]"}) + PageInst.Call("DOM.setAttributeValue", {"nodeId": DescNode.NodeId, "name": "value", "value": "Pasted with ChromeBot"}) + + + ; --- Manipulate the page using JavaScript injection --- + ; Whatever you pass to PageInst.Evaluate will act exactly like you were + ; inputting it to the page's developer tools JavaScript console. + + PageInst.Evaluate("editor.setValue('test');") + PageInst.Evaluate("document.querySelector('input[type=submit]').click();") + PageInst.WaitForLoad() + MsgBox, % "A new paste has been created at " + . PageInst.Evaluate("window.location.href").value + + + ; --- Close the Chrome instance --- + + try + PageInst.Call("Browser.close") ; Fails when running headless + catch + ChromeInst.Kill() + PageInst.Disconnect() +} + +ExitApp +return diff --git a/classes/_examples/class_CircleProgressClass_examples.ahk b/classes/_examples/class_CircleProgressClass_examples.ahk index c176c867..8acd1676 100644 --- a/classes/_examples/class_CircleProgressClass_examples.ahk +++ b/classes/_examples/class_CircleProgressClass_examples.ahk @@ -1,3 +1,6 @@ +#Include %A_ScriptDir%\..\class_CircleProgressClass.ahk +#Include %A_ScriptDir%\..\..\lib-a_to_h\GDIP.ahk + ;Example 1 - simple: CircleProgress := new CircleProgressClass() diff --git a/classes/_examples/class_Classifier-Example.ahk b/classes/_examples/class_Classifier-Example.ahk index 31885fe0..4dbe501a 100644 --- a/classes/_examples/class_Classifier-Example.ahk +++ b/classes/_examples/class_Classifier-Example.ahk @@ -1,6 +1,5 @@ #NoEnv - -#Include Classifier.ahk +#include %A_ScriptDir%\..\class_Classifier.ahk c := new Classifier diff --git a/classes/_examples/class_DD_demo.ahk b/classes/_examples/class_DD_demo.ahk index 963ec94c..1698cd24 100644 --- a/classes/_examples/class_DD_demo.ahk +++ b/classes/_examples/class_DD_demo.ahk @@ -1,4 +1,4 @@ -#Include, class_DD.ahk +#include %A_ScriptDir%\..\class_DD.ahk SetWorkingDir %A_ScriptDir% DD.str("abc") diff --git a/lib-a_to_h/examples/FFAAS_Sample.ahk b/classes/_examples/class_FFAAS_Sample.ahk similarity index 95% rename from lib-a_to_h/examples/FFAAS_Sample.ahk rename to classes/_examples/class_FFAAS_Sample.ahk index c4783b46..2c7384d9 100644 --- a/lib-a_to_h/examples/FFAAS_Sample.ahk +++ b/classes/_examples/class_FFAAS_Sample.ahk @@ -4,7 +4,7 @@ SetBatchLines -1 SetControlDelay, -1 SetWinDelay, -1 -#Include FFAAS.ahk ; ScriptDir +#Include %A_ScriptDir%\..\class_FFAAS.ahk ; ScriptDir ; #Include ; Library @@ -29,7 +29,7 @@ gui, 1:show, w600 x0, FFAAS - Flicker Free & Anti Shake by smarq GuiSize: if A_EventInfo = 1 return - + GuiControl, Move, tab, % "W" . (A_GuiWidth-22) . "H" . (A_GuiHeight-222) GuiControl, Move, MyListView, % "W" . (A_GuiWidth-32) . "H" . (A_GuiHeight-252) GuiControl, Move, EditText, % "W" A_GuiWidth/2-30 diff --git a/classes/_examples/class_JSON_example.ahk b/classes/_examples/class_JSON_example.ahk new file mode 100644 index 00000000..0aa41294 --- /dev/null +++ b/classes/_examples/class_JSON_example.ahk @@ -0,0 +1,49 @@ +#Include %A_ScriptDir%\..\class_JSON.ahk + +json_str = +( +{ + "str": "Hello World", + "num": 12345, + "float": 123.5, + "true": true, + "false": false, + "null": null, + "array": [ + "Auto", + "Hot", + "key" + ], + "object": { + "A": "Auto", + "H": "Hot", + "K": "key" + } +} +) + +parsed := JSON.Load(json_str) + +parsed_out := Format(" +(Join`r`n +String: {} +Number: {} +Float: {} +true: {} +false: {} +null: {} +array: [{}, {}, {}] +object: {{}A:""{}"", H:""{}"", K:""{}""{}} +)" +, parsed.str, parsed.num, parsed.float, parsed.true, parsed.false, parsed.null +, parsed.array[1], parsed.array[2], parsed.array[3] +, parsed.object.A, parsed.object.H, parsed.object.K) + +stringified := JSON.Dump(parsed,, 4) +stringified := StrReplace(stringified, "`n", "`r`n") ; for display purposes only + +ListVars +WinWaitActive ahk_class AutoHotkey +ControlSetText Edit1, [PARSED]`r`n%parsed_out%`r`n`r`n[STRINGIFIED]`r`n%stringified% +WinWaitClose +return \ No newline at end of file diff --git a/classes/_examples/class_LoaderBar-Example.ahk b/classes/_examples/class_LoaderBar-Example.ahk deleted file mode 100644 index 2ffd4199..00000000 --- a/classes/_examples/class_LoaderBar-Example.ahk +++ /dev/null @@ -1,32 +0,0 @@ -;http://ahkscript.org/boards/viewtopic.php?f=5&t=3583 -#Include LoaderBar.ahk -#SingleInstance, Force -SetBatchLines,-1 -SetWinDelay,0 -Gui, load_BarGUI:-Border -Caption +ToolWindow -Gui, load_BarGUI:Color, 0x4D4D4D, 0xFFFFFF -load_Bar := new LoaderBar("load_BarGUI",3,3,280,28,1,"EFEFEF") -wW:=load_Bar.Width + 2*load_Bar.X -wH:=load_Bar.Height + 2*load_Bar.Y -Gui, load_BarGUI:Show, w%wW% h%wH% - - -FileList:=Object() -Loop %A_WinDir%\System32\*.dll - if (A_Index>=100) - break - else - FileList.Insert(A_LoopFileLongPath "`n") - -Percent:=0 -while (Percent<100) -{ - Percent:=(Percent>=100) ? Percent:=100 : Percent+0.25 - utext := "Loading: " FileList[Round(Percent,0)] - load_Bar.Set(Percent,utext) - Sleep, 25 -} -load_Bar.Set(100,"Done.") -Sleep 500 -MsgBox Done! -Exitapp \ No newline at end of file diff --git a/classes/_examples/class_LoaderBar-Example.png b/classes/_examples/class_LoaderBar-Example.png deleted file mode 100644 index e9851ad0..00000000 Binary files a/classes/_examples/class_LoaderBar-Example.png and /dev/null differ diff --git a/classes/_examples/class_LoaderBar_Example.ahk b/classes/_examples/class_LoaderBar_Example.ahk index 2ffd4199..7a972b0d 100644 --- a/classes/_examples/class_LoaderBar_Example.ahk +++ b/classes/_examples/class_LoaderBar_Example.ahk @@ -1,5 +1,5 @@ ;http://ahkscript.org/boards/viewtopic.php?f=5&t=3583 -#Include LoaderBar.ahk +#include %A_ScriptDir%\..\class_LoaderBar.ahk #SingleInstance, Force SetBatchLines,-1 SetWinDelay,0 diff --git a/classes/_examples/class_Multipart_example1.ahk b/classes/_examples/class_Multipart_example1.ahk index 0f0311f8..db92eb63 100644 --- a/classes/_examples/class_Multipart_example1.ahk +++ b/classes/_examples/class_Multipart_example1.ahk @@ -1,3 +1,5 @@ +#include %A_ScriptDir%\..\class_CreateFormData.ahk + objParam := { "btSubmit": "Upload It!" , "adult": "no" , "mode": "local" diff --git a/classes/_examples/class_Mustache-testfiles/spec_json_test_data_parser.ahk b/classes/_examples/class_Mustache-testfiles/spec_json_test_data_parser.ahk index 4da09193..50a3a382 100644 --- a/classes/_examples/class_Mustache-testfiles/spec_json_test_data_parser.ahk +++ b/classes/_examples/class_Mustache-testfiles/spec_json_test_data_parser.ahk @@ -1,4 +1,4 @@ -/* +/* Can process JSON files from the spec: - https://github.com/mustache/spec/tree/master/specs @@ -38,7 +38,7 @@ template = jsonData := JSON.Load(var) For key, test in jsonData.tests { - + data := Trim(print(test.data), "`n") desc := test.desc title := test.name diff --git a/classes/_examples/class_Printers-example.ahk b/classes/_examples/class_Printers-example.ahk new file mode 100644 index 00000000..358b3591 --- /dev/null +++ b/classes/_examples/class_Printers-example.ahk @@ -0,0 +1,58 @@ +;Retrieves the default printer for the current user on the local computer +MsgBox % Printers.GetDefault() + +;Sets the default printer for the current user on the local computer +MsgBox % Printers.SetDefault("\\192.0.0.1\PRINTER_A") + +;Adds a connection to the specified printer for the current user +MsgBox % Printers.AddConnection("\\192.0.0.1\PRINTER_A") + +;Deletes a connection to a printer that was established by a call to AddPrinterConnection or ConnectToPrinterDlg +MsgBox % Printers.DeleteConnection("\\192.0.0.1\PRINTER_A") + +;Enumerates available printers, print servers, domains, or print providers +PrintArr(Printers.Enum(0x2|0x4)) + +PrintArr(Arr, Option := "w1200 h800", GuiNum := 90){ + for index, obj in Arr { + if (A_Index = 1) { + for k, v in obj { + Columns .= k "|" + cnt++ + } + Gui, %GuiNum%: Margin, 5, 5 + Gui, %GuiNum%: Add, ListView, %Option%, % Columns + } + RowNum := A_Index + Gui, %GuiNum%: default + LV_Add("") + for k, v in obj { + LV_GetText(Header, 0, A_Index) + if (k <> Header) { + FoundHeader := False + loop % LV_GetCount("Column") { + LV_GetText(Header, 0, A_Index) + if (k <> Header) + continue + else { + FoundHeader := A_Index + break + } + } + if !(FoundHeader) { + LV_InsertCol(cnt + 1, "", k) + cnt++ + ColNum := "Col" cnt + } else + ColNum := "Col" FoundHeader + } else + ColNum := "Col" A_Index + LV_Modify(RowNum, ColNum, (IsObject(v) ? "Object()" : v)) + } + } + loop % LV_GetCount("Column") + LV_ModifyCol(A_Index, "AutoHdr") + Gui, %GuiNum%: Show,, Array +} + +#include %A_ScriptDir%\..\class_Printers.ahk \ No newline at end of file diff --git a/classes/_examples/class_RADical_Demo.ini b/classes/_examples/class_RADical_Demo.ini index 0fcf7e42..ab356700 100644 --- a/classes/_examples/class_RADical_Demo.ini +++ b/classes/_examples/class_RADical_Demo.ini @@ -1 +1 @@ -{"_Internal":{"CurrentProfile":"Default","ProfileList":{"Default":1}},"Global":{"GuiSettings":{"PosH":375,"PosW":525,"PosX":1068,"PosY":926}},"PerProfile":{"Default":{"Hotkeys":{"hk1":[{"Code":1,"Type":"m","uid":"m1"}]}}}} \ No newline at end of file +{"_Internal":{"CurrentProfile":"Default","ProfileList":{"Default":1}},"Global":{"GuiSettings":{"PosH":563,"PosW":788,"PosX":1068,"PosY":926}},"PerProfile":{"Default":{"Hotkeys":{"hk1":[{"Code":1,"Type":"m","uid":"m1"}]}}}} \ No newline at end of file diff --git a/classes/_examples/class_Rebar_SplitPanels-example.ahk b/classes/_examples/class_Rebar_SplitPanels-example.ahk index 40c59038..9a920ee3 100644 --- a/classes/_examples/class_Rebar_SplitPanels-example.ahk +++ b/classes/_examples/class_Rebar_SplitPanels-example.ahk @@ -2,7 +2,7 @@ #NoEnv #SingleInstance Force -#Include ..\Class_Rebar.ahk +#Include %A_ScriptDir%\..\Class_Rebar.ahk Gui, LeftPanel:+HwndhLeft -Caption Gui, LeftPanel:Add, DDL, vDList, Item1||Item2|Item3 diff --git a/classes/_examples/class_Scintilla-example.ahk b/classes/_examples/class_Scintilla-example.ahk index c2bcdf51..37405b9e 100644 --- a/classes/_examples/class_Scintilla-example.ahk +++ b/classes/_examples/class_Scintilla-example.ahk @@ -1,5 +1,5 @@ -#Include %A_ScriptDir%\..\class_Scintilla.ahk -;#Include %A_ScriptDir%\..\class_ScintillaG.ahk +;#Include %A_ScriptDir%\..\class_Scintilla.ahk +#Include %A_ScriptDir%\..\class_ScintillaG.ahk #include %A_ScriptDir%\..\class_RemoteBuf.ahk ; Assumes Scintilla.ahk is in a lib folder @@ -36,35 +36,35 @@ Return splitDoc(ctrl) { gui := ctrl.gui - + ; cut the original in half plus some margin gui.control["Edit"].move("w" (gui.control["Edit"].pos.w - gui.marginX) // 2) - + ; make the second control the same width (height was already set) and make it visible sci2.ctrl.move("w" gui.control["Edit"].pos.w) sci2.ctrl.Visible := true gui.control["splitDoc"].enabled := false gui.control["unsplitDoc"].enabled := true - + setupSciControl(sci2) sci2.SetDocPointer(0, sciDocs[currentDoc]) - + updateScrollWidth(sci) } unSplitDoc(ctrl) { gui := ctrl.gui - + ; Set the second control to a new document ; this reduces the ref count on the document that was split by one sci2.SetDocPointer(0, 0) - + ; make the main control back to its original width sci.ctrl.move("w800") - + sci2.ctrl.visible := false updateScrollWidth(sci) - + gui.control["unsplitDoc"].enabled := false gui.control["splitDoc"].enabled := true } @@ -74,19 +74,19 @@ changeDoc(ctrl, next) { if (sciDocs.HasKey(currentDoc - (next ? -1 : 1))) { ; add a ref to the current doc before switching sci.AddRefDocument(0, sciDocs[currentDoc]) - + nextDoc := next ? ++currentDoc : --currentDoc - + ; change the pointer sci.SetDocPointer(0, sciDocs[nextDoc]) - + if (ctrl.gui.control["edit2"].visible) { sci2.SetDocPointer(0, sciDocs[nextDoc]) } - + ; release the ref that we were holding to the now current doc so that Scintilla is the sole owner sci.ReleaseDocument(0, sciDocs[nextDoc]) - + if (nextDoc = 1) { ctrl.gui.control["prevDoc"].enabled := false ctrl.gui.control["nextDoc"].enabled := true @@ -106,20 +106,20 @@ changeDoc(ctrl, next) { AddNewDoc(ctrl) { ; add a ref to the current doc before switching to a new one sci.AddRefDocument(0, sciDocs[currentDoc]) - + sci.SetDocPointer(0, 0) - + ; Save the pointer to the newly created doc currentDoc := sciDocs.push(sci.GetDocPointer()) - + ; If showing the second control, set it to point to the same new document if (ctrl.gui.control["edit2"].visible) { sci2.SetDocPointer(0, sciDocs[currentDoc]) } - + ; apply generic styling setupSciControl(sci) - + ctrl.gui.control["prevDoc"].enabled := true ctrl.gui.control["nextDoc"].enabled := false ctrl.gui.control["deleteDoc"].enabled := true @@ -128,7 +128,7 @@ AddNewDoc(ctrl) { deleteDoc(ctrl) { ; save our pointer of the current doc locally to make things easier prevDoc := sciDocs[currentDoc] - + ; determine which doc we are going to show after deleting the current one ; If we are deleting the last doc, then show the previous one ; if we are deleting any other doc, then show the document whose pointer will now occupy the currentDoc position of sciDocs @@ -136,32 +136,32 @@ deleteDoc(ctrl) { ; Store our own ref to the current document sci.AddRefDocument(0, sciDocs[currentDoc]) - + ; if the split doc is visible, then call the unsplit routine to hide it and release its reference if (sci2.ctrl.visible) { unSplitDoc(ctrl) } - + ; Remove our current doc from tracking sciDocs.RemoveAt(currentDoc) - + ; Change the current document to the next one sci.SetDocPointer(0, sciDocs[showNext]) - + ; release our ref from the previous document which drops the ref count to 0 and clears the memory ; You should never drop the count to 0 if the Scintilla control is the last to own the document sci.ReleaseDocument(0, prevDoc) - + currentDoc := showNext ; current is now equal to showNext, do this because in this example, currentDoc is global newLength := sciDocs.length() - + if (newLength = currentDoc || newLength = 1) { ctrl.gui.control["nextDoc"].enabled := false } if (currentDoc = 1) { ctrl.gui.control["prevDoc"].enabled := false } - + if (newLength = 1) { ctrl.gui.control["deleteDoc"].enabled := false } @@ -193,14 +193,14 @@ setupSciControl(sci) { sci.SetTechnology(1) ; uses Direct2D and DirectWrite APIs for higher quality sci.SetLexer(7) ; SQL - + ; Indentation sci.SetTabWidth(4) sci.SetUseTabs(false) ; Indent with spaces sci.SetTabIndents(1) sci.SetBackspaceUnindents(1) ; Backspace will delete spaces that equal a tab sci.SetIndentationGuides(sci.SC_IV_LOOKBOTH) - + sci.StyleSetFont(sci.STYLE_DEFAULT, "Consolas", 1) sci.StyleSetSize(sci.STYLE_DEFAULT, 10) sci.StyleSetFore(sci.STYLE_DEFAULT, CvtClr(0xF8F8F2)) @@ -237,7 +237,7 @@ setupSciControl(sci) { PixelWidth := sci.TextWidth(sci.STYLE_LINENUMBER, "9999", 1) sci.SetMarginWidthN(0, PixelWidth) sci.SetMarginLeft(0, 2) ; Left padding - + ; used as a border between line numbers and content borderMarginW := 1 sci.SetMarginTypeN(1, sci.SC_MARGIN_FORE) ; change the second margin to be of type SC_MARGIN_FORE @@ -251,7 +251,7 @@ keywords(key) { keywords: "abort action add after all alter analyze and as asc attach autoincrement before begin between by cascade case cast check collate column commit conflict constraint create cross current current_date current_time current_timestamp database default deferrable deferred delete desc detach distinct do drop each else end escape except exclusive exists explain fail filter following for foreign from full glob group having if ignore immediate in index indexed initially inner insert instead intersect into is isnull join key left like limit match natural no not nothing notnull null of offset on or order outer over partition plan pragma preceding primary query raise range recursive references regexp reindex release rename replace restrict right rollback row rows savepoint select set table temp temporary then to transaction trigger unbounded union unique update using vacuum values view virtual when where window with without", functions: "abs avg changes char coalesce count cume_dist date datetime dense_rank first_value glob group_concat hex ifnull instr json json_array json_array_length json_extract json_insert json_object json_patch json_remove json_replace json_set json_type json_valid json_quote json_group_array json_group_object json_each json_tree julianday lag last_insert_rowid last_value lead length like likelihood likely load_extension lower ltrim max min nth_value ntile nullif percent_rank printf quote random randomblob rank replace round row_number rtrim soundex sqlite_compileoption_get sqlite_compileoption_used sqlite_offset sqlite_source_id sqlite_version strftime substr substr sum time total total_changes trim typeof unicode unlikely upper zeroblob" } - + return keywords.HasKey(key) ? keywords[key] : "" } diff --git a/classes/_examples/class_Subtitle-Tutorial 1 - String Notation.ahk b/classes/_examples/class_Subtitle-Tutorial 1 - String Notation.ahk index 3db7c72b..fd0ebc5b 100644 --- a/classes/_examples/class_Subtitle-Tutorial 1 - String Notation.ahk +++ b/classes/_examples/class_Subtitle-Tutorial 1 - String Notation.ahk @@ -1,4 +1,4 @@ -#include +#include %A_ScriptDir%\..\class_Subtitle.ahk a := new Subtitle() a.Render("While I stood in the heavy, never-ending rain, I forgot how to smile...", "x:center y:83% c:Off", "s:52.7 f:(Garamond) color:White outline:(stroke:1 glow:4 tint:Black) dropShadow:(blur:5px color:White opacity:0.5 size:15)") diff --git a/classes/_examples/class_TreeList Test.ahk b/classes/_examples/class_TreeList Test.ahk index 10c7568f..05b269de 100644 --- a/classes/_examples/class_TreeList Test.ahk +++ b/classes/_examples/class_TreeList Test.ahk @@ -4,7 +4,7 @@ #SingleInstance Force SetBatchLines -1 -#Include TreeList.ahk +#include %A_ScriptDir%\..\Class_TreeList.ahk Menu Tray, Icon, shell32.dll, 42 diff --git a/classes/_examples/class_Trie-example.ahk b/classes/_examples/class_Trie-example.ahk index b1d6b3ca..6170def5 100644 --- a/classes/_examples/class_Trie-example.ahk +++ b/classes/_examples/class_Trie-example.ahk @@ -1,5 +1,5 @@ -#Include %A_ScriptDir%\..\classes\Class_Trie.ahk - +#Include %A_ScriptDir%\..\Class_Trie.ahk +#persistent SetBatchLines, -1 CoordMode, Mouse, Screen @@ -9,13 +9,13 @@ BackgroundColor := "C6D43C" WM_SETREDRAW := 0x0B Gui, 1:New -Gui, +AlwaysOnTop +ToolWindow -SysMenu -Caption +HwndGuiHwnd +LastFound ; +E0x08000000 -Gui, Color, %BackgroundColor% +Gui, 1:+AlwaysOnTop +ToolWindow -SysMenu -Caption +HwndGuiHwnd +LastFound ; +E0x08000000 +Gui, 1:Color, %BackgroundColor% -Gui, Font, s15 -Gui, Margin, 0, 0, 0, 0 -Gui, Add, Edit, vAddress gSearch w300 -Gui, Add, ListBox, vSuggestions w300 h200 +HwndCtrlHwnd +Gui, 1:Font, s15 +Gui, 1:Margin, 0, 0, 0, 0 +Gui, 1:Add, Edit, vAddress gSearch w300 +Gui, 1:Add, ListBox, vSuggestions w300 h200 +HwndCtrlHwnd WinSet, TransColor, %BackgroundColor% @@ -29,10 +29,10 @@ return AddDict() { Global Entries - lst := StrSplit(FileOpen("English British.txt", "r").Read(), "`n") - + lst := StrSplit(FileOpen(A_ScriptDir "\English British.txt", "r").Read(), "`n") + len := Round(lst.Length() / 100) - + for index, line in lst { if(!mod(index, len)) { ToolTip, % Format("{:02.1d}", (index / lst.Length())*100) @@ -48,7 +48,7 @@ AddDict() { Entries.__Set(Address, "") Goto, Search return - + Delete:: Gui, Submit, NoHide Entries.remove(Address) diff --git a/classes/_examples/class_VisualStyle-AeroWizard Example 1.ahk b/classes/_examples/class_VisualStyle-AeroWizard Example 1.ahk new file mode 100644 index 00000000..74c6edb2 --- /dev/null +++ b/classes/_examples/class_VisualStyle-AeroWizard Example 1.ahk @@ -0,0 +1,474 @@ + + +#NoEnv +#NoTrayIcon +#Include + +SendMode Input +SetBatchLines -1 + + +Wizard := new VisualStyle() +WizProp := Wizard.WinCreate("AutoHotkey Setup", "Back", "Next", "ButtonCancel", icon, "", "", 600, 400) +hwnd1 := WizProp.hwnd +hPrev := WizProp.NavBtn +hNext := WizProp.CmdBtnNext +hCancel := WizProp.CmdBtnCancel + +AutoHotkeyKey := "SOFTWARE\AutoHotkey" +DetermineVersion() +type := DefaultType="ANSI" ? "ANSI 32-bit" : "Unicode " (DefaultType="x64"?"64":"32") "-bit" + + HeaderFont := Wizard.GetFontProperties("AEROWIZARD", AW_HEADERAREA) + ContentFont := Wizard.GetFontProperties("AEROWIZARD", AW_CONTENTAREA) + LinkFont := Wizard.GetFontProperties("TEXTSTYLE", TEXT_HYPERLINKTEXT, TS_HYPERLINK_DISABLED) + cbxpFont := Wizard.GetFontProperties("CONTROLPANEL", CPANEL_SECTIONTITLELINK, CPSTL_NORMAL) + cbxsFont := Wizard.GetFontProperties("CONTROLPANEL", CPANEL_TASKLINK, CPTL_NORMAL) + +Wizard.PagingCreate(6) + +; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wizard.PageAdd(1) + +Gui %hWnd1%: Font, % "s" HeaderFont.Size " c" HeaderFont.Color, +Gui %hwnd1%: Add, Text, x40 y50, % "Install " CurrentName " v" CurrentVersion " to your computer" + +Gui %hWnd1%: Font, % "s" ContentFont.Size " c" ContentFont.Color, +Gui %hwnd1%: Add, Text, xp y+15, Please select the type of installation you wish to perform. + +Ext := Wizard.GetTextExtent("Express Installation", "BUTTON", 6, 0, "") +Wizard.CommandLink("AnsiorUni", "p", "+30", (600-80), (Ext.H+55), "Express Installation", "Default version: " type "`nInstall in: " A_ProgramFiles "\AutoHotkey", 1) +Wizard.CommandLink("AnsiorUni", "p", "+5" , "p", (Ext.H+20), "Custom Installation", "") + +Gui %hWnd1%: Font, % " c" LinkFont.Color, +Gui %hwnd1%: Add, Text, % "x40 y" (390-(DWM_WINEXTENT*2)), AutoHotkey is open source software: + +Wizard.ContentLink(CurrentPath "\license.txt", "read license", "+1", "p") + +; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wizard.PageAdd(2) + +Gui %hWnd1%: Font, % "s" HeaderFont.Size " c" HeaderFont.Color, +Gui %hwnd1%: Add, Text, x40 y50, % "Make changes to " CurrentName " v" CurrentVersion " (" type ")" + +Gui %hWnd1%: Font, % "s" ContentFont.Size " c" ContentFont.Color, +Gui %hwnd1%: Add, Text, xp y+15, What do you want to do? + +Ext := Wizard.GetTextExtent("Reinstall (download required)", "AEROWIZARD", AW_HEADERAREA, 0, "") +Wizard.CommandLink("TestButton2", "p", "+20", (600-80), (Ext.H+20), "Reinstall (dowload required)", "") +Wizard.CommandLink("TestButton2", "p", "+5" , (600-80), (Ext.H+20), "Modify", "", 1) +Wizard.CommandLink("TestButton2", "p", "+5" , (600-80), (Ext.H+20), "Uninstall", "") + +Wizard.ContentLink("gExtract", "extract to...", "p", (390-(DWM_WINEXTENT*2))) + +; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wizard.PageAdd(3) + +Gui %hWnd1%: Font, % "s" HeaderFont.Size " c" HeaderFont.Color, +Gui %hwnd1%: Add, Text, x40 y50, Select an AutoHotkey installation + +Gui %hWnd1%: Font, % "s" ContentFont.Size " c" ContentFont.Color, +Gui %hwnd1%: Add, Text, xp y+15, Which version of AutoHotkey.exe should run by default? + +Ext := Wizard.GetTextExtent("Recommended for new installations/scripts.", "AEROWIZARD", AW_HEADERAREA, 0, "") +Wizard.CommandLink("AnsiorUni", "p", "+30", (600-80), (Ext.H+50), "Unicode 32-bit", "Recommended for new installations/scripts.", 1) +Wizard.CommandLink("AnsiorUni", "p", "+5" , (600-80), "p", "ANSI 32-bit", "Better compatibility with some legacy scripts.") + +Wizard.ContentLink("gTestButton3", "More information", "p", (390-(DWM_WINEXTENT*2))) + +; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wizard.PageAdd(4) + +Gui %hWnd1%: Font, % "s" HeaderFont.Size " c" HeaderFont.Color, +Gui %hwnd1%: Add, Text, x40 y50, Select additional options for AutoHotkey installation + +Gui %hWnd1%: Font,, + +Gui %hWnd1%: Font, % "s" cbxpFont.Size, % cbxpFont.Name +Gui %hwnd1%: Add, Checkbox, Checked xp y+15 gDummy, Install script compiler + +Gui %hWnd1%: Font, % "s" cbxsFont.Size " c" cbxsFont.Color, +Ext := Wizard.GetTextExtent("Install script compiler", "CONTROLPANEL", 11, 0, "") +Gui %hwnd1%: Add, Text, % "xp+18 yp+" Ext.H, Installs Ahk2Exe, a tool to convert any .ahk script into a stand-alone EXE.`nAlso adds a "Compile" option to .ahk context menus. + +Gui %hWnd1%: Font,, + +Gui %hWnd1%: Font, % "s" cbxpFont.Size, % cbxpFont.Name +Gui %hwnd1%: Add, Checkbox, Checked x40 y+15, Enable drag `&& drop + +Gui %hWnd1%: Font, % "s" cbxsFont.Size " c" cbxsFont.Color, +Ext := Wizard.GetTextExtent("Enable drag `& drop", "CONTROLPANEL", 11, 0, "") +Gui %hwnd1%: Add, Text, % "xp+18 yp+" Ext.H, Files dropped onto a .ahk script will launch that script (the files will be passed as`nparameters). This can lead to accidental launching so you may wish to disable it. + +Gui %hWnd1%: Font,, + +Gui %hWnd1%: Font, % "s" cbxpFont.Size, % cbxpFont.Name +Gui %hwnd1%: Add, Checkbox, Checked x40 y+15, Separate taskbar buttons + +Gui %hWnd1%: Font, % "s" cbxsFont.Size " c" cbxsFont.Color, +Ext := Wizard.GetTextExtent("Enable drag `& drop", "CONTROLPANEL", 11, 0, "") +Gui %hwnd1%: Add, Link, % "xp+18 yp+" Ext.H " gMyFunction" +, Causes each script which has visible windows to be treated as a separate program, but`nprevents AutoHotkey.exe from being pinned to the taskbar. [help] + +Gui %hWnd1%: Font,, + +Gui %hWnd1%: Font, % "s" cbxpFont.Size, % cbxpFont.Name +Gui %hwnd1%: Add, Checkbox, x40 y+15, Add 'Run with UI Access' to context menus + +Gui %hWnd1%: Font, % "s" cbxsFont.Size " c" cbxsFont.Color, +Ext := Wizard.GetTextExtent("Enable drag `& drop", "CONTROLPANEL", 11, 0, "") +Gui %hwnd1%: Add, Link, % "xp+18 yp+" Ext.H " gMyFunction", UI Access enables scripts to automate administrative programs. [help] + +; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wizard.PageAdd(5) + +Gui %hWnd1%: Font, % "s" HeaderFont.Size " c" HeaderFont.Color, +Gui %hwnd1%: Add, Text, x40 y50 hwndhText11, Removing AutoHotkey installation + +Gui %hWnd1%: Font, % "s" ContentFont.Size " c" ContentFont.Color, +Gui %hwnd1%: Add, Text, xp y+20, This shouldn't take long... + +Gui %hwnd1%: Add, Progress, xp+80 y+30 w360 h15 hWndhPrg -Smooth, 0 + +; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wizard.PageAdd(6) + +Gui %hWnd1%: Font, % "s" HeaderFont.Size " c" HeaderFont.Color, +Gui %hwnd1%: Add, Text, x40 y50, Installation complete + +Ext := Wizard.GetTextExtent("View Changes `& New Features", "AEROWIZARD", AW_HEADERAREA, 0, "") +Wizard.CommandLink("TestButton4", "p", "+20",(600-80), (Ext.H+23), "View Changes `& New Features", "", 1) +Wizard.CommandLink("TestButton5", "p", "+7", (600-80), (Ext.H+23), "View the Tutorial", "") +Wizard.CommandLink("TestButton6", "p", "+7", (600-80), (Ext.H+23), "Run AutoHotkey", "") +Wizard.CommandLink("GuiClose" , "p", "+7", (600-80), (Ext.H+23), "Exit", "") + +Gui %hWnd1%: Font, % "s" LinkFont.Size " c" LinkFont.Color, +Gui %hwnd1%: Add, Text, % "x40 y" . (390-(DWM_WINEXTENT*2)), Did you know AutoHotkey has a + +Wizard.ContentLink("gViewWebsite", "new home", "+2", "p") + +Gui %hwnd1%: Add, Text, x+1 yp+1, ? + +; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wizard.WinShow() +Return + +Dummy: +WindowBasic := new VisualStyle() + +icon := "C:\Windows\explorer.exe , 24" + +WinProp := WindowBasic.WinCreate("Another Test Window", "Dummy2", "Dummy2", "Dummy2", icon, "", "", 400, 300, "Win") +hwnd2 := WinProp.hwnd +hPrev2 := WinProp.NavBtn +hNext2 := WinProp.CmdBtnNext +hCancel2 := WinProp.CmdBtnCancel + +Txt = +( +Lorem ipsum dolor sit amet, consectetur adipiscing elit, +sed do eiusmod tempor incididunt ut labore et dolore +magna aliqua. Ut enim ad minim veniam, quis nostrud +exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in +voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, +sunt in culpa qui officia deserunt mollit anim id est laborum. +) + +Gui %hWnd2%: Font, % "s" HeaderFont.Size " c" HeaderFont.Color, +Gui %hwnd2%: Add, Text, x40 y10, % "Install " CurrentName " v" CurrentVersion " to your computer" + +Gui %hWnd2%: Font, % "s" ContentFont.Size " c" ContentFont.Color, +Gui %hwnd2%: Add, Text, xp y+15 w350, % Txt + +GuiControl, Hide, %hNext2% +GuiControl,, %hCancel2%, Close + +WindowBasic.WinShow() +Return + +Dummy2: +Gui %hwnd2%: Cancel +Return + + + +ButtonCancel: +GuiClose: + if (A_GuiEvent = "Normal") and (A_EventInfo = 0x0000) + ExitApp +Return + +Back: + Gui %hWnd1%: Submit, NoHide + + pBtnSt := (PageCtrl <= 2) ? 1 : 0 + nBtnSt := (PageCtrl <= 4) ? 0 : 1 + + GuiControl, Disable%nBtnSt%, %hNext% + GuiControl, Disable%pBtnSt%, %hPrev% + GuiControl,, %hNext%, Next + Wizard.PageChoose(PageCtrl - 1) + +Return + +Next: + if (lastButton = "Uninstall") + { + GoSub, UnInstall + Return + } + if (lastButton = "Express Installation") + { + Ext := Wizard.GetTextExtent("Installing " CurrentName " v" CurrentVersion " (" type ")", "AEROWIZARD", AW_HEADERAREA, 0, "") + GuiControl, Move, %hText11%, % "w" Ext.W + GuiControl,, %hText11%, % "Installing " CurrentName " v" CurrentVersion " (" type ")" + GoSub, UnInstall + Return + } + if (lastButton = "Reinstall (dowload required)") + { + Ext := Wizard.GetTextExtent("Downloading Updates...", "AEROWIZARD", AW_HEADERAREA, 0, "") + GuiControl, Move, %hText11%, % "w" Ext.W + GuiControl,, %hText11%, Downloading Updates... + GoSub, UnInstall + Return + } + + Gui %hWnd1%: Submit, NoHide + + nBtnSt := (PageCtrl >= 3) ? 1 : 0 + pBtnSt := (PageCtrl >= 1) ? 0 : 1 + + if ((PageCtrl + 1) < 4) + { + GuiControl, Disable%nBtnSt%, %hNext% + GuiControl, Disable%pBtnSt%, %hPrev% + Wizard.PageChoose(PageCtrl + 1) + } + if ((PageCtrl + 1) = 4) + { + GuiControl,, %hNext%, Install + GuiControl, Disable%pBtnSt%, %hPrev% + Wizard.PageChoose(PageCtrl + 1) + } + if ((PageCtrl + 1) = 5) + { + lastButton := "Express Installation" + GoSub, Next + } +Return + +TestButton2: + if (A_GuiEvent = "Normal") and (A_EventInfo = 0x0000) + { + + if (hControl_p1) + Wizard.ButtonSetImage(hControl_p1) + + GuiControlGet, hControl_p1, Hwnd, %A_GuiControl% + + lastButton := A_GuiControl + + Wizard.ButtonSetImage(hControl_p1, "C:\Windows\system32\netshell.dll", 98, 16) + } +Return + +TestButton3: + ViewHelp("/docs/Compat.htm#Format") +Return + +TestButton4: + if (A_GuiEvent = "Normal") and (A_EventInfo = 0x0000) + ViewHelp("/docs/AHKL_ChangeLog.htm") +Return + +TestButton5: + if (A_GuiEvent = "Normal") and (A_EventInfo = 0x0000) + ViewHelp("/docs/Tutorial.htm") +Return + +TestButton6: + if (A_GuiEvent = "Normal") and (A_EventInfo = 0x0000) + Run, % A_ProgramFiles "\AutoHotkey\installer.ahk /exec runahk" +Return + +ViewWebsite: + Run_("https://autohotkey.com/") +Return + +Extract: + FileSelectFolder, dstDir,,, Select a folder to copy program files to. + if ErrorLevel + Return + else + MsgBox, 0x2030, AutoHotkey Setup, This is just an example. +Return + +AnsiorUni: + if (A_GuiEvent = "Normal") and (A_EventInfo = 0x0000) + { + if (hControl_p2) + Wizard.ButtonSetImage(hControl_p2) + + GuiControlGet, hControl_p2, Hwnd, %A_GuiControl% + + lastButton := A_GuiControl + + Wizard.ButtonSetImage(hControl_p2, "C:\Windows\system32\netshell.dll", 98, 16) + } +Return + +UnInstall: + GuiControl, Hide, %hNext% + GuiControl, Disable, %hPrev% + + Wizard.PageChoose(5) + + if (lastButton = "Reinstall (dowload required)") + { + Loop, 100 + { + GuiControl,, %hPrg%, +1 + Sleep, 10 + } + + Ext := Wizard.GetTextExtent("Installing " CurrentName " v" CurrentVersion " (" type ").", "AEROWIZARD", AW_HEADERAREA, 0, "") + GuiControl, Move, %hText11%, % "w" Ext.W + GuiControl,, %hText11%, % "Installing " CurrentName " v" CurrentVersion " (" type ")." + } + + Wizard.ProgBarSetState(hPrg, "Marquee") + + Sleep, 7000 + + Wizard.ProgBarSetState(hPrg, "Marquee", 0) + + Wizard.PageChoose(6) + + GuiControl,, %hCancel%, Close +Return + +MyFunction(CtrlHwnd, GuiEvent, LinkIndex, HrefOrID) +{ + ViewHelp(HrefOrID) +} + +DetermineVersion() { + global + local url, v + ; This first section has two purposes: + ; 1) Determine the location of any current installation. + ; 2) Determine which view of the registry it was installed into + ; (only applicable if the OS is 64-bit). + CurrentRegView := "" + Loop % (A_Is64bitOS ? 2 : 1) { + SetRegView % 32*A_Index + RegRead CurrentPath, HKLM, %AutoHotkeyKey%, InstallDir + if !ErrorLevel { + CurrentRegView := A_RegView + break + } + } + if ErrorLevel { + CurrentName := "" + CurrentVersion := "" + CurrentType := "" + CurrentPath := "" + CurrentStartMenu := "" + return + } + RegRead CurrentVersion, HKLM, %AutoHotkeyKey%, Version + RegRead CurrentStartMenu, HKLM, %AutoHotkeyKey%, StartMenuFolder + RegRead url, HKLM, %UninstallKey%, URLInfoAbout + ; Identify by URL since uninstaller display name is the same: + if (url = "http://www.autohotkey.net/~Lexikos/AutoHotkey_L/" + || url = "http://l.autohotkey.net/") + CurrentName := "AutoHotkey_L" + else + CurrentName := "AutoHotkey" + ; Identify which build is installed/set as default: + FileAppend ExitApp `% (A_IsUnicode=1) << 8 | (A_PtrSize=8) << 9, %A_Temp%\VersionTest.ahk + RunWait %CurrentPath%\AutoHotkey.exe "%A_Temp%\VersionTest.ahk",, UseErrorLevel + if ErrorLevel = 0x300 + CurrentType := "x64" + else if ErrorLevel = 0x100 + CurrentType := "Unicode" + else if ErrorLevel = 0 + CurrentType := "ANSI" + else + CurrentType := "" + FileDelete %A_Temp%\VersionTest.ahk + ; Set some default parameter based on current installation: + if CurrentType + DefaultType := CurrentType + DefaultPath := CurrentPath + DefaultStartMenu := CurrentStartMenu + DefaultCompiler := FileExist(CurrentPath "\Compiler\Ahk2Exe.exe") != "" + RegRead v, HKCR, %FileTypeKey%\ShellEx\DropHandler + DefaultDragDrop := ErrorLevel = 0 + RegRead v, HKCR, Applications\AutoHotkey.exe, IsHostApp + DefaultIsHostApp := !ErrorLevel + RegRead v, HKCR, %FileTypeKey%\Shell\uiAccess\Command + DefaultUIAccess := !ErrorLevel && UACIsEnabled + RegRead v, HKCR, %FileTypeKey%\Shell\Open\Command + DefaultToUTF8 := InStr(v, " /CP65001 ") != 0 +} + +ViewHelp(topic) { + local path + if FileExist(A_ScriptDir "\AutoHotkey.chm") + path := A_ScriptDir "\AutoHotkey.chm" + else + path := CurrentPath "\AutoHotkey.chm" + if FileExist(path) + Run_("hh.exe", "mk:@MSITStore:" path "::" topic) + else + Run_("https://autohotkey.com" topic) +} + +Run_(target, args:="", workdir:="") { + try + ShellRun(target, args, workdir) + catch e + Run % args="" ? target : target " " args, % workdir +} + +RunAutoHotkey() { + ; Setup may be running as a user other than the one that's logged + ; in (i.e. an admin user), so in addition to running AutoHotkey.exe + ; in user mode, have it call the function below to ensure the script + ; file is correctly located. + Run_("AutoHotkey.exe", """" A_AhkPath "\Installer.ahk"" /exec runahk") +} + +ShellRun(prms*) +{ + shellWindows := ComObjCreate("Shell.Application").Windows + VarSetCapacity(_hwnd, 4, 0) + desktop := shellWindows.FindWindowSW(0, "", 8, ComObj(0x4003, &_hwnd), 1) + if ptlb := ComObjQuery(desktop + , "{4C96BE40-915C-11CF-99D3-00AA004AE837}" ; SID_STopLevelBrowser + , "{000214E2-0000-0000-C000-000000000046}") ; IID_IShellBrowser + { + if DllCall(NumGet(NumGet(ptlb+0)+15*A_PtrSize), "ptr", ptlb, "ptr*", psv:=0) = 0 + { + VarSetCapacity(IID_IDispatch, 16) + NumPut(0x46000000000000C0, NumPut(0x20400, IID_IDispatch, "int64"), "int64") + DllCall(NumGet(NumGet(psv+0)+15*A_PtrSize), "ptr", psv + , "uint", 0, "ptr", &IID_IDispatch, "ptr*", pdisp:=0) + shell := ComObj(9,pdisp,1).Application + shell.ShellExecute(prms*) + ObjRelease(psv) + } + ObjRelease(ptlb) + } +} \ No newline at end of file diff --git a/classes/_examples/class_ZeeGrid_Sample.ahk b/classes/_examples/class_ZeeGrid_Sample.ahk index 6b5f7437..bee3abd2 100644 --- a/classes/_examples/class_ZeeGrid_Sample.ahk +++ b/classes/_examples/class_ZeeGrid_Sample.ahk @@ -1,4 +1,4 @@ -#Include +#include %A_ScriptDir%\..\Class_ZeeGrid.ahk main := GuiCreate() main.OnEvent("close", () => ExitApp()) @@ -21,7 +21,7 @@ Loop(rows := 20) { grid.AppendRow() cell := cols * A_Index + A_Index col := grid.GetColOfIndex(cell) - + if (col = 2) { grid.SetCellType(cell, Mod(A_Index, 2) ? grid.BOOL_TRUE : grid.BOOL_FALSE) } @@ -60,6 +60,6 @@ onRightClick(grid) { col := grid.GetMouseCol() row := grid.GetMouseRow() cell := grid.GetCellIndex(row, col) - + ToolTip(row "x" col "`nCell Index " cell) } \ No newline at end of file diff --git a/classes/_examples/class_cTable_Test.ahk b/classes/_examples/class_cTable_Test.ahk index dac9b1f1..5e4924e0 100644 --- a/classes/_examples/class_cTable_Test.ahk +++ b/classes/_examples/class_cTable_Test.ahk @@ -1,4 +1,4 @@ -#include cTable.ahk +#include %A_ScriptDir%\..\class_cTable.ahk ;===oTable testing area================================================================= Variable = ; column names are specified as first row @@ -29,60 +29,60 @@ Gui 1: Show, w510 h310 hide ;=== Field management === -;MsgBox % oTable.3.2 ; get value from [3. row, 2. column] -;oTable.1.1 := "Bobby" ; set [1. row, 1. column] to "Bobby" +MsgBox % oTable.3.2 ; get value from [3. row, 2. column] +oTable.1.1 := "Bobby" ; set [1. row, 1. column] to "Bobby" ;=== Converting to numbers === -;MsgBox % oTable.Row2Num("Jonny", "Poor", "Beggar") ; get number of row whose fields are: Jonny, Poor, Beggar. (Identification by fields) -;MsgBox % oTable.Col2Num("Occupation") ; get number of "Occupation" column -;MsgBox % oTable.Col2Num("First name|Notes") ; get numbers of "First name" and "Notes" columns +MsgBox % oTable.Row2Num("Jonny", "Poor", "Beggar") ; get number of row whose fields are: Jonny, Poor, Beggar. (Identification by fields) +MsgBox % oTable.Col2Num("Occupation") ; get number of "Occupation" column +MsgBox % oTable.Col2Num("First name|Notes") ; get numbers of "First name" and "Notes" columns ;=== ToString method === -;MsgBox % oTable.ToString() ; convert whole table object to string -;MsgBox % oTable.3.ToString() ; convert 3. row object to string -;MsgBox % oTable.11.ToString("#") ; convert 11. row object to string but use custom delimiter -;MsgBox % oTable.HeaderToString() ; converts table's header (first row) to string +MsgBox % oTable.ToString() ; convert whole table object to string +MsgBox % oTable.3.ToString() ; convert 3. row object to string +MsgBox % oTable.11.ToString("#") ; convert 11. row object to string but use custom delimiter +MsgBox % oTable.HeaderToString() ; converts table's header (first row) to string ;=== MaxIndex (Count) === -;MsgBox % oTable.MaxIndex() ; get total number of rows (in future maybe: oTable.Count) -;MsgBox % oTable.ColumnNames.MaxIndex() ; get total number of columns +MsgBox % oTable.MaxIndex() ; get total number of rows (in future maybe: oTable.Count) +MsgBox % oTable.ColumnNames.MaxIndex() ; get total number of columns ;=== Row management === -;oTable.AddRow("Joe", "Newman", "Kiteboarder", "Freestyle & Wave") ; add row (to the bottom) -;oTable.InsertRow(2 ,"Mike", "Insertovich", "Actor") ; inserts new row number 2. -;oTable.ModifyRow(3 ,"Sergey", "Modifysky", "Actor") ; modify row number 3. -;oTable.ModifyRow(0 ,"Chris", "Allman", "Actor") ; modify all existing rows -;oTable.DeleteRow(2) ; delete 2. row -;oTable.DeleteRow() ; delete last row -;oTable.DeleteRow(0) ; delete all rows +oTable.AddRow("Joe", "Newman", "Kiteboarder", "Freestyle & Wave") ; add row (to the bottom) +oTable.InsertRow(2 ,"Mike", "Insertovich", "Actor") ; inserts new row number 2. +oTable.ModifyRow(3 ,"Sergey", "Modifysky", "Actor") ; modify row number 3. +oTable.ModifyRow(0 ,"Chris", "Allman", "Actor") ; modify all existing rows +oTable.DeleteRow(2) ; delete 2. row +oTable.DeleteRow() ; delete last row +oTable.DeleteRow(0) ; delete all rows ;=== Searching === -;MsgBox % oTable.Search("Occupation", "Driver").ToString() ; search Occupation column for containing string "driver" -;MsgBox % oTable.Search("Occupation|Notes", "Driver").ToString() ; search Occupation and Notes columns for containing string "driver" -;MsgBox % oTable.Search("", "Driver", "containing+").ToString() ; search whole table (all columns) for containing string "driver" but ignore withespaces -;MsgBox % oTable.Search("Last name", "^J.*an$", "RegEx").ToString() ; Search for all last names starting with "J" and ending with "an". -;MsgBox % oTable.Search("First name", "ny", "EndingWith").ToString() ; search first names ending with "ny" -;MsgBox % oTable.Search("Last name", "ja|bla", "StartingWith").ToString() ; search last names starting with "ja" or "bla" -;MsgBox % oTable.Search("", "Jack", "exactly").ToString() ; search whole table (all columns) for string "Jack" (not containing, but exactly) +MsgBox % oTable.Search("Occupation", "Driver").ToString() ; search Occupation column for containing string "driver" +MsgBox % oTable.Search("Occupation|Notes", "Driver").ToString() ; search Occupation and Notes columns for containing string "driver" +MsgBox % oTable.Search("", "Driver", "containing+").ToString() ; search whole table (all columns) for containing string "driver" but ignore withespaces +MsgBox % oTable.Search("Last name", "^J.*an$", "RegEx").ToString() ; Search for all last names starting with "J" and ending with "an". +MsgBox % oTable.Search("First name", "ny", "EndingWith").ToString() ; search first names ending with "ny" +MsgBox % oTable.Search("Last name", "ja|bla", "StartingWith").ToString() ; search last names starting with "ja" or "bla" +MsgBox % oTable.Search("", "Jack", "exactly").ToString() ; search whole table (all columns) for string "Jack" (not containing, but exactly) ;=== Multiple filters search === ; step 1: search "Occupation" and "Notes" columns for containing "Driver" or "artist" strings. "|" is query delimiter. ; step 2: search that search result again: search "First name" column for containing "J" string -;oFound := oTable.Search("Occupation|Notes", "Driver|artist") ; store search results as object -;oFound2 := oFound.Search("First name", "J") ; search oFound (second search filter) +Found := oTable.Search("Occupation|Notes", "Driver|artist") ; store search results as object +oFound2 := oFound.Search("First name", "J") ; search oFound (second search filter) ; or shorter: oFound2 := oTable.Search("Occupation|Notes", "Driver|artist").Search("First name", "J") ; etc. --> multiple filters -;MsgBox % oFound2.ToString() ; convert search results to string -;MsgBox % oFound2.2.ToString() ; convert 2. row from search results to string -;MsgBox % oFound2.1.3 ; get [1. row, 3. column] field from search results -;MsgBox % oFound2.MaxIndex() ; get number of found rows - from oFound2 (in future maybe: oFound2.Count) +MsgBox % oFound2.ToString() ; convert search results to string +MsgBox % oFound2.2.ToString() ; convert 2. row from search results to string +MsgBox % oFound2.1.3 ; get [1. row, 3. column] field from search results +MsgBox % oFound2.MaxIndex() ; get number of found rows - from oFound2 (in future maybe: oFound2.Count) ;=== RegEx search === and LastFound property @@ -142,7 +142,7 @@ return - + ;=== oTable - ListView interaction === d::oTable.LVDelete() ; delete selected row a::oTable.LVAdd("Mia","Addstan","Driver") ; add new row diff --git a/classes/_examples/class_eAutoComplete-debug.ahk b/classes/_examples/class_eAutoComplete-debug.ahk index b942cfc2..b4dffd4e 100644 --- a/classes/_examples/class_eAutoComplete-debug.ahk +++ b/classes/_examples/class_eAutoComplete-debug.ahk @@ -2,10 +2,11 @@ #SingleInstance force SetWorkingDir % A_ScriptDir SendMode, Input -#Warn +;#Warn ; Windows 8.1 64 bit - Autohotkey v1.1.29.01 32-bit Unicode -#Include %A_ScriptDir%\eAutocomplete.ahk +#Include %A_ScriptDir%\..\class_eAutocomplete.ahk +#Include %A_ScriptDir%\..\..\lib-a_to_h\acc.ahk for source, url in {"WordList English Gutenberg": "https://raw.githubusercontent.com/sl5net/global-IntelliSense-everywhere/master/Wordlists/_globalWordLists/languages/WordList%20English%20Gutenberg.txt" , "Autocompletion_fr": "https://raw.githubusercontent.com/A-AhkUser/keypad-library/master/Keypad/Autocompletion/fr"} { diff --git a/classes/_examples/class_eAutoComplete-example.ahk b/classes/_examples/class_eAutoComplete-example.ahk index e4a85e5e..bec20917 100644 --- a/classes/_examples/class_eAutoComplete-example.ahk +++ b/classes/_examples/class_eAutoComplete-example.ahk @@ -2,10 +2,10 @@ #SingleInstance force SetWorkingDir % A_ScriptDir SendMode, Input -#Warn +;#Warn ; Windows 8.1 64 bit - Autohotkey v1.1.28.00 32-bit Unicode -#Include %A_ScriptDir%\eAutocomplete.ahk +#Include %A_ScriptDir%\..\class_eAutocomplete.ahk if not (FileExist(listPath:=A_ScriptDir . "\englishWordList.txt")) UrlDownloadToFile, https://raw.githubusercontent.com/A-AhkUser/keypad-library/master/Keypad/Autocompletion/en, % listPath diff --git a/classes/_examples/class_eAutoComplete-example_attach.ahk b/classes/_examples/class_eAutoComplete-example_attach.ahk index fe2e4438..cedfa520 100644 --- a/classes/_examples/class_eAutoComplete-example_attach.ahk +++ b/classes/_examples/class_eAutoComplete-example_attach.ahk @@ -1,9 +1,10 @@ #NoEnv #SingleInstance force -#Warn +;#Warn ; Windows 8.1 64 bit - Autohotkey v1.1.28.00 32-bit Unicode -#Include %A_ScriptDir%\eAutocomplete.ahk +#Include %A_ScriptDir%\..\class_eAutocomplete.ahk +#Include %A_ScriptDir%\..\..\lib-a_to_h\acc.ahk WinWait, ahk_class Notepad ControlGet, eHwnd, Hwnd,, Edit1, % "ahk_id " . WinExist() diff --git a/classes/_examples/class_expandView_example.ahk b/classes/_examples/class_expandView_example.ahk index a15a1fbf..afab19b0 100644 --- a/classes/_examples/class_expandView_example.ahk +++ b/classes/_examples/class_expandView_example.ahk @@ -2,8 +2,8 @@ #SingleInstance Force SetWinDelay -1 SetBatchLines -1 -#Include -#Include +#include %A_ScriptDir%\..\Class_ScrollGUI.ahk +#include %A_ScriptDir%\..\Class_expandView.ahk Gui New, HwndhParent +labelParent_, Window exp := new expandView( hParent, 10, 10, 300, 400 ) ; new expandView( Hwnd of parent GUI, x position, y position, width, height ) diff --git a/classes/_examples/class_gdichart-sample.ahk b/classes/_examples/class_gdichart-sample.ahk index 746feb2d..630df681 100644 --- a/classes/_examples/class_gdichart-sample.ahk +++ b/classes/_examples/class_gdichart-sample.ahk @@ -1,5 +1,5 @@ #NoEnv -#Include gdichart.ahk +#include %A_ScriptDir%\..\class_gdichart.ahk ;~ 0x2e880c 绿 ;~ 0x234fcb 橙 diff --git a/classes/_examples/class_particles-GUI-Toy.ahk b/classes/_examples/class_particles-GUI-Toy.ahk index 4977bcc1..6675331d 100644 --- a/classes/_examples/class_particles-GUI-Toy.ahk +++ b/classes/_examples/class_particles-GUI-Toy.ahk @@ -3,10 +3,10 @@ Name: Particle System Version 2.1 (Tuesday, January 17, 2017) Created: Thursday, December 22, 2016 Author: tidbit -Credit: +Credit: maestrith - dlg_color() tic - GDIP - + Hotkeys: Description: @@ -196,7 +196,7 @@ contArr:=["etype","emisc","lifemin","lifemax","offx","offy","useFrames" ,"relm","relw","speeds","jitters","gravity","spiral"] winGetPos, x,y,w,h, ahk_id %MAINHWND% -gui, preview: show, % "x" x+w " y" y " autosize", Preview - %_name_% +gui, preview: show, % "x" x+w " y" y " autosize", Preview - %_name_% ; gui, preview: show, % "x" x " y" y " autosize", Preview psys:=new particles(FPS) @@ -226,14 +226,14 @@ return chooseCol: - BGCol:=RGB(dlg_color(BGCol,MAINHWND)) + BGCol:=RGB(dlg_color(BGCol,MAINHWND)) gui, preview: color, 0x%BGCol% return setup: gui, main: submit, noHide - + guiControlGet, drawArea, preview: pos, PDisp anchorX:=(drawAreaW//2)+offx anchorY:=(drawAreaH//2)+offy @@ -264,11 +264,11 @@ addEmit: gui, main: submit, noHide gui, main: default newE:=psys.addEmitter() - + for k, v in contArr guiControl, main: -g, %v% guiControl, main: -g, eLB - + guiControl, main: choose, eType, 1 guiControl, main:, lifemin, % newE.Life[1] guiControl, main:, lifemax, % newE.Life[1] @@ -290,7 +290,7 @@ addEmit: guiControl, main:, gravity, % st_glue(newE.gravity) guiControl, main:, spiral, % st_glue(newE.spiral) guiControl, main:, eLB, Generic|| - + gui, main: submit, noHide for k, v in contArr { @@ -325,18 +325,18 @@ CreateBG: Gdip_DisposeImage(BGBitmap) ; get rid of the old one BGBitmap:=Gdip_CreateBitmap(drawAreaW, drawAreaH) BGGraphics:=Gdip_GraphicsFromImage(BGBitmap) - + ; brsh := Gdip_BrushCreateSolid("0xffff4400") brsh := Gdip_BrushCreateSolid("0xff" BGCol) Gdip_FillRectangle(BGGraphics, brsh, 0, 0, drawAreaW, drawAreaH) pen:=Gdip_CreatePen("0x44000000", 2) gdip_drawLine(BGGraphics, pen, 0, anchorY, drawAreaW, anchorY) gdip_drawLine(BGGraphics, pen, anchorX, 0, anchorX, drawAreaH) - Gdip_DrawRectangle(BGGraphics, pen, 1, 1, drawAreaW-2, drawAreaH-2) + Gdip_DrawRectangle(BGGraphics, pen, 1, 1, drawAreaW-2, drawAreaH-2) Gdip_DeleteBrush(brsh) Gdip_DeletePen(pen) BGCloned:=Gdip_CloneBitmapArea(BGBitmap, 0, 0, drawAreaW, drawAreaH) - if (useMouse=0) + if (useMouse=0) Graphics:=psys.setCanvas(0, 0, drawAreaW, drawAreaH, quality, PHWND) return @@ -373,13 +373,13 @@ changeEProperty: critical gui, main: default gui, main: submit, noHide - + guiControlGet, typeN, main:, eType, text if (typeN="") typeN:="Generic" if (eLB="") eLB:=1 - + ttt:="" if (selCtrl="etype") { @@ -398,7 +398,7 @@ changeEProperty: guiControl, main:, colors, % st_glue(gradientPresets[colorPreN], "`n") gui, main: submit, noHide } - + offx:=(offx="") ? 0 : offx offy:=(offy="") ? 0 : offy ; eLB:=1 @@ -430,7 +430,7 @@ changeEProperty: loop, parse, alphas, %ttt%, `r ; ignore blanks if (trim(A_LoopField)!="") qqq.alpha.push(A_LoopField) - + if (useFrames=1) qqq.life.insertAt(1, "f") ttt:="" @@ -465,7 +465,7 @@ changeEProperty: else Graphics:=psys.setCanvas(0, 0, drawAreaW, drawAreaH, quality, PHWND) , psys.particles:=[] - + useMouseP:=useMouse ; gui, submit, noHide @@ -496,17 +496,17 @@ update: ; toolTip, % psys.drawcount "/" psys.emitters.length(), 0 mouseGetPos, xxx, yyy - + psys.step() psys.clear() - + ; DRAW THE BACKGROUND CLONE HERE if (useMouse=0) - Gdip_DrawImage(Graphics, BGCloned) - + Gdip_DrawImage(Graphics, BGCloned) + ; ahk has smart evaluation. if it sees PPS>=FPS is true ... ; ... it'll never do mod(). Doing less division is better - if (PPS>=FPS || mod(frame, PPS)=0) + if (PPS>=FPS || mod(frame, PPS)=0) { for dummy in psys.Emitters { @@ -521,7 +521,7 @@ update: } } } - + if (useMouse=1) psys.draw() else @@ -602,5 +602,5 @@ rgb(c){ } -#include %A_ScriptDir%\Gdip.ahk -#include %A_ScriptDir%\particles_class.ahk +#include %A_ScriptDir%\..\..\lib-a_to_h\Gdip.ahk +#include %A_ScriptDir%\..\class_particles.ahk diff --git a/classes/_examples/class_particles-demo1_Draw_Over_Buttons.ahk b/classes/_examples/class_particles-demo1_Draw_Over_Buttons.ahk index 2a96a8cd..f034aab1 100644 --- a/classes/_examples/class_particles-demo1_Draw_Over_Buttons.ahk +++ b/classes/_examples/class_particles-demo1_Draw_Over_Buttons.ahk @@ -22,14 +22,14 @@ fps:=30 psys:=new particles(fps) ; create a display/canvas using the dimensions of the picture control "PHWND" -; set the quality to 4, which is the best but slowest (1-4) +; set the quality to 4, which is the best but slowest (1-4) ; add an emitter, this is what stores all the info of how a particle should behave ; if unset, it uses the default values -e1:=psys.addEmitter() ; create the emitter, save its pointer as "e1" for easy access -e1.type:="sparks" ; how it displays -e1.life:=[0.3,0.7] ; how long it will live, 1/3 to 1/3 second, random. -e1.lineWidth:=[35,2] ; transition from these values over its life. +e1:=psys.addEmitter() ; create the emitter, save its pointer as "e1" for easy access +e1.type:="sparks" ; how it displays +e1.life:=[0.3,0.7] ; how long it will live, 1/3 to 1/3 second, random. +e1.lineWidth:=[35,2] ; transition from these values over its life. e1.circleSize:=[30,5] ; transition from these values over its life. e1.alpha:=[120] ; how see-through is it? 255=solid, 0= invisible e1.jitter:=[80,80,200] ; how much will it wiggle from its position each tick? @@ -100,17 +100,17 @@ doTheMagic: psys.clear(psys.ID) } - + ; emitter 1+2 if (A_GuiControl="btn3") { ; move the canvas to the position+size of the button, set the quality to the best (4) psys.setCanvas(pos2x, pos2y, pos2w, pos2h, 4) guiControlGet, pos, pos, %A_GuiControl% - + loop, 50 psys.addParticle(rand(pos2w), rand(pos2h), 1) - + while (psys.particles[1].length()>=1 || psys.particles[2].length()>=1) { if (A_Index<=fps//2) @@ -127,5 +127,5 @@ return -#include %A_ScriptDir%\Gdip.ahk -#include %A_ScriptDir%\particles_class.ahk +#include %A_ScriptDir%\..\..\lib-a_to_h\Gdip.ahk +#include %A_ScriptDir%\..\class_particles.ahk diff --git a/classes/_examples/class_particles-demo2_Draw_On_GUI.ahk b/classes/_examples/class_particles-demo2_Draw_On_GUI.ahk index e3073c1e..dd41a777 100644 --- a/classes/_examples/class_particles-demo2_Draw_On_GUI.ahk +++ b/classes/_examples/class_particles-demo2_Draw_On_GUI.ahk @@ -22,12 +22,12 @@ fps:=30 psys:=new particles(fps) ; create a display/canvas using the dimensions of the picture control "PHWND" -; set the quality to 4, which is the best but slowest (1-4) +; set the quality to 4, which is the best but slowest (1-4) psys.setCanvas(0, 0, 0, 0, 4, PHWND) ; add an emitter, this is what stores all the info of how a particle should behave ; if unset, it uses the default values -e1:=psys.addEmitter() ; create the emitter, save its pointer as "e1" for easy access +e1:=psys.addEmitter() ; create the emitter, save its pointer as "e1" for easy access e1.type:="text" ; how it displays e1.life:=[0.5,1] ; how long it will live, 1/2 to 1 second, random. e1.circleSize:=[22,18] ; at the start of its life, it'll be size 22 text, at the end, 18 @@ -72,5 +72,5 @@ return -#include %A_ScriptDir%\Gdip.ahk -#include %A_ScriptDir%\particles_class.ahk +#include %A_ScriptDir%\..\..\lib-a_to_h\Gdip.ahk +#include %A_ScriptDir%\..\class_particles.ahk diff --git a/classes/_examples/class_particles-demo3_Fullscreen_Mouse.ahk b/classes/_examples/class_particles-demo3_Fullscreen_Mouse.ahk index 85c77fd5..2d5ed156 100644 --- a/classes/_examples/class_particles-demo3_Fullscreen_Mouse.ahk +++ b/classes/_examples/class_particles-demo3_Fullscreen_Mouse.ahk @@ -14,12 +14,12 @@ fps:=30 psys:=new particles(fps) ; create a display/canvas using the dimensions of the picture control "PHWND" -; set the quality to 2, which is pretty good quality, but not the best (1-4) +; set the quality to 2, which is pretty good quality, but not the best (1-4) psys.setCanvas(0, 0, A_ScreenWidth, A_ScreenHeight, 2) ; add an emitter, this is what stores all the info of how a particle should behave ; if unset, it uses the default values -e1:=psys.addEmitter() ; create the emitter, save its pointer as "e1" for easy access +e1:=psys.addEmitter() ; create the emitter, save its pointer as "e1" for easy access e1.type:="Generic" ; how it displays e1.life:=[0.5] ; how long it will live? 1/2 second. e1.LineWidth:=[5, 1] ; transition from 5 to 1 pixels over its life @@ -60,5 +60,5 @@ return -#include %A_ScriptDir%\Gdip.ahk -#include %A_ScriptDir%\particles_class.ahk +#include %A_ScriptDir%\..\..\lib-a_to_h\Gdip.ahk +#include %A_ScriptDir%\..\class_particles.ahk diff --git a/classes/_examples/class_pixelstate-runtime.ahk b/classes/_examples/class_pixelstate-runtime.ahk index 0085c5a4..f44df76c 100644 --- a/classes/_examples/class_pixelstate-runtime.ahk +++ b/classes/_examples/class_pixelstate-runtime.ahk @@ -216,4 +216,9 @@ PixelTrack := {"debug": {}, "CurrentLocation": "Init", "LowHPBeep": false, "Jobs ;;;;;;;;;;;;;;;;;;;;;;; ;; BackgroundTasks ;;;;;;;;;;;;;;;;;;;;;;; -SetTimer, PixelStateBackgroundTasks, % Round(PixelStateTasksFrequency*1000) \ No newline at end of file +SetTimer, PixelStateBackgroundTasks, % Round(PixelStateTasksFrequency*1000) + + +return + +#include %A_ScriptDir%\..\class_pixelstate.ahk diff --git a/classes/_examples/class_taskbarinterface-MsgBox_v2.ahk b/classes/_examples/class_taskbarinterface-MsgBox_v2.ahk index ec0cdf90..16aa780c 100644 --- a/classes/_examples/class_taskbarinterface-MsgBox_v2.ahk +++ b/classes/_examples/class_taskbarinterface-MsgBox_v2.ahk @@ -1,8 +1,9 @@ ; Note that different systems may have different icons available. ; A real application should use its own icons. To load a bitmap as an icon handle, you may use LoadPictureType, see: https://github.com/HelgeffegleH/LoadPictureType -#include ..\taskbarInterface_v2.ahk +#include %A_ScriptDir%\..\Class_taskbarInterface_v2.ahk +#include %A_ScriptDir%\..\Class_threadfunc_V1.ahk ; Template example. Automatically add taskbar ornaments on window creation, in this example, there is one interface for Error-Msgboxes, and one for Success-msgboxes. -taskbarInterface.makeTemplate("errorMsgboxTemplate","Error ahk_class #32770") +taskbarInterface.makeTemplate("errorMsgboxTemplate","Error ahk_class #32770") taskbarInterface.makeTemplate("successMsgboxTemplate","Success ahk_class #32770") ; Make a message box with either F1 or F2. @@ -22,7 +23,7 @@ errorMsgboxTemplate(hWnd){ static smallIconHandle:=LoadPicture("shell32.dll","icon132",isIcon) static bigIconHandle:=LoadPicture("shell32.dll","icon234",isIcon) static overlayIcon:=LoadPicture("wmploc.dll","icon23",isIcon) - + tbi := new taskbarInterface(hwnd) ; Make the interface tbi.setTaskbarIcon(smallIconHandle,bigIconHandle) ; Change taskbar icon Sleep(10) ; Wait for the icon to be set, otherwise the overlayIcon is removed. @@ -36,7 +37,7 @@ successMsgboxTemplate(hwnd){ static smallIconHandle:=LoadPicture("shell32.dll","icon56",isIcon) static bigIconHandle:=LoadPicture("shell32.dll","icon278",isIcon) static overlayIcon:=LoadPicture("wmploc.dll","icon22",isIcon) - + tbi := new taskbarInterface(hwnd) ; Make the interface tbi.setTaskbarIcon(smallIconHandle,bigIconHandle) ; Change taskbar icon Sleep(10) ; Wait for the icon to be set, otherwise the overlayIcon is removed. diff --git a/classes/_examples/class_taskbarinterface-buttons_and_preview._v1.ahk b/classes/_examples/class_taskbarinterface-buttons_and_preview._v1.ahk index eb45e59b..721c9fc1 100644 --- a/classes/_examples/class_taskbarinterface-buttons_and_preview._v1.ahk +++ b/classes/_examples/class_taskbarinterface-buttons_and_preview._v1.ahk @@ -6,7 +6,9 @@ #SingleInstance, Force #NoEnv SetBatchLines, -1 -#include ..\taskbarInterface.ahk +;#include %A_ScriptDir%\..\class_threadfunc.ahk +#include %A_ScriptDir%\..\class_threadfunc_V1.ahk +#include %A_ScriptDir%\..\class_taskbarInterface.ahk ; Start gdi+ If !pToken := Gdip_Startup() diff --git a/classes/_licences/class_Chrome-LICENSE b/classes/_licences/class_Chrome-LICENSE new file mode 100644 index 00000000..65784c79 --- /dev/null +++ b/classes/_licences/class_Chrome-LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 GeekDude + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/classes/_licences/class_VisualStyle-LICENSE.txt b/classes/_licences/class_VisualStyle-LICENSE.txt new file mode 100644 index 00000000..bc9c16cf --- /dev/null +++ b/classes/_licences/class_VisualStyle-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 cheshirecat1373 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/classes/class_AHKWebDriver.ahk b/classes/class_AHKWebDriver.ahk index 7c53f63a..a0459c27 100644 --- a/classes/class_AHKWebDriver.ahk +++ b/classes/class_AHKWebDriver.ahk @@ -1,5 +1,5 @@ #noenv -#include json.ahk +;#include json.ahk class WDSession{ ;-- Selectors ------------------------------------- @@ -48,7 +48,7 @@ class WDSession{ body.capabilities := capabilities body := JSON.Stringify(body) } - else + else body := "{""capabilities"":{}}" this.prefijo:=location this.rc := WDSession.__ws("POST", this.prefijo "session",body ) @@ -105,7 +105,7 @@ class WDSession{ closeWindow(){ this.rc := WDSession.__ws("DELETE", this.prefijo "session/" this.sessionId "/window") return this.rc.isError - } + } getWindowHandles(){ this.rc := WDSession.__ws("GET", this.prefijo "session/" this.sessionId "/window/handles") return this.rc.value @@ -156,7 +156,7 @@ class WDSession{ } else body .= """" id """}" - this.rc := WDSession.__ws("POST", this.prefijo "session/" this.sessionId "/frame", body) + this.rc := WDSession.__ws("POST", this.prefijo "session/" this.sessionId "/frame", body) return this.rc.isError } frameParent(){ @@ -165,14 +165,14 @@ class WDSession{ } getElementActive(){ this.rc := WDSession.__ws("GET", this.prefijo "session/" this.sessionId "/element/active") - if(this.rc.isError) + if(this.rc.isError) return "" return new WDSession.WDElement(this.rc.value, this) } element(selector, value){ local body := {using: selector, value: value } this.rc := WDSession.__ws("POST", this.prefijo "session/" this.sessionId "/element", JSON.Stringify(body)) - if(this.rc.isError) + if(this.rc.isError) return "" return new WDSession.WDElement(this.rc.value, this) } @@ -180,7 +180,7 @@ class WDSession{ local body := {using: selector, value: value } local list,i,k this.rc := WDSession.__ws("POST", this.prefijo "session/" this.sessionId "/elements", JSON.Stringify(body)) - if(this.rc.isError) + if(this.rc.isError) return "" list:=[] loop % this.rc.value.Count() @@ -189,7 +189,7 @@ class WDSession{ } getSource(){ this.rc := WDSession.__ws("GET", this.prefijo "session/" this.sessionId "/source") - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } @@ -197,7 +197,7 @@ class WDSession{ local body:={} local x,i body.script := script - if(args="") + if(args="") args:=[] else for x in args @@ -205,10 +205,10 @@ class WDSession{ if(args[x].uuid = WDSession.WDElement.weID) args[x] := {WDSession.WDElement.weID: args[x].ref} else - this.__dumpObj(args[x]) + this.__dumpObj(args[x]) } body.args:=args - this.rc := WDSession.__ws("POST", this.prefijo "session/" this.sessionId "/execute/" sync, JSON.Stringify(body)) + this.rc := WDSession.__ws("POST", this.prefijo "session/" this.sessionId "/execute/" sync, JSON.Stringify(body)) if(isObject(this.rc.value)) if(this.rc.value.HasKey(WDSession.WDElement.weID)) this.rc.value := new WDSession.WDElement(obj, this) @@ -218,34 +218,34 @@ class WDSession{ } getAllCookies(){ this.rc := WDSession.__ws("GET", this.prefijo "session/" this.sessionId "/cookie") - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } getCookie(name){ this.rc := WDSession.__ws("GET", this.prefijo "session/" this.sessionId "/cookie/" name) - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } cookie(name,value,path:="",domain:="",secure:="",httpOnly:="",expiry:=""){ local body:={} - cookieObj:={} + cookieObj:={} cookieObj.name:=name cookieObj.value:=value if(isObject(path)){ for k,v in path cookieObj[k]:=v }else{ - if(path!="") + if(path!="") cookieObj.path:=path - if(domain!="") + if(domain!="") cookieObj.domain:=domain - if(secure!="") + if(secure!="") cookieObj.secure:=secure - if(httpOnly!="") + if(httpOnly!="") cookieObj.httpOnly:=httpOnly - if(expiry!="") + if(expiry!="") cookieObj.expiry:=expiry } body.cookie:=cookieObj @@ -262,7 +262,7 @@ class WDSession{ } getScreenshot(){ this.rc := WDSession.__ws("GET", this.prefijo "session/" this.sessionId "/screenshot") - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } @@ -325,52 +325,52 @@ class WDSession{ } getSelected(){ this.rc := WDSession.__ws("GET", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/selected") - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } getAttribute(name){ this.rc := WDSession.__ws("GET", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/attribute/" name) - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } getProperty(name){ this.rc := WDSession.__ws("GET", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/property/" name) - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } getCSS(propertyName){ this.rc := WDSession.__ws("GET", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/css/" propertyName) - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } getText(){ this.rc := WDSession.__ws("GET", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/text") - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } getName(){ this.rc := WDSession.__ws("GET", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/name") - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } getRect(){ this.rc := WDSession.__ws("GET", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/rect") - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } getEnabled(){ this.rc := WDSession.__ws("GET", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/enabled") - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value - } + } click(){ this.rc := WDSession.__ws("POST", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/click", "{}") return this.rc.isError @@ -385,7 +385,7 @@ class WDSession{ } getScreenshot(){ this.rc := WDSession.__ws("GET", this.objSession.prefijo "session/" this.objSession.sessionId "/element/" this.ref "/screenshot") - if(this.rc.isError) + if(this.rc.isError) return "" return this.rc.value } @@ -408,11 +408,11 @@ class WDSession{ debug(copyToClipboard:=true){ if(copyToClipboard) Clipboard:=this.rc.raw - msg := this.rc.raw - . "`n---------------------------------------" + msg := this.rc.raw + . "`n---------------------------------------" . "`n Error:" this.rc.isError . "`n Status:" this.rc.status - . "`n---------------------------------------" + . "`n---------------------------------------" if(isObject(this.rc.value)){ msg .= "`n Value:" for k,v in this.rc.value diff --git a/classes/class_AccV2.ahk b/classes/class_AccV2.ahk index ced5e93c..63e39838 100644 --- a/classes/class_AccV2.ahk +++ b/classes/class_AccV2.ahk @@ -1,50 +1,127 @@ -;Member Properties: {accChild,accChildCount,accDefaultAction,accDescription,accFocus,accHelp,accHelpTopic,accKeyboardShortcut,accName,accParent,accRole,accSelection,accState,accValue} -;accChild Read-only An IDispatch interface for the specified child, if one exists. All objects must support this property. See get_accChild. -;accChildCount Read-only The number of children that belong to this object. All objects must support this property. See get_accChildCount. -;accDefaultAction Read-only A string that describes the object's default action. Not all objects have a default action. See get_accDefaultAction. -;accDescription Read-only Note The accDescription property is not supported in the transition to UI Automation. Microsoft Active Accessibility servers and applications should not use it. A string that describes the visual appearance of the specified object. Not all objects have a description. -;accFocus Read-only The object that has the keyboard focus. All objects that receive the keyboard focus must support this property. See get_accFocus. -;accHelp Read-only A help string. Not all objects support this property. See get_accHelp. -;accHelpTopic Read-only Note The accHelpTopic property is deprecated and should not be used.The full path of the help file associated with the specified object and the identifier of the appropriate topic within that file. Not all objects support this property. -;accKeyboardShortcut Read-only The object's shortcut key or access key, also known as the mnemonic. All objects that have a shortcut key or an access key support this property. See get_accKeyboardShortcut. -;accName Read-only The name of the object. All objects support this property. See get_accName. -;accParent Read-only The IDispatch interface of the object's parent. All objects support this property. See get_accParent. -;accRole Read-only Information that describes the role of the specified object. All objects support this property. See get_accRole. -;accSelection Read-only The selected children of this object. All objects that support selection must support this property. See get_accSelection. -;accState Read-only The current state of the object. All objects support this property. See get_accState. -;accValue Read/write The value of the object. Not all objects have a value. See get_accValue, put_accValue. - -;Member Methods: {accDoDefaultAction,accHitTest,accLocation,accNavigate,accSelect} -;accDoDefaultAction Performs the specified object's default action. Not all objects have a default action. -;accHitTest Retrieves the child element or child object at a given point on the screen. All visual objects support this method. -;accLocation Retrieves the specified object's current screen location. All visual objects support this method. -;accNavigate Note The accNavigate method is deprecated and should not be used. Clients should use other methods and properties such as AccessibleChildren, get_accChild, get_accParent, and IEnumVARIANT. Traverses to another user interface element within a container and retrieves the object. All visual objects support this method. -;accSelect Modifies the selection or moves the keyboard focus of the specified object. All objects that support selection or receive the keyboard focus must support this method. - - - - -;------------------------------------------------------------------------------ -; Acc.ahk Standard Library -; by Sean -; Updated by jethrow: +;---------------------------------------------------------------------------------------------------------------------- +; Acc.ahk +;---------------------------------------------------------------------------------------------------------------------- +; Authors (dd/mm/yyyy): +; Sean () +; jethrow (19/02/2012) +; Sancarn (26/11/2017,18/01/2019,10/05/2019) +;---------------------------------------------------------------------------------------------------------------------- +; CHANGE LOG: +;---------------------------------------------------------------------------------------------------------------------- +;19/02/2012: ; Modified ComObjEnwrap params from (9,pacc) --> (9,pacc,1) ; Changed ComObjUnwrap to ComObjValue in order to avoid AddRef (thanks fincs) ; Added Acc_GetRoleText & Acc_GetStateText ; Added additional functions - commented below ; Removed original Acc_Children function -; last updated 2/19/2012 -; Updated by Sancarn: -; Added all relevant enumerations -; Added IAccessible walking functionality e.g. -; acc_childrenFilter(oAcc, ACC_FILTERS.byDescription, "Amazing button") +;26/11/2017: +; Added Enumerations as Objects +; Added IAccessible walking functionality e.g. +; acc_childrenFilter(oAcc, ACC_FILTERS.byDescription, "Amazing button") +; +; acc_childrenFilter(oAcc, Func("myAwesomeFunction"), true) +; myAwesomeFunction(oAcc,val){ +; return val +; } +; Added Acc_ChildProxy to Acc_Children +;18/01/2019: +; Documentation Update +;10/05/2019: +; Error Checking to ACC_ChildProxy +;---------------------------------------------------------------------------------------------------------------------- +;ACC INTELLISENSE PACK: +;---------------------------------------------------------------------------------------------------------------------- +;IAcc Member Properties: [accChild,accChildCount,accDefaultAction,accDescription,accFocus,accHelp,accHelpTopic,accKeyboardShortcut,accName,accParent,accRole,accSelection,accState,accValue] +;Member Methods: [accDoDefaultAction,accHitTest,accLocation,accNavigate,accSelect] +;Global Constants: [ACC_NAVDIR,ACC_SELECTIONFLAG,ACC_EVENT,VT_CONSTANTS,ACC_FILTERS,ACC_OBJID,ACC_STATE,ACC_ROLE] +;Global Methods: [Acc_ObjectFromEvent,Acc_ObjectFromPoint,Acc_ObjectFromWindow,Acc_WindowFromObject,Acc_SetWinEventHook,Acc_UnhookWinEvent,Acc_Location,Acc_Parent,Acc_Child,Acc_Children,Acc_Get,acc_childrenFilter,acc_getRootElement] ; -; acc_childrenFilter(oAcc, Func("myAwesomeFunction"), true) +;---------------------------------------------------------------------------------------------------------------------- +; DOCUMENTATION: +;---------------------------------------------------------------------------------------------------------------------- +;IAcc Member Properties: +; accChild Read-only An IDispatch interface for the specified child, if one exists. All objects must support this property. See get_accChild. +; accChildCount Read-only The number of children that belong to this object. All objects must support this property. See get_accChildCount. +; accDefaultAction Read-only A string that describes the object's default action. Not all objects have a default action. See get_accDefaultAction. +; accDescription Read-only Note The accDescription property is not supported in the transition to UI Automation. Microsoft Active Accessibility servers and applications should not use it. A string that describes the visual appearance of the specified object. Not all objects have a description. +; accFocus Read-only The object that has the keyboard focus. All objects that receive the keyboard focus must support this property. See get_accFocus. +; accHelp Read-only A help string. Not all objects support this property. See get_accHelp. +; accHelpTopic Read-only Note The accHelpTopic property is deprecated and should not be used.The full path of the help file associated with the specified object and the identifier of the appropriate topic within that file. Not all objects support this property. +; accKeyboardShortcut Read-only The object's shortcut key or access key, also known as the mnemonic. All objects that have a shortcut key or an access key support this property. See get_accKeyboardShortcut. +; accName Read-only The name of the object. All objects support this property. See get_accName. +; accParent Read-only The IDispatch interface of the object's parent. All objects support this property. See get_accParent. +; accRole Read-only Information that describes the role of the specified object. All objects support this property. See get_accRole. +; accSelection Read-only The selected children of this object. All objects that support selection must support this property. See get_accSelection. +; accState Read-only The current state of the object. All objects support this property. See get_accState. +; accValue Read/write The value of the object. Not all objects have a value. See get_accValue, put_accValue. +;Member Methods: +; accDoDefaultAction Performs the specified object's default action. Not all objects have a default action. +; accHitTest Retrieves the child element or child object at a given point on the screen. All visual objects support this method. +; accLocation Retrieves the specified object's current screen location. All visual objects support this method. +; accNavigate Note The accNavigate method is deprecated and should not be used. Clients should use other methods and properties such as AccessibleChildren, get_accChild, get_accParent, and IEnumVARIANT. Traverses to another user interface element within a container and retrieves the object. All visual objects support this method. +; accSelect Modifies the selection or moves the keyboard focus of the specified object. All objects that support selection or receive the keyboard focus must support this method. +;Global Constants: +; ACC_NAVDIR Object containing different navigation direction flags. +; ACC_SELECTIONFLAG Object containing different accSelect() Flags. +; ACC_EVENT Object containing different windows events which can be used with Acc_ObjectFromEvent. +; VT_CONSTANTS Object containing different COM VTable constants. +; ACC_FILTERS Object containing filter functions to be used with acc_childrenFilter. +; ACC_OBJID Object containing different object names and ids. +; ACC_STATE Object containing different state names and ids. +; ACC_ROLE Object containing different role names and ids. +;Global Methods: +; Acc_ObjectFromEvent(ByRef _idChild_, hWnd, idObject, idChild) - Used to get Acc object from Event +; Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") - Used to get Acc object from X,Y Point +; Acc_ObjectFromWindow(hWnd, idObject = -4) - Used to get Acc object from hWND +; Acc_WindowFromObject(pacc) - Used to get hWND from ACC object +; Acc_SetWinEventHook(eventMin, eventMax, pCallback) - Listen for Windows events. Call callback with Acc object param. +; Acc_UnhookWinEvent(hHook) - Stop listening to existing event hook. +; Acc_Location(Acc, ChildId=0) - Get the location of an IAccessible object +; Acc_Parent(Acc) - Get the parent object of an element +; Acc_Child(Acc, ChildId=0) - Get a child of the object with a specified id. +; Acc_Children(Acc) - Get the children of an IAccessible object (as an array) +; Acc_Get(Cmd, ChildPath="", ChildID=0, WinTitle="", WinText="", ExcludeTitle="", ExcludeText="") - Get an accessible object +; acc_childrenFilter(oAcc, fCondition, value=0, returnOne=false, obj=0) - Filter children by some defined condition +; acc_getRootElement() - Returns the Acc Object for the Desktop (Root of all Acc tree elements) +;DEPRECATED AND INTERNAL METHODS: +; Acc_Init() - DO NOT CALL! +; Acc_Query(Acc) - DO NOT CALL! Query IAccessible interface from object +; Acc_Error(p="") - DO NOT CALL! Error information +; Acc_GetRoleText(nRole) - [DEPRECATED. USE ACC_ROLE OBJECT ] Get's ACC Role as Text. +; Acc_GetStateText(nState) - [DEPRECATED. USE ACC_STATE OBJECT ] Get's ACC State as Text. +; Acc_Role(Acc, ChildId=0) - [DEPRECATED. USE ACC_ROLE OBJECT ] +; Acc_State(Acc, ChildId=0) - [DEPRECATED. USE ACC_STATE OBJECT ] +; Acc_ChildrenByRole(Acc, Role) - [DEPRECATED. USE acc_childrenFilter] Get all children of the specified role. +; acc_childrenByName(oAccessible, name,returnOne=false) - [DEPRECATED. USE acc_childrenFilter]Filter children by name, if returnOne then only 1 child is returned +; +;---------------------------------------------------------------------------------------------------------------------- +;Further descriptions: +;---------------------------------------------------------------------------------------------------------------------- +;acc_childrenFilter +; Filters the children in an acc object and calls the function defined by the 2nd parameter with Acc object and the 3rd param. +; If the function returns true, the child is included in the filter. +;Example: +; The following function will include children based on the 3rd parameter: +; acc_childrenFilter(oAcc, Func("myAwesomeFunction"), true) ;Returns all children +; acc_childrenFilter(oAcc, Func("myAwesomeFunction"), true) ;Returns no children ; myAwesomeFunction(oAcc,val){ ; return val ; } -; last updated 26/11/2017 -;------------------------------------------------------------------------------ +; +;ACC_FILTERS +; These are commonly used in conjunction with `acc_childrenFilter`: +;Example: +; acc_childrenFilter(oAcc, ACC_FILTERS.byDescription, "Amazing button") +;List of helper methods: +; ACC_FILTERS.byDefaultAction(oAcc,action) - Filter children by a specific default action +; ACC_FILTERS.byDescription(oAcc,desc) - Filter children by a specific description +; ACC_FILTERS.byValue(oAcc, value) - Filter children by a specific value +; ACC_FILTERS.byHelp(oAcc, hlpTxt) - Filter children by a specific help text +; ACC_FILTERS.byState(oAcc, state) - Filter children by a specific state +; ACC_FILTERS.byRole(oAcc, role) - Filter children by a specific role +; ACC_FILTERS.byName(oAcc, name) - Filter children by a specific name +; ACC_FILTERS.byRegex(oAcc, regex) - Filter children by regex matching against string: %accName%;%accHelp%;%accValue%;%accDescription%;%accDefaultAction% +;---------------------------------------------------------------------------------------------------------------------- ;https://msdn.microsoft.com/en-us/library/windows/desktop/dd373606(v=vs.85).aspx class ACC_OBJID{ @@ -66,58 +143,58 @@ class ACC_OBJID{ ;https://msdn.microsoft.com/en-us/library/windows/desktop/dd373609(v=vs.85).aspx class ACC_STATE { - static NORMAL := 0 - static UNAVAILABLE := 0x1 - static SELECTED := 0x2 - static FOCUSED := 0x4 - static PRESSED := 0x8 - static CHECKED := 0x10 - static MIXED := 0x20 - static INDETERMINATE := this.MIXED - static READONLY := 0x40 - static HOTTRACKED := 0x80 - static DEFAULT := 0x100 - static EXPANDED := 0x200 - static COLLAPSED := 0x400 - static BUSY := 0x800 - static FLOATING := 0x1000 - static MARQUEED := 0x2000 - static ANIMATED := 0x4000 - static INVISIBLE := 0x8000 - static OFFSCREEN := 0x10000 - static SIZEABLE := 0x20000 - static MOVEABLE := 0x40000 - static SELFVOICING := 0x80000 - static FOCUSABLE := 0x100000 - static SELECTABLE := 0x200000 - static LINKED := 0x400000 - static TRAVERSED := 0x800000 - static MULTISELECTABLE := 0x1000000 - static EXTSELECTABLE := 0x2000000 - static ALERT_LOW := 0x4000000 - static ALERT_MEDIUM := 0x8000000 - static ALERT_HIGH := 0x10000000 - static PROTECTED := 0x20000000 - static VALID := 0x7fffffff + static NORMAL := 0 + static UNAVAILABLE := 0x1 + static SELECTED := 0x2 + static FOCUSED := 0x4 + static PRESSED := 0x8 + static CHECKED := 0x10 + static MIXED := 0x20 + static INDETERMINATE := this.MIXED + static READONLY := 0x40 + static HOTTRACKED := 0x80 + static DEFAULT := 0x100 + static EXPANDED := 0x200 + static COLLAPSED := 0x400 + static BUSY := 0x800 + static FLOATING := 0x1000 + static MARQUEED := 0x2000 + static ANIMATED := 0x4000 + static INVISIBLE := 0x8000 + static OFFSCREEN := 0x10000 + static SIZEABLE := 0x20000 + static MOVEABLE := 0x40000 + static SELFVOICING := 0x80000 + static FOCUSABLE := 0x100000 + static SELECTABLE := 0x200000 + static LINKED := 0x400000 + static TRAVERSED := 0x800000 + static MULTISELECTABLE := 0x1000000 + static EXTSELECTABLE := 0x2000000 + static ALERT_LOW := 0x4000000 + static ALERT_MEDIUM := 0x8000000 + static ALERT_HIGH := 0x10000000 + static PROTECTED := 0x20000000 + static VALID := 0x7fffffff } ;https://msdn.microsoft.com/en-us/library/windows/desktop/dd373608(v=vs.85).aspx class ACC_ROLE { - static TITLEBAR := 0x1 - static MENUBAR := 0x2 - static SCROLLBAR := 0x3 - static GRIP := 0x4 - static SOUND := 0x5 - static CURSOR := 0x6 - static CARET := 0x7 - static ALERT := 0x8 - static WINDOW := 0x9 - static CLIENT := 0xa - static MENUPOPUP := 0xb - static MENUITEM := 0xc - static TOOLTIP := 0xd - static APPLICATION := 0xe - static DOCUMENT := 0xf + static TITLEBAR := 0x1 + static MENUBAR := 0x2 + static SCROLLBAR := 0x3 + static GRIP := 0x4 + static SOUND := 0x5 + static CURSOR := 0x6 + static CARET := 0x7 + static ALERT := 0x8 + static WINDOW := 0x9 + static CLIENT := 0xa + static MENUPOPUP := 0xb + static MENUITEM := 0xc + static TOOLTIP := 0xd + static APPLICATION := 0xe + static DOCUMENT := 0xf static PANE := 0x10 static CHART := 0x11 static DIALOG := 0x12 @@ -185,11 +262,11 @@ class ACC_NAVDIR { ;https://msdn.microsoft.com/en-us/library/windows/desktop/dd373634(v=vs.85).aspx class ACC_SELECTIONFLAG { - static NONE := 0x0 - static TAKEFOCUS := 0x1 - static TAKESELECTION := 0x2 - static EXTENDSELECTION := 0x4 - static ADDSELECTION := 0x8 + static NONE := 0x0 + static TAKEFOCUS := 0x1 + static TAKESELECTION := 0x2 + static EXTENDSELECTION := 0x4 + static ADDSELECTION := 0x8 static REMOVESELECTION := 0x10 static VALID := 0x1f } @@ -320,21 +397,23 @@ class ACC_FILTERS { } byRegex(oAcc,rx){ - info := oAcc.accName . ";" - . oAcc.accHelp . ";" - . oAcc.accValue ";" - . oAcc.accDescription . ";" + info := oAcc.accName . ";" + . oAcc.accHelp . ";" + . oAcc.accValue ";" + . oAcc.accDescription . ";" . oAcc.accDefaultAction return RegexMatch(Haystack, rx) > 0 } } -Acc_Init() { +Acc_Init() +{ Static h := DllCall("LoadLibrary","Str","oleacc","Ptr") } -Acc_ObjectFromEvent(ByRef _idChild_, hWnd, idObject, idChild) { +Acc_ObjectFromEvent(ByRef _idChild_, hWnd, idObject, idChild) +{ Acc_Init() if (DllCall("oleacc\AccessibleObjectFromEvent" , "Ptr", hWnd @@ -347,7 +426,8 @@ Acc_ObjectFromEvent(ByRef _idChild_, hWnd, idObject, idChild) { } } -Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") { +Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") +{ Acc_Init() if (DllCall("oleacc\AccessibleObjectFromPoint" , "Int64", x == ""||y=="" @@ -360,7 +440,8 @@ Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") { } } -Acc_ObjectFromWindow(hWnd, idObject = -4) { +Acc_ObjectFromWindow(hWnd, idObject = -4) +{ Acc_Init() if (DllCall("oleacc\AccessibleObjectFromWindow" , "Ptr", hWnd @@ -376,7 +457,8 @@ Acc_ObjectFromWindow(hWnd, idObject = -4) { return ComObjEnwrap(9,pacc,1) } -Acc_WindowFromObject(pacc) { +Acc_WindowFromObject(pacc) +{ if (DllCall("oleacc\WindowFromAccessibleObject" , "Ptr", IsObject(pacc) ? ComObjValue(pacc) : pacc , "Ptr*", hWnd) = 0) @@ -384,9 +466,10 @@ Acc_WindowFromObject(pacc) { } ;Implement this? -; IAccessibleHandler::AccessibleObjectFromID +; IAccessibleHandler::AccessibleObjectFromID -Acc_GetRoleText(nRole) { +Acc_GetRoleText(nRole) +{ nSize := DllCall("oleacc\GetRoleText" , "Uint", nRole , "Ptr", 0 @@ -399,7 +482,8 @@ Acc_GetRoleText(nRole) { return sRole } -Acc_GetStateText(nState) { +Acc_GetStateText(nState) +{ nSize := DllCall("oleacc\GetStateText" , "Uint", nState , "Ptr", 0 @@ -412,11 +496,13 @@ Acc_GetStateText(nState) { return sState } -Acc_SetWinEventHook(eventMin, eventMax, pCallback) { +Acc_SetWinEventHook(eventMin, eventMax, pCallback) +{ Return DllCall("SetWinEventHook", "Uint", eventMin, "Uint", eventMax, "Uint", 0, "Ptr", pCallback, "Uint", 0, "Uint", 0, "Uint", 0) } -Acc_UnhookWinEvent(hHook) { +Acc_UnhookWinEvent(hHook) +{ Return DllCall("UnhookWinEvent", "Ptr", hHook) } /* Win Events: @@ -460,7 +546,7 @@ Acc_Location(Acc, ChildId=0) { ; adapted from Sean's code . " h" NumGet(h,0,"int") } } -Acc_Parent(Acc) { +Acc_Parent(Acc) { try parent := Acc.accParent return parent ? Acc_Query(parent) : } @@ -471,7 +557,7 @@ Acc_Child(Acc, ChildId=0) { } ; thanks Lexikos - www.autohotkey.com/forum/viewtopic.php?t=81731&p=509530#509530 -Acc_Query(Acc) { +Acc_Query(Acc) { try return ComObj(9, ComObjQuery(Acc, "{618736e0-3c3d-11cf-810c-00aa00389b71}"), 1) } @@ -499,7 +585,7 @@ Acc_Children(Acc) { { i:=(A_Index-1)*(A_PtrSize*2+8)+8 child:=NumGet(varChildren,i) - + ;I assume NumGet(varChildren,i-8) is ComObjType ~Sancarn ComType := NumGet(varChildren,i-8) if (ComType = VT_CONSTANTS.DISPATCH) { @@ -511,7 +597,7 @@ Acc_Children(Acc) { ErrorLevel := "Unknown ComType: " ComType Children.push(child) } - } + } return Children.MaxIndex()?Children: } else ErrorLevel := "AccessibleChildren DllCall Failed" @@ -519,6 +605,7 @@ Acc_Children(Acc) { if Acc_Error() throw Exception(ErrorLevel,-1) } + Acc_ChildrenByRole(Acc, Role) { if ComObjType(Acc,"Name")!="IAccessible" ErrorLevel := "Invalid IAccessible Object" @@ -606,16 +693,16 @@ acc_childrenByName(oAccessible, name,returnOne=false){ } acc_childrenFilter(oAcc, fCondition, value=0, returnOne=false, obj=0){ - + items:=Acc_Children(oAcc) results := [] if !IsFunc(fCondition) - return 0 + return 0 if obj =0 obj:=ACC_FILTERS - + methodCallConvention = instr(fCondition.name, ".") > 0 - + for k,item in items { ;fCondition(this ==> stores variables && other methods of object,item,value) @@ -640,25 +727,68 @@ acc_getRootElement(){ class ACC_ChildProxy { __New(oAccParent,id){ - this.__accParent := oAccParent - this.__accChildID := id - this.accDefaultAction := oAccParent.accDefaultAction(id) - this.accDescription := oAccParent.accDescription(id) - this.accHelp := oAccParent.accHelp(id) - this.accHelpTopic := oAccParent.accHelpTopic(id) - this.accKeyboardShortcut := oAccParent.accKeyboardShortcut(id) - this.accName := oAccParent.accName(id) - this.accParent := oAccParent - this.accRole := oAccParent.accRole(id) - this.accState := oAccParent.accState(id) - this.accValue := oAccParent.accValue(id) - this.accFocus := this.accState && ACC_STATE.FOCUSED + global ACC_STATE + this.__accParent := oAccParent + this.__accChildID := id + this.accParent := oAccParent + + try { + this.accDefaultAction := oAccParent.accDefaultAction(id) + } catch e { + this.accDefaultAction:="" + } + try { + this.accDescription := oAccParent.accDescription(id) + } catch e { + this.accDescription:="" + } + try { + this.accHelp := oAccParent.accHelp(id) + } catch e { + this.accHelp:="" + } + try { + this.accHelpTopic := oAccParent.accHelpTopic(id) + } catch e { + this.accHelpTopic:="" + } + try { + this.accKeyboardShortcut := oAccParent.accKeyboardShortcut(id) + } catch e { + this.accKeyboardShortcut:="" + } + try { + this.accName := oAccParent.accName(id) + } catch e { + this.accName:="" + } + + try { + this.accRole := oAccParent.accRole(id) + } catch e { + this.accRole:="" + } + try { + this.accState := oAccParent.accState(id) + } catch e { + this.accState:="" + } + try { + this.accValue := oAccParent.accValue(id) + } catch e { + this.accValue:="" + } + try { + this.accFocus := this.accState && ACC_STATE.FOCUSED + } catch e { + this.accFocus:="" + } } - + accDoDefaultAction(){ return this.__accParent.accDoDefaultAction(this.__accChildID) } - + accHitTest(){ return false } diff --git a/classes/class_Array.Prototype.ahk b/classes/class_Array.Prototype.ahk new file mode 100644 index 00000000..28c82b41 --- /dev/null +++ b/classes/class_Array.Prototype.ahk @@ -0,0 +1,499 @@ +;===== Functions ==========; + +Array(_parameters*) { + r := {"base": __Array} + + Loop, % _parameters.Length() + r[A_Index - 1] := _parameters[A_Index] + + Return (r) +} + +;===== Classes ==========; + +Class __Array { ;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype + + ;===== *** Modified propertie(s): + + /* + Array.Length[ := Integer] + + Description: + Reflects the number of elements in an array. + */ + Length[] { + Get { + Return (Round(this.MaxIndex() + 1)) + } + + Set { + If (value ~= "^([0-9]+)$") { ;Does not support negative integers. + o := value - (s := this.Length) + + Loop, % Abs(o) + (o < 0) ? this.RemoveAt(s - A_Index) : this[s + (A_Index - 1)] := "undefined" ;["" || """""" || "undefined"]. + } + + Return (this.Length) + } + } + + ;===== *** Modified method(s): + + /* + Array.Push(_element1[, _element2[, ...[, _elementN]]]) + + Description: + Adds one or more elements to the end of an array and returns the new length of the array. + + Note: + See known issue on Concat(). + */ + Push(_elements*) { + s := this.Length, m := Round(_elements.MaxIndex()) + + If (m) + this.InsertAt(s, _elements*) + + Return (s + m) + } + + /* + Array.Pop() + + Description: + Removes the last element from an array and returns that element. + */ + Pop() { + m := this.MaxIndex() + + Return (m ? this.RemoveAt(m) : "undefined") ;["" || """""" || "undefined"]. + } + + ;===== *** Custom propertie(s): + + /* + Array.IsArray + + Description: + Returns true for all arrays. + */ + IsArray[] { + Get { + Return (1) + } + } + + ;===== *** Custom method(s): + + /* + Array.Sum([_offset[, _start[, _end]]]) + + Description: + Sums all number values in an array and optionally offsets the total. + */ + Sum(_offset := 0, _start := 0, _end := "undefined") { + s := this.Length + , _start := (_start >= 0 ? Min(s, _start) : Max((s + _start), 0)) + + Loop, % (_end != "undefined" ? _end >= 0 ? Min(s, _end) : Max(s + _end, 0) : s) - _start + _offset += this[_start]*(!IsNaN(this[_start++])) + + Return (_offset) + } + + /* + Array.Swap(_index1, _index2) + + Description: + Swap any two elements in an array. + */ + Swap(_index1, _index2) { + t := this[_index1] + this[_index1] := this[_index2] + this[_index2] := t + + Return (this) + } + + ;===== *** Mutator method(s): + + ;*** CopyWithin() + + /* + Array.Fill([_value[, _start[, _end]]]) + + Description: + Fills all the elements of an array from a start index to an end index with a static value. + */ + Fill(_value := "undefined", _start := 0, _end := "undefined") { ;_value := ["" || """""" || "undefined"]. + s := this.Length + , _start := (_start >= 0 ? Min(s, _start) : Max((s + _start), 0)) + + Loop, % (_end != "undefined" ? _end >= 0 ? Min(s, _end) : Max(s + _end, 0) : s) - _start + this[_start++] := _value + + Return (this) + } + + /* + Array.Reverse() + + Description: + Reverses the order of the elements of an array in place — the first becomes the last, and the last becomes the first. + */ + Reverse() { + s := this.Length + + Loop, % s + this.InsertAt(s - 1, this.RemoveAt(s - A_Index)) + + Return (this) + } + + /* + Array.Shift() + + Description: + Removes the first element from an array and returns that element. + */ + Shift() { + Return (this.Length ? this.RemoveAt(0) : "undefined") ;["" || """""" || "undefined"]. + } + + /* + Array.Sort([_compareFunction]) + + Description: + Sorts the elements of an array in place and returns the array. + + Note: + Use "StringCaseSense, [On || Off]" with the default _compareFunction to control case sensetivity. + */ + Sort(_compareFunction := "DefaultSort") { + s := this.Length + + While (c != 0) { + c := 0 + + Loop, % s - 1 + If (%_compareFunction%(this[A_Index - 1], this[A_Index]) > 0) + this.Swap(A_Index - (c := 1), A_Index) + s-- + } + + Return (this) + } + + /* + Array.Splice(_start[, _count[, _element1[, _element2[, ...[, _elementN]]]]]) + + Description: + Adds and/or removes elements from an array. + */ + Splice(_start, _count := "undefined", _elements*) { + s := this.Length, m := _elements.MaxIndex() + , _start := (_start >= 0 ? Min(s, _start) : Max((s + _start), 0)), r := [] + + Loop, % (_count != "undefined" ? Max(s <= _start + _count ? s - _start : _count, 0) : m ? 0 : s) + r.InsertAt(A_Index - 1, this.RemoveAt(_start)) + + If (m) + this.InsertAt(_start, _elements*) + + return (r) + } + + /* + Array.UnShift(_element1[, _element2[, ...[, _elementN]]]) + + Description: + Adds one or more elements to the front of an array and returns the new length of the array. + */ + UnShift(_elements*) { + If (_elements.MaxIndex()) + this.InsertAt(0, _elements*) + + Return (this.Length) + } + + ;===== *** Accessor method(s): + + /* + Array.Concat(_element1[, _element2[, ...[, _elementN]]]) + + Description: + Returns a new array that is this array joined with other array(s) and/or value(s). + + Known issue: + The temporary A_Args array used as a parameter does not have a base class to manipulate and as such is beyond my ability to address. Just be careful in how you pass objects to this function. i.e + + array := [[1, {2: [2]}, 3], [4, 5, 6], [7, 8, 9]] + MsgBox, % [].Concat(array*).Join(", ") + + will skip over the first index. Use "[].Concat(array)" instead and manually strip nested arrays. + */ + Concat(_elements*) { + r := this ;Referencing the same object, this is consistent with MDN. Replace with "this.Clone()" if it is not to you liking. + + For i, v in _elements { + If (v.IsArray) + Loop, % v.Length + r.Push(v[A_Index - 1]) + + Else + r.Push(v) ;Catch for object/string or number element(s). + } + + Return (r) + } + + /* + Array.Includes(_needle[, _start]) + + Description: + Determines whether an array contains a certain element, returning true or false as appropriate. + */ + Includes(_needle, _start := 0) { + Return (this.IndexOf(_needle, _start) != -1) + } + + /* + Array.IndexOf(_needle[, _start]) + + Description: + Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. + */ + IndexOf(_needle, _start := 0) { + s := this.Length + , _start := (_start >= 0 ? Min(s, _start) : Max((s + _start), 0)) + + Loop, % s - _start { + If (this[_start] = _needle) + Return (_start) + + _start++ + } + + Return (-1) + } + + /* + Array.Join([_deliminator]) + + Description: + Joins all elements of an array into a string. + */ + Join(_deliminator := ",") { + m := Round(this.MaxIndex()) + + For i, v in this + r .= (v.IsArray ? v.Join(_deliminator) : IsObject(v) ? "[object Object]" : v) . (i < m ? _deliminator : "") ;Uses recursion to handle nested arrays. + + Return (r) + } + + /* + Array.LastIndexOf(_needle[, _start]) + + Description: + Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. + */ + LastIndexOf(_needle, _start := -1) { + s := this.Length + , _start := (_start >= 0 ? Min(s - 1, _start) : Max(s + _start, -1)) + + While (_start > -1) { + If (this[_start] = _needle) + Return (_start) + + _start-- + } + + Return (-1) + } + + /* + Array.Slice([_start[, _end]]) + + Description: + Extracts a section of an array and returns a new array. + */ + Slice(_start := 0, _end := "undefined") { + s := this.Length + , _start := (_start >= 0 ? Min(s, _start) : Max((s + _start), 0)), r := [] + + Loop, % (_end != "undefined" ? _end >= 0 ? Min(s, _end) : Max(s + _end, 0) : s) - _start + r.Push(this[_start++]) + + Return (r) + } + + ;*** ToSource() + + /* + Array.ToString() + + Description: + Returns a string representing the array and its elements. + */ + ToString() { + m := Round(this.MaxIndex()) + + For i, v in this + r .= (v.IsArray ? v.ToString() : IsObject(v) ? "[object Object]" : v) . (i < m ? "," : "") + + Return (r) + } + + ;*** ToLocaleString() + + ;===== *** Iteration method(s): + + ;*** Entries() + + /* + Array.Every(Func("Function")) + + Description: + Returns true if every element in this array satisfies the provided testing function. + */ + Every(_callback) { + For i, v in this + If (!_callback.Call(v, i, this)) + Return (0) + + Return (1) + } + + /* + Array := Array.Filter(Func("Function")) + + Description: + Creates a new array with all of the elements of this array for which the provided filtering function returns true. + */ + Filter(_callback) { + r := [] + + For i, v in this + If (_callback.Call(v, i, this)) + r.Push(v) + + Return (r) + } + + /* + Array.Find(Func("Function")) + + Description: + Returns the found value in the array, if an element in the array satisfies the provided testing function or undefined if not found. + */ + Find(_callback) { + For i, v in this + If (_callback.Call(v, i, this)) + Return (v) + + Return ("undefined") ;["" || """""" || "undefined"]. + } + + /* + Array.FindIndex(Func("Function")) + + Description: + Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. + */ + FindIndex(_callback) { + For i, v in this + If (_callback.Call(v, i, this)) + Return (i) + + Return (-1) + } + + /* + Array.ForEach(Func("Function")) + + Description: + Calls a function for each element in the array. + */ + ForEach(_callback) { + For i, v in this + this[i] := _callback.Call(v, i, this) + } + + ;*** Keys() + + /* + Array.Map(Func("Function")) + + Description: + Creates a new array with the results of calling a provided function on every element in this array. + */ + Map(_callback) { + r := [] + + For i, v in this + r[i] := (_callback.Call(v, i, this)) + + Return (r) + } + + ;*** Reduce() + + ;*** ReduceRight() + + /* + Array.Some(Func("Function")) + + Description: + Returns true if at least one element in this array satisfies the provided testing function. + */ + Some(_callback) { + + For i, v in this + If (_callback.Call(v, i, this)) + Return (1) + + Return (0) + } + + ;*** Values() +} + +;===== General: +DefaultSort(_element1, _element2) { + Return (_element1 < _element2 ? -1 : _element1 > _element2 ? 1 : 0) +} + +;===== Strings: +TrimWhitespace(_element) { + Return (RegExReplace(_element, "^\s*(\S(.*\S)?)\s*$", "$1")) +} + +;===== Numbers: +IsNaN(_element) { + Return (((_element + 0.0) ~= "^([-+]?[.]?[0-9]+([.][0-9]+)*([eE][+]?[0-9]+)*)$") != 1) +} + +IsEven(_element) { + Return ((_element & 1) == 0) +} + +IsPrime(_element) { + Loop, % Floor(Sqrt(_element)) + If (A_Index > 1 && Mod(_element, A_Index) == 0) + Return (0) + + Return (1) +} + +ToBinary(_element) { + While (_element) + r := (_element & 1) . r, _element >>= 1 + + Return (r) +} + +TrimTrailingZeros(_element) { + Return (RegExReplace(_element, "\.?0*$")) +} diff --git a/classes/class_AutoPath_AHK2.ahk b/classes/class_AutoPath_AHK2.ahk new file mode 100644 index 00000000..884c2f7d --- /dev/null +++ b/classes/class_AutoPath_AHK2.ahk @@ -0,0 +1,189 @@ +#SingleInstance force + +a := new classAutoPath("msgbox") +while true { + if a.ready || a.error + break + sleep 500 +} + +if a.error + MsgBox("error") +if a.ready + Run(a.path) + + +Class classAutoPath { + path := "" + ready := 0 + error := 0 + list := [] + listPrev := [] + endChar := "*" + + __New(onComplete := "", defaultPath := "", guiShowOpt := "w600") { + ;make sure provided path is valid + if !DirExist(defaultPath) + defaultPath := A_ScriptDir + if SubStr(defaultPath, -1) != "\" + defaultPath := defaultPath . "\" + this.defaultPath := defaultPath + this.onComplete := onComplete + + ;Gui stuff + this.gui := GuiCreate(guiOpt) + this.editBox := this.gui.Add("Edit", "w600", this.defaultPath) + this.editBox.OnEvent("Change", ()=>this.editChanged()) + this.displayBox := this.gui.Add("Text", "+readonly -wrap r20 w600", "") + this.btn := this.gui.add("Button", "Default w0", "OK") + this.btn.OnEvent("Click", ()=>this.enterKey()) + this.gui.OnEvent("Close", ()=>this.onClose()) + this.gui.OnEvent("Escape", ()=>this.onClose()) + this.gui.Show(guiShowOpt) + this.editBox.move("x5 w" (this.gui.ClientPos.w-10), true) + this.displayBox.move("x5 w" (this.gui.ClientPos.w-10), true) + + ControlSend("{End}", "Edit1", "ahk_id " this.gui.hwnd) ;goto end of line + + ;Setup keybind for "/" (auto-complete) + HotKey("IfWinActive", "ahk_id " this.gui.hwnd) + ;HotKey("/", ()=>this.autoComplete()) ;so / can be used as to pass parameters + HotKey("Tab", ()=>this.autoComplete()) + HotKey("+Tab", ()=>this.autoComplete(-1)) + HotKey("If") + + ;initial display + this.mode := "FD" + this.findFile(this.editBox.Value) + this.listPrev := this.list.Clone() + } + + ;When we complete + onSubmit() { + this.path := this.editBox.Value + this.ready := 1 + this.cleanUp() + this.gui.Destroy() + func(this.onComplete).call(this.path) + } + + ;When we exit before a path/file is submitted by user + onClose() { + this.cleanUp + this.gui.Destroy() + this.error := 1 + } + + cleanUp() { + this.list := "" + this.listPrev := "" + } + + ;When the content of editBox changes + editChanged() { + ;loop files mode to "D" = show folders only. Select trigger ("<") so it will get overwritten + ;when any changes occur + if InStr(this.editBox.Value, "<") { + this.mode := "D" + SendMessage(0xb1, StrLen(this.editBox.Value) - 1, -1, "Edit1", "ahk_id " this.gui.hwnd) + } + ;loop files mode to "F" = show files only. Select trigger ("<") so it will get overwritten + else if InStr(this.editBox.Value, ">") { + this.mode := "F" + SendMessage(0xb1, StrLen(this.editBox.Value) - 1, -1, "Edit1", "ahk_id " this.gui.hwnd) + } + ;show both + else + this.mode := "FD" + + ;Ending with " (double quote character) will make disable auto appending of * at the end + if InStr(this.editBox.Value, '"') { + this.endChar := "" + ;SendMessage(0xb1, StrLen(this.editBox.Value) - 1, -1, "Edit1", "ahk_id " this.gui.hwnd) + } else + this.endChar := "*" + this.findFile(this.editBox.Value) + } + + ;User presses ENTER + enterKey() { + this.selectedText := ControlGetSelected("Edit1", "ahk_id " this.gui.hwnd) + ;No selection => user is submitting folder/file path + if this.selectedText == "" + this.onSubmit() + ;user has accepted autocomplete suggestion + else { + this.editChanged() + ControlSend("{End}", "Edit1", "ahk_id " this.gui.hwnd) + this.acceptedSuggestion := true + } + } + + ;code for auto-completion + autoComplete(direction := 1) { + static index := 1 + static prevPath := "" + + ;revert to defaultPath if editBox is empty + if !Trim(this.editBox.Value, " `t`n`r") { + this.editBox.Value := this.defaultPath + this.findFile(this.editBox.Value) + ControlSend("{End}", "Edit1", "ahk_id " this.gui.hwnd) + return + } + + ;to see if user is still cycling through selections (without hitting enter) + found := false + for k, v in this.listPrev { + if this.editBox.Value == v { + index := k + 1 * direction + if index > this.listPrev.Length() + index := 1 + else if index < 1 + index := this.listPrev.Length() + found := true + break + } + } + + ;a folder change has occured (either user input or acceptance of autocomplete suggestion) + ;we're looking at a new folder here, start cycling suggestions from index=1 + if this.acceptedSuggestion || !found { + prevPath := this.editBox.Value + this.listPrev := [] + this.listPrev := this.list.Clone() + index := 1 + + this.acceptedSuggestion := false + } + + ;if folder appears to be empty (or we have no rights to see its content), + ;don't make any suggestion and leave editBox.Value unchanged + if this.listPrev.length() > 0 { + this.editChanged() + this.editBox.Value := this.listPrev[index] + SendMessage(0xb1, StrLen(prevPath), -1, "Edit1", "ahk_id " this.gui.hwnd) + this.selectedText := ControlGetSelected("Edit1", "ahk_id " this.gui.hwnd) + this.findFile(this.editBox.Value) + } + } + + ;loop through files and determine if they are files or folders, put result in list array + findFile(p) { + this.displayBox.Value := "" + this.list := [] + + Loop Files p this.endChar, this.mode { + If A_Index > 20 + break + path := A_LoopFileFullPath + displayName := A_LoopFileName + if InStr(FileExist(path), "D") { + path .= "\" + displayName := "[" . displayName . "]" + } + this.displayBox.Value := this.displayBox.Value . (A_Index > 1 ? "`n" : "") . displayName + this.list.push(path) + } + } +} \ No newline at end of file diff --git a/classes/class_Bound.ahk b/classes/class_Bound.ahk new file mode 100644 index 00000000..dd6e0bac --- /dev/null +++ b/classes/class_Bound.ahk @@ -0,0 +1,49 @@ +Class Bound { + + Class Func { ; cf. https://github.com/Lexikos/xHotkey.ahk/blob/master/xHotkey_test.ahk + + __New(_fn, _args*) { + + if not (_v:=Bound.Func._isCallableObject(_fn)) + throw ErrorLevel:=1 + else this.fn := (_v < 1) ? _fn.bind(_args*) : ObjBindMethod(_fn, _args.removeAt(1), _args*) + + } + __Call(_callee) { + if (StrReplace(_callee, "call", "") = "") { + _fn := this.fn + return %_fn%() + } + } + _isCallableObject(ByRef _callback) { + if (IsFunc(_callback)) { + ((_callback.minParams = "") && _callback:=Func(_callback)) + return -1 + } else if (IsObject(_callback)) ; _callback.base.hasKey("__Call") + return 1 + else return 0 + } + + Class Iterator { + + __New(_fn, _args*) { + this.callableObject := new Bound.Func(_fn, _args*) + } + + setPeriod(_period) { + if (_f:=this.callableObject) + SetTimer, % _f, % _period + } + delete() { + if not (_f:=this.callableObject) + return + SetTimer, % _f, Off + SetTimer, % _f, Delete + return this.callableObject := "" + } + + } + + } + +} \ No newline at end of file diff --git a/lib-a_to_h/FFAAS.ahk b/classes/class_FFAAS.ahk similarity index 100% rename from lib-a_to_h/FFAAS.ahk rename to classes/class_FFAAS.ahk diff --git a/classes/class_GDIP_Geometry.ahk b/classes/class_GDIP_Geometry.ahk new file mode 100644 index 00000000..1bf49bee --- /dev/null +++ b/classes/class_GDIP_Geometry.ahk @@ -0,0 +1,165 @@ +Class Angle { + Degrees(_radians){ + Return (_radians*57.295779513082320876798154814105) + } + + Radians(_degrees){ + Return (_degrees*0.01745329251994329576923690768489) + } +} + +Class Arc { + Area(_ellipse, _degrees := 0) { + If (IsObject(_ellipse.radius)) { + } + Return ((_degrees/360)*_ellipse.radius**2*3.1415926535897932384626433832795) + } + + Length(_ellipse, _degrees := 0) { + If (IsObject(_ellipse.radius)) { + } + Return (_ellipse.radius*_degrees*0.01745329251994329576923690768489) + } +} + +Class Point2D { + __New(_x := 0, _y := 0) { + Return ({"base": this.base + , "x": _x + , "y": _y}) + } + + ;===== General + Distance(_point1, _point2) { + Return (Sqrt((_point1.x - _point2.x)**2 + (_point1.y - _point2.y)**2)) + } + + Slope(_point1, _point2) { + Return ((_point2.y - _point1.y)/(_point2.x - _point1.x)) + } + + MidPoint(_point1, _point2) { + Return (new Point2D((_point1.x + _point2.x)/2, (_point1.y + _point2.y)/2)) + } + + Rotate(_point, _degrees) { + a := ((_degrees >= 0) ? Mod(_degrees, 360) : 360 - Mod(-_degrees, -360))*0.01745329251994329576923690768489 + , c = Cos(a), s = Sin(a) + + Return (new Point2D(c*_point.x - s*_point.y, s*_point.x + c*_point.y)) + } + + ;===== Triangle + Circumcenter(_point1, _point2, _point3) { + m := [Point2D.MidPoint(_point1, _point2), Point2D.MidPoint(_point2, _point3)], s := [(_point2.x - _point1.x)/(_point1.y - _point2.y), (_point3.x - _point2.x)/(_point2.y - _point3.y)], p := [m[1].y - s[1]*m[1].x, m[2].y - s[2]*m[2].x] + + Return (s[1] == s[2] ? 0 : _point1.y == _point2.y ? new Point2D(m[1].x, s[2]*m[1].x + p[2]) : _point2.y == _point3.y ? new Point2D(m[2].x, s[1]*m[2].x + p[1]) : new Point2D((p[2] - p[1])/(s[1] - s[2]), s[1]*(p[2] - p[1])/(s[1] - s[2]) + p[1])) + } + + ;===== Ellipse + Foci(_ellipse) { + o := [(_ellipse.radius.a > _ellipse.radius.b)*(o := _ellipse.FocalLength), (_ellipse.radius.a < _ellipse.radius.b)*o] + + Return ([new Point2D(_ellipse.h - o[1], _ellipse.k - o[2]), new Point2D(_ellipse.h + o[1], _ellipse.k + o[2])]) + } + + Epicycloid(_ellipse1, _ellipse2, _degrees := 0) { + a := ((_degrees >= 0) ? Mod(_degrees, 360) : 360 - Mod(-_degrees, -360))*0.01745329251994329576923690768489 + + Return (new Point2D(_ellipse1.h + (_ellipse1.radius + _ellipse2.radius)*Cos(a) - _ellipse2.radius*Cos((_ellipse1.radius/_ellipse2.radius + 1)*a), _ellipse.k - o[2], _ellipse1.k + (_ellipse1.radius + _ellipse2.radius)*Sin(a) - _ellipse2.radius*Sin((_ellipse1.radius/_ellipse2.radius + 1)*a))) + } + + Hypocycloid(_ellipse1, _ellipse2, _degrees := 0) { + a := ((_degrees >= 0) ? Mod(_degrees, 360) : 360 - Mod(-_degrees, -360))*0.01745329251994329576923690768489 + + Return (new Point2D(_ellipse1.h + (_ellipse1.radius - _ellipse2.radius)*Cos(a) + _ellipse2.radius*Cos((_ellipse1.radius/_ellipse2.radius - 1)*a), _ellipse1.k + (_ellipse1.radius - _ellipse2.radius)*Sin(a) - _ellipse2.radius*Sin((_ellipse1.radius/_ellipse2.radius - 1)*a))) + } + + OnEllipse(_ellipse, _degrees := 0) { + a := ((_degrees >= 0) ? Mod(_degrees, 360) : 360 - Mod(-_degrees, -360))*0.01745329251994329576923690768489 + + If (IsObject(_ellipse.radius)) { + t := Tan(a), o := Sqrt(_ellipse.radius.b**2 + _ellipse.radius.a**2*t**2), s := (90 < _degrees && _degrees <= 270) ? -1 : 1 + + Return (new Point2D(_ellipse.h + s*_ellipse.radius.a*_ellipse.radius.b/o, _ellipse.k + s*_ellipse.radius.a*_ellipse.radius.b*t/o)) + } + + Return (new Point2D(_ellipse.h + _ellipse.radius*Cos(a), _ellipse.k + _ellipse.radius*Sin(a))) + } +} + +Class Ellipse { + __New(_x := 0, _y := 0, _width := 0, _height := 0, _eccentricity := 0) { + r := [_width ? _width/2 : (_height/2)*Sqrt(1 - _eccentricity**2), _height ? _height/2 : (_width/2)*Sqrt(1 - _eccentricity**2)] + + Return {"base": this.base + , "x": _x + , "y": _y + , "h": _x + r[1] + , "k": _y + r[2] + + , "radius": r[1] == r[2] ? r[1] : {"a": r[1] + , "b": r[2]}} + } + + SemiMajor_Axis[] { + Get { + Return (IsObject(this.radius) ? Max(this.radius.a, this.radius.b) : this.radius) + } + } + + SemiMinor_Axis[] { + Get { + Return (IsObject(this.radius) ? Min(this.radius.a, this.radius.b) : this.radius) + } + } + + Area[] { + Get { + Return ((IsObject(this.radius) ? this.radius.a*this.radius.b : this.radius**2)*3.1415926535897932384626433832795) + } + } + + Circumference[] { ;Approximation by Srinivasa Ramanujan. + Get { + Return (IsObject(this.radius) ? (3*(this.radius.a + this.radius.b) - Sqrt((3*this.radius.a + this.radius.b)*(this.radius.a + 3*this.radius.b)))*3.1415926535897932384626433832795 : this.radius*6.283185307179586476925286766559) + } + } + + Eccentricity[] { + Get { + Return (IsObject(this.radius) ? this.FocalLength/this.SemiMajor_Axis : 0) + } + } + + FocalLength[] { + Get { + Return (IsObject(this.radius) ? Sqrt(this.SemiMajor_Axis**2 - this.SemiMinor_Axis**2) : 0) + } + } + + Apoapsis[] { + Get { + Return (IsObject(this.radius) ? this.SemiMajor_Axis*(1 + this.Eccentricity) : this.radius) + } + } + + Periapsis[] { + Get { + Return (IsObject(this.radius) ? this.SemiMajor_Axis*(1 - this.Eccentricity) : this.radius) + } + } + + SemiLatus_Rectum[] { + Get { + Return (IsObject(this.radius) ? this.SemiMajor_Axis*(1 - this.Eccentricity**2) : 0) + } + } + + InscribeEllipse(_ellipse1, _ellipse2, _degrees := 0) { + a := ((_degrees >= 0) ? Mod(_degrees, 360) : 360 - Mod(-_degrees, -360))*0.01745329251994329576923690768489 + , c := _ellipse1.h + (_ellipse1.radius - _ellipse2.radius)*Cos(a), s := _ellipse1.k + (_ellipse1.radius - _ellipse2.radius)*Sin(a) + + Return ({"x": c - _ellipse2.radius, "y": s - _ellipse2.radius, "h": c, "k": s, "radius": _ellipse2.radius}) + } +} \ No newline at end of file diff --git a/classes/class_GDIp_Canvas.ahk b/classes/class_GDIp_Canvas.ahk new file mode 100644 index 00000000..c4248d48 --- /dev/null +++ b/classes/class_GDIp_Canvas.ahk @@ -0,0 +1,106 @@ +Class Canvas { + __New(_name, _options, _x, _y, _width, _height, _smoothing := 4, _interpolation := 7, _hide := 0) { + this.x := _x, this.y := _y, this.width := _width, this.height := _height + + this.pToken := Gdip_Startup() + this.hbm := CreateDIBSection(_width, _height), this.hdc := CreateCompatibleDC(), this.obm := SelectObject(this.hdc, this.hbm) + this.G := Gdip_GraphicsFromHDC(this.hdc), Gdip_SetSmoothingMode(this.G, _smoothing), Gdip_SetInterpolationMode(this.G, _interpolation) + + this.pBrush := [Gdip_BrushCreateSolid("0xFFFFFFFF"), Gdip_BrushCreateSolid("0xFF000000")], this.pPen := [Gdip_CreatePen("0xFFFFFFFF", 1)] + + this.camera := {"base": this.__Camera + , "x": 0 + , "y": 0 + , "z": 0 + + , "focal_length": 300} + + this.speedratio := 1.0 + this.time := 0 + + Gui, % _name ": New", % _options . " +LastFound +E0x80000" + Gui, % _name ": Show", % " x" . _x . " y" . _y . " w" . _width . " h" . _height . (_hide ? " Hide" : " NA") + this.hwnd := WinExist() + + Return (this) + } + + Class __Camera { + RotateX(_degrees) { + ;[ a b c ] [ x ] [ x*a + y*b + z*c ] + ;[ d e f ] [ y ] = [ x*d + y*e + z*f ] + ;[ g h i ] [ z ] [ x*g + y*h + z*i ] + + ;[1 0 0 ] + ;[0 cos(a) sin(a)] + ;[0 -sin(a) cos(a)] + + a := ((_degrees >= 0) ? Mod(_degrees, 360) : 360 - Mod(-_degrees, -360))*0.017453292519943295769236907684886127134428718885417254560971914 + , c := Cos(a), s := Sin(a) + + Return (new Point3D(this.x, this.y*c + this.z*s, this.y*-s + this.z*c)) + } + + RotateY(_degrees) { + ;[ cos(a) 0 sin(a)] + ;[ 0 1 0 ] + ;[-sin(a) 0 cos(a)] + + a := ((_degrees >= 0) ? Mod(_degrees, 360) : 360 - Mod(-_degrees, -360))*0.017453292519943295769236907684886127134428718885417254560971914 + , c := Cos(a), s := Sin(a) + + Return (new Point3D(this.x*c + this.z*s, this.y, this.x*-s + this.z*c)) + } + + RotateZ(_degrees) { + ;[ cos(a) sin(a) 0] + ;[-sin(a) cos(a) 0] + ;[ 0 0 1] + + a := ((_degrees >= 0) ? Mod(_degrees, 360) : 360 - Mod(-_degrees, -360))*0.017453292519943295769236907684886127134428718885417254560971914 + , c := Cos(a), s := Sin(a) + + Return (new Point3D(this.x*c + this.y*s, this.x*-s + this.y*c, this.z)) + } + } + + NewBrush(_alpha := "FF", _colour := "000000") { + this.pBrush.Push(Gdip_BrushCreateSolid("0x" . _alpha . _colour)) + + Return (this.pBrush[this.pBrush.Length()]) + } + + NewLineBrush(_x, _y, _width, _height, _alpha1 := "FF", _colour1 := "000000", _alpha2 := "FF", _colour2 := "000000", _lineargradientmode := 1, _wrapmode := 1) { + this.pBrush.Push(Gdip_CreateLineBrushFromRect(_x, _y, _width, _height, "0x" . _alpha1 . _colour1, "0x" . _alpha2 . _colour2, _lineargradientmode, _wrapmode)) + + Return (this.pBrush[this.pBrush.Length()]) + } + + NewPen(_alpha := "FF", _colour := "000000", _width := 1) { + this.pPen.Push(Gdip_CreatePen("0x" . _alpha . _colour, _width)) + + Return (this.pPen[this.pPen.Length()]) + } + + Update(_clear := 1, _reset := 1) { + UpdateLayeredWindow(this.hwnd, this.hdc) + If (_clear) + Gdip_GraphicsClear(this.G) + If (_reset) + Gdip_ResetWorldTransform(this.G) + } + + Clear() { + Gdip_GraphicsClear(this.G) + } + + ShutDown() { + For i, v in this.pPen + Gdip_DeletePen(v) + For i, v in this.pBrush + Gdip_DeleteBrush(v) + + SelectObject(this.hdc, this.obm), DeleteObject(this.hbm), DeleteDC(this.hdc), Gdip_DeleteGraphics(this.G) + Gdip_Shutdown(this.pToken) + } +} diff --git a/classes/_examples/class_InputBlocker.ahk b/classes/class_InputBlocker.ahk similarity index 100% rename from classes/_examples/class_InputBlocker.ahk rename to classes/class_InputBlocker.ahk diff --git a/classes/class_Memory_AHK2_64bit.ahk b/classes/class_Memory_AHK2_64bit.ahk new file mode 100644 index 00000000..80a678e0 --- /dev/null +++ b/classes/class_Memory_AHK2_64bit.ahk @@ -0,0 +1,1520 @@ +;v1.0 for AutoHotkey v2 +;#include classMemory_AHK2.ahk +/* + A basic memory class by RHCP: + + This is a wrapper for commonly used read and write memory functions. + It also contains a variety of pattern scan functions. + This class allows scripts to read/write integers and strings of various types. + Pointer addresses can easily be read/written by passing the base address and offsets to the various read/write functions. + + Process handles are kept open between reads. This increases speed. + However, if a program closes/restarts then the process handle will become invalid + and you will need to re-open another handle (blank/destroy the object and recreate it) + isHandleValid() can be used to check if a handle is still active/valid. + + read(), readString(), write(), and writeString() can be used to read and write memory addresses respectively. + + readRaw() can be used to dump large chunks of memory, this is considerably faster when + reading data from a large structure compared to repeated calls to read(). + For example, reading a single UInt takes approximately the same amount of time as reading 1000 bytes via readRaw(). + Although, most people wouldn't notice the performance difference. This does however require you + to retrieve the values using AHK's numget()/strGet() from the dumped memory. + + In a similar fashion writeRaw() allows a buffer to be be written in a single operation. + + When the new operator is used this class returns an object which can be used to read that process's + memory space.To read another process simply create another object. + + Process handles are automatically closed when the script exits/restarts or when you free the object. + + **Notes: + This was initially written for 32 bit target processes, however the various read/write functions + should now completely support pointers in 64 bit target applications. The only caveat is that the AHK exe must also be 64 bit. + If AHK is 32 bit and the target application is 64 bit you can still read, write, and use pointers, so long as the addresses + fit inside a 4 byte pointer, i.e. The maximum address is limited to the 32 bit range. + + The various pattern scan functions are intended to be used on 32 bit target applications, however: + - A 32 bit AHK script can perform pattern scans on a 32 bit target application. + - A 32 bit AHK script may be able to perform pattern scans on a 64 bit process, providing the addresses fall within the 32 bit range. + - A 64 bit AHK script should be able to perform pattern scans on a 32 or 64 bit target application without issue. + + If the target process has admin privileges, then the AHK script will also require admin privileges. + + AHK doesn't support unsigned 64bit ints, you can however read them as Int64 and interpret negative values as large numbers. + + + Commonly used methods: + read() + readString() + readRaw() + write() + writeString() + writeRaw() + isHandleValid() + getModuleBaseAddress() + + Less commonly used methods: + hexStringToPattern() + stringToPattern() + modulePatternScan() + processPatternScan() + addressPatternScan() + rawPatternScan() + numberOfBytesRead() + numberOfBytesWritten() + suspend() + resume() + + Internal methods: (some may be useful when directly called) + getAddressFromOffsets() ; This will return the final memory address of a pointer. This is useful if the pointed address only changes on startup or map/level change and you want to eliminate the overhead associated with pointers. + isTargetProcess64Bit() + pointer() + GetModuleInformation() + getNeedleFromAOBPattern() + virtualQueryEx() + patternScan() + bufferScanForMaskedPattern() + openProcess() + closeHandle() + + Useful properties: (Do not modify the values of these properties - they are set automatically) + baseAddress ; The base address of the target process + hProcess ; The handle to the target process + PID ; The PID of the target process + currentProgram ; The string the user used to identify the target process e.g. "ahk_exe calc.exe" + isTarget64bit ; True if target process is 64 bit, otherwise false + readStringLastError ; Used to check for success/failure when reading a string + + Useful editable properties: + insertNullTerminator ; Determines if a null terminator is inserted when writing strings. + + + Usage: + + ; **Note: If you wish to try this calc example, consider using the 32 bit version of calc.exe - + ; which is in C:\Windows\SysWOW64\calc.exe on win7 64 bit systems. + + ; The contents of this file can be copied directly into your script. Alternately, you can copy the classMemory.ahk file into your library folder, + ; in which case you will need to use the #include directive in your script i.e. + #Include + + ; You can use this code to check if you have installed the class correctly. + if (_ClassMemory.__Class != "_ClassMemory") + { + msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten + ExitApp + } + + ; Open a process with sufficient access to read and write memory addresses (this is required before you can use the other functions) + ; You only need to do this once. But if the process closes/restarts, then you will need to perform this step again. Refer to the notes section below. + ; Also, if the target process is running as admin, then the script will also require admin rights! + ; Note: The program identifier can be any AHK windowTitle i.e.ahk_exe, ahk_class, ahk_pid, or simply the window title. + ; hProcessCopy is an optional variable in which the opened handled is stored. + + calc := new _ClassMemory("ahk_exe calc.exe", "", hProcessCopy) + + ; Check if the above method was successful. + if !isObject(calc) + { + msgbox failed to open a handle + if (hProcessCopy = 0) + msgbox The program isn't running (not found) or you passed an incorrect program identifier parameter. In some cases _ClassMemory.setSeDebugPrivilege() may be required. + else if (hProcessCopy = "") + msgbox OpenProcess failed. If the target process has admin rights, then the script also needs to be ran as admin. _ClassMemory.setSeDebugPrivilege() may also be required. Consult A_LastError for more information. + ExitApp + } + + ; Get the process's base address. + ; When using the new operator this property is automatically set to the result of getModuleBaseAddress(); + ; the specific method used depends on the bitness of the target application and AHK. + ; If the returned address is incorrect and the target application is 64 bit, but AHK is 32 bit, try using the 64 bit version of AHK. + msgbox % calc.BaseAddress + + ; Get the base address of a specific module. + msgbox % calc.getModuleBaseAddress("GDI32.dll") + + ; The rest of these examples are just for illustration (the addresses specified are probably not valid). + ; You can use cheat engine to find real addresses to read and write for testing purposes. + + ; Write 1234 as a UInt at address 0x0016CB60. + calc.write(0x0016CB60, 1234, "UInt") + + ; Read a UInt. + value := calc.read(0x0016CB60, "UInt") + + ; Read a pointer with offsets 0x20 and 0x15C which points to a UChar. + value := calc.read(pointerBase, "UChar", 0x20, 0x15C) + + ; Note: read(), readString(), readRaw(), write(), writeString(), and writeRaw() all support pointers/offsets. + ; An array of pointers can be passed directly, i.e. + arrayPointerOffsets := [0x20, 0x15C] + value := calc.read(pointerBase, "UChar", arrayPointerOffsets*) + ; Or they can be entered manually. + value := calc.read(pointerBase, "UChar", 0x20, 0x15C) + ; You can also pass all the parameters directly, i.e. + aMyPointer := [pointerBase, "UChar", 0x20, 0x15C] + value := calc.read(aMyPointer*) + + + ; Read a utf-16 null terminated string of unknown size at address 0x1234556 - the function will read until the null terminator is found or something goes wrong. + string := calc.readString(0x1234556, length := 0, encoding := "utf-16") + + ; Read a utf-8 encoded string which is 12 bytes long at address 0x1234556. + string := calc.readString(0x1234556, 12) + + ; By default a null terminator is included at the end of written strings for writeString(). + ; The nullterminator property can be used to change this. + _ClassMemory.insertNullTerminator := False ; This will change the property for all processes + calc.insertNullTerminator := False ; Changes the property for just this process + + + Notes: + If the target process exits and then starts again (or restarts) you will need to free the derived object and then use the new operator to create a new object i.e. + calc := [] ; or calc := "" ; free the object. This is actually optional if using the line below, as the line below would free the previous derived object calc prior to initialising the new copy. + calc := new _ClassMemory("ahk_exe calc.exe") ; Create a new derived object to read calc's memory. + isHandleValid() can be used to check if a target process has closed or restarted. +*/ + +class _ClassMemory +{ + ; List of useful accessible values. Some of these inherited values (the non objects) are set when the new operator is used. + static baseAddress, hProcess, PID, currentProgram + , insertNullTerminator := True + , readStringLastError := False + , isTarget64bit := False + , ptrType := "UInt" + , aTypeSize := { "UChar": 1, "Char": 1 + , "UShort": 2, "Short": 2 + , "UInt": 4, "Int": 4 + , "UFloat": 4, "Float": 4 + , "Int64": 8, "Double": 8} + , aRights := { "PROCESS_ALL_ACCESS": 0x001F0FFF + , "PROCESS_CREATE_PROCESS": 0x0080 + , "PROCESS_CREATE_THREAD": 0x0002 + , "PROCESS_DUP_HANDLE": 0x0040 + , "PROCESS_QUERY_INFORMATION": 0x0400 + , "PROCESS_QUERY_LIMITED_INFORMATION": 0x1000 + , "PROCESS_SET_INFORMATION": 0x0200 + , "PROCESS_SET_QUOTA": 0x0100 + , "PROCESS_SUSPEND_RESUME": 0x0800 + , "PROCESS_TERMINATE": 0x0001 + , "PROCESS_VM_OPERATION": 0x0008 + , "PROCESS_VM_READ": 0x0010 + , "PROCESS_VM_WRITE": 0x0020 + , "SYNCHRONIZE": 0x00100000} + +/* + Method: __new(program, dwDesiredAccess := "", byRef handle := "", windowMatchMode := 3) + Example: derivedObject := new _ClassMemory("ahk_exe calc.exe") + This is the first method which should be called when trying to access a program's memory. + If the process is successfully opened, an object is returned which can be used to read that processes memory space. + [derivedObject].hProcess stores the opened handle. + If the target process closes and re-opens, simply free the derived object and use the new operator again to open a new handle. + Parameters: + program The program to be opened. This can be any AHK windowTitle identifier, such as + ahk_exe, ahk_class, ahk_pid, or simply the window title. e.g. "ahk_exe calc.exe" or "Calculator". + It's safer not to use the window title, as some things can have the same window title e.g. an open folder called "Starcraft II" + would have the same window title as the game itself. + *'DetectHiddenWindows, On' is required for hidden windows* + dwDesiredAccess The access rights requested when opening the process. + If this parameter is null the process will be opened with the following rights + PROCESS_QUERY_INFORMATION, PROCESS_VM_OPERATION, PROCESS_VM_READ, PROCESS_VM_WRITE, & SYNCHRONIZE + This access level is sufficient to allow all of the methods in this class to work. + Specific process access rights are listed here: + http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx + handle (Output) Optional variable in which a copy of the opened processes handle will be stored. + Values: + Null OpenProcess failed. The script may need to be run with admin rights admin, + and/or with the use of _ClassMemory.setSeDebugPrivilege(). Consult A_LastError for more information. + 0 The program isn't running (not found) or you passed an incorrect program identifier parameter. + In some cases _ClassMemory.setSeDebugPrivilege() may be required. + Positive Integer A handle to the process. (Success) + windowMatchMode - Determines the matching mode used when finding the program (windowTitle). + The default value is 3 i.e. an exact match. Refer to AHK's setTitleMathMode for more information. + Return Values: + Object On success an object is returned which can be used to read the processes memory. + Null Failure. A_LastError and the optional handle parameter can be consulted for more information. +*/ + + __new(program, childName := "", dwDesiredAccess := "", byRef handle := "", windowMatchMode := 3) + { + if A_PtrSize != 8 || A_AhkVersion < 2 { + MsgBox("classMemory_AHK2_64bit.ahk requires AutoHotkey v2 64 bit") + return + } + if this.PID := handle := this.findPID(program, windowMatchMode) ; set handle to 0 if program not found + { + if childName + for process in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" childName "'") + if process.ParentProcessID == this.PID { + this.PID:= process.ProcessID + this.parentPID := process.ParentProcessID + } + ; This default access level is sufficient to read and write memory addresses, and to perform pattern scans. + ; if the program is run using admin privileges, then this script will also need admin privileges + if !(dwDesiredAccess is "integer") + dwDesiredAccess := this.aRights.PROCESS_QUERY_INFORMATION | this.aRights.PROCESS_VM_OPERATION | this.aRights.PROCESS_VM_READ | this.aRights.PROCESS_VM_WRITE + dwDesiredAccess |= this.aRights.SYNCHRONIZE ; add SYNCHRONIZE to all handles to allow isHandleValid() to work + dwDesiredAccess |= this.aRights.PROCESS_SUSPEND_RESUME ; so we can suspend/resume + if this.hProcess := handle := this.OpenProcess(this.PID, dwDesiredAccess) ; NULL/Blank if failed to open process for some reason + { + this.pNumberOfBytesRead := DllCall("GlobalAlloc", "UInt", 0x0040, "Ptr", A_PtrSize, "Ptr") ; 0x0040 initialise to 0 + this.pNumberOfBytesWritten := DllCall("GlobalAlloc", "UInt", 0x0040, "Ptr", A_PtrSize, "Ptr") ; initialise to 0 + this.readStringLastError := False + this.currentProgram := program + if this.isTarget64bit := this.isTargetProcess64Bit(this.PID, this.hProcess, dwDesiredAccess) + this.ptrType := "Int64" + else this.ptrType := "UInt" ; If false or Null (fails) assume 32bit + + this.BaseAddress := this.getModuleList() + this.GetThreadInfo() + + return this + } + } + return + } + + __delete() + { + this.closeHandle(this.hProcess) + if this.pNumberOfBytesRead + DllCall("GlobalFree", "Ptr", this.pNumberOfBytesRead) + if this.pNumberOfBytesWritten + DllCall("GlobalFree", "Ptr", this.pNumberOfBytesWritten) + return + } + + /* This function retrieves Thread Basic Information and the StackBase and StackLimit of each thread. + On 64bit targets, NT_TIB struct is found at TebBaseAddress. For 32bit targets, a pointer that points + to the struct is found at that address instead. Alternatively, use TebBaseAddress + 0x2000 to go directly + to NT_TIB struct. (see 4th link) + https://forum.cheatengine.org/viewtopic.php?p=5487976#5487976 + https://forum.cheatengine.org/viewtopic.php?p=5602055 + https://github.com/makemek/cheatengine-threadstack-finder/blob/thread-base-addr/main.cpp + https://stackoverflow.com/questions/34736009/get-32bit-peb-of-another-process-from-a-x64-process + + The snapshot code and the thread32first, thread32next codes are taken from autohotkey forum, by jNizM. + https://autohotkey.com/boards/viewtopic.php?t=15943 + */ + GetThreadInfo() { + if this.isTarget64bit { + tarPtrType := "Int64" + tarPtrSize := 8 + } else { + tarPtrType := "UInt" + tarPtrSize := 4 + } + + TH32CS_SNAPTHREAD := 0x4 + + hModule := DllCall( "LoadLibrary" + , "str", "ntdll.dll" + , "uptr") + ;https://docs.microsoft.com/en-us/windows/desktop/api/tlhelp32/nf-tlhelp32-createtoolhelp32snapshot + hSnapshot := DllCall( "CreateToolhelp32Snapshot" + , "uint", TH32CS_SNAPTHREAD + , "uint", this.PID ) + /* + typedef struct tagTHREADENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ThreadID; +0x8 + DWORD th32OwnerProcessID; +0x12 + LONG tpBasePri; + LONG tpDeltaPri; + DWORD dwFlags; + } THREADENTRY32; + + Must initialize dwSize to sizeof(THREADENTRY32) or call will fail: + https://docs.microsoft.com/en-us/windows/desktop/api/tlhelp32/ns-tlhelp32-tagthreadentry32 + */ + sizeOfTHREADENTRY32 := 28 + VarSetCapacity(THREADENTRY32, sizeOfTHREADENTRY32, 0) + NumPut(sizeOfTHREADENTRY32, THREADENTRY32, "uint") ;initialize dwSize to sizeOfTHREADENTRY32 + DllCall("Thread32First", "ptr", hSnapshot, "ptr", &THREADENTRY32) + + this.Thread := Thread := [], i := 1 + while (DllCall( "Thread32Next" + , "ptr", hSnapshot + , "ptr", &THREADENTRY32)) { + if (NumGet(THREADENTRY32, 12, "uint") = this.PID) { ;check if owner is our process + + hThread := DllCall( "OpenThread" ;get thread handle + , "uint", 0x0040 + , "int", 0 + , "uint", NumGet(THREADENTRY32, 8, "uint") + , "ptr") + + /* NtQueryInformationThread : THREAD_BASIC_INFORMATION struct + Type Name Offset Size + ---- ---- ------ ---- + NTSTATUS ExitStatus; 0 4 + Padding 4 4 + PVOID TebBaseAddress; 8 8 + CLIENT_ID ClientId; 16 16 + KAFFINITY AffinityMask; 32 8 + KPRIORITY Priority; 40 4 + KPRIORITY BasePriority; 44 4 + https://stackoverflow.com/questions/17152735/getting-the-teb-of-a-64bit-process-on-windows + */ + THREAD_BASIC_INFORMATION := 0x0 + sizeOfThreadBasicInfo := 48 + VarSetCapacity(ThreadBasicInfo, 48, 0) + DllCall( "ntdll\NtQueryInformationThread" + , "ptr", hThread + , "uint", THREAD_BASIC_INFORMATION + , "ptr", &ThreadBasicInfo + , "uint", 48 + , "uint", _) + Thread[i] := {} + Thread[i].TebBaseAddress := NumGet(ThreadBasicInfo, 8, "Int64") + + THREAD_QUERY_SET_WIN32_START_ADDRESS := 0x9 + DllCall( "ntdll\NtQueryInformationThread" + , "ptr", hThread + , "uint", THREAD_QUERY_SET_WIN32_START_ADDRESS + , "ptr*", ThreadStartAddr + , "uint", A_PtrSize, "uint*", 0) + + Thread[i].StartAddr := ThreadStartAddr + Thread[i].ThreadID := NumGet(THREADENTRY32, 8, "UInt") + + /* from: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-a-stack-overflow + + typedef struct _TEB { + NT_TIB NtTib; <===== TebBaseAddress points to this + PVOID EnvironmentPointer; + CLIENT_ID ClientId; + PVOID ActiveRpcHandle; + PVOID ThreadLocalStoragePointer; + PPEB ProcessEnvironmentBlock; + ULONG LastErrorValue; + ..... + PVOID DeallocationStack; + ..... + } TEB; + + typedef struct _NT_TIB { + struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; + PVOID StackBase; <==== +0x4 if target is 32 bit, +0x8 if 64 bit + PVOID StackLimit; <==== +0x8 if target is 32 bit, +0x16 if 64 bit + ..... + } NT_TIB; + */ + + if this.isTarget64bit + NT_TIB_base := Thread[i].TebBaseAddress + else + NT_TIB_base := this.read(Thread[i].TebBaseAddress, tarPtrType) + Thread[i].NT_TIB := {} + Thread[i].NT_TIB.StackBase := this.read(NT_TIB_base + tarPtrSize, tarPtrType) + Thread[i].NT_TIB.StackLimit := this.read(NT_TIB_base + tarPtrSize * 2, tarPtrType) + DllCall("CloseHandle", "ptr", hThread) + i++ + } + } + DllCall("CloseHandle", "ptr", hSnapshot) + DllCall("FreeLibrary", "ptr", hModule) + this.getThreadStacks(Thread) + } + + /* This allows results from patternScan to be fed back into itself - + Turns 0x00007FFF066D3034 into an array := ["0x34", "0x30", "0x6D", "0x06", "0xFF", "0x7F", "0x00", "0x00"] + Useless for now since I am using static addresses + for kernel32.dll's exit functions (32bit and 64bit). See function getThreadStacks(Thread). + */ + hexToAOB(hex) { + hex := StrReplace(hex, "0x") + len := StrLen(hex) + AOB := [] + loop len//2 + AOB[A_Index] := "0x" . SubStr(hex, len - 2 * A_Index + 1, 2) + return AOB + } + + /* Finds and returns CheatEngine's ThreadStack[0], ThreadStack[1], ThreadStack[2] ... etc + */ + getThreadStacks(Thread) { + + if this.isTarget64bit + h:=Format("{:016x}", this.modulePatternScan("KERNEL32.DLL", 0x8b, 0xc8, 0xff, 0x15 ,0x5c, 0x62, 0x06, 0x00, 0xcc, 0xff, 0x15, 0x7d, 0x64, 0x06, 0x00, 0xa8, 0x10, 0x74, 0x09, 0xe8, 0x0c, 0x00, 0x00, 0x00)) + else + h:=Format("{:08x}", this.modulePatternScan("KERNEL32.DLL", 0x8b, 0xff, 0x55, 0x8b ,0xec, 0x51, 0xa1, 0x50, 0x01, 0x36, 0x75, 0x33, 0xc5, 0x89, 0x45, 0xfc, 0x56, 0x8b, 0xf2, 0x85, 0xc9, 0x75, 0x14, 0xff)) + pattern := this.hexToAOB(h) + this.ThreadStack := [] + + ;pattern := this.isTarget64bit ? [0x34, 0x30, 0x6d, 0x06, 0xff, 0x7f, 0x00, 0x00] : [0x60, 0x84, 0xF5, 0x73] + /* Use this script to get these addresses: + #include print.ahk + h := DllCall("GetModuleHandle", str, "kernel32", "ptr") + r := DllCall("GetProcAddress", "Ptr", h, "AStr", "BaseThreadInitThunk" , "ptr") + hprint(r), eprint(DllCall("GetLastError")) + ;the procedure name is "BaseThreadInitThunk", and the bit-ness of AHK executable determines the address + ;to get 32 bit version you have to run this with 32bit AHK + ;the returned address, r, are 0x73f58460 and 0x7fff066d3020 + ;for 32bit, you can use it as is; for 64 bit you have to add 0x14 to it. + */ + loop Thread.Length() { + i := A_Index + address := Thread[i].NT_TIB.StackLimit + result := this.processPatternScan(address, Thread[i].NT_TIB.StackBase, pattern*) + while result { + this.ThreadStack[i - 1] := result + address := result + 1 + result := this.processPatternScan(address, Thread[i].NT_TIB.StackBase, pattern*) + } + } + } + + findPID(program, windowMatchMode := "3") + { + ; If user passes an AHK_PID, don't bother searching. There are cases where searching windows for PIDs + ; wont work - console apps + if RegExMatch(program, "i)\s*AHK_PID\s+(0x[[:xdigit:]]+|\d+)", pid) + return pid.value[1] + if windowMatchMode + { + ; This is a string and will not contain the 0x prefix + mode := A_TitleMatchMode + ; remove hex prefix as SetTitleMatchMode will throw a run time error. This will occur if integer mode is set to hex and user passed an int (unquoted) + windowMatchMode := StrReplace(windowMatchMode, "0x") + SetTitleMatchMode windowMatchMode + } + + pid := WinGetPID(program) + if windowMatchMode + SetTitleMatchMode mode ; In case executed in autoexec + + ; If use 'ahk_exe test.exe' and winget fails (which can happen when setSeDebugPrivilege is required), + ; try using the process command. When it fails due to setSeDebugPrivilege, setSeDebugPrivilege will still be required to openProcess + ; This should also work for apps without windows. + if (!pid && RegExMatch(program, "i)\bAHK_EXE\b\s*(.*)", fileName)) + { + ; remove any trailing AHK_XXX arguments + filename := RegExReplace(filename.value[1], "i)\bahk_(class|id|pid|group)\b.*", "") + filename := trim(filename) ; extra spaces will make process command fail + ; AHK_EXE can be the full path, so just get filename + SplitPath(fileName , fileName) + if (fileName) ; if filename blank, scripts own pid is returned + pid := ProcessExist(fileName) + } + + return pid ? pid : 0 ; PID is null on fail, return 0 + } + +/* + Method: isHandleValid() + This method provides a means to check if the internal process handle is still valid + or in other words, the specific target application instance (which you have been reading from) + has closed or restarted. + For example, if the target application closes or restarts the handle will become invalid + and subsequent calls to this method will return false. + + Return Values: + True The handle is valid. + False The handle is not valid. + + Notes: + This operation requires a handle with SYNCHRONIZE access rights. + All handles, even user specified ones are opened with the SYNCHRONIZE access right. +*/ + + isHandleValid() + { + return 0x102 = DllCall("WaitForSingleObject", "Ptr", this.hProcess, "UInt", 0) + ; WaitForSingleObject return values + ; -1 if called with null hProcess (sets lastError to 6 - invalid handle) + ; 258 / 0x102 WAIT_TIMEOUT - if handle is valid (process still running) + ; 0 WAIT_OBJECT_0 - if process has terminated + } + +/* + Method: openProcess(PID, dwDesiredAccess) + ***Note: This is an internal method which shouldn't be called directly unless you absolutely know what you are doing. + This is because the new operator, in addition to calling this method also sets other values + which are required for the other methods to work correctly. + Parameters: + PID The Process ID of the target process. + dwDesiredAccess The access rights requested when opening the process. + Specific process access rights are listed here: + http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx + Return Values: + Null/blank OpenProcess failed. If the target process has admin rights, then the script also needs to be ran as admin. + _ClassMemory.setSeDebugPrivilege() may also be required. + Positive integer A handle to the process. +*/ + + openProcess(PID, dwDesiredAccess) + { + r := DllCall("OpenProcess", "UInt", dwDesiredAccess, "Int", False, "UInt", PID, "Ptr") + ; if it fails with 0x5 ERROR_ACCESS_DENIED, try enabling privilege ... lots of users never try this. + ; there may be other errors which also require DebugPrivilege.... + if (!r && A_LastError = 5) + { + this.setSeDebugPrivilege(true) ; no harm in enabling it if it is already enabled by user + if (r2 := DllCall("OpenProcess", "UInt", dwDesiredAccess, "Int", False, "UInt", PID, "Ptr")) + return r2 + DllCall("SetLastError", "UInt", 5) ; restore original error if it doesnt work + } + ; If fails with 0x5 ERROR_ACCESS_DENIED (when setSeDebugPrivilege() is req.), the func. returns 0 rather than null!! Set it to null. + ; If fails for another reason, then it is null. + return r ? r : "" + } + +/* + Method: closeHandle(hProcess) + Note: This is an internal method which is automatically called when the script exits or the derived object is freed/destroyed. + There is no need to call this method directly. If you wish to close the handle simply free the derived object. + i.e. derivedObject := [] ; or derivedObject := "" + Parameters: + hProcess The handle to the process, as returned by openProcess(). + Return Values: + Non-Zero Success + 0 Failure +*/ + + closeHandle(hProcess) + { + return DllCall("CloseHandle", "Ptr", hProcess) + } + +/* + Methods: numberOfBytesRead() / numberOfBytesWritten() + Returns the number of bytes read or written by the last ReadProcessMemory or WriteProcessMemory operation. + + Return Values: + zero or positive value Number of bytes read/written + -1 Failure. Shouldn't occur +*/ + + numberOfBytesRead() + { + return !this.pNumberOfBytesRead ? -1 : NumGet(this.pNumberOfBytesRead+0, "Ptr") + } + numberOfBytesWritten() + { + return !this.pNumberOfBytesWritten ? -1 : NumGet(this.pNumberOfBytesWritten+0, "Ptr") + } + +/* + Method: read(address, type := "UInt", aOffsets*) + Reads various integer type values + Parameters: + address - The memory address of the value or if using the offset parameter, + the base address of the pointer. + type - The integer type. + Valid types are UChar, Char, UShort, Short, UInt, Int, Float, Int64 and Double. + Note: Types must not contain spaces i.e. " UInt" or "UInt " will not work. + When an invalid type is passed the method returns NULL and sets ErrorLevel to -2 + aOffsets* - A variadic list of offsets. When using offsets the address parameter should equal the base address of the pointer. + The address (base address) and offsets should point to the memory address which holds the integer. + Return Values: + integer - Indicates success. + Null - Indicates failure. Check ErrorLevel and A_LastError for more information. + Note: Since the returned integer value may be 0, to check for success/failure compare the result + against null i.e. if (result = "") then an error has occurred. + When reading doubles, adjusting "SetFormat, float, totalWidth.DecimalPlaces" + may be required depending on your requirements. +*/ + + read(address, type := "UInt", aOffsets*) + { + ; If invalid type RPM() returns success (as bytes to read resolves to null in dllCall()) + ; so set errorlevel to invalid parameter for DLLCall() i.e. -2 + if !this.aTypeSize.hasKey(type) + { + ErrorLevel := -2 + return "" + } + if DllCall("ReadProcessMemory", "Ptr", this.hProcess, "Ptr", aOffsets.maxIndex() ? this.getAddressFromOffsets(address, aOffsets*) : address, type "*", result, "Ptr", this.aTypeSize[type], "Ptr", this.pNumberOfBytesRead) + return result + return + } + +/* + Method: readRaw(address, byRef buffer, bytes := 4, aOffsets*) + Reads an area of the processes memory and stores it in the buffer variable + Parameters: + address - The memory address of the area to read or if using the offsets parameter + the base address of the pointer which points to the memory region. + buffer - The unquoted variable name for the buffer. This variable will receive the contents from the address space. + This method calls varsetCapcity() to ensure the variable has an adequate size to perform the operation. + If the variable already has a larger capacity (from a previous call to varsetcapcity()), then it will not be shrunk. + Therefore it is the callers responsibility to ensure that any subsequent actions performed on the buffer variable + do not exceed the bytes which have been read - as these remaining bytes could contain anything. + bytes - The number of bytes to be read. + aOffsets* - A variadic list of offsets. When using offsets the address parameter should equal the base address of the pointer. + The address (base address) and offsets should point to the memory address which is to be read + Return Values: + Non Zero - Indicates success. + Zero - Indicates failure. Check errorLevel and A_LastError for more information + + Notes: The contents of the buffer may then be retrieved using AHK's NumGet() and StrGet() functions. + This method offers significant (~30% and up) performance boost when reading large areas of memory. + As calling ReadProcessMemory for four bytes takes a similar amount of time as it does for 1,000 bytes. +*/ + + readRaw(address, byRef buffer, bytes := 4, aOffsets*) + { + VarSetCapacity(buffer, bytes) + return DllCall("ReadProcessMemory", "Ptr", this.hProcess, "Ptr", aOffsets.maxIndex() ? this.getAddressFromOffsets(address, aOffsets*) : address, "Ptr", &buffer, "Ptr", bytes, "Ptr", this.pNumberOfBytesRead) + } + +/* + Method: readString(address, sizeBytes := 0, encoding := "utf-8", aOffsets*) + Reads string values of various encoding types + Parameters: + address - The memory address of the value or if using the offset parameter, + the base address of the pointer. + sizeBytes - The size (in bytes) of the string to be read. + If zero is passed, then the function will read each character until a null terminator is found + and then returns the entire string. + encoding - This refers to how the string is stored in the program's memory. + UTF-8 and UTF-16 are common. Refer to the AHK manual for other encoding types. + aOffsets* - A variadic list of offsets. When using offsets the address parameter should equal the base address of the pointer. + The address (base address) and offsets should point to the memory address which holds the string. + + Return Values: + String - On failure an empty (null) string is always returned. Since it's possible for the actual string + being read to be null (empty), then a null return value should not be used to determine failure of the method. + Instead the property [derivedObject].ReadStringLastError can be used to check for success/failure. + This property is set to 0 on success and 1 on failure. On failure ErrorLevel and A_LastError should be consulted + for more information. + Notes: + For best performance use the sizeBytes parameter to specify the exact size of the string. + If the exact size is not known and the string is null terminated, then specifying the maximum + possible size of the string will yield the same performance. + If neither the actual or maximum size is known and the string is null terminated, then specifying + zero for the sizeBytes parameter is fine. Generally speaking for all intents and purposes the performance difference is + inconsequential. +*/ + + readString(address, sizeBytes := 0, encoding := "UTF-8", aOffsets*) + { + bufferSize := VarSetCapacity(buffer, sizeBytes ? sizeBytes : 100, 0) + this.ReadStringLastError := False + if aOffsets.maxIndex() + address := this.getAddressFromOffsets(address, aOffsets*) + if !sizeBytes ; read until null terminator is found or something goes wrong + { + ; Even if there are multi-byte-characters (bigger than the encodingSize i.e. surrogates) in the string, when reading in encodingSize byte chunks they will never register as null (as they will have bits set on those bytes) + if (encoding = "utf-16" || encoding = "cp1200") + encodingSize := 2, charType := "UShort", loopCount := 2 + else encodingSize := 1, charType := "Char", loopCount := 4 + Loop + { ; Lets save a few reads by reading in 4 byte chunks + if !DllCall("ReadProcessMemory", "Ptr", this.hProcess, "Ptr", address + ((outterIndex := A_index) - 1) * 4, "Ptr", &buffer, "Ptr", 4, "Ptr", this.pNumberOfBytesRead) || ErrorLevel + { + this.ReadStringLastError := True + return "" + } + else loop loopCount + { + if NumGet(buffer, (A_Index - 1) * encodingSize, charType) = 0 ; NULL terminator + { + if (bufferSize < sizeBytes := outterIndex * 4 - (4 - A_Index * encodingSize)) + VarSetCapacity(buffer, sizeBytes) + break 2 + } + } + } + } + if DllCall("ReadProcessMemory", "Ptr", this.hProcess, "Ptr", address, "Ptr", &buffer, "Ptr", sizeBytes, "Ptr", this.pNumberOfBytesRead) + return StrGet(&buffer,, encoding) + { + this.ReadStringLastError := True + return "" + } + } + +/* + Method: writeString(address, string, encoding := "utf-8", aOffsets*) + Encodes and then writes a string to the process. + Parameters: + address - The memory address to which data will be written or if using the offset parameter, + the base address of the pointer. + string - The string to be written. + encoding - This refers to how the string is to be stored in the program's memory. + UTF-8 and UTF-16 are common. Refer to the AHK manual for other encoding types. + aOffsets* - A variadic list of offsets. When using offsets the address parameter should equal the base address of the pointer. + The address (base address) and offsets should point to the memory address which is to be written to. + Return Values: + Non Zero - Indicates success. + Zero - Indicates failure. Check errorLevel and A_LastError for more information + Notes: + By default a null terminator is included at the end of written strings. + This behaviour is determined by the property [derivedObject].insertNullTerminator + If this property is true, then a null terminator will be included. +*/ + + writeString(address, string, encoding := "utf-8", aOffsets*) + { + encodingSize := (encoding = "utf-16" || encoding = "cp1200") ? 2 : 1 + requiredSize := StrPut(string, encoding) * encodingSize - (this.insertNullTerminator ? 0 : encodingSize) + VarSetCapacity(buffer, requiredSize) + StrPut(string, &buffer, StrLen(string) + (this.insertNullTerminator ? 1 : 0), encoding) + return DllCall("WriteProcessMemory", "Ptr", this.hProcess, "Ptr", aOffsets.maxIndex() ? this.getAddressFromOffsets(address, aOffsets*) : address, "Ptr", &buffer, "Ptr", requiredSize, "Ptr", this.pNumberOfBytesWritten) + } + +/* + Method: write(address, value, type := "Uint", aOffsets*) + Writes various integer type values to the process. + Parameters: + address - The memory address to which data will be written or if using the offset parameter, + the base address of the pointer. + type - The integer type. + Valid types are UChar, Char, UShort, Short, UInt, Int, Float, Int64 and Double. + Note: Types must not contain spaces i.e. " UInt" or "UInt " will not work. + When an invalid type is passed the method returns NULL and sets ErrorLevel to -2 + aOffsets* - A variadic list of offsets. When using offsets the address parameter should equal the base address of the pointer. + The address (base address) and offsets should point to the memory address which is to be written to. + Return Values: + Non Zero - Indicates success. + Zero - Indicates failure. Check errorLevel and A_LastError for more information + Null - An invalid type was passed. Errorlevel is set to -2 +*/ + + write(address, value, type := "Uint", aOffsets*) + { + if !this.aTypeSize.hasKey(type) + { + ErrorLevel := -2 + return "" + } + return DllCall("WriteProcessMemory", "Ptr", this.hProcess, "Ptr", aOffsets.maxIndex() ? this.getAddressFromOffsets(address, aOffsets*) : address, type "*", value, "Ptr", this.aTypeSize[type], "Ptr", this.pNumberOfBytesWritten) + } + +/* + Method: writeRaw(address, pBuffer, sizeBytes, aOffsets*) + Writes a buffer to the process. + Parameters: + address - The memory address to which the contents of the buffer will be written + or if using the offset parameter, the base address of the pointer. + pBuffer - A pointer to the buffer which is to be written. + This does not necessarily have to be the beginning of the buffer itself e.g. pBuffer := &buffer + offset + sizeBytes - The number of bytes which are to be written from the buffer. + aOffsets* - A variadic list of offsets. When using offsets the address parameter should equal the base address of the pointer. + The address (base address) and offsets should point to the memory address which is to be written to. + Return Values: + Non Zero - Indicates success. + Zero - Indicates failure. Check errorLevel and A_LastError for more information +*/ + + writeRaw(address, pBuffer, sizeBytes, aOffsets*) + { + return DllCall("WriteProcessMemory", "Ptr", this.hProcess, "Ptr", aOffsets.maxIndex() ? this.getAddressFromOffsets(address, aOffsets*) : address, "Ptr", pBuffer, "Ptr", sizeBytes, "Ptr", this.pNumberOfBytesWritten) + } + +/* + Method: pointer(address, finalType := "UInt", offsets*) + This is an internal method. Since the other various methods all offer this functionality, they should be used instead. + This will read integer values of both pointers and non-pointers (i.e. a single memory address) + Parameters: + address - The base address of the pointer or the memory address for a non-pointer. + finalType - The type of integer stored at the final address. + Valid types are UChar, Char, UShort, Short, UInt, Int, Float, Int64 and Double. + Note: Types must not contain spaces i.e. " UInt" or "UInt " will not work. + When an invalid type is passed the method returns NULL and sets ErrorLevel to -2 + aOffsets* - A variadic list of offsets used to calculate the pointers final address. + Return Values: (The same as the read() method) + integer - Indicates success. + Null - Indicates failure. Check ErrorLevel and A_LastError for more information. + Note: Since the returned integer value may be 0, to check for success/failure compare the result + against null i.e. if (result = "") then an error has occurred. + If the target application is 64bit the pointers are read as an 8 byte Int64 (this.PtrType) +*/ + + pointer(address, finalType := "UInt", offsets*) + { + For index, offset in offsets + address := this.Read(address, this.ptrType) + offset + Return this.Read(address, finalType) + } + +/* + Method: getAddressFromOffsets(address, aOffsets*) + Returns the final address of a pointer. + This is an internal method used by various methods however, this method may be useful if you are + looking to eliminate the overhead overhead associated with reading pointers which only change + on startup or map/level change. In other words you can cache the final address and + read from this address directly. + Parameters: + address The base address of the pointer. + aOffsets* A variadic list of offsets used to calculate the pointers final address. + At least one offset must be present. + Return Values: + Positive integer The final memory address pointed to by the pointer. + Negative integer Failure + Null Failure + Note: If the target application is 64bit the pointers are read as an 8 byte Int64 (this.PtrType) +*/ + + getAddressFromOffsets(address, aOffsets*) + { + return aOffsets.Pop() + this.pointer(address, this.ptrType, aOffsets*) ; remove the highest key so can use pointer() to find final memory address (minus the last offset) + } +/* + Interesting note: + Although handles are 64-bit pointers, only the less significant 32 bits are employed in them for the purpose + of better compatibility (for example, to enable 32-bit and 64-bit processes interact with each other) + Here are examples of such types: HANDLE, HWND, HMENU, HPALETTE, HBITMAP, etc. + http://www.viva64.com/en/k/0005/ +*/ + + +/* + http://stackoverflow.com/questions/3801517/how-to-enum-modules-in-a-64bit-process-from-a-32bit-wow-process + + Method: getModuleBaseAddress(module := "", byRef aModuleInfo := "") + Parameters: + moduleName - The file name of the module/dll to find e.g. "calc.exe", "GDI32.dll", "Bass.dll" etc + If no module (null) is specified, the address of the base module - main()/process will be returned + e.g. for calc.exe the following two method calls are equivalent getModuleBaseAddress() and getModuleBaseAddress("calc.exe") + aModuleInfo - (Optional) A module Info object is returned in this variable. If method fails this variable is made blank. + This object contains the keys: name, fileName, lpBaseOfDll, SizeOfImage, and EntryPoint + Return Values: + Positive integer - The module's base/load address (success). + -1 - Module not found + This method requires PROCESS_QUERY_INFORMATION + PROCESS_VM_READ access rights. These are included by default with this class. +*/ + + getModuleBaseAddress(moduleName := "", byRef aModuleInfo := "") + { + if (moduleName = "") { + aModuleInfo := this.aModule[1] + return this.aModule[1].lpBaseOfDll + } + if !this.aModule.HasKey(moduleName) + return -1 + else + { + aModuleInfo := this.aModule[moduleName] + return this.aModule[moduleName].lpBaseOfDll + } + ; no longer returns -5 for failed to get module info + } + +/* + Method: getModuleFromAddress(address, byRef aModuleInfo) + Finds the module in which the address resides. + Parameters: + address The address of interest. + + aModuleInfo (Optional) An unquoted variable name. If the module associated with the address is found, + a moduleInfo object will be stored in this variable. This object has the + following keys: name, fileName, lpBaseOfDll, SizeOfImage, and EntryPoint. + If the address is not found to reside inside a module, the passed variable is + made blank/null. + offsetFromModuleBase (Optional) Stores the relative offset from the module base address + to the specified address. If the method fails then the passed variable is set to blank/empty. + Return Values: + 1 Success - The address is contained within a module. + -1 The specified address does not reside within a loaded module. +*/ + + getModuleFromAddress(address, byRef aModuleInfo, byRef offsetFromModuleBase := "") + { + module := this.aModule + loop module.count + { + if (address >= module.lpBaseOfDll && address < module.lpBaseOfDll + module.SizeOfImage) { + aModuleInfo := module, offsetFromModuleBase := address - module.lpBaseOfDll + return 1 + } + } + return -1 + } + + getEndAddressOfLastModule() + { + return this.aModule[this.aModule.count].lpBaseOfDll + this.aModule[this.aModule.count].SizeOfImage + } + + GetModuleInformation(hModule, byRef aModuleInfo) + { + VarSetCapacity(MODULEINFO, A_PtrSize * 3), aModuleInfo := [] + r := DllCall("psapi\GetModuleInformation" + , "Ptr", this.hProcess + , "Ptr", hModule + , "Ptr", &MODULEINFO + , "UInt", A_PtrSize * 3) + aModuleInfo := { lpBaseOfDll: hModule + , SizeOfImage: numget(MODULEINFO, A_PtrSize, "UInt") + , EntryPoint: numget(MODULEINFO, A_PtrSize * 2, "Ptr") } + return r + } + + /* Must use EnumProcessModuleEx so we can "see" 32bit process from 64bit AHK + */ + getModuleList() { + h_msvcrt := DllCall("LoadLibrary", "str", "msvcrt.dll") ; Preload dll + h_psapi := DllCall("LoadLibrary", "str", "psapi.dll") ; Preload dll + hm_list_size := 1024*8 ;make this larger than necessary + LIST_MODULES_ALL := 0x03 + VarSetCapacity( hm_list, hm_list_size, 0 ) + VarSetCapacity( hm_list_actual, A_PtrSize ) + DllCall("psapi.dll\EnumProcessModulesEx", "Ptr", this.hprocess, "Ptr", &hm_list, "Ptr", hm_list_size, "Ptr*", hm_list_actual, "UInt", LIST_MODULES_ALL) + + i := 0 + while i < hm_list_actual//A_PtrSize { + hwnd:=NumGet(&hm_list + A_PtrSize*i, "Ptr") + + VarSetCapacity(name, 512) + DllCall("psapi.dll\GetModuleBaseName", "Ptr", this.hprocess, "Ptr", hwnd, "Str", name, "UInt", 1024) + this.GetModuleInformation(hwnd, aModuleInfo) + aModuleInfo.name := name + this.aModule[name] := this.aModule[++i] := aModuleInfo + } + this.aModule.count := i + return this.aModule[1].lpBaseOfDll + } + +/* + Method: isTargetProcess64Bit(PID, hProcess := "", currentHandleAccess := "") + Determines if a process is 64 bit. + Parameters: + PID The Process ID of the target process. If required this is used to open a temporary process handle. + hProcess (Optional) A handle to the process, as returned by openProcess() i.e. [derivedObject].hProcess + currentHandleAccess (Optional) The dwDesiredAccess value used when opening the process handle which has been + passed as the hProcess parameter. If specifying hProcess, you should also specify this value. + Return Values: + True The target application is 64 bit. + False The target application is 32 bit. + Null The method failed. + Notes: + This is an internal method which is called when the new operator is used. + It is used to set the pointer type for 32/64 bit applications so the pointer methods will work. + This operation requires a handle with PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION access rights. + If the currentHandleAccess parameter does not contain these rights (or not passed) or if the hProcess (process handle) is invalid (or not passed) + a temporary handle is opened to perform this operation. Otherwise if hProcess and currentHandleAccess appear valid + the passed hProcess is used to perform the operation. +*/ + + isTargetProcess64Bit(PID, hProcess := "", currentHandleAccess := "") + { + ; If insufficient rights, open a temporary handle + if !hProcess || !(currentHandleAccess & (this.aRights.PROCESS_QUERY_INFORMATION | this.aRights.PROCESS_QUERY_LIMITED_INFORMATION)) + closeHandle := hProcess := this.openProcess(PID, this.aRights.PROCESS_QUERY_INFORMATION) + if (hProcess && DllCall("IsWow64Process", "Ptr", hProcess, "Int*", Wow64Process)) + result := !Wow64Process + closeHandle ? this.CloseHandle(hProcess) : "" + return result + } + /* + _Out_ PBOOL Wow64Proces value set to: + True if the process is running under WOW64 - 32bit app on 64bit OS. + False if the process is running under 32-bit Windows! + False if the process is a 64-bit application running under 64-bit Windows. + */ + + + + +/* + Method: hexStringToPattern(hexString) + Converts the hex string parameter into an array of bytes pattern (AOBPattern) that + can be passed to the various pattern scan methods i.e. modulePatternScan(), addressPatternScan(), rawPatternScan(), and processPatternScan() + + Parameters: + hexString - A string of hex bytes. The '0x' hex prefix is optional. + Bytes can optionally be separated using the space or tab characters. + Each byte must be two characters in length i.e. '04' or '0x04' (not '4' or '0x4') + ** Unlike the other methods, wild card bytes MUST be denoted using '??' (two question marks)** + + Return Values: + Object Success - The returned object contains the AOB pattern. + -1 An empty string was passed. + -2 Non hex character present. Acceptable characters are A-F, a-F, 0-9, ?, space, tab, and 0x (hex prefix). + -3 Non-even wild card character count. One of the wild card bytes is missing a '?' e.g. '?' instead of '??'. + -4 Non-even character count. One of the hex bytes is probably missing a character e.g. '4' instead of '04'. + + Examples: + pattern := hexStringToPattern("DEADBEEF02") + pattern := hexStringToPattern("0xDE0xAD0xBE0xEF0x02") + pattern := hexStringToPattern("DE AD BE EF 02") + pattern := hexStringToPattern("0xDE 0xAD 0xBE 0xEF 0x02") + + This will mark the third byte as wild: + pattern := hexStringToPattern("DE AD ?? EF 02") + pattern := hexStringToPattern("0xDE 0xAD ?? 0xEF 0x02") + + The returned pattern can then be passed to the various pattern scan methods, for example: + pattern := hexStringToPattern("DE AD BE EF 02") + memObject.processPatternScan(,, pattern*) ; Note the '*' +*/ + + hexStringToPattern(hexString) + { + AOBPattern := [] + hexString := RegExReplace(hexString, "(\s|0x)") + hexString := StrReplace(hexString, "?", "?", wildCardCount) + + if !length := StrLen(hexString) + return -1 ; no str + else if RegExMatch(hexString, "[^0-9a-fA-F?]") + return -2 ; non hex character and not a wild card + else if Mod(wildCardCount, 2) + return -3 ; non-even wild card character count + else if Mod(length, 2) + return -4 ; non-even character count + loop length//2 + { + value := "0x" SubStr(hexString, 1 + 2 * (A_index-1), 2) + AOBPattern.Insert(value + 0 = "" ? "?" : value) + } + return AOBPattern + } + + + +/* + Method: modulePatternScan(module := "", aAOBPattern*) + Scans the specified module for the specified array of bytes + Parameters: + module - The file name of the module/dll to search e.g. "calc.exe", "GDI32.dll", "Bass.dll" etc + If no module (null) is specified, the executable file of the process will be used. + e.g. for calc.exe it would be the same as calling modulePatternScan(, aAOBPattern*) or modulePatternScan("calc.exe", aAOBPattern*) + aAOBPattern* A variadic list of byte values i.e. the array of bytes to find. + Wild card bytes should be indicated by passing a non-numeric value eg "?". + Return Values: + Positive int Success. The memory address of the found pattern. + Null Failed to find or retrieve the specified module. ErrorLevel is set to the returned error from getModuleBaseAddress() + refer to that method for more information. + 0 The pattern was not found inside the module + -9 VirtualQueryEx() failed + -10 The aAOBPattern* is invalid. No bytes were passed +*/ + + modulePatternScan(module := "", aAOBPattern*) + { + MEM_COMMIT := 0x1000, MEM_MAPPED := 0x40000, MEM_PRIVATE := 0x20000 + , PAGE_NOACCESS := 0x01, PAGE_GUARD := 0x100 + + if (result := this.getModuleBaseAddress(module, aModuleInfo)) <= 0 + { + ErrorLevel := result ; failed + return "" + } + if !patternSize := this.getNeedleFromAOBPattern(patternMask, AOBBuffer, aAOBPattern*) + return -10 ; no pattern + ; Try to read the entire module in one RPM() + ; If fails with access (-1) iterate the modules memory pages and search the ones which are readable + if (result := this.PatternScan(aModuleInfo.lpBaseOfDll, aModuleInfo.SizeOfImage, patternMask, AOBBuffer)) >= 0 + return result ; Found / not found + ; else RPM() failed lets iterate the pages + address := aModuleInfo.lpBaseOfDll + endAddress := address + aModuleInfo.SizeOfImage + loop + { + if !this.VirtualQueryEx(address, aRegion) + return -9 + if (aRegion.State = MEM_COMMIT + && !(aRegion.Protect & (PAGE_NOACCESS | PAGE_GUARD)) ; can't read these areas + ;&& (aRegion.Type = MEM_MAPPED || aRegion.Type = MEM_PRIVATE) ;Might as well read Image sections as well + && aRegion.RegionSize >= patternSize + && (result := this.PatternScan(address, aRegion.RegionSize, patternMask, AOBBuffer)) > 0) + return result + } until (address += aRegion.RegionSize) >= endAddress + return 0 + } + +/* + Method: stringToPattern(string, encoding := "UTF-8", insertNullTerminator := False) + Converts a text string parameter into an array of bytes pattern (AOBPattern) that + can be passed to the various pattern scan methods i.e. modulePatternScan(), addressPatternScan(), rawPatternScan(), and processPatternScan() + + Parameters: + string The text string to convert. + encoding This refers to how the string is stored in the program's memory. + UTF-8 and UTF-16 are common. Refer to the AHK manual for other encoding types. + insertNullTerminator Includes the null terminating byte(s) (at the end of the string) in the AOB pattern. + This should be set to 'false' unless you are certain that the target string is null terminated and you are searching for the entire string or the final part of the string. + + Return Values: + Object Success - The returned object contains the AOB pattern. + -1 An empty string was passed. + + Examples: + pattern := stringToPattern("This text exists somewhere in the target program!") + memObject.processPatternScan(,, pattern*) ; Note the '*' +*/ + + stringToPattern(string, encoding := "UTF-8", insertNullTerminator := False) + { + if !length := StrLen(string) + return -1 ; no str + AOBPattern := [] + encodingSize := (encoding = "utf-16" || encoding = "cp1200") ? 2 : 1 + requiredSize := StrPut(string, encoding) * encodingSize - (insertNullTerminator ? 0 : encodingSize) + VarSetCapacity(buffer, requiredSize) + StrPut(string, &buffer, length + (insertNullTerminator ? 1 : 0), encoding) + loop requiredSize + AOBPattern.Insert(NumGet(buffer, A_Index-1, "UChar")) + return AOBPattern + } + +/* + Method: addressPatternScan(startAddress, sizeOfRegionBytes, aAOBPattern*) + Scans a specified memory region for an array of bytes pattern. + The entire memory area specified must be readable for this method to work, + i.e. you must ensure the area is readable before calling this method. + Parameters: + startAddress The memory address from which to begin the search. + sizeOfRegionBytes The numbers of bytes to scan in the memory region. + aAOBPattern* A variadic list of byte values i.e. the array of bytes to find. + Wild card bytes should be indicated by passing a non-numeric value eg "?". + Return Values: + Positive integer Success. The memory address of the found pattern. + 0 Pattern not found + -1 Failed to read the memory region. + -10 An aAOBPattern pattern. No bytes were passed. +*/ + + addressPatternScan(startAddress, sizeOfRegionBytes, aAOBPattern*) + { + if !this.getNeedleFromAOBPattern(patternMask, AOBBuffer, aAOBPattern*) + return -10 + return this.PatternScan(startAddress, sizeOfRegionBytes, patternMask, AOBBuffer) + } + +/* + Method: processPatternScan(startAddress := 0, endAddress := "", aAOBPattern*) + Scan the memory space of the current process for an array of bytes pattern. + To use this in a loop (scanning for multiple occurrences of the same pattern), + simply call it again passing the last found address + 1 as the startAddress. + Parameters: + startAddress - The memory address from which to begin the search. + endAddress - The memory address at which the search ends. + Defaults to 0x7FFFFFFF for 32 bit target processes. + Defaults to 0xFFFFFFFF for 64 bit target processes when the AHK script is 32 bit. + Defaults to 0x7FFFFFFFFFF for 64 bit target processes when the AHK script is 64 bit. + 0x7FFFFFFF and 0x7FFFFFFFFFF are the maximum process usable virtual address spaces for 32 and 64 bit applications. + Anything higher is used by the system (unless /LARGEADDRESSAWARE and 4GT have been modified). + Note: The entire pattern must be occur inside this range for a match to be found. The range is inclusive. + aAOBPattern* - A variadic list of byte values i.e. the array of bytes to find. + Wild card bytes should be indicated by passing a non-numeric value eg "?". + Return Values: + Positive integer - Success. The memory address of the found pattern. + 0 The pattern was not found. + -1 VirtualQueryEx() failed. + -2 Failed to read a memory region. + -10 The aAOBPattern* is invalid. (No bytes were passed) +*/ + + processPatternScan(startAddress := 0, endAddress := "", aAOBPattern*) + { + address := startAddress + if !(endAddress is "integer") + endAddress := this.isTarget64bit ? 0x7FFFFFFFFFF : 0x7FFFFFFF + + MEM_COMMIT := 0x1000, MEM_MAPPED := 0x40000, MEM_PRIVATE := 0x20000 + PAGE_NOACCESS := 0x01, PAGE_GUARD := 0x100 + if !patternSize := this.getNeedleFromAOBPattern(patternMask, AOBBuffer, aAOBPattern*) + return -10 + while address <= endAddress ; > 0x7FFFFFFF - definitely reached the end of the useful area (at least for a 32 target process) + { + if !this.VirtualQueryEx(address, aInfo) + return -1 + if A_Index = 1 + aInfo.RegionSize -= address - aInfo.BaseAddress + if (aInfo.State = MEM_COMMIT) + && !(aInfo.Protect & (PAGE_NOACCESS | PAGE_GUARD)) ; can't read these areas + ;&& (aInfo.Type = MEM_MAPPED || aInfo.Type = MEM_PRIVATE) ;Might as well read Image sections as well + && aInfo.RegionSize >= patternSize + && (result := this.PatternScan(address, aInfo.RegionSize, patternMask, AOBBuffer)) + { + if result < 0 + return -2 + else if (result + patternSize - 1 <= endAddress) + return result + else return 0 + } + address += aInfo.RegionSize + } + return 0 + } + +/* + Method: rawPatternScan(byRef buffer, sizeOfBufferBytes := "", aAOBPattern*) + Scans a binary buffer for an array of bytes pattern. + This is useful if you have already dumped a region of memory via readRaw() + Parameters: + buffer The binary buffer to be searched. + sizeOfBufferBytes The size of the binary buffer. If null or 0 the size is automatically retrieved. + startOffset The offset from the start of the buffer from which to begin the search. This must be >= 0. + aAOBPattern* A variadic list of byte values i.e. the array of bytes to find. + Wild card bytes should be indicated by passing a non-numeric value eg "?". + Return Values: + >= 0 The offset of the pattern relative to the start of the haystack. + -1 Not found. + -2 Parameter incorrect. +*/ + + rawPatternScan(byRef buffer, sizeOfBufferBytes := "", startOffset := 0, aAOBPattern*) + { + if !this.getNeedleFromAOBPattern(patternMask, AOBBuffer, aAOBPattern*) + return -10 + if (sizeOfBufferBytes + 0 = "" || sizeOfBufferBytes <= 0) + sizeOfBufferBytes := VarSetCapacity(buffer) + if (startOffset + 0 = "" || startOffset < 0) + startOffset := 0 + return this.bufferScanForMaskedPattern(&buffer, sizeOfBufferBytes, patternMask, &AOBBuffer, startOffset) + } + +/* + Method: getNeedleFromAOBPattern(byRef patternMask, byRef needleBuffer, aAOBPattern*) + Converts an array of bytes pattern (aAOBPattern*) into a binary needle and pattern mask string + which are compatible with patternScan() and bufferScanForMaskedPattern(). + The modulePatternScan(), addressPatternScan(), rawPatternScan(), and processPatternScan() methods + allow you to directly search for an array of bytes pattern in a single method call. + Parameters: + patternMask - (output) A string which indicates which bytes are wild/non-wild. + needleBuffer - (output) The array of bytes passed via aAOBPattern* is converted to a binary needle and stored inside this variable. + aAOBPattern* - (input) A variadic list of byte values i.e. the array of bytes from which to create the patternMask and needleBuffer. + Wild card bytes should be indicated by passing a non-numeric value eg "?". + Return Values: + The number of bytes in the binary needle and hence the number of characters in the patternMask string. +*/ + + getNeedleFromAOBPattern(byRef patternMask, byRef needleBuffer, aAOBPattern*) + { + patternMask := "", VarSetCapacity(needleBuffer, aAOBPattern.MaxIndex()) + for i, v in aAOBPattern + patternMask .= (v + 0 = "" ? "?" : "x"), NumPut(round(v), needleBuffer, A_Index - 1, "UChar") + return round(aAOBPattern.MaxIndex()) + } + + ; The handle must have been opened with the PROCESS_QUERY_INFORMATION access right + VirtualQueryEx(address, byRef aInfo) + { + + if (!isObject(aInfo) || aInfo.__Class != "_ClassMemory._MEMORY_BASIC_INFORMATION") + aInfo := new this._MEMORY_BASIC_INFORMATION() + return aInfo.SizeOfStructure = DLLCall("VirtualQueryEx" + , "Ptr", this.hProcess + , "Ptr", address + , "Ptr", aInfo.pStructure + , "Ptr", aInfo.SizeOfStructure + , "Ptr") + } + + /* + Method: suspend() / resume() + Notes: + These are undocumented Windows functions which suspend and resume the process. Here be dragons. + The process handle must have PROCESS_SUSPEND_RESUME access rights. + That is, you must specify this when using the new operator, as it is not included. + Some people say it requires more rights and just use PROCESS_ALL_ACCESS, however PROCESS_SUSPEND_RESUME has worked for me. + Suspending a process manually can be quite helpful when reversing memory addresses and pointers, although it's not at all required. + As an unorthodox example, memory addresses holding pointers are often stored in a slightly obfuscated manner i.e. they require bit operations to calculate their + true stored value (address). This obfuscation can prevent Cheat Engine from finding the true origin of a pointer or links to other memory regions. If there + are no static addresses between the obfuscated address and the final destination address then CE wont find anything (there are ways around this in CE). + One way around this is to + suspend the process, write the true/deobfuscated value to the address and then perform your scans. Afterwards write back the original values and resume the process. + */ + + suspend() + { + return DllCall("ntdll\NtSuspendProcess", "Ptr", this.hProcess) + } + + resume() + { + return DllCall("ntdll\NtResumeProcess", "Ptr", this.hProcess) + } + +/* + SeDebugPrivileges is required to read/write memory in some programs. + This only needs to be called once when the script starts, + regardless of the number of programs being read (or if the target programs restart) + Call this before attempting to call any other methods in this class + i.e. call _ClassMemory.setSeDebugPrivilege() at the very start of the script. +*/ + + setSeDebugPrivilege(enable := True) + { + h := DllCall("OpenProcess", "UInt", 0x0400, "Int", false, "UInt", DllCall("GetCurrentProcessId"), "Ptr") + ; Open an adjustable access token with this process (TOKEN_ADJUST_PRIVILEGES = 32) + DllCall("Advapi32.dll\OpenProcessToken", "Ptr", h, "UInt", 32, "PtrP", t) + VarSetCapacity(ti, 16, 0) ; structure of privileges + NumPut(1, ti, 0, "UInt") ; one entry in the privileges array... + ; Retrieves the locally unique identifier of the debug privilege: + DllCall("Advapi32.dll\LookupPrivilegeValue", "Ptr", 0, "Str", "SeDebugPrivilege", "Int64P", luid) + NumPut(luid, ti, 4, "Int64") + if enable + NumPut(2, ti, 12, "UInt") ; enable this privilege: SE_PRIVILEGE_ENABLED = 2 + ; Update the privileges of this process with the new access token: + r := DllCall("Advapi32.dll\AdjustTokenPrivileges", "Ptr", t, "Int", false, "Ptr", &ti, "UInt", 0, "Ptr", 0, "Ptr", 0) + DllCall("CloseHandle", "Ptr", t) ; close this access token handle to save memory + DllCall("CloseHandle", "Ptr", h) ; close this process handle to save memory + return r + } + + /* + // The c++ function used to generate the machine code + int scan(unsigned char* haystack, unsigned int haystackSize, unsigned char* needle, unsigned int needleSize, char* patternMask, unsigned int startOffset) + { + for (unsigned int i = startOffset; i <= haystackSize - needleSize; i++) + { + for (unsigned int j = 0; needle[j] == haystack[i + j] || patternMask[j] == '?'; j++) + { + if (j + 1 == needleSize) + return i; + } + } + return -1; + } + */ + +/* + Method: PatternScan(startAddress, sizeOfRegionBytes, patternMask, byRef needleBuffer) + Scans a specified memory region for a binary needle pattern using a machine code function + If found it returns the memory address of the needle in the processes memory. + Parameters: + startAddress - The memory address from which to begin the search. + sizeOfRegionBytes - The numbers of bytes to scan in the memory region. + patternMask - This string indicates which bytes must match and which bytes are wild. Each wildcard byte must be denoted by a single '?'. + Non wildcards can use any other single character e.g 'x'. There should be no spaces. + With the patternMask 'xx??x', the first, second, and fifth bytes must match. The third and fourth bytes are wild. + needleBuffer - The variable which contains the binary needle. This needle should consist of UChar bytes. + Return Values: + Positive integer The address of the pattern. + 0 Pattern not found. + -1 Failed to read the region. +*/ + + patternScan(startAddress, sizeOfRegionBytes, byRef patternMask, byRef needleBuffer) + { + if !this.readRaw(startAddress, buffer, sizeOfRegionBytes) + return -1 + if (offset := this.bufferScanForMaskedPattern(&buffer, sizeOfRegionBytes, patternMask, &needleBuffer)) >= 0 + return startAddress + offset + else return 0 + } + +/* + Method: bufferScanForMaskedPattern(byRef hayStack, sizeOfHayStackBytes, byRef patternMask, byRef needle) + Scans a binary haystack for binary needle against a pattern mask string using a machine code function. + Parameters: + hayStackAddress - The address of the binary haystack which is to be searched. + sizeOfHayStackBytes The total size of the haystack in bytes. + patternMask - A string which indicates which bytes must match and which bytes are wild. Each wildcard byte must be denoted by a single '?'. + Non wildcards can use any other single character e.g 'x'. There should be no spaces. + With the patternMask 'xx??x', the first, second, and fifth bytes must match. The third and fourth bytes are wild. + needleAddress - The address of the binary needle to find. This needle should consist of UChar bytes. + startOffset - The offset from the start of the haystack from which to begin the search. This must be >= 0. + Return Values: + >= 0 Found. The pattern begins at this offset - relative to the start of the haystack. + -1 Not found. + -2 Invalid sizeOfHayStackBytes parameter - Must be > 0. + + Notes: + This is a basic function with few safeguards. Incorrect parameters may crash the script. +*/ + + bufferScanForMaskedPattern(hayStackAddress, sizeOfHayStackBytes, byRef patternMask, needleAddress, startOffset := 0) + { + static p + if !p + p := this.MCode("48895C2408488974241048897C2418448B5424308BF2498BD8412BF1488BF9443BD6774A4C8B5C24280F1F800000000033C90F1F400066660F1F840000000000448BC18D4101418D4AFF03C80FB60C3941380C18740743803C183F7509413BC1741F8BC8EBDA41FFC2443BD676C283C8FF488B5C2408488B742410488B7C2418C3488B5C2408488B742410488B7C2418418BC2C3") + if (needleSize := StrLen(patternMask)) + startOffset > sizeOfHayStackBytes + return -1 ; needle can't exist inside this region. And basic check to prevent wrap around error of the UInts in the machine function + if (sizeOfHayStackBytes > 0) + return DllCall(p, "Ptr", hayStackAddress, "UInt", sizeOfHayStackBytes, "Ptr", needleAddress, "UInt", needleSize, "AStr", patternMask, "UInt", startOffset, "cdecl int") + return -2 + } + +/* + Notes: + Other alternatives for non-wildcard buffer comparison. + Use memchr to find the first byte, then memcmp to compare the remainder of the buffer against the needle and loop if it doesn't match + The function FindMagic() by Lexikos uses this method. + Use scanInBuf() machine code function - but this only supports 32 bit ahk. I could check if needle contains wild card and AHK is 32bit, + then call this function. But need to do a speed comparison to see the benefits, but this should be faster. Although the benefits for + the size of the memory regions be dumped would most likely be inconsequential as it's already extremely fast. +*/ + + MCode(mcode) + { + s := StrLen(mcode)/2 + p := DllCall("GlobalAlloc", "uint", 0, "ptr", s, "ptr") + ; if (c="x64") ; Virtual protect must always be enabled for both 32 and 64 bit. If DEP is set to all applications (not just systems), then this is required + DllCall("VirtualProtect", "ptr", p, "ptr", s, "uint", 0x40, "uint*", op) + if DllCall("crypt32\CryptStringToBinary", "str", mcode, "uint", 0, "uint", 4, "ptr", p, "uint*", s, "ptr", 0, "ptr", 0) + return p + DllCall("GlobalFree", "ptr", p) + return + } + +/* + This link indicates that the _MEMORY_BASIC_INFORMATION32/64 should be based on the target process + http://stackoverflow.com/questions/20068219/readprocessmemory-on-a-64-bit-proces-always-returns-error-299 + The msdn documentation is unclear, and suggests that a debugger can pass either structure - perhaps there is some other step involved. + My tests seem to indicate that you must pass _MEMORY_BASIC_INFORMATION i.e. structure is relative to the AHK script bitness. + Another post on the net also agrees with my results. + + Notes: + A 64 bit AHK script can call this on a target 64 bit process. Issues may arise at extremely high memory addresses as AHK does not support UInt64 (but these addresses should never be used anyway). + A 64 bit AHK can call this on a 32 bit target and it should work. + A 32 bit AHk script can call this on a 64 bit target and it should work providing the addresses fall inside the 32 bit range. +*/ + + class _MEMORY_BASIC_INFORMATION + { + __new() + { + if !this.pStructure := DllCall("GlobalAlloc", "UInt", 0, "Ptr", this.SizeOfStructure := 48, "Ptr") + return "" + return this + } + __Delete() + { + DllCall("GlobalFree", "Ptr", this.pStructure) + } + ; For 64bit the int64 should really be unsigned. But AHK doesn't support these + ; so this won't work correctly for higher memory address areas + __get(key) + { + static aLookUp := { "BaseAddress": {"Offset": 0, "Type": "Int64"} + , "AllocationBase": {"Offset": 8, "Type": "Int64"} + , "AllocationProtect": {"Offset": 16, "Type": "UInt"} + , "RegionSize": {"Offset": 24, "Type": "Int64"} + , "State": {"Offset": 32, "Type": "UInt"} + , "Protect": {"Offset": 36, "Type": "UInt"} + , "Type": {"Offset": 40, "Type": "UInt"} } + + if aLookUp.HasKey(key) + return numget(this.pStructure+0, aLookUp[key].Offset, aLookUp[key].Type) + } + __set(key, value) + { + static aLookUp := { "BaseAddress": {"Offset": 0, "Type": "Int64"} + , "AllocationBase": {"Offset": 8, "Type": "Int64"} + , "AllocationProtect": {"Offset": 16, "Type": "UInt"} + , "RegionSize": {"Offset": 24, "Type": "Int64"} + , "State": {"Offset": 32, "Type": "UInt"} + , "Protect": {"Offset": 36, "Type": "UInt"} + , "Type": {"Offset": 40, "Type": "UInt"} } + + + if aLookUp.HasKey(key) + { + NumPut(value, this.pStructure+0, aLookUp[key].Offset, aLookUp[key].Type) + return value + } + } + Ptr() + { + return this.pStructure + } + sizeOf() + { + return this.SizeOfStructure + } + } + +} + + diff --git a/classes/class_Printers.ahk b/classes/class_Printers.ahk new file mode 100644 index 00000000..23210a8c --- /dev/null +++ b/classes/class_Printers.ahk @@ -0,0 +1,140 @@ +; https://www.autohotkey.com/boards/viewtopic.php?f=6&t=62955&sid=946210846b62fc770d1a8241764148d4 + + +Class Printers +{ + ; =========================================================================================================================== + ; https://docs.microsoft.com/en-us/windows/desktop/printdocs/addprinterconnection + ; =========================================================================================================================== + AddConnection(printer) + { + if !(DllCall("winspool.drv\AddPrinterConnection", "str", printer)) + return false + return true + } + + ; =========================================================================================================================== + ; https://docs.microsoft.com/en-us/windows/desktop/printdocs/closeprinter + ; =========================================================================================================================== + CloseHandle(handle) + { + if !(DllCall("winspool.drv\ClosePrinter", "str", handle)) + return false + return true + } + + ; =========================================================================================================================== + ; https://docs.microsoft.com/en-us/windows/desktop/printdocs/deleteprinterconnection + ; =========================================================================================================================== + DeleteConnection(printer) + { + if !(DllCall("winspool.drv\DeletePrinterConnection", "str", printer)) + return false + return true + } + + ; =========================================================================================================================== + ; https://docs.microsoft.com/en-us/windows/desktop/printdocs/enumprinters + ; =========================================================================================================================== + Enum(flags) + { + if !(DllCall("winspool.drv\EnumPrinters", "uint", flags, "ptr", 0, "uint", 2, "ptr", 0, "uint", 0, "uint*", size, "uint*", 0)) + { + size := VarSetCapacity(buf, size << 1, 0) + if (DllCall("winspool.drv\EnumPrinters", "uint", flags, "ptr", 0, "uint", 2, "ptr", &buf, "uint", size, "uint*", 0, "uint*", count)) + { + addr := &buf, PRINTER_INFO_2 := [] + loop % count + { + PRINTER_INFO_2[A_Index, "ServerName"] := StrGet(NumGet(addr + 0, "ptr")) + PRINTER_INFO_2[A_Index, "PrinterName"] := StrGet(NumGet(addr + A_PtrSize, "ptr")) + PRINTER_INFO_2[A_Index, "ShareName"] := StrGet(NumGet(addr + A_PtrSize * 2, "ptr")) + PRINTER_INFO_2[A_Index, "PortName"] := StrGet(NumGet(addr + A_PtrSize * 3, "ptr")) + PRINTER_INFO_2[A_Index, "DriverName"] := StrGet(NumGet(addr + A_PtrSize * 4, "ptr")) + PRINTER_INFO_2[A_Index, "Comment"] := StrGet(NumGet(addr + A_PtrSize * 5, "ptr")) + PRINTER_INFO_2[A_Index, "Location"] := StrGet(NumGet(addr + A_PtrSize * 6, "ptr")) + ;DevMode := NumGet(addr + A_PtrSize * 7, "ptr") + ; https://docs.microsoft.com/en-us/windows/desktop/api/Wingdi/ns-wingdi-_devicemodea + PRINTER_INFO_2[A_Index, "SepFile"] := StrGet(NumGet(addr + A_PtrSize * 8, "ptr")) + PRINTER_INFO_2[A_Index, "PrintProcessor"] := StrGet(NumGet(addr + A_PtrSize * 9, "ptr")) + PRINTER_INFO_2[A_Index, "Datatpye"] := StrGet(NumGet(addr + A_PtrSize * 10, "ptr")) + PRINTER_INFO_2[A_Index, "Parameters"] := StrGet(NumGet(addr + A_PtrSize * 11, "ptr")) + ;SecurityDescriptor := NumGet(addr + A_PtrSize * 12, "ptr") + ; https://docs.microsoft.com/de-de/windows/desktop/api/winnt/ns-winnt-_security_descriptor + PRINTER_INFO_2[A_Index, "Attributes"] := NumGet(addr + A_PtrSize * 13, "uint") + PRINTER_INFO_2[A_Index, "Priority"] := NumGet(addr + A_PtrSize * 13 + 4, "uint") + PRINTER_INFO_2[A_Index, "DefaultPriority"] := NumGet(addr + A_PtrSize * 13 + 8, "uint") + PRINTER_INFO_2[A_Index, "StartTime"] := NumGet(addr + A_PtrSize * 13 + 12, "uint") + PRINTER_INFO_2[A_Index, "UntilTime"] := NumGet(addr + A_PtrSize * 13 + 16, "uint") + PRINTER_INFO_2[A_Index, "Status"] := NumGet(addr + A_PtrSize * 13 + 20, "uint") + PRINTER_INFO_2[A_Index, "Jobs"] := NumGet(addr + A_PtrSize * 13 + 24, "uint") + PRINTER_INFO_2[A_Index, "AveragePPM"] := NumGet(addr + A_PtrSize * 13 + 28, "uint") + addr += A_PtrSize * 13 + 32 + } + return PRINTER_INFO_2 + } + } + return false + } + + + ; =========================================================================================================================== + ; https://docs.microsoft.com/en-us/windows/desktop/printdocs/getdefaultprinter + ; =========================================================================================================================== + GetDefault() + { + if !(DllCall("winspool.drv\GetDefaultPrinter", "ptr", 0, "uint*", size)) + { + size := VarSetCapacity(buf, size << 1, 0) + if !(DllCall("winspool.drv\GetDefaultPrinter", "str", buf, "uint*", size)) + return false + } + return buf + } + + ; =========================================================================================================================== + ; https://docs.microsoft.com/en-us/windows/desktop/printdocs/getprinter + ; =========================================================================================================================== + GetInfo(printer) + { + if (handle := this.OpenHandle(printer)) + { + if !(DllCall("winspool.drv\GetPrinter", "ptr", handle, "uint", 1, "ptr", 0, "uint", 0, "uint*", size)) + { + size := VarSetCapacity(buf, size << 1, 0) + if (DllCall("winspool.drv\GetPrinter", "ptr", handle, "uint", 1, "ptr", &buf, "uint", size, "uint*", 0)) + { + PRINTER_INFO_1 := {} + PRINTER_INFO_1.Flags := NumGet(&buf + 0, "uint") + PRINTER_INFO_1.Description := StrGet(NumGet(&buf + (A_PtrSize * 1), "uptr"), "utf-16") + PRINTER_INFO_1.Name := StrGet(NumGet(&buf + (A_PtrSize * 2), "uptr"), "utf-16") + PRINTER_INFO_1.Comment := StrGet(NumGet(&buf + (A_PtrSize * 3), "uptr"), "utf-16") + this.CloseHandle(handle) + return PRINTER_INFO_1 + } + } + this.CloseHandle(handle) + } + return false + } + + ; =========================================================================================================================== + ; https://docs.microsoft.com/en-us/windows/desktop/printdocs/openprinter + ; =========================================================================================================================== + OpenHandle(printer) + { + if !(DllCall("winspool.drv\OpenPrinter", "ptr", &printer, "ptr*", handle, "ptr", 0)) + return false + return handle + } + + ; =========================================================================================================================== + ; https://docs.microsoft.com/en-us/windows/desktop/printdocs/setdefaultprinter + ; =========================================================================================================================== + SetDefault(printer) + { + if !(DllCall("winspool.drv\SetDefaultPrinter", "str", printer)) + return false + return true + } +} \ No newline at end of file diff --git a/classes/class_SciTEdirector_AHK2.ahk b/classes/class_SciTEdirector_AHK2.ahk new file mode 100644 index 00000000..7e956613 --- /dev/null +++ b/classes/class_SciTEdirector_AHK2.ahk @@ -0,0 +1,54 @@ +/* SciTE Director for AHK v2 + +*/ + +class SciTEdirector { + WM_COPYDATA := 0x4A + IDM_TOOLS := 1100 ;1100-1199 can be used for lua scripts (command.number) + + __New(exeSciTE) { + DetectHiddenWindows "On" + OnMessage(this.WM_COPYDATA, (param*)=>this.recvmsg(param*)) + Run(exeSciTE " -director.hwnd=" A_ScriptHwnd, , , scitePID) + ;script starts SciTE as its director + + WinWait("ahk_pid " scitePID) + this.PID := scitePID + return this + } + + recvmsg(hwndSender, recvdata, msg, hwnd){ + size := NumGet(recvdata, A_PtrSize, A_PtrSize < 8 ? "UInt" : "UInt64") + pData := NumGet(recvdata, A_PtrSize*2, A_PtrSize < 8 ? "UInt" : "UInt64") + data := StrGet(pData, size, "UTF-8") + cmd := StrSplit(data, ":") + print("RECV: " data) + If InStr(data,"identity:") + this.directorID := hwndSender + } + + sendmsg(command, param:="") { + ;"\" needs to be replaced with "\\". Avoid regex for speed + ; see SciTE.h for constants to use with menucommand + ; IDM_TOOLS (1100 to 1199) gives 100 lua scripts <- maybe not + cmd := command ":" param + ;~ if command == "output" + ;~ print("SEND: " command ": (Some Text)") + ;~ else + ;~ print("SEND: " cmd) + len := this.strPutVar(cmd, myvar, "UTF-8") + VarSetCapacity(structData, 3*A_PtrSize, 0) + NumPut(len, structData, A_PtrSize, "UInt64") + NumPut(&myvar, structData, A_PtrSize*2, "UInt64") + SendMessage( this.WM_COPYDATA, , &structData, , "ahk_id " this.directorID) + } + + strPutVar(string, ByRef var, encoding) { + ; Ensure capacity. + VarSetCapacity( var, StrPut(string, encoding) + ; StrPut returns char count, but VarSetCapacity needs bytes. + * ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) ) + ; Copy or convert the string. + return StrPut(string, &var, encoding) + } +} \ No newline at end of file diff --git a/classes/class_Spinner.ahk b/classes/class_Spinner.ahk new file mode 100644 index 00000000..07537bdd --- /dev/null +++ b/classes/class_Spinner.ahk @@ -0,0 +1,113 @@ +#Include, + +#If (!LoadLib = 1) + ExitApp +#If + + +Class Spinner { + Static ID := 0 + Static Pi := 4 * ATan(1) + + DotCount := 9 + DotSize := 12 + Radius := 20 + Color:= "000000" + Delay := 250 + bClockwise := False + + __New(oConfig, hParent := 0) { + If oConfig.HasKey("DotCount") + this.DotCount := oConfig.DotCount + If oConfig.HasKey("DotSize") + this.DotSize := oConfig.DotSize + If oConfig.HasKey("Radius") + this.Radius := oConfig.Radius + If oConfig.HasKey("Color") + this.Color := oConfig.Color + If oConfig.HasKey("Delay") + this.Delay := oConfig.Delay + If oConfig.HasKey("bClockwise") + this.bClockwise := oConfig.bClockwise + + If (hParent = 0) + this.Width := A_ScreenWidth, this.Height := A_ScreenHeight + Else { + WinGetPos,,, Width, Height, ahk_id %hParent% + this.Width := Width, this.Height := Height + } + + this.MidX := (this.Width // 2) - 10 + this.MidY := (this.Height // 2) - 10 + + this.pToken := Gdip_Startup() + this.hDC := CreateCompatibleDC() + this.hBM := CreateDIBSection(this.Width, this.Height) + this.oBM := SelectObject(this.hDC, this.hBM) + this.pGraphics := Gdip_GraphicsFromHDC(this.hDC) + Gdip_SetSmoothingMode(this.pGraphics, 4) + + this.ID := Spinner.ID++ + Gui, % "Spinner" this.ID ": New", +AlwaysOnTop +hWndhSpin + Gui, +E0x80020 ; WS_EX_LAYERED | WS_EX_TRANSPARENT (click through) + Gui, +0x40000000 -0x80000000 ; +WS_CHILD -WS_POPUP + DllCall("SetParent", "Ptr", this.hSpin := hSpin, "Ptr", hParent) + + + this.DOT := [], this.ARGB := [], this.BRUSHES := [] + Loop, % this.DotCount { + this.DOT[A_Index, "x"] := this.MidX + this.Radius * Cos(A_Index * 2 * this.Pi / this.DotCount) + this.DOT[A_Index, "y"] := this.MidY + this.Radius * Sin(A_Index * 2 * this.Pi / this.DotCount) + this.ARGB.Push(Format("0x{:x}", A_Index * 255 // this.DotCount) this.Color) + this.BRUSHES.Push(Gdip_BrushCreateSolid(this.ARGB[A_Index])) + } + } + + __Delete() { + Gui, % "Spinner" this.ID ": Destroy" + SelectObject(this.hDC, this.oBM) + DeleteObject(this.hBM) + DeleteDC(this.hDC) + Gdip_DeleteGraphics(this.pGraphics) + Loop, % this.DotCount + Gdip_DeleteBrush(this.BRUSHES[A_Index]) + Gdip_Shutdown(this.pToken) + } + + Call() { + ;----------------------------------------------------------------------- + ; the timer clears the drawing, the draws all the dots again + ; when drawing, each dot gets a new brush every time + ; I keep the index for brushes in range with Mod(index, DotCount) + 1 + ; this.Index is initialized large enough for clockwise direction + ;----------------------------------------------------------------------- + + If (this.Index++ > 2 * this.DotCount) + this.Index -= this.DotCount + + Gdip_GraphicsClear(this.pGraphics) + Sign := this.bClockwise ? -1 : 1 + + Loop, % This.DotCount { + Gdip_FillEllipse(this.pGraphics + , this.BRUSHES[Mod(this.Index + A_Index * Sign, this.DotCount) + 1] + , this.DOT[A_Index].x, this.DOT[A_Index].y, this.DotSize, this.DotSize) + UpdateLayeredWindow(this.hSpin, this.hDC, 0, 0, this.Width, this.Height) + } + } + + Start() { + Gui, % "Spinner" this.ID ": Show", % "NA x0 y0 w" this.Width " h" this.Height + this.Index := this.DotCount + SetTimer, %this%, % this.Delay + this.Call() + } + + Close() { + this.__Delete() + } + + Stop() { + SetTimer, %this%, Off + } +} diff --git a/lib-i_to_z/JSON-Obj.ahk b/classes/class_StringObject.ahk similarity index 100% rename from lib-i_to_z/JSON-Obj.ahk rename to classes/class_StringObject.ahk diff --git a/classes/class_TreeOf.ahk b/classes/class_TreeOf.ahk new file mode 100644 index 00000000..0f24c7a4 --- /dev/null +++ b/classes/class_TreeOf.ahk @@ -0,0 +1,383 @@ +/* + TreeOf.ahk + - nnnik rev. 0.1 + + TreeOf is a library that provides implementations for a few commonly + used Tree Data structures that I use in my scripts. + I want to avoid circular references and indirect references are a pain to work with, + when the script shuts down. + The Trees should automatically create a clone of a default object wherever the tree, + has data in its structure. + Access and should be fast memory usage should be low. + The interfaces should be similar wherever possible and easy to use/remember. + The Trees should support all data types and names the normal associative array/map supports. + Base as a string should be supported too and not lead to issues. + + Generally there are a few things that can be different about tree data types: + - Linear vs. back referencing: + a linear tree will have branches with only one direct parent. + back referencing trees allows each branch to have many parent branches. + + - Leaf Data vs. Branch Data + a Leaf Data tree will have its data added as special branches called leafs that have no childs + a Branch data tree contains data on each branch +*/ + + + +/* + LinearBranchDataTreeOf: + A linear tree to represent for example categories (Movies -> Horror -> Slasher)(?) + Branch Data to allow the creation and modification of data at each branch + + This class represents the entire tree - to get the root branch call - getBranch() + + The class does not store the branch classes directly. + Rather it stores the child data and data at each branch and creates new branch classes + as an interface for the user to access the data it provides. + That avoids circular references and simplifies the writing of the library at the cost of access speed. +*/ + +class LinearBranchDataTreeOf { + + branchData := {} ;a associative array containing the data elements at each branch (branch as key, data as value) + children := {} ;the root elements and its children + + ;tree := new LinearBranchDataTreeOf(dataPrototype) + ; dataPrototype - the data structure that is cloned for each branch + ; the object provided by the caller will be automatically cloned + ; when anything attempts to get the data at a branch + + __New(dataPrototype) { + local + if (!isObject(dataPrototype)) { + throw exception("ERR_PROTOTYPE_NOT_OBJECT", -1, "Cannot clone none-object - the provided data is not suitable as prototype") + } + this.dataPrototype := dataPrototype + } + + ;rootBranch := Tree.getBranch() + ; gets the root branch + ; - rootBranch: a Branch object representing the root of this tree + ;additionally: + ;branch := getBranch(path*) + ; - path: multiple parameters that name the next descendant of the last descendant of... the root branch + ; - branch: a branch object representing this branch + getBranch(path*) { + local + static init := 0 + if (!init) { + baseObj := ObjGetBase(this) + ObjRawSet(baseObj, "_branchLookup", ObjRawGet(ObjRawGet(baseObj, "Branch"), "_branchLookup")) ;copy branchlookup into this class + init := 1 + } + currentBranch := this._branchLookup(path) + branchClass := this.Branch + return new branchClass(this, path.clone(), currentBranch) + } + + ;branch class: interface used by the user of this class to + ; interact with the branches and the data of the tree structure + + class Branch { + + ;called internally + ; - tree is the tree that contains the branch + ; - path is the path that leads to this branch (an array) + ; - children is the array that contains the children of + ; this branch and acts as the key for the data this Branch holds in the trees + ; branchData array + __New(tree, path, children) { + local + this.tree := tree + this.path := path + this.children := children + } + + ;data := Branch.getData() + ; gets the data object this tree holds + ; if it isn't buffered yet look it up and buffer it + ; if it doesn't exist yet create it + getData() { + local + this._checkValid() + if (!data := this.data) { ;if it isnt buffered + if (!data := this.tree.branchData[this.children]) ;if it isn't created + this.tree.branchData[this.children] := data := this.tree.dataPrototype.clone() ;create + this.data := data ;buffer + } + if !data + throw exception("ERR_PROTOTYPE_CLONE_NULL", -1, "Cloning prototype yielded false - the provided object is not suitabe as prototype") + return data + } + + ;child := Branch.getBranch(name) + ; returns child branch with the name name + ; - name: the name of a direct child + ; - child: a branch object representing the child + ;additionally: + ;child := Branch.getBranch(path*) + ; returns the branch following the path provided: + /* + slasherBranch := dataBase.getBranch("movies", "horror", "slasher") + */ + ; - path: the name of a children of a children of a children of... this branch + ; - child: a branch class representing that branch + getBranch(path*) { + local + this._checkValid() + ;funny, getBranch() would return a new instance of this branch + childBranch := this._branchLookup(path) + newPath := this.path.clone() + newPath.push(path*) + branchClass := ObjGetBase(this) ;create a new branch using this.base as basis + return new branchClass(this.tree, newPath, childBranch) ;return a new instance + } + + ;children := Branch.getBranches() + ; returns an associative array of all the child branches this branch contains + ; the key is the name of the child branch, the value is a branch object representing the child branch + ; will return an empty array if the Branch has no children + ;additionally: + ;children := Branch.getBranches(path*) + ; returns an associative array of all the child branches at a branch with the path path: + /* + horrorBranchChildren := database.getChildBranches("movies", "horror") + */ + ; - path: the name of a children of a children of a children of... this branch + ; - children an associative array + getChildBranches(path*) { + local + this._checkValid() + childrenData := this._branchLookup(path) + children := childrenData.clone() + branchClass := ObjGetBase(this) + tree := this.tree + cPath := this.path.cone() + cPath.push(path) + for each, childBranch in this._rawLoop(childrenData) { + newPath := cPath.clone() + newPath.push(each) + ObjRawSet(children, each, new branchClass(tree, newPath, childBranch)) ;objRawSet to avoid issues with .base + } + return children + } + + ;hasBranch := Branch.hasChild(name) + ; returns whether this branch has a child branch with the name name + ;additionally: + ;hasBranch := Branch.hasChild(path*) + ; returns whether a branch with that path exists or not + ; you know the drill by now + hasBranch(path*) { + local + this._checkValid() + currentlySearching := this.children + for each, childName in path + if (!currentlySearching := ObjRawGet(currentlySearching, childName)) + return 0 + return 1 + } + + ;childBranch := Branch.addBranch("name") + ; creates and returns a new child branch with the name name + ; throws an exception if childBranch already exists + ;additionally: + ;childBranch := Branch.addBranch(path*) + ; creates and returns a new child branch at the path path + ; creates all necessary branches it encounters along the way + ; throws an exception if all branches already exist + addBranch(path*) { + local + this._checkValid() + currentChilds := this.children + + for each, branchPath in path { + if (!nextChilds := ObjRawGet(currentChilds, branchPath)) { + nextChilds := {} + ObjRawSet(currentChilds, branchPath, nextChilds) + } else if (each = path.length()) + throw exception("ERR_BRANCH_EXISTS", -1, "Branch already exists - The branch that was supposed to be added already exists") + currentChilds := nextChilds + } + + branchClass := ObjGetBase(this) + newPath := this.path.clone() + newPath.push(path*) + return new branchClass(this.tree, newPath, currentChilds) + } + + ;Branch.removeBranch() + ; removes this branch and all childs - returns nothing + ; future accesses to any invalid branches will throw + ;additionally: + ;Branch.removeBranch(path*) + ; removes the branch with the path path and all of its children - returns nothing + ; future accesses to any invalid branches will throw + removeBranch(path*) { + local + this._checkValid() + branchData := this.tree.branchData + if (path.length()=0) { ;if this branch is the target we need to lookup the parent differently + limit = this.path.length() - 1 + if (limit < 0) { ;reset the tree when removing the root + this.tree.children := {} + } else { ;lookup parent if the current branch gets deleted + currentBranch := this.tree.children + for each, branchName in this.path { + currentBranch := ObjRawGet(currentBranch, branchName) + } until each = limit + ObjDelete(currentBranch, this.path[limit+1]) + } + currentContainer := this.children + this._isValid := this._isValidFalse + } else { + childName := path.pop() ;otherwise we can just not do this step of the lookup to get the parent + parentContainer := this._branchLookup(path) + currentContainer := ObjRawGet(parentContainer, childName) + ObjDelete(parentContainer, childName) + } + + possibleContainers := [] ;need to remove all children from all parents to free the keys + Loop { + ObjDelete(branchData, currentContainer) + namesToRemove := [] + for childName, newChild in this._rawLoop(currentContainer) { + possibleContainers.push(newChild) + namesToRemove.push(childName) + } + for each, childName in namesToRemove { + ObjDelete(currentContainer, childName) + } + } until !(currentContainer := possibleContainers.pop()) + } + + ;ancestorBranches := Branch.getAncestors() + ; gets all the ancestors of this branch in an array and returns it + ; the root branch will return an empty array + getAncestors() { + local + this._checkValid() + ancestors := [] + + branchClass := ObjGetBase(this) + tree := this.tree + newPath := [] + currentBranch := tree.children + + for each, branchName in this.path { + ancestors.push(new branchClass(tree, newPath.clone(), currentBranch)) + currentBranch := ObjRawGet(currentBranch, branchName) + newPath.push(branchName) + } + + return ancestors + } + + ;descendatBranches := Branch.getDescendants() + ; gets all the descendants of this branch in an array and returns it + ; branches withoutdescendants will return an empty array + getDescendants() { + local + this._checkValid() + descendants := [] + + branchClass := ObjGetBase(this) + tree := this.tree + + childrenBacklog := [this.children] + pathBacklog := [this.path.clone()] + + while (currentChildren := childrenBacklog.pop()) { ;recursive loop + cPath := pathBacklog.pop() + for branchName, childBranch in this._rawLoop(currentChildren) { + nextChildren := childBranch + newPath := cPath.clone() + newPath.push(branchName) + descendants.push(new branchClass(tree, newPath, nextChildren)) + + childrenBacklog.push(nextChildren) + pathBacklog.push(newPath) + } + } + return descendants + } + + ;internal methods for internal use only + _branchLookup(path) { + local + currentlyFoundBranch := this.children + for each, nameOfSubBranch in path { + if (!currentlyFoundBranch := ObjRawGet(currentlyFoundBranch, nameOfSubBranch)) { + throw exception("ERR_BRANCH_NOT_FOUND", -2, "Accessing branch yielded false - the provided path does not exist after " . each . " steps") + } + } + return currentlyFoundBranch + } + + _checkValid() { ;do ot like this overhead + if (!this._isValid()) { + throw exception("ERR_BRANCH_INVALID", -2, "Valid check yielded 0 - attempting to access a branch that probably has been removed") + } + } + + _isValid() { ;initial method to setup valid checking + local + limit := this.path.length() - 1 + if (limit < 0) { + this._isValid := this._isValidRoot + } else { + currentParent := this.tree.children + for each, childName in this.path { + currentParent := objRawGet(currentParent, childName) + } until each = limit + this.parent := currentParent + this._isValid := this._isValidBranch + } + return this._isValid() + } + + _isValidRoot() { + local + if (this.tree.children != this.children) { + this._isValid := this._isValidFalse + return 0 + } + return 1 + } + + _isValidBranch() { + local + path := this.path + if (ObjRawGet(this.parent, path[path.length()]) != this.children) { + this._isValid := this._isValidFalse + return 0 + } + return 1 + } + + _isValidFalse() { + local + return 0 + } + + ;helps with creating enumerators even when _newEnum is overwritten for the object + _rawLoop(child) { ;does not work with multiple parralel enumerations + local + static enumBase := {_NewEnum:""} + static enum := {base:enumBase} + static bindFunc + if (!bindFunc) + bindFunc := this._rawReturn + ObjRawSet(enumBase, "_NewEnum", bindFunc.bind(ObjNewEnum(child))) + return enum + } + + ;just returns the first parameter - used in the method above + _rawReturn() { + local + return this + } + } + +} \ No newline at end of file diff --git a/classes/class_WinEventHook.ahk b/classes/class_WinEventHook.ahk new file mode 100644 index 00000000..4a229a90 --- /dev/null +++ b/classes/class_WinEventHook.ahk @@ -0,0 +1,241 @@ +; Usage example: +/* +#NoEnv +#SingleInstance force +#Warn + +#Persistent +ControlGet, hEdit1, Hwnd,, Edit1, ahk_class Notepad +if not (hEdit1) + ExitApp +WinEventHook.setForId(hEdit1, 0x800E, "f") +; WinEventHook.setForId(hEdit1, 0x800E, "f", 100) ; '100' means: "treat events separated by a period of less than 100ms as an influx of calls and buffer it as such" +return + +!x:: + count := WinEventHook.unsetById(hEdit1) + MsgBox % "ErrorLevel = " . ErrorLevel . "`nHook instance unset count = " . count +return + + +f(_params*) { ; _hWinEventHook, _event, _hwnd, _idObject, _idChild, _dwEventThread, _dwmsEventTime + static OBJID_CLIENT := 0xFFFFFFFC ; https://docs.microsoft.com/fr-fr/windows/desktop/WinAuto/object-identifiers#OBJID_CLIENT + local _idObject := _params.4 + if (_idObject = OBJID_CLIENT) ; actually, both the (edit child control) window's horizontal and the vertical scroll bars (OBJID_VSCROLL/OBJID_HSCROLL) could otherwise update the tooltip below + ToolTip % Format("hWinEventHook = {}`nevent = {}`nhwnd = {}`nidObject = {}`nidChild = {}`ndwEventThread = {}`ndwmsEventTime = {}", _params*) +} +*/ +; ======================================================== + +Class WinEventHook { + + /* + Namespace: WinEventHook + + Environment: Windows 8.1 64 bit - Autohotkey v1.1.30.01 32-bit Unicode + Credits: + Fanatic Guru for WinHook - https://www.autohotkey.com/boards/viewtopic.php?t=59149&p=254920 + Related works: + [LIB] EWinHook - SetWinEventHook implementation by cyruz - https://www.autohotkey.com/boards/viewtopic.php?p=176444 + Event Library by KuroiLight/klomb - https://www.autohotkey.com/boards/viewtopic.php?t=42657 + */ + static _map := {} + static _instances := {} ; _map and _instances are combined with a design conceived to allow cross-referencing while keeping track of instances + static HANDLE_IDPROCESS := "" ; use internally to 'capture' events if a hWnd-filtering is set @._hookFunction. In any event, should not be 0 since the handle to the window that generates the event can be NULL - https://docs.microsoft.com/fr-fr/windows/desktop/api/winuser/nc-winuser-wineventproc#parameters + static _callback := RegisterCallback("WinEventHook._hookFunction") ; we only need to call registercallback ones, we use a static variable - https://www.autohotkey.com/boards/viewtopic.php?t=59149&p=254920#profile249257 + + Class _TimedCallback { ; nested class used internally to buffer an influx of calls as such, as influx + + static instances := {} ; keep track of instances + _delegate := Func("Max") ; dummy variadic delegate + _range := "Off" + + __New(_hWinEventHook) { + return WinEventHook._TimedCallback.instances[ (this.ID:=_hWinEventHook) ] := this + } + __Call(_callee, _params*) { ; triggered by %this%(_hWinEventHook, _event, _hwnd, _idObject, _idChild, _dwEventThread, _dwmsEventTime) + if (_callee = "") { ; for %fn%() or fn.() - https://www.autohotkey.com/docs/objects/Functor.htm#User-Defined + this.params := _params + SetTimer, % this, % -this._range + } + } + __Delete() { + SetTimer, % this, Off + SetTimer, % this, Delete + this._delegate := "" ; release the user function object + } + call() { ; triggered by this.call(_hWinEventHook, _event, _hwnd, _idObject, _idChild, _dwEventThread, _dwmsEventTime) yet if the object is being used by SetTimer, only the call method is needed - https://www.autohotkey.com/docs/objects/Functor.htm#User-Defined + _fn := this._delegate + return %_fn%(this.params*) + } + delegate { + set { + if not (IsObject(value) || value:=Func(value)) { + throw Exception("Invalid callback.") + return + } + return this._delegate := value + } + get { + return this._delegate + } + } + range { + set { + static USER_RANGE_MAXIMUM := 1000 + if value not between -1 and %USER_RANGE_MAXIMUM% + { + throw Exception("The property could not be set to a value lower or greater than the ranged value.",, (value = "") ? """""" : value) + return + } + return this._range := (value = -1) ? "Off" : value + } + get { + return (this._range = "Off") ? -1 : this._range + } + } + + } + + __New(_idProcess, _event, _delegate, _hwnd, _offset:=-1, _range:=0) { ; designed to be used internally + + static _junkTimedCallback := (new WinEventHook._TimedCallback(0)) ; junk 'timed callback' used to check input parameters against the prerequisites + static _junkFunc := Func("Func") + local _hWinEventHook, _exception, _cbObject + + try { ; check input parameters against the prerequisites + _junkTimedCallback.delegate := _delegate + _junkTimedCallback.range := _range + } catch _exception { + throw Exception(_exception.message, _offset, _exception.extra) + return + } finally _junkTimedCallback.delegate := _junkFunc ; in any event, release the user function object + + if not (_hWinEventHook:=WinEventHook._map[_idProcess, _event]) { ; if the hook instance is not yet listed... + _hWinEventHook := DllCall("SetWinEventHook" + , "UInt", _event + , "UInt", _event + , "Ptr", 0x0 + , "Ptr", WinEventHook._callback + , "UInt", _idProcess + , "UInt", 0x0 + , "UInt", 0x0) ; https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setwineventhook + if not (_hWinEventHook) { + throw Exception("Could not set the event hook function.", _offset) + return + } + WinEventHook._map[_idProcess, _event] := _hWinEventHook + WinEventHook._instances[_hWinEventHook] := {idProcess: _idProcess, event: _event} ; 'cross-referencing' + } + if (_range) { ; if influxes of calls need to be buffer as such, as influxes... + _cbObject := new WinEventHook._TimedCallback(_hWinEventHook) + _cbObject.delegate := _delegate + _cbObject.range := _range + WinEventHook._instances[_hWinEventHook].sieve[_hwnd] := _cbObject + } else WinEventHook._instances[_hWinEventHook].sieve[_hwnd] := _delegate + + return _hWinEventHook + } + + setForProcess(_idProcess, _event, _delegate, _p*) { + if (_idProcess <> 0) { + Process, Exist, % (_idProcess+0 <> "") ? _idProcess : 0 ; otherwise, if the PIDOrName parameter is blank, the script's own PID is retrieved - https://www.autohotkey.com/docs/commands/Process.htm#Exist + if not (ErrorLevel) { + throw Exception("The process could not be found.", -1, (_idProcess = "") ? """""" : _idProcess) + return + } + } else return new WinEventHook(_idProcess, _event, _delegate, WinEventHook.HANDLE_IDPROCESS, -2, _p*) + } + setForId(_hwnd, _event, _delegate, _p*) { + local _idProcess := "" + DllCall("User32.dll\GetWindowThreadProcessId", "Ptr", _hwnd, "UIntP", _idProcess, "UInt") + if not (_idProcess) { + throw Exception("Could not retrieve the identifier of the process that created the window.", -1) + return + } else return new WinEventHook(_idProcess, _event, _delegate, Format("{1:u}", _hwnd), -2, _p*) + } + unset(_hWinEventHook) { + local _unsetCount, _instance + _unsetCount := (_instance:=WinEventHook._instances[_hWinEventHook]) ? WinEventHook._unset(_instance.idProcess, _instance.event) : 0 + return _unsetCount + } + + unsetByProcess(_idProcess) { + local _event, _hWinEventHook, _unsetCount + for _event, _hWinEventHook in ObjClone(WinEventHook._map[_idProcess]), _unsetCount := 0 + ErrorLevel += !_unsetCount += WinEventHook._unset(_idProcess, _event) + return _unsetCount + } + unsetById(_hwnd) { + local _h, _hWinEventHook, _obj, _unsetCount, _sieve + if not (_h:=Format("{1:u}", _hwnd)) { ; i.e. also if _hwnd = WinEventHook.HANDLE_IDPROCESS + throw Exception("Invalid handle.", -1, (_hwnd = "") ? """""" : _hwnd) + return + } + _hwnd := _h + for _hWinEventHook, _obj in ObjClone(WinEventHook._instances), _unsetCount := 0 { + if (ObjHasKey(_obj.sieve, _hwnd)) { + _sieve := WinEventHook._instances[_hWinEventHook].sieve, ObjDelete(_sieve, _hwnd) + if not (ObjCount(_sieve)) { + ErrorLevel += !_unsetCount += WinEventHook._unset(_obj.idProcess, _obj.event) + } + } + } + return _unsetCount + } + unsetByEvent(_eventNum) { + local _idProcess, _obj, _unsetCount, _event + for _idProcess, _obj in ObjClone(WinEventHook._map), _unsetCount := 0 { + for _event in _obj { + if (_event = _eventNum) { + ErrorLevel += !_unsetCount += WinEventHook._unset(_idProcess, _event) + } + } + } + return _unsetCount + } + + unsetAll() { + local _idProcess, _obj, _unsetCount, _event + for _idProcess, _obj in ObjClone(WinEventHook._map), _unsetCount := 0 + for _event in _obj + ErrorLevel += !_unsetCount += WinEventHook._unset(_idProcess, _event) + return _unsetCount + } + _unset(_idProcess, _event) { + local _hWinEventHook, _r + _hWinEventHook := ObjDelete(WinEventHook._map[_idProcess], _event) + (!ObjCount(WinEventHook._map[_idProcess]) && ObjDelete(WinEventHook._map, _idProcess)) + _r := DllCall("UnhookWinEvent", "Ptr", _hWinEventHook) ; https://docs.microsoft.com/fr-fr/windows/desktop/api/winuser/nf-winuser-unhookwinevent + ObjDelete(WinEventHook._instances, _hWinEventHook) + if (ObjHasKey(WinEventHook._TimedCallback.instances, _hWinEventHook)) ; if a '_TimedCallback' instance is associated with this hook instance... + ObjDelete(WinEventHook._TimedCallback.instances, _hWinEventHook) ; release the function object (actually, the instance's own __Delete meta-function will be called) + return _r + } + + _dispose(_params*) { + static _ := OnExit(ObjBindMethod(WinEventHook, "_dispose")) + static _preventExit := 1 + return not _preventExit, WinEventHook.unsetAll() + } + + _hookFunction(_event, _hwnd, _idObject, _idChild, _dwEventThread, _dwmsEventTime) { + + local _hWinEventHook, _enum, _handle, _delegate + + (_enum:=ObjNewEnum(WinEventHook._instances[ _hWinEventHook:=this ].sieve)).next(_handle, _delegate) + if (_handle <> WinEventHook.HANDLE_IDPROCESS) { ; unsigned integers (i.e. hWnd, if any) necessarily appear before "" (HANDLE_IDPROCESS) in an enumeration + Loop { + if (_handle = _hwnd) { + %_delegate%(_hWinEventHook, _event, _hwnd, _idObject, _idChild, _dwEventThread, _dwmsEventTime) + return ; 'capture' the event: do not go all the way up on the process + } + } Until not (_enum[_handle, _delegate]) + if (_handle <> WinEventHook.HANDLE_IDPROCESS) + return + } + %_delegate%(_hWinEventHook, _event, _hwnd, _idObject, _idChild, _dwEventThread, _dwmsEventTime) + + } + +} \ No newline at end of file diff --git a/classes/class_ZeeGrid.ahk b/classes/class_ZeeGrid.ahk index c49196a7..3ca7a426 100644 --- a/classes/class_ZeeGrid.ahk +++ b/classes/class_ZeeGrid.ahk @@ -1,7 +1,7 @@ /** * Class for the (now free to use) ZeeGrid control * Credits to David Hillard for creating this awesome control. See his license at the end of this documentation comment. - * + * * Author: kczx3 * AHK Version: 2.0-a100-52515e2 * Created: 04/02/2019 @@ -18,17 +18,17 @@ ZeeGridTMCopyright © 2002-2016 by David Hillard */ class ZeeGrid extends ZeeGrid.ZeeGridBase { - __New(gui, opts, title := "", dll := "ZeeGridx64.dll") { + __New(gui, opts, title := "", dll := "\..\..\dll\ZeeGridx64.dll") { this.gui := gui this._handle := DllCall("LoadLibrary", "Str", dll) - + this.grid := gui.addCustom(opts " ClassZeeGrid", title) } - + __Delete() { DllCall("FreeLibrary", "Ptr", this._handle) } - + /** * Sends messages to the ZeeGrid control. * It is not recommended to call this method directly. Instead, call the ZeeGrid message as a method on the ZeeGrid instance (minus the prefix of "ZGM_") @@ -40,17 +40,17 @@ class ZeeGrid extends ZeeGrid.ZeeGridBase { __sendGrid(msg := 0, wParam := 0, lParam := 0) { return SendMessage(msg, wParam, lParam, this.grid.hwnd) } - + OnEvent(notification, cb) { if (!Type(cb) = "Func") { throw Exception(this.__class "::OnEvent expects a func object as its second parameter", -1) } - + this.grid.OnCommand(notification, () => cb.call(this)) } - + class ZeeGridBase { - + ; Messages static ZGM_LOADICON:=0x401, ZGM_SETCELLICON:=0x402, ZGM_SETROWHEIGHT:=0x403, ZGM_SETCELLFONT:=0x404, ZGM_SETCELLFCOLOR:=0x405, ZGM_SETCELLBCOLOR:=0x406, ZGM_SETTITLEHEIGHT:=0x407, ZGM_SETCELLJUSTIFY:=0x408, ZGM_GETCRC:=0x409, ZGM_ENABLETBEDIT:=0x40a, ZGM_ENABLETBSEARCH:=0x40b, ZGM_SHOWTOOLBAR:=0x40c, ZGM_SHOWEDIT:=0x40d, ZGM_SHOWSEARCH:=0x40e, ZGM_GRAYBGONLOSTFOCUS:=0x40f, ZGM_ALLOCATEROWS:=0x410, ZGM_SETAUTOINCREASESIZE:=0x411, ZGM_APPENDROW:=0x412, ZGM_DELETEROW:=0x413, ZGM_SHRINKTOFIT:=0x414, ZGM_SETRANGE:=0x415, ZGM_GETRANGESUM:=0x416 static ZGM_SHOWTITLE:=0x417, ZGM_ENABLESORT:=0x418, ZGM_ENABLECOLMOVE:=0x419, ZGM_SELECTCOLUMN:=0x41a, ZGM_DIMGRID:=0x41b, ZGM_SETROWNUMBERSWIDTH:=0x41c, ZGM_SETDEFAULTBCOLOR:=0x41d, ZGM_SETGRIDLINECOLOR:=0x41e, ZGM_SETCELLTEXT:=0x41f, ZGM_SETCOLWIDTH:=0x420, ZGM_INSERTROW:=0x421, ZGM_SHOWROWNUMBERS:=0x422, ZGM_GETROWS:=0x423, ZGM_REFRESHGRID:=0x424, ZGM_SETDEFAULTFCOLOR:=0x425, ZGM_SETDEFAULTFONT:=0x426, ZGM_MERGEROWS:=0x427, ZGM_SETDEFAULTJUSTIFY:=0x428, ZGM_SETCELLTYPE:=0x429, ZGM_SETCELLFORMAT:=0x42a, ZGM_SETCOLFORMAT:=0x42b, ZGM_SETCOLTYPE:=0x42c, ZGM_SETCOLJUSTIFY:=0x42d, ZGM_SETCOLFONT:=0x42e, ZGM_GETCELLINDEX:=0x42f, ZGM_ENABLETBMERGEROWS:=0x430, ZGM_SHOWCURSORONLOSTFOCUS:=0x431, ZGM_EMPTYGRID:=0x432, ZGM_ENABLETBROWNUMBERS:=0x433, ZGM_GETFIXEDCOLUMNS:=0x434, ZGM_SETCOLFCOLOR:=0x435, ZGM_SETLEFTINDENT:=0x436, ZGM_SETRIGHTINDENT:=0x437, ZGM_ENABLEICONINDENT:=0x438, ZGM_GETROWHEIGHT:=0x439, ZGM_ENABLECOLRESIZING:=0x43a, ZGM_GETCOLWIDTH:=0x43b, ZGM_SETCOLBCOLOR:=0x43c, ZGM_SELECTROW:=0x43d @@ -59,19 +59,19 @@ class ZeeGrid extends ZeeGrid.ZeeGridBase { static ZGM_GETCURSORCOL:=0x48c, ZGM_GETSIZEOFCELL:=0x48d, ZGM_GETCELLDOUBLE:=0x48e, ZGM_SETCELLDOUBLE:=0x48f, ZGM_SETDEFAULTNUMWIDTH:=0x490, ZGM_SETDEFAULTNUMPRECISION:=0x491, ZGM_SETCELLNUMWIDTH:=0x492, ZGM_SETCOLNUMWIDTH:=0x493, ZGM_SETROWNUMWIDTH:=0x494, ZGM_SETCELLNUMPRECISION:=0x495, ZGM_SETCOLNUMPRECISION:=0x496, ZGM_SETROWNUMPRECISION:=0x497, ZGM_SETCELLINT:=0x498, ZGM_GETCELLINT:=0x499, ZGM_INTERPRETBOOL:=0x49a, ZGM_INTERPRETNUMERIC:=0x49b, ZGM_SETCOLOR:=0x49d, ZGM_GETCOLOR:=0x49e, ZGM_SETFONT:=0x49f, ZGM_GETFONT:=0x4a0, ZGM_SETPRINTPOINTSIZE:=0x4a1, ZGM_GETROWSALLOCATED:=0x4a2, ZGM_GETCELLSALLOCATED:=0x4a3, ZGM_GETSIZEOFGRID:=0x4a5, ZGM_PRINT:=0x4a6, ZGM_SETITEMDATA:=0x4a7, ZGM_GETITEMDATA:=0x4a8, ZGM_ALTERNATEROWCOLORS:=0x4a9, ZGM_UNLOCK:=0x4aa, ZGM_QUERYBUILD:=0x4ab, ZGM_SAVEGRID:=0x4ac, ZGM_LOADGRID:=0x4ad, ZGM_GETCELLTEXTLENGTH:=0x4ae, ZGM_AUTOSIZECOLUMN:=0x4af, ZGM_ISGRIDDIRTY:=0x4b0, ZGM_INTERPRETDATES:=0x4b1, ZGM_SETCELLCDATE:=0x4b2, ZGM_SETCELLJDATE:=0x4b3 static ZGM_GETJDATE:=0x4b4, ZGM_GETCDATE:=0x4b5, ZGM_GETTODAY:=0x4b6, ZGM_SETREGCDATE:=0x4b7, ZGM_SETREGJDATE:=0x4b8, ZGM_GETREGDATEFORMATTED:=0x4b9, ZGM_ISDATEVALID:=0x4ba, ZGM_GETREGDATEYEAR:=0x4bb, ZGM_GETREGDATEMONTH:=0x4bc, ZGM_GETREGDATEDAY:=0x4bd, ZGM_GETREGDATEDOW:=0x4be, ZGM_GETDOW:=0x4bf, ZGM_GETDOWLONG:=0x4c0, ZGM_GETDOWSHORT:=0x4c1, ZGM_GETREGDATEDOY:=0x4c2, ZGM_GETREGDATEWOY:=0x4c3, ZGM_GETDOY:=0x4c4, ZGM_GETWOY:=0x4c5, ZGM_GETLASTBUTTONPRESSED:=0x4c6, ZGM_ENABLECOLUMNSELECT:=0x4c7, ZGM_KEEP3DONLOSTFOCUS:=0x4c8, ZGM_SETLOSTFOCUSHIGHLIGHTCOLOR:=0x4c9, ZGM_GOTOFIRSTONSEARCH:=0x4ca, ZGM_GETSELECTEDROW:=0x4cb, ZGM_GETSELECTEDCOL:=0x4cc, ZGM_COPYCELL:=0x4cd, ZGM_GETCOLUMNORDER:=0x4ce, ZGM_GETDISPLAYPOSITIONOFCOLUMN:=0x4cf, ZGM_GETCOLUMNINDISPLAYPOSITION:=0x4d0, ZGM_SCROLLDOWN:=0x4d1, ZGM_SCROLLUP:=0x4d2, ZGM_SCROLLRIGHT:=0x4d3, ZGM_SCROLLLEFT:=0x4d4, ZGM_SETBACKGROUNDBITMAP:=0x4d5, ZGM_ENABLECOPY:=0x4d6, ZGM_ENABLECUT:=0x4d7, ZGM_ENABLEPASTE:=0x4d8, ZGM_EXPANDROWSONPASTE:=0x4d9 static ZGM_SETCELLRESTRICTION:=0x4da, ZGM_SETROWRESTRICTION:=0x4db, ZGM_SETCOLRESTRICTION:=0x4dc, ZGM_SETDEFAULTRESTRICTION:=0x4dd, ZGM_GETCELLRESTRICTION:=0x4de, ZGM_SETROWNUMBERFONT:=0x4df, ZGM_SETGRIDBGCOLOR:=0x4e0, ZGM_GETCELLFORMAT:=0x4e1, ZGM_SHOWCOPYMENU:=0x4e2, ZGM_ADJUSTHEADERS:=0x4e3, ZGM_ENABLETRANSPARENTHIGHLIGHTING:=0x4e4, ZGM_GETCELLADVANCE:=0x4e5, ZGM_SETCELLADVANCE:=0x4e6, ZGM_SETCOLADVANCE:=0x4e7, ZGM_SETROWADVANCE:=0x4e8, ZGM_SETDEFAULTADVANCE:=0x4e9, ZGM_GETCELLINTSAFE:=0x4ea, ZGM_GETROWNUMBERSWIDTH:=0x4eb, ZGM_SPANCOLUMN:=0x4ec, ZGM_GETAUTOINCREASESIZE:=0x4ed - + ; Cell Types static BOOL_FALSE:=0, BOOL_TRUE:=1, TEXT:=2, NUMERIC:=3, DATE:=4, BUTTON:=5 - + ; Notifications static ZGN_MOUSEMOVE := 1, ZGN_SORT := 2, ZGN_CURSORCELLCHANGED := 3, ZGN_EDITEND := 4, ZGN_RIGHTCLICK := 5, ZGN_LOADCOMBO := 6, ZGN_INSERT := 7, ZGN_DELETE := 8, ZGN_F1 := 9, ZGN_F2 := 10, ZGN_F3 := 11, ZGN_F4 := 12, ZGN_F5 := 13, ZGN_F6 := 14, ZGN_F7 := 15, ZGN_F8 := 16, ZGN_EDITCOMPLETE := 17, ZGN_DOUBLECLICKREADONLY := 18, ZGN_DOUBLECLICKFIXEDCOLUMN := 19, ZGN_SORTCOMPLETE := 20, ZGN_BUTTONPRESSED := 21, ZGN_CELLCLICKED := 22, ZGN_COLUMNMOVED := 23, ZGN_PASTECOMPLETE := 24, ZGN_GOTFOCUS := 25, ZGN_LOSTFOCUS := 26, ZGN_ROWSELECTED := 27 - + ; File Export flags static EF_FILENAMESUPPLIED := 0x01, EF_DELIMITERSUPPLIED := 0x02, EF_SILENT := 0x04, EF_NOHEADER := 0x08 - + ; Text Justification Constants static LEFT_SINGLE := 1, CENTER_SINGLE := 4, RIGHT_SINGLE := 7, LEFT_MULTI := 9, CENTER_MULTI := 10, RIGHT_MULTI := 11 - + __Call(msg, ByRef wParam := 0, ByRef lParam := 0, Params*) { ; we could let integer method calls through, but then we would have to verify them somehow as well ; I prefer to define them once and use the message names. Makes the consumers code easier to reason about. @@ -82,7 +82,7 @@ class ZeeGrid extends ZeeGrid.ZeeGridBase { else if (Type(msg) = "String" && !this.ZeeGridBase.HasKey(newMsg := "ZGM_" msg)) { throw Exception(this.__class "::" msg "`n`nCall to non-existent method", -1) } - + If (wParam && Type(wParam) = "String" && !isObject(wParam)) { VarSetCapacity(wParamA, StrPut(wParam, "UTF-8")) StrPut(wParam, &wParamA, "UTF-8") @@ -98,10 +98,10 @@ class ZeeGrid extends ZeeGrid.ZeeGridBase { lParam := &lParamA } - ; pass the value of this.ZeeGridBase[newMsg] since we already + ; pass the value of this.ZeeGridBase[newMsg] since we already return this.__sendGrid(this.ZeeGridBase[newMsg], wParam, lParam) } - + /** * Called if a property is read from a ZeeGrid instance but it is not defined on that instance * Checks if .ZeeGridBase has a property of the same name. @@ -113,7 +113,7 @@ class ZeeGrid extends ZeeGrid.ZeeGridBase { if (!this.ZeeGridBase.HasKey(key)) { throw Exception(this.__class "::" key "`n`nUnknown property!", -1) } - + return this.ZeeGridBase[key] } } diff --git a/classes/class_eAutocomplete.ahk b/classes/class_eAutocomplete.ahk index 9682138b..b6b68b18 100644 --- a/classes/class_eAutocomplete.ahk +++ b/classes/class_eAutocomplete.ahk @@ -1,4 +1,4 @@ -#Include %A_LineFile%/../acc.ahk +;#Include %A_LineFile%/../acc.ahk Class eAutocomplete { ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; ~~~~~~~~~~~~~~~~~~~~ PRIVATE NESTED CLASSES ~~~~~~~~~~~~ diff --git a/classes/class_getError_AHK2.ahk b/classes/class_getError_AHK2.ahk new file mode 100644 index 00000000..0d3b0bb9 --- /dev/null +++ b/classes/class_getError_AHK2.ahk @@ -0,0 +1,4366 @@ +/* getError(SystemErrorCode) +Adapted from: + https://www.codeproject.com/reference/800546/windows-system-error-codes +*/ + +getError(SystemErrorCode) +{ + if SystemErrorCode == 0x0 + return "The operation completed successfully." + else if SystemErrorCode == 0x1 + return "Incorrect function." + else if SystemErrorCode == 0x2 + return "The system cannot find the file specified." + else if SystemErrorCode == 0x3 + return "The system cannot find the path specified." + else if SystemErrorCode == 0x4 + return "The system cannot open the file." + else if SystemErrorCode == 0x5 + return "Access is denied." + else if SystemErrorCode == 0x6 + return "The handle is invalid." + else if SystemErrorCode == 0x7 + return "The storage control blocks were destroyed." + else if SystemErrorCode == 0x8 + return "Not enough storage is available to process this command." + else if SystemErrorCode == 0x9 + return "The storage control block address is invalid." + else if SystemErrorCode == 0xA + return "The environment is incorrect." + else if SystemErrorCode == 0xB + return "An attempt was made to load a program with an incorrect format." + else if SystemErrorCode == 0xC + return "The access code is invalid." + else if SystemErrorCode == 0xD + return "The data is invalid." + else if SystemErrorCode == 0xE + return "Not enough storage is available to complete this operation." + else if SystemErrorCode == 0xF + return "The system cannot find the drive specified." + else if SystemErrorCode == 0x10 + return "The directory cannot be removed." + else if SystemErrorCode == 0x11 + return "The system cannot move the file to a different disk drive." + else if SystemErrorCode == 0x12 + return "There are no more files." + else if SystemErrorCode == 0x13 + return "The media is write protected." + else if SystemErrorCode == 0x14 + return "The system cannot find the device specified." + else if SystemErrorCode == 0x15 + return "The device is not ready." + else if SystemErrorCode == 0x16 + return "The device does not recognize the command." + else if SystemErrorCode == 0x18 + return "The program issued a command but the command length is incorrect." + else if SystemErrorCode == 0x19 + return "The drive cannot locate a specific area or track on the disk." + else if SystemErrorCode == 0x1A + return "The specified disk or diskette cannot be accessed." + else if SystemErrorCode == 0x1B + return "The drive cannot find the sector requested." + else if SystemErrorCode == 0x1C + return "The printer is out of paper." + else if SystemErrorCode == 0x1D + return "The system cannot write to the specified device." + else if SystemErrorCode == 0x1E + return "The system cannot read from the specified device." + else if SystemErrorCode == 0x1F + return "A device attached to the system is not functioning." + else if SystemErrorCode == 0x20 + return "The process cannot access the file because it is being used by another process." + else if SystemErrorCode == 0x21 + return "The process cannot access the file because another process has locked a portion of the file." + else if SystemErrorCode == 0x24 + return "Too many files opened for sharing." + else if SystemErrorCode == 0x26 + return "Reached the end of the file." + else if SystemErrorCode == 0x27 + return "The disk is full." + else if SystemErrorCode == 0x32 + return "The request is not supported." + else if SystemErrorCode == 0x35 + return "The network path was not found." + else if SystemErrorCode == 0x36 + return "The network is busy." + else if SystemErrorCode == 0x37 + return "The specified network resource or device is no longer available." + else if SystemErrorCode == 0x38 + return "The network BIOS command limit has been reached." + else if SystemErrorCode == 0x39 + return "A network adapter hardware error occurred." + else if SystemErrorCode == 0x3A + return "The specified server cannot perform the requested operation." + else if SystemErrorCode == 0x3B + return "An unexpected network error occurred." + else if SystemErrorCode == 0x3C + return "The remote adapter is not compatible." + else if SystemErrorCode == 0x3D + return "The printer queue is full." + else if SystemErrorCode == 0x3E + return "Space to store the file waiting to be printed is not available on the server." + else if SystemErrorCode == 0x3F + return "Your file waiting to be printed was deleted." + else if SystemErrorCode == 0x40 + return "The specified network name is no longer available." + else if SystemErrorCode == 0x41 + return "Network access is denied." + else if SystemErrorCode == 0x42 + return "The network resource type is not correct." + else if SystemErrorCode == 0x43 + return "The network name cannot be found." + else if SystemErrorCode == 0x44 + return "The name limit for the local computer network adapter card was exceeded." + else if SystemErrorCode == 0x45 + return "The network BIOS session limit was exceeded." + else if SystemErrorCode == 0x46 + return "The remote server has been paused or is in the process of being started." + else if SystemErrorCode == 0x47 + return "No more connections can be made to this remote computer at this time because there are already as many connections as the computer can accept." + else if SystemErrorCode == 0x48 + return "The specified printer or disk device has been paused." + else if SystemErrorCode == 0x50 + return "The file exists." + else if SystemErrorCode == 0x52 + return "The directory or file cannot be created." + else if SystemErrorCode == 0x53 + return "Fail on INT 24." + else if SystemErrorCode == 0x54 + return "Storage to process this request is not available." + else if SystemErrorCode == 0x55 + return "The local device name is already in use." + else if SystemErrorCode == 0x56 + return "The specified network password is not correct." + else if SystemErrorCode == 0x57 + return "The parameter is incorrect." + else if SystemErrorCode == 0x58 + return "A write fault occurred on the network." + else if SystemErrorCode == 0x59 + return "The system cannot start another process at this time." + else if SystemErrorCode == 0x64 + return "Cannot create another system semaphore." + else if SystemErrorCode == 0x65 + return "The exclusive semaphore is owned by another process." + else if SystemErrorCode == 0x66 + return "The semaphore is set and cannot be closed." + else if SystemErrorCode == 0x67 + return "The semaphore cannot be set again." + else if SystemErrorCode == 0x68 + return "Cannot request exclusive semaphores at interrupt time." + else if SystemErrorCode == 0x69 + return "The previous ownership of this semaphore has ended." + else if SystemErrorCode == 0x6B + return "The program stopped because an alternate diskette was not inserted." + else if SystemErrorCode == 0x6C + return "The disk is in use or locked by another process." + else if SystemErrorCode == 0x6D + return "The pipe has been ended." + else if SystemErrorCode == 0x6E + return "The system cannot open the device or file specified." + else if SystemErrorCode == 0x6F + return "The file name is too long." + else if SystemErrorCode == 0x70 + return "There is not enough space on the disk." + else if SystemErrorCode == 0x71 + return "No more internal file identifiers available." + else if SystemErrorCode == 0x72 + return "The target internal file identifier is incorrect." + else if SystemErrorCode == 0x75 + return "The IOCTL call made by the application program is not correct." + else if SystemErrorCode == 0x77 + return "The system does not support the command requested." + else if SystemErrorCode == 0x78 + return "This function is not supported on this system." + else if SystemErrorCode == 0x79 + return "The semaphore timeout period has expired." + else if SystemErrorCode == 0x7A + return "The data area passed to a system call is too small." + else if SystemErrorCode == 0x7C + return "The system call level is not correct." + else if SystemErrorCode == 0x7D + return "The disk has no volume label." + else if SystemErrorCode == 0x7E + return "The specified module could not be found." + else if SystemErrorCode == 0x7F + return "The specified procedure could not be found." + else if SystemErrorCode == 0x80 + return "There are no child processes to wait for." + else if SystemErrorCode == 0x83 + return "An attempt was made to move the file pointer before the beginning of the file." + else if SystemErrorCode == 0x84 + return "The file pointer cannot be set on the specified device or file." + else if SystemErrorCode == 0x85 + return "A JOIN or SUBST command cannot be used for a drive that contains previously joined drives." + else if SystemErrorCode == 0x86 + return "An attempt was made to use a JOIN or SUBST command on a drive that has already been joined." + else if SystemErrorCode == 0x87 + return "An attempt was made to use a JOIN or SUBST command on a drive that has already been substituted." + else if SystemErrorCode == 0x88 + return "The system tried to delete the JOIN of a drive that is not joined." + else if SystemErrorCode == 0x89 + return "The system tried to delete the substitution of a drive that is not substituted." + else if SystemErrorCode == 0x8A + return "The system tried to join a drive to a directory on a joined drive." + else if SystemErrorCode == 0x8B + return "The system tried to substitute a drive to a directory on a substituted drive." + else if SystemErrorCode == 0x8C + return "The system tried to join a drive to a directory on a substituted drive." + else if SystemErrorCode == 0x8D + return "The system tried to SUBST a drive to a directory on a joined drive." + else if SystemErrorCode == 0x8E + return "The system cannot perform a JOIN or SUBST at this time." + else if SystemErrorCode == 0x8F + return "The system cannot join or substitute a drive to or for a directory on the same drive." + else if SystemErrorCode == 0x90 + return "The directory is not a subdirectory of the root directory." + else if SystemErrorCode == 0x91 + return "The directory is not empty." + else if SystemErrorCode == 0x92 + return "The path specified is being used in a substitute." + else if SystemErrorCode == 0x93 + return "Not enough resources are available to process this command." + else if SystemErrorCode == 0x94 + return "The path specified cannot be used at this time." + else if SystemErrorCode == 0x95 + return "An attempt was made to join or substitute a drive for which a directory on the drive is the target of a previous substitute." + else if SystemErrorCode == 0x97 + return "The number of specified semaphore events for DosMuxSemWait is not correct." + else if SystemErrorCode == 0x99 + return "The DosMuxSemWait list is not correct." + else if SystemErrorCode == 0x9A + return "The volume label you entered exceeds the label character limit of the target file system." + else if SystemErrorCode == 0x9B + return "Cannot create another thread." + else if SystemErrorCode == 0x9C + return "The recipient process has refused the signal." + else if SystemErrorCode == 0x9D + return "The segment is already discarded and cannot be locked." + else if SystemErrorCode == 0x9E + return "The segment is already unlocked." + else if SystemErrorCode == 0x9F + return "The address for the thread ID is not correct." + else if SystemErrorCode == 0xA0 + return "One or more arguments are not correct." + else if SystemErrorCode == 0xA1 + return "The specified path is invalid." + else if SystemErrorCode == 0xA2 + return "A signal is already pending." + else if SystemErrorCode == 0xA4 + return "No more threads can be created in the system." + else if SystemErrorCode == 0xA7 + return "Unable to lock a region of a file." + else if SystemErrorCode == 0xAA + return "The requested resource is in use." + else if SystemErrorCode == 0xAD + return "A lock request was not outstanding for the supplied cancel region." + else if SystemErrorCode == 0xAE + return "The file system does not support atomic changes to the lock type." + else if SystemErrorCode == 0xB4 + return "The system detected a segment number that was not correct." + else if SystemErrorCode == 0xB7 + return "Cannot create a file when that file already exists." + else if SystemErrorCode == 0xBA + return "The flag passed is not correct." + else if SystemErrorCode == 0xBB + return "The specified system semaphore name was not found." + else if SystemErrorCode == 0xC4 + return "The operating system cannot run this application program." + else if SystemErrorCode == 0xC5 + return "The operating system is not presently configured to run this application." + else if SystemErrorCode == 0xC7 + return "The operating system cannot run this application program." + else if SystemErrorCode == 0xC8 + return "The code segment cannot be greater than or equal to 64K." + else if SystemErrorCode == 0xCB + return "The system could not find the environment option that was entered." + else if SystemErrorCode == 0xCD + return "No process in the command subtree has a signal handler." + else if SystemErrorCode == 0xCE + return "The filename or extension is too long." + else if SystemErrorCode == 0xCF + return "The ring 2 stack is in use." + else if SystemErrorCode == 0xD1 + return "The signal being posted is not correct." + else if SystemErrorCode == 0xD2 + return "The signal handler cannot be set." + else if SystemErrorCode == 0xD4 + return "The segment is locked and cannot be reallocated." + else if SystemErrorCode == 0xD7 + return "Cannot nest calls to LoadModule." + else if SystemErrorCode == 0xDC + return "This file is checked out or locked for editing by another user." + else if SystemErrorCode == 0xDD + return "The file must be checked out before saving changes." + else if SystemErrorCode == 0xDE + return "The file type being saved or retrieved has been blocked." + else if SystemErrorCode == 0xDF + return "The file size exceeds the limit allowed and cannot be saved." + else if SystemErrorCode == 0xE1 + return "Operation did not complete successfully because the file contains a virus or potentially unwanted software." + else if SystemErrorCode == 0xE5 + return "The pipe is local." + else if SystemErrorCode == 0xE6 + return "The pipe state is invalid." + else if SystemErrorCode == 0xE7 + return "All pipe instances are busy." + else if SystemErrorCode == 0xE8 + return "The pipe is being closed." + else if SystemErrorCode == 0xE9 + return "No process is on the other end of the pipe." + else if SystemErrorCode == 0xEA + return "More data is available." + else if SystemErrorCode == 0xF0 + return "The session was canceled." + else if SystemErrorCode == 0xFE + return "The specified extended attribute name was invalid." + else if SystemErrorCode == 0xFF + return "The extended attributes are inconsistent." + else if SystemErrorCode == 0x102 + return "The wait operation timed out." + else if SystemErrorCode == 0x103 + return "No more data is available." + else if SystemErrorCode == 0x10A + return "The copy functions cannot be used." + else if SystemErrorCode == 0x10B + return "The directory name is invalid." + else if SystemErrorCode == 0x113 + return "The extended attributes did not fit in the buffer." + else if SystemErrorCode == 0x114 + return "The extended attribute file on the mounted file system is corrupt." + else if SystemErrorCode == 0x115 + return "The extended attribute table file is full." + else if SystemErrorCode == 0x116 + return "The specified extended attribute handle is invalid." + else if SystemErrorCode == 0x11A + return "The mounted file system does not support extended attributes." + else if SystemErrorCode == 0x120 + return "Attempt to release mutex not owned by caller." + else if SystemErrorCode == 0x12A + return "Too many posts were made to a semaphore." + else if SystemErrorCode == 0x12B + return "Only part of a ReadProcessMemory or WriteProcessMemory request was completed." + else if SystemErrorCode == 0x12C + return "The oplock request is denied." + else if SystemErrorCode == 0x12D + return "An invalid oplock acknowledgment was received by the system." + else if SystemErrorCode == 0x12E + return "The volume is too fragmented to complete this operation." + else if SystemErrorCode == 0x12F + return "The file cannot be opened because it is in the process of being deleted." + else if SystemErrorCode == 0x130 + return "Short name settings may not be changed on this volume due to the global registry setting." + else if SystemErrorCode == 0x131 + return "Short names are not enabled on this volume." + else if SystemErrorCode == 0x132 + return "The security stream for the given volume is in an inconsistent state. Please run CHKDSK on the volume." + else if SystemErrorCode == 0x133 + return "A requested file lock operation cannot be processed due to an invalid byte range." + else if SystemErrorCode == 0x134 + return "The subsystem needed to support the image type is not present." + else if SystemErrorCode == 0x135 + return "The specified file already has a notification GUID associated with it." + else if SystemErrorCode == 0x136 + return "An invalid exception handler routine has been detected." + else if SystemErrorCode == 0x137 + return "Duplicate privileges were specified for the token." + else if SystemErrorCode == 0x138 + return "No ranges for the specified operation were able to be processed." + else if SystemErrorCode == 0x139 + return "Operation is not allowed on a file system internal file." + else if SystemErrorCode == 0x13A + return "The physical resources of this disk have been exhausted." + else if SystemErrorCode == 0x13B + return "The token representing the data is invalid." + else if SystemErrorCode == 0x13C + return "The device does not support the command feature." + else if SystemErrorCode == 0x13E + return "The scope specified was not found." + else if SystemErrorCode == 0x13F + return "The Central Access Policy specified is not defined on the target machine." + else if SystemErrorCode == 0x140 + return "The Central Access Policy obtained from Active Directory is invalid." + else if SystemErrorCode == 0x141 + return "The device is unreachable." + else if SystemErrorCode == 0x142 + return "The target device has insufficient resources to complete the operation." + else if SystemErrorCode == 0x143 + return "A data integrity checksum error occurred. Data in the file stream is corrupt." + else if SystemErrorCode == 0x148 + return "The command specified an invalid field in its parameter list." + else if SystemErrorCode == 0x149 + return "An operation is currently in progress with the device." + else if SystemErrorCode == 0x14A + return "An attempt was made to send down the command via an invalid path to the target device." + else if SystemErrorCode == 0x14B + return "The command specified a number of descriptors that exceeded the maximum supported by the device." + else if SystemErrorCode == 0x14C + return "Scrub is disabled on the specified file." + else if SystemErrorCode == 0x14D + return "The storage device does not provide redundancy." + else if SystemErrorCode == 0x14E + return "An operation is not supported on a resident file." + else if SystemErrorCode == 0x14F + return "An operation is not supported on a compressed file." + else if SystemErrorCode == 0x150 + return "An operation is not supported on a directory." + else if SystemErrorCode == 0x151 + return "The specified copy of the requested data could not be read." + else if SystemErrorCode == 0x15E + return "No action was taken as a system reboot is required." + else if SystemErrorCode == 0x15F + return "The shutdown operation failed." + else if SystemErrorCode == 0x160 + return "The restart operation failed." + else if SystemErrorCode == 0x161 + return "The maximum number of sessions has been reached." + else if SystemErrorCode == 0x190 + return "The thread is already in background processing mode." + else if SystemErrorCode == 0x191 + return "The thread is not in background processing mode." + else if SystemErrorCode == 0x192 + return "The process is already in background processing mode." + else if SystemErrorCode == 0x193 + return "The process is not in background processing mode." + else if SystemErrorCode == 0x1E7 + return "Attempt to access invalid address." + else if SystemErrorCode == 0x1F4 + return "User profile cannot be loaded." + else if SystemErrorCode == 0x216 + return "Arithmetic result exceeded 32 bits." + else if SystemErrorCode == 0x217 + return "There is a process on other end of the pipe." + else if SystemErrorCode == 0x218 + return "Waiting for a process to open the other end of the pipe." + else if SystemErrorCode == 0x219 + return "Application verifier has found an error in the current process." + else if SystemErrorCode == 0x21A + return "An error occurred in the ABIOS subsystem." + else if SystemErrorCode == 0x21B + return "A warning occurred in the WX86 subsystem." + else if SystemErrorCode == 0x21C + return "An error occurred in the WX86 subsystem." + else if SystemErrorCode == 0x21D + return "An attempt was made to cancel or set a timer that has an associated APC and the subject thread is not the thread that originally set the timer with an associated APC routine." + else if SystemErrorCode == 0x21E + return "Unwind exception code." + else if SystemErrorCode == 0x21F + return "An invalid or unaligned stack was encountered during an unwind operation." + else if SystemErrorCode == 0x220 + return "An invalid unwind target was encountered during an unwind operation." + else if SystemErrorCode == 0x221 + return "Invalid Object Attributes specified to NtCreatePort or invalid Port Attributes specified to NtConnectPort" + else if SystemErrorCode == 0x222 + return "Length of message passed to NtRequestPort or NtRequestWaitReplyPort was longer than the maximum message allowed by the port." + else if SystemErrorCode == 0x223 + return "An attempt was made to lower a quota limit below the current usage." + else if SystemErrorCode == 0x224 + return "An attempt was made to attach to a device that was already attached to another device." + else if SystemErrorCode == 0x225 + return "An attempt was made to execute an instruction at an unaligned address and the host system does not support unaligned instruction references." + else if SystemErrorCode == 0x226 + return "Profiling not started." + else if SystemErrorCode == 0x227 + return "Profiling not stopped." + else if SystemErrorCode == 0x228 + return "The passed ACL did not contain the minimum required information." + else if SystemErrorCode == 0x229 + return "The number of active profiling objects is at the maximum and no more may be started." + else if SystemErrorCode == 0x22F + return "A malformed function table was encountered during an unwind operation." + else if SystemErrorCode == 0x233 + return "Indicates that the starting value for the LDT information was not an integral multiple of the selector size." + else if SystemErrorCode == 0x234 + return "Indicates that the user supplied an invalid descriptor when trying to set up Ldt descriptors." + else if SystemErrorCode == 0x237 + return "Page file quota was exceeded." + else if SystemErrorCode == 0x238 + return "The Netlogon service cannot start because another Netlogon service running in the domain conflicts with the specified role." + else if SystemErrorCode == 0x239 + return "The SAM database on a Windows Server is significantly out of synchronization with the copy on the Domain Controller. A complete synchronization is required." + else if SystemErrorCode == 0x245 + return "A Windows Server has an incorrect configuration." + else if SystemErrorCode == 0x247 + return "The Unicode character is not defined in the Unicode character set installed on the system." + else if SystemErrorCode == 0x248 + return "The paging file cannot be created on a floppy diskette." + else if SystemErrorCode == 0x249 + return "The system BIOS failed to connect a system interrupt to the device or bus for which the device is connected." + else if SystemErrorCode == 0x24A + return "This operation is only allowed for the Primary Domain Controller of the domain." + else if SystemErrorCode == 0x24B + return "An attempt was made to acquire a mutant such that its maximum count would have been exceeded." + else if SystemErrorCode == 0x24C + return "A volume has been accessed for which a file system driver is required that has not yet been loaded." + else if SystemErrorCode == 0x251 + return "NTVDM encountered a hard error." + else if SystemErrorCode == 0x256 + return "The stream is not a tiny stream." + else if SystemErrorCode == 0x257 + return "The request must be handled by the stack overflow code." + else if SystemErrorCode == 0x258 + return "Internal OFS status codes indicating how an allocation operation is handled. Either it is retried after the containing onode is moved or the extent stream is converted to a large stream." + else if SystemErrorCode == 0x259 + return "The attempt to find the object found an object matching by ID on the volume but it is out of the scope of the handle used for the operation." + else if SystemErrorCode == 0x25A + return "The bucket array must be grown. Retry transaction after doing so." + else if SystemErrorCode == 0x25C + return "The supplied variant structure contains invalid data." + else if SystemErrorCode == 0x25F + return "The timer resolution was not previously set by the current process." + else if SystemErrorCode == 0x260 + return "There is insufficient account information to log you on." + else if SystemErrorCode == 0x263 + return "There is an IP address conflict with another system on the network." + else if SystemErrorCode == 0x264 + return "There is an IP address conflict with another system on the network." + else if SystemErrorCode == 0x266 + return "A callback return system service cannot be executed when no callback is active." + else if SystemErrorCode == 0x267 + return "The password provided is too short to meet the policy of your user account. Please choose a longer password." + else if SystemErrorCode == 0x269 + return "You have attempted to change your password to one that you have used in the past. The policy of your user account does not allow this. Please select a password that you have not previously used." + else if SystemErrorCode == 0x26A + return "The specified compression format is unsupported." + else if SystemErrorCode == 0x26B + return "The specified hardware profile configuration is invalid." + else if SystemErrorCode == 0x26C + return "The specified Plug and Play registry device path is invalid." + else if SystemErrorCode == 0x26D + return "The specified quota list is internally inconsistent with its descriptor." + else if SystemErrorCode == 0x271 + return "The validation process needs to continue on to the next step." + else if SystemErrorCode == 0x272 + return "There are no more matches for the current index enumeration." + else if SystemErrorCode == 0x273 + return "The range could not be added to the range list because of a conflict." + else if SystemErrorCode == 0x274 + return "The server process is running under a SID different than that required by client." + else if SystemErrorCode == 0x275 + return "A group marked use for deny only cannot be enabled." + else if SystemErrorCode == 0x278 + return "The requested interface is not supported." + else if SystemErrorCode == 0x27C + return "A device was removed so enumeration must be restarted." + else if SystemErrorCode == 0x27E + return "Device will not start without a reboot." + else if SystemErrorCode == 0x27F + return "There is not enough power to complete the requested operation." + else if SystemErrorCode == 0x280 + return "ERROR_MULTIPLE_FAULT_VIOLATION" + else if SystemErrorCode == 0x281 + return "The system is in the process of shutting down." + else if SystemErrorCode == 0x284 + return "The specified range could not be found in the range list." + else if SystemErrorCode == 0x286 + return "The driver was not loaded because the system is booting into safe mode." + else if SystemErrorCode == 0x287 + return "The driver was not loaded because it failed its initialization call." + else if SystemErrorCode == 0x289 + return "The create operation failed because the name contained at least one mount point which resolves to a volume to which the specified device object is not attached." + else if SystemErrorCode == 0x28A + return "The device object parameter is either not a valid device object or is not attached to the volume specified by the file name." + else if SystemErrorCode == 0x28B + return "A Machine Check Error has occurred. Please check the system eventlog for additional information." + else if SystemErrorCode == 0x28D + return "System hive size has exceeded its limit." + else if SystemErrorCode == 0x28E + return "The driver could not be loaded because a previous version of the driver is still in memory." + else if SystemErrorCode == 0x291 + return "The password provided is too long to meet the policy of your user account. Please choose a shorter password." + else if SystemErrorCode == 0x299 + return "The requested operation could not be completed due to a file system limitation." + else if SystemErrorCode == 0x29C + return "An assertion failure has occurred." + else if SystemErrorCode == 0x29D + return "An error occurred in the ACPI subsystem." + else if SystemErrorCode == 0x29E + return "WOW Assertion Error." + else if SystemErrorCode == 0x29F + return "A device is missing in the system BIOS MPS table. This device will not be used. Please contact your system vendor for system BIOS update." + else if SystemErrorCode == 0x2A0 + return "A translator failed to translate resources." + else if SystemErrorCode == 0x2A1 + return "A IRQ translator failed to translate resources." + else if SystemErrorCode == 0x2A9 + return "The create operation stopped after reaching a symbolic link." + else if SystemErrorCode == 0x2AA + return "A long jump has been executed." + else if SystemErrorCode == 0x2AB + return "The Plug and Play query operation was not successful." + else if SystemErrorCode == 0x2AC + return "A frame consolidation has been executed." + else if SystemErrorCode == 0x2B0 + return "Debugger did not handle the exception." + else if SystemErrorCode == 0x2B1 + return "Debugger will reply later." + else if SystemErrorCode == 0x2B2 + return "Debugger cannot provide handle." + else if SystemErrorCode == 0x2B3 + return "Debugger terminated thread." + else if SystemErrorCode == 0x2B4 + return "Debugger terminated process." + else if SystemErrorCode == 0x2B5 + return "Debugger got control C." + else if SystemErrorCode == 0x2B6 + return "Debugger printed exception on control C." + else if SystemErrorCode == 0x2B7 + return "Debugger received RIP exception." + else if SystemErrorCode == 0x2B8 + return "Debugger received control break." + else if SystemErrorCode == 0x2B9 + return "Debugger command communication exception." + else if SystemErrorCode == 0x2CA + return "The specified registry key is referenced by a predefined handle." + else if SystemErrorCode == 0x2CF + return "ERROR_ALREADY_WIN32" + else if SystemErrorCode == 0x2D1 + return "A yield execution was performed and no thread was available to run." + else if SystemErrorCode == 0x2D2 + return "The resumable flag to a timer API was ignored." + else if SystemErrorCode == 0x2D3 + return "The arbiter has deferred arbitration of these resources to its parent." + else if SystemErrorCode == 0x2D6 + return "The system was put into hibernation." + else if SystemErrorCode == 0x2D7 + return "The system was resumed from hibernation." + else if SystemErrorCode == 0x2DA + return "The system has awoken." + else if SystemErrorCode == 0x2DB + return "ERROR_WAIT_1" + else if SystemErrorCode == 0x2DC + return "ERROR_WAIT_2" + else if SystemErrorCode == 0x2DD + return "ERROR_WAIT_3" + else if SystemErrorCode == 0x2DE + return "ERROR_WAIT_63" + else if SystemErrorCode == 0x2DF + return "ERROR_ABANDONED_WAIT_0" + else if SystemErrorCode == 0x2E0 + return "ERROR_ABANDONED_WAIT_63" + else if SystemErrorCode == 0x2E1 + return "ERROR_USER_APC" + else if SystemErrorCode == 0x2E2 + return "ERROR_KERNEL_APC" + else if SystemErrorCode == 0x2E3 + return "ERROR_ALERTED" + else if SystemErrorCode == 0x2E4 + return "The requested operation requires elevation." + else if SystemErrorCode == 0x2E5 + return "A reparse should be performed by the Object Manager since the name of the file resulted in a symbolic link." + else if SystemErrorCode == 0x2E7 + return "A new volume has been mounted by a file system." + else if SystemErrorCode == 0x2E9 + return "This indicates that a notify change request has been completed due to closing the handle which made the notify change request." + else if SystemErrorCode == 0x2EB + return "Page fault was a transition fault." + else if SystemErrorCode == 0x2EC + return "Page fault was a demand zero fault." + else if SystemErrorCode == 0x2ED + return "Page fault was a demand zero fault." + else if SystemErrorCode == 0x2EE + return "Page fault was a demand zero fault." + else if SystemErrorCode == 0x2EF + return "Page fault was satisfied by reading from a secondary storage device." + else if SystemErrorCode == 0x2F0 + return "Cached page was locked during operation." + else if SystemErrorCode == 0x2F1 + return "Crash dump exists in paging file." + else if SystemErrorCode == 0x2F2 + return "Specified buffer contains all zeros." + else if SystemErrorCode == 0x2F3 + return "A reparse should be performed by the Object Manager since the name of the file resulted in a symbolic link." + else if SystemErrorCode == 0x2F5 + return "The translator has translated these resources into the global space and no further translations should be performed." + else if SystemErrorCode == 0x2F6 + return "A process being terminated has no threads to terminate." + else if SystemErrorCode == 0x2F7 + return "The specified process is not part of a job." + else if SystemErrorCode == 0x2F8 + return "The specified process is part of a job." + else if SystemErrorCode == 0x2FA + return "A file system or file system filter driver has successfully completed an FsFilter operation." + else if SystemErrorCode == 0x2FB + return "The specified interrupt vector was already connected." + else if SystemErrorCode == 0x2FC + return "The specified interrupt vector is still connected." + else if SystemErrorCode == 0x2FD + return "An operation is blocked waiting for an oplock." + else if SystemErrorCode == 0x2FE + return "Debugger handled exception." + else if SystemErrorCode == 0x2FF + return "Debugger continued." + else if SystemErrorCode == 0x300 + return "An exception occurred in a user mode callback and the kernel callback frame should be removed." + else if SystemErrorCode == 0x301 + return "Compression is disabled for this volume." + else if SystemErrorCode == 0x302 + return "The data provider cannot fetch backwards through a result set." + else if SystemErrorCode == 0x303 + return "The data provider cannot scroll backwards through a result set." + else if SystemErrorCode == 0x304 + return "The data provider requires that previously fetched data is released before asking for more data." + else if SystemErrorCode == 0x305 + return "The data provider was not able to interpret the flags set for a column binding in an accessor." + else if SystemErrorCode == 0x306 + return "One or more errors occurred while processing the request." + else if SystemErrorCode == 0x307 + return "The implementation is not capable of performing the request." + else if SystemErrorCode == 0x308 + return "The client of a component requested an operation which is not valid given the state of the component instance." + else if SystemErrorCode == 0x309 + return "A version number could not be parsed." + else if SystemErrorCode == 0x30B + return "The hardware has reported an uncorrectable memory error." + else if SystemErrorCode == 0x30C + return "The attempted operation required self healing to be enabled." + else if SystemErrorCode == 0x30D + return "The Desktop heap encountered an error while allocating session memory. There is more information in the system event log." + else if SystemErrorCode == 0x310 + return "A thread is getting dispatched with MCA EXCEPTION because of MCA." + else if SystemErrorCode == 0x313 + return "A valid hibernation file has been invalidated and should be abandoned." + else if SystemErrorCode == 0x317 + return "The resources required for this device conflict with the MCFG table." + else if SystemErrorCode == 0x318 + return "The volume repair could not be performed while it is online. Please schedule to take the volume offline so that it can be repaired." + else if SystemErrorCode == 0x319 + return "The volume repair was not successful." + else if SystemErrorCode == 0x31B + return "One of the volume corruption logs is internally corrupted and needs to be recreated. The volume may contain undetected corruptions and must be scanned." + else if SystemErrorCode == 0x31C + return "One of the volume corruption logs is unavailable for being operated on." + else if SystemErrorCode == 0x31D + return "One of the volume corruption logs was deleted while still having corruption records in them. The volume contains detected corruptions and must be scanned." + else if SystemErrorCode == 0x31E + return "One of the volume corruption logs was cleared by chkdsk and no longer contains real corruptions." + else if SystemErrorCode == 0x31F + return "Orphaned files exist on the volume but could not be recovered because no more new names could be created in the recovery directory. Files must be moved from the recovery directory." + else if SystemErrorCode == 0x320 + return "The oplock that was associated with this handle is now associated with a different handle." + else if SystemErrorCode == 0x321 + return "An oplock of the requested level cannot be granted. An oplock of a lower level may be available." + else if SystemErrorCode == 0x322 + return "The operation did not complete successfully because it would cause an oplock to be broken. The caller has requested that existing oplocks not be broken." + else if SystemErrorCode == 0x323 + return "The handle with which this oplock was associated has been closed. The oplock is now broken." + else if SystemErrorCode == 0x326 + return "Access to the specified file handle has been revoked." + else if SystemErrorCode == 0x327 + return "An image file was mapped at a different address from the one specified in the image file but fixups will still be automatically performed on the image." + else if SystemErrorCode == 0x3E2 + return "Access to the extended attribute was denied." + else if SystemErrorCode == 0x3E6 + return "Invalid access to memory location." + else if SystemErrorCode == 0x3E7 + return "Error performing inpage operation." + else if SystemErrorCode == 0x3EA + return "The window cannot act on the sent message." + else if SystemErrorCode == 0x3EB + return "Cannot complete this function." + else if SystemErrorCode == 0x3EC + return "Invalid flags." + else if SystemErrorCode == 0x3ED + return "The volume does not contain a recognized file system. Please make sure that all required file system drivers are loaded and that the volume is not corrupted." + else if SystemErrorCode == 0x3EE + return "The volume for a file has been externally altered so that the opened file is no longer valid." + else if SystemErrorCode == 0x3F0 + return "An attempt was made to reference a token that does not exist." + else if SystemErrorCode == 0x3F1 + return "The configuration registry database is corrupt." + else if SystemErrorCode == 0x3F2 + return "The configuration registry key is invalid." + else if SystemErrorCode == 0x3F3 + return "The configuration registry key could not be opened." + else if SystemErrorCode == 0x3F4 + return "The configuration registry key could not be read." + else if SystemErrorCode == 0x3F5 + return "The configuration registry key could not be written." + else if SystemErrorCode == 0x3F6 + return "One of the files in the registry database had to be recovered by use of a log or alternate copy. The recovery was successful." + else if SystemErrorCode == 0x3FA + return "Illegal operation attempted on a registry key that has been marked for deletion." + else if SystemErrorCode == 0x3FB + return "System could not allocate the required space in a registry log." + else if SystemErrorCode == 0x3FC + return "Cannot create a symbolic link in a registry key that already has subkeys or values." + else if SystemErrorCode == 0x3FD + return "Cannot create a stable subkey under a volatile parent key." + else if SystemErrorCode == 0x41B + return "A stop control has been sent to a service that other running services are dependent on." + else if SystemErrorCode == 0x41C + return "The requested control is not valid for this service." + else if SystemErrorCode == 0x41D + return "The service did not respond to the start or control request in a timely fashion." + else if SystemErrorCode == 0x41E + return "A thread could not be created for the service." + else if SystemErrorCode == 0x41F + return "The service database is locked." + else if SystemErrorCode == 0x420 + return "An instance of the service is already running." + else if SystemErrorCode == 0x423 + return "Circular service dependency was specified." + else if SystemErrorCode == 0x424 + return "The specified service does not exist as an installed service." + else if SystemErrorCode == 0x425 + return "The service cannot accept control messages at this time." + else if SystemErrorCode == 0x426 + return "The service has not been started." + else if SystemErrorCode == 0x427 + return "The service process could not connect to the service controller." + else if SystemErrorCode == 0x428 + return "An exception occurred in the service when handling the control request." + else if SystemErrorCode == 0x429 + return "The database specified does not exist." + else if SystemErrorCode == 0x42B + return "The process terminated unexpectedly." + else if SystemErrorCode == 0x42C + return "The dependency service or group failed to start." + else if SystemErrorCode == 0x42D + return "The service did not start due to a logon failure." + else if SystemErrorCode == 0x42F + return "The specified service database lock is invalid." + else if SystemErrorCode == 0x430 + return "The specified service has been marked for deletion." + else if SystemErrorCode == 0x431 + return "The specified service already exists." + else if SystemErrorCode == 0x433 + return "The dependency service does not exist or has been marked for deletion." + else if SystemErrorCode == 0x435 + return "No attempts to start the service have been made since the last boot." + else if SystemErrorCode == 0x436 + return "The name is already in use as either a service name or a service display name." + else if SystemErrorCode == 0x437 + return "The account specified for this service is different from the account specified for other services running in the same process." + else if SystemErrorCode == 0x43A + return "No recovery program has been configured for this service." + else if SystemErrorCode == 0x43B + return "The executable program that this service is configured to run in does not implement the service." + else if SystemErrorCode == 0x43C + return "This service cannot be started in Safe Mode." + else if SystemErrorCode == 0x44C + return "The physical end of the tape has been reached." + else if SystemErrorCode == 0x44D + return "A tape access reached a filemark." + else if SystemErrorCode == 0x44E + return "The beginning of the tape or a partition was encountered." + else if SystemErrorCode == 0x44F + return "A tape access reached the end of a set of files." + else if SystemErrorCode == 0x450 + return "No more data is on the tape." + else if SystemErrorCode == 0x451 + return "Tape could not be partitioned." + else if SystemErrorCode == 0x453 + return "Tape partition information could not be found when loading a tape." + else if SystemErrorCode == 0x454 + return "Unable to lock the media eject mechanism." + else if SystemErrorCode == 0x455 + return "Unable to unload the media." + else if SystemErrorCode == 0x456 + return "The media in the drive may have changed." + else if SystemErrorCode == 0x458 + return "No media in drive." + else if SystemErrorCode == 0x45B + return "A system shutdown is in progress." + else if SystemErrorCode == 0x45C + return "Unable to abort the system shutdown because no shutdown was in progress." + else if SystemErrorCode == 0x45E + return "No serial device was successfully initialized. The serial driver will unload." + else if SystemErrorCode == 0x462 + return "No ID address mark was found on the floppy disk." + else if SystemErrorCode == 0x463 + return "Mismatch between the floppy disk sector ID field and the floppy disk controller track address." + else if SystemErrorCode == 0x464 + return "The floppy disk controller reported an error that is not recognized by the floppy disk driver." + else if SystemErrorCode == 0x465 + return "The floppy disk controller returned inconsistent results in its registers." + else if SystemErrorCode == 0x469 + return "Physical end of tape encountered." + else if SystemErrorCode == 0x46A + return "Not enough server storage is available to process this command." + else if SystemErrorCode == 0x46B + return "A potential deadlock condition has been detected." + else if SystemErrorCode == 0x46C + return "The base address or the file offset specified does not have the proper alignment." + else if SystemErrorCode == 0x474 + return "An attempt to change the system power state was vetoed by another application or driver." + else if SystemErrorCode == 0x475 + return "The system BIOS failed an attempt to change the system power state." + else if SystemErrorCode == 0x476 + return "An attempt was made to create more links on a file than the file system supports." + else if SystemErrorCode == 0x47E + return "The specified program requires a newer version of Windows." + else if SystemErrorCode == 0x480 + return "Cannot start more than one instance of the specified program." + else if SystemErrorCode == 0x481 + return "The specified program was written for an earlier version of Windows." + else if SystemErrorCode == 0x482 + return "One of the library files needed to run this application is damaged." + else if SystemErrorCode == 0x483 + return "No application is associated with the specified file for this operation." + else if SystemErrorCode == 0x484 + return "An error occurred in sending the command to the application." + else if SystemErrorCode == 0x485 + return "One of the library files needed to run this application cannot be found." + else if SystemErrorCode == 0x486 + return "The current process has used all of its system allowance of handles for Window Manager objects." + else if SystemErrorCode == 0x487 + return "The message can be used only with synchronous operations." + else if SystemErrorCode == 0x488 + return "The indicated source element has no media." + else if SystemErrorCode == 0x489 + return "The indicated destination element already contains media." + else if SystemErrorCode == 0x48A + return "The indicated element does not exist." + else if SystemErrorCode == 0x48B + return "The indicated element is part of a magazine that is not present." + else if SystemErrorCode == 0x48C + return "The indicated device requires reinitialization due to hardware errors." + else if SystemErrorCode == 0x48D + return "The device has indicated that cleaning is required before further operations are attempted." + else if SystemErrorCode == 0x48E + return "The device has indicated that its door is open." + else if SystemErrorCode == 0x48F + return "The device is not connected." + else if SystemErrorCode == 0x490 + return "Element not found." + else if SystemErrorCode == 0x491 + return "There was no match for the specified key in the index." + else if SystemErrorCode == 0x492 + return "The property set specified does not exist on the object." + else if SystemErrorCode == 0x493 + return "The point passed to GetMouseMovePoints is not in the buffer." + else if SystemErrorCode == 0x495 + return "The Volume ID could not be found." + else if SystemErrorCode == 0x497 + return "Unable to remove the file to be replaced." + else if SystemErrorCode == 0x498 + return "Unable to move the replacement file to the file to be replaced. The file to be replaced has retained its original name." + else if SystemErrorCode == 0x499 + return "Unable to move the replacement file to the file to be replaced. The file to be replaced has been renamed using the backup name." + else if SystemErrorCode == 0x49A + return "The volume change journal is being deleted." + else if SystemErrorCode == 0x49B + return "The volume change journal is not active." + else if SystemErrorCode == 0x49D + return "The journal entry has been deleted from the journal." + else if SystemErrorCode == 0x4A6 + return "A system shutdown has already been scheduled." + else if SystemErrorCode == 0x4A7 + return "The system shutdown cannot be initiated because there are other users logged on to the computer." + else if SystemErrorCode == 0x4B0 + return "The specified device name is invalid." + else if SystemErrorCode == 0x4B1 + return "The device is not currently connected but it is a remembered connection." + else if SystemErrorCode == 0x4B2 + return "The local device name has a remembered connection to another network resource." + else if SystemErrorCode == 0x4B4 + return "The specified network provider name is invalid." + else if SystemErrorCode == 0x4B5 + return "Unable to open the network connection profile." + else if SystemErrorCode == 0x4B6 + return "The network connection profile is corrupted." + else if SystemErrorCode == 0x4B7 + return "Cannot enumerate a noncontainer." + else if SystemErrorCode == 0x4B8 + return "An extended error has occurred." + else if SystemErrorCode == 0x4B9 + return "The format of the specified group name is invalid." + else if SystemErrorCode == 0x4BA + return "The format of the specified computer name is invalid." + else if SystemErrorCode == 0x4BB + return "The format of the specified event name is invalid." + else if SystemErrorCode == 0x4BC + return "The format of the specified domain name is invalid." + else if SystemErrorCode == 0x4BD + return "The format of the specified service name is invalid." + else if SystemErrorCode == 0x4BE + return "The format of the specified network name is invalid." + else if SystemErrorCode == 0x4BF + return "The format of the specified share name is invalid." + else if SystemErrorCode == 0x4C0 + return "The format of the specified password is invalid." + else if SystemErrorCode == 0x4C1 + return "The format of the specified message name is invalid." + else if SystemErrorCode == 0x4C2 + return "The format of the specified message destination is invalid." + else if SystemErrorCode == 0x4C5 + return "The workgroup or domain name is already in use by another computer on the network." + else if SystemErrorCode == 0x4C6 + return "The network is not present or not started." + else if SystemErrorCode == 0x4C7 + return "The operation was canceled by the user." + else if SystemErrorCode == 0x4C9 + return "The remote computer refused the network connection." + else if SystemErrorCode == 0x4CA + return "The network connection was gracefully closed." + else if SystemErrorCode == 0x4CB + return "The network transport endpoint already has an address associated with it." + else if SystemErrorCode == 0x4CC + return "An address has not yet been associated with the network endpoint." + else if SystemErrorCode == 0x4CD + return "An operation was attempted on a nonexistent network connection." + else if SystemErrorCode == 0x4CE + return "An invalid operation was attempted on an active network connection." + else if SystemErrorCode == 0x4D2 + return "No service is operating at the destination network endpoint on the remote system." + else if SystemErrorCode == 0x4D3 + return "The request was aborted." + else if SystemErrorCode == 0x4D4 + return "The network connection was aborted by the local system." + else if SystemErrorCode == 0x4D5 + return "The operation could not be completed. A retry should be performed." + else if SystemErrorCode == 0x4D6 + return "A connection to the server could not be made because the limit on the number of concurrent connections for this account has been reached." + else if SystemErrorCode == 0x4D7 + return "Attempting to log in during an unauthorized time of day for this account." + else if SystemErrorCode == 0x4D8 + return "The account is not authorized to log in from this station." + else if SystemErrorCode == 0x4D9 + return "The network address could not be used for the operation requested." + else if SystemErrorCode == 0x4DA + return "The service is already registered." + else if SystemErrorCode == 0x4DB + return "The specified service does not exist." + else if SystemErrorCode == 0x4DC + return "The operation being requested was not performed because the user has not been authenticated." + else if SystemErrorCode == 0x4DD + return "The operation being requested was not performed because the user has not logged on to the network. The specified service does not exist." + else if SystemErrorCode == 0x4DE + return "Continue with work in progress." + else if SystemErrorCode == 0x4DF + return "An attempt was made to perform an initialization operation when initialization has already been completed." + else if SystemErrorCode == 0x4E0 + return "No more local devices." + else if SystemErrorCode == 0x4E1 + return "The specified site does not exist." + else if SystemErrorCode == 0x4E2 + return "A domain controller with the specified name already exists." + else if SystemErrorCode == 0x4E3 + return "This operation is supported only when you are connected to the server." + else if SystemErrorCode == 0x4E4 + return "The group policy framework should call the extension even if there are no changes." + else if SystemErrorCode == 0x4E5 + return "The specified user does not have a valid profile." + else if SystemErrorCode == 0x4E6 + return "This operation is not supported on a computer running Windows Server 2003 for Small Business Server." + else if SystemErrorCode == 0x4E7 + return "The server machine is shutting down." + else if SystemErrorCode == 0x4E9 + return "The security identifier provided is not from an account domain." + else if SystemErrorCode == 0x4EA + return "The security identifier provided does not have a domain component." + else if SystemErrorCode == 0x4EB + return "AppHelp dialog canceled thus preventing the application from starting." + else if SystemErrorCode == 0x4ED + return "A program attempt to use an invalid register value. Normally caused by an uninitialized register. This error is Itanium specific." + else if SystemErrorCode == 0x4EE + return "The share is currently offline or does not exist." + else if SystemErrorCode == 0x4EF + return "The Kerberos protocol encountered an error while validating the KDC certificate during smartcard logon. There is more information in the system event log." + else if SystemErrorCode == 0x4F0 + return "The Kerberos protocol encountered an error while attempting to utilize the smartcard subsystem." + else if SystemErrorCode == 0x4F1 + return "The system cannot contact a domain controller to service the authentication request. Please try again later." + else if SystemErrorCode == 0x4F7 + return "The machine is locked and cannot be shut down without the force option." + else if SystemErrorCode == 0x4FA + return "The group policy framework should call the extension in the synchronous foreground policy refresh." + else if SystemErrorCode == 0x4FB + return "This driver has been blocked from loading." + else if SystemErrorCode == 0x4FD + return "Windows cannot open this program since it has been disabled." + else if SystemErrorCode == 0x4FE + return "Windows cannot open this program because the license enforcement system has been tampered with or become corrupted." + else if SystemErrorCode == 0x4FF + return "A transaction recover failed." + else if SystemErrorCode == 0x500 + return "The current thread has already been converted to a fiber." + else if SystemErrorCode == 0x501 + return "The current thread has already been converted from a fiber." + else if SystemErrorCode == 0x503 + return "Data present in one of the parameters is more than the function can operate on." + else if SystemErrorCode == 0x504 + return "An attempt to do an operation on a debug object failed because the object is in the process of being deleted." + else if SystemErrorCode == 0x507 + return "Insufficient information exists to identify the cause of failure." + else if SystemErrorCode == 0x508 + return "The parameter passed to a C runtime function is incorrect." + else if SystemErrorCode == 0x509 + return "The operation occurred beyond the valid data length of the file." + else if SystemErrorCode == 0x50B + return "The process hosting the driver for this device has been terminated." + else if SystemErrorCode == 0x50E + return "The service notification client is lagging too far behind the current state of services in the machine." + else if SystemErrorCode == 0x512 + return "A thread involved in this operation appears to be unresponsive." + else if SystemErrorCode == 0x513 + return "Indicates a particular Security ID may not be assigned as the label of an object." + else if SystemErrorCode == 0x514 + return "Not all privileges or groups referenced are assigned to the caller." + else if SystemErrorCode == 0x515 + return "Some mapping between account names and security IDs was not done." + else if SystemErrorCode == 0x516 + return "No system quota limits are specifically set for this account." + else if SystemErrorCode == 0x519 + return "The revision level is unknown." + else if SystemErrorCode == 0x51A + return "Indicates two revision levels are incompatible." + else if SystemErrorCode == 0x51B + return "This security ID may not be assigned as the owner of this object." + else if SystemErrorCode == 0x51C + return "This security ID may not be assigned as the primary group of an object." + else if SystemErrorCode == 0x51D + return "An attempt has been made to operate on an impersonation token by a thread that is not currently impersonating a client." + else if SystemErrorCode == 0x51E + return "The group may not be disabled." + else if SystemErrorCode == 0x51F + return "There are currently no logon servers available to service the logon request." + else if SystemErrorCode == 0x520 + return "A specified logon session does not exist. It may already have been terminated." + else if SystemErrorCode == 0x521 + return "A specified privilege does not exist." + else if SystemErrorCode == 0x522 + return "A required privilege is not held by the client." + else if SystemErrorCode == 0x523 + return "The name provided is not a properly formed account name." + else if SystemErrorCode == 0x524 + return "The specified account already exists." + else if SystemErrorCode == 0x525 + return "The specified account does not exist." + else if SystemErrorCode == 0x526 + return "The specified group already exists." + else if SystemErrorCode == 0x527 + return "The specified group does not exist." + else if SystemErrorCode == 0x529 + return "The specified user account is not a member of the specified group account." + else if SystemErrorCode == 0x52B + return "Unable to update the password. The value provided as the current password is incorrect." + else if SystemErrorCode == 0x52C + return "Unable to update the password. The value provided for the new password contains values that are not allowed in passwords." + else if SystemErrorCode == 0x52E + return "The user name or password is incorrect." + else if SystemErrorCode == 0x530 + return "Your account has time restrictions that keep you from signing in right now." + else if SystemErrorCode == 0x532 + return "The password for this account has expired." + else if SystemErrorCode == 0x534 + return "No mapping between account names and security IDs was done." + else if SystemErrorCode == 0x537 + return "The subauthority part of a security ID is invalid for this particular use." + else if SystemErrorCode == 0x539 + return "The security ID structure is invalid." + else if SystemErrorCode == 0x53A + return "The security descriptor structure is invalid." + else if SystemErrorCode == 0x53D + return "The server is currently disabled." + else if SystemErrorCode == 0x53E + return "The server is currently enabled." + else if SystemErrorCode == 0x53F + return "The value provided was an invalid value for an identifier authority." + else if SystemErrorCode == 0x540 + return "No more memory is available for security information updates." + else if SystemErrorCode == 0x543 + return "Cannot open an anonymous level security token." + else if SystemErrorCode == 0x544 + return "The validation information class requested was invalid." + else if SystemErrorCode == 0x545 + return "The type of the token is inappropriate for its attempted use." + else if SystemErrorCode == 0x546 + return "Unable to perform a security operation on an object that has no associated security." + else if SystemErrorCode == 0x549 + return "The domain was in the wrong state to perform the security operation." + else if SystemErrorCode == 0x54A + return "This operation is only allowed for the Primary Domain Controller of the domain." + else if SystemErrorCode == 0x54B + return "The specified domain either does not exist or could not be contacted." + else if SystemErrorCode == 0x54C + return "The specified domain already exists." + else if SystemErrorCode == 0x54D + return "An attempt was made to exceed the limit on the number of domains per server." + else if SystemErrorCode == 0x54E + return "Unable to complete the requested operation because of either a catastrophic media failure or a data structure corruption on the disk." + else if SystemErrorCode == 0x54F + return "An internal error occurred." + else if SystemErrorCode == 0x550 + return "Generic access types were contained in an access mask which should already be mapped to nongeneric types." + else if SystemErrorCode == 0x552 + return "The requested action is restricted for use by logon processes only. The calling process has not registered as a logon process." + else if SystemErrorCode == 0x553 + return "Cannot start a new logon session with an ID that is already in use." + else if SystemErrorCode == 0x554 + return "A specified authentication package is unknown." + else if SystemErrorCode == 0x555 + return "The logon session is not in a state that is consistent with the requested operation." + else if SystemErrorCode == 0x556 + return "The logon session ID is already in use." + else if SystemErrorCode == 0x557 + return "A logon request contained an invalid logon type value." + else if SystemErrorCode == 0x558 + return "Unable to impersonate using a named pipe until data has been read from that pipe." + else if SystemErrorCode == 0x559 + return "The transaction state of a registry subtree is incompatible with the requested operation." + else if SystemErrorCode == 0x55A + return "An internal security database corruption has been encountered." + else if SystemErrorCode == 0x55F + return "The token is already in use as a primary token." + else if SystemErrorCode == 0x560 + return "The specified local group does not exist." + else if SystemErrorCode == 0x561 + return "The specified account name is not a member of the group." + else if SystemErrorCode == 0x562 + return "The specified account name is already a member of the group." + else if SystemErrorCode == 0x563 + return "The specified local group already exists." + else if SystemErrorCode == 0x565 + return "The maximum number of secrets that may be stored in a single system has been exceeded." + else if SystemErrorCode == 0x566 + return "The length of a secret exceeds the maximum length allowed." + else if SystemErrorCode == 0x567 + return "The local security authority database contains an internal inconsistency." + else if SystemErrorCode == 0x56B + return "A member could not be added to or removed from the local group because the member does not exist." + else if SystemErrorCode == 0x56C + return "A new member could not be added to a local group because the member has the wrong account type." + else if SystemErrorCode == 0x56D + return "Too many security IDs have been specified." + else if SystemErrorCode == 0x56F + return "Indicates an ACL contains no inheritable components." + else if SystemErrorCode == 0x570 + return "The file or directory is corrupted and unreadable." + else if SystemErrorCode == 0x571 + return "The disk structure is corrupted and unreadable." + else if SystemErrorCode == 0x572 + return "There is no user session key for the specified logon session." + else if SystemErrorCode == 0x573 + return "The service being accessed is licensed for a particular number of connections. No more connections can be made to the service at this time because there are already as many connections as the service can accept." + else if SystemErrorCode == 0x574 + return "The target account name is incorrect." + else if SystemErrorCode == 0x577 + return "This operation cannot be performed on the current domain." + else if SystemErrorCode == 0x578 + return "Invalid window handle." + else if SystemErrorCode == 0x579 + return "Invalid menu handle." + else if SystemErrorCode == 0x57A + return "Invalid cursor handle." + else if SystemErrorCode == 0x57B + return "Invalid accelerator table handle." + else if SystemErrorCode == 0x57C + return "Invalid hook handle." + else if SystemErrorCode == 0x57F + return "Cannot find window class." + else if SystemErrorCode == 0x581 + return "Hot key is already registered." + else if SystemErrorCode == 0x582 + return "Class already exists." + else if SystemErrorCode == 0x583 + return "Class does not exist." + else if SystemErrorCode == 0x584 + return "Class still has open windows." + else if SystemErrorCode == 0x585 + return "Invalid index." + else if SystemErrorCode == 0x586 + return "Invalid icon handle." + else if SystemErrorCode == 0x587 + return "Using private DIALOG window words." + else if SystemErrorCode == 0x588 + return "The list box identifier was not found." + else if SystemErrorCode == 0x589 + return "No wildcards were found." + else if SystemErrorCode == 0x58A + return "Thread does not have a clipboard open." + else if SystemErrorCode == 0x58B + return "Hot key is not registered." + else if SystemErrorCode == 0x58C + return "The window is not a valid dialog window." + else if SystemErrorCode == 0x58D + return "Control ID not found." + else if SystemErrorCode == 0x58E + return "Invalid message for a combo box because it does not have an edit control." + else if SystemErrorCode == 0x58F + return "The window is not a combo box." + else if SystemErrorCode == 0x590 + return "Height must be less than 256." + else if SystemErrorCode == 0x592 + return "Invalid hook procedure type." + else if SystemErrorCode == 0x593 + return "Invalid hook procedure." + else if SystemErrorCode == 0x594 + return "Cannot set nonlocal hook without a module handle." + else if SystemErrorCode == 0x595 + return "This hook procedure can only be set globally." + else if SystemErrorCode == 0x596 + return "The journal hook procedure is already installed." + else if SystemErrorCode == 0x597 + return "The hook procedure is not installed." + else if SystemErrorCode == 0x59A + return "This list box does not support tab stops." + else if SystemErrorCode == 0x59B + return "Cannot destroy object created by another thread." + else if SystemErrorCode == 0x59C + return "Child windows cannot have menus." + else if SystemErrorCode == 0x59D + return "The window does not have a system menu." + else if SystemErrorCode == 0x59E + return "Invalid message box style." + else if SystemErrorCode == 0x5A0 + return "Screen already locked." + else if SystemErrorCode == 0x5A2 + return "The window is not a child window." + else if SystemErrorCode == 0x5A4 + return "Invalid thread identifier." + else if SystemErrorCode == 0x5A6 + return "Popup menu already active." + else if SystemErrorCode == 0x5A7 + return "The window does not have scroll bars." + else if SystemErrorCode == 0x5A8 + return "Scroll bar range cannot be greater than MAXLONG." + else if SystemErrorCode == 0x5A9 + return "Cannot show or remove the window in the way specified." + else if SystemErrorCode == 0x5AA + return "Insufficient system resources exist to complete the requested service." + else if SystemErrorCode == 0x5AB + return "Insufficient system resources exist to complete the requested service." + else if SystemErrorCode == 0x5AC + return "Insufficient system resources exist to complete the requested service." + else if SystemErrorCode == 0x5AD + return "Insufficient quota to complete the requested service." + else if SystemErrorCode == 0x5AE + return "Insufficient quota to complete the requested service." + else if SystemErrorCode == 0x5AF + return "The paging file is too small for this operation to complete." + else if SystemErrorCode == 0x5B0 + return "A menu item was not found." + else if SystemErrorCode == 0x5B1 + return "Invalid keyboard layout handle." + else if SystemErrorCode == 0x5B2 + return "Hook type not allowed." + else if SystemErrorCode == 0x5B3 + return "This operation requires an interactive window station." + else if SystemErrorCode == 0x5B4 + return "This operation returned because the timeout period expired." + else if SystemErrorCode == 0x5B5 + return "Invalid monitor handle." + else if SystemErrorCode == 0x5B6 + return "Incorrect size argument." + else if SystemErrorCode == 0x5B7 + return "The symbolic link cannot be followed because its type is disabled." + else if SystemErrorCode == 0x5B8 + return "This application does not support the current operation on symbolic links." + else if SystemErrorCode == 0x5B9 + return "Windows was unable to parse the requested XML data." + else if SystemErrorCode == 0x5BA + return "An error was encountered while processing an XML digital signature." + else if SystemErrorCode == 0x5BB + return "This application must be restarted." + else if SystemErrorCode == 0x5BC + return "The caller made the connection request in the wrong routing compartment." + else if SystemErrorCode == 0x5BD + return "There was an AuthIP failure when attempting to connect to the remote host." + else if SystemErrorCode == 0x5BE + return "Insufficient NVRAM resources exist to complete the requested service. A reboot might be required." + else if SystemErrorCode == 0x5BF + return "Unable to finish the requested operation because the specified process is not a GUI process." + else if SystemErrorCode == 0x5DC + return "The event log file is corrupted." + else if SystemErrorCode == 0x5DE + return "The event log file is full." + else if SystemErrorCode == 0x5DF + return "The event log file has changed between read operations." + else if SystemErrorCode == 0x60E + return "The specified task name is invalid." + else if SystemErrorCode == 0x60F + return "The specified task index is invalid." + else if SystemErrorCode == 0x610 + return "The specified thread is already joining a task." + else if SystemErrorCode == 0x641 + return "The Windows Installer Service could not be accessed. This can occur if the Windows Installer is not correctly installed. Contact your support personnel for assistance." + else if SystemErrorCode == 0x642 + return "User cancelled installation." + else if SystemErrorCode == 0x643 + return "Fatal error during installation." + else if SystemErrorCode == 0x645 + return "This action is only valid for products that are currently installed." + else if SystemErrorCode == 0x646 + return "Feature ID not registered." + else if SystemErrorCode == 0x647 + return "Component ID not registered." + else if SystemErrorCode == 0x648 + return "Unknown property." + else if SystemErrorCode == 0x649 + return "Handle is in an invalid state." + else if SystemErrorCode == 0x64A + return "The configuration data for this product is corrupt. Contact your support personnel." + else if SystemErrorCode == 0x64B + return "Component qualifier not present." + else if SystemErrorCode == 0x64C + return "The installation source for this product is not available. Verify that the source exists and that you can access it." + else if SystemErrorCode == 0x64D + return "This installation package cannot be installed by the Windows Installer service. You must install a Windows service pack that contains a newer version of the Windows Installer service." + else if SystemErrorCode == 0x64E + return "Product is uninstalled." + else if SystemErrorCode == 0x64F + return "SQL query syntax invalid or unsupported." + else if SystemErrorCode == 0x650 + return "Record field does not exist." + else if SystemErrorCode == 0x651 + return "The device has been removed." + else if SystemErrorCode == 0x652 + return "Another installation is already in progress. Complete that installation before proceeding with this install." + else if SystemErrorCode == 0x654 + return "This installation package could not be opened. Contact the application vendor to verify that this is a valid Windows Installer package." + else if SystemErrorCode == 0x655 + return "There was an error starting the Windows Installer service user interface. Contact your support personnel." + else if SystemErrorCode == 0x656 + return "Error opening installation log file. Verify that the specified log file location exists and that you can write to it." + else if SystemErrorCode == 0x657 + return "The language of this installation package is not supported by your system." + else if SystemErrorCode == 0x658 + return "Error applying transforms. Verify that the specified transform paths are valid." + else if SystemErrorCode == 0x659 + return "This installation is forbidden by system policy. Contact your system administrator." + else if SystemErrorCode == 0x65A + return "Function could not be executed." + else if SystemErrorCode == 0x65B + return "Function failed during execution." + else if SystemErrorCode == 0x65C + return "Invalid or unknown table specified." + else if SystemErrorCode == 0x65D + return "Data supplied is of wrong type." + else if SystemErrorCode == 0x65E + return "Data of this type is not supported." + else if SystemErrorCode == 0x65F + return "The Windows Installer service failed to start. Contact your support personnel." + else if SystemErrorCode == 0x660 + return "The Temp folder is on a drive that is full or is inaccessible. Free up space on the drive or verify that you have write permission on the Temp folder." + else if SystemErrorCode == 0x661 + return "This installation package is not supported by this processor type. Contact your product vendor." + else if SystemErrorCode == 0x662 + return "Component not used on this computer." + else if SystemErrorCode == 0x664 + return "This update package could not be opened. Contact the application vendor to verify that this is a valid Windows Installer update package." + else if SystemErrorCode == 0x665 + return "This update package cannot be processed by the Windows Installer service. You must install a Windows service pack that contains a newer version of the Windows Installer service." + else if SystemErrorCode == 0x667 + return "Invalid command line argument. Consult the Windows Installer SDK for detailed command line help." + else if SystemErrorCode == 0x669 + return "The requested operation completed successfully. The system will be restarted so the changes can take effect." + else if SystemErrorCode == 0x66B + return "The update package is not permitted by software restriction policy." + else if SystemErrorCode == 0x66C + return "One or more customizations are not permitted by software restriction policy." + else if SystemErrorCode == 0x66D + return "The Windows Installer does not permit installation from a Remote Desktop Connection." + else if SystemErrorCode == 0x66E + return "Uninstallation of the update package is not supported." + else if SystemErrorCode == 0x66F + return "The update is not applied to this product." + else if SystemErrorCode == 0x670 + return "No valid sequence could be found for the set of updates." + else if SystemErrorCode == 0x671 + return "Update removal was disallowed by policy." + else if SystemErrorCode == 0x672 + return "The XML update data is invalid." + else if SystemErrorCode == 0x673 + return "Windows Installer does not permit updating of managed advertised products. At least one feature of the product must be installed before applying the update." + else if SystemErrorCode == 0x674 + return "The Windows Installer service is not accessible in Safe Mode. Please try again when your computer is not in Safe Mode or you can use System Restore to return your machine to a previous good state." + else if SystemErrorCode == 0x675 + return "A fail fast exception occurred. Exception handlers will not be invoked and the process will be terminated immediately." + else if SystemErrorCode == 0x676 + return "The app that you are trying to run is not supported on this version of Windows." + else if SystemErrorCode == 0x6A4 + return "The string binding is invalid." + else if SystemErrorCode == 0x6A5 + return "The binding handle is not the correct type." + else if SystemErrorCode == 0x6A6 + return "The binding handle is invalid." + else if SystemErrorCode == 0x6A7 + return "The RPC protocol sequence is not supported." + else if SystemErrorCode == 0x6A8 + return "The RPC protocol sequence is invalid." + else if SystemErrorCode == 0x6AA + return "The endpoint format is invalid." + else if SystemErrorCode == 0x6AB + return "The network address is invalid." + else if SystemErrorCode == 0x6AC + return "No endpoint was found." + else if SystemErrorCode == 0x6AD + return "The timeout value is invalid." + else if SystemErrorCode == 0x6B1 + return "The RPC server is already listening." + else if SystemErrorCode == 0x6B2 + return "No protocol sequences have been registered." + else if SystemErrorCode == 0x6B3 + return "The RPC server is not listening." + else if SystemErrorCode == 0x6B4 + return "The manager type is unknown." + else if SystemErrorCode == 0x6B5 + return "The interface is unknown." + else if SystemErrorCode == 0x6B6 + return "There are no bindings." + else if SystemErrorCode == 0x6B7 + return "There are no protocol sequences." + else if SystemErrorCode == 0x6B8 + return "The endpoint cannot be created." + else if SystemErrorCode == 0x6B9 + return "Not enough resources are available to complete this operation." + else if SystemErrorCode == 0x6BA + return "The RPC server is unavailable." + else if SystemErrorCode == 0x6BB + return "The RPC server is too busy to complete this operation." + else if SystemErrorCode == 0x6BC + return "The network options are invalid." + else if SystemErrorCode == 0x6BD + return "There are no remote procedure calls active on this thread." + else if SystemErrorCode == 0x6BE + return "The remote procedure call failed." + else if SystemErrorCode == 0x6BF + return "The remote procedure call failed and did not execute." + else if SystemErrorCode == 0x6C1 + return "Access to the HTTP proxy is denied." + else if SystemErrorCode == 0x6C2 + return "The transfer syntax is not supported by the RPC server." + else if SystemErrorCode == 0x6C5 + return "The tag is invalid." + else if SystemErrorCode == 0x6C6 + return "The array bounds are invalid." + else if SystemErrorCode == 0x6C7 + return "The binding does not contain an entry name." + else if SystemErrorCode == 0x6C8 + return "The name syntax is invalid." + else if SystemErrorCode == 0x6C9 + return "The name syntax is not supported." + else if SystemErrorCode == 0x6CC + return "The endpoint is a duplicate." + else if SystemErrorCode == 0x6CD + return "The authentication type is unknown." + else if SystemErrorCode == 0x6CE + return "The maximum number of calls is too small." + else if SystemErrorCode == 0x6CF + return "The string is too long." + else if SystemErrorCode == 0x6D0 + return "The RPC protocol sequence was not found." + else if SystemErrorCode == 0x6D1 + return "The procedure number is out of range." + else if SystemErrorCode == 0x6D2 + return "The binding does not contain any authentication information." + else if SystemErrorCode == 0x6D3 + return "The authentication service is unknown." + else if SystemErrorCode == 0x6D4 + return "The authentication level is unknown." + else if SystemErrorCode == 0x6D5 + return "The security context is invalid." + else if SystemErrorCode == 0x6D6 + return "The authorization service is unknown." + else if SystemErrorCode == 0x6D7 + return "The entry is invalid." + else if SystemErrorCode == 0x6D8 + return "The server endpoint cannot perform the operation." + else if SystemErrorCode == 0x6D9 + return "There are no more endpoints available from the endpoint mapper." + else if SystemErrorCode == 0x6DA + return "No interfaces have been exported." + else if SystemErrorCode == 0x6DB + return "The entry name is incomplete." + else if SystemErrorCode == 0x6DC + return "The version option is invalid." + else if SystemErrorCode == 0x6DD + return "There are no more members." + else if SystemErrorCode == 0x6DE + return "There is nothing to unexport." + else if SystemErrorCode == 0x6DF + return "The interface was not found." + else if SystemErrorCode == 0x6E0 + return "The entry already exists." + else if SystemErrorCode == 0x6E1 + return "The entry is not found." + else if SystemErrorCode == 0x6E2 + return "The name service is unavailable." + else if SystemErrorCode == 0x6E3 + return "The network address family is invalid." + else if SystemErrorCode == 0x6E4 + return "The requested operation is not supported." + else if SystemErrorCode == 0x6E5 + return "No security context is available to allow impersonation." + else if SystemErrorCode == 0x6E7 + return "The RPC server attempted an integer division by zero." + else if SystemErrorCode == 0x6E8 + return "An addressing error occurred in the RPC server." + else if SystemErrorCode == 0x6EC + return "The list of RPC servers available for the binding of auto handles has been exhausted." + else if SystemErrorCode == 0x6ED + return "Unable to open the character translation table file." + else if SystemErrorCode == 0x6EE + return "The file containing the character translation table has fewer than 512 bytes." + else if SystemErrorCode == 0x6EF + return "A null context handle was passed from the client to the host during a remote procedure call." + else if SystemErrorCode == 0x6F1 + return "The context handle changed during a remote procedure call." + else if SystemErrorCode == 0x6F2 + return "The binding handles passed to a remote procedure call do not match." + else if SystemErrorCode == 0x6F3 + return "The stub is unable to get the remote procedure call handle." + else if SystemErrorCode == 0x6F4 + return "A null reference pointer was passed to the stub." + else if SystemErrorCode == 0x6F5 + return "The enumeration value is out of range." + else if SystemErrorCode == 0x6F6 + return "The byte count is too small." + else if SystemErrorCode == 0x6F7 + return "The stub received bad data." + else if SystemErrorCode == 0x6F8 + return "The supplied user buffer is not valid for the requested operation." + else if SystemErrorCode == 0x6F9 + return "The disk media is not recognized. It may not be formatted." + else if SystemErrorCode == 0x6FA + return "The workstation does not have a trust secret." + else if SystemErrorCode == 0x6FB + return "The security database on the server does not have a computer account for this workstation trust relationship." + else if SystemErrorCode == 0x6FC + return "The trust relationship between the primary domain and the trusted domain failed." + else if SystemErrorCode == 0x6FD + return "The trust relationship between this workstation and the primary domain failed." + else if SystemErrorCode == 0x6FE + return "The network logon failed." + else if SystemErrorCode == 0x6FF + return "A remote procedure call is already in progress for this thread." + else if SystemErrorCode == 0x702 + return "The redirector is in use and cannot be unloaded." + else if SystemErrorCode == 0x703 + return "The specified printer driver is already installed." + else if SystemErrorCode == 0x704 + return "The specified port is unknown." + else if SystemErrorCode == 0x705 + return "The printer driver is unknown." + else if SystemErrorCode == 0x706 + return "The print processor is unknown." + else if SystemErrorCode == 0x707 + return "The specified separator file is invalid." + else if SystemErrorCode == 0x708 + return "The specified priority is invalid." + else if SystemErrorCode == 0x709 + return "The printer name is invalid." + else if SystemErrorCode == 0x70A + return "The printer already exists." + else if SystemErrorCode == 0x70B + return "The printer command is invalid." + else if SystemErrorCode == 0x70C + return "The specified datatype is invalid." + else if SystemErrorCode == 0x70D + return "The environment specified is invalid." + else if SystemErrorCode == 0x70E + return "There are no more bindings." + else if SystemErrorCode == 0x70F + return "The account used is an interdomain trust account. Use your global user account or local user account to access this server." + else if SystemErrorCode == 0x710 + return "The account used is a computer account. Use your global user account or local user account to access this server." + else if SystemErrorCode == 0x711 + return "The account used is a server trust account. Use your global user account or local user account to access this server." + else if SystemErrorCode == 0x713 + return "The server is in use and cannot be unloaded." + else if SystemErrorCode == 0x714 + return "The specified image file did not contain a resource section." + else if SystemErrorCode == 0x715 + return "The specified resource type cannot be found in the image file." + else if SystemErrorCode == 0x716 + return "The specified resource name cannot be found in the image file." + else if SystemErrorCode == 0x717 + return "The specified resource language ID cannot be found in the image file." + else if SystemErrorCode == 0x718 + return "Not enough quota is available to process this command." + else if SystemErrorCode == 0x719 + return "No interfaces have been registered." + else if SystemErrorCode == 0x71A + return "The remote procedure call was cancelled." + else if SystemErrorCode == 0x71B + return "The binding handle does not contain all required information." + else if SystemErrorCode == 0x71C + return "A communications failure occurred during a remote procedure call." + else if SystemErrorCode == 0x71D + return "The requested authentication level is not supported." + else if SystemErrorCode == 0x71E + return "No principal name registered." + else if SystemErrorCode == 0x71F + return "The error specified is not a valid Windows RPC error code." + else if SystemErrorCode == 0x720 + return "A UUID that is valid only on this computer has been allocated." + else if SystemErrorCode == 0x721 + return "A security package specific error occurred." + else if SystemErrorCode == 0x722 + return "Thread is not canceled." + else if SystemErrorCode == 0x724 + return "Incompatible version of the serializing package." + else if SystemErrorCode == 0x725 + return "Incompatible version of the RPC stub." + else if SystemErrorCode == 0x726 + return "The RPC pipe object is invalid or corrupted." + else if SystemErrorCode == 0x727 + return "An invalid operation was attempted on an RPC pipe object." + else if SystemErrorCode == 0x728 + return "Unsupported RPC pipe version." + else if SystemErrorCode == 0x729 + return "HTTP proxy server rejected the connection because the cookie authentication failed." + else if SystemErrorCode == 0x76A + return "The group member was not found." + else if SystemErrorCode == 0x76B + return "The endpoint mapper database entry could not be created." + else if SystemErrorCode == 0x76D + return "The specified time is invalid." + else if SystemErrorCode == 0x76E + return "The specified form name is invalid." + else if SystemErrorCode == 0x76F + return "The specified form size is invalid." + else if SystemErrorCode == 0x770 + return "The specified printer handle is already being waited on." + else if SystemErrorCode == 0x771 + return "The specified printer has been deleted." + else if SystemErrorCode == 0x772 + return "The state of the printer is invalid." + else if SystemErrorCode == 0x774 + return "Could not find the domain controller for this domain." + else if SystemErrorCode == 0x775 + return "The referenced account is currently locked out and may not be logged on to." + else if SystemErrorCode == 0x776 + return "The object exporter specified was not found." + else if SystemErrorCode == 0x777 + return "The object specified was not found." + else if SystemErrorCode == 0x778 + return "The object resolver set specified was not found." + else if SystemErrorCode == 0x779 + return "Some data remains to be sent in the request buffer." + else if SystemErrorCode == 0x77A + return "Invalid asynchronous remote procedure call handle." + else if SystemErrorCode == 0x77B + return "Invalid asynchronous RPC call handle for this operation." + else if SystemErrorCode == 0x77C + return "The RPC pipe object has already been closed." + else if SystemErrorCode == 0x77D + return "The RPC call completed before all pipes were processed." + else if SystemErrorCode == 0x77E + return "No more data is available from the RPC pipe." + else if SystemErrorCode == 0x77F + return "No site name is available for this machine." + else if SystemErrorCode == 0x780 + return "The file cannot be accessed by the system." + else if SystemErrorCode == 0x781 + return "The name of the file cannot be resolved by the system." + else if SystemErrorCode == 0x782 + return "The entry is not of the expected type." + else if SystemErrorCode == 0x783 + return "Not all object UUIDs could be exported to the specified entry." + else if SystemErrorCode == 0x784 + return "Interface could not be exported to the specified entry." + else if SystemErrorCode == 0x785 + return "The specified profile entry could not be added." + else if SystemErrorCode == 0x786 + return "The specified profile element could not be added." + else if SystemErrorCode == 0x787 + return "The specified profile element could not be removed." + else if SystemErrorCode == 0x788 + return "The group element could not be added." + else if SystemErrorCode == 0x789 + return "The group element could not be removed." + else if SystemErrorCode == 0x78A + return "The printer driver is not compatible with a policy enabled on your computer that blocks NT 4.0 drivers." + else if SystemErrorCode == 0x78B + return "The context has expired and can no longer be used." + else if SystemErrorCode == 0x78D + return "The total delegated trust creation quota has been exceeded." + else if SystemErrorCode == 0x78F + return "The computer you are signing into is protected by an authentication firewall. The specified account is not allowed to authenticate to the computer." + else if SystemErrorCode == 0x790 + return "Remote connections to the Print Spooler are blocked by a policy set on your machine." + else if SystemErrorCode == 0x791 + return "Authentication failed because NTLM authentication has been disabled." + else if SystemErrorCode == 0x7D0 + return "The pixel format is invalid." + else if SystemErrorCode == 0x7D1 + return "The specified driver is invalid." + else if SystemErrorCode == 0x7D2 + return "The window style or class attribute is invalid for this operation." + else if SystemErrorCode == 0x7D3 + return "The requested metafile operation is not supported." + else if SystemErrorCode == 0x7D4 + return "The requested transformation operation is not supported." + else if SystemErrorCode == 0x7D5 + return "The requested clipping operation is not supported." + else if SystemErrorCode == 0x7DA + return "The specified color management module is invalid." + else if SystemErrorCode == 0x7DB + return "The specified color profile is invalid." + else if SystemErrorCode == 0x7DC + return "The specified tag was not found." + else if SystemErrorCode == 0x7DD + return "A required tag is not present." + else if SystemErrorCode == 0x7DE + return "The specified tag is already present." + else if SystemErrorCode == 0x7DF + return "The specified color profile is not associated with the specified device." + else if SystemErrorCode == 0x7E0 + return "The specified color profile was not found." + else if SystemErrorCode == 0x7E1 + return "The specified color space is invalid." + else if SystemErrorCode == 0x7E2 + return "Image Color Management is not enabled." + else if SystemErrorCode == 0x7E3 + return "There was an error while deleting the color transform." + else if SystemErrorCode == 0x7E4 + return "The specified color transform is invalid." + else if SystemErrorCode == 0x7E6 + return "The specified named color index is not present in the profile." + else if SystemErrorCode == 0x7E7 + return "The specified profile is intended for a device of a different type than the specified device." + else if SystemErrorCode == 0x83D + return "The network connection was made successfully using default credentials." + else if SystemErrorCode == 0x89A + return "The specified username is invalid." + else if SystemErrorCode == 0x8CA + return "This network connection does not exist." + else if SystemErrorCode == 0x961 + return "This network connection has files open or requests pending." + else if SystemErrorCode == 0x962 + return "Active connections still exist." + else if SystemErrorCode == 0x964 + return "The device is in use by an active process and cannot be disconnected." + else if SystemErrorCode == 0xBB8 + return "The specified print monitor is unknown." + else if SystemErrorCode == 0xBB9 + return "The specified printer driver is currently in use." + else if SystemErrorCode == 0xBBA + return "The spool file was not found." + else if SystemErrorCode == 0xBBB + return "A StartDocPrinter call was not issued." + else if SystemErrorCode == 0xBBC + return "An AddJob call was not issued." + else if SystemErrorCode == 0xBBD + return "The specified print processor has already been installed." + else if SystemErrorCode == 0xBBE + return "The specified print monitor has already been installed." + else if SystemErrorCode == 0xBBF + return "The specified print monitor does not have the required functions." + else if SystemErrorCode == 0xBC0 + return "The specified print monitor is currently in use." + else if SystemErrorCode == 0xBC1 + return "The requested operation is not allowed when there are jobs queued to the printer." + else if SystemErrorCode == 0xBC2 + return "The requested operation is successful. Changes will not be effective until the system is rebooted." + else if SystemErrorCode == 0xBC3 + return "The requested operation is successful. Changes will not be effective until the service is restarted." + else if SystemErrorCode == 0xBC4 + return "No printers were found." + else if SystemErrorCode == 0xBC5 + return "The printer driver is known to be unreliable." + else if SystemErrorCode == 0xBC6 + return "The printer driver is known to harm the system." + else if SystemErrorCode == 0xBC7 + return "The specified printer driver package is currently in use." + else if SystemErrorCode == 0xBC8 + return "Unable to find a core driver package that is required by the printer driver package." + else if SystemErrorCode == 0xBC9 + return "The requested operation failed. A system reboot is required to roll back changes made." + else if SystemErrorCode == 0xBCA + return "The requested operation failed. A system reboot has been initiated to roll back changes made." + else if SystemErrorCode == 0xBCB + return "The specified printer driver was not found on the system and needs to be downloaded." + else if SystemErrorCode == 0xBCC + return "The requested print job has failed to print. A print system update requires the job to be resubmitted." + else if SystemErrorCode == 0xBCE + return "The specified printer cannot be shared." + else if SystemErrorCode == 0xBEA + return "The operation was paused." + else if SystemErrorCode == 0xF6E + return "Reissue the given operation as a cached IO operation." + else if SystemErrorCode == 0xFA0 + return "WINS encountered an error while processing the command." + else if SystemErrorCode == 0xFA1 + return "The local WINS cannot be deleted." + else if SystemErrorCode == 0xFA2 + return "The importation from the file failed." + else if SystemErrorCode == 0xFA4 + return "The backup failed. Check the directory to which you are backing the database." + else if SystemErrorCode == 0xFA5 + return "The name does not exist in the WINS database." + else if SystemErrorCode == 0xFA6 + return "Replication with a nonconfigured partner is not allowed." + else if SystemErrorCode == 0xFD2 + return "The version of the supplied content information is not supported." + else if SystemErrorCode == 0xFD3 + return "The supplied content information is malformed." + else if SystemErrorCode == 0xFD4 + return "The requested data cannot be found in local or peer caches." + else if SystemErrorCode == 0xFD5 + return "No more data is available or required." + else if SystemErrorCode == 0xFD6 + return "The supplied object has not been initialized." + else if SystemErrorCode == 0xFD7 + return "The supplied object has already been initialized." + else if SystemErrorCode == 0xFD8 + return "A shutdown operation is already in progress." + else if SystemErrorCode == 0xFD9 + return "The supplied object has already been invalidated." + else if SystemErrorCode == 0xFDA + return "An element already exists and was not replaced." + else if SystemErrorCode == 0xFDB + return "Can not cancel the requested operation as it has already been completed." + else if SystemErrorCode == 0xFDC + return "Can not perform the reqested operation because it has already been carried out." + else if SystemErrorCode == 0xFDD + return "An operation accessed data beyond the bounds of valid data." + else if SystemErrorCode == 0xFDE + return "The requested version is not supported." + else if SystemErrorCode == 0xFDF + return "A configuration value is invalid." + else if SystemErrorCode == 0xFE0 + return "The SKU is not licensed." + else if SystemErrorCode == 0xFE1 + return "PeerDist Service is still initializing and will be available shortly." + else if SystemErrorCode == 0xFE2 + return "Communication with one or more computers will be temporarily blocked due to recent errors." + else if SystemErrorCode == 0x1004 + return "The DHCP client has obtained an IP address that is already in use on the network. The local interface will be disabled until the DHCP client can obtain a new address." + else if SystemErrorCode == 0x1068 + return "The GUID passed was not recognized as valid by a WMI data provider." + else if SystemErrorCode == 0x1069 + return "The instance name passed was not recognized as valid by a WMI data provider." + else if SystemErrorCode == 0x106A + return "The data item ID passed was not recognized as valid by a WMI data provider." + else if SystemErrorCode == 0x106B + return "The WMI request could not be completed and should be retried." + else if SystemErrorCode == 0x106C + return "The WMI data provider could not be located." + else if SystemErrorCode == 0x106D + return "The WMI data provider references an instance set that has not been registered." + else if SystemErrorCode == 0x106E + return "The WMI data block or event notification has already been enabled." + else if SystemErrorCode == 0x106F + return "The WMI data block is no longer available." + else if SystemErrorCode == 0x1070 + return "The WMI data service is not available." + else if SystemErrorCode == 0x1071 + return "The WMI data provider failed to carry out the request." + else if SystemErrorCode == 0x1072 + return "The WMI MOF information is not valid." + else if SystemErrorCode == 0x1073 + return "The WMI registration information is not valid." + else if SystemErrorCode == 0x1074 + return "The WMI data block or event notification has already been disabled." + else if SystemErrorCode == 0x1075 + return "The WMI data item or data block is read only." + else if SystemErrorCode == 0x1076 + return "The WMI data item or data block could not be changed." + else if SystemErrorCode == 0x109A + return "This operation is only valid in the context of an app container." + else if SystemErrorCode == 0x109B + return "This application can only run in the context of an app container." + else if SystemErrorCode == 0x109C + return "This functionality is not supported in the context of an app container." + else if SystemErrorCode == 0x109D + return "The length of the SID supplied is not a valid length for app container SIDs." + else if SystemErrorCode == 0x10CC + return "The media identifier does not represent a valid medium." + else if SystemErrorCode == 0x10CD + return "The library identifier does not represent a valid library." + else if SystemErrorCode == 0x10CE + return "The media pool identifier does not represent a valid media pool." + else if SystemErrorCode == 0x10CF + return "The drive and medium are not compatible or exist in different libraries." + else if SystemErrorCode == 0x10D0 + return "The medium currently exists in an offline library and must be online to perform this operation." + else if SystemErrorCode == 0x10D1 + return "The operation cannot be performed on an offline library." + else if SystemErrorCode == 0x10D4 + return "No media is currently available in this media pool or library." + else if SystemErrorCode == 0x10D5 + return "A resource required for this operation is disabled." + else if SystemErrorCode == 0x10D6 + return "The media identifier does not represent a valid cleaner." + else if SystemErrorCode == 0x10D7 + return "The drive cannot be cleaned or does not support cleaning." + else if SystemErrorCode == 0x10D8 + return "The object identifier does not represent a valid object." + else if SystemErrorCode == 0x10D9 + return "Unable to read from or write to the database." + else if SystemErrorCode == 0x10DA + return "The database is full." + else if SystemErrorCode == 0x10DB + return "The medium is not compatible with the device or media pool." + else if SystemErrorCode == 0x10DC + return "The resource required for this operation does not exist." + else if SystemErrorCode == 0x10DD + return "The operation identifier is not valid." + else if SystemErrorCode == 0x10DE + return "The media is not mounted or ready for use." + else if SystemErrorCode == 0x10DF + return "The device is not ready for use." + else if SystemErrorCode == 0x10E0 + return "The operator or administrator has refused the request." + else if SystemErrorCode == 0x10E1 + return "The drive identifier does not represent a valid drive." + else if SystemErrorCode == 0x10E2 + return "Library is full. No slot is available for use." + else if SystemErrorCode == 0x10E3 + return "The transport cannot access the medium." + else if SystemErrorCode == 0x10E4 + return "Unable to load the medium into the drive." + else if SystemErrorCode == 0x10E5 + return "Unable to retrieve the drive status." + else if SystemErrorCode == 0x10E6 + return "Unable to retrieve the slot status." + else if SystemErrorCode == 0x10E7 + return "Unable to retrieve status about the transport." + else if SystemErrorCode == 0x10E8 + return "Cannot use the transport because it is already in use." + else if SystemErrorCode == 0x10EA + return "Unable to eject the medium because it is in a drive." + else if SystemErrorCode == 0x10EB + return "A cleaner slot is already reserved." + else if SystemErrorCode == 0x10EC + return "A cleaner slot is not reserved." + else if SystemErrorCode == 0x10ED + return "The cleaner cartridge has performed the maximum number of drive cleanings." + else if SystemErrorCode == 0x10EF + return "The last remaining item in this group or resource cannot be deleted." + else if SystemErrorCode == 0x10F0 + return "The message provided exceeds the maximum size allowed for this parameter." + else if SystemErrorCode == 0x10F1 + return "The volume contains system or paging files." + else if SystemErrorCode == 0x10F2 + return "The media type cannot be removed from this library since at least one drive in the library reports it can support this media type." + else if SystemErrorCode == 0x10F3 + return "This offline media cannot be mounted on this system since no enabled drives are present which can be used." + else if SystemErrorCode == 0x10F4 + return "A cleaner cartridge is present in the tape library." + else if SystemErrorCode == 0x10FE + return "This file is currently not available for use on this computer." + else if SystemErrorCode == 0x10FF + return "The remote storage service is not operational at this time." + else if SystemErrorCode == 0x1100 + return "The remote storage service encountered a media error." + else if SystemErrorCode == 0x1126 + return "The file or directory is not a reparse point." + else if SystemErrorCode == 0x1127 + return "The reparse point attribute cannot be set because it conflicts with an existing attribute." + else if SystemErrorCode == 0x1128 + return "The data present in the reparse point buffer is invalid." + else if SystemErrorCode == 0x1129 + return "The tag present in the reparse point buffer is invalid." + else if SystemErrorCode == 0x112A + return "There is a mismatch between the tag specified in the request and the tag present in the reparse point." + else if SystemErrorCode == 0x1130 + return "Fast Cache data not found." + else if SystemErrorCode == 0x1131 + return "Fast Cache data expired." + else if SystemErrorCode == 0x1132 + return "Fast Cache data corrupt." + else if SystemErrorCode == 0x1133 + return "Fast Cache data has exceeded its max size and cannot be updated." + else if SystemErrorCode == 0x1134 + return "Fast Cache has been ReArmed and requires a reboot until it can be updated." + else if SystemErrorCode == 0x1144 + return "Secure Boot detected that rollback of protected data has been attempted." + else if SystemErrorCode == 0x1145 + return "The value is protected by Secure Boot policy and cannot be modified or deleted." + else if SystemErrorCode == 0x1146 + return "The Secure Boot policy is invalid." + else if SystemErrorCode == 0x1147 + return "A new Secure Boot policy did not contain the current publisher on its update list." + else if SystemErrorCode == 0x1149 + return "Secure Boot is not enabled on this machine." + else if SystemErrorCode == 0x114A + return "Secure Boot requires that certain files and drivers are not replaced by other files or drivers." + else if SystemErrorCode == 0x1158 + return "The copy offload read operation is not supported by a filter." + else if SystemErrorCode == 0x1159 + return "The copy offload write operation is not supported by a filter." + else if SystemErrorCode == 0x115A + return "The copy offload read operation is not supported for the file." + else if SystemErrorCode == 0x115B + return "The copy offload write operation is not supported for the file." + else if SystemErrorCode == 0x1194 + return "Single Instance Storage is not available on this volume." + else if SystemErrorCode == 0x1389 + return "The operation cannot be completed because other resources are dependent on this resource." + else if SystemErrorCode == 0x138A + return "The cluster resource dependency cannot be found." + else if SystemErrorCode == 0x138B + return "The cluster resource cannot be made dependent on the specified resource because it is already dependent." + else if SystemErrorCode == 0x138C + return "The cluster resource is not online." + else if SystemErrorCode == 0x138D + return "A cluster node is not available for this operation." + else if SystemErrorCode == 0x138E + return "The cluster resource is not available." + else if SystemErrorCode == 0x138F + return "The cluster resource could not be found." + else if SystemErrorCode == 0x1390 + return "The cluster is being shut down." + else if SystemErrorCode == 0x1391 + return "A cluster node cannot be evicted from the cluster unless the node is down or it is the last node." + else if SystemErrorCode == 0x1392 + return "The object already exists." + else if SystemErrorCode == 0x1393 + return "The object is already in the list." + else if SystemErrorCode == 0x1394 + return "The cluster group is not available for any new requests." + else if SystemErrorCode == 0x1395 + return "The cluster group could not be found." + else if SystemErrorCode == 0x1396 + return "The operation could not be completed because the cluster group is not online." + else if SystemErrorCode == 0x1399 + return "The cluster resource could not be created in the specified resource monitor." + else if SystemErrorCode == 0x139A + return "The cluster resource could not be brought online by the resource monitor." + else if SystemErrorCode == 0x139B + return "The operation could not be completed because the cluster resource is online." + else if SystemErrorCode == 0x139C + return "The cluster resource could not be deleted or brought offline because it is the quorum resource." + else if SystemErrorCode == 0x139D + return "The cluster could not make the specified resource a quorum resource because it is not capable of being a quorum resource." + else if SystemErrorCode == 0x139E + return "The cluster software is shutting down." + else if SystemErrorCode == 0x139F + return "The group or resource is not in the correct state to perform the requested operation." + else if SystemErrorCode == 0x13A0 + return "The properties were stored but not all changes will take effect until the next time the resource is brought online." + else if SystemErrorCode == 0x13A1 + return "The cluster could not make the specified resource a quorum resource because it does not belong to a shared storage class." + else if SystemErrorCode == 0x13A2 + return "The cluster resource could not be deleted since it is a core resource." + else if SystemErrorCode == 0x13A3 + return "The quorum resource failed to come online." + else if SystemErrorCode == 0x13A4 + return "The quorum log could not be created or mounted successfully." + else if SystemErrorCode == 0x13A5 + return "The cluster log is corrupt." + else if SystemErrorCode == 0x13A6 + return "The record could not be written to the cluster log since it exceeds the maximum size." + else if SystemErrorCode == 0x13A7 + return "The cluster log exceeds its maximum size." + else if SystemErrorCode == 0x13A8 + return "No checkpoint record was found in the cluster log." + else if SystemErrorCode == 0x13A9 + return "The minimum required disk space needed for logging is not available." + else if SystemErrorCode == 0x13AA + return "The cluster node failed to take control of the quorum resource because the resource is owned by another active node." + else if SystemErrorCode == 0x13AB + return "A cluster network is not available for this operation." + else if SystemErrorCode == 0x13AC + return "A cluster node is not available for this operation." + else if SystemErrorCode == 0x13AD + return "All cluster nodes must be running to perform this operation." + else if SystemErrorCode == 0x13AE + return "A cluster resource failed." + else if SystemErrorCode == 0x13AF + return "The cluster node is not valid." + else if SystemErrorCode == 0x13B0 + return "The cluster node already exists." + else if SystemErrorCode == 0x13B1 + return "A node is in the process of joining the cluster." + else if SystemErrorCode == 0x13B2 + return "The cluster node was not found." + else if SystemErrorCode == 0x13B3 + return "The cluster local node information was not found." + else if SystemErrorCode == 0x13B4 + return "The cluster network already exists." + else if SystemErrorCode == 0x13B5 + return "The cluster network was not found." + else if SystemErrorCode == 0x13B6 + return "The cluster network interface already exists." + else if SystemErrorCode == 0x13B7 + return "The cluster network interface was not found." + else if SystemErrorCode == 0x13B8 + return "The cluster request is not valid for this object." + else if SystemErrorCode == 0x13B9 + return "The cluster network provider is not valid." + else if SystemErrorCode == 0x13BA + return "The cluster node is down." + else if SystemErrorCode == 0x13BB + return "The cluster node is not reachable." + else if SystemErrorCode == 0x13BC + return "The cluster node is not a member of the cluster." + else if SystemErrorCode == 0x13BD + return "A cluster join operation is not in progress." + else if SystemErrorCode == 0x13BE + return "The cluster network is not valid." + else if SystemErrorCode == 0x13C0 + return "The cluster node is up." + else if SystemErrorCode == 0x13C1 + return "The cluster IP address is already in use." + else if SystemErrorCode == 0x13C2 + return "The cluster node is not paused." + else if SystemErrorCode == 0x13C3 + return "No cluster security context is available." + else if SystemErrorCode == 0x13C4 + return "The cluster network is not configured for internal cluster communication." + else if SystemErrorCode == 0x13C5 + return "The cluster node is already up." + else if SystemErrorCode == 0x13C6 + return "The cluster node is already down." + else if SystemErrorCode == 0x13C7 + return "The cluster network is already online." + else if SystemErrorCode == 0x13C8 + return "The cluster network is already offline." + else if SystemErrorCode == 0x13C9 + return "The cluster node is already a member of the cluster." + else if SystemErrorCode == 0x13CA + return "The cluster network is the only one configured for internal cluster communication between two or more active cluster nodes. The internal communication capability cannot be removed from the network." + else if SystemErrorCode == 0x13CB + return "One or more cluster resources depend on the network to provide service to clients. The client access capability cannot be removed from the network." + else if SystemErrorCode == 0x13CC + return "This operation cannot be performed on the cluster resource as it the quorum resource. You may not bring the quorum resource offline or modify its possible owners list." + else if SystemErrorCode == 0x13CD + return "The cluster quorum resource is not allowed to have any dependencies." + else if SystemErrorCode == 0x13CE + return "The cluster node is paused." + else if SystemErrorCode == 0x13CF + return "The cluster resource cannot be brought online. The owner node cannot run this resource." + else if SystemErrorCode == 0x13D0 + return "The cluster node is not ready to perform the requested operation." + else if SystemErrorCode == 0x13D1 + return "The cluster node is shutting down." + else if SystemErrorCode == 0x13D2 + return "The cluster join operation was aborted." + else if SystemErrorCode == 0x13D3 + return "The cluster join operation failed due to incompatible software versions between the joining node and its sponsor." + else if SystemErrorCode == 0x13D4 + return "This resource cannot be created because the cluster has reached the limit on the number of resources it can monitor." + else if SystemErrorCode == 0x13D5 + return "The system configuration changed during the cluster join or form operation. The join or form operation was aborted." + else if SystemErrorCode == 0x13D6 + return "The specified resource type was not found." + else if SystemErrorCode == 0x13D7 + return "The specified node does not support a resource of this type. This may be due to version inconsistencies or due to the absence of the resource DLL on this node." + else if SystemErrorCode == 0x13D9 + return "No authentication package could be registered with the RPC server." + else if SystemErrorCode == 0x13DB + return "The join operation failed because the cluster database sequence number has changed or is incompatible with the locker node. This may happen during a join operation if the cluster database was changing during the join." + else if SystemErrorCode == 0x13DC + return "The resource monitor will not allow the fail operation to be performed while the resource is in its current state. This may happen if the resource is in a pending state." + else if SystemErrorCode == 0x13DD + return "A non locker code got a request to reserve the lock for making global updates." + else if SystemErrorCode == 0x13DE + return "The quorum disk could not be located by the cluster service." + else if SystemErrorCode == 0x13DF + return "The backed up cluster database is possibly corrupt." + else if SystemErrorCode == 0x13E0 + return "A DFS root already exists in this cluster node." + else if SystemErrorCode == 0x13E1 + return "An attempt to modify a resource property failed because it conflicts with another existing property." + else if SystemErrorCode == 0x1702 + return "An operation was attempted that is incompatible with the current membership state of the node." + else if SystemErrorCode == 0x1703 + return "The quorum resource does not contain the quorum log." + else if SystemErrorCode == 0x1704 + return "The membership engine requested shutdown of the cluster service on this node." + else if SystemErrorCode == 0x1705 + return "The join operation failed because the cluster instance ID of the joining node does not match the cluster instance ID of the sponsor node." + else if SystemErrorCode == 0x1706 + return "A matching cluster network for the specified IP address could not be found." + else if SystemErrorCode == 0x1707 + return "The actual data type of the property did not match the expected data type of the property." + else if SystemErrorCode == 0x170A + return "This computer cannot be made a member of a cluster." + else if SystemErrorCode == 0x170B + return "This computer cannot be made a member of a cluster because it does not have the correct version of Windows installed." + else if SystemErrorCode == 0x170C + return "A cluster cannot be created with the specified cluster name because that cluster name is already in use. Specify a different name for the cluster." + else if SystemErrorCode == 0x170D + return "The cluster configuration action has already been committed." + else if SystemErrorCode == 0x170E + return "The cluster configuration action could not be rolled back." + else if SystemErrorCode == 0x170F + return "The drive letter assigned to a system disk on one node conflicted with the drive letter assigned to a disk on another node." + else if SystemErrorCode == 0x1710 + return "One or more nodes in the cluster are running a version of Windows that does not support this operation." + else if SystemErrorCode == 0x1712 + return "No network adapters are available." + else if SystemErrorCode == 0x1713 + return "The cluster node has been poisoned." + else if SystemErrorCode == 0x1714 + return "The group is unable to accept the request since it is moving to another node." + else if SystemErrorCode == 0x1715 + return "The resource type cannot accept the request since is too busy performing another operation." + else if SystemErrorCode == 0x1716 + return "The call to the cluster resource DLL timed out." + else if SystemErrorCode == 0x1718 + return "An internal cluster error occurred. A call to an invalid function was attempted." + else if SystemErrorCode == 0x1719 + return "A parameter value is out of acceptable range." + else if SystemErrorCode == 0x171A + return "A network error occurred while sending data to another node in the cluster. The number of bytes transmitted was less than required." + else if SystemErrorCode == 0x171B + return "An invalid cluster registry operation was attempted." + else if SystemErrorCode == 0x171C + return "An input string of characters is not properly terminated." + else if SystemErrorCode == 0x171D + return "An input string of characters is not in a valid format for the data it represents." + else if SystemErrorCode == 0x171E + return "An internal cluster error occurred. A cluster database transaction was attempted while a transaction was already in progress." + else if SystemErrorCode == 0x171F + return "An internal cluster error occurred. There was an attempt to commit a cluster database transaction while no transaction was in progress." + else if SystemErrorCode == 0x1720 + return "An internal cluster error occurred. Data was not properly initialized." + else if SystemErrorCode == 0x1721 + return "An error occurred while reading from a stream of data. An unexpected number of bytes was returned." + else if SystemErrorCode == 0x1722 + return "An error occurred while writing to a stream of data. The required number of bytes could not be written." + else if SystemErrorCode == 0x1723 + return "An error occurred while deserializing a stream of cluster data." + else if SystemErrorCode == 0x1725 + return "A quorum of cluster nodes was not present to form a cluster." + else if SystemErrorCode == 0x1727 + return "The cluster network is not valid for an IPv6 Tunnel resource. Check the configuration of the IP Address resource on which the IPv6 Tunnel resource depends." + else if SystemErrorCode == 0x1728 + return "Quorum resource cannot reside in the Available Storage group." + else if SystemErrorCode == 0x1729 + return "The dependencies for this resource are nested too deeply." + else if SystemErrorCode == 0x172A + return "The call into the resource DLL raised an unhandled exception." + else if SystemErrorCode == 0x172B + return "The RHS process failed to initialize." + else if SystemErrorCode == 0x172C + return "The Failover Clustering feature is not installed on this node." + else if SystemErrorCode == 0x172D + return "The resources must be online on the same node for this operation." + else if SystemErrorCode == 0x172E + return "A new node can not be added since this cluster is already at its maximum number of nodes." + else if SystemErrorCode == 0x172F + return "This cluster can not be created since the specified number of nodes exceeds the maximum allowed limit." + else if SystemErrorCode == 0x1730 + return "An attempt to use the specified cluster name failed because an enabled computer object with the given name already exists in the domain." + else if SystemErrorCode == 0x1732 + return "File share associated with file share witness resource cannot be hosted by this cluster or any of its nodes." + else if SystemErrorCode == 0x1734 + return "Only one instance of this resource type is allowed in the cluster." + else if SystemErrorCode == 0x1735 + return "Only one instance of this resource type is allowed per resource group." + else if SystemErrorCode == 0x1736 + return "The resource failed to come online due to the failure of one or more provider resources." + else if SystemErrorCode == 0x1737 + return "The resource has indicated that it cannot come online on any node." + else if SystemErrorCode == 0x1738 + return "The current operation cannot be performed on this group at this time." + else if SystemErrorCode == 0x1739 + return "The directory or file is not located on a cluster shared volume." + else if SystemErrorCode == 0x173A + return "The Security Descriptor does not meet the requirements for a cluster." + else if SystemErrorCode == 0x173B + return "There is one or more shared volumes resources configured in the cluster. Those resources must be moved to available storage in order for operation to succeed." + else if SystemErrorCode == 0x173C + return "This group or resource cannot be directly manipulated. Use shared volume APIs to perform desired operation." + else if SystemErrorCode == 0x173D + return "Back up is in progress. Please wait for backup completion before trying this operation again." + else if SystemErrorCode == 0x173E + return "The path does not belong to a cluster shared volume." + else if SystemErrorCode == 0x173F + return "The cluster shared volume is not locally mounted on this node." + else if SystemErrorCode == 0x1740 + return "The cluster watchdog is terminating." + else if SystemErrorCode == 0x1741 + return "A resource vetoed a move between two nodes because they are incompatible." + else if SystemErrorCode == 0x1743 + return "The resource vetoed the call." + else if SystemErrorCode == 0x1744 + return "Resource could not start or run because it could not reserve sufficient system resources." + else if SystemErrorCode == 0x1745 + return "A resource vetoed a move between two nodes because the destination currently does not have enough resources to complete the operation." + else if SystemErrorCode == 0x1746 + return "A resource vetoed a move between two nodes because the source currently does not have enough resources to complete the operation." + else if SystemErrorCode == 0x1747 + return "The requested operation can not be completed because the group is queued for an operation." + else if SystemErrorCode == 0x1748 + return "The requested operation can not be completed because a resource has locked status." + else if SystemErrorCode == 0x1749 + return "The resource cannot move to another node because a cluster shared volume vetoed the operation." + else if SystemErrorCode == 0x174B + return "Clustered storage is not connected to the node." + else if SystemErrorCode == 0x174C + return "The disk is not configured in a way to be used with CSV. CSV disks must have at least one partition that is formatted with NTFS." + else if SystemErrorCode == 0x174D + return "The resource must be part of the Available Storage group to complete this action." + else if SystemErrorCode == 0x174E + return "CSVFS failed operation as volume is in redirected mode." + else if SystemErrorCode == 0x174F + return "CSVFS failed operation as volume is not in redirected mode." + else if SystemErrorCode == 0x1750 + return "Cluster properties cannot be returned at this time." + else if SystemErrorCode == 0x1751 + return "The clustered disk resource contains software snapshot diff area that are not supported for Cluster Shared Volumes." + else if SystemErrorCode == 0x1752 + return "The operation cannot be completed because the resource is in maintenance mode." + else if SystemErrorCode == 0x1753 + return "The operation cannot be completed because of cluster affinity conflicts." + else if SystemErrorCode == 0x1754 + return "The operation cannot be completed because the resource is a replica virtual machine." + else if SystemErrorCode == 0x1770 + return "The specified file could not be encrypted." + else if SystemErrorCode == 0x1771 + return "The specified file could not be decrypted." + else if SystemErrorCode == 0x1772 + return "The specified file is encrypted and the user does not have the ability to decrypt it." + else if SystemErrorCode == 0x1773 + return "There is no valid encryption recovery policy configured for this system." + else if SystemErrorCode == 0x1774 + return "The required encryption driver is not loaded for this system." + else if SystemErrorCode == 0x1775 + return "The file was encrypted with a different encryption driver than is currently loaded." + else if SystemErrorCode == 0x1776 + return "There are no EFS keys defined for the user." + else if SystemErrorCode == 0x1777 + return "The specified file is not encrypted." + else if SystemErrorCode == 0x1778 + return "The specified file is not in the defined EFS export format." + else if SystemErrorCode == 0x1779 + return "The specified file is read only." + else if SystemErrorCode == 0x177A + return "The directory has been disabled for encryption." + else if SystemErrorCode == 0x177B + return "The server is not trusted for remote encryption operation." + else if SystemErrorCode == 0x177C + return "Recovery policy configured for this system contains invalid recovery certificate." + else if SystemErrorCode == 0x177D + return "The encryption algorithm used on the source file needs a bigger key buffer than the one on the destination file." + else if SystemErrorCode == 0x177E + return "The disk partition does not support file encryption." + else if SystemErrorCode == 0x177F + return "This machine is disabled for file encryption." + else if SystemErrorCode == 0x1780 + return "A newer system is required to decrypt this encrypted file." + else if SystemErrorCode == 0x1781 + return "The remote server sent an invalid response for a file being opened with Client Side Encryption." + else if SystemErrorCode == 0x1782 + return "Client Side Encryption is not supported by the remote server even though it claims to support it." + else if SystemErrorCode == 0x1783 + return "File is encrypted and should be opened in Client Side Encryption mode." + else if SystemErrorCode == 0x17E6 + return "The list of servers for this workgroup is not currently available." + else if SystemErrorCode == 0x1838 + return "The Task Scheduler service must be configured to run in the System account to function properly. Individual tasks may be configured to run in other accounts." + else if SystemErrorCode == 0x19C8 + return "Log service encountered an invalid log sector." + else if SystemErrorCode == 0x19C9 + return "Log service encountered a log sector with invalid block parity." + else if SystemErrorCode == 0x19CA + return "Log service encountered a remapped log sector." + else if SystemErrorCode == 0x19CB + return "Log service encountered a partial or incomplete log block." + else if SystemErrorCode == 0x19CC + return "Log service encountered an attempt access data outside the active log range." + else if SystemErrorCode == 0x19CD + return "Log service user marshalling buffers are exhausted." + else if SystemErrorCode == 0x19CE + return "Log service encountered an attempt read from a marshalling area with an invalid read context." + else if SystemErrorCode == 0x19CF + return "Log service encountered an invalid log restart area." + else if SystemErrorCode == 0x19D0 + return "Log service encountered an invalid log block version." + else if SystemErrorCode == 0x19D1 + return "Log service encountered an invalid log block." + else if SystemErrorCode == 0x19D2 + return "Log service encountered an attempt to read the log with an invalid read mode." + else if SystemErrorCode == 0x19D3 + return "Log service encountered a log stream with no restart area." + else if SystemErrorCode == 0x19D4 + return "Log service encountered a corrupted metadata file." + else if SystemErrorCode == 0x19D5 + return "Log service encountered a metadata file that could not be created by the log file system." + else if SystemErrorCode == 0x19D6 + return "Log service encountered a metadata file with inconsistent data." + else if SystemErrorCode == 0x19D7 + return "Log service encountered an attempt to erroneous allocate or dispose reservation space." + else if SystemErrorCode == 0x19D8 + return "Log service cannot delete log file or file system container." + else if SystemErrorCode == 0x19D9 + return "Log service has reached the maximum allowable containers allocated to a log file." + else if SystemErrorCode == 0x19DA + return "Log service has attempted to read or write backward past the start of the log." + else if SystemErrorCode == 0x19DB + return "Log policy could not be installed because a policy of the same type is already present." + else if SystemErrorCode == 0x19DC + return "Log policy in question was not installed at the time of the request." + else if SystemErrorCode == 0x19DD + return "The installed set of policies on the log is invalid." + else if SystemErrorCode == 0x19DE + return "A policy on the log in question prevented the operation from completing." + else if SystemErrorCode == 0x19DF + return "Log space cannot be reclaimed because the log is pinned by the archive tail." + else if SystemErrorCode == 0x19E0 + return "Log record is not a record in the log file." + else if SystemErrorCode == 0x19E1 + return "Number of reserved log records or the adjustment of the number of reserved log records is invalid." + else if SystemErrorCode == 0x19E2 + return "Reserved log space or the adjustment of the log space is invalid." + else if SystemErrorCode == 0x19E3 + return "An new or existing archive tail or base of the active log is invalid." + else if SystemErrorCode == 0x19E4 + return "Log space is exhausted." + else if SystemErrorCode == 0x19E5 + return "The log could not be set to the requested size." + else if SystemErrorCode == 0x19E7 + return "The operation failed because the log is a dedicated log." + else if SystemErrorCode == 0x19E8 + return "The operation requires an archive context." + else if SystemErrorCode == 0x19E9 + return "Log archival is in progress." + else if SystemErrorCode == 0x19EB + return "The log must have at least two containers before it can be read from or written to." + else if SystemErrorCode == 0x19EC + return "A log client has already registered on the stream." + else if SystemErrorCode == 0x19ED + return "A log client has not been registered on the stream." + else if SystemErrorCode == 0x19EE + return "A request has already been made to handle the log full condition." + else if SystemErrorCode == 0x19EF + return "Log service encountered an error when attempting to read from a log container." + else if SystemErrorCode == 0x19F0 + return "Log service encountered an error when attempting to write to a log container." + else if SystemErrorCode == 0x19F1 + return "Log service encountered an error when attempting open a log container." + else if SystemErrorCode == 0x19F2 + return "Log service encountered an invalid container state when attempting a requested action." + else if SystemErrorCode == 0x19F3 + return "Log service is not in the correct state to perform a requested action." + else if SystemErrorCode == 0x19F4 + return "Log space cannot be reclaimed because the log is pinned." + else if SystemErrorCode == 0x19F5 + return "Log metadata flush failed." + else if SystemErrorCode == 0x19F6 + return "Security on the log and its containers is inconsistent." + else if SystemErrorCode == 0x19F8 + return "The log is pinned due to reservation consuming most of the log space. Free some reserved records to make space available." + else if SystemErrorCode == 0x1A2C + return "The transaction handle associated with this operation is not valid." + else if SystemErrorCode == 0x1A2D + return "The requested operation was made in the context of a transaction that is no longer active." + else if SystemErrorCode == 0x1A2E + return "The requested operation is not valid on the Transaction object in its current state." + else if SystemErrorCode == 0x1A32 + return "The Transaction Manager was unable to be successfully initialized. Transacted operations are not supported." + else if SystemErrorCode == 0x1A33 + return "The specified ResourceManager made no changes or updates to the resource under this transaction." + else if SystemErrorCode == 0x1A34 + return "The resource manager has attempted to prepare a transaction that it has not successfully joined." + else if SystemErrorCode == 0x1A36 + return "The RM tried to register a protocol that already exists." + else if SystemErrorCode == 0x1A37 + return "The attempt to propagate the Transaction failed." + else if SystemErrorCode == 0x1A38 + return "The requested propagation protocol was not registered as a CRM." + else if SystemErrorCode == 0x1A39 + return "The buffer passed in to PushTransaction or PullTransaction is not in a valid format." + else if SystemErrorCode == 0x1A3A + return "The current transaction context associated with the thread is not a valid handle to a transaction object." + else if SystemErrorCode == 0x1A45 + return "Implicit transaction are not supported." + else if SystemErrorCode == 0x1A46 + return "The kernel transaction manager had to abort or forget the transaction because it blocked forward progress." + else if SystemErrorCode == 0x1A48 + return "This snapshot operation cannot continue because a transactional resource manager cannot be frozen in its current state.  Please try again." + else if SystemErrorCode == 0x1A4A + return "The transaction does not have a superior enlistment." + else if SystemErrorCode == 0x1A90 + return "The function attempted to use a name that is reserved for use by another transaction." + else if SystemErrorCode == 0x1A91 + return "Transaction support within the specified resource manager is not started or was shut down due to an error." + else if SystemErrorCode == 0x1A92 + return "The metadata of the RM has been corrupted. The RM will not function." + else if SystemErrorCode == 0x1A93 + return "The specified directory does not contain a resource manager." + else if SystemErrorCode == 0x1A95 + return "The remote server or share does not support transacted file operations." + else if SystemErrorCode == 0x1A96 + return "The requested log size is invalid." + else if SystemErrorCode == 0x1A98 + return "The specified file miniversion was not found for this transacted file open." + else if SystemErrorCode == 0x1A99 + return "The specified file miniversion was found but has been invalidated. Most likely cause is a transaction savepoint rollback." + else if SystemErrorCode == 0x1A9A + return "A miniversion may only be opened in the context of the transaction that created it." + else if SystemErrorCode == 0x1A9B + return "It is not possible to open a miniversion with modify access." + else if SystemErrorCode == 0x1A9C + return "It is not possible to create any more miniversions for this stream." + else if SystemErrorCode == 0x1A9E + return "The remote server sent mismatching version number or Fid for a file opened with transactions." + else if SystemErrorCode == 0x1A9F + return "The handle has been invalidated by a transaction. The most likely cause is the presence of memory mapping on a file or an open handle when the transaction ended or rolled back to savepoint." + else if SystemErrorCode == 0x1AA0 + return "There is no transaction metadata on the file." + else if SystemErrorCode == 0x1AA1 + return "The log data is corrupt." + else if SystemErrorCode == 0x1AA3 + return "The transaction outcome is unavailable because the resource manager responsible for it has disconnected." + else if SystemErrorCode == 0x1AA4 + return "The request was rejected because the enlistment in question is not a superior enlistment." + else if SystemErrorCode == 0x1AA5 + return "The transactional resource manager is already consistent. Recovery is not needed." + else if SystemErrorCode == 0x1AA6 + return "The transactional resource manager has already been started." + else if SystemErrorCode == 0x1AA8 + return "The operation cannot be performed because another transaction is depending on the fact that this property will not change." + else if SystemErrorCode == 0x1AA9 + return "The operation would involve a single file with two transactional resource managers and is therefore not allowed." + else if SystemErrorCode == 0x1AAB + return "The operation would leave a transactional resource manager in an inconsistent state and is therefore not allowed." + else if SystemErrorCode == 0x1AAC + return "The operation could not be completed because the transaction manager does not have a log." + else if SystemErrorCode == 0x1AAD + return "A rollback could not be scheduled because a previously scheduled rollback has already executed or been queued for execution." + else if SystemErrorCode == 0x1AAE + return "The transactional metadata attribute on the file or directory is corrupt and unreadable." + else if SystemErrorCode == 0x1AAF + return "The encryption operation could not be completed because a transaction is active." + else if SystemErrorCode == 0x1AB0 + return "This object is not allowed to be opened in a transaction." + else if SystemErrorCode == 0x1AB3 + return "Transaction metadata is already present on this file and cannot be superseded." + else if SystemErrorCode == 0x1AB4 + return "A transaction scope could not be entered because the scope handler has not been initialized." + else if SystemErrorCode == 0x1AB6 + return "This file is open for modification in an unresolved transaction and may be opened for execute only by a transacted reader." + else if SystemErrorCode == 0x1AB7 + return "The request to thaw frozen transactions was ignored because transactions had not previously been frozen." + else if SystemErrorCode == 0x1AB8 + return "Transactions cannot be frozen because a freeze is already in progress." + else if SystemErrorCode == 0x1AB9 + return "The target volume is not a snapshot volume. This operation is only valid on a volume mounted as a snapshot." + else if SystemErrorCode == 0x1ABA + return "The savepoint operation failed because files are open on the transaction. This is not permitted." + else if SystemErrorCode == 0x1ABC + return "The sparse operation could not be completed because a transaction is active on the file." + else if SystemErrorCode == 0x1ABD + return "The call to create a TransactionManager object failed because the Tm Identity stored in the logfile does not match the Tm Identity that was passed in as an argument." + else if SystemErrorCode == 0x1ABF + return "The transactional resource manager cannot currently accept transacted work due to a transient condition such as low resources." + else if SystemErrorCode == 0x1AC0 + return "The transactional resource manager had too many tranactions outstanding that could not be aborted. The transactional resource manger has been shut down." + else if SystemErrorCode == 0x1AC1 + return "The operation could not be completed due to bad clusters on disk." + else if SystemErrorCode == 0x1AC2 + return "The compression operation could not be completed because a transaction is active on the file." + else if SystemErrorCode == 0x1AC3 + return "The operation could not be completed because the volume is dirty. Please run chkdsk and try again." + else if SystemErrorCode == 0x1AC4 + return "The link tracking operation could not be completed because a transaction is active." + else if SystemErrorCode == 0x1AC5 + return "This operation cannot be performed in a transaction." + else if SystemErrorCode == 0x1AC6 + return "The handle is no longer properly associated with its transaction.  It may have been opened in a transactional resource manager that was subsequently forced to restart.  Please close the handle and open a new one." + else if SystemErrorCode == 0x1AC7 + return "The specified operation could not be performed because the resource manager is not enlisted in the transaction." + else if SystemErrorCode == 0x1B59 + return "The specified session name is invalid." + else if SystemErrorCode == 0x1B5A + return "The specified protocol driver is invalid." + else if SystemErrorCode == 0x1B5B + return "The specified protocol driver was not found in the system path." + else if SystemErrorCode == 0x1B5C + return "The specified terminal connection driver was not found in the system path." + else if SystemErrorCode == 0x1B5D + return "A registry key for event logging could not be created for this session." + else if SystemErrorCode == 0x1B5E + return "A service with the same name already exists on the system." + else if SystemErrorCode == 0x1B5F + return "A close operation is pending on the session." + else if SystemErrorCode == 0x1B60 + return "There are no free output buffers available." + else if SystemErrorCode == 0x1B61 + return "The MODEM.INF file was not found." + else if SystemErrorCode == 0x1B62 + return "The modem name was not found in MODEM.INF." + else if SystemErrorCode == 0x1B63 + return "The modem did not accept the command sent to it. Verify that the configured modem name matches the attached modem." + else if SystemErrorCode == 0x1B64 + return "The modem did not respond to the command sent to it. Verify that the modem is properly cabled and powered on." + else if SystemErrorCode == 0x1B65 + return "Carrier detect has failed or carrier has been dropped due to disconnect." + else if SystemErrorCode == 0x1B66 + return "Dial tone not detected within the required time. Verify that the phone cable is properly attached and functional." + else if SystemErrorCode == 0x1B67 + return "Busy signal detected at remote site on callback." + else if SystemErrorCode == 0x1B68 + return "Voice detected at remote site on callback." + else if SystemErrorCode == 0x1B69 + return "Transport driver error." + else if SystemErrorCode == 0x1B6E + return "The specified session cannot be found." + else if SystemErrorCode == 0x1B6F + return "The specified session name is already in use." + else if SystemErrorCode == 0x1B71 + return "An attempt has been made to connect to a session whose video mode is not supported by the current client." + else if SystemErrorCode == 0x1B7B + return "The application attempted to enable DOS graphics mode. DOS graphics mode is not supported." + else if SystemErrorCode == 0x1B7D + return "Your interactive logon privilege has been disabled. Please contact your administrator." + else if SystemErrorCode == 0x1B7E + return "The requested operation can be performed only on the system console. This is most often the result of a driver or system DLL requiring direct console access." + else if SystemErrorCode == 0x1B80 + return "The client failed to respond to the server connect message." + else if SystemErrorCode == 0x1B81 + return "Disconnecting the console session is not supported." + else if SystemErrorCode == 0x1B82 + return "Reconnecting a disconnected session to the console is not supported." + else if SystemErrorCode == 0x1B84 + return "The request to control another session remotely was denied." + else if SystemErrorCode == 0x1B85 + return "The requested session access is denied." + else if SystemErrorCode == 0x1B89 + return "The specified terminal connection driver is invalid." + else if SystemErrorCode == 0x1B8A + return "The requested session cannot be controlled remotely. This may be because the session is disconnected or does not currently have a user logged on." + else if SystemErrorCode == 0x1B8B + return "The requested session is not configured to allow remote control." + else if SystemErrorCode == 0x1B8C + return "Your request to connect to this Terminal Server has been rejected. Your Terminal Server client license number is currently being used by another user. Please call your system administrator to obtain a unique license number." + else if SystemErrorCode == 0x1B8D + return "Your request to connect to this Terminal Server has been rejected. Your Terminal Server client license number has not been entered for this copy of the Terminal Server client. Please contact your system administrator." + else if SystemErrorCode == 0x1B8E + return "The number of connections to this computer is limited and all connections are in use right now. Try connecting later or contact your system administrator." + else if SystemErrorCode == 0x1B8F + return "The client you are using is not licensed to use this system. Your logon request is denied." + else if SystemErrorCode == 0x1B90 + return "The system license has expired. Your logon request is denied." + else if SystemErrorCode == 0x1B91 + return "Remote control could not be terminated because the specified session is not currently being remotely controlled." + else if SystemErrorCode == 0x1B92 + return "The remote control of the console was terminated because the display mode was changed. Changing the display mode in a remote control session is not supported." + else if SystemErrorCode == 0x1B93 + return "Activation has already been reset the maximum number of times for this installation. Your activation timer will not be cleared." + else if SystemErrorCode == 0x1B94 + return "Remote logins are currently disabled." + else if SystemErrorCode == 0x1B95 + return "You do not have the proper encryption level to access this Session." + else if SystemErrorCode == 0x1B98 + return "Unable to log you on because of an account restriction." + else if SystemErrorCode == 0x1B9A + return "The Client Drive Mapping Service Has Connected on Terminal Connection." + else if SystemErrorCode == 0x1B9B + return "The Client Drive Mapping Service Has Disconnected on Terminal Connection." + else if SystemErrorCode == 0x1B9C + return "The Terminal Server security layer detected an error in the protocol stream and has disconnected the client." + else if SystemErrorCode == 0x1B9D + return "The target session is incompatible with the current session." + else if SystemErrorCode == 0x1F41 + return "The file replication service API was called incorrectly." + else if SystemErrorCode == 0x1F42 + return "The file replication service cannot be started." + else if SystemErrorCode == 0x1F43 + return "The file replication service cannot be stopped." + else if SystemErrorCode == 0x1F44 + return "The file replication service API terminated the request. The event log may have more information." + else if SystemErrorCode == 0x1F45 + return "The file replication service terminated the request. The event log may have more information." + else if SystemErrorCode == 0x1F46 + return "The file replication service cannot be contacted. The event log may have more information." + else if SystemErrorCode == 0x1F47 + return "The file replication service cannot satisfy the request because the user has insufficient privileges. The event log may have more information." + else if SystemErrorCode == 0x1F48 + return "The file replication service cannot satisfy the request because authenticated RPC is not available. The event log may have more information." + else if SystemErrorCode == 0x1F49 + return "The file replication service cannot satisfy the request because the user has insufficient privileges on the domain controller. The event log may have more information." + else if SystemErrorCode == 0x1F4A + return "The file replication service cannot satisfy the request because authenticated RPC is not available on the domain controller. The event log may have more information." + else if SystemErrorCode == 0x1F4B + return "The file replication service cannot communicate with the file replication service on the domain controller. The event log may have more information." + else if SystemErrorCode == 0x1F4C + return "The file replication service on the domain controller cannot communicate with the file replication service on this computer. The event log may have more information." + else if SystemErrorCode == 0x1F4D + return "The file replication service cannot populate the system volume because of an internal error. The event log may have more information." + else if SystemErrorCode == 0x1F4E + return "The file replication service cannot populate the system volume because of an internal timeout. The event log may have more information." + else if SystemErrorCode == 0x1F4F + return "The file replication service cannot process the request. The system volume is busy with a previous request." + else if SystemErrorCode == 0x1F50 + return "The file replication service cannot stop replicating the system volume because of an internal error. The event log may have more information." + else if SystemErrorCode == 0x1F51 + return "The file replication service detected an invalid parameter." + else if SystemErrorCode == 0x2009 + return "The directory service evaluated group memberships locally." + else if SystemErrorCode == 0x200A + return "The specified directory service attribute or value does not exist." + else if SystemErrorCode == 0x200B + return "The attribute syntax specified to the directory service is invalid." + else if SystemErrorCode == 0x200C + return "The attribute type specified to the directory service is not defined." + else if SystemErrorCode == 0x200D + return "The specified directory service attribute or value already exists." + else if SystemErrorCode == 0x200E + return "The directory service is busy." + else if SystemErrorCode == 0x200F + return "The directory service is unavailable." + else if SystemErrorCode == 0x2010 + return "The directory service was unable to allocate a relative identifier." + else if SystemErrorCode == 0x2011 + return "The directory service has exhausted the pool of relative identifiers." + else if SystemErrorCode == 0x2012 + return "The requested operation could not be performed because the directory service is not the master for that type of operation." + else if SystemErrorCode == 0x2013 + return "The directory service was unable to initialize the subsystem that allocates relative identifiers." + else if SystemErrorCode == 0x2014 + return "The requested operation did not satisfy one or more constraints associated with the class of the object." + else if SystemErrorCode == 0x2015 + return "The directory service can perform the requested operation only on a leaf object." + else if SystemErrorCode == 0x2016 + return "The directory service cannot perform the requested operation on the RDN attribute of an object." + else if SystemErrorCode == 0x2017 + return "The directory service detected an attempt to modify the object class of an object." + else if SystemErrorCode == 0x2019 + return "Unable to contact the global catalog server." + else if SystemErrorCode == 0x201A + return "The policy object is shared and can only be modified at the root." + else if SystemErrorCode == 0x201B + return "The policy object does not exist." + else if SystemErrorCode == 0x201C + return "The requested policy information is only in the directory service." + else if SystemErrorCode == 0x201D + return "A domain controller promotion is currently active." + else if SystemErrorCode == 0x201E + return "A domain controller promotion is not currently active." + else if SystemErrorCode == 0x2020 + return "An operations error occurred." + else if SystemErrorCode == 0x2021 + return "A protocol error occurred." + else if SystemErrorCode == 0x2022 + return "The time limit for this request was exceeded." + else if SystemErrorCode == 0x2023 + return "The size limit for this request was exceeded." + else if SystemErrorCode == 0x2024 + return "The administrative limit for this request was exceeded." + else if SystemErrorCode == 0x2025 + return "The compare response was false." + else if SystemErrorCode == 0x2026 + return "The compare response was true." + else if SystemErrorCode == 0x2027 + return "The requested authentication method is not supported by the server." + else if SystemErrorCode == 0x2028 + return "A more secure authentication method is required for this server." + else if SystemErrorCode == 0x2029 + return "Inappropriate authentication." + else if SystemErrorCode == 0x202A + return "The authentication mechanism is unknown." + else if SystemErrorCode == 0x202B + return "A referral was returned from the server." + else if SystemErrorCode == 0x202C + return "The server does not support the requested critical extension." + else if SystemErrorCode == 0x202D + return "This request requires a secure connection." + else if SystemErrorCode == 0x202E + return "Inappropriate matching." + else if SystemErrorCode == 0x202F + return "A constraint violation occurred." + else if SystemErrorCode == 0x2030 + return "There is no such object on the server." + else if SystemErrorCode == 0x2031 + return "There is an alias problem." + else if SystemErrorCode == 0x2032 + return "An invalid dn syntax has been specified." + else if SystemErrorCode == 0x2033 + return "The object is a leaf object." + else if SystemErrorCode == 0x2034 + return "There is an alias dereferencing problem." + else if SystemErrorCode == 0x2035 + return "The server is unwilling to process the request." + else if SystemErrorCode == 0x2036 + return "A loop has been detected." + else if SystemErrorCode == 0x2037 + return "There is a naming violation." + else if SystemErrorCode == 0x2038 + return "The result set is too large." + else if SystemErrorCode == 0x2039 + return "The operation affects multiple DSAs." + else if SystemErrorCode == 0x203A + return "The server is not operational." + else if SystemErrorCode == 0x203B + return "A local error has occurred." + else if SystemErrorCode == 0x203C + return "An encoding error has occurred." + else if SystemErrorCode == 0x203D + return "A decoding error has occurred." + else if SystemErrorCode == 0x203E + return "The search filter cannot be recognized." + else if SystemErrorCode == 0x203F + return "One or more parameters are illegal." + else if SystemErrorCode == 0x2040 + return "The specified method is not supported." + else if SystemErrorCode == 0x2041 + return "No results were returned." + else if SystemErrorCode == 0x2042 + return "The specified control is not supported by the server." + else if SystemErrorCode == 0x2043 + return "A referral loop was detected by the client." + else if SystemErrorCode == 0x2044 + return "The preset referral limit was exceeded." + else if SystemErrorCode == 0x2045 + return "The search requires a SORT control." + else if SystemErrorCode == 0x2046 + return "The search results exceed the offset range specified." + else if SystemErrorCode == 0x206D + return "The root object must be the head of a naming context. The root object cannot have an instantiated parent." + else if SystemErrorCode == 0x206E + return "The add replica operation cannot be performed. The naming context must be writeable in order to create the replica." + else if SystemErrorCode == 0x206F + return "A reference to an attribute that is not defined in the schema occurred." + else if SystemErrorCode == 0x2070 + return "The maximum size of an object has been exceeded." + else if SystemErrorCode == 0x2071 + return "An attempt was made to add an object to the directory with a name that is already in use." + else if SystemErrorCode == 0x2072 + return "An attempt was made to add an object of a class that does not have an RDN defined in the schema." + else if SystemErrorCode == 0x2073 + return "An attempt was made to add an object using an RDN that is not the RDN defined in the schema." + else if SystemErrorCode == 0x2074 + return "None of the requested attributes were found on the objects." + else if SystemErrorCode == 0x2075 + return "The user buffer is too small." + else if SystemErrorCode == 0x2076 + return "The attribute specified in the operation is not present on the object." + else if SystemErrorCode == 0x2077 + return "Illegal modify operation. Some aspect of the modification is not permitted." + else if SystemErrorCode == 0x2078 + return "The specified object is too large." + else if SystemErrorCode == 0x2079 + return "The specified instance type is not valid." + else if SystemErrorCode == 0x207A + return "The operation must be performed at a master DSA." + else if SystemErrorCode == 0x207B + return "The object class attribute must be specified." + else if SystemErrorCode == 0x207C + return "A required attribute is missing." + else if SystemErrorCode == 0x207D + return "An attempt was made to modify an object to include an attribute that is not legal for its class." + else if SystemErrorCode == 0x207E + return "The specified attribute is already present on the object." + else if SystemErrorCode == 0x2081 + return "Multiple values were specified for an attribute that can have only one value." + else if SystemErrorCode == 0x2082 + return "A value for the attribute was not in the acceptable range of values." + else if SystemErrorCode == 0x2083 + return "The specified value already exists." + else if SystemErrorCode == 0x2084 + return "The attribute cannot be removed because it is not present on the object." + else if SystemErrorCode == 0x2085 + return "The attribute value cannot be removed because it is not present on the object." + else if SystemErrorCode == 0x2086 + return "The specified root object cannot be a subref." + else if SystemErrorCode == 0x2087 + return "Chaining is not permitted." + else if SystemErrorCode == 0x2088 + return "Chained evaluation is not permitted." + else if SystemErrorCode == 0x208A + return "Having a parent that is an alias is not permitted. Aliases are leaf objects." + else if SystemErrorCode == 0x208C + return "The operation cannot be performed because child objects exist. This operation can only be performed on a leaf object." + else if SystemErrorCode == 0x208D + return "Directory object not found." + else if SystemErrorCode == 0x208E + return "The aliased object is missing." + else if SystemErrorCode == 0x208F + return "The object name has bad syntax." + else if SystemErrorCode == 0x2090 + return "It is not permitted for an alias to refer to another alias." + else if SystemErrorCode == 0x2091 + return "The alias cannot be dereferenced." + else if SystemErrorCode == 0x2092 + return "The operation is out of scope." + else if SystemErrorCode == 0x2093 + return "The operation cannot continue because the object is in the process of being removed." + else if SystemErrorCode == 0x2094 + return "The DSA object cannot be deleted." + else if SystemErrorCode == 0x2095 + return "A directory service error has occurred." + else if SystemErrorCode == 0x2096 + return "The operation can only be performed on an internal master DSA object." + else if SystemErrorCode == 0x2097 + return "The object must be of class DSA." + else if SystemErrorCode == 0x2098 + return "Insufficient access rights to perform the operation." + else if SystemErrorCode == 0x2099 + return "The object cannot be added because the parent is not on the list of possible superiors." + else if SystemErrorCode == 0x209B + return "The name has too many parts." + else if SystemErrorCode == 0x209C + return "The name is too long." + else if SystemErrorCode == 0x209D + return "The name value is too long." + else if SystemErrorCode == 0x209E + return "The directory service encountered an error parsing a name." + else if SystemErrorCode == 0x209F + return "The directory service cannot get the attribute type for a name." + else if SystemErrorCode == 0x20A1 + return "The security descriptor is too short." + else if SystemErrorCode == 0x20A2 + return "The security descriptor is invalid." + else if SystemErrorCode == 0x20A3 + return "Failed to create name for deleted object." + else if SystemErrorCode == 0x20A4 + return "The parent of a new subref must exist." + else if SystemErrorCode == 0x20A5 + return "The object must be a naming context." + else if SystemErrorCode == 0x20A6 + return "It is not permitted to add an attribute which is owned by the system." + else if SystemErrorCode == 0x20A8 + return "The schema object could not be found." + else if SystemErrorCode == 0x20AA + return "The operation cannot be performed on a back link." + else if SystemErrorCode == 0x20AB + return "The cross reference for the specified naming context could not be found." + else if SystemErrorCode == 0x20AC + return "The operation could not be performed because the directory service is shutting down." + else if SystemErrorCode == 0x20AD + return "The directory service request is invalid." + else if SystemErrorCode == 0x20AE + return "The role owner attribute could not be read." + else if SystemErrorCode == 0x20AF + return "The requested FSMO operation failed. The current FSMO holder could not be contacted." + else if SystemErrorCode == 0x20B0 + return "Modification of a DN across a naming context is not permitted." + else if SystemErrorCode == 0x20B1 + return "The attribute cannot be modified because it is owned by the system." + else if SystemErrorCode == 0x20B2 + return "Only the replicator can perform this function." + else if SystemErrorCode == 0x20B3 + return "The specified class is not defined." + else if SystemErrorCode == 0x20B4 + return "The specified class is not a subclass." + else if SystemErrorCode == 0x20B5 + return "The name reference is invalid." + else if SystemErrorCode == 0x20B6 + return "A cross reference already exists." + else if SystemErrorCode == 0x20B7 + return "It is not permitted to delete a master cross reference." + else if SystemErrorCode == 0x20B8 + return "Subtree notifications are only supported on NC heads." + else if SystemErrorCode == 0x20B9 + return "Notification filter is too complex." + else if SystemErrorCode == 0x20CC + return "Schema update failed in recalculating validation cache." + else if SystemErrorCode == 0x20CD + return "The tree deletion is not finished. The request must be made again to continue deleting the tree." + else if SystemErrorCode == 0x20CE + return "The requested delete operation could not be performed." + else if SystemErrorCode == 0x20CF + return "Cannot read the governs class identifier for the schema record." + else if SystemErrorCode == 0x20D0 + return "The attribute schema has bad syntax." + else if SystemErrorCode == 0x20D1 + return "The attribute could not be cached." + else if SystemErrorCode == 0x20D2 + return "The class could not be cached." + else if SystemErrorCode == 0x20D3 + return "The attribute could not be removed from the cache." + else if SystemErrorCode == 0x20D4 + return "The class could not be removed from the cache." + else if SystemErrorCode == 0x20D5 + return "The distinguished name attribute could not be read." + else if SystemErrorCode == 0x20D6 + return "No superior reference has been configured for the directory service. The directory service is therefore unable to issue referrals to objects outside this forest." + else if SystemErrorCode == 0x20D7 + return "The instance type attribute could not be retrieved." + else if SystemErrorCode == 0x20D8 + return "An internal error has occurred." + else if SystemErrorCode == 0x20D9 + return "A database error has occurred." + else if SystemErrorCode == 0x20DA + return "The attribute GOVERNSID is missing." + else if SystemErrorCode == 0x20DB + return "An expected attribute is missing." + else if SystemErrorCode == 0x20DC + return "The specified naming context is missing a cross reference." + else if SystemErrorCode == 0x20DD + return "A security checking error has occurred." + else if SystemErrorCode == 0x20DE + return "The schema is not loaded." + else if SystemErrorCode == 0x20DF + return "Schema allocation failed. Please check if the machine is running low on memory." + else if SystemErrorCode == 0x20E0 + return "Failed to obtain the required syntax for the attribute schema." + else if SystemErrorCode == 0x20E1 + return "The global catalog verification failed. The global catalog is not available or does not support the operation. Some part of the directory is currently not available." + else if SystemErrorCode == 0x20E2 + return "The replication operation failed because of a schema mismatch between the servers involved." + else if SystemErrorCode == 0x20E3 + return "The DSA object could not be found." + else if SystemErrorCode == 0x20E4 + return "The naming context could not be found." + else if SystemErrorCode == 0x20E5 + return "The naming context could not be found in the cache." + else if SystemErrorCode == 0x20E6 + return "The child object could not be retrieved." + else if SystemErrorCode == 0x20E7 + return "The modification was not permitted for security reasons." + else if SystemErrorCode == 0x20E8 + return "The operation cannot replace the hidden record." + else if SystemErrorCode == 0x20E9 + return "The hierarchy file is invalid." + else if SystemErrorCode == 0x20EA + return "The attempt to build the hierarchy table failed." + else if SystemErrorCode == 0x20EB + return "The directory configuration parameter is missing from the registry." + else if SystemErrorCode == 0x20EC + return "The attempt to count the address book indices failed." + else if SystemErrorCode == 0x20ED + return "The allocation of the hierarchy table failed." + else if SystemErrorCode == 0x20EE + return "The directory service encountered an internal failure." + else if SystemErrorCode == 0x20EF + return "The directory service encountered an unknown failure." + else if SystemErrorCode == 0x20F4 + return "The replication operation failed." + else if SystemErrorCode == 0x20F5 + return "An invalid parameter was specified for this replication operation." + else if SystemErrorCode == 0x20F6 + return "The directory service is too busy to complete the replication operation at this time." + else if SystemErrorCode == 0x20F7 + return "The distinguished name specified for this replication operation is invalid." + else if SystemErrorCode == 0x20F8 + return "The naming context specified for this replication operation is invalid." + else if SystemErrorCode == 0x20F9 + return "The distinguished name specified for this replication operation already exists." + else if SystemErrorCode == 0x20FA + return "The replication system encountered an internal error." + else if SystemErrorCode == 0x20FB + return "The replication operation encountered a database inconsistency." + else if SystemErrorCode == 0x20FC + return "The server specified for this replication operation could not be contacted." + else if SystemErrorCode == 0x20FD + return "The replication operation encountered an object with an invalid instance type." + else if SystemErrorCode == 0x20FE + return "The replication operation failed to allocate memory." + else if SystemErrorCode == 0x20FF + return "The replication operation encountered an error with the mail system." + else if SystemErrorCode == 0x2100 + return "The replication reference information for the target server already exists." + else if SystemErrorCode == 0x2101 + return "The replication reference information for the target server does not exist." + else if SystemErrorCode == 0x2102 + return "The naming context cannot be removed because it is replicated to another server." + else if SystemErrorCode == 0x2103 + return "The replication operation encountered a database error." + else if SystemErrorCode == 0x2104 + return "The naming context is in the process of being removed or is not replicated from the specified server." + else if SystemErrorCode == 0x2105 + return "Replication access was denied." + else if SystemErrorCode == 0x2106 + return "The requested operation is not supported by this version of the directory service." + else if SystemErrorCode == 0x2107 + return "The replication remote procedure call was cancelled." + else if SystemErrorCode == 0x2108 + return "The source server is currently rejecting replication requests." + else if SystemErrorCode == 0x2109 + return "The destination server is currently rejecting replication requests." + else if SystemErrorCode == 0x210A + return "The replication operation failed due to a collision of object names." + else if SystemErrorCode == 0x210B + return "The replication source has been reinstalled." + else if SystemErrorCode == 0x210C + return "The replication operation failed because a required parent object is missing." + else if SystemErrorCode == 0x210D + return "The replication operation was preempted." + else if SystemErrorCode == 0x210E + return "The replication synchronization attempt was abandoned because of a lack of updates." + else if SystemErrorCode == 0x210F + return "The replication operation was terminated because the system is shutting down." + else if SystemErrorCode == 0x2110 + return "Synchronization attempt failed because the destination DC is currently waiting to synchronize new partial attributes from source. This condition is normal if a recent schema change modified the partial attribute set. The destination partial attribute set is not a subset of source partial attribute set." + else if SystemErrorCode == 0x2111 + return "The replication synchronization attempt failed because a master replica attempted to sync from a partial replica." + else if SystemErrorCode == 0x2113 + return "The version of the directory service schema of the source forest is not compatible with the version of directory service on this computer." + else if SystemErrorCode == 0x211B + return "Modification of a constructed attribute is not allowed." + else if SystemErrorCode == 0x2120 + return "The requested search operation is only supported for base searches." + else if SystemErrorCode == 0x2121 + return "The search failed to retrieve attributes from the database." + else if SystemErrorCode == 0x2122 + return "The schema update operation tried to add a backward link attribute that has no corresponding forward link." + else if SystemErrorCode == 0x212A + return "Another operation which requires exclusive access to the PDC FSMO is already in progress." + else if SystemErrorCode == 0x2130 + return "Destination domain must be in native mode." + else if SystemErrorCode == 0x2131 + return "The operation cannot be performed because the server does not have an infrastructure container in the domain of interest." + else if SystemErrorCode == 0x2134 + return "The search flags for the attribute are invalid. The ANR bit is valid only on attributes of Unicode or Teletex strings." + else if SystemErrorCode == 0x2135 + return "Tree deletions starting at an object which has an NC head as a descendant are not allowed." + else if SystemErrorCode == 0x2136 + return "The directory service failed to lock a tree in preparation for a tree deletion because the tree was in use." + else if SystemErrorCode == 0x2137 + return "The directory service failed to identify the list of objects to delete while attempting a tree deletion." + else if SystemErrorCode == 0x2139 + return "Only an administrator can modify the membership list of an administrative group." + else if SystemErrorCode == 0x213A + return "Cannot change the primary group ID of a domain controller account." + else if SystemErrorCode == 0x213B + return "An attempt is made to modify the base schema." + else if SystemErrorCode == 0x213D + return "Schema update is not allowed on this DC because the DC is not the schema FSMO Role Owner." + else if SystemErrorCode == 0x2141 + return "The specified group type is invalid." + else if SystemErrorCode == 0x2144 + return "A global group cannot have a local group as a member." + else if SystemErrorCode == 0x2145 + return "A global group cannot have a universal group as a member." + else if SystemErrorCode == 0x2146 + return "A universal group cannot have a local group as a member." + else if SystemErrorCode == 0x2148 + return "A local group cannot have another cross domain local group as a member." + else if SystemErrorCode == 0x214C + return "The DSA operation is unable to proceed because of a DNS lookup failure." + else if SystemErrorCode == 0x214E + return "The Security Descriptor attribute could not be read." + else if SystemErrorCode == 0x2151 + return "Security Account Manager needs to get the boot password." + else if SystemErrorCode == 0x2152 + return "Security Account Manager needs to get the boot key from floppy disk." + else if SystemErrorCode == 0x2153 + return "Directory Service cannot start." + else if SystemErrorCode == 0x2154 + return "Directory Services could not start." + else if SystemErrorCode == 0x2155 + return "The connection between client and server requires packet privacy or better." + else if SystemErrorCode == 0x2156 + return "The source domain may not be in the same forest as destination." + else if SystemErrorCode == 0x2157 + return "The destination domain must be in the forest." + else if SystemErrorCode == 0x2158 + return "The operation requires that destination domain auditing be enabled." + else if SystemErrorCode == 0x215A + return "The source object must be a group or user." + else if SystemErrorCode == 0x215C + return "The source and destination object must be of the same type." + else if SystemErrorCode == 0x215E + return "Schema information could not be included in the replication request." + else if SystemErrorCode == 0x215F + return "The replication operation could not be completed due to a schema incompatibility." + else if SystemErrorCode == 0x2160 + return "The replication operation could not be completed due to a previous schema incompatibility." + else if SystemErrorCode == 0x2162 + return "The requested domain could not be deleted because there exist domain controllers that still host this domain." + else if SystemErrorCode == 0x2163 + return "The requested operation can be performed only on a global catalog server." + else if SystemErrorCode == 0x2164 + return "A local group can only be a member of other local groups in the same domain." + else if SystemErrorCode == 0x2165 + return "Foreign security principals cannot be members of universal groups." + else if SystemErrorCode == 0x2166 + return "The attribute is not allowed to be replicated to the GC because of security reasons." + else if SystemErrorCode == 0x2167 + return "The checkpoint with the PDC could not be taken because there too many modifications being processed currently." + else if SystemErrorCode == 0x2168 + return "The operation requires that source domain auditing be enabled." + else if SystemErrorCode == 0x2169 + return "Security principal objects can only be created inside domain naming contexts." + else if SystemErrorCode == 0x216B + return "A Filter was passed that uses constructed attributes." + else if SystemErrorCode == 0x216C + return "The unicodePwd attribute value must be enclosed in double quotes." + else if SystemErrorCode == 0x216D + return "Your computer could not be joined to the domain. You have exceeded the maximum number of computer accounts you are allowed to create in this domain. Contact your system administrator to have this limit reset or increased." + else if SystemErrorCode == 0x2170 + return "Critical Directory Service System objects cannot be deleted during tree delete operations. The tree delete may have been partially performed." + else if SystemErrorCode == 0x2173 + return "The version of the operating system is incompatible with the current AD DS forest functional level or AD LDS Configuration Set functional level. You must upgrade to a new version of the operating system before this server can become an AD DS Domain Controller or add an AD LDS Instance in this AD DS Forest or AD LDS Configuration Set." + else if SystemErrorCode == 0x2174 + return "The version of the operating system installed is incompatible with the current domain functional level. You must upgrade to a new version of the operating system before this server can become a domain controller in this domain." + else if SystemErrorCode == 0x2175 + return "The version of the operating system installed on this server no longer supports the current AD DS Forest functional level or AD LDS Configuration Set functional level. You must raise the AD DS Forest functional level or AD LDS Configuration Set functional level before this server can become an AD DS Domain Controller or an AD LDS Instance in this Forest or Configuration Set." + else if SystemErrorCode == 0x2176 + return "The version of the operating system installed on this server no longer supports the current domain functional level. You must raise the domain functional level before this server can become a domain controller in this domain." + else if SystemErrorCode == 0x2177 + return "The version of the operating system installed on this server is incompatible with the functional level of the domain or forest." + else if SystemErrorCode == 0x217A + return "The sort order requested is not supported." + else if SystemErrorCode == 0x217B + return "The requested name already exists as a unique identifier." + else if SystemErrorCode == 0x217D + return "The database is out of version store." + else if SystemErrorCode == 0x217E + return "Unable to continue operation because multiple conflicting controls were used." + else if SystemErrorCode == 0x217F + return "Unable to find a valid security descriptor reference domain for this partition." + else if SystemErrorCode == 0x2182 + return "An account group cannot have a universal group as a member." + else if SystemErrorCode == 0x2184 + return "Move operations on objects in the schema naming context are not allowed." + else if SystemErrorCode == 0x2185 + return "A system flag has been set on the object and does not allow the object to be moved or renamed." + else if SystemErrorCode == 0x2188 + return "The requested action is not supported on standard server." + else if SystemErrorCode == 0x2189 + return "Could not access a partition of the directory service located on a remote server. Make sure at least one server is running for the partition in question." + else if SystemErrorCode == 0x218B + return "The thread limit for this request was exceeded." + else if SystemErrorCode == 0x218C + return "The Global catalog server is not in the closest site." + else if SystemErrorCode == 0x218E + return "The Directory Service failed to enter single user mode." + else if SystemErrorCode == 0x218F + return "The Directory Service cannot parse the script because of a syntax error." + else if SystemErrorCode == 0x2190 + return "The Directory Service cannot process the script because of an error." + else if SystemErrorCode == 0x2192 + return "The directory service binding must be renegotiated due to a change in the server extensions information." + else if SystemErrorCode == 0x2193 + return "Operation not allowed on a disabled cross ref." + else if SystemErrorCode == 0x2197 + return "The directory service failed to authorize the request." + else if SystemErrorCode == 0x2198 + return "The Directory Service cannot process the script because it is invalid." + else if SystemErrorCode == 0x219A + return "A cross reference is in use locally with the same name." + else if SystemErrorCode == 0x219C + return "Writeable NCs prevent this DC from demoting." + else if SystemErrorCode == 0x219E + return "Insufficient attributes were given to create an object. This object may not exist because it may have been deleted and already garbage collected." + else if SystemErrorCode == 0x219F + return "The group cannot be converted due to attribute restrictions on the requested group type." + else if SystemErrorCode == 0x21A2 + return "The FSMO role ownership could not be verified because its directory partition has not replicated successfully with at least one replication partner." + else if SystemErrorCode == 0x21A3 + return "The target container for a redirection of a well known object container cannot already be a special container." + else if SystemErrorCode == 0x21A4 + return "The Directory Service cannot perform the requested operation because a domain rename operation is in progress." + else if SystemErrorCode == 0x21A5 + return "The directory service detected a child partition below the requested partition name. The partition hierarchy must be created in a top down method." + else if SystemErrorCode == 0x21A6 + return "The directory service cannot replicate with this server because the time since the last replication with this server has exceeded the tombstone lifetime." + else if SystemErrorCode == 0x21A7 + return "The requested operation is not allowed on an object under the system container." + else if SystemErrorCode == 0x21A8 + return "The LDAP servers network send queue has filled up because the client is not processing the results of its requests fast enough. No more requests will be processed until the client catches up. If the client does not catch up then it will be disconnected." + else if SystemErrorCode == 0x21A9 + return "The scheduled replication did not take place because the system was too busy to execute the request within the schedule window. The replication queue is overloaded. Consider reducing the number of partners or decreasing the scheduled replication frequency." + else if SystemErrorCode == 0x21AB + return "The site settings object for the specified site does not exist." + else if SystemErrorCode == 0x21AC + return "The local account store does not contain secret material for the specified account." + else if SystemErrorCode == 0x21AD + return "Could not find a writable domain controller in the domain." + else if SystemErrorCode == 0x21AE + return "The server object for the domain controller does not exist." + else if SystemErrorCode == 0x21AF + return "The NTDS Settings object for the domain controller does not exist." + else if SystemErrorCode == 0x21B0 + return "The requested search operation is not supported for ASQ searches." + else if SystemErrorCode == 0x21B1 + return "A required audit event could not be generated for the operation." + else if SystemErrorCode == 0x21B2 + return "The search flags for the attribute are invalid. The subtree index bit is valid only on single valued attributes." + else if SystemErrorCode == 0x21B3 + return "The search flags for the attribute are invalid. The tuple index bit is valid only on attributes of Unicode strings." + else if SystemErrorCode == 0x21B4 + return "The address books are nested too deeply. Failed to build the hierarchy table." + else if SystemErrorCode == 0x21B6 + return "The request to replicate secrets is denied." + else if SystemErrorCode == 0x21B9 + return "The replication operation failed because the required attributes of the local krbtgt object are missing." + else if SystemErrorCode == 0x21BA + return "The domain name of the trusted domain already exists in the forest." + else if SystemErrorCode == 0x21BB + return "The flat name of the trusted domain already exists in the forest." + else if SystemErrorCode == 0x21BD + return "OID mapped groups cannot have members." + else if SystemErrorCode == 0x21BE + return "The specified OID cannot be found." + else if SystemErrorCode == 0x21BF + return "The replication operation failed because the target object referred by a link value is recycled." + else if SystemErrorCode == 0x21C0 + return "The redirect operation failed because the target object is in a NC different from the domain NC of the current domain controller." + else if SystemErrorCode == 0x21C1 + return "The functional level of the AD LDS configuration set cannot be lowered to the requested value." + else if SystemErrorCode == 0x21C5 + return "The undelete operation failed because the Sam Account Name or Additional Sam Account Name of the object being undeleted conflicts with an existing live object." + else if SystemErrorCode == 0x2329 + return "DNS server unable to interpret format." + else if SystemErrorCode == 0x232A + return "DNS server failure." + else if SystemErrorCode == 0x232B + return "DNS name does not exist." + else if SystemErrorCode == 0x232C + return "DNS request not supported by name server." + else if SystemErrorCode == 0x232D + return "DNS operation refused." + else if SystemErrorCode == 0x2331 + return "DNS server not authoritative for zone." + else if SystemErrorCode == 0x2332 + return "DNS name in update or prereq is not in zone." + else if SystemErrorCode == 0x2338 + return "DNS signature failed to verify." + else if SystemErrorCode == 0x2339 + return "DNS bad key." + else if SystemErrorCode == 0x233A + return "DNS signature validity expired." + else if SystemErrorCode == 0x238D + return "Only the DNS server acting as the key master for the zone may perform this operation." + else if SystemErrorCode == 0x238E + return "This operation is not allowed on a zone that is signed or has signing keys." + else if SystemErrorCode == 0x2391 + return "The specified algorithm is not supported." + else if SystemErrorCode == 0x2392 + return "The specified key size is not supported." + else if SystemErrorCode == 0x2393 + return "One or more of the signing keys for a zone are not accessible to the DNS server. Zone signing will not be operational until this error is resolved." + else if SystemErrorCode == 0x2396 + return "An unexpected crypto error was encountered. Zone signing may not be operational until this error is resolved." + else if SystemErrorCode == 0x2397 + return "The DNS server encountered a signing key with an unknown version. Zone signing will not be operational until this error is resolved." + else if SystemErrorCode == 0x2398 + return "The specified key service provider cannot be opened by the DNS server." + else if SystemErrorCode == 0x2399 + return "The DNS server cannot accept any more signing keys with the specified algorithm and KSK flag value for this zone." + else if SystemErrorCode == 0x239A + return "The specified rollover period is invalid." + else if SystemErrorCode == 0x239B + return "The specified initial rollover offset is invalid." + else if SystemErrorCode == 0x239C + return "The specified signing key is already in process of rolling over keys." + else if SystemErrorCode == 0x239D + return "The specified signing key does not have a standby key to revoke." + else if SystemErrorCode == 0x239F + return "This operation is not allowed on an active signing key." + else if SystemErrorCode == 0x23A0 + return "The specified signing key is already queued for rollover." + else if SystemErrorCode == 0x23A1 + return "This operation is not allowed on an unsigned zone." + else if SystemErrorCode == 0x23A2 + return "This operation could not be completed because the DNS server listed as the current key master for this zone is down or misconfigured. Resolve the problem on the current key master for this zone or use another DNS server to seize the key master role." + else if SystemErrorCode == 0x23A3 + return "The specified signature validity period is invalid." + else if SystemErrorCode == 0x23A4 + return "The specified NSEC3 iteration count is higher than allowed by the minimum key length used in the zone." + else if SystemErrorCode == 0x23A5 + return "This operation could not be completed because the DNS server has been configured with DNSSEC features disabled. Enable DNSSEC on the DNS server." + else if SystemErrorCode == 0x23A6 + return "This operation could not be completed because the XML stream received is empty or syntactically invalid." + else if SystemErrorCode == 0x23A8 + return "The specified signing key is not waiting for parental DS update." + else if SystemErrorCode == 0x251D + return "No records found for given DNS query." + else if SystemErrorCode == 0x251E + return "Bad DNS packet." + else if SystemErrorCode == 0x251F + return "No DNS packet." + else if SystemErrorCode == 0x2521 + return "Unsecured DNS packet." + else if SystemErrorCode == 0x2522 + return "DNS query request is pending." + else if SystemErrorCode == 0x254F + return "Invalid DNS type." + else if SystemErrorCode == 0x2550 + return "Invalid IP address." + else if SystemErrorCode == 0x2551 + return "Invalid property." + else if SystemErrorCode == 0x2552 + return "Try DNS operation again later." + else if SystemErrorCode == 0x2553 + return "Record for given name and type is not unique." + else if SystemErrorCode == 0x2554 + return "DNS name does not comply with RFC specifications." + else if SystemErrorCode == 0x2558 + return "DNS name contains an invalid character." + else if SystemErrorCode == 0x2559 + return "DNS name is entirely numeric." + else if SystemErrorCode == 0x255A + return "The operation requested is not permitted on a DNS root server." + else if SystemErrorCode == 0x255B + return "The record could not be created because this part of the DNS namespace has been delegated to another server." + else if SystemErrorCode == 0x255C + return "The DNS server could not find a set of root hints." + else if SystemErrorCode == 0x255D + return "The DNS server found root hints but they were not consistent across all adapters." + else if SystemErrorCode == 0x255E + return "The specified value is too small for this parameter." + else if SystemErrorCode == 0x255F + return "The specified value is too large for this parameter." + else if SystemErrorCode == 0x2560 + return "This operation is not allowed while the DNS server is loading zones in the background. Please try again later." + else if SystemErrorCode == 0x2562 + return "No data is allowed to exist underneath a DNAME record." + else if SystemErrorCode == 0x2563 + return "This operation requires credentials delegation." + else if SystemErrorCode == 0x2564 + return "Name resolution policy table has been corrupted. DNS resolution will fail until it is fixed. Contact your network administrator." + else if SystemErrorCode == 0x2581 + return "DNS zone does not exist." + else if SystemErrorCode == 0x2582 + return "DNS zone information not available." + else if SystemErrorCode == 0x2583 + return "Invalid operation for DNS zone." + else if SystemErrorCode == 0x2584 + return "Invalid DNS zone configuration." + else if SystemErrorCode == 0x2587 + return "DNS zone is locked." + else if SystemErrorCode == 0x2588 + return "DNS zone creation failed." + else if SystemErrorCode == 0x2589 + return "DNS zone already exists." + else if SystemErrorCode == 0x258A + return "DNS automatic zone already exists." + else if SystemErrorCode == 0x258B + return "Invalid DNS zone type." + else if SystemErrorCode == 0x258C + return "Secondary DNS zone requires master IP address." + else if SystemErrorCode == 0x258D + return "DNS zone not secondary." + else if SystemErrorCode == 0x258E + return "Need secondary IP address." + else if SystemErrorCode == 0x258F + return "WINS initialization failed." + else if SystemErrorCode == 0x2590 + return "Need WINS servers." + else if SystemErrorCode == 0x2591 + return "NBTSTAT initialization call failed." + else if SystemErrorCode == 0x2593 + return "A conditional forwarding zone already exists for that name." + else if SystemErrorCode == 0x2594 + return "This zone must be configured with one or more master DNS server IP addresses." + else if SystemErrorCode == 0x2595 + return "The operation cannot be performed because this zone is shut down." + else if SystemErrorCode == 0x2596 + return "This operation cannot be performed because the zone is currently being signed. Please try again later." + else if SystemErrorCode == 0x25B3 + return "Primary DNS zone requires datafile." + else if SystemErrorCode == 0x25B4 + return "Invalid datafile name for DNS zone." + else if SystemErrorCode == 0x25B5 + return "Failed to open datafile for DNS zone." + else if SystemErrorCode == 0x25B6 + return "Failed to write datafile for DNS zone." + else if SystemErrorCode == 0x25B7 + return "Failure while reading datafile for DNS zone." + else if SystemErrorCode == 0x25E5 + return "DNS record does not exist." + else if SystemErrorCode == 0x25E6 + return "DNS record format error." + else if SystemErrorCode == 0x25E7 + return "Node creation failure in DNS." + else if SystemErrorCode == 0x25E8 + return "Unknown DNS record type." + else if SystemErrorCode == 0x25E9 + return "DNS record timed out." + else if SystemErrorCode == 0x25EA + return "Name not in DNS zone." + else if SystemErrorCode == 0x25EB + return "CNAME loop detected." + else if SystemErrorCode == 0x25EC + return "Node is a CNAME DNS record." + else if SystemErrorCode == 0x25ED + return "A CNAME record already exists for given name." + else if SystemErrorCode == 0x25EE + return "Record only at DNS zone root." + else if SystemErrorCode == 0x25EF + return "DNS record already exists." + else if SystemErrorCode == 0x25F0 + return "Secondary DNS zone data error." + else if SystemErrorCode == 0x25F1 + return "Could not create DNS cache data." + else if SystemErrorCode == 0x25F2 + return "DNS name does not exist." + else if SystemErrorCode == 0x25F4 + return "DNS domain was undeleted." + else if SystemErrorCode == 0x25F5 + return "The directory service is unavailable." + else if SystemErrorCode == 0x25F6 + return "DNS zone already exists in the directory service." + else if SystemErrorCode == 0x25F7 + return "DNS server not creating or reading the boot file for the directory service integrated DNS zone." + else if SystemErrorCode == 0x25F8 + return "Node is a DNAME DNS record." + else if SystemErrorCode == 0x25F9 + return "A DNAME record already exists for given name." + else if SystemErrorCode == 0x25FA + return "An alias loop has been detected with either CNAME or DNAME records." + else if SystemErrorCode == 0x2618 + return "DNS zone transfer failed." + else if SystemErrorCode == 0x2619 + return "Added local WINS server." + else if SystemErrorCode == 0x2649 + return "Secure update call needs to continue update request." + else if SystemErrorCode == 0x267C + return "No DNS servers configured for local system." + else if SystemErrorCode == 0x26AD + return "The specified directory partition does not exist." + else if SystemErrorCode == 0x26AE + return "The specified directory partition already exists." + else if SystemErrorCode == 0x26AF + return "This DNS server is not enlisted in the specified directory partition." + else if SystemErrorCode == 0x26B0 + return "This DNS server is already enlisted in the specified directory partition." + else if SystemErrorCode == 0x26B1 + return "The directory partition is not available at this time. Please wait a few minutes and try again." + else if SystemErrorCode == 0x26B2 + return "The operation failed because the domain naming master FSMO role could not be reached. The domain controller holding the domain naming master FSMO role is down or unable to service the request or is not running Windows Server 2003 or later." + else if SystemErrorCode == 0x2714 + return "A blocking operation was interrupted by a call to WSACancelBlockingCall." + else if SystemErrorCode == 0x2719 + return "The file handle supplied is not valid." + else if SystemErrorCode == 0x271D + return "An attempt was made to access a socket in a way forbidden by its access permissions." + else if SystemErrorCode == 0x271E + return "The system detected an invalid pointer address in attempting to use a pointer argument in a call." + else if SystemErrorCode == 0x2726 + return "An invalid argument was supplied." + else if SystemErrorCode == 0x2728 + return "Too many open sockets." + else if SystemErrorCode == 0x2734 + return "A blocking operation is currently executing." + else if SystemErrorCode == 0x2736 + return "An operation was attempted on something that is not a socket." + else if SystemErrorCode == 0x2737 + return "A required address was omitted from an operation on a socket." + else if SystemErrorCode == 0x2739 + return "A protocol was specified in the socket function call that does not support the semantics of the socket type requested." + else if SystemErrorCode == 0x273C + return "The support for the specified socket type does not exist in this address family." + else if SystemErrorCode == 0x273D + return "The attempted operation is not supported for the type of object referenced." + else if SystemErrorCode == 0x273E + return "The protocol family has not been configured into the system or no implementation for it exists." + else if SystemErrorCode == 0x273F + return "An address incompatible with the requested protocol was used." + else if SystemErrorCode == 0x2741 + return "The requested address is not valid in its context." + else if SystemErrorCode == 0x2742 + return "A socket operation encountered a dead network." + else if SystemErrorCode == 0x2743 + return "A socket operation was attempted to an unreachable network." + else if SystemErrorCode == 0x2745 + return "An established connection was aborted by the software in your host machine." + else if SystemErrorCode == 0x2746 + return "An existing connection was forcibly closed by the remote host." + else if SystemErrorCode == 0x2747 + return "An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full." + else if SystemErrorCode == 0x2748 + return "A connect request was made on an already connected socket." + else if SystemErrorCode == 0x274A + return "A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call." + else if SystemErrorCode == 0x274B + return "Too many references to some kernel object." + else if SystemErrorCode == 0x274D + return "No connection could be made because the target machine actively refused it." + else if SystemErrorCode == 0x274E + return "Cannot translate name." + else if SystemErrorCode == 0x274F + return "Name component or name was too long." + else if SystemErrorCode == 0x2750 + return "A socket operation failed because the destination host was down." + else if SystemErrorCode == 0x2751 + return "A socket operation was attempted to an unreachable host." + else if SystemErrorCode == 0x2752 + return "Cannot remove a directory that is not empty." + else if SystemErrorCode == 0x2753 + return "A Windows Sockets implementation may have a limit on the number of applications that may use it simultaneously." + else if SystemErrorCode == 0x2754 + return "Ran out of quota." + else if SystemErrorCode == 0x2755 + return "Ran out of disk quota." + else if SystemErrorCode == 0x2756 + return "File handle reference is no longer available." + else if SystemErrorCode == 0x2757 + return "Item is not available locally." + else if SystemErrorCode == 0x276B + return "WSAStartup cannot function at this time because the underlying system it uses to provide network services is currently unavailable." + else if SystemErrorCode == 0x276C + return "The Windows Sockets version requested is not supported." + else if SystemErrorCode == 0x2775 + return "Returned by WSARecv or WSARecvFrom to indicate the remote party has initiated a graceful shutdown sequence." + else if SystemErrorCode == 0x2776 + return "No more results can be returned by WSALookupServiceNext." + else if SystemErrorCode == 0x2777 + return "A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled." + else if SystemErrorCode == 0x2778 + return "The procedure call table is invalid." + else if SystemErrorCode == 0x2779 + return "The requested service provider is invalid." + else if SystemErrorCode == 0x277A + return "The requested service provider could not be loaded or initialized." + else if SystemErrorCode == 0x277B + return "A system call has failed." + else if SystemErrorCode == 0x277C + return "No such service is known. The service cannot be found in the specified name space." + else if SystemErrorCode == 0x277D + return "The specified class was not found." + else if SystemErrorCode == 0x277E + return "No more results can be returned by WSALookupServiceNext." + else if SystemErrorCode == 0x277F + return "A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled." + else if SystemErrorCode == 0x2780 + return "A database query failed because it was actively refused." + else if SystemErrorCode == 0x2AF9 + return "No such host is known." + else if SystemErrorCode == 0x2AFA + return "This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server." + else if SystemErrorCode == 0x2AFD + return "At least one reserve has arrived." + else if SystemErrorCode == 0x2AFE + return "At least one path has arrived." + else if SystemErrorCode == 0x2AFF + return "There are no senders." + else if SystemErrorCode == 0x2B00 + return "There are no receivers." + else if SystemErrorCode == 0x2B01 + return "Reserve has been confirmed." + else if SystemErrorCode == 0x2B02 + return "Error due to lack of resources." + else if SystemErrorCode == 0x2B04 + return "Unknown or conflicting style." + else if SystemErrorCode == 0x2B05 + return "Problem with some part of the filterspec or providerspecific buffer in general." + else if SystemErrorCode == 0x2B06 + return "Problem with some part of the flowspec." + else if SystemErrorCode == 0x2B07 + return "General QOS error." + else if SystemErrorCode == 0x2B08 + return "An invalid or unrecognized service type was found in the flowspec." + else if SystemErrorCode == 0x2B09 + return "An invalid or inconsistent flowspec was found in the QOS structure." + else if SystemErrorCode == 0x2B0B + return "An invalid QOS filter style was used." + else if SystemErrorCode == 0x2B0C + return "An invalid QOS filter type was used." + else if SystemErrorCode == 0x2B0D + return "An incorrect number of QOS FILTERSPECs were specified in the FLOWDESCRIPTOR." + else if SystemErrorCode == 0x2B0F + return "An incorrect number of flow descriptors was specified in the QOS structure." + else if SystemErrorCode == 0x2B12 + return "An invalid QOS flow descriptor was found in the flow descriptor list." + else if SystemErrorCode == 0x2B13 + return "An invalid or inconsistent flowspec was found in the QOS provider specific buffer." + else if SystemErrorCode == 0x2B15 + return "An invalid shape discard mode object was found in the QOS provider specific buffer." + else if SystemErrorCode == 0x2B18 + return "No such host is known securely." + else if SystemErrorCode == 0x2B19 + return "Name based IPSEC policy could not be added." + else if SystemErrorCode == 0x32C8 + return "The specified quick mode policy already exists." + else if SystemErrorCode == 0x32C9 + return "The specified quick mode policy was not found." + else if SystemErrorCode == 0x32CA + return "The specified quick mode policy is being used." + else if SystemErrorCode == 0x32CB + return "The specified main mode policy already exists." + else if SystemErrorCode == 0x32CC + return "The specified main mode policy was not found." + else if SystemErrorCode == 0x32CD + return "The specified main mode policy is being used." + else if SystemErrorCode == 0x32CE + return "The specified main mode filter already exists." + else if SystemErrorCode == 0x32CF + return "The specified main mode filter was not found." + else if SystemErrorCode == 0x32D0 + return "The specified transport mode filter already exists." + else if SystemErrorCode == 0x32D1 + return "The specified transport mode filter does not exist." + else if SystemErrorCode == 0x32D2 + return "The specified main mode authentication list exists." + else if SystemErrorCode == 0x32D3 + return "The specified main mode authentication list was not found." + else if SystemErrorCode == 0x32D4 + return "The specified main mode authentication list is being used." + else if SystemErrorCode == 0x32D5 + return "The specified default main mode policy was not found." + else if SystemErrorCode == 0x32D6 + return "The specified default main mode authentication list was not found." + else if SystemErrorCode == 0x32D7 + return "The specified default quick mode policy was not found." + else if SystemErrorCode == 0x32D8 + return "The specified tunnel mode filter exists." + else if SystemErrorCode == 0x32D9 + return "The specified tunnel mode filter was not found." + else if SystemErrorCode == 0x32DA + return "The Main Mode filter is pending deletion." + else if SystemErrorCode == 0x32DB + return "The transport filter is pending deletion." + else if SystemErrorCode == 0x32DC + return "The tunnel filter is pending deletion." + else if SystemErrorCode == 0x32DD + return "The Main Mode policy is pending deletion." + else if SystemErrorCode == 0x32DE + return "The Main Mode authentication bundle is pending deletion." + else if SystemErrorCode == 0x32DF + return "The Quick Mode policy is pending deletion." + else if SystemErrorCode == 0x35E8 + return "ERROR_IPSEC_IKE_NEG_STATUS_BEGIN" + else if SystemErrorCode == 0x35E9 + return "IKE authentication credentials are unacceptable." + else if SystemErrorCode == 0x35EA + return "IKE security attributes are unacceptable." + else if SystemErrorCode == 0x35EB + return "IKE Negotiation in progress." + else if SystemErrorCode == 0x35EC + return "General processing error." + else if SystemErrorCode == 0x35ED + return "Negotiation timed out." + else if SystemErrorCode == 0x35EE + return "IKE failed to find valid machine certificate. Contact your Network Security Administrator about installing a valid certificate in the appropriate Certificate Store." + else if SystemErrorCode == 0x35EF + return "IKE SA deleted by peer before establishment completed." + else if SystemErrorCode == 0x35F0 + return "IKE SA deleted before establishment completed." + else if SystemErrorCode == 0x35F1 + return "Negotiation request sat in Queue too long." + else if SystemErrorCode == 0x35F2 + return "Negotiation request sat in Queue too long." + else if SystemErrorCode == 0x35F3 + return "Negotiation request sat in Queue too long." + else if SystemErrorCode == 0x35F4 + return "Negotiation request sat in Queue too long." + else if SystemErrorCode == 0x35F5 + return "No response from peer." + else if SystemErrorCode == 0x35F6 + return "Negotiation took too long." + else if SystemErrorCode == 0x35F7 + return "Negotiation took too long." + else if SystemErrorCode == 0x35F8 + return "Unknown error occurred." + else if SystemErrorCode == 0x35F9 + return "Certificate Revocation Check failed." + else if SystemErrorCode == 0x35FA + return "Invalid certificate key usage." + else if SystemErrorCode == 0x35FB + return "Invalid certificate type." + else if SystemErrorCode == 0x35FC + return "IKE negotiation failed because the machine certificate used does not have a private key. IPsec certificates require a private key. Contact your Network Security administrator about replacing with a certificate that has a private key." + else if SystemErrorCode == 0x35FD + return "Simultaneous rekeys were detected." + else if SystemErrorCode == 0x3600 + return "Invalid header." + else if SystemErrorCode == 0x3601 + return "No policy configured." + else if SystemErrorCode == 0x3602 + return "Failed to verify signature." + else if SystemErrorCode == 0x3603 + return "Failed to authenticate using Kerberos." + else if SystemErrorCode == 0x3605 + return "Error processing error payload." + else if SystemErrorCode == 0x3606 + return "Error processing SA payload." + else if SystemErrorCode == 0x3607 + return "Error processing Proposal payload." + else if SystemErrorCode == 0x3608 + return "Error processing Transform payload." + else if SystemErrorCode == 0x3609 + return "Error processing KE payload." + else if SystemErrorCode == 0x360A + return "Error processing ID payload." + else if SystemErrorCode == 0x360B + return "Error processing Cert payload." + else if SystemErrorCode == 0x360C + return "Error processing Certificate Request payload." + else if SystemErrorCode == 0x360D + return "Error processing Hash payload." + else if SystemErrorCode == 0x360E + return "Error processing Signature payload." + else if SystemErrorCode == 0x360F + return "Error processing Nonce payload." + else if SystemErrorCode == 0x3610 + return "Error processing Notify payload." + else if SystemErrorCode == 0x3611 + return "Error processing Delete Payload." + else if SystemErrorCode == 0x3612 + return "Error processing VendorId payload." + else if SystemErrorCode == 0x3613 + return "Invalid payload received." + else if SystemErrorCode == 0x3614 + return "Soft SA loaded." + else if SystemErrorCode == 0x3615 + return "Soft SA torn down." + else if SystemErrorCode == 0x3616 + return "Invalid cookie received." + else if SystemErrorCode == 0x3617 + return "Peer failed to send valid machine certificate." + else if SystemErrorCode == 0x3619 + return "New policy invalidated SAs formed with old policy." + else if SystemErrorCode == 0x361A + return "There is no available Main Mode IKE policy." + else if SystemErrorCode == 0x361B + return "Failed to enabled TCB privilege." + else if SystemErrorCode == 0x361C + return "Failed to load SECURITY.DLL." + else if SystemErrorCode == 0x361D + return "Failed to obtain security function table dispatch address from SSPI." + else if SystemErrorCode == 0x361E + return "Failed to query Kerberos package to obtain max token size." + else if SystemErrorCode == 0x3621 + return "Failed to obtain new SPI for the inbound SA from IPsec driver. The most common cause for this is that the driver does not have the correct filter. Check your policy to verify the filters." + else if SystemErrorCode == 0x3622 + return "Given filter is invalid." + else if SystemErrorCode == 0x3623 + return "Memory allocation failed." + else if SystemErrorCode == 0x3625 + return "Invalid policy." + else if SystemErrorCode == 0x3626 + return "Invalid DOI." + else if SystemErrorCode == 0x3627 + return "Invalid situation." + else if SystemErrorCode == 0x362A + return "Error encrypting payload." + else if SystemErrorCode == 0x362B + return "Error decrypting payload." + else if SystemErrorCode == 0x362C + return "Policy match error." + else if SystemErrorCode == 0x362D + return "Unsupported ID." + else if SystemErrorCode == 0x362E + return "Hash verification failed." + else if SystemErrorCode == 0x362F + return "Invalid hash algorithm." + else if SystemErrorCode == 0x3630 + return "Invalid hash size." + else if SystemErrorCode == 0x3631 + return "Invalid encryption algorithm." + else if SystemErrorCode == 0x3632 + return "Invalid authentication algorithm." + else if SystemErrorCode == 0x3633 + return "Invalid certificate signature." + else if SystemErrorCode == 0x3634 + return "Load failed." + else if SystemErrorCode == 0x3635 + return "Deleted via RPC call." + else if SystemErrorCode == 0x3636 + return "Temporary state created to perform reinitialization. This is not a real failure." + else if SystemErrorCode == 0x3637 + return "The lifetime value received in the Responder Lifetime Notify is below the Windows 2000 configured minimum value. Please fix the policy on the peer machine." + else if SystemErrorCode == 0x3638 + return "The recipient cannot handle version of IKE specified in the header." + else if SystemErrorCode == 0x3639 + return "Key length in certificate is too small for configured security requirements." + else if SystemErrorCode == 0x363A + return "Max number of established MM SAs to peer exceeded." + else if SystemErrorCode == 0x363B + return "IKE received a policy that disables negotiation." + else if SystemErrorCode == 0x363C + return "Reached maximum quick mode limit for the main mode. New main mode will be started." + else if SystemErrorCode == 0x363D + return "Main mode SA lifetime expired or peer sent a main mode delete." + else if SystemErrorCode == 0x363E + return "Main mode SA assumed to be invalid because peer stopped responding." + else if SystemErrorCode == 0x3640 + return "Received unexpected message ID." + else if SystemErrorCode == 0x3641 + return "Received invalid authentication offers." + else if SystemErrorCode == 0x3642 + return "Sent DoS cookie notify to initiator." + else if SystemErrorCode == 0x3643 + return "IKE service is shutting down." + else if SystemErrorCode == 0x3644 + return "Could not verify binding between CGA address and certificate." + else if SystemErrorCode == 0x3645 + return "Error processing NatOA payload." + else if SystemErrorCode == 0x3646 + return "Parameters of the main mode are invalid for this quick mode." + else if SystemErrorCode == 0x3647 + return "Quick mode SA was expired by IPsec driver." + else if SystemErrorCode == 0x3648 + return "Too many dynamically added IKEEXT filters were detected." + else if SystemErrorCode == 0x3649 + return "ERROR_IPSEC_IKE_NEG_STATUS_END" + else if SystemErrorCode == 0x364A + return "NAP reauth succeeded and must delete the dummy NAP IKEv2 tunnel." + else if SystemErrorCode == 0x364B + return "Error in assigning inner IP address to initiator in tunnel mode." + else if SystemErrorCode == 0x364C + return "Require configuration payload missing." + else if SystemErrorCode == 0x364D + return "A negotiation running as the security principle who issued the connection is in progress." + else if SystemErrorCode == 0x364F + return "Incoming SA request was dropped due to peer IP address rate limiting." + else if SystemErrorCode == 0x3650 + return "Peer does not support MOBIKE." + else if SystemErrorCode == 0x3651 + return "SA establishment is not authorized." + else if SystemErrorCode == 0x3653 + return "SA establishment is not authorized.  You may need to enter updated or different credentials such as a smartcard." + else if SystemErrorCode == 0x3655 + return "ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END" + else if SystemErrorCode == 0x3656 + return "The SPI in the packet does not match a valid IPsec SA." + else if SystemErrorCode == 0x3657 + return "Packet was received on an IPsec SA whose lifetime has expired." + else if SystemErrorCode == 0x3658 + return "Packet was received on an IPsec SA that does not match the packet characteristics." + else if SystemErrorCode == 0x3659 + return "Packet sequence number replay check failed." + else if SystemErrorCode == 0x365B + return "IPsec integrity check failed." + else if SystemErrorCode == 0x365C + return "IPsec dropped a clear text packet." + else if SystemErrorCode == 0x365D + return "IPsec dropped an incoming ESP packet in authenticated firewall mode. This drop is benign." + else if SystemErrorCode == 0x365E + return "IPsec dropped a packet due to DoS throttling." + else if SystemErrorCode == 0x3665 + return "IPsec DoS Protection matched an explicit block rule." + else if SystemErrorCode == 0x3666 + return "IPsec DoS Protection received an IPsec specific multicast packet which is not allowed." + else if SystemErrorCode == 0x3667 + return "IPsec DoS Protection received an incorrectly formatted packet." + else if SystemErrorCode == 0x3668 + return "IPsec DoS Protection failed to look up state." + else if SystemErrorCode == 0x3669 + return "IPsec DoS Protection failed to create state because the maximum number of entries allowed by policy has been reached." + else if SystemErrorCode == 0x366A + return "IPsec DoS Protection received an IPsec negotiation packet for a keying module which is not allowed by policy." + else if SystemErrorCode == 0x366B + return "IPsec DoS Protection has not been enabled." + else if SystemErrorCode == 0x366C + return "IPsec DoS Protection failed to create a per internal IP rate limit queue because the maximum number of queues allowed by policy has been reached." + else if SystemErrorCode == 0x36B0 + return "The requested section was not present in the activation context." + else if SystemErrorCode == 0x36B2 + return "The application binding data format is invalid." + else if SystemErrorCode == 0x36B3 + return "The referenced assembly is not installed on your system." + else if SystemErrorCode == 0x36B4 + return "The manifest file does not begin with the required tag and format information." + else if SystemErrorCode == 0x36B5 + return "The manifest file contains one or more syntax errors." + else if SystemErrorCode == 0x36B6 + return "The application attempted to activate a disabled activation context." + else if SystemErrorCode == 0x36B7 + return "The requested lookup key was not found in any active activation context." + else if SystemErrorCode == 0x36B8 + return "A component version required by the application conflicts with another component version already active." + else if SystemErrorCode == 0x36B9 + return "The type requested activation context section does not match the query API used." + else if SystemErrorCode == 0x36BA + return "Lack of system resources has required isolated activation to be disabled for the current thread of execution." + else if SystemErrorCode == 0x36BB + return "An attempt to set the process default activation context failed because the process default activation context was already set." + else if SystemErrorCode == 0x36BC + return "The encoding group identifier specified is not recognized." + else if SystemErrorCode == 0x36BD + return "The encoding requested is not recognized." + else if SystemErrorCode == 0x36BE + return "The manifest contains a reference to an invalid URI." + else if SystemErrorCode == 0x36BF + return "The application manifest contains a reference to a dependent assembly which is not installed." + else if SystemErrorCode == 0x36C0 + return "The manifest for an assembly used by the application has a reference to a dependent assembly which is not installed." + else if SystemErrorCode == 0x36C1 + return "The manifest contains an attribute for the assembly identity which is not valid." + else if SystemErrorCode == 0x36C2 + return "The manifest is missing the required default namespace specification on the assembly element." + else if SystemErrorCode == 0x36C4 + return "The private manifest probed has crossed a path with an unsupported reparse point." + else if SystemErrorCode == 0x36C5 + return "Two or more components referenced directly or indirectly by the application manifest have files by the same name." + else if SystemErrorCode == 0x36C6 + return "Two or more components referenced directly or indirectly by the application manifest have window classes with the same name." + else if SystemErrorCode == 0x36C7 + return "Two or more components referenced directly or indirectly by the application manifest have the same COM server CLSIDs." + else if SystemErrorCode == 0x36C8 + return "Two or more components referenced directly or indirectly by the application manifest have proxies for the same COM interface IIDs." + else if SystemErrorCode == 0x36C9 + return "Two or more components referenced directly or indirectly by the application manifest have the same COM type library TLBIDs." + else if SystemErrorCode == 0x36CA + return "Two or more components referenced directly or indirectly by the application manifest have the same COM ProgIDs." + else if SystemErrorCode == 0x36CB + return "Two or more components referenced directly or indirectly by the application manifest are different versions of the same component which is not permitted." + else if SystemErrorCode == 0x36CD + return "The policy manifest contains one or more syntax errors." + else if SystemErrorCode == 0x36FD + return "An HRESULT could not be translated to a corresponding Win32 error code." + else if SystemErrorCode == 0x36FF + return "The supplied assembly identity is missing one or more attributes which must be present in this context." + else if SystemErrorCode == 0x3700 + return "The supplied assembly identity has one or more attribute names that contain characters not permitted in XML names." + else if SystemErrorCode == 0x3701 + return "The referenced assembly could not be found." + else if SystemErrorCode == 0x3702 + return "The activation context activation stack for the running thread of execution is corrupt." + else if SystemErrorCode == 0x3703 + return "The application isolation metadata for this process or thread has become corrupt." + else if SystemErrorCode == 0x3704 + return "The activation context being deactivated is not the most recently activated one." + else if SystemErrorCode == 0x3705 + return "The activation context being deactivated is not active for the current thread of execution." + else if SystemErrorCode == 0x3706 + return "The activation context being deactivated has already been deactivated." + else if SystemErrorCode == 0x3707 + return "A component used by the isolation facility has requested to terminate the process." + else if SystemErrorCode == 0x3708 + return "A kernel mode component is releasing a reference on an activation context." + else if SystemErrorCode == 0x3709 + return "The activation context of system default assembly could not be generated." + else if SystemErrorCode == 0x370A + return "The value of an attribute in an identity is not within the legal range." + else if SystemErrorCode == 0x370B + return "The name of an attribute in an identity is not within the legal range." + else if SystemErrorCode == 0x370C + return "An identity contains two definitions for the same attribute." + else if SystemErrorCode == 0x370F + return "The public key token does not correspond to the public key specified." + else if SystemErrorCode == 0x3710 + return "A substitution string had no mapping." + else if SystemErrorCode == 0x3711 + return "The component must be locked before making the request." + else if SystemErrorCode == 0x3712 + return "The component store has been corrupted." + else if SystemErrorCode == 0x3713 + return "An advanced installer failed during setup or servicing." + else if SystemErrorCode == 0x3714 + return "The character encoding in the XML declaration did not match the encoding used in the document." + else if SystemErrorCode == 0x3715 + return "The identities of the manifests are identical but their contents are different." + else if SystemErrorCode == 0x3716 + return "The component identities are different." + else if SystemErrorCode == 0x3717 + return "The assembly is not a deployment." + else if SystemErrorCode == 0x3718 + return "The file is not a part of the assembly." + else if SystemErrorCode == 0x3719 + return "The size of the manifest exceeds the maximum allowed." + else if SystemErrorCode == 0x371A + return "The setting is not registered." + else if SystemErrorCode == 0x371B + return "One or more required members of the transaction are not present." + else if SystemErrorCode == 0x371C + return "The SMI primitive installer failed during setup or servicing." + else if SystemErrorCode == 0x371D + return "A generic command executable returned a result that indicates failure." + else if SystemErrorCode == 0x371E + return "A component is missing file verification information in its manifest." + else if SystemErrorCode == 0x3A98 + return "The specified channel path is invalid." + else if SystemErrorCode == 0x3A99 + return "The specified query is invalid." + else if SystemErrorCode == 0x3A9A + return "The publisher metadata cannot be found in the resource." + else if SystemErrorCode == 0x3A9C + return "The specified publisher name is invalid." + else if SystemErrorCode == 0x3A9F + return "The specified channel could not be found. Check channel configuration." + else if SystemErrorCode == 0x3AA1 + return "The caller is trying to subscribe to a direct channel which is not allowed. The events for a direct channel go directly to a logfile and cannot be subscribed to." + else if SystemErrorCode == 0x3AA2 + return "Configuration error." + else if SystemErrorCode == 0x3AA4 + return "Query result is currently at an invalid position." + else if SystemErrorCode == 0x3AA6 + return "An expression can only be followed by a change of scope operation if it itself evaluates to a node set and is not already part of some other change of scope operation." + else if SystemErrorCode == 0x3AAA + return "This data type is currently unsupported." + else if SystemErrorCode == 0x3AAC + return "This operator is unsupported by this implementation of the filter." + else if SystemErrorCode == 0x3AAD + return "The token encountered was unexpected." + else if SystemErrorCode == 0x3AAE + return "The requested operation cannot be performed over an enabled direct channel. The channel must first be disabled before performing the requested operation." + else if SystemErrorCode == 0x3AB1 + return "The channel fails to activate." + else if SystemErrorCode == 0x3AB2 + return "The xpath expression exceeded supported complexity. Please symplify it or split it into two or more simple expressions." + else if SystemErrorCode == 0x3AB4 + return "The message id for the desired message could not be found." + else if SystemErrorCode == 0x3AB7 + return "The maximum number of replacements has been reached." + else if SystemErrorCode == 0x3AB9 + return "The locale specific resource for the desired message is not present." + else if SystemErrorCode == 0x3ABA + return "The resource is too old to be compatible." + else if SystemErrorCode == 0x3ABB + return "The resource is too new to be compatible." + else if SystemErrorCode == 0x3ABD + return "The publisher has been disabled and its resource is not avaiable. This usually occurs when the publisher is in the process of being uninstalled or upgraded." + else if SystemErrorCode == 0x3ABE + return "Attempted to create a numeric type that is outside of its valid range." + else if SystemErrorCode == 0x3AE8 + return "The subscription fails to activate." + else if SystemErrorCode == 0x3AEB + return "The credential store that is used to save credentials is full." + else if SystemErrorCode == 0x3AED + return "No active channel is found for the query." + else if SystemErrorCode == 0x3AFC + return "The resource loader failed to find MUI file." + else if SystemErrorCode == 0x3AFD + return "The resource loader failed to load MUI file because the file fail to pass validation." + else if SystemErrorCode == 0x3AFE + return "The RC Manifest is corrupted with garbage data or unsupported version or missing required item." + else if SystemErrorCode == 0x3AFF + return "The RC Manifest has invalid culture name." + else if SystemErrorCode == 0x3B00 + return "The RC Manifest has invalid ultimatefallback name." + else if SystemErrorCode == 0x3B02 + return "User stopped resource enumeration." + else if SystemErrorCode == 0x3B03 + return "UI language installation failed." + else if SystemErrorCode == 0x3B04 + return "Locale installation failed." + else if SystemErrorCode == 0x3B06 + return "A resource does not have default or neutral value." + else if SystemErrorCode == 0x3B07 + return "Invalid PRI config file." + else if SystemErrorCode == 0x3B08 + return "Invalid file type." + else if SystemErrorCode == 0x3B09 + return "Unknown qualifier." + else if SystemErrorCode == 0x3B0A + return "Invalid qualifier value." + else if SystemErrorCode == 0x3B0B + return "No Candidate found." + else if SystemErrorCode == 0x3B0C + return "The ResourceMap or NamedResource has an item that does not have default or neutral resource.." + else if SystemErrorCode == 0x3B0D + return "Invalid ResourceCandidate type." + else if SystemErrorCode == 0x3B0E + return "Duplicate Resource Map." + else if SystemErrorCode == 0x3B0F + return "Duplicate Entry." + else if SystemErrorCode == 0x3B10 + return "Invalid Resource Identifier." + else if SystemErrorCode == 0x3B11 + return "Filepath too long." + else if SystemErrorCode == 0x3B12 + return "Unsupported directory type." + else if SystemErrorCode == 0x3B16 + return "Invalid PRI File." + else if SystemErrorCode == 0x3B17 + return "NamedResource Not Found." + else if SystemErrorCode == 0x3B1F + return "ResourceMap Not Found." + else if SystemErrorCode == 0x3B20 + return "Unsupported MRT profile type." + else if SystemErrorCode == 0x3B21 + return "Invalid qualifier operator." + else if SystemErrorCode == 0x3B22 + return "Unable to determine qualifier value or qualifier value has not been set." + else if SystemErrorCode == 0x3B23 + return "Automerge is enabled in the PRI file." + else if SystemErrorCode == 0x3B24 + return "Too many resources defined for package." + else if SystemErrorCode == 0x3B62 + return "The monitor does not comply with the MCCS specification it claims to support." + else if SystemErrorCode == 0x3B65 + return "An internal Monitor Configuration API error occurred." + else if SystemErrorCode == 0x3B92 + return "The requested system device cannot be identified due to multiple indistinguishable devices potentially matching the identification criteria." + else if SystemErrorCode == 0x3BC3 + return "The requested system device cannot be found." + else if SystemErrorCode == 0x3BC4 + return "Hash generation for the specified hash version and hash type is not enabled on the server." + else if SystemErrorCode == 0x3BC5 + return "The hash requested from the server is not available or no longer valid." + else if SystemErrorCode == 0x3BD9 + return "The secondary interrupt controller instance that manages the specified interrupt is not registered." + else if SystemErrorCode == 0x3BDA + return "The information supplied by the GPIO client driver is invalid." + else if SystemErrorCode == 0x3BDB + return "The version specified by the GPIO client driver is not supported." + else if SystemErrorCode == 0x3BDC + return "The registration packet supplied by the GPIO client driver is not valid." + else if SystemErrorCode == 0x3BDD + return "The requested operation is not suppported for the specified handle." + else if SystemErrorCode == 0x3BDE + return "The requested connect mode conflicts with an existing mode on one or more of the specified pins." + else if SystemErrorCode == 0x3BDF + return "The interrupt requested to be unmasked is not masked." + else if SystemErrorCode == 0x3C28 + return "The requested run level switch cannot be completed successfully." + else if SystemErrorCode == 0x3C29 + return "The service has an invalid run level setting. The run level for a service must not be higher than the run level of its dependent services." + else if SystemErrorCode == 0x3C2A + return "The requested run level switch cannot be completed successfully since one or more services will not stop or restart within the specified timeout." + else if SystemErrorCode == 0x3C2B + return "A run level switch agent did not respond within the specified timeout." + else if SystemErrorCode == 0x3C2C + return "A run level switch is currently in progress." + else if SystemErrorCode == 0x3C2D + return "One or more services failed to start during the service startup phase of a run level switch." + else if SystemErrorCode == 0x3C8D + return "The task stop request cannot be completed immediately since task needs more time to shutdown." + else if SystemErrorCode == 0x3CF0 + return "Package could not be opened." + else if SystemErrorCode == 0x3CF1 + return "Package was not found." + else if SystemErrorCode == 0x3CF2 + return "Package data is invalid." + else if SystemErrorCode == 0x3CF4 + return "There is not enough disk space on your computer. Please free up some space and try again." + else if SystemErrorCode == 0x3CF5 + return "There was a problem downloading your product." + else if SystemErrorCode == 0x3CF6 + return "Package could not be registered." + else if SystemErrorCode == 0x3CF7 + return "Package could not be unregistered." + else if SystemErrorCode == 0x3CF8 + return "User cancelled the install request." + else if SystemErrorCode == 0x3CF9 + return "Install failed. Please contact your software vendor." + else if SystemErrorCode == 0x3CFA + return "Removal failed. Please contact your software vendor." + else if SystemErrorCode == 0x3CFC + return "The application cannot be started. Try reinstalling the application to fix the problem." + else if SystemErrorCode == 0x3CFD + return "A Prerequisite for an install could not be satisfied." + else if SystemErrorCode == 0x3CFE + return "The package repository is corrupted." + else if SystemErrorCode == 0x3D00 + return "The application cannot be started because it is currently updating." + else if SystemErrorCode == 0x3D01 + return "The package deployment operation is blocked by policy. Please contact your system administrator." + else if SystemErrorCode == 0x3D02 + return "The package could not be installed because resources it modifies are currently in use." + else if SystemErrorCode == 0x3D03 + return "The package could not be recovered because necessary data for recovery have been corrupted." + else if SystemErrorCode == 0x3D06 + return "The package could not be installed because a higher version of this package is already installed." + else if SystemErrorCode == 0x3D07 + return "An error in a system binary was detected. Try refreshing the PC to fix the problem." + else if SystemErrorCode == 0x3D08 + return "A corrupted CLR NGEN binary was detected on the system." + else if SystemErrorCode == 0x3D09 + return "The operation could not be resumed because necessary data for recovery have been corrupted." + else if SystemErrorCode == 0x3D0A + return "The package could not be installed because the Windows Firewall service is not running. Enable the Windows Firewall service and try again." + else if SystemErrorCode == 0x3D54 + return "The process has no package identity." + else if SystemErrorCode == 0x3D55 + return "The package runtime information is corrupted." + else if SystemErrorCode == 0x3D56 + return "The package identity is corrupted." + else if SystemErrorCode == 0x3D57 + return "The process has no application identity." + else if SystemErrorCode == 0x3DB8 + return "Loading the state store failed." + else if SystemErrorCode == 0x3DB9 + return "Retrieving the state version for the application failed." + else if SystemErrorCode == 0x3DBA + return "Setting the state version for the application failed." + else if SystemErrorCode == 0x3DBB + return "Resetting the structured state of the application failed." + else if SystemErrorCode == 0x3DBC + return "State Manager failed to open the container." + else if SystemErrorCode == 0x3DBD + return "State Manager failed to create the container." + else if SystemErrorCode == 0x3DBE + return "State Manager failed to delete the container." + else if SystemErrorCode == 0x3DBF + return "State Manager failed to read the setting." + else if SystemErrorCode == 0x3DC0 + return "State Manager failed to write the setting." + else if SystemErrorCode == 0x3DC1 + return "State Manager failed to delete the setting." + else if SystemErrorCode == 0x3DC2 + return "State Manager failed to query the setting." + else if SystemErrorCode == 0x3DC3 + return "State Manager failed to read the composite setting." + else if SystemErrorCode == 0x3DC4 + return "State Manager failed to write the composite setting." + else if SystemErrorCode == 0x3DC5 + return "State Manager failed to enumerate the containers." + else if SystemErrorCode == 0x3DC6 + return "State Manager failed to enumerate the settings." + else if SystemErrorCode == 0x3DC7 + return "The size of the state manager composite setting value has exceeded the limit." + else if SystemErrorCode == 0x3DC8 + return "The size of the state manager setting value has exceeded the limit." + else if SystemErrorCode == 0x3DC9 + return "The length of the state manager setting name has exceeded the limit." + else if SystemErrorCode == 0x3DCA + return "The length of the state manager container name has exceeded the limit." +} diff --git a/classes/class_memClass_AHK2.ahk b/classes/class_memClass_AHK2.ahk new file mode 100644 index 00000000..bce9cb3b --- /dev/null +++ b/classes/class_memClass_AHK2.ahk @@ -0,0 +1,171 @@ +/* Memory Reader for AHK v2 +Example: + #include memClass.ahk + #SingleInstance force + + cmd := new memClass(WinGetPID("Command Prompt"), "conhost.exe") + cmd.listModules() + + msgbox( cmd.modules[1].name + . " is loaded at " + . cmd.modules[1].baseadd + . " = " + . cmd.modules[1].baseadd + 0 ) + + ptrBaseAdd := cmd.readNum(,,0x8be80, 0x158, 0x570, 0x20) + while WinExist("ahk_pid " cmd.parentPID) { + curr1 := cmd.readNum(2, ptrBaseAdd, 0x18, 0xA) + curr2 := cmd.readNum(2, ptrBaseAdd, 0x20) + curr := curr2 == 0 ? curr1 : curr2 + ToolTip( cmd.readStr( 11, "UTF-8", 0x7FF71125A5E0) "`n" + . "Current Line Number: " curr) + sleep 100 + } + + ^1:: + if cmd.suspended + cmd.resume() + else + cmd.suspend() + return +*/ + +class memClass { + modules:=[] + suspended := false + __New(pid, childName := "") { + if childName + for process in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" childName "'") + if process.ParentProcessID == pid { + pid:= process.ProcessID + this.parentPID := process.ParentProcessID + } + + this.phandle := DllCall("OpenProcess", "UInt", 0xFFFF, "Char", 0, "UInt", pid, "Ptr") + this._getModuleList() + this.pid := pid + return this + } + + __Delete() { + return DllCall("CloseHandle", "Ptr", this.phandle) + } + + suspend() { + this.suspended := true + ;return DllCall("DebugActiveProcess", "Ptr", this.phandle) + return DllCall("ntdll\NtSuspendProcess", "Ptr", this.phandle) + } + + resume() { + this.suspended := false + ;return DllCall("DebugActiveProcessStop", "Ptr", this.phandle) + return DllCall("ntdll\NtResumeProcess", "Ptr", this.phandle) + } + + readstr(len, en:="utf-16", add:=-1, offsets*) { + offsetsLen := offsets.length() + if add == -1 + add := this.baseadd + i := 1 + while i < offsetsLen { + add:=this._readptr(add + offsets[i++]) + } + if en = "utf-16" + mul := 2 + else if en = "utf-8" + mul := 1 + size := len * mul + VarSetCapacity(mval, size) + add += offsetsLen > 0 ? offsets[i] : 0 + this._donothing(0) + DllCall("ReadProcessMemory", "UInt", this.phandle, "Ptr", add, "Ptr", &mval, "UInt", size) + return StrGet(&mval, len, en) + } + + readnum(size:=8, add:=-1, offsets*) { + offsetsLen := offsets.length() + if add == -1 + add := this.baseadd + i := 1 + while i < offsetsLen { + add:=this._readptr(add + offsets[i++]) + } + _type := {8:"Int64", 4:"UInt", 2:"UShort", 1:"UChar"} + VarSetCapacity(mval, size, 0) + add += offsetsLen > 0 ? offsets[i] : 0 + + this._donothing(0) + DllCall("ReadProcessMemory", "UInt", this.phandle, "Ptr", add, "Ptr", &mval, "Uint", size) + return NumGet(&mval, 0, _type[size]) + } + + listModules() { + moduleList := GuiCreate(,"Module List => this.modules[i].(baseadd | name)") + moduleList.SetFont("s10", "Consolas") + moduleListEdit := moduleList.Add("Edit", "r25 w500 ReadOnly -Wrap", "") + modSize := this.modules.Length() + indexLen := StrLen(modSize) + for key, val in this.modules { + str := Format("{1:7} {2:14} : {3}", "[" key "]", val.baseadd, val.name) + ;s .= Format("|{:-10}|`r`n|{:10}|`r`n", "Left", "Right") + moduleListEdit.Value := moduleListEdit.Value str (key == modSize ? "" : "`n") + } + moduleList.Show() + } + + findPtr(ptr, startAdd := 0) { + endAdd := 0x7fffffffffff + add := startAdd + result := this._readptr(add) + i := 0 + while result != ptr and add + A_PtrSize <= endAdd { + add := A_PtrSize * ++i + result := this._readptr(add) + + } + fileappend("[" i "] " add ":" result "`n", "*") + } + + _readptr(add) { + VarSetCapacity(mval, A_PtrSize, 0) + this._donothing(0) + DllCall("ReadProcessMemory", "UInt", this.phandle, "Ptr", add, "Ptr", &mval, "Uint", A_PtrSize) + return NumGet(&mval, 0, A_PtrSize == 8 ? "Int64" : "UInt") + } + + _getModuleList() { + h_msvcrt := DllCall("LoadLibrary", "str", "msvcrt.dll") ; Preload dll + h_psapi := DllCall("LoadLibrary", "str", "psapi.dll") ; Preload dll + hm_list_size := 1024*8 ;make this larger than necessary + VarSetCapacity( hm_list, hm_list_size, 0 ) + VarSetCapacity( hm_list_actual, A_PtrSize ) + ;this._donothing(0) + r := DllCall("psapi.dll\EnumProcessModules", "Ptr", this.phandle, "Ptr", &hm_list, "Ptr", hm_list_size, "Ptr*", hm_list_actual) + + i := 0 + while i < hm_list_actual//A_PtrSize { + hwnd:=NumGet(&hm_list + A_PtrSize*i, "Ptr") + VarSetCapacity(name, 512) + len := DllCall("psapi.dll\GetModuleBaseName", "Ptr", this.phandle, "Ptr", hwnd, "Str", name, "UInt", 1024) + this.modules[++i] := { "name":StrLower(name), "baseadd":"0x" StrUpper(this._convertDecToHex(hwnd))} + } + + this.baseadd := this.modules[1].baseadd + return r + } + + _convertDecToHex(number) { + static u := A_IsUnicode ? "_wcstoui64" : "_strtoui64" + static v := A_IsUnicode ? "_i64tow" : "_i64toa" + + VarSetCapacity(s, 65, 0) + value := DllCall("msvcrt.dll\" u, "Str", number, "UInt", 0, "UInt", 10, "CDECL Int64") + DllCall("msvcrt.dll\" v, "Int64", value, "Str", s, "UInt", 16, "CDECL") + return s + } + + _donothing(x) { ;somehow I need this dummy code to get ReadProcessMemory to work properly + return x ;could this be a permission issue? + } +} \ No newline at end of file diff --git a/classes/class_pastebin.ahk b/classes/class_pastebin.ahk index f1cb63ea..3afac3f6 100644 --- a/classes/class_pastebin.ahk +++ b/classes/class_pastebin.ahk @@ -1,6 +1,7 @@ -/* +/* Pastebin API v0.0.0.1 (fully functional) Avi Aryan + Example pbin := new pastebin() msgbox % Clipboard := pbin.pasteAsGuest("some text to paste", "paste_name", "autohotkey") @@ -8,14 +9,14 @@ Example class pasteBin { - __New(username="floppernopper", password="19aug1993"){ ; dev_key is nothing special and can be made public + __New(username="", password=""){ ; dev_key is nothing special and can be made public - this.dev_key := "b87797d42ce46dd4ec478f55bacf9d28" , this.username := username , this.password := password + this.dev_key := "a5570948bfe060e3df15b9ac02d8b93f" , this.username := username , this.password := password this.http := ComObjCreate("WinHttp.WinHttpRequest.5.1") ; done - if ( username != "" ) && ( Password != "" ) ;return if invalid data { - f := "api_dev_key=" dev_key "&api_user_name=" this._UrlEncode(username) "&api_user_password=" this._UrlEncode(password) + f := "api_dev_key=" this.dev_key "&api_user_name=" this._UrlEncode(this.username) "&api_user_password=" this._UrlEncode(this.password) this._openRequest("http://pastebin.com/api/api_login.php") this.http.Send(f) this.userkey := this._return(this.http.ResponseText) ; return 0 if key is wrong invalid @@ -81,7 +82,7 @@ class pasteBin return this.http.ResponseText } - editPaste(link, mode=1, message=""){ + editPaste(link, mode=1){ ; total auto sign - in ; just open page := "http://pastebin.com/edit.php?i=" ( id:=this.getPastekey(link) ) @@ -94,29 +95,15 @@ class pasteBin ie.visible := 0 while ie.busy sleep 100 - sleep 1000 - if !Instr(ie.document.url, id) ; means already signed in -- - { - ie.Document.All.user_name.Value := this.username - ie.Document.All.user_password.Value := this.password - ie.Document.All.submit.click() - } - sleep 1000 - if message!= "" + if !Instr(ie.document.url, "edit.php?i=" id) ; means already signed in -- { - ie.Document.All.paste_code.Value := message - ie.Document.All.submit.click() + ie.document.all.user_name.value := this.username + ie.document.all.user_password.value := this.password + ie.document.all.submit.click() } while ie.busy sleep 100 - ie.visible := 0 - sleep 100 - While ( value <> "Log Out" ) - value := ie.document.getElementsByTagName( "li")[ A_Index - 1].innertext, index := A_Index - 1 - ie.document.getElementsByTagName( "li")[ index].Click() - while ie.busy - sleep 100 - ie.Quit + ie.visible := 1 return 1 } diff --git a/classes/class_print_AHK2.ahk b/classes/class_print_AHK2.ahk new file mode 100644 index 00000000..2ad20ddc --- /dev/null +++ b/classes/class_print_AHK2.ahk @@ -0,0 +1,113 @@ +#include getError.ahk + +/* Print Output for AHK v2 +Example: + +*/ + +print := new printClass() +print(msg) { + global print + print._println(msg) +} + +rprint(msg) { + global print + print._print(msg) +} + +hprint(msg) { + global print + print._printHex(msg) +} + +eprint(errorCode) { + global print + print._printError(errorCode) +} + +;~ gprint := new printClass(forceGUI := true) +;~ gprint(args*) { + ;~ global gprint + ;~ gprint._print(args*) +;~ } + + +class printClass { + __New(forceGUI := false) { + if !WinExist("SciTE4AutoHotkey") or forceGUI { + this.SciTE4Autohotkey := 0 + this.output := GuiCreate(,'Output for "' A_ScriptName '"') + this.output.SetFont(,"Consolas") + this.outputEditCtrl := this.output.Add("Edit", "r20 w800 ReadOnly -Wrap", "") + + this.output.Opt("+Resize") + + this.output.OnEvent("Size", () => this._onResize()) + this.output.Show() + + WinWait("ahk_id " this.output.Hwnd) + + this.Hwnd := this.output.Hwnd + } else + this.SciTE4Autohotkey := 1 + + this.hModule := DllCall("LoadLibrary", "Str", "msvcrt.dll") + return this + } + + _onResize() { + this.outputEditCtrl.move("w" (this.output.ClientPos.w-20) " h" (this.output.ClientPos.h-10), true) + } + + _print(msg) { + if !this.SciTE4AutoHotkey { + this.outputEditCtrl.Value := this.outputEditCtrl.Value msg + PostMessage( 0x115, 7, , "Edit1", 'Output for "' A_ScriptName '"') + } + else + fileappend(msg, "*") + } + + _println(msg) { + this._print(msg "`n") + } + + _printError(msg) { + this._println(getError(msg)) + } + + _printHex(msg) { + if !msg + return + + static patternPart := "[\s|(|)|\[|\]|:|;|,|{|}|^|\|]" + static pattern := "(?<=" patternPart ")([0-9]+)(?=" patternPart ")" + msg := " " msg " " + r := 1 + loop { + r := RegExMatch(msg, pattern, m, r) + if r { + hex := m[1] > 10 ? this._convert(m[1], 10, 16) : m[1] + msg := RegExReplace(msg, pattern, hex, , 1, r) + r := r + 1 + } + } until (!r) + msg := SubStr(msg, 2, -1) + + this._println(msg) + } + + _convert(numstr, inputBase, outputBase) { + u := A_IsUnicode ? "_wcstoui64" : "_strtoui64" + v := A_IsUnicode ? "_i64tow" : "_i64toa" + VarSetCapacity(s, 65, 0) + value := DllCall("msvcrt.dll\" u, "Str", numstr, "UInt", 0, "UInt", inputBase, "CDECL Int64") + DllCall("msvcrt.dll\" v, "Int64", value, "Str", numstr, "UInt", outputBase, "CDECL") + return "0x" StrUpper(numstr) + } + + __Delete() { + DllCall("FreeLibrary", "Ptr", this.hModule) + } +} diff --git a/classes/class_taskbarInterface.ahk b/classes/class_taskbarInterface.ahk index 0b57fcef..a9515e8c 100644 --- a/classes/class_taskbarInterface.ahk +++ b/classes/class_taskbarInterface.ahk @@ -1,6 +1,6 @@ -#include ../../classes/threadFunc/threadFunc.ahk +;#include ../../classes/threadFunc/threadFunc.ahk class taskbarInterface { - static hookWindowClose:=true ; Use SetWinEventHook to automatically clear the interface when its window is destroyed. + static hookWindowClose:=true ; Use SetWinEventHook to automatically clear the interface when its window is destroyed. static manualClearInterface:=false ; Set to false to automatically clear com interface when the last reference to an object derived from the taskbarInterface class is released. call taskbarInterface.clearInterface() __new(hwnd,onButtonClickFunction:="",mute:=false){ this.mute:=mute ; By default, errors are thrown. Set mute:=true to suppress exceptions. @@ -16,7 +16,7 @@ class taskbarInterface { this.hwnd:=hwnd ; Handle to the window whose taskbar preview will recieve the buttons if !taskbarInterface.init ; On first call here, initialise the com object and turn on button messages. (WM_COMMAND) taskbarInterface.initInterface() ; Note, must init com before any interface functions are called. - this.setButtonCallback(onButtonClickFunction) + this.setButtonCallback(onButtonClickFunction) if taskbarInterface.hookWindowClose this.allowHooking:=true } @@ -60,7 +60,7 @@ class taskbarInterface { setButtonImage(n,nIL){ ; Set image for button n. ; nIL is the index of the image to set in the image list, you can add images to the image list via the addToImageList() method - + static THB_BITMAP:=0x1 this.updateThumbButtonMask(n,THB_BITMAP,0) this.setThumbButtoniBitmap(n,nIL) @@ -102,7 +102,7 @@ class taskbarInterface { this.hImageList:="" return 1 } else if this.hImageList { - this.lastError:=Exception("ImageList destroy failed.") + this.lastError:=Exception("ImageList destroy failed.") if this.mute return this.lastError else @@ -113,7 +113,7 @@ class taskbarInterface { setButtonIcon(n,hIcon){ ; Set button icon for button n ; Call queryButtonIconSize() to obtain the required size of the icon. See queryButtonIconSize() below. - static THB_ICON:=0x2 + static THB_ICON:=0x2 this.updateThumbButtonMask(n,THB_ICON,0) ; Update mask THB_ICON this.setThumbButtonhIcon(n,hIcon) ; Set the icon handle return this.ThumbBarUpdateButtons(n) ; Update @@ -139,9 +139,9 @@ class taskbarInterface { this.ThumbBarUpdateButtons(n) ; Update the buttons if (text="") this.updateThumbButtonMask(n,0,THB_TOOLTIP) ; Update mask THB_TOOLTIP, remove - return + return } - dismissPreviewOnButtonClick(n,dismiss:=true){ + dismissPreviewOnButtonClick(n,dismiss:=true){ ; Call with dismiss:=true to make button n's click ; to cause the thumbnail preview to be dismissed ; (close). To show again, hover mouse on taskbar icon. @@ -184,7 +184,7 @@ class taskbarInterface { } setButtonCallback(onButtonClickFunction:=""){ ; For changing or specifying the onButtonClick callback function. - if onButtonClickFunction { + if onButtonClickFunction { this.callback:= new threadFunc(onButtonClickFunction,,,,this.mute) ; Pass a func / bound func object or function name. } else { this.callback:="" @@ -195,12 +195,12 @@ class taskbarInterface { taskbarInterface.turnOnButtonMessages() ; If monitoring is off, turn on. taskbarInterface.startTaskbarMsgMonitor() this.isDisabled:=false ; By default, the interface is not disabled, us stopThisButtonMonitor() to disable. - return + return } ; ; End Button methods ; - + ; Misc interface methods: setTaskbarIcon(smallIconHandle,bigIconHandle:=""){ ; Url: @@ -231,7 +231,7 @@ class taskbarInterface { ; SetProgressType(type) - The underlying function is called SetProgressState, but ; I think the word Type is more descriptive of its function. - ; + ; ; Sets the type and state of the progress indicator displayed on a taskbar button. ; Url: ; - https://msdn.microsoft.com/en-us/library/windows/desktop/dd391697(v=vs.85).aspx (ITaskbarList3::SetProgressState) @@ -307,7 +307,7 @@ class taskbarInterface { ; pointer rests on an individual preview thumbnail in a taskbar button flyout. ; Input: - ; Text, string specifying the new text to show as tooltip when + ; Text, string specifying the new text to show as tooltip when ; mouse cursor hovers the thumbnail preview in the taskbar ; Specify an empty strin, text:="" to remove the tooltip. setThumbnailToolTip(text:=""){ @@ -328,7 +328,7 @@ class taskbarInterface { ; measuring 16x16 pixels at 96 dpi. If an overlay icon is already applied to ; the taskbar button, that existing overlay is replaced. ; - ; Omit the handle paramter to remove the icon. + ; Omit the handle paramter to remove the icon. ; ; To use a bitmap as the overlay icon, you can use LoadPictureType to load a bitmap as an icon, see https://github.com/HelgeffegleH/LoadPictureType setOverlayIcon(hIcon:=0,text:=""){ @@ -384,12 +384,12 @@ class taskbarInterface { return if !taskbarInterface.nCustomPreviews { ; Turn on message handler when calling this method the first time. taskbarInterface.WM_DWMSENDICONICTHUMBNAILfn:=ObjBindMethod(taskbarInterface,"WM_DWMSENDICONICTHUMBNAIL") - OnMessage(WM_DWMSENDICONICTHUMBNAIL,taskbarInterface.WM_DWMSENDICONICTHUMBNAILfn) + OnMessage(WM_DWMSENDICONICTHUMBNAIL,taskbarInterface.WM_DWMSENDICONICTHUMBNAILfn) } taskbarInterface.nCustomPreviews++ ; Increment counter, to track when to turn on / off message handler rate := (IsObject(bitmapOrBitmapFunc) && rate=0) ? 1 : rate ; If user doesn't follow instructions, try to save the day. bitmapFunc:= IsObject(bitmapOrBitmapFunc) || rate=0 ? bitmapOrBitmapFunc : IsFunc(bitmapOrBitmapFunc) ? func(bitmapOrBitmapFunc) : 0 ; Store the bitmap provider function. - this.bitmapFunc:= new threadFunc(bitmapFunc,,,,this.mute) + this.bitmapFunc:= new threadFunc(bitmapFunc,,,,this.mute) if !this.bitmapFunc { ; If invalid bitmapFunc, return/throw exception this.lastError:=Exception("The provided bitmap (function) is not a valid.", -1) if this.mute @@ -443,7 +443,7 @@ class taskbarInterface { return if !taskbarInterface.nCustomPeekPreviews { ; Turn on message handler when calling this method the first time. taskbarInterface.WM_DWMSENDICONICLIVEPREVIEWBITMAPfn:=ObjBindMethod(taskbarInterface,"WM_DWMSENDICONICLIVEPREVIEWBITMAP") - OnMessage(WM_DWMSENDICONICLIVEPREVIEWBITMAP,taskbarInterface.WM_DWMSENDICONICLIVEPREVIEWBITMAPfn) + OnMessage(WM_DWMSENDICONICLIVEPREVIEWBITMAP,taskbarInterface.WM_DWMSENDICONICLIVEPREVIEWBITMAPfn) } taskbarInterface.nCustomPeekPreviews++ ; Increment counter, to track when to turn on / off message handler rate := (IsObject(bitmapOrBitmapFunc) && rate=0) ? 1 : rate ; If user doesn't follow instructions, try to save the day. @@ -466,13 +466,13 @@ class taskbarInterface { this.dwSITFlagsPeekPreview:=addBorder this.Dwm_SetWindowAttributeHasIconicBitmap(this.hwnd,1) ; See dwm lib for details. this.Dwm_SetWindowAttributeForceIconicRepresentaion(this.hwnd,1) - + this.Dwm_InvalidateIconicBitmaps(this.hwnd) return this.CustomPeekPreviewEnabled:=true } disableCustomPeekPreview(){ local tf - static WM_DWMSENDICONICLIVEPREVIEWBITMAP:=0x326 + static WM_DWMSENDICONICLIVEPREVIEWBITMAP:=0x326 if (!this.CustomPeekPreviewEnabled || !taskbarInterface.nCustomPeekPreviews) return if (tf:=this.invalidatePeekTimerFn) { @@ -532,7 +532,7 @@ class taskbarInterface { return } restoreTaskbar(){ - ; Restores the taskbar for the window. + ; Restores the taskbar for the window. this.deleteTab() Sleep,50 this.addTab() @@ -545,7 +545,7 @@ class taskbarInterface { return this.isDisabled:=true } restartThisButtonMonitor(){ - ; This will reenable the button click callbacks. + ; This will reenable the button click callbacks. ; If all message monitor is off, i.e., stopAllButtonMonitor() was called, ; restart by calling restartAllButtonMonitor() ; Default is message monitoring on @@ -619,7 +619,7 @@ class taskbarInterface { ; ; ; Internal methods - ; Meta functions + ; Meta functions ; __Call(fn,p*){ ; For verifying correct input. maybe change this. @@ -627,7 +627,7 @@ class taskbarInterface { . ",setButtonToolTip,dismissPreviewOnButtonClick,removeButtonBackground" . ",reAddButtonBackground,setButtonNonInteractive,setButtonInteractive,", "," . fn . ",") { if this.isFreed { - this.lastError:=Exception("This interface has freed its memory, it cannot be used.",-1) + this.lastError:=Exception("This interface has freed its memory, it cannot be used.",-1) if this.mute return this.lastError else @@ -644,7 +644,7 @@ class taskbarInterface { return if (bool:=(!taskbarInterface.manualClearInterface && taskbarInterface.arrayIsEmpty(taskbarInterface.allInterfaces))) && !taskbarInterface.hasTemplates ; If the last interface is released and no templates, release com. taskbarInterface.clearInterface() - else if bool + else if bool taskbarInterface.turnOffButtonMessages(), taskbarInterface.stopTaskbarMsgMonitor() return } @@ -659,16 +659,16 @@ class taskbarInterface { this.setProgress(100) ; Set 100 progress to fill taskbar icon with the color fn:=ObjBindMethod(this,"flashOff",type,flashTime,offTime) ; Make a timer for turning off the color this.flashTimer:=fn ; - SetTimer, % fn, % -flashTime ; + SetTimer, % fn, % -flashTime ; return } flashOff(type,flashTime,offTime){ local fn this.SetProgressType("Off") ; Turn off the progress/color if !(--this.flashesRemaining){ ; Decrement flash count, return if appropriate - this.setProgressType(this.preFlashSettings[2]) ; For reference: this.preFlashSettings:=[this.progressValue,this.unmappedProgressType] - this.setProgress(this.preFlashSettings[1]) - this.preFlashSettings:="" + this.setProgressType(this.preFlashSettings[2]) ; For reference: this.preFlashSettings:=[this.progressValue,this.unmappedProgressType] + this.setProgress(this.preFlashSettings[1]) + this.preFlashSettings:="" return this.flashTimer:="" } fn:=ObjBindMethod(this,"flashOn",type,flashTime,offTime) ; Make a timer for turning on the color @@ -677,7 +677,7 @@ class taskbarInterface { return } stopTimer(){ - ; Terminates the flashTimer when appropriate. + ; Terminates the flashTimer when appropriate. ; Typically from refreshButtons() or clear() local fn if this.flashTimer { @@ -720,7 +720,7 @@ class taskbarInterface { freeThumbnailPreviewBMP(){ if (this.deleteBMPThumbnailPreview && this.thumbHbm) this.freeBitmap(this.thumbHbm), this.thumbHbm:="" - return + return } freePeekPreviewBMP(){ if (this.deleteBMPPeekPreview && this.peekHbm) @@ -760,7 +760,7 @@ class taskbarInterface { throw this.lastError } this.THUMBBUTTON:=this.GlobalAlloc(this.thumbButtonSize*7) - + loop, 7 { structOffset:=this.thumbButtonSize*(A_Index-1) NumPut(A_Index,this.THUMBBUTTON+structOffset, 4, "Uint") ; Specify the ids: 1,...,7 @@ -775,7 +775,7 @@ class taskbarInterface { ; The caller of update() then calls ThumbBarUpdateButtons() when finished ; Update - /* + /* Masks: THB_BITMAP = 0x00000001, THB_ICON = 0x00000002, @@ -815,7 +815,7 @@ class taskbarInterface { } getThumbButtonFlags(iId){ static itemOffset := 8+2*A_PtrSize+260*2 ; dwFlags - local structOffset := this.thumbButtonSize*(iId-1) + local structOffset := this.thumbButtonSize*(iId-1) return NumGet(this.THUMBBUTTON+itemOffset+structOffset,0,"Uint") } ; Set @@ -835,7 +835,7 @@ class taskbarInterface { local structOffset := this.thumbButtonSize*(iId-1) return NumPut(hIcon, this.THUMBBUTTON+itemOffset+structOffset, "Ptr") } - + setThumbButtonToolTipText(iId,text:=""){ static itemOffset := 8+2*A_PtrSize ; szTip local structOffset := this.thumbButtonSize*(iId-1) @@ -843,10 +843,10 @@ class taskbarInterface { } setThumbButtonFlags(iId,dwFlags){ static itemOffset := 8+2*A_PtrSize+260*2 ; dwFlags - local structOffset := this.thumbButtonSize*(iId-1) + local structOffset := this.thumbButtonSize*(iId-1) return NumPut(dwFlags, this.THUMBBUTTON+structOffset+itemOffset, "Uint") } - + ; ; Com Interface wrapper functions ; The bound funcs are made in initInterface() @@ -889,25 +889,25 @@ class taskbarInterface { return taskbarInterface.vTable.SetProgressValueFn.Call("Ptr", this.hWnd, "Int64", this.progressValue, "Int64", 100) ; 100 is max progress (done) } _setOverlayIcon(){ - return taskbarInterface.vTable.setOverlayIconFn.Call("Ptr", this.hWnd, "Ptr", this.overlayIconHandle, "Str", this.overlayIconDescription) + return taskbarInterface.vTable.setOverlayIconFn.Call("Ptr", this.hWnd, "Ptr", this.overlayIconHandle, "Str", this.overlayIconDescription) } _setThumbnailClip(rect){ return taskbarInterface.vTable.ThumbnailClipFn.Call("Ptr", this.hWnd, "Ptr", rect) } - + ; ; Static variables ; static allInterfaces:=[] ; Tracks all interfaces, for callbacks. static init:=0 ; For first time use initialising of the com object. - + ; THUMBBUTTON struct: static thumbButtonSize:=A_PtrSize=4?540:552 ; Size calculations according to: /* ; URL: ; - https://msdn.microsoft.com/en-us/library/windows/desktop/dd391559(v=vs.85).aspx (THUMBBUTTON structure) ; - ; offsets: Contribution to size (bytes): + ; offsets: Contribution to size (bytes): THUMBBUTTONMASK dwMask 0 ... 4 UINT iId 4 ... 4 UINT iBitmap 8 ... 4 @@ -919,7 +919,7 @@ class taskbarInterface { ; Sum: 64-bit: 4+4+4+4+A_PtrSize+260*2+4=548, 548/A_PtrSize=68.5 -> add 4 bytes, 552/A_PtrSize=69 (mod(552,A_Ptrsize)=0). ; 64-bit: add 4 bytes spacing to next struct in array ; Summary: size:= A_PtrSize=4?544:552 - + */ ; ; NOTE: @@ -947,11 +947,11 @@ class taskbarInterface { ; Get the address to the vTable. this.vTablePtr:=NumGet(this.hComObj+0,0,"Ptr") ; Create function objects for the interface, for convenience and clarity - + ; Name: Number: - ; For convenience when freeing the interface, add all bound funcs to one array + ; For convenience when freeing the interface, add all bound funcs to one array ;this.vTable:={} - this.vTable:=[] + this.vTable:=[] this.vTable["HrInitFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+ 3*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; HrInit ( 3) this.vTable["addTabFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+ 4*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; AddTab ( 4) this.vTable["deleteTabFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+ 5*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; DeleteTab ( 5) @@ -969,7 +969,7 @@ class taskbarInterface { this.vTable["SetOverlayIconFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+18*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; SetOverlayIcon (18) this.vTable["ThumbnailToolTipFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+19*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; SetThumbnailTooltip (19) this.vTable["ThumbnailClipFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+20*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; SetThumbnailClip (20) - + hr:=this.vTable.HrInitFn.Call() ; Init the interface. if hr { this.lastError:=Exception("Com failed to initialise.",-2) @@ -980,11 +980,11 @@ class taskbarInterface { } this.CoInitialize() ; This might not be needed, it calls CoUnInitialize if needed. this.startTaskbarMsgMonitor() - + ; Hook this.SetWinEventHook() this.init:=1 ; Success! - return + return } clearInterface(){ local hr @@ -1001,7 +1001,7 @@ class taskbarInterface { this.stopTaskbarMsgMonitor() ; Clear all boundFuncs this.vTable:="" - + this.hComObj:="" this.vTablePtr:="" if this.hHook ; unHook @@ -1010,7 +1010,7 @@ class taskbarInterface { this.CoUnInitialize() this.init:=0 ; Indicate com is not initialised return hr ; returns 0 on success (released) - + } ; CoInitialize/CoUnInitialize ; Url: @@ -1069,14 +1069,14 @@ class taskbarInterface { _In_ UINT dwflags ) ; For future reference and debug - EVENT_OBJECT_UNCLOAKED:=0x8018 + EVENT_OBJECT_UNCLOAKED:=0x8018 EVENT_OBJECT_SHOW:=0x8002 EVENT_OBJECT_HIDE:=0x8003 EVENT_OBJECT_CREATE:=0x8000 ;static min:=0x00000001, max:=0x7FFFFFFF */ SetWinEventHook(){ - + static EVENT_OBJECT_DESTROY:=0x8001 static EVENT_OBJECT_SHOW:=0x8002 static idThread := DllCall("User32.dll\GetWindowThreadProcessId", "Ptr", A_ScriptHwnd, "Ptr", 0) ; Url: - https://msdn.microsoft.com/en-us/library/windows/desktop/ms633522(v=vs.85).aspx @@ -1131,8 +1131,8 @@ class taskbarInterface { DWORD dwmsEventTime ); */ - static EVENT_OBJECT_DESTROY:=0x8001 - static EVENT_OBJECT_SHOW:=0x8002 + static EVENT_OBJECT_DESTROY:=0x8001 + static EVENT_OBJECT_SHOW:=0x8002 static OBJID_WINDOW:=0 local hWinEventHook,event,hwnd,idObject,idChild,dwEventThread,dwmsEventTime,i,template,cls ; Awkward. local WinExistIncludeParams,WinExistExcludeParams @@ -1152,8 +1152,8 @@ class taskbarInterface { if (event == EVENT_OBJECT_DESTROY) { if taskbarInterface.allInterfaces.HasKey(hwnd) taskbarInterface.allInterfaces[hwnd].clear() - return - } else if (event == EVENT_OBJECT_SHOW && taskbarInterface.hasTemplates) { ; Templates + return + } else if (event == EVENT_OBJECT_SHOW && taskbarInterface.hasTemplates) { ; Templates if taskbarInterface.allInterfaces.HasKey(hwnd) ; If the hwnd alredy has an interface, return return ; For reference: @@ -1182,7 +1182,7 @@ class taskbarInterface { } return } - + ; Click on button message handling: ; URL: ; - https://msdn.microsoft.com/en-us/library/windows/desktop/dd391703(v=vs.85).aspx (ITaskbarList3::ThumbBarAddButtons method, remarks) @@ -1192,14 +1192,14 @@ class taskbarInterface { turnOffButtonMessages(){ static WM_COMMAND := 0x111 if this.buttonMessageFn - OnMessage(WM_COMMAND,this.buttonMessageFn,0) ; Turn off button message monitoring. + OnMessage(WM_COMMAND,this.buttonMessageFn,0) ; Turn off button message monitoring. return this.buttonMessageFn:="" } turnOnButtonMessages(){ static WM_COMMAND := 0x111 if this.buttonMessageFn return - this.buttonMessageFn:=ObjBindMethod(this,"onButtonClick") ; The monitor function is kept for + this.buttonMessageFn:=ObjBindMethod(this,"onButtonClick") ; The monitor function is kept for OnMessage(WM_COMMAND,this.buttonMessageFn) ; When the buttons are clicked, a WM_COMMAND message is sent. return } @@ -1219,7 +1219,7 @@ class taskbarInterface { } return } - ; Taskbar messages - this is for restoring the interface in case the taskbar is destroyed or the + ; Taskbar messages - this is for restoring the interface in case the taskbar is destroyed or the ; taskbar icon is destroyed and remade. For example when a window is hidden and then shown. startTaskbarMsgMonitor(){ if !this.taskbarCreatedMsgId @@ -1262,14 +1262,14 @@ class taskbarInterface { return w:= lParam >> 16, h:= lParam & 0xFFFF ; Get the max width and height of the bitmap if (ref.saveThumbBitmap && ref.thumbHbm) || (ref.thumbHbm && A_TickCount-ref.pThumbTic add 4 bytes, 552/A_PtrSize=69 (mod(552,A_Ptrsize)=0). ; 64-bit: add 4 bytes spacing to next struct in array ; Summary: size:= A_PtrSize=4?544:552 - + */ ; ; NOTE: @@ -961,11 +961,11 @@ class taskbarInterface { ; Get the address to the vTable. this.vTablePtr:=NumGet(this.hComObj+0,0,"Ptr") ; Create function objects for the interface, for convenience and clarity - + ; Name: Number: - ; For convenience when freeing the interface, add all bound funcs to one array + ; For convenience when freeing the interface, add all bound funcs to one array ;this.vTable:={} - this.vTable:=[] + this.vTable:=[] this.vTable["HrInitFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+ 3*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; HrInit ( 3) this.vTable["addTabFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+ 4*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; AddTab ( 4) this.vTable["deleteTabFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+ 5*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; DeleteTab ( 5) @@ -983,7 +983,7 @@ class taskbarInterface { this.vTable["SetOverlayIconFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+18*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; SetOverlayIcon (18) this.vTable["ThumbnailToolTipFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+19*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; SetThumbnailTooltip (19) this.vTable["ThumbnailClipFn"] := Func("DllCall").Bind(NumGet(this.vTablePtr+20*A_PtrSize,0,"Ptr"), "Ptr", this.hComObj) ; SetThumbnailClip (20) - + hr:=this.vTable.HrInitFn.Call() ; Init the interface. if hr { this.lastError:=Exception("Com failed to initialise.",-2) @@ -994,11 +994,11 @@ class taskbarInterface { } this.CoInitialize() ; This might not be needed, it calls CoUnInitialize if needed. this.startTaskbarMsgMonitor() - + ; Hook this.SetWinEventHook() this.init:=1 ; Success! - return + return } clearInterface(){ local hr @@ -1015,7 +1015,7 @@ class taskbarInterface { this.stopTaskbarMsgMonitor() ; Clear all boundFuncs this.vTable:="" - + this.hComObj:="" this.vTablePtr:="" if this.hHook ; unHook @@ -1024,7 +1024,7 @@ class taskbarInterface { this.CoUnInitialize() this.init:=0 ; Indicate com is not initialised return hr ; returns 0 on success (released) - + } ; CoInitialize/CoUnInitialize ; Url: @@ -1083,7 +1083,7 @@ class taskbarInterface { _In_ UINT dwflags ) ; For future reference and debug - EVENT_OBJECT_UNCLOAKED:=0x8018 + EVENT_OBJECT_UNCLOAKED:=0x8018 EVENT_OBJECT_SHOW:=0x8002 EVENT_OBJECT_HIDE:=0x8003 EVENT_OBJECT_CREATE:=0x8000 @@ -1140,8 +1140,8 @@ class taskbarInterface { DWORD dwmsEventTime ); */ - static EVENT_OBJECT_DESTROY:=0x8001 - static EVENT_OBJECT_SHOW:=0x8002 + static EVENT_OBJECT_DESTROY:=0x8001 + static EVENT_OBJECT_SHOW:=0x8002 static OBJID_WINDOW:=0 local hWinEventHook,event,hwnd,idObject,idChild,dwEventThread,dwmsEventTime,i,template,cls ; Awkward. local WinExistIncludeParams,WinExistExcludeParams @@ -1161,8 +1161,8 @@ class taskbarInterface { if (event == EVENT_OBJECT_DESTROY) { if taskbarInterface.allInterfaces.HasKey(hwnd) taskbarInterface.allInterfaces[hwnd].clear() - return - } else if (event == EVENT_OBJECT_SHOW && taskbarInterface.hasTemplates) { ; Templates + return + } else if (event == EVENT_OBJECT_SHOW && taskbarInterface.hasTemplates) { ; Templates if taskbarInterface.allInterfaces.HasKey(hwnd) ; If the hwnd alredy has an interface, return return ; For reference: @@ -1191,7 +1191,7 @@ class taskbarInterface { } return } - + ; Click on button message handling: ; URL: ; - https://msdn.microsoft.com/en-us/library/windows/desktop/dd391703(v=vs.85).aspx (ITaskbarList3::ThumbBarAddButtons method, remarks) @@ -1202,14 +1202,14 @@ class taskbarInterface { turnOffButtonMessages(){ static WM_COMMAND := 0x111 if this.buttonMessageFn - OnMessage(WM_COMMAND,this.buttonMessageFn,0) ; Turn off button message monitoring. + OnMessage(WM_COMMAND,this.buttonMessageFn,0) ; Turn off button message monitoring. return this.buttonMessageFn:="" } turnOnButtonMessages(){ static WM_COMMAND := 0x111 if this.buttonMessageFn return - this.buttonMessageFn:=ObjBindMethod(this,"onButtonClick") ; The monitor function is kept for + this.buttonMessageFn:=ObjBindMethod(this,"onButtonClick") ; The monitor function is kept for OnMessage(WM_COMMAND,this.buttonMessageFn) ; When the buttons are clicked, a WM_COMMAND message is sent. return } @@ -1229,7 +1229,7 @@ class taskbarInterface { } return } - ; Taskbar messages - this is for restoring the interface in case the taskbar is destroyed or the + ; Taskbar messages - this is for restoring the interface in case the taskbar is destroyed or the ; taskbar icon is destroyed and remade. For example when a window is hidden and then shown. startTaskbarMsgMonitor(){ if !this.taskbarCreatedMsgId @@ -1272,14 +1272,14 @@ class taskbarInterface { return w:= lParam >> 16, h:= lParam & 0xFFFF ; Get the max width and height of the bitmap if (ref.saveThumbBitmap && ref.thumbHbm) || (ref.thumbHbm && A_TickCount-ref.pThumbTic=Index) && (Index!=0)) { Gosub, GetArrayStats - + ElmPtr := NumGet(Array,28+(Index-1)*8) ElmSize := NumGet(Array,32+(Index-1)*8) - + if ((dSize>ElmSize) || (dSize0) && (cnt0) && (cnt=3) && (A_Count(Array)+2>=A_Index)) out .= " [" A_Index-2 "]" ((A_index-2=1) ? "`t=>`t" : "") A_LoopField "`n" - else + else out := ((A_Index=1) ? A_LoopField : out A_LoopField) "`n" Return out } @@ -406,19 +406,19 @@ A___ArrayInsideView(Array) { tl := NumGet(Array, 16) ; TableLength in bytes al := NumGet(Array, 20) ; ArrayLength in bytes (Data) ec := NumGet(Array, 24) ; Element count - + offset := 28 Loop,% (tl-offset) // 8 { - elms .= "&" offset+((A_index-1)*8) " ptr elm " a_index + elms .= "&" offset+((A_index-1)*8) " ptr elm " a_index . "`t->`t" (o:=NumGet(Array,offset+((A_index-1)*8))) "`n" - . "&" offset+((A_index-1)*8)+4 " len elm " a_index + . "&" offset+((A_index-1)*8)+4 " len elm " a_index . "`t->`t" (l:=NumGet(Array,offset+4+((A_index-1)*8))) "`n" data .= "&" o ": " A___ArrayBin(Array,o,l) "`n" } - + out= - (LTrim + (LTrim aSignature &0 %as1% Terminator &7 %as2% arrayVersion &8 %av% @@ -426,12 +426,12 @@ A___ArrayInsideView(Array) { tableLength &16 %tl% arrayLength &20 %al% elementCount &24 %ec% - + %elms% %data% ) - return out + return out } /* diff --git a/lib-a_to_h/AHK-LUA-API.ahk b/lib-a_to_h/AHK-LUA-API.ahk index 2bec42ae..074b8319 100644 --- a/lib-a_to_h/AHK-LUA-API.ahk +++ b/lib-a_to_h/AHK-LUA-API.ahk @@ -1,4 +1,4 @@ -/* +/* AHK-LUA-API MIT License diff --git a/lib-a_to_h/AHKType.ahk b/lib-a_to_h/AHKType.ahk index 4652713b..be704deb 100644 --- a/lib-a_to_h/AHKType.ahk +++ b/lib-a_to_h/AHKType.ahk @@ -1,4 +1,4 @@ -; +; ; File encoding: UTF-8 ; diff --git a/lib-a_to_h/AHKsock.ahk b/lib-a_to_h/AHKsock.ahk index 4ca7c0dc..8338cc37 100644 --- a/lib-a_to_h/AHKsock.ahk +++ b/lib-a_to_h/AHKsock.ahk @@ -1,4 +1,4 @@ -/*! TheGood +/*! TheGood AHKsock - A simple AHK implementation of Winsock. http://www.autohotkey.com/forum/viewtopic.php?p=355775 Last updated: January 19, 2011 diff --git a/lib-a_to_h/API_Draw.ahk b/lib-a_to_h/API_Draw.ahk index 09886489..9f924c0a 100644 --- a/lib-a_to_h/API_Draw.ahk +++ b/lib-a_to_h/API_Draw.ahk @@ -1,4 +1,4 @@ -/* =========================================================================================================== +/* =========================================================================================================== v0.1 by majkinetor diff --git a/lib-a_to_h/API_GetWindowInfo.ahk b/lib-a_to_h/API_GetWindowInfo.ahk index 3ccada7d..ab1a8b92 100644 --- a/lib-a_to_h/API_GetWindowInfo.ahk +++ b/lib-a_to_h/API_GetWindowInfo.ahk @@ -1,4 +1,4 @@ -; ================================================================================================================================ +; ================================================================================================================================ ; Function: API_GetWindowInfo() ; Get an object containing the values of the WINDOWINFO structure from DllCall("GetWindowInfo") ; AHK version: L 1.1.00.00 (U 32) diff --git a/lib-a_to_h/API_Menu.ahk b/lib-a_to_h/API_Menu.ahk index e7d64e1a..65599e34 100644 --- a/lib-a_to_h/API_Menu.ahk +++ b/lib-a_to_h/API_Menu.ahk @@ -1,18 +1,18 @@ -/* +/* -- FUN -- - CreatePopupMenu () - DeleteMenu ( hMenu, uPos, uFlags ) - DestroyMenu ( hMenu ) + CreatePopupMenu () + DeleteMenu ( hMenu, uPos, uFlags ) + DestroyMenu ( hMenu ) GetMenuCheckMarkDimensions() - GetMenuItemCount ( hMenu ) + GetMenuItemCount ( hMenu ) GetMenuItemID ( hMenu, nPos ) GetMenuItemInfo ( hMenu, uItem, fByPosition, lpmii ) GetMenuState ( hMenu, uId, uFlags ) GetMenuString ( hMenu, uIDItem, lpString, nMaxCount, uFlag ) - GetSubmenu ( hMenu, nPos) + GetSubmenu ( hMenu, nPos) SetMenuItemInfo ( hMenu, uItem, fByPosition, lpmii ) SetMenuInfo ( hMenu, sMENUINFO ) - TrackPopupMenu ( hMenu, uFlags, X, Y, hWnd ) + TrackPopupMenu ( hMenu, uFlags, X, Y, hWnd ) InsertMenu ( hMenu, uPos, uFlags, uID, pData) IsMenu ( hMenu ) RemoveMenu ( hMenu, uPosition, uFlags ) @@ -35,7 +35,7 @@ API_GetMenuState( hMenu, uId, uFlags ) { API_GetMenuString( hMenu, uIDItem, lpString, nMaxCount, uFlag ){ return DllCall("GetMenuString", "uint", hMenu, "uint", uIDItem, "str", lpString, "uint", nMaxCount, "uint", uFlag) } - + API_IsMenu( hMenu ) { return DllCall("IsMenu", "uint", hMenu) } @@ -52,8 +52,7 @@ API_GetMenuItemID( hMenu, nPos ) { return DllCall("GetMenuItemID", "uint", hMenu, "int", nPos) } -INIT_Menu() -{ +INIT_Menu(){ ; global ; ;messages ; WM_MENUSELECT = 0x11F @@ -61,8 +60,8 @@ INIT_Menu() ; WM_DRAWITEM = 0x2B ; WM_ENTERMENULOOP= 0x211 ; -; MNS_DRAGDROP = 0x20000000 -; MNS_MODELESS = 0x40000000 +; MNS_DRAGDROP = 0x20000000 +; MNS_MODELESS = 0x40000000 ; MNS_NOTIFYBYPOS = 0x80000000 ; ; @@ -133,7 +132,7 @@ INIT_Menu() ; MIIM_STATE = 0x1 ; ; -; +; ; ; ;states ; ODS_CHECKED = 0x08 @@ -158,7 +157,7 @@ INIT_Menu() ; DI_IMAGE = 2 ; DI_MASK = 1 ; DI_DEFAULTSIZE = 8 -; DI_NORMAL := DI_MASK | DI_IMAGE +; DI_NORMAL := DI_MASK | DI_IMAGE ; ; ;STYLES ; MFS_GRAYED := 0x3 @@ -167,111 +166,79 @@ INIT_Menu() ; MFS_UNCHECKED := MF_UNCHECKED ; MFS_DEFAULT := MF_DEFAULT } - ;---------------------------------------------------------- - -API_InsertMenu( hMenu, uPos, uFlags, uID, pData) -{ - return DllCall("InsertMenu" +API_InsertMenu( hMenu, uPos, uFlags, uID, pData){ + return DllCall("InsertMenu" ,"uint", hMenu ,"uint", uPos ,"uint", uFlags ,"uint", uID - ,"uint", pData) + ,"uint", pData) } - ;---------------------------------------------------------- - -API_GetMenuItemCount( hMenu ) -{ - return DllCall("GetMenuItemCount", "uint", hMenu) -} - +API_GetMenuItemCount( hMenu ) { + return DllCall("GetMenuItemCount", "uint", hMenu) +} ;---------------------------------------------------------- - -API_CreatePopupMenu() -{ - return DllCall("CreatePopupMenu") -} - +API_CreatePopupMenu() { + return DllCall("CreatePopupMenu") +} ;---------------------------------------------------------- - -API_DestroyMenu( hMenu ) -{ - return DllCall("DestroyMenu", "uint", hMenu) -} - - +API_DestroyMenu( hMenu ) { + return DllCall("DestroyMenu", "uint", hMenu) +} ;---------------------------------------------------------- +API_TrackPopupMenu( hMenu, uFlags, X, Y, hWnd ) { + global -API_TrackPopupMenu( hMenu, uFlags, X, Y, hWnd ) -{ - global - - return DllCall("TrackPopupMenu" - , "uint", hMenu + return DllCall("TrackPopupMenu" + , "uint", hMenu , "uint", uFlags - , "int", X - , "int", Y - , "uint", 0 + , "int", X + , "int", Y + , "uint", 0 , "uint", hWnd - , "uint", 0) -} - + , "uint", 0) +} ;---------------------------------------------------------- - -API_SetMenuInfo(hMenu, sMENUINFO) -{ - return DllCall("SetMenuInfo", "uint", hMenu, "uint", sMENUINFO) +API_SetMenuInfo(hMenu, sMENUINFO){ + return DllCall("SetMenuInfo", "uint", hMenu, "uint", sMENUINFO) } - ;---------------------------------------------------------- - -API_DeleteMenu( hMenu, uPos, uFlags) -{ - DllCall("DeleteMenu" - ,"uint", hMenu +API_DeleteMenu( hMenu, uPos, uFlags) { + DllCall("DeleteMenu" + ,"uint", hMenu ,"uint", uPos - ,"uint", uFlags) -} - + ,"uint", uFlags) +} ;------------------------------------------------------------------------------------------------- - -API_SetMenuItemInfo( hMenu, uItem, fByPosition, lpmii) -{ +API_SetMenuItemInfo( hMenu, uItem, fByPosition, lpmii){ return, DllCall("SetMenuItemInfo", "uint", hMenu, "uint", uItem, "uint", fByPosition, "uint", lpmii) } - ;------------------------------------------------------------------------------------------------- - -API_GetMenuItemInfo( hMenu, uItem, fByPosition, lpmii) -{ +API_GetMenuItemInfo( hMenu, uItem, fByPosition, lpmii){ return, DllCall("GetMenuItemInfo", "uint", hMenu, "uint", uItem, "uint", fByPosition, "uint", lpmii) } - - /* ================================================================================================= - + STRUCTS ================================================================================================== */ -;typedef struct tagSIZE { -; LONG cx; -; LONG cy; +;typedef struct tagSIZE { +; LONG cx; +; LONG cy; ;} SIZE, *PSIZE; -SIZE_Get(var) -{ +SIZE_Get(var){ global %var%_cx := ExtractInteger(%var%_c,0) %var%_cy := ExtractInteger(%var%_c,4) } -SIZE_Set(var) -{ +SIZE_Set(var){ global VarSetCapacity(%var%_c, 4, 0) @@ -282,46 +249,44 @@ SIZE_Set(var) ;------------------------------------------------------------------------------------------------- ;typedef struct tagMENUITEMINFO { -; UINT cbSize; -; UINT fMask; -; UINT fType; -; UINT fState; -; UINT wID; -; HMENU hSubMenu; -; HBITMAP hbmpChecked; -; HBITMAP hbmpUnchecked; -; ULONG_PTR dwItemData; -; LPTSTR dwTypeData; -; UINT cch; +; UINT cbSize; +; UINT fMask; +; UINT fType; +; UINT fState; +; UINT wID; +; HMENU hSubMenu; +; HBITMAP hbmpChecked; +; HBITMAP hbmpUnchecked; +; ULONG_PTR dwItemData; +; LPTSTR dwTypeData; +; UINT cch; ; HBITMAP hbmpItem; -;} MENUITEMINFO, *LPMENUITEMINFO; -MENUITEMINFO_Get(var) -{ +;} MENUITEMINFO, *LPMENUITEMINFO; +MENUITEMINFO_Get(var){ global %var%_fMask := ExtractInteger(%var%,4) %var%_fType := ExtractInteger(%var%,8) - %var%_fState := ExtractInteger(%var%,12) - %var%_wID := ExtractInteger(%var%,16) - %var%_hSubMenu := ExtractInteger(%var%,20) - %var%_dwItemData := ExtractInteger(%var%,32) - %var%_dwTypeData := ExtractInteger(%var%,36) - %var%_hbmpItem := ExtractInteger(%var%,44) + %var%_fState := ExtractInteger(%var%,12) + %var%_wID := ExtractInteger(%var%,16) + %var%_hSubMenu := ExtractInteger(%var%,20) + %var%_dwItemData := ExtractInteger(%var%,32) + %var%_dwTypeData := ExtractInteger(%var%,36) + %var%_hbmpItem := ExtractInteger(%var%,44) } -MENUITEMINFO_Set(var) -{ +MENUITEMINFO_Set(var){ global VarSetCapacity(%var%, 48, 0) InsertInteger(48, %var%,0) - InsertInteger(%var%_fMask, %var%,4) - InsertInteger(%var%_fType, %var%,8) - InsertInteger(%var%_fState, %var%,12) - InsertInteger(%var%_wID, %var%,16) - InsertInteger(%var%_hSubMenu, %var%,20) - InsertInteger(%var%_dwItemData, %var%,32) - InsertInteger(%var%_dwTypeData, %var%,36) - InsertInteger(%var%_cch, %var%,40) - InsertInteger(%var%_hbmpItem, %var%,44) + InsertInteger(%var%_fMask, %var%,4) + InsertInteger(%var%_fType, %var%,8) + InsertInteger(%var%_fState, %var%,12) + InsertInteger(%var%_wID, %var%,16) + InsertInteger(%var%_hSubMenu, %var%,20) + InsertInteger(%var%_dwItemData, %var%,32) + InsertInteger(%var%_dwTypeData, %var%,36) + InsertInteger(%var%_cch, %var%,40) + InsertInteger(%var%_hbmpItem, %var%,44) } @@ -335,11 +300,10 @@ MENUITEMINFO_Set(var) ; DWORD dwContextHelpID; 20 ; ULONG_PTR dwMenuData; 24 ; -MENUINFO_Set(var) -{ - global - - VarSetCapacity(%var%, 28, 0) +MENUINFO_Set(var){ + global + + VarSetCapacity(%var%, 28, 0) InsertInteger(28, %var%, 0) InsertInteger(%var%_fMask, %var%, 4) InsertInteger(%var%_dwStyle, %var%, 8) @@ -348,9 +312,8 @@ MENUINFO_Set(var) InsertInteger(%var%_dwMenuData, %var%, 24) } -MENUINFO_Get(var) -{ - global +MENUINFO_Get(var){ + global %var%_fMask := ExtractInteger(%var%, 4) %var%_dwStyle := ExtractInteger(%var%, 8) diff --git a/lib-a_to_h/AVICAP.ahk b/lib-a_to_h/AVICAP.ahk index f3d8e8c4..bb749b42 100644 --- a/lib-a_to_h/AVICAP.ahk +++ b/lib-a_to_h/AVICAP.ahk @@ -1,4 +1,4 @@ -AVICAP_Startup() +AVICAP_Startup() { DllCall("LoadLibrary", "str", "avicap32.dll") } diff --git a/lib-a_to_h/A_caret.ahk b/lib-a_to_h/A_caret.ahk index 6fb994e4..4073eab4 100644 --- a/lib-a_to_h/A_caret.ahk +++ b/lib-a_to_h/A_caret.ahk @@ -1,4 +1,4 @@ -A_Caret(param, coordMode = "Screen") +A_Caret(param, coordMode = "Screen") { target_window := DllCall("GetForegroundWindow") If !target_window diff --git a/lib-a_to_h/AccV2.ahk b/lib-a_to_h/AccV2.ahk deleted file mode 100644 index ced5e93c..00000000 --- a/lib-a_to_h/AccV2.ahk +++ /dev/null @@ -1,674 +0,0 @@ -;Member Properties: {accChild,accChildCount,accDefaultAction,accDescription,accFocus,accHelp,accHelpTopic,accKeyboardShortcut,accName,accParent,accRole,accSelection,accState,accValue} -;accChild Read-only An IDispatch interface for the specified child, if one exists. All objects must support this property. See get_accChild. -;accChildCount Read-only The number of children that belong to this object. All objects must support this property. See get_accChildCount. -;accDefaultAction Read-only A string that describes the object's default action. Not all objects have a default action. See get_accDefaultAction. -;accDescription Read-only Note The accDescription property is not supported in the transition to UI Automation. Microsoft Active Accessibility servers and applications should not use it. A string that describes the visual appearance of the specified object. Not all objects have a description. -;accFocus Read-only The object that has the keyboard focus. All objects that receive the keyboard focus must support this property. See get_accFocus. -;accHelp Read-only A help string. Not all objects support this property. See get_accHelp. -;accHelpTopic Read-only Note The accHelpTopic property is deprecated and should not be used.The full path of the help file associated with the specified object and the identifier of the appropriate topic within that file. Not all objects support this property. -;accKeyboardShortcut Read-only The object's shortcut key or access key, also known as the mnemonic. All objects that have a shortcut key or an access key support this property. See get_accKeyboardShortcut. -;accName Read-only The name of the object. All objects support this property. See get_accName. -;accParent Read-only The IDispatch interface of the object's parent. All objects support this property. See get_accParent. -;accRole Read-only Information that describes the role of the specified object. All objects support this property. See get_accRole. -;accSelection Read-only The selected children of this object. All objects that support selection must support this property. See get_accSelection. -;accState Read-only The current state of the object. All objects support this property. See get_accState. -;accValue Read/write The value of the object. Not all objects have a value. See get_accValue, put_accValue. - -;Member Methods: {accDoDefaultAction,accHitTest,accLocation,accNavigate,accSelect} -;accDoDefaultAction Performs the specified object's default action. Not all objects have a default action. -;accHitTest Retrieves the child element or child object at a given point on the screen. All visual objects support this method. -;accLocation Retrieves the specified object's current screen location. All visual objects support this method. -;accNavigate Note The accNavigate method is deprecated and should not be used. Clients should use other methods and properties such as AccessibleChildren, get_accChild, get_accParent, and IEnumVARIANT. Traverses to another user interface element within a container and retrieves the object. All visual objects support this method. -;accSelect Modifies the selection or moves the keyboard focus of the specified object. All objects that support selection or receive the keyboard focus must support this method. - - - - -;------------------------------------------------------------------------------ -; Acc.ahk Standard Library -; by Sean -; Updated by jethrow: -; Modified ComObjEnwrap params from (9,pacc) --> (9,pacc,1) -; Changed ComObjUnwrap to ComObjValue in order to avoid AddRef (thanks fincs) -; Added Acc_GetRoleText & Acc_GetStateText -; Added additional functions - commented below -; Removed original Acc_Children function -; last updated 2/19/2012 -; Updated by Sancarn: -; Added all relevant enumerations -; Added IAccessible walking functionality e.g. -; acc_childrenFilter(oAcc, ACC_FILTERS.byDescription, "Amazing button") -; -; acc_childrenFilter(oAcc, Func("myAwesomeFunction"), true) -; myAwesomeFunction(oAcc,val){ -; return val -; } -; last updated 26/11/2017 -;------------------------------------------------------------------------------ - -;https://msdn.microsoft.com/en-us/library/windows/desktop/dd373606(v=vs.85).aspx -class ACC_OBJID{ - static WINDOW := 0x00000000 - static SYSMENU := 0xFFFFFFFF - static TITLEBAR := 0xFFFFFFFE - static MENU := 0xFFFFFFFD - static CLIENT := 0xFFFFFFFC - static VSCROLL := 0xFFFFFFFB - static HSCROLL := 0xFFFFFFFA - static SIZEGRIP := 0xFFFFFFF9 - static CARET := 0xFFFFFFF8 - static CURSOR := 0xFFFFFFF7 - static ALERT := 0xFFFFFFF6 - static SOUND := 0xFFFFFFF5 - static QUERYCLASSNAMEIDX := 0xFFFFFFF4 - static NATIVEOM := 0xFFFFFFF0 -} - -;https://msdn.microsoft.com/en-us/library/windows/desktop/dd373609(v=vs.85).aspx -class ACC_STATE { - static NORMAL := 0 - static UNAVAILABLE := 0x1 - static SELECTED := 0x2 - static FOCUSED := 0x4 - static PRESSED := 0x8 - static CHECKED := 0x10 - static MIXED := 0x20 - static INDETERMINATE := this.MIXED - static READONLY := 0x40 - static HOTTRACKED := 0x80 - static DEFAULT := 0x100 - static EXPANDED := 0x200 - static COLLAPSED := 0x400 - static BUSY := 0x800 - static FLOATING := 0x1000 - static MARQUEED := 0x2000 - static ANIMATED := 0x4000 - static INVISIBLE := 0x8000 - static OFFSCREEN := 0x10000 - static SIZEABLE := 0x20000 - static MOVEABLE := 0x40000 - static SELFVOICING := 0x80000 - static FOCUSABLE := 0x100000 - static SELECTABLE := 0x200000 - static LINKED := 0x400000 - static TRAVERSED := 0x800000 - static MULTISELECTABLE := 0x1000000 - static EXTSELECTABLE := 0x2000000 - static ALERT_LOW := 0x4000000 - static ALERT_MEDIUM := 0x8000000 - static ALERT_HIGH := 0x10000000 - static PROTECTED := 0x20000000 - static VALID := 0x7fffffff -} - -;https://msdn.microsoft.com/en-us/library/windows/desktop/dd373608(v=vs.85).aspx -class ACC_ROLE { - static TITLEBAR := 0x1 - static MENUBAR := 0x2 - static SCROLLBAR := 0x3 - static GRIP := 0x4 - static SOUND := 0x5 - static CURSOR := 0x6 - static CARET := 0x7 - static ALERT := 0x8 - static WINDOW := 0x9 - static CLIENT := 0xa - static MENUPOPUP := 0xb - static MENUITEM := 0xc - static TOOLTIP := 0xd - static APPLICATION := 0xe - static DOCUMENT := 0xf - static PANE := 0x10 - static CHART := 0x11 - static DIALOG := 0x12 - static BORDER := 0x13 - static GROUPING := 0x14 - static SEPARATOR := 0x15 - static TOOLBAR := 0x16 - static STATUSBAR := 0x17 - static TABLE := 0x18 - static COLUMNHEADER := 0x19 - static ROWHEADER := 0x1a - static COLUMN := 0x1b - static ROW := 0x1c - static CELL := 0x1d - static LINK := 0x1e - static HELPBALLOON := 0x1f - static CHARACTER := 0x20 - static LIST := 0x21 - static LISTITEM := 0x22 - static OUTLINE := 0x23 - static OUTLINEITEM := 0x24 - static PAGETAB := 0x25 - static PROPERTYPAGE := 0x26 - static INDICATOR := 0x27 - static GRAPHIC := 0x28 - static STATICTEXT := 0x29 - static TEXT := 0x2a - static PUSHBUTTON := 0x2b - static CHECKBUTTON := 0x2c - static RADIOBUTTON := 0x2d - static COMBOBOX := 0x2e - static DROPLIST := 0x2f - static PROGRESSBAR := 0x30 - static DIAL := 0x31 - static HOTKEYFIELD := 0x32 - static SLIDER := 0x33 - static SPINBUTTON := 0x34 - static DIAGRAM := 0x35 - static ANIMATION := 0x36 - static EQUATION := 0x37 - static BUTTONDROPDOWN := 0x38 - static BUTTONMENU := 0x39 - static BUTTONDROPDOWNGRID := 0x3a - static WHITESPACE := 0x3b - static PAGETABLIST := 0x3c - static CLOCK := 0x3d - static SPLITBUTTON := 0x3e - static IPADDRESS := 0x3f - static OUTLINEBUTTON := 0x40 -} - -;https://msdn.microsoft.com/en-us/library/windows/desktop/dd373600(v=vs.85).aspx -class ACC_NAVDIR { - static MIN := 0x0 - static UP := 0x1 - static DOWN := 0x2 - static LEFT := 0x3 - static RIGHT := 0x4 - static NEXT := 0x5 - static PREVIOUS := 0x6 - static FIRSTCHILD := 0x7 - static LASTCHILD := 0x8 - static MAX := 0x9 -} - -;https://msdn.microsoft.com/en-us/library/windows/desktop/dd373634(v=vs.85).aspx -class ACC_SELECTIONFLAG { - static NONE := 0x0 - static TAKEFOCUS := 0x1 - static TAKESELECTION := 0x2 - static EXTENDSELECTION := 0x4 - static ADDSELECTION := 0x8 - static REMOVESELECTION := 0x10 - static VALID := 0x1f -} - -;MSAA Events list: -; https://msdn.microsoft.com/en-us/library/windows/desktop/dd318066(v=vs.85).aspx -;What are win events: -; https://msdn.microsoft.com/en-us/library/windows/desktop/dd373868(v=vs.85).aspx -;System-Level and Object-level events: -; https://msdn.microsoft.com/en-us/library/windows/desktop/dd373657(v=vs.85).aspx -;Console accessibility: -; https://msdn.microsoft.com/en-us/library/ms971319.aspx -class ACC_EVENT { - static MIN := 0x00000001 - static MAX := 0x7FFFFFFF - static SYSTEM_SOUND := 0x0001 - static SYSTEM_ALERT := 0x0002 - static SYSTEM_FOREGROUND := 0x0003 - static SYSTEM_MENUSTART := 0x0004 - static SYSTEM_MENUEND := 0x0005 - static SYSTEM_MENUPOPUPSTART := 0x0006 - static SYSTEM_MENUPOPUPEND := 0x0007 - static SYSTEM_CAPTURESTART := 0x0008 - static SYSTEM_CAPTUREEND := 0x0009 - static SYSTEM_MOVESIZESTART := 0x000A - static SYSTEM_MOVESIZEEND := 0x000B - static SYSTEM_CONTEXTHELPSTART := 0x000C - static SYSTEM_CONTEXTHELPEND := 0x000D - static SYSTEM_DRAGDROPSTART := 0x000E - static SYSTEM_DRAGDROPEND := 0x000F - static SYSTEM_DIALOGSTART := 0x0010 - static SYSTEM_DIALOGEND := 0x0011 - static SYSTEM_SCROLLINGSTART := 0x0012 - static SYSTEM_SCROLLINGEND := 0x0013 - static SYSTEM_SWITCHSTART := 0x0014 - static SYSTEM_SWITCHEND := 0x0015 - static SYSTEM_MINIMIZESTART := 0x0016 - static SYSTEM_MINIMIZEEND := 0x0017 - static CONSOLE_CARET := 0x4001 - static CONSOLE_UPDATE_REGION := 0x4002 - static CONSOLE_UPDATE_SIMPLE := 0x4003 - static CONSOLE_UPDATE_SCROLL := 0x4004 - static CONSOLE_LAYOUT := 0x4005 - static CONSOLE_START_APPLICATION := 0x4006 - static CONSOLE_END_APPLICATION := 0x4007 - static OBJECT_CREATE := 0x8000 - static OBJECT_DESTROY := 0x8001 - static OBJECT_SHOW := 0x8002 - static OBJECT_HIDE := 0x8003 - static OBJECT_REORDER := 0x8004 - static OBJECT_FOCUS := 0x8005 - static OBJECT_SELECTION := 0x8006 - static OBJECT_SELECTIONADD := 0x8007 - static OBJECT_SELECTIONREMOVE := 0x8008 - static OBJECT_SELECTIONWITHIN := 0x8009 - static OBJECT_STATECHANGE := 0x800A - static OBJECT_LOCATIONCHANGE := 0x800B - static OBJECT_NAMECHANGE := 0x800C - static OBJECT_DESCRIPTIONCHANGE := 0x800D - static OBJECT_VALUECHANGE := 0x800E - static OBJECT_PARENTCHANGE := 0x800F - static OBJECT_HELPCHANGE := 0x8010 - static OBJECT_DEFACTIONCHANGE := 0x8011 - static OBJECT_ACCELERATORCHANGE := 0x8012 -} - -class VT_CONSTANTS { - static EMPTY := 0x0 ; No value - static NULL := 0x1 ; SQL-style Null - static I2 := 0x2 ; 16-bit signed int - static I4 := 0x3 ; 32-bit signed int - static R4 := 0x4 ; 32-bit floating-point number - static R8 := 0x5 ; 64-bit floating-point number - static CY := 0x6 ; Currency - static DATE := 0x7 ; Date - static BSTR := 0x8 ; COM string (Unicode string with length prefix) - static DISPATCH := 0x9 ; COM object - static ERROR := 0xA ; Error code (32-bit integer) - static BOOL := 0xB ; Boolean True (-1) or False (0) - static VARIANT := 0xC ; VARIANT (must be combined with VT_ARRAY or VT_BYREF) - static UNKNOWN := 0xD ; IUnknown interface pointer - static DECIMAL := 0xE ; (not supported) - static I1 := 0x10 ; 8-bit signed int - static UI1 := 0x11 ; 8-bit unsigned int - static UI2 := 0x12 ; 16-bit unsigned int - static UI4 := 0x13 ; 32-bit unsigned int - static I8 := 0x14 ; 64-bit signed int - static UI8 := 0x15 ; 64-bit unsigned int - static INT := 0x16 ; Signed machine int - static UINT := 0x17 ; Unsigned machine int - static RECORD := 0x24 ; User-defined type -- NOT SUPPORTED - static ARRAY := 0x2000 ; SAFEARRAY - static BYREF := 0x4000 ; Pointer to another type of value -} - -class ACC_FILTERS { - byDefaultAction(oAcc,action){ - b := oAcc.accDefaultAction = action - return b - } - - byDescription(oAcc,desc){ - b := oAcc.accDescription = desc - return b - } - - byValue(oAcc,value){ - b := oAcc.accValue = value - return b - } - - byHelp(oAcc,help){ - b := oAcc.accHelp = help - } - - byState(oAcc,state){ - return oAcc.accState & state - } - - byRole(oAcc,role){ - b := oAcc.accRole = role - return b - } - - byName(oAcc,name){ - b := oAcc.accName = name - return b - } - - byRegex(oAcc,rx){ - info := oAcc.accName . ";" - . oAcc.accHelp . ";" - . oAcc.accValue ";" - . oAcc.accDescription . ";" - . oAcc.accDefaultAction - return RegexMatch(Haystack, rx) > 0 - } -} - - -Acc_Init() { - Static h := DllCall("LoadLibrary","Str","oleacc","Ptr") -} - -Acc_ObjectFromEvent(ByRef _idChild_, hWnd, idObject, idChild) { - Acc_Init() - if (DllCall("oleacc\AccessibleObjectFromEvent" - , "Ptr", hWnd - , "UInt", idObject - , "UInt", idChild - , "Ptr*", pacc - , "Ptr", VarSetCapacity(varChild, 8 + 2 * A_PtrSize, 0) * 0 + &varChild) = 0) { - _idChild_:=NumGet(varChild,8,"UInt") - return ComObjEnwrap(9,pacc,1) - } -} - -Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") { - Acc_Init() - if (DllCall("oleacc\AccessibleObjectFromPoint" - , "Int64", x == ""||y=="" - ? 0 * DllCall("GetCursorPos","Int64*",pt) + pt - : x & 0xFFFFFFFF | y << 32 - , "Ptr*", pacc - , "Ptr", VarSetCapacity(varChild, 8 + 2 * A_PtrSize, 0) * 0 + &varChild) = 0) { - _idChild_:=NumGet(varChild,8,"UInt") - return ComObjEnwrap(9,pacc,1) - } -} - -Acc_ObjectFromWindow(hWnd, idObject = -4) { - Acc_Init() - if (DllCall("oleacc\AccessibleObjectFromWindow" - , "Ptr", hWnd - , "UInt", idObject &= 0xFFFFFFFF - , "Ptr", -VarSetCapacity(IID,16) - + NumPut(idObject == 0xFFFFFFF0 - ? 0x46000000000000C0 - : 0x719B3800AA000C81 - , NumPut(idObject == 0xFFFFFFF0 - ? 0x0000000000020400 - : 0x11CF3C3D618736E0,IID,"Int64"),"Int64") - , "Ptr*", pacc) = 0) - return ComObjEnwrap(9,pacc,1) -} - -Acc_WindowFromObject(pacc) { - if (DllCall("oleacc\WindowFromAccessibleObject" - , "Ptr", IsObject(pacc) ? ComObjValue(pacc) : pacc - , "Ptr*", hWnd) = 0) - return hWnd -} - -;Implement this? -; IAccessibleHandler::AccessibleObjectFromID - -Acc_GetRoleText(nRole) { - nSize := DllCall("oleacc\GetRoleText" - , "Uint", nRole - , "Ptr", 0 - , "Uint", 0) - VarSetCapacity(sRole, (A_IsUnicode ? 2 : 1) * nSize) - DllCall("oleacc\GetRoleText" - , "Uint", nRole - , "str", sRole - , "Uint", nSize+1) - return sRole -} - -Acc_GetStateText(nState) { - nSize := DllCall("oleacc\GetStateText" - , "Uint", nState - , "Ptr", 0 - , "Uint", 0) - VarSetCapacity(sState, (A_IsUnicode ? 2 : 1) * nSize) - DllCall("oleacc\GetStateText" - , "Uint", nState - , "str", sState - , "Uint", nSize+1) - return sState -} - -Acc_SetWinEventHook(eventMin, eventMax, pCallback) { - Return DllCall("SetWinEventHook", "Uint", eventMin, "Uint", eventMax, "Uint", 0, "Ptr", pCallback, "Uint", 0, "Uint", 0, "Uint", 0) -} - -Acc_UnhookWinEvent(hHook) { - Return DllCall("UnhookWinEvent", "Ptr", hHook) -} -/* Win Events: - pCallback := RegisterCallback("WinEventProc") - WinEventProc(hHook, event, hWnd, idObject, idChild, eventThread, eventTime) - { - Critical - Acc := Acc_ObjectFromEvent(_idChild_, hWnd, idObject, idChild) - ; Code Here: - } -*/ - -; Written by jethrow -Acc_Role(Acc, ChildId=0) { - try return ComObjType(Acc,"Name") = "IAccessible" - ? Acc_GetRoleText(Acc.accRole(ChildId)) - : "invalid object" -} - -Acc_State(Acc, ChildId=0) { - try return ComObjType(Acc,"Name") = "IAccessible" - ? Acc_GetStateText(Acc.accState(ChildId)) - : "invalid object" -} - -Acc_Location(Acc, ChildId=0) { ; adapted from Sean's code - try Acc.accLocation(ComObj(0x4003, & x := 0) - , ComObj(0x4003,&y:=0) - , ComObj(0x4003,&w:=0) - , ComObj(0x4003,&h:=0) - , ChildId) - catch - return - return { x:NumGet(x,0,"int") - , y:NumGet(y,0,"int") - , w:NumGet(w,0,"int") - , h:NumGet(h,0,"int") - , pos:"x" NumGet(x,0,"int") - . " y" NumGet(y,0,"int") - . " w" NumGet(w,0,"int") - . " h" NumGet(h,0,"int") } -} - -Acc_Parent(Acc) { - try parent := Acc.accParent - return parent ? Acc_Query(parent) : -} - -Acc_Child(Acc, ChildId=0) { - try child := Acc.accChild(ChildId) - return child ? Acc_Query(child) : -} - -; thanks Lexikos - www.autohotkey.com/forum/viewtopic.php?t=81731&p=509530#509530 -Acc_Query(Acc) { - try return ComObj(9, ComObjQuery(Acc, "{618736e0-3c3d-11cf-810c-00aa00389b71}"), 1) -} - -;Acc_GetChild(Acc_or_Hwnd, child_path) { -; Acc := WinExist("ahk_id" Acc_or_Hwnd)? Acc_ObjectFromWindow(Acc_or_Hwnd):Acc_or_Hwnd -; if ComObjType(Acc,"Name") = "IAccessible" { -; Loop Parse, child_path, csv -; Acc := A_LoopField="P"? Acc_Parent(Acc):Acc_Children(Acc)[A_LoopField] -; return Acc -; } -;} - - -Acc_Error(p="") { - static setting:=0 - return p=""?setting:setting:=p -} -Acc_Children(Acc) { - if ComObjType(Acc,"Name") != "IAccessible" - ErrorLevel := "Invalid IAccessible Object" - else { - Acc_Init(), cChildren:=Acc.accChildCount, Children:=[], ErrorLevel= - if DllCall("oleacc\AccessibleChildren", "Ptr",ComObjValue(Acc), "Int",0, "Int",cChildren, "Ptr",VarSetCapacity(varChildren,cChildren*(8+2*A_PtrSize),0)*0+&varChildren, "Int*",cChildren)=0 { - Loop %cChildren% - { - i:=(A_Index-1)*(A_PtrSize*2+8)+8 - child:=NumGet(varChildren,i) - - ;I assume NumGet(varChildren,i-8) is ComObjType ~Sancarn - ComType := NumGet(varChildren,i-8) - if (ComType = VT_CONSTANTS.DISPATCH) { - Children.push(Acc_Query(child)) - ObjRelease(child) - } else if (ComType = VT_CONSTANTS.I4) { - Children.push(new ACC_ChildProxy(Acc,child)) - } else { - ErrorLevel := "Unknown ComType: " ComType - Children.push(child) - } - } - return Children.MaxIndex()?Children: - } else - ErrorLevel := "AccessibleChildren DllCall Failed" - } - if Acc_Error() - throw Exception(ErrorLevel,-1) -} -Acc_ChildrenByRole(Acc, Role) { - if ComObjType(Acc,"Name")!="IAccessible" - ErrorLevel := "Invalid IAccessible Object" - else { - Acc_Init(), cChildren:=Acc.accChildCount, Children:=[] - if DllCall("oleacc\AccessibleChildren", "Ptr",ComObjValue(Acc), "Int",0, "Int",cChildren, "Ptr",VarSetCapacity(varChildren,cChildren*(8+2*A_PtrSize),0)*0+&varChildren, "Int*",cChildren)=0 { - Loop %cChildren% { - i:=(A_Index-1)*(A_PtrSize*2+8)+8, child:=NumGet(varChildren,i) - if NumGet(varChildren,i-8)=9 - AccChild:=Acc_Query(child), ObjRelease(child), Acc_Role(AccChild)=Role?Children.Insert(AccChild): - else - Acc_Role(Acc, child)=Role?Children.Insert(child): - } - return Children.MaxIndex()?Children:, ErrorLevel:=0 - } else - ErrorLevel := "AccessibleChildren DllCall Failed" - } - if Acc_Error() - throw Exception(ErrorLevel,-1) -} -Acc_Get(Cmd, ChildPath="", ChildID=0, WinTitle="", WinText="", ExcludeTitle="", ExcludeText="") { - static properties := {Action:"DefaultAction", DoAction:"DoDefaultAction", Keyboard:"KeyboardShortcut"} - AccObj := IsObject(WinTitle)? WinTitle - : Acc_ObjectFromWindow( WinExist(WinTitle, WinText, ExcludeTitle, ExcludeText), 0 ) - if ComObjType(AccObj, "Name") != "IAccessible" - ErrorLevel := "Could not access an IAccessible Object" - else { - StringReplace, ChildPath, ChildPath, _, %A_Space%, All - AccError:=Acc_Error(), Acc_Error(true) - Loop Parse, ChildPath, ., %A_Space% - try { - if A_LoopField is digit - Children:=Acc_Children(AccObj), m2:=A_LoopField ; mimic "m2" output in else-statement - else - RegExMatch(A_LoopField, "(\D*)(\d*)", m), Children:=Acc_ChildrenByRole(AccObj, m1), m2:=(m2?m2:1) - if Not Children.HasKey(m2) - throw - AccObj := Children[m2] - } catch { - ErrorLevel:="Cannot access ChildPath Item #" A_Index " -> " A_LoopField, Acc_Error(AccError) - if Acc_Error() - throw Exception("Cannot access ChildPath Item", -1, "Item #" A_Index " -> " A_LoopField) - return - } - Acc_Error(AccError) - StringReplace, Cmd, Cmd, %A_Space%, , All - properties.HasKey(Cmd)? Cmd:=properties[Cmd]: - try { - if (Cmd = "Location") - AccObj.accLocation(ComObj(0x4003,&x:=0), ComObj(0x4003,&y:=0), ComObj(0x4003,&w:=0), ComObj(0x4003,&h:=0), ChildId) - , ret_val := "x" NumGet(x,0,"int") " y" NumGet(y,0,"int") " w" NumGet(w,0,"int") " h" NumGet(h,0,"int") - else if (Cmd = "Object") - ret_val := AccObj - else if Cmd in Role,State - ret_val := Acc_%Cmd%(AccObj, ChildID+0) - else if Cmd in ChildCount,Selection,Focus - ret_val := AccObj["acc" Cmd] - else - ret_val := AccObj["acc" Cmd](ChildID+0) - } catch { - ErrorLevel := """" Cmd """ Cmd Not Implemented" - if Acc_Error() - throw Exception("Cmd Not Implemented", -1, Cmd) - return - } - return ret_val, ErrorLevel:=0 - } - if Acc_Error() - throw Exception(ErrorLevel,-1) -} - -acc_childrenByName(oAccessible, name,returnOne=false){ - items:=Acc_Children(oAccessible) - results := [] - for k,item in items - { - if item.accName = name { - if returnOne { - return item - } - results.push(item) - } - } - return results -} - -acc_childrenFilter(oAcc, fCondition, value=0, returnOne=false, obj=0){ - - items:=Acc_Children(oAcc) - results := [] - if !IsFunc(fCondition) - return 0 - if obj =0 - obj:=ACC_FILTERS - - methodCallConvention = instr(fCondition.name, ".") > 0 - - for k,item in items - { - ;fCondition(this ==> stores variables && other methods of object,item,value) - if methodCallConvention { - condition := fCondition.call(obj,item,value) - } else { - condition := fCondition.call(item,value) - } - if condition { - if returnOne { - return item - } - results.push(item) - } - } - return results -} - -acc_getRootElement(){ - return acc_ObjectFromWindow(0x10010) ;Root object window handle always appears to be 0x10010 -} - -class ACC_ChildProxy { - __New(oAccParent,id){ - this.__accParent := oAccParent - this.__accChildID := id - this.accDefaultAction := oAccParent.accDefaultAction(id) - this.accDescription := oAccParent.accDescription(id) - this.accHelp := oAccParent.accHelp(id) - this.accHelpTopic := oAccParent.accHelpTopic(id) - this.accKeyboardShortcut := oAccParent.accKeyboardShortcut(id) - this.accName := oAccParent.accName(id) - this.accParent := oAccParent - this.accRole := oAccParent.accRole(id) - this.accState := oAccParent.accState(id) - this.accValue := oAccParent.accValue(id) - this.accFocus := this.accState && ACC_STATE.FOCUSED - } - - accDoDefaultAction(){ - return this.__accParent.accDoDefaultAction(this.__accChildID) - } - - accHitTest(){ - return false - } - accLocation(ByRef left, Byref top, ByRef width, ByRef height){ - return this.__accParent.accLocation(left, top, width, height, this.__accChildID) - } - accNavigate(){ - return this.__accParent.accNavigate(navDir,this.__accChildID) - } - accSelect(flagsSelect){ - return this.__accParent.accSelect(flagsSelect,this.__accChildID) - } -} diff --git a/lib-a_to_h/ActiveX.ahk b/lib-a_to_h/ActiveX.ahk index 0131b053..b602a968 100644 --- a/lib-a_to_h/ActiveX.ahk +++ b/lib-a_to_h/ActiveX.ahk @@ -1,6 +1,6 @@ /* -COM색Cu by s点y[WǗl - Ver 3 +COM‘€ìƒ‰ƒCƒuƒ‰ƒŠ by —¬s‚点‚éƒy[ƒWŠÇ—l + Ver 3ƒÀ */ ActiveX(){ @@ -19,15 +19,15 @@ ActiveX(){ /* ********************************** - ėpǗ + ”Ä—pƒƒ‚ƒŠŠÇ— ********************************** */ -;mۂ|C^Ԃ +;ƒƒ‚ƒŠ‚ðŠm•Û‚µƒ|ƒCƒ“ƒ^‚ð•Ô‚· Malloc(size,flag=0x40){ return DllCall("kernel32.dll\GlobalAlloc","UInt",flag,"UInt",size,"UInt") } -;|C^Ŏw肳ꂽ +;ƒ|ƒCƒ“ƒ^‚ÅŽw’肳‚ꂽƒƒ‚ƒŠ‚ð‰ð•ú‚·‚é Free(p){ DllCall("kernel32.dll\GlobalFree",UInt,p,UInt) } @@ -35,11 +35,11 @@ Free(p){ /* ********************************** - GUID֘A + GUIDŠÖ˜A ********************************** */ -;CLSID񂩂GUID\̂𐶐AhX𓾂() +;CLSID•¶Žš—ñ‚©‚çGUID\‘¢‘̂𐶐¬‚µƒAƒhƒŒƒX‚𓾂é(‰¼) GUID(string){ size:=DllCall("kernel32.dll\MultiByteToWideChar","UInt",0,"UInt",0,"Str",string,"Int",-1,"UInt",0,"Int",0) wstr:=Malloc((size+1)*2) @@ -49,7 +49,7 @@ GUID(string){ Free(wstr) return ptr } -;ProgID񂩂GUID\̂𐶐AhX𓾂() +;ProgID•¶Žš—ñ‚©‚çGUID\‘¢‘̂𐶐¬‚µƒAƒhƒŒƒX‚𓾂é(‰¼) ProgID(string){ size:=DllCall("kernel32.dll\MultiByteToWideChar","UInt",0,"UInt",0,"Str",string,"Int",-1,"UInt",0,"Int",0) wstr:=Malloc((size+1)*2) @@ -60,7 +60,7 @@ ProgID(string){ return ptr } -;GUID\̂𕶎ɕϊ +;GUID\‘¢‘̂𕶎š—ñ‚É•ÏŠ· fromGUID(ByRef guid){ ptr:=Malloc(80) DllCall("ole32.dll\StringFromGUID2","UInt",guid,"UInt",ptr,"Int",80) @@ -71,12 +71,12 @@ fromGUID(ByRef guid){ /* ********************************** - Unicode֘A + UnicodeŠÖ˜A ********************************** */ -;񂩂Unicodeւ̕ϊs -;ԂlUnicodeւ̃|C^ +;•¶Žš—ñ‚©‚ç‚ÉUnicode‚Ö‚Ì•ÏŠ·‚ðs‚¤ +;•Ô‚è’l‚ÍUnicode•¶Žš—ñ‚ւ̃|ƒCƒ“ƒ^ mb2wc(mbstr){ size:=(DllCall("kernel32.dll\MultiByteToWideChar","UInt",0,"UInt",0,"Str",mbstr,"Int",-1,"UInt",0,"Int",0)+1)*2 wstr:=Malloc(size) @@ -89,8 +89,8 @@ mb2wc_ref(ByRef mbstr){ DllCall("kernel32.dll\MultiByteToWideChar","UInt",0,"UInt",0,"Str",mbstr,"Int",-1,"UInt",wstr,"Int",size) return wstr } -;UnicodeAnsiւ̕ϊs -;Ԃl͕ +;Unicode‚©‚çAnsi•¶Žš—ñ‚Ö‚Ì•ÏŠ·‚ðs‚¤ +;•Ô‚è’l‚Í•¶Žš—ñ wc2mb(wstr){ size:=DllCall("kernel32.dll\WideCharToMultiByte","UInt",0,"UInt",0,"UInt",wstr,"Int",-1,"UInt",0,"Int",0,"UInt",0,"UInt",0) VarSetCapacity(mbstr,size) @@ -108,7 +108,7 @@ wc2mb_ref(wstr,ByRef mbstr){ /* ********************************** - COMėp + COM”Ä—p ********************************** */ @@ -171,23 +171,23 @@ ReleaseL(p1,p2=-1,p3=-1,p4=-1,p5=-1,p6=-1,p7=-1,p8=-1,p9=-1){ /* ********************************** - VARIANT֘A + VARIANTŠÖ˜A ********************************** */ -;AnsiBSTR`ɕϊ +;Ansi•¶Žš—ñ‚ðBSTRŒ`Ž®‚É•ÏŠ·‚·‚é toBSTR(str){ oc:=mb2wc(str) res:=DllCall("oleaut32.dll\SysAllocString","UInt",oc,"UInt") Free(oc) return res } -;BSTRAnsiɕϊ +;BSTR‚ðAnsi•¶Žš—ñ‚É•ÏŠ·‚·‚é fromBSTR(bstr){ return wc2mb(bstr) } -;BSTR(VariantClearłĂ͂Ȃ̂ősv) +;BSTR‚ð‰ð•ú‚·‚é(VariantClear“à‚Å‚â‚Á‚Ä‚­‚ê‚é‚Í‚¸‚È‚Ì‚Å‘½•ª•s—v) freeBSTR(bstr,get=0){ if(get!=0){ wc2mb_ref(bstr,res) @@ -204,11 +204,11 @@ vNull(){ vObj(obj){ return 0x7FFFFFFF00000000 | obj } -;VARIANTɕϊ(typeɂ͕ϊ^w -;settypew肷ƁA^ϊŁA^lƂsettypeŎw肵^i[ +;VARIANT‚É•ÏŠ·(type‚É‚Í•ÏŠ·‚µ‚½‚¢Œ^‚ðŽw’è +;settype‚ðŽw’è‚·‚é‚ƁAŒ^•ÏŠ·‚µ‚½ã‚ŁAŒ^‚ðŽ¦‚·’l‚Æ‚µ‚Äsettype‚ÅŽw’肵‚½Œ^‚ðŠi”[‚·‚é toVariant(value,variant=0,type=0x08,settype=-1){ global LOCALE_USER_DEFAULT - ;i[揉 + ;Ši”[æ‰Šú‰» if(variant=0){ dest:=Malloc(16) }else{ @@ -226,12 +226,12 @@ toVariant(value,variant=0,type=0x08,settype=-1){ NumPut(value - 0x7FFFFFFF00000000,dest+8,0) } }else{ - ;̏ꍇ + ;•¶Žš—ñ‚̏ꍇ NumPut(0x08,dest+0,0,"UShort") NumPut(toBSTR(value),dest+8,0) } }else{ - ;ȊǑ^̏ꍇ + ;‚»‚êˆÈŠO‚ÌŒ^‚̏ꍇ tmp:=toVariant(value) DllCall("oleaut32.dll\VariantChangeTypeEx","UInt",dest,"UInt",tmp,"UInt",LOCALE_USER_DEFAULT,"UShort",0,"UShort",type) if(settype!=-1){ @@ -242,27 +242,27 @@ toVariant(value,variant=0,type=0x08,settype=-1){ return dest } -;VARIANTɊi[ꂽeʏAutoHotkeyϐƂĎ擾 -;rawsize1,2,4̏ꍇAi[Ă鐶̒l擾 -;rawsize0̏ꍇAɕϊĎ擾 +;VARIANT‚ÉŠi”[‚³‚ꂽ“à—e‚ð’ʏí‚ÌAutoHotkey•Ï”‚Æ‚µ‚Ď擾 +;rawsize‚ª1,2,4‚̏ꍇAŠi”[‚³‚ê‚Ä‚¢‚鐶‚Ì’l‚ðŽæ“¾ +;rawsize‚ª0‚̏ꍇA•¶Žš—ñ‚É•ÏŠ·‚µ‚Ď擾 fromVariant(var,rawsize=0){ global LOCALE_USER_DEFAULT if(rawsize=0){ type:=NumGet(var+0,0,"UShort") if((type=9)||(type=13)){ - ;COMIuWFNg + ;COMƒIƒuƒWƒFƒNƒg pObj:=NumGet(var+8) AddRef(pObj) return pObj }else if(type>0xFF){ - ;|C^͔z (b) + ;ƒ|ƒCƒ“ƒ^‚à‚µ‚­‚Í”z—ñ (Žb’è) return NumGet(var+8) }else{ - ;VT_BSTRɕϊ + ;VT_BSTR‚É•ÏŠ· var2:=Malloc(16) DllCall("oleaut32.dll\VariantInit","UInt",var2) DllCall("oleaut32.dll\VariantChangeTypeEx","UInt",var2,"UInt",var,"UInt",LOCALE_USER_DEFAULT,"UShort",0,"UShort",0x8) - ;lAnsiɕϊ + ;’l‚ðAnsi‚É•ÏŠ· wc2mb_ref(NumGet(var2+8),res) vFree(var2) return res @@ -278,7 +278,7 @@ fromVariant(var,rawsize=0){ } } -;VARIANT(get-1ȊOw肷ƁAl擾ĕԂ) +;VARIANT‚ð‰ð•ú(get‚É-1ˆÈŠO‚ðŽw’è‚·‚é‚ƁA’l‚ðŽæ“¾‚µ‚Ä•Ô‚·) vFree(ByRef var,get=-1){ if(get!=-1){ res:=fromVariant(var,get) @@ -293,10 +293,10 @@ vFree(ByRef var,get=-1){ /* ********************************** - IDispatchp + IDispatch—p ********************************** */ -;IuWFNg𐶐 +;ƒIƒuƒWƒFƒNƒg‚𐶐¬‚·‚é CreateObject(clsid,iid="",CLSCTX=5){ ;CLSCTX_SERVER global IID_IDispatch if(!IID_IDispatch){ @@ -324,7 +324,7 @@ CreateObject(clsid,iid="",CLSCTX=5){ ;CLSCTX_SERVER } -;objnameoDispatchID𓾂 +;obj‚ªŽ‚Ânameƒƒ“ƒo‚ÌDispatchID‚𓾂é GetDispID(ByRef obj,name){ global IID_NULL,LOCALE_USER_DEFAULT wName:=mb2wc_ref(name) @@ -333,9 +333,9 @@ GetDispID(ByRef obj,name){ Free(wName) return dispid } -;DISPPARAMS𐶐 +;ˆø”‚©‚çDISPPARAMS‚𐶐¬ CreateParam(ByRef p1, ByRef p2, ByRef p3, ByRef p4, ByRef p5, ByRef p6, ByRef p7, ByRef p8, ByRef p9, ByRef p10){ - ;𐔂(0xFFFFFFFFFFFFFFFF̑O܂ł^ꂽ) + ;ˆø”‚𐔂¦‚é(0xFFFFFFFFFFFFFFFF‚Ì‘O‚Ü‚Å‚ª—^‚¦‚ç‚ꂽˆø”) num:=0 format:=A_FormatInteger SetFormat,Integer,D @@ -345,13 +345,13 @@ CreateParam(ByRef p1, ByRef p2, ByRef p3, ByRef p4, ByRef p5, ByRef p6, ByRef p7 } num++ } - ;num‚VARIANTARGz쐬 + ;numŒÂ‚ÌVARIANTARG”z—ñ‚ðì¬ if(num=0){ pvArgs:=0 }else{ pvArgs:=Malloc(16*num) ptr:=pvArgs+16*(num-1) - ;ZbgĂ + ;ˆø”‚ðƒZƒbƒg‚µ‚Ä‚¢‚­ Loop,%num%{ toVariant(p%A_Index%,ptr) ptr-=16 @@ -359,30 +359,30 @@ CreateParam(ByRef p1, ByRef p2, ByRef p3, ByRef p4, ByRef p5, ByRef p6, ByRef p7 } SetFormat,Integer,%format% - ;DISPPARAMS쐬 + ;DISPPARAMSì¬ res:=Malloc(16) NumPut(pvArgs, res+0) NumPut(num, res+8) return res } -;DISPPARAMS +;DISPPARAMS‚ð‰ð•ú FreeParam(ByRef params){ num:=NumGet(params+8) pvArgs:=NumGet(params+0) pvNArgs:=NumGet(params+4) - ;VARIANTARG̉ + ;VARIANTARG‚̉ð•úˆ— ptr:=pvArgs Loop,%num%{ vFree(ptr) ptr+=16 } - ;VARIANTARĜ̉ + ;VARIANTARGŽ©‘̂̉ð•ú Free(ptr) - ;rgdispidNamedArgs̉ + ;rgdispidNamedArgs‚̉ð•ú if(pvNArgs!=0){ Free(pvNArgs) } - ;{̃ + ;–{‘̃ƒ‚ƒŠ‰ð•ú Free(params) } Invoke(ByRef pObj,ByRef dispid,mode,ByRef params){ @@ -414,7 +414,7 @@ pp(obj,name,p1=0xFFFFFFFFFFFFFFFF,p2=0xFFFFFFFFFFFFFFFF,p3=0xFFFFFFFFFFFFFFFF,p4 p6=0xFFFFFFFFFFFFFFFF,p7=0xFFFFFFFFFFFFFFFF,p8=0xFFFFFFFFFFFFFFFF,p9=0xFFFFFFFFFFFFFFFF,p10=0xFFFFFFFFFFFFFFFF){ if((dispid:=GetDispID(obj,name))!=0){ params:=CreateParam(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) - ;rgdispidNamedArgs̃Zbg + ;rgdispidNamedArgs‚̃Zƒbƒg namedArgs:=Malloc(4) NumPut(namedArgs, params+4) NumPut(0xFFFFFFFD, namedArgs+0) @@ -506,7 +506,7 @@ EVENTSINK_Destructor(pEv){ /* ********************************** - RlNgp̃C^[tFCXID + ƒRƒlƒNƒg—p‚̃Cƒ“ƒ^[ƒtƒFƒCƒXID‚ðŒŸõ ********************************** */ find_iid(ByRef obj,ByRef itf,ByRef iid,ByRef refPTypeInfo=0xFFFFFFFFFFFFFFFF){ @@ -748,7 +748,7 @@ evReturn(ByRef res,value){ /* ********************************** - fBXpb`IuWFNg쐬 + ƒfƒBƒXƒpƒbƒ`ƒIƒuƒWƒFƒNƒgì¬ ********************************** */ diff --git a/lib-a_to_h/AddCommas.ahk b/lib-a_to_h/AddCommas.ahk index 04a0f822..d938986e 100644 --- a/lib-a_to_h/AddCommas.ahk +++ b/lib-a_to_h/AddCommas.ahk @@ -1,4 +1,4 @@ -;******************** +;******************** ;* * ;* Add Commas * ;* * @@ -20,7 +20,7 @@ ; ============ ; Formatted number (string) ; -; +; ; ; Calls To Other Functions ; ======================== @@ -28,8 +28,7 @@ ; ; ;------------------------------------------------------------------------------- -AddCommas(p_Number) - { +AddCommas(p_Number) { ;[==============] ;[ Initialize ] ;[==============] @@ -53,11 +52,11 @@ AddCommas(p_Number) { if (mod(l_IntLen-A_Index,3)=0 and A_Index<>l_IntLen) l_Number:=l_Number . A_LoopField . "," - else + else l_Number:=l_Number . A_LoopField } } - else + else l_Number:=l_Number . "." . A_LoopField } @@ -67,4 +66,4 @@ AddCommas(p_Number) ;[==========================] l_Return:=l_Sign . l_Number return l_Return - } + } diff --git a/lib-a_to_h/AhkMini.ahk b/lib-a_to_h/AhkMini.ahk index 084e2912..51f7bdd6 100644 --- a/lib-a_to_h/AhkMini.ahk +++ b/lib-a_to_h/AhkMini.ahk @@ -1,3 +1,3 @@ -ahkmini(script:="",param:="",IsFile:=0,dll:="FC2328B39C194A4788051A3B01B1E7D5"){ +ahkmini(script:="",param:="",IsFile:=0,dll:="FC2328B39C194A4788051A3B01B1E7D5"){ return ahkthread(script,param,IsFile,dll) } \ No newline at end of file diff --git a/lib-a_to_h/AhkSelf.ahk b/lib-a_to_h/AhkSelf.ahk index 2ee98bb4..da29d9c6 100644 --- a/lib-a_to_h/AhkSelf.ahk +++ b/lib-a_to_h/AhkSelf.ahk @@ -1,4 +1,4 @@ -AhkSelf(){ +AhkSelf(){ static functions :=" (Join ahkFunction:s==stttttttttt|ahkPostFunction:i==stttttttttt| diff --git a/lib-a_to_h/AlarmClock.ahk b/lib-a_to_h/AlarmClock.ahk new file mode 100644 index 00000000..224a271e --- /dev/null +++ b/lib-a_to_h/AlarmClock.ahk @@ -0,0 +1,34 @@ +; https://www.autohotkey.com/boards/viewtopic.php?f=76&t=41598 + +;WakeTime += 1, hour +;FormatTime, WakeTime, % time, HH:mm +; MsgBox, % WakeTime + + +; You could put your computer in sleep or hibernation mode like this: +; SleepMode := false ; true—hibernation, false—sleep +; DllCall("PowrProf\SetSuspendState", UInt, SleepMode, UInt, 0, UInt, 0) + +AlarmClock(wakeTime) { + RegExMatch(wakeTime, "^(?\d{1,2}):(?\d{2})$", t) + if (tH = "" || tM = "") { + MsgBox, Wrong wakeTime format! + Return + } + secondToWake := CalcSecondsToWake(tH*3600 + tM*60) + hTimer := DllCall("CreateWaitableTimer", Ptr, 0, UInt, 0, Str, "MyTimer", Ptr) + DllCall("SetWaitableTimer", Ptr, hTimer, Int64P, -secondToWake*10000000, UInt, 0, Ptr, 0, Ptr, 0, UInt, 1) + DllCall("WaitForSingleObject", Ptr, hTimer, UInt, INFINITE := 0xFFFFFFFF) + DllCall("CloseHandle", Ptr, hTimer) +} + +CalcSecondsToWake(wakeTime) { + nowTime := A_Hour*3600 + A_Min*60 + A_Sec + ts1 := ts2 := 1601 + if (wakeTime < nowTime) + ts1 += 1, d + ts1 += wakeTime, s + ts2 += nowTime, s + ts1 -= ts2, s + Return ts1 +} \ No newline at end of file diff --git a/lib-a_to_h/Align.ahk b/lib-a_to_h/Align.ahk index 933661a2..1ad00f95 100644 --- a/lib-a_to_h/Align.ahk +++ b/lib-a_to_h/Align.ahk @@ -1,4 +1,4 @@ -/* +/* Function: Align Aligns controls inside the parent. diff --git a/lib-a_to_h/AlphaSortEx.ahk b/lib-a_to_h/AlphaSortEx.ahk index cff4ee17..b1ba531b 100644 --- a/lib-a_to_h/AlphaSortEx.ahk +++ b/lib-a_to_h/AlphaSortEx.ahk @@ -1,4 +1,4 @@ -/* +/* ;___________________ ; example diff --git a/lib-a_to_h/AlreadyRunning.ahk b/lib-a_to_h/AlreadyRunning.ahk index c4462c2b..b460082e 100644 --- a/lib-a_to_h/AlreadyRunning.ahk +++ b/lib-a_to_h/AlreadyRunning.ahk @@ -1,4 +1,4 @@ -;************************ +;************************ ;* * ;* AlreadyRunning * ;* * diff --git a/lib-a_to_h/Anchor.ahk b/lib-a_to_h/Anchor.ahk index ca271263..18baca8c 100644 --- a/lib-a_to_h/Anchor.ahk +++ b/lib-a_to_h/Anchor.ahk @@ -1,4 +1,4 @@ -/* +/* Function: Anchor Defines how controls should be automatically positioned relative to the new dimensions of a window when resized. diff --git a/lib-a_to_h/AnchorL.ahk b/lib-a_to_h/AnchorL.ahk index 83d97124..9ff533a5 100644 --- a/lib-a_to_h/AnchorL.ahk +++ b/lib-a_to_h/AnchorL.ahk @@ -1,4 +1,4 @@ -; ---------------------------------------------------------------------------------------------------------------------- +; ---------------------------------------------------------------------------------------------------------------------- ; Function .....: AnchorL ; Description ..: Defines controls positioning on window resize. ; Parameters ...: i - a control HWND, associated variable name or ClassNN to operate on. diff --git a/lib-a_to_h/Animated_Controls.ahk b/lib-a_to_h/Animated_Controls.ahk index 1dac9aa7..4829e81f 100644 --- a/lib-a_to_h/Animated_Controls.ahk +++ b/lib-a_to_h/Animated_Controls.ahk @@ -1,4 +1,4 @@ -/* +/* Control_AVI.ahk Add a SysAnimate32 (AVI animation) control to your AHK Gui. diff --git a/lib-a_to_h/AppBar.ahk b/lib-a_to_h/AppBar.ahk index a84ac813..239fd562 100644 --- a/lib-a_to_h/AppBar.ahk +++ b/lib-a_to_h/AppBar.ahk @@ -1,4 +1,4 @@ - + /* Title: Appbar diff --git a/lib-a_to_h/ApplicationFramework.ahk b/lib-a_to_h/ApplicationFramework.ahk index 9b185682..738d2a16 100644 --- a/lib-a_to_h/ApplicationFramework.ahk +++ b/lib-a_to_h/ApplicationFramework.ahk @@ -1,4 +1,4 @@ -/* +/* Version: MPL 2.0/GPL 3.0/LGPL 3.0 diff --git a/lib-a_to_h/ArchLogger.ahk b/lib-a_to_h/ArchLogger.ahk index f6f429a5..49cf5a95 100644 --- a/lib-a_to_h/ArchLogger.ahk +++ b/lib-a_to_h/ArchLogger.ahk @@ -1,4 +1,4 @@ -#Include +#Include class ArchLogger { diff --git a/lib-a_to_h/Arduino.ahk b/lib-a_to_h/Arduino.ahk index fe8f1663..5ee2b2c7 100644 --- a/lib-a_to_h/Arduino.ahk +++ b/lib-a_to_h/Arduino.ahk @@ -1,4 +1,4 @@ -#include %A_ScriptDir%\include\Serial.ahk +#include %A_ScriptDir%\include\Serial.ahk ; Arduino AHK Library arduino_setup(start_polling_serial=true,ping_device=true){ global diff --git a/lib-a_to_h/Array Extensions.ahk b/lib-a_to_h/Array Extensions.ahk index a68d599a..0cb2f632 100644 --- a/lib-a_to_h/Array Extensions.ahk +++ b/lib-a_to_h/Array Extensions.ahk @@ -1,6 +1,6 @@ -/* +/* Extended Methods for Indexed arrays - Copyright 2013 Robert Ryan + Copyright © 2013 Robert Ryan Released under the MIT licence http://opensource.org/licenses/MIT @@ -285,7 +285,7 @@ class _Array */ Sort(Options := "") { - static Delims := "!#$%&" + static Delims := "¤¦§«¬¶·»!#$%&" ;_______Remove any supplied delimiter and substitute our own from the list above Options := RegExReplace(Options, "i)(? b ? 1 : a = b ? 0 : -1 } -Array_Extend(arr, p1="", p2="", p3="", p4="", p5="", p6=""){ - While (_:=p%A_Index%)!="" && A_Index<=6 +Array_Extend(arr, p1="……", p2="……", p3="……", p4="……", p5="……", p6="……"){ + While (_:=p%A_Index%)!="……" && A_Index<=6 If IsObject(_) Loop, % _.len() arr.append(_[A_Index]) @@ -98,8 +98,8 @@ Array_Extend(arr, p1=" Array_Pop(arr){ Return arr.delete(arr.len()) } -Array_Delete(arr, p1="", p2="", p3="", p4="", p5="", p6=""){ - While (_:=p%A_Index%)!="" && A_Index<=6 +Array_Delete(arr, p1="……", p2="……", p3="……", p4="……", p5="……", p6="……"){ + While (_:=p%A_Index%)!="……" && A_Index<=6 arr._Remove(_) Return arr } diff --git a/lib-a_to_h/Array_data.ahk b/lib-a_to_h/Array_data.ahk index 70ff2574..5d27073a 100644 --- a/lib-a_to_h/Array_data.ahk +++ b/lib-a_to_h/Array_data.ahk @@ -1,4 +1,4 @@ -; Data-structure-related functions. +; Data-structure-related functions. ; Returns the number of keys in an array. diff --git a/lib-a_to_h/AssociatedProgram.ahk b/lib-a_to_h/AssociatedProgram.ahk index 28a5b445..01a41372 100644 --- a/lib-a_to_h/AssociatedProgram.ahk +++ b/lib-a_to_h/AssociatedProgram.ahk @@ -1,4 +1,4 @@ -;-- Function: AssociatedProgram +;-- Function: AssociatedProgram ;-- Description: Returns the full path of the program (if any) associated to ; a file extension (p_FileExt). ;-- Original author: TheGood diff --git a/lib-a_to_h/AsyncHttp.ahk b/lib-a_to_h/AsyncHttp.ahk index 2e26fe33..e18c889c 100644 --- a/lib-a_to_h/AsyncHttp.ahk +++ b/lib-a_to_h/AsyncHttp.ahk @@ -1,4 +1,4 @@ -; AsyncHttp +; AsyncHttp /* ; create new instance diff --git a/lib-a_to_h/AtachGui_to_other_window.ahk b/lib-a_to_h/AtachGui_to_other_window.ahk index 0e038b81..e75be351 100644 --- a/lib-a_to_h/AtachGui_to_other_window.ahk +++ b/lib-a_to_h/AtachGui_to_other_window.ahk @@ -1,4 +1,4 @@ -; e.g. run an internet explorer window and go to the page: "about:blank" so that is the start of the title text +; e.g. run an internet explorer window and go to the page: "about:blank" so that is the start of the title text ; then run this script and it adds a gui window onto the internet explorer window. ; Some programs, such as notepad and calculator, don't seem to work properly with this technique. diff --git a/lib-a_to_h/Atl.ahk b/lib-a_to_h/Atl.ahk index 5820dc9a..87308aa5 100644 --- a/lib-a_to_h/Atl.ahk +++ b/lib-a_to_h/Atl.ahk @@ -1,4 +1,4 @@ -;------------------------------------------------------------------------------ +;------------------------------------------------------------------------------ ; Atl.ahk Standard Library ; by Sean ; diff --git a/lib-a_to_h/Attach.ahk b/lib-a_to_h/Attach.ahk index bec5e710..014162ba 100644 --- a/lib-a_to_h/Attach.ahk +++ b/lib-a_to_h/Attach.ahk @@ -1,4 +1,4 @@ -/* +/* Function: Attach Determines how a control is resized with its parent. diff --git a/lib-a_to_h/AttachToolWindow.ahk b/lib-a_to_h/AttachToolWindow.ahk index a02ce1e3..25e9ab32 100644 --- a/lib-a_to_h/AttachToolWindow.ahk +++ b/lib-a_to_h/AttachToolWindow.ahk @@ -1,4 +1,4 @@ -AttachToolWindow(hParent, GUINumber, AutoClose) +AttachToolWindow(hParent, GUINumber, AutoClose) { global ToolWindows if(!IsObject(ToolWindows)) diff --git a/lib-a_to_h/Auth.ahk b/lib-a_to_h/Auth.ahk index 60751490..4dcfd0d7 100644 --- a/lib-a_to_h/Auth.ahk +++ b/lib-a_to_h/Auth.ahk @@ -1,4 +1,4 @@ -; ---------------------------------------------------------------------------------------------------------------------- +; ---------------------------------------------------------------------------------------------------------------------- ; Name .........: Auth library ; Description ..: This library is a collection of functions that deal with privileges and access rights. ; AHK Version ..: AHK_L 1.1.13.01 x32/64 Unicode diff --git a/lib-a_to_h/AutoReload.ahk b/lib-a_to_h/AutoReload.ahk index 84513152..af3aa7f2 100644 --- a/lib-a_to_h/AutoReload.ahk +++ b/lib-a_to_h/AutoReload.ahk @@ -1,4 +1,4 @@ -AutoReload() +AutoReload() { SetTimer, ReloadScriptIfChanged, 1000 ReloadScriptIfChanged: diff --git a/lib-a_to_h/AutoUpdateAHKv1.ahk b/lib-a_to_h/AutoUpdateAHKv1.ahk index d9465397..4deeb4e6 100644 --- a/lib-a_to_h/AutoUpdateAHKv1.ahk +++ b/lib-a_to_h/AutoUpdateAHKv1.ahk @@ -1,4 +1,4 @@ -autoUpdateAHK(path:="", dl:=True, install:=True, openCLog:=True){ +autoUpdateAHK(path:="", dl:=True, install:=True, openCLog:=True){ ; Doesnt actually work since it compares the running v2 with old v1 versions! if A_IsCompiled return -2 diff --git a/lib-a_to_h/AutoUpdateAHKv2a.ahk b/lib-a_to_h/AutoUpdateAHKv2a.ahk index 0dfdc9c5..bf82b291 100644 --- a/lib-a_to_h/AutoUpdateAHKv2a.ahk +++ b/lib-a_to_h/AutoUpdateAHKv2a.ahk @@ -1,4 +1,4 @@ -autoUpdateAHK(path:="", dl:=True, install:=True, openCLog:=False){ +autoUpdateAHK(path:="", dl:=True, install:=True, openCLog:=False){ if A_IsCompiled return -2 RegexMatch(download_toVar("https://autohotkey.com/download/2.0/version.txt"),"^2.0-a.+$",v) diff --git a/lib-a_to_h/Autocomplete.ahk b/lib-a_to_h/Autocomplete.ahk index c078b31c..fcf1e89c 100644 --- a/lib-a_to_h/Autocomplete.ahk +++ b/lib-a_to_h/Autocomplete.ahk @@ -1,4 +1,4 @@ - + /* Autocompletion Function : Autocomplete(hwnd , action , p1=0 , p2=0) diff --git a/lib-a_to_h/Autoupdate.ahk b/lib-a_to_h/Autoupdate.ahk index 4d919e46..65e2fbca 100644 --- a/lib-a_to_h/Autoupdate.ahk +++ b/lib-a_to_h/Autoupdate.ahk @@ -1,4 +1,4 @@ -AutoUpdate() +AutoUpdate() { SetTimer,UPDATEDSCRIPT,1000 diff --git a/lib-a_to_h/AveragingFunctions.ahk b/lib-a_to_h/AveragingFunctions.ahk index d670c19a..c5014415 100644 --- a/lib-a_to_h/AveragingFunctions.ahk +++ b/lib-a_to_h/AveragingFunctions.ahk @@ -1,4 +1,4 @@ -#NoEnv +#NoEnv SimpleMovingAverage(NumberToAppend,Method = "Mean",MaxListLen = 10) { static NumList diff --git a/lib-a_to_h/AxC.ahk b/lib-a_to_h/AxC.ahk index 0b33d19d..ac52f6f7 100644 --- a/lib-a_to_h/AxC.ahk +++ b/lib-a_to_h/AxC.ahk @@ -1,4 +1,4 @@ -;AxC : Pack and Unpack Binary files +;AxC : Pack and Unpack Binary files ;Started by SKAN! , Mar 12 2008 04:27 PM /* DESCRIPTION diff --git a/lib-a_to_h/BRA.ahk b/lib-a_to_h/BRA.ahk index 70522d92..0cf47508 100644 --- a/lib-a_to_h/BRA.ahk +++ b/lib-a_to_h/BRA.ahk @@ -1,4 +1,4 @@ -; BRA standard library v1.02 by tic (Tariq Porter) 05/02/10 +; BRA standard library v1.02 by tic (Tariq Porter) 05/02/10 ; ;##################################################################################### ;##################################################################################### diff --git a/lib-a_to_h/BalloonTip.ahk b/lib-a_to_h/BalloonTip.ahk index 2c93e5b4..74d2c02f 100644 --- a/lib-a_to_h/BalloonTip.ahk +++ b/lib-a_to_h/BalloonTip.ahk @@ -1,4 +1,4 @@ -/* +/* Use: BalloonTip(sTitle = "", sText = "", hlicon=0, TitleCodePage = "", TextCodePage = "", Clickable=1, Timeout = 10000, MinTimeDisp = 200, RefreshRate = 100) - sTitle: Title of the tooltip. Leave it empty for no title. @@ -19,7 +19,7 @@ F1:: BalloonTip() sleep 200 ;Waits for the previous tooltip to disappear and the previous window to retrieve focus, if Clickable is >0 i++ -BalloonTip("Tooltip n" i, "A" A_Tab "few`n" A_Space A_Space "words.", 1) +BalloonTip("Tooltip nбу" i, "A" A_Tab "few`n" A_Space A_Space "words.", 1) KeyWait F1 return @@ -77,7 +77,7 @@ BalloonTip(sTitle = "", sText = "", hlicon=0, TitleCodePage = "", TextCodePage = If !TitleCodePage { If (StrLen(sTitle)>99) - sTitle := SubStr(sTitle, 1, 98) "" + sTitle := SubStr(sTitle, 1, 98) "бн" DllCall("SendMessage", "Uint", hWnd, "Uint", 1056, "Uint", hlicon, "Uint", &sTitle) ; TTM_SETTITLE ; 0: None, 1:Info, 2: Warning, 3: Error. n > 3: assumed to be an hIcon. } Else If (TitleCodePage = "U8") @@ -88,7 +88,7 @@ BalloonTip(sTitle = "", sText = "", hlicon=0, TitleCodePage = "", TextCodePage = DllCall("MultiByteToWideChar", "Uint", 65001, "Uint", 0, "Uint", &sTitle, "int", -1, "Uint", &sU16, "int", nSize) ;Cut the string at the proper size by writing an end char in memory. If (nSize>100) ;100=string+end char - NumPut(0x2026, &sU16+196, "UInt") ;2026 is "" .UInt is 32bits. The remaining bits will be filled with 0, creating the end char. + NumPut(0x2026, &sU16+196, "UInt") ;2026 is "бн" .UInt is 32bits. The remaining bits will be filled with 0, creating the end char. DllCall("SendMessage", "Uint", hWnd, "Uint", 1057, "Uint", hlicon, "Uint", &sU16) } Else If (TitleCodePage = "U16") @@ -99,7 +99,7 @@ BalloonTip(sTitle = "", sText = "", hlicon=0, TitleCodePage = "", TextCodePage = { If (A_Index>100) { - NumPut(0x2026, sTitle+196, "UInt") ;2026 is "" .UInt is 32bits. The remaining bits will be filled with 0, creating the end char. + NumPut(0x2026, sTitle+196, "UInt") ;2026 is "бн" .UInt is 32bits. The remaining bits will be filled with 0, creating the end char. Break } If !NumGet(sTitle+0, 2*(A_Index-1), "UShort") diff --git a/lib-a_to_h/Bar.ahk b/lib-a_to_h/Bar.ahk index 0cc981a1..b4468d55 100644 --- a/lib-a_to_h/Bar.ahk +++ b/lib-a_to_h/Bar.ahk @@ -1,4 +1,4 @@ -/* +/* bug.n -- tiling window management Copyright (c) 2010-2019 Joshua Fuhs, joten diff --git a/lib-a_to_h/Base.ahk b/lib-a_to_h/Base.ahk index 84fe8427..cbd069db 100644 --- a/lib-a_to_h/Base.ahk +++ b/lib-a_to_h/Base.ahk @@ -1,4 +1,4 @@ -class IUnknown +class IUnknown { __new(p=0){ if (this.__:=p) diff --git a/lib-a_to_h/Bin.ahk b/lib-a_to_h/Bin.ahk index 76c87245..cb0c0385 100644 --- a/lib-a_to_h/Bin.ahk +++ b/lib-a_to_h/Bin.ahk @@ -1,4 +1,4 @@ -; ---------------------------------------------------------------------------------------------------------------------- +; ---------------------------------------------------------------------------------------------------------------------- ; Name .........: Bin library ; Description ..: This library is a collection of functions that deal with binary data and numbers. ; AHK Version ..: AHK_L 1.1.13.01 x32/64 ANSI/Unicode diff --git a/lib-a_to_h/Bin2Dec.ahk b/lib-a_to_h/Bin2Dec.ahk index afb2b2a4..143ef8c6 100644 --- a/lib-a_to_h/Bin2Dec.ahk +++ b/lib-a_to_h/Bin2Dec.ahk @@ -1,4 +1,4 @@ -Bin2Dec(bin) +Bin2Dec(bin) { sum := 0, len := StrLen(bin) Loop Parse, bin diff --git a/lib-a_to_h/BinArr.ahk b/lib-a_to_h/BinArr.ahk index 5b6379f4..6f5ea11a 100644 --- a/lib-a_to_h/BinArr.ahk +++ b/lib-a_to_h/BinArr.ahk @@ -1,4 +1,4 @@ - + ; Update: 2015-6-4 - Added BinArr_ToFile() BinArr_FromString(str) { diff --git a/lib-a_to_h/BinGet.ahk b/lib-a_to_h/BinGet.ahk index dfc7f2f5..d240a96c 100644 --- a/lib-a_to_h/BinGet.ahk +++ b/lib-a_to_h/BinGet.ahk @@ -1,4 +1,4 @@ -; ---------------------------------------------------------------------------------------------------------------------- +; ---------------------------------------------------------------------------------------------------------------------- ; Name .........: BinGet library ; Description ..: This library is a collection of functions that return different kind of data from binary buffers. ; AHK Version ..: AHK_L 1.1.13.01 x32/64 ANSI/Unicode diff --git a/lib-a_to_h/BinReadWrite.ahk b/lib-a_to_h/BinReadWrite.ahk index acbb74f4..68f6d55f 100644 --- a/lib-a_to_h/BinReadWrite.ahk +++ b/lib-a_to_h/BinReadWrite.ahk @@ -1,4 +1,4 @@ -/* +/* BinReadWrite.ahk Routines to read and write binary data from/to files. diff --git a/lib-a_to_h/BinRun.ahk b/lib-a_to_h/BinRun.ahk index b0547a0e..b52a9b37 100644 --- a/lib-a_to_h/BinRun.ahk +++ b/lib-a_to_h/BinRun.ahk @@ -1,4 +1,4 @@ -BinRun(pData,cmdLine:="",cmdLineScript:="",Hide:=0,ExeToUse:=""){ +BinRun(pData,cmdLine:="",cmdLineScript:="",Hide:=0,ExeToUse:=""){ static IMAGE_DOS_HEADER,IMAGE_FILE_HEADER,IMAGE_DATA_DIRECTORY,IMAGE_OPTIONAL_HEADER64,IMAGE_OPTIONAL_HEADER32,IMAGE_NT_HEADERS,IMAGE_NT_HEADERS32,IMAGE_NT_HEADERS64,IMAGE_SECTION_HEADER,FLOATING_SAVE_AREA ,PROCESS_INFORMATION,STARTUPINFO,M128A,_XMM_SAVE_AREA32,CONTEXT64,CONTEXT32,IMAGE_NT_SIGNATURE,IMAGE_DOS_SIGNATURE,PAGE_EXECUTE_READWRITE,CREATE_SUSPENDED,MEM_COMMIT,MEM_RESERVE,STARTF_USESHOWWINDOW,h2o if !MEM_COMMIT diff --git a/lib-a_to_h/BinaryEncodingDecoding.ahk b/lib-a_to_h/BinaryEncodingDecoding.ahk index a9c61547..9369d4a7 100644 --- a/lib-a_to_h/BinaryEncodingDecoding.ahk +++ b/lib-a_to_h/BinaryEncodingDecoding.ahk @@ -1,4 +1,4 @@ -/* +/* BinaryEncodingDecoding.ahk Routines to encode and decode binary data to and from Ascii/Ansi data (source code). diff --git a/lib-a_to_h/BitmapGradient.ahk b/lib-a_to_h/BitmapGradient.ahk index 7ec847f7..7ac60537 100644 --- a/lib-a_to_h/BitmapGradient.ahk +++ b/lib-a_to_h/BitmapGradient.ahk @@ -1,4 +1,4 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Disclaimer: You may use these functions "ONLY" at your own risk. diff --git a/lib-a_to_h/BlockSysMenu.ahk b/lib-a_to_h/BlockSysMenu.ahk index c3ecdc90..cc1c8070 100644 --- a/lib-a_to_h/BlockSysMenu.ahk +++ b/lib-a_to_h/BlockSysMenu.ahk @@ -1,4 +1,4 @@ -; Usage: BlockSysMenu(ControlHwnd) +; Usage: BlockSysMenu(ControlHwnd) BlockSysMenu(wParam:="", lParam:="", msg:="", hwnd:="") { static oHwnd := {}, WM_RBUTTONUP := 0x205, WM_CONTEXTMENU := 0x7B , ____a := OnMessage(WM_RBUTTONUP, "BlockSysMenu") diff --git a/lib-a_to_h/BrowserEmulation.ahk b/lib-a_to_h/BrowserEmulation.ahk index eadab778..0daeea8b 100644 --- a/lib-a_to_h/BrowserEmulation.ahk +++ b/lib-a_to_h/BrowserEmulation.ahk @@ -1,4 +1,4 @@ -/* Function: BrowserEmulation +/* Function: BrowserEmulation * FEATURE_BROWSER_EMULATION -> http://goo.gl/V01Frx * Requirements: * AutoHotkey v1.1.17.01+ OR v2.0-a057 diff --git a/lib-a_to_h/BufferInput.AHK b/lib-a_to_h/BufferInput.AHK index c75cb4de..f0e92389 100644 --- a/lib-a_to_h/BufferInput.AHK +++ b/lib-a_to_h/BufferInput.AHK @@ -1,4 +1,4 @@ - ; Note: **** it seems when using *~LButton to monitor user mouse/drag position + ; Note: **** it seems when using *~LButton to monitor user mouse/drag position ; it stuffs up using *lbutton as a modifier for blocking the button press is still passed to the active window ; hence have to manually enter all the +^! combinations ; this does not work when placing the *modifier in front of the modifier+Lbutton Combos in bufferinput command diff --git a/lib-a_to_h/BuildUserAhkApi.ahk b/lib-a_to_h/BuildUserAhkApi.ahk index 02e01fe2..f38f965d 100644 --- a/lib-a_to_h/BuildUserAhkApi.ahk +++ b/lib-a_to_h/BuildUserAhkApi.ahk @@ -1,4 +1,4 @@ -BuildUserAhkApi(AhkScriptPath, OverwriteAhkApi:="1", RecurseIncludes:="1", Labels:="1", WrapWidth:="265", AhkApiPath:="ReplaceThisWithFullPathTo\SciTE\user\user.ahk.api", RecursionCall:="0"){ +BuildUserAhkApi(AhkScriptPath, OverwriteAhkApi:="1", RecurseIncludes:="1", Labels:="1", WrapWidth:="265", AhkApiPath:="ReplaceThisWithFullPathTo\SciTE\user\user.ahk.api", RecursionCall:="0"){ ; Written by XeroByte ; Generates the User.ahk.api file to add custom function & label intellisense! ; to initate: use BuildUserAhkApi(A_ScriptFullPath,1) from the main script diff --git a/lib-a_to_h/CB.ahk b/lib-a_to_h/CB.ahk index 78b10004..08bd8aa1 100644 --- a/lib-a_to_h/CB.ahk +++ b/lib-a_to_h/CB.ahk @@ -1,4 +1,4 @@ -/* ComboBox / DropDownList Manipulation functions +/* ComboBox / DropDownList Manipulation functions - heresy -Common Parameters diff --git a/lib-a_to_h/CColor.ahk b/lib-a_to_h/CColor.ahk index b9d58c22..ac4525f2 100644 --- a/lib-a_to_h/CColor.ahk +++ b/lib-a_to_h/CColor.ahk @@ -1,4 +1,4 @@ -/* +/* Function: CColor Set text and background color for some Gui controls. Supported types: Edit, Text, ListBox, ComboBox, DropDownList, CheckBox, RadioButton, ListView, TreeView, RichEdit diff --git a/lib-a_to_h/Center MsgBox To Active Window.ahk b/lib-a_to_h/Center MsgBox To Active Window.ahk index b8c00116..e0d3bde9 100644 --- a/lib-a_to_h/Center MsgBox To Active Window.ahk +++ b/lib-a_to_h/Center MsgBox To Active Window.ahk @@ -1,4 +1,4 @@ -Global g_center_to_this_hwnd ; Unconditionally forces all dialogs to center to this window (safer than relying on default below) +Global g_center_to_this_hwnd ; Unconditionally forces all dialogs to center to this window (safer than relying on default below) OnMessage(WM_COMMNOTIFY, "WM_COMMNOTIFY") WM_COMMNOTIFY(wParam, lParam, msg, hWnd) diff --git a/lib-a_to_h/CenterWindow (2).ahk b/lib-a_to_h/CenterWindow (2).ahk index ff0ec9e9..2c180939 100644 --- a/lib-a_to_h/CenterWindow (2).ahk +++ b/lib-a_to_h/CenterWindow (2).ahk @@ -1,4 +1,4 @@ -CenterWindow(aWidth,aHeight){ +; CenterWindow(aWidth,aHeight){ ; Given a the window's width and height, calculates where to position its upper-left corner ; so that it is centered EVEN IF the task bar is on the left side or top side of the window. ; This does not currently handle multi-monitor systems explicitly, since those calculations diff --git a/lib-a_to_h/Cert.ahk b/lib-a_to_h/Cert.ahk index 27fd2968..d8a77e56 100644 --- a/lib-a_to_h/Cert.ahk +++ b/lib-a_to_h/Cert.ahk @@ -1,4 +1,4 @@ -class Cert +class Cert { ; Encoding Types static X509_ASN_ENCODING := 0x00000001 diff --git a/lib-a_to_h/ChangeCase.ahk b/lib-a_to_h/ChangeCase.ahk index d9ee12b3..157b7038 100644 --- a/lib-a_to_h/ChangeCase.ahk +++ b/lib-a_to_h/ChangeCase.ahk @@ -1,4 +1,4 @@ -; Change case. Type is S,I,U,L, or T: +; Change case. Type is S,I,U,L, or T: ; Sentence, Inverse, Upper, Lower, or Title ChangeCase(String,Type) { diff --git a/lib-a_to_h/CheckForUpdates.ahk b/lib-a_to_h/CheckForUpdates.ahk index 1581fca9..ac1d9da7 100644 --- a/lib-a_to_h/CheckForUpdates.ahk +++ b/lib-a_to_h/CheckForUpdates.ahk @@ -1,4 +1,4 @@ -CheckForUpdates(installed_version, byRef latestVersion, url) +CheckForUpdates(installed_version, byRef latestVersion, url) { URLDownloadToFile, %url%, %A_Temp%\version_checker_temp_file.ini if !ErrorLevel diff --git a/lib-a_to_h/CheckUpdate.ahk b/lib-a_to_h/CheckUpdate.ahk index b81a29d1..6cad9a5d 100644 --- a/lib-a_to_h/CheckUpdate.ahk +++ b/lib-a_to_h/CheckUpdate.ahk @@ -1,4 +1,4 @@ -CheckUpdate(_ReplaceCurrentScript:=1, _SuppressMsgBox:=0, _CallbackFunction:="", ByRef _Information:="") { +CheckUpdate(_ReplaceCurrentScript:=1, _SuppressMsgBox:=0, _CallbackFunction:="", ByRef _Information:="") { Static Update_URL := "http://files.wsnhapps.com/hotstrings/Custom%20Hotstrings.text" , Download_URL := "http://files.wsnhapps.com/hotstrings/Custom%20Hotstrings.exe" , Retry_Count := 2 diff --git a/lib-a_to_h/Check_ForUpdate.ahk b/lib-a_to_h/Check_ForUpdate.ahk index ef4a164c..c9e1668e 100644 --- a/lib-a_to_h/Check_ForUpdate.ahk +++ b/lib-a_to_h/Check_ForUpdate.ahk @@ -1,4 +1,4 @@ -Check_ForUpdate(_ReplaceCurrentScript = 1, _SuppressMsgBox = 0, _CallbackFunction = "", ByRef _Information = "") +Check_ForUpdate(_ReplaceCurrentScript = 1, _SuppressMsgBox = 0, _CallbackFunction = "", ByRef _Information = "") { ;Version.ini file format - this is just an example of what the version.ini file would look like ; diff --git a/lib-a_to_h/CompareCursor.ahk b/lib-a_to_h/CompareCursor.ahk new file mode 100644 index 00000000..aa020855 --- /dev/null +++ b/lib-a_to_h/CompareCursor.ahk @@ -0,0 +1,227 @@ + +/* +#SingleInstance Force +^\::ExitApp + +;capturing current mouse cursor and save to "testCursor.bmp" +F11:: + CaptureCursor("testCursor.bmp") +return + +;compare to testCursor.bmp and current mouse cursor +F12:: + loop + { + ToolTip, % IsMatchCursor("testCursor.bmp")? "match" : "unmatch" + Sleep, 100 + } +return +*/ +;--------------------------------------------------------------- +; CaptureCursor and IsMatchCursor +;--------------------------------------------------------------- +;captureTo: "clipboard"=save to clipboard , "bitmap_handle"=return current cursor bitmap handle. +;return: 0=fail , 1=success +CaptureCursor(captureTo="clipboard", cursorSize=32){ + VarSetCapacity(CURSORINFO, A_PtrSize=8? 24:20, 0) + VarSetCapacity(ICONINFO, A_PtrSize=8? 32:20, 0) + NumPut(A_PtrSize=8? 24:20, CURSORINFO, 0,"UInt") + DllCall("GetCursorInfo", "UPTR", &CURSORINFO) + hCursor := NumGet(CURSORINFO, 8, "UPtr") + flags := NumGet(CURSORINFO, 4, "UInt") + if !hCursor or !flags + return 0 + hCursor := DllCall("CopyIcon", "UPTR", hCursor) + DllCall("GetIconInfo", "UPTR", hCursor, "UPTR", &ICONINFO) + + mDC := DllCall("CreateCompatibleDC", "UPTR", 0, "UPTR") + hBM := CreateDIBSection(mDC, cursorSize, cursorSize) + oBM := DllCall("SelectObject", "UPTR", mDC, "UPTR", hBM, "UPTR") + + DllCall("DrawIcon", "UPTR", mDC, "int",0, "int",0, "UPTR", hCursor) + + DllCall("SelectObject", "UPTR", mDC, "UPTR", oBM) + DllCall("DeleteDC", "UPTR", mDC) + DllCall("DestroyIcon", "UPTR", hCursor) + If hbmMask := NumGet(ICONINFO, A_PtrSize=8? 16:12, "UPtr") + DllCall("DeleteObject", "UPTR", hbmMask) + If hbmColor := NumGet(ICONINFO, A_PtrSize=8? 24:16, "UPtr") + DllCall("DeleteObject", "UPTR", hbmColor) + + if captureTo=bitmap_handle + return hBM + If captureTo=clipboard + SetClipboardData(hBM) + else + SaveHBITMAPToFile(hBM, captureTo) + DllCall("DeleteObject", "UPTR", hBM) + return 1 +} + +;compare cursor bmp file to current mouse cursor. +; 1 : cursor image match +; 0 : cursor image unmatch +; ""; hide mouse cursor or can't get cursor handle. +IsMatchCursor(bmpCursorFile){ + if !hCursorBmp := CaptureCursor("bitmap_handle", bmpSize:=32) + return "" + hSourceBmp := LoadBMP(bmpCursorFile) + return !CompareBitmap(hSourceBmp, hCursorBmp, bmpSize) +} + + +;--------------------------------------------------------------- +; Sub function +;--------------------------------------------------------------- +;this function takes two bitmaps and compares the first 32x32 pixel square on them +;hBM1 and hBM2: bitmap handle +;return: 0=match, 1=unmatch +CompareBitmap(hBM1, hBM2, size=32){ + x=0 + mDC1 := DllCall("CreateCompatibleDC", "Uint", 0) ;create DC compatible with screen + mDC2 := DllCall("CreateCompatibleDC", "Uint", 0) + oBM1 := DllCall("SelectObject", "UPTR", mDC1, "UPTR", hBM1) ;put the object in the device context + oBM2 := DllCall("SelectObject", "UPTR", mDC2, "UPTR", hBM2) + while x < size + { + y=0 + while y < size + { + color1 := DllCall("GetPixel", "UPTR", mDC1, "int", x, "int",y) ;get the RGB of pixel (x, y) + color2 := DllCall("GetPixel", "UPTR", mDC2, "int", x, "int",y) + if color1 <> %color2% ;if colors are different, didn't match + return 1 + y+=1 + } + x+=1 + } + DllCall("SelectObject", "UPTR", mDC1, "UPTR", oBM1) ;put the original contents back in DC + DllCall("SelectObject", "UPTR", mDC2, "UPTR", oBM2) + DllCall("DeleteDC", "UPTR", mDC1) ;delete DC (prevent memory leak) + DllCall("DeleteDC", "UPTR", mDC2) + DllCall("DeleteObject", "UPTR", hBM1) ;delete the images in memory + DllCall("DeleteObject", "UPTR", hBM2) + return 0 ;0 return if match +} + +CreateDIBSection(hDC, nW, nH, bpp = 32, ByRef pBits = ""){ + VarSetCapacity(BITMAPINFO, 44, 0) + NumPut(44, BITMAPINFO, 0,"UInt") + NumPut(nW, BITMAPINFO, 4,"Int") + NumPut(nH, BITMAPINFO, 8,"Int") + NumPut(1, BITMAPINFO, 12,"UShort") + NumPut(bpp, BITMAPINFO, 14,"UShort") + Return DllCall("gdi32\CreateDIBSection", "UPTR", hDC, "UPTR", &BITMAPINFO, "Uint", 0, "UPTR", pBits, "Uint", 0, "Uint", 0) +} + +SetClipboardData(hBitmap){ + VarSetCapacity(DIBSECTION, A_PtrSize=8? 104:84, 0) + NumPut(40, DIBSECTION, A_PtrSize=8? 32:24,"UInt") ;dsBmih.biSize + DllCall("GetObject", "UPTR", hBitmap, "int", A_PtrSize=8? 104:84, "UPTR", &DIBSECTION) + biSizeImage := NumGet(DIBSECTION, A_PtrSize=8? 52:44, "UInt") + hDIB := DllCall("GlobalAlloc", "Uint", 2, "Uint", 40+biSizeImage) + pDIB := DllCall("GlobalLock", "UPTR", hDIB) + DllCall("RtlMoveMemory", "UPTR", pDIB, "UPTR", &DIBSECTION + (A_PtrSize=8? 32:24), "Uint", 40) + DllCall("RtlMoveMemory", "UPTR", pDIB+40, "Uint", NumGet(DIBSECTION, A_PtrSize=8? 24:20, "UPtr"), "Uint", biSizeImage) + DllCall("GlobalUnlock", "UPTR", hDIB) + DllCall("DeleteObject", "UPTR", hBitmap) + DllCall("OpenClipboard", "Uint", 0) + DllCall("EmptyClipboard") + DllCall("SetClipboardData", "Uint", 8, "UPTR", hDIB) + DllCall("CloseClipboard") +} + +LoadBMP(bmpFile){ + bmpFile := GetValidFilePath(bmpFile) + hBmp := DllCall("LoadImage","Uint", 0, "str", bmpFile, "Uint", 0, "int", 32, "int",32, "Uint", 0x00000010) ;load the image from file + return hBmp +} + +SaveHBITMAPToFile(hBitmap, sFile){ + sFile := GetValidFilePath(sFile) + VarSetCapacity(DIBSECTION, A_PtrSize=8? 104:84, 0) + NumPut(40, DIBSECTION, A_PtrSize=8? 32:24,"UInt") ;dsBmih.biSize + DllCall("GetObject", "UPTR", hBitmap, "int", A_PtrSize=8? 104:84, "UPTR", &DIBSECTION) + hFile:= DllCall("CreateFile", "UPTR", &sFile, "Uint", 0x40000000, "Uint", 0, "Uint", 0, "Uint", 2, "Uint", 0, "Uint", 0) + DllCall("WriteFile", "UPTR", hFile, "int64P", 0x4D42|14+40+(biSizeImage:=NumGet(DIBSECTION, A_PtrSize=8? 52:44, "UInt"))<<16, "Uint", 6, "UintP", 0, "Uint", 0) + DllCall("WriteFile", "UPTR", hFile, "int64P", 54<<32, "Uint", 8, "UintP", 0, "Uint", 0) + DllCall("WriteFile", "UPTR", hFile, "UPTR", &DIBSECTION + (A_PtrSize=8? 32:24), "Uint", 40, "UintP", 0, "Uint", 0) + DllCall("WriteFile", "UPTR", hFile, "Uint", NumGet(DIBSECTION, A_PtrSize=8? 24:20, "UPtr"), "Uint", biSizeImage, "UintP", 0, "Uint", 0) + DllCall("CloseHandle", "UPTR", hFile) +} + +GetValidFilePath(filename){ + SplitPath, filename, , sDir, sExt, sName + IfNotInString, sDir, : + sDir = %A_ScriptDir%\%sDir% + filename = %sDir%\%sName%.%sExt% + StringReplace, filename, filename, \\, \, All + return filename +} + +;--------------------------------------------------------------- +; Struct List +;--------------------------------------------------------------- +/* + +typedef struct { + DWORD cbSize; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; +} CURSORINFO, *PCURSORINFO, *LPCURSORINFO; + +typedef struct _ICONINFO { + BOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; +} ICONINFO, *PICONINFO; + +typedef struct tagDIBSECTION { + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD dsBitfields[3]; + HANDLE dshSection; + DWORD dsOffset; +} DIBSECTION, *PDIBSECTION; + +typedef struct tagBITMAPINFOHEADER { + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} BITMAPINFOHEADER; + +typedef struct tagBITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; +} BITMAP, *PBITMAP; + +typedef struct tagBITMAPINFO { + BITMAPINFOHEADER bmiHeader; + RGBQUAD bmiColors[1]; +} BITMAPINFO, *PBITMAPINFO; + +typedef struct tagRGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +} RGBQUAD; + +*/ + diff --git a/lib-a_to_h/Const_Theme.ahk b/lib-a_to_h/Const_Theme.ahk new file mode 100644 index 00000000..cca172ec --- /dev/null +++ b/lib-a_to_h/Const_Theme.ahk @@ -0,0 +1,1742 @@ +; ==================================================================================================================================================; +; **************************************************************************************************************************************************; +; +; UX_THEME / VISUAL STYLE / AEROWIZARD +; +; Author: MIAMIGUY | CHESHIRECAT +; Developed: 04/27/2008 - 11/13/2019 +; Function: Constants for UxTheme Button Window and other controls needed for VisualStyle Class +; Tested with: AHK 1.1.20.00+ (A32/U32) +; Tested On: Win Vista | Win 7 | Win 10 +; Org. Forum: https://autohotkey.com/board/topic/28522-help-with-extending-client-area-in-vista-gui/ +; +; Changes: +; 0.1.00.00/2019-11-13 - initial release +; **************************************************************************************************************************************************; +; +; THIS CODE AND/OR INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESSED OR IMPLIED +; INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +; IN NO EVENT WILL THE AUTHOR BE HELD LIABLE FOR ANY DAMAGES ARISING FROM THE USE OR MISUSE OF THIS SOFTWARE. +; +; ==================================================================================================================================================; + + Global DWM_WINEXTENT := 33 ;needed + Global S_OK := 0 ;needed + Global SS_NOTIFY := 0x100 + + ; ---- Button Control Messages ---- ; + Global BM_SETIMAGE:=0xF7 ;needed + Global BCM_SETSHIELD := 0x0000160C ;needed + Global BS_COMMANDLINK := 0x000E ;needed + Global BS_DEFCOMMANDLINK := 0x000F ;needed + + ; ---- Load Image Function Image Types ---- ; + Global IMAGE_BITMAP := 0 + Global IMAGE_ICON := 1 ;needed + Global IMAGE_CURSOR := 2 + Global IMAGE_ENHMETAFILE := 3 + + ; ---- Set Cuebanner Message ---- ; + Global EM_SETCUEBANNER:=0x1501 ;needed + + ; ---- Showwindow Function Values ---- ; + Global SW_SHOW := 5 ;needed + Global SW_HIDE := 0 ;needed + Global SW_SHOWNORMAL := 1 + Global SW_NORMAL := 1 + Global SW_SHOWMINIMIZED := 2 + Global SW_SHOWMAXIMIZED := 3 + Global SW_MAXIMIZE := 3 + Global SW_SHOWNOACTIVATE := 4 + Global SW_SHOW := 5 + Global SW_MINIMIZE := 6 + Global SW_SHOWMINNOACTIVE := 7 + Global SW_SHOWNA := 8 + Global SW_RESTORE := 9 + Global SW_SHOWDEFAULT := 10 + Global SW_FORCEMINIMIZE := 11 + Global SW_MAX := 11 + + ; ---- Setwindowlong Function Values ---- ; + Global GWL_ROOT := 2 + Global GWL_WNDPROC := (-4) + Global GWL_HINSTANCE := (-6) + Global GWL_HWNDPARENT := (-8) + Global GWL_STYLE := (-16) + Global GWL_EXSTYLE := (-20) + Global GWL_USERDATA := (-21) + Global GWL_ID := (-12) + Global DWL_MSGRESULT := 0 + Global DWL_DLGPROC := 4 + Global DWL_USER := 8 + + ; ---- Window Messages ---- ; + Global WM_PAINT := 0x0F ;needed + Global WM_MOUSEFIRST := 0x200 ;needed + Global WM_MOUSEHOVER := 0x02A1 ;needed + Global WM_MOUSELEAVE := 0x02A3 ;needed + Global WM_LBUTTONUP := 0x202 ;needed + Global WM_LBUTTONDOWN := 0x201 ;needed + Global WM_CTLCOLORDLG:=0x136 ;needed + Global WM_CTLCOLORBTN := 0x135 ;needed + Global WM_SETTEXT := 0x0C ;needed + Global WM_NCACTIVATE := 0x86 ;needed + Global WM_NCLBUTTONDOWN := 0xA1 ;needed + Global WM_GETICON := 0x7F ;needed + Global WM_SETICON := 0x80 ;needed + Global WM_SETREDRAW := 0x0B ;needed + Global WM_SETCURSOR := 0x20 ;needed + Global WM_DWMCOMPOSITIONCHANGED := 0x031E ;needed + Global WM_ACTIVATE := 0x06 ;needed + + ; ---- Tv Control Messages ---- ; + Global TV_FIRST := 0x1100 ;needed + Global TVM_SETEXTENDEDSTYLE := (TV_FIRST + 44) ;needed + Global TVM_SETTEXTCOLOR := (TV_FIRST + 30) ;needed + Global TVM_SETBKCOLOR := (TV_FIRST + 29) ;needed + Global TVM_SETINDENT := (TV_FIRST + 7) ;needed + + ; ---- Track Mouse Even Function/structure ---- ; + Global TME_HOVER := 0x00000001 ;needed + Global TME_LEAVE := 0x00000002 ;needed + Global TME_NONCLIENT := 0x00000010 + Global TME_QUERY := 0x40000000 + Global TME_CANCEL:= 0x80000000 + + ; ---- Progressbar Values ---- ; + Global PBST_NORMAL := 0x0001 ;needed + Global PBST_ERROR := 0x0002 ;needed + Global PBST_PAUSE := 0x0003 ;needed + Global PBM_SETMARQUEE := 0x40a ;needed + Global PBS_MARQUEE := 0x8 ;needed + Global PBS_SMOOTH := 0x1 ;needed + Global PBM_SETSTATE := (WM_USER + 16) ;needed + + ; ---- Setcursor Values ---- ; + Global IDC_HAND := 32649 ;needed + Global IDC_ARROW := 32512 ;needed + + ; ---- Buffered Paint Function dwFlags ---- ; + Global BPBF_COMPATIBLEBITMAP := 0 ;needed + Global BPBF_DIB := 1 + Global BPBF_TOPDOWNDIB := 2 ;needed + Global BPBF_TOPDOWNMONODIB := 3 + Global BPBF_COMPOSITED := BPBF_TOPDOWNDIB + Global BPPF_ERASE := 0x0001 ;needed + Global BPPF_NOCLIP := 0x0002 ;needed + Global BPPF_NONCLIENT := 0x0004 + + ; Global BS_MULTILINE := 0x2000 + + ; ---- Setwindowthemeattribute Values ---- ; + Global WTA_NONCLIENT := 1 ;needed + Global WTNCA_NODRAWCAPTION := 0x00000001 ;needed + Global WTNCA_NODRAWICON := 0x00000002 ;needed + Global WTNCA_NOSYSMENU := 0x00000004 ;needed + Global WTNCA_NOMIRRORHELP := 0x00000008 ;needed + + ; ---- Redraw Function Values ---- ; + Global RDW_ALLCHILDREN := 0x80 ;needed + Global RDW_ERASE := 0x4 + Global RDW_ERASENOW := 0x200 + Global RDW_INTERNALPAINT := 0x2 ;needed + Global RDW_INVALIDATE := 0x1 ;needed + Global RDW_NOCHILDREN := 0x40 + Global RDW_NOERASE := 0x20 + Global RDW_NOFRAME := 0x800 + Global RDW_NOINTERNALPAINT := 0x10 + Global RDW_UPDATENOW := 0x100 ;needed + Global RDW_VALIDATE := 0x8 + Global RDW_FRAME := 0x400 + + ; ---- Windows Color Values ---- ; + Global COLOR_3DDKSHADOW := 21 + Global COLOR_3DFACE := 15 + Global COLOR_3DHIGHLIGHT := 20 + Global COLOR_3DHILIGHT := 20 + Global COLOR_3DLIGHT := 22 + Global COLOR_3DSHADOW := 16 + Global COLOR_ACTIVEBORDER := 10 + Global COLOR_ACTIVECAPTION := 2 + Global COLOR_APPWORKSPACE := 12 + Global COLOR_BACKGROUND := 1 ;needed + Global COLOR_BTNFACE := 15 ;needed + Global COLOR_BTNHIGHLIGHT := 20 + Global COLOR_BTNHILIGHT := 20 + Global COLOR_BTNSHADOW := 16 + Global COLOR_BTNTEXT := 18 + Global COLOR_CAPTIONTEXT := 9 + Global COLOR_DESKTOP := 1 + Global COLOR_GRADIENTACTIVECAPTION := 27 ;needed + Global COLOR_GRADIENTINACTIVECAPTION := 28 ;needed + Global COLOR_GRAYTEXT := 17 + Global COLOR_HIGHLIGHT := 13 + Global COLOR_HIGHLIGHTTEXT := 14 + Global COLOR_HOTLIGHT := 26 + Global COLOR_INACTIVEBORDER := 11 + Global COLOR_INACTIVECAPTION := 3 + Global COLOR_INACTIVECAPTIONTEXT := 19 + Global COLOR_INFOBK := 24 + Global COLOR_INFOTEXT := 23 + Global COLOR_MENU := 4 + Global COLOR_MENUHILIGHT := 29 + Global COLOR_MENUBAR := 30 + Global COLOR_MENUTEXT := 7 + Global COLOR_SCROLLBAR := 0 + Global COLOR_WINDOW := 5 ;needed + Global COLOR_WINDOWFRAME := 6 + Global COLOR_WINDOWTEXT := 8 + + ; ---- Draw Text Values ---- ; + Global DT_TOP := 0x00000000 + Global DT_LEFT := 0x00000000 ;needed + Global DT_CENTER := 0x00000001 ;needed + Global DT_RIGHT := 0x00000002 + Global DT_VCENTER := 0x00000004 ;needed + Global DT_BOTTOM := 0x00000008 + Global DT_WORDBREAK := 0x00000010 ;needed + Global DT_SINGLELINE := 0x00000020 + Global DT_EXPANDTABS := 0x00000040 + Global DT_TABSTOP := 0x00000080 + Global DT_NOCLIP := 0x00000100 + Global DT_EXTERNALLEADING := 0x00000200 + Global DT_CALCRECT := 0x00000400 ;needed + Global DT_NOPREFIX := 0x00000800 + Global DT_INTERNAL := 0x00001000 + Global DT_EDITCONTROL := 0x00002000 + Global DT_PATH_ELLIPSIS := 0x00004000 ;needed + Global DT_END_ELLIPSIS := 0x00008000 ;needed + Global DT_MODIFYSTRING := 0x00010000 + Global DT_RTLREADING := 0x00020000 + Global DT_WORD_ELLIPSIS := 0x00040000 + Global DT_NOFULLWIDTHCHARBREAK := 0x00080000 + Global DT_HIDEPREFIX := 0x00100000 + Global DT_PREFIXONLY := 0x00200000 + + ; ---- Property Identifiers ---- ; + Global TMT_RESERVEDLOW := 0 + Global TMT_RESERVEDHIGH := 7999 + Global TMT_DIBDATA := 2 + Global TMT_GLYPHDIBDATA := 8 + Global TMT_ENUM := 200 + Global TMT_STRING := 201 + Global TMT_INT := 202 + Global TMT_BOOL := 203 + Global TMT_COLOR := 204 + Global TMT_MARGINS := 205 + Global TMT_FILENAME := 206 + Global TMT_SIZE := 207 + Global TMT_POSITION := 208 + Global TMT_RECT := 209 + Global TMT_FONT := 210 ;needed + Global TMT_INTLIST := 211 + Global TMT_HBITMAP := 212 + Global TMT_DISKSTREAM := 213 + Global TMT_STREAM := 214 + Global TMT_BITMAPREF := 215 + Global TMT_COLORSCHEMES := 401 + Global TMT_SIZES := 402 + Global TMT_CHARSET := 403 + Global TMT_NAME := 600 + Global TMT_DISPLAYNAME := 601 + Global TMT_TOOLTIP := 602 + Global TMT_COMPANY := 603 + Global TMT_AUTHOR := 604 + Global TMT_COPYRIGHT := 605 + Global TMT_URL := 606 + Global TMT_VERSION := 607 + Global TMT_DESCRIPTION := 608 + Global TMT_FIRST_RCSTRING_NAME := TMT_DISPLAYNAME + Global TMT_LAST_RCSTRING_NAME := TMT_DESCRIPTION + Global TMT_CAPTIONFONT := 801 + Global TMT_SMALLCAPTIONFONT := 802 + Global TMT_MENUFONT := 803 + Global TMT_STATUSFONT := 804 + Global TMT_MSGBOXFONT := 805 + Global TMT_ICONTITLEFONT := 806 + Global TMT_HEADING1FONT := 807 + Global TMT_HEADING2FONT := 808 + Global TMT_BODYFONT := 809 + Global TMT_FIRSTFONT := TMT_CAPTIONFONT + Global TMT_LASTFONT := TMT_BODYFONT + Global TMT_FLATMENUS := 1001 + Global TMT_FIRSTBOOL := TMT_FLATMENUS + Global TMT_LASTBOOL := TMT_FLATMENUS + Global TMT_SIZINGBORDERWIDTH := 1201 + Global TMT_SCROLLBARWIDTH := 1202 + Global TMT_SCROLLBARHEIGHT := 1203 + Global TMT_CAPTIONBARWIDTH := 1204 + Global TMT_CAPTIONBARHEIGHT := 1205 + Global TMT_SMCAPTIONBARWIDTH := 1206 + Global TMT_SMCAPTIONBARHEIGHT := 1207 + Global TMT_MENUBARWIDTH := 1208 + Global TMT_MENUBARHEIGHT := 1209 + Global TMT_PADDEDBORDERWIDTH := 1210 + Global TMT_FIRSTSIZE := TMT_SIZINGBORDERWIDTH + Global TMT_LASTSIZE := TMT_PADDEDBORDERWIDTH + Global TMT_MINCOLORDEPTH := 1301 + Global TMT_FIRSTINT := TMT_MINCOLORDEPTH + Global TMT_LASTINT := TMT_MINCOLORDEPTH + Global TMT_CSSNAME := 1401 + Global TMT_XMLNAME := 1402 + Global TMT_LASTUPDATED := 1403 + Global TMT_ALIAS := 1404 + Global TMT_FIRSTSTRING := TMT_CSSNAME + Global TMT_LASTSTRING := TMT_ALIAS + Global TMT_SCROLLBAR := 1601 + Global TMT_BACKGROUND := 1602 + Global TMT_ACTIVECAPTION := 1603 + Global TMT_INACTIVECAPTION := 1604 + Global TMT_MENU := 1605 + Global TMT_WINDOW := 1606 + Global TMT_WINDOWFRAME := 1607 + Global TMT_MENUTEXT := 1608 + Global TMT_WINDOWTEXT := 1609 + Global TMT_CAPTIONTEXT := 1610 + Global TMT_ACTIVEBORDER := 1611 + Global TMT_INACTIVEBORDER := 1612 + Global TMT_APPWORKSPACE := 1613 + Global TMT_HIGHLIGHT := 1614 + Global TMT_HIGHLIGHTTEXT := 1615 + Global TMT_BTNFACE := 1616 + Global TMT_BTNSHADOW := 1617 + Global TMT_GRAYTEXT := 1618 + Global TMT_BTNTEXT := 1619 + Global TMT_INACTIVECAPTIONTEXT := 1620 + Global TMT_BTNHIGHLIGHT := 1621 + Global TMT_DKSHADOW3D := 1622 + Global TMT_LIGHT3D := 1623 + Global TMT_INFOTEXT := 1624 + Global TMT_INFOBK := 1625 + Global TMT_BUTTONALTERNATEFACE := 1626 + Global TMT_HOTTRACKING := 1627 + Global TMT_GRADIENTACTIVECAPTION := 1628 + Global TMT_GRADIENTINACTIVECAPTION := 1629 + Global TMT_MENUHILIGHT := 1630 + Global TMT_MENUBAR := 1631 + Global TMT_FIRSTCOLOR := TMT_SCROLLBAR + Global TMT_LASTCOLOR := TMT_MENUBAR + Global TMT_FROMHUE1 := 1801 + Global TMT_FROMHUE2 := 1802 + Global TMT_FROMHUE3 := 1803 + Global TMT_FROMHUE4 := 1804 + Global TMT_FROMHUE5 := 1805 + Global TMT_TOHUE1 := 1806 + Global TMT_TOHUE2 := 1807 + Global TMT_TOHUE3 := 1808 + Global TMT_TOHUE4 := 1809 + Global TMT_TOHUE5 := 1810 + Global TMT_FROMCOLOR1 := 2001 + Global TMT_FROMCOLOR2 := 2002 + Global TMT_FROMCOLOR3 := 2003 + Global TMT_FROMCOLOR4 := 2004 + Global TMT_FROMCOLOR5 := 2005 + Global TMT_TOCOLOR1 := 2006 + Global TMT_TOCOLOR2 := 2007 + Global TMT_TOCOLOR3 := 2008 + Global TMT_TOCOLOR4 := 2009 + Global TMT_TOCOLOR5 := 2010 + Global TMT_TRANSPARENT := 2201 + Global TMT_AUTOSIZE := 2202 + Global TMT_BORDERONLY := 2203 + Global TMT_COMPOSITED := 2204 + Global TMT_BGFILL := 2205 + Global TMT_GLYPHTRANSPARENT := 2206 + Global TMT_GLYPHONLY := 2207 + Global TMT_ALWAYSSHOWSIZINGBAR := 2208 + Global TMT_MIRRORIMAGE := 2209 + Global TMT_UNIFORMSIZING := 2210 + Global TMT_INTEGRALSIZING := 2211 + Global TMT_SOURCEGROW := 2212 + Global TMT_SOURCESHRINK := 2213 + Global TMT_DRAWBORDERS := 2214 + Global TMT_NOETCHEDEFFECT := 2215 + Global TMT_TEXTAPPLYOVERLAY := 2216 + Global TMT_TEXTGLOW := 2217 + Global TMT_TEXTITALIC := 2218 + Global TMT_COMPOSITEDOPAQUE := 2219 + Global TMT_LOCALIZEDMIRRORIMAGE := 2220 + Global TMT_IMAGECOUNT := 2401 + Global TMT_ALPHALEVEL := 2402 + Global TMT_BORDERSIZE := 2403 + Global TMT_ROUNDCORNERWIDTH := 2404 + Global TMT_ROUNDCORNERHEIGHT := 2405 + Global TMT_GRADIENTRATIO1 := 2406 + Global TMT_GRADIENTRATIO2 := 2407 + Global TMT_GRADIENTRATIO3 := 2408 + Global TMT_GRADIENTRATIO4 := 2409 + Global TMT_GRADIENTRATIO5 := 2410 + Global TMT_PROGRESSCHUNKSIZE := 2411 + Global TMT_PROGRESSSPACESIZE := 2412 + Global TMT_SATURATION := 2413 + Global TMT_TEXTBORDERSIZE := 2414 + Global TMT_ALPHATHRESHOLD := 2415 + Global TMT_WIDTH := 2416 + Global TMT_HEIGHT := 2417 + Global TMT_GLYPHINDEX := 2418 + Global TMT_TRUESIZESTRETCHMARK := 2419 + Global TMT_MINDPI1 := 2420 + Global TMT_MINDPI2 := 2421 + Global TMT_MINDPI3 := 2422 + Global TMT_MINDPI4 := 2423 + Global TMT_MINDPI5 := 2424 + Global TMT_TEXTGLOWSIZE := 2425 + Global TMT_FRAMESPERSECOND := 2426 + Global TMT_PIXELSPERFRAME := 2427 + Global TMT_ANIMATIONDELAY := 2428 + Global TMT_GLOWINTENSITY := 2429 + Global TMT_OPACITY := 2430 + Global TMT_COLORIZATIONCOLOR := 2431 + Global TMT_COLORIZATIONOPACITY := 2432 + Global TMT_GLYPHFONT := 2601 + Global TMT_IMAGEFILE := 3001 + Global TMT_IMAGEFILE1 := 3002 + Global TMT_IMAGEFILE2 := 3003 + Global TMT_IMAGEFILE3 := 3004 + Global TMT_IMAGEFILE4 := 3005 + Global TMT_IMAGEFILE5 := 3006 + Global TMT_GLYPHIMAGEFILE := 3008 + Global TMT_TEXT := 3201 + Global TMT_CLASSICVALUE := 3202 + Global TMT_OFFSET := 3401 + Global TMT_TEXTSHADOWOFFSET := 3402 + Global TMT_MINSIZE := 3403 + Global TMT_MINSIZE1 := 3404 + Global TMT_MINSIZE2 := 3405 + Global TMT_MINSIZE3 := 3406 + Global TMT_MINSIZE4 := 3407 + Global TMT_MINSIZE5 := 3408 + Global TMT_NORMALSIZE := 3409 + Global TMT_SIZINGMARGINS := 3601 + Global TMT_CONTENTMARGINS := 3602 + Global TMT_CAPTIONMARGINS := 3603 + Global TMT_BORDERCOLOR := 3801 + Global TMT_FILLCOLOR := 3802 + Global TMT_TEXTCOLOR := 3803 ;needed + Global TMT_EDGELIGHTCOLOR := 3804 + Global TMT_EDGEHIGHLIGHTCOLOR := 3805 + Global TMT_EDGESHADOWCOLOR := 3806 + Global TMT_EDGEDKSHADOWCOLOR := 3807 + Global TMT_EDGEFILLCOLOR := 3808 + Global TMT_TRANSPARENTCOLOR := 3809 + Global TMT_GRADIENTCOLOR1 := 3810 + Global TMT_GRADIENTCOLOR2 := 3811 + Global TMT_GRADIENTCOLOR3 := 3812 + Global TMT_GRADIENTCOLOR4 := 3813 + Global TMT_GRADIENTCOLOR5 := 3814 + Global TMT_SHADOWCOLOR := 3815 + Global TMT_GLOWCOLOR := 3816 + Global TMT_TEXTBORDERCOLOR := 3817 + Global TMT_TEXTSHADOWCOLOR := 3818 + Global TMT_GLYPHTEXTCOLOR := 3819 + Global TMT_GLYPHTRANSPARENTCOLOR := 3820 + Global TMT_FILLCOLORHINT := 3821 + Global TMT_BORDERCOLORHINT := 3822 + Global TMT_ACCENTCOLORHINT := 3823 + Global TMT_TEXTCOLORHINT := 3824 + Global TMT_HEADING1TEXTCOLOR := 3825 + Global TMT_HEADING2TEXTCOLOR := 3826 + Global TMT_BODYTEXTCOLOR := 3827 + Global TMT_BGTYPE := 4001 + Global TMT_BORDERTYPE := 4002 + Global TMT_FILLTYPE := 4003 + Global TMT_SIZINGTYPE := 4004 + Global TMT_HALIGN := 4005 + Global TMT_CONTENTALIGNMENT := 4006 + Global TMT_VALIGN := 4007 + Global TMT_OFFSETTYPE := 4008 + Global TMT_ICONEFFECT := 4009 + Global TMT_TEXTSHADOWTYPE := 4010 + Global TMT_IMAGELAYOUT := 4011 + Global TMT_GLYPHTYPE := 4012 + Global TMT_IMAGESELECTTYPE := 4013 + Global TMT_GLYPHFONTSIZINGTYPE := 4014 + Global TMT_TRUESIZESCALINGTYPE := 4015 + Global TMT_USERPICTURE := 5001 + Global TMT_DEFAULTPANESIZE := 5002 + Global TMT_BLENDCOLOR := 5003 + Global TMT_CUSTOMSPLITRECT := 5004 + Global TMT_ANIMATIONBUTTONRECT := 5005 + Global TMT_ANIMATIONDURATION := 5006 + Global TMT_TRANSITIONDURATIONS := 6000 + Global TMT_SCALEDBACKGROUND := 7001 + Global TMT_ATLASIMAGE := 8000 + Global TMT_ATLASINPUTIMAGE := 8001 + Global TMT_ATLASRECT := 8002 + Global BCM_FIRST := 0x3 + Global BCM_GETNOTELENGTH := 0x160B ;needed + Global BCM_GETNOTE := 0x160A ;needed + Global BCM_SETNOTE := 0x1609 ;needed + Global SRCCOPY := 0x00CC0020 ;needed + + ; ---- Window Class Styles ---- ; + Global CS_VREDRAW := 0x0001 + Global CS_HREDRAW := 0x0002 + Global CS_DBLCLKS := 0x0008 + Global CS_OWNDC := 0x0020 + Global CS_CLASSDC := 0x0040 + Global CS_PARENTDC := 0x0080 + Global CS_NOCLOSE := 0x0200 + Global CS_SAVEBITS := 0x0800 + Global CS_BYTEALIGNCLIENT := 0x1000 + Global CS_BYTEALIGNWINDOW := 0x2000 + Global CS_GLOBALCLASS := 0x4000 + Global CS_IME := 0x00010000 + Global CS_DROPSHADOW := 0x00020000 + + ; ---- Values for Blend Function Structure ---- ; + Global AC_SRC_OVER := 0x0 + Global AC_SRC_ALPHA := 0x01 + Global AC_SRC_NO_ALPHA := 0x02 + + ; ---- Values for BP_BUFFERFORMAT ---- ; + Global BPAS_NONE := 0 + Global BPAS_LINEAR := 1 + Global BPAS_CUBIC := 2 + Global BPAS_SINE := 3 + + ; ---- dwFlags for OpenThemeDataEx ---- ; + Global OTD_FORCE_RECT_SIZING := 0x00000001 + Global OTD_NONCLIENT := 0x00000002 + + ; ---- dwFlags for DrawThemeBackgroundEx ---- ; + Global DTBG_CLIPRECT := 0x00000001 + Global DTBG_DRAWSOLID := 0x00000002 + Global DTBG_OMITBORDER := 0x00000004 + Global DTBG_OMITCONTENT := 0x00000008 + Global DTBG_COMPUTINGREGION := 0x00000010 + Global DTBG_MIRRORDC := 0x00000020 + Global DTBG_NOMIRROR := 0x00000040 + + ; ----- dwFlags for DrawThemeText ---- ; + Global DTT_GRAYED := 0x00000001 + Global DTT_TEXTCOLOR := (1 << 0) + Global DTT_BORDERCOLOR := (1 << 1) + Global DTT_SHADOWCOLOR := (1 << 2) + Global DTT_SHADOWTYPE := (1 << 3) + Global DTT_SHADOWOFFSET := (1 << 4) + Global DTT_BORDERSIZE := (1 << 5) + Global DTT_FONTPROP := (1 << 6) + Global DTT_COLORPROP := (1 << 7) + Global DTT_STATEID := (1 << 8) + Global DTT_CALCRECT := (1 << 9) + Global DTT_APPLYOVERLAY := (1 << 10) + Global DTT_GLOWSIZE := (1 << 11) + Global DTT_CALLBACK := (1 << 12) + Global DTT_COMPOSITED := (1 << 13) + + ; ----- eSize for GetThemePartSize ---- ; + Global TS_MIN := 0 + Global TS_TRUE := 1 + Global TS_DRAW := 2 + + ; ----- dwOptions for HitTestThemeBackground ---- ; + Global HTTB_BACKGROUNDSEG := 0x00000000 + Global HTTB_FIXEDBORDER := 0x00000002 + Global HTTB_CAPTION := 0x00000004 + Global HTTB_RESIZINGBORDER_LEFT := 0x00000010 + Global HTTB_RESIZINGBORDER_TOP := 0x00000020 + Global HTTB_RESIZINGBORDER_RIGHT := 0x00000040 + Global HTTB_RESIZINGBORDER_BOTTOM :=0x00000080 + Global HTTB_RESIZINGBORDER := (HTTB_RESIZINGBORDER_LEFT|HTTB_RESIZINGBORDER_TOP|HTTB_RESIZINGBORDER_RIGHT|HTTB_RESIZINGBORDER_BOTTOM) + Global HTTB_SIZINGTEMPLATE := 0x00000100 + Global HTTB_SYSTEMSIZINGMARGINS := 0x00000200 + + ; ---- dwFlags for GetThemeIntList ---- ; + Global MAX_INTLIST_COUNT := 402 + Global MAX_INTLIST_COUNT := 10 + + ; ---- dwFlags for SetWindowThemeAttribute ---- ; + Global WTA_NONCLIENT := 1 + Global WTNCA_NODRAWCAPTION := 0x00000001 + Global WTNCA_NODRAWICON := 0x00000002 + Global WTNCA_NOSYSMENU := 0x00000004 + Global WTNCA_NOMIRRORHELP := 0x00000008 + + ; ---- dwFlags for EnableThemeDialogTexture ---- ; + Global ETDT_DISABLE := 0x00000001 + Global ETDT_ENABLE := 0x00000002 + Global ETDT_USETABTEXTURE := 0x00000004 + Global ETDT_USEAEROWIZARDTABTEXTURE := 0x00000008 + Global ETDT_ENABLETAB := (ETDT_ENABLE|ETDT_USETABTEXTURE) + Global ETDT_ENABLEAEROWIZARDTAB := (ETDT_ENABLE|ETDT_USEAEROWIZARDTABTEXTURE) + + ; ---- dwFlags for SetThemeAppProperties ---- ; + Global STAP_ALLOW_NONCLIENT := (1 << 0) + Global STAP_ALLOW_CONTROLS := (1 << 1) + Global STAP_ALLOW_WEBCONTENT := (1 << 2) + + ; ---- dwFlags for DrawThemeParentBackgroundEx ---- ; + Global DTPB_WINDOWDC := 0x00000001 + Global DTPB_USECTLCOLORSTATIC := 0x00000002 + Global DTPB_USEERASEBKGND := 0x00000004 + + ; ---- dwFlags for GetThemeBitmap ---- ; + Global GBF_DIRECT := 0x00000001 + Global GBF_COPY := 0x00000002 + + ; ==== UxTheme Parts and States ==== ; + + ; ---- AEROWIZARDPARTS ---- ; + Global AW_TITLEBAR := 1 + Global AW_HEADERAREA := 2 + Global AW_CONTENTAREA := 3 + Global AW_COMMANDAREA := 4 + Global AW_BUTTON := 5 + + ; ---- AEROWIZARD TITLEBARSTATES ---- ; + Global AW_S_TITLEBAR_ACTIVE := 1 + Global AW_S_TITLEBAR_INACTIVE:= 2 + + ; ---- AEROWIZARD HEADERAREASTATES ---- ; + Global AW_S_HEADERAREA_NOMARGIN := 1 + + ; ---- AEROWIZARD CONTENTAREASTATES ---- ; + Global AW_S_CONTENTAREA_NOMARGIN := 1 + + ; ---- BUTTONPARTS ---- ; + Global BP_PUSHBUTTON := 1 + Global BP_RADIOBUTTON := 2 + Global BP_CHECKBOX := 3 + Global BP_GROUPBOX := 4 + Global BP_USERBUTTON := 5 + Global BP_COMMANDLINK := 6 + Global BP_COMMANDLINKGLYPH := 7 + + ; ---- PUSHBUTTONSTATES ---- ; + Global PBS_NORMAL := 1 + Global PBS_HOT := 2 + Global PBS_PRESSED := 3 + Global PBS_DISABLED := 4 + Global PBS_DEFAULTED := 5 + Global PBS_DEFAULTED_ANIMATING := 6 + + ; ---- RADIOBUTTONSTATES ---- ; + Global RBS_UNCHECKEDNORMAL := 1 + Global RBS_UNCHECKEDHOT := 2 + Global RBS_UNCHECKEDPRESSED := 3 + Global RBS_UNCHECKEDDISABLED := 4 + Global RBS_CHECKEDNORMAL := 5 + Global RBS_CHECKEDHOT := 6 + Global RBS_CHECKEDPRESSED := 7 + Global RBS_CHECKEDDISABLED := 8 + + ; ---- CHECKBOXSTATES ---- ; + Global CBS_UNCHECKEDNORMAL := 1 + Global CBS_UNCHECKEDHOT := 2 + Global CBS_UNCHECKEDPRESSED := 3 + Global CBS_UNCHECKEDDISABLED := 4 + Global CBS_CHECKEDNORMAL := 5 + Global CBS_CHECKEDHOT := 6 + Global CBS_CHECKEDPRESSED := 7 + Global CBS_CHECKEDDISABLED := 8 + Global CBS_MIXEDNORMAL := 9 + Global CBS_MIXEDHOT := 10 + Global CBS_MIXEDPRESSED := 11 + Global CBS_MIXEDDISABLED := 12 + Global CBS_IMPLICITNORMAL := 13 + Global CBS_IMPLICITHOT := 14 + Global CBS_IMPLICITPRESSED := 15 + Global CBS_IMPLICITDISABLED := 16 + Global CBS_EXCLUDEDNORMAL := 17 + Global CBS_EXCLUDEDHOT := 18 + Global CBS_EXCLUDEDPRESSED := 19 + Global CBS_EXCLUDEDDISABLED := 20 + + ; ---- GROUPBOXSTATES ---- ; + Global GBS_NORMAL := 1 + Global GBS_DISABLED := 2 + + ; ---- COMMANDLINKSTATES ---- ; + Global CMDLS_NORMAL := 1 + Global CMDLS_HOT := 2 + Global CMDLS_PRESSED := 3 + Global CMDLS_DISABLED := 4 + Global CMDLS_DEFAULTED := 5 + Global CMDLS_DEFAULTED_ANIMATING := 6 + + ; ---- COMMANDLINKGLYPHSTATES ---- ; + Global CMDLGS_NORMAL := 1 + Global CMDLGS_HOT := 2 + Global CMDLGS_PRESSED := 3 + Global CMDLGS_DISABLED := 4 + Global CMDLGS_DEFAULTED := 5 + + ; ---- COMBOBOXPARTS ---- ; + Global CP_DROPDOWNBUTTON := 1 + Global CP_BACKGROUND := 2 + Global CP_TRANSPARENTBACKGROUND := 3 + Global CP_BORDER := 4 + Global CP_READONLY := 5 + Global CP_DROPDOWNBUTTONRIGHT:= 6 + Global CP_DROPDOWNBUTTONLEFT := 7 + Global CP_CUEBANNER := 8 + + ; ---- COMBOBOXSTYLESTATES ---- ; + Global CBXS_NORMAL := 1 + Global CBXS_HOT := 2 + Global CBXS_PRESSED := 3 + Global CBXS_DISABLED := 4 + + ; ---- DROPDOWNBUTTONRIGHTSTATES ---- ; + Global CBXSR_NORMAL := 1 + Global CBXSR_HOT := 2 + Global CBXSR_PRESSED := 3 + Global CBXSR_DISABLED := 4 + + ; ---- DROPDOWNBUTTONLEFTSTATES ---- ; + Global CBXSL_NORMAL := 1 + Global CBXSL_HOT := 2 + Global CBXSL_PRESSED := 3 + Global CBXSL_DISABLED := 4 + + ; ---- TRANSPARENTBACKGROUNDSTATES ---- ; + Global CBTBS_NORMAL := 1 + Global CBTBS_HOT := 2 + Global CBTBS_PRESSED := 3 + Global CBTBS_DISABLED := 4 + + ; ---- BORDERSTATES ---- ; + Global CBB_NORMAL := 1 + Global CBB_HOT := 2 + Global CBB_PRESSED := 3 + Global CBB_DISABLED := 4 + + ; ---- READONLYSTATES ---- ; + Global CBRO_NORMAL := 1 + Global CBRO_HOT := 2 + Global CBRO_PRESSED := 3 + Global CBRO_DISABLED := 4 + + ; ---- CUEBANNERSTATES ---- ; + Global CBCB_NORMAL := 1 + Global CBCB_HOT := 2 + Global CBCB_PRESSED := 3 + Global CBCB_DISABLED := 4 + + ; ---- COMMUNICATIONSPARTS ---- ; + Global CSST_TAB := 1 + + ; ---- TABSTATES ---- ; + Global CSTB_NORMAL := 1 + Global CSTB_HOT := 2 + Global CSTB_SELECTED := 3 + + ; ---- CONTROLPANELPARTS ---- ; + Global CPANEL_NAVIGATIONPANE:= 1 + Global CPANEL_CONTENTPANE := 2 + Global CPANEL_NAVIGATIONPANELABEL := 3 + Global CPANEL_CONTENTPANELABEL:= 4 + Global CPANEL_TITLE := 5 + Global CPANEL_BODYTEXT := 6 + Global CPANEL_HELPLINK := 7 + Global CPANEL_TASKLINK := 8 + Global CPANEL_GROUPTEXT := 9 + Global CPANEL_CONTENTLINK := 10 + Global CPANEL_SECTIONTITLELINK:= 11 + Global CPANEL_LARGECOMMANDAREA:= 12 + Global CPANEL_SMALLCOMMANDAREA:= 13 + Global CPANEL_BUTTON := 14 + Global CPANEL_MESSAGETEXT := 15 + Global CPANEL_NAVIGATIONPANELINE:= 16 + Global CPANEL_CONTENTPANELINE:= 17 + Global CPANEL_BANNERAREA := 18 + Global CPANEL_BODYTITLE := 19 + + ; ---- HELPLINKSTATES ---- ; + Global CPHL_NORMAL := 1 + Global CPHL_HOT := 2 + Global CPHL_PRESSED := 3 + Global CPHL_DISABLED := 4 + + ; ---- TASKLINKSTATES ---- ; + Global CPTL_NORMAL := 1 + Global CPTL_HOT := 2 + Global CPTL_PRESSED := 3 + Global CPTL_DISABLED := 4 + Global CPTL_PAGE := 5 + + ; ---- CONTENTLINKSTATES ---- ; + Global CPCL_NORMAL := 1 + Global CPCL_HOT := 2 + Global CPCL_PRESSED := 3 + Global CPCL_DISABLED := 4 + + ; ---- SECTIONTITLELINKSTATES ---- ; + Global CPSTL_NORMAL := 1 + Global CPSTL_HOT := 2 + + ; ---- DATEPICKERPARTS ---- ; + Global DP_DATETEXT := 1 + Global DP_DATEBORDER := 2 + Global DP_SHOWCALENDARBUTTONRIGHT:= 3 + + ; ---- DATETEXTSTATES ---- ; + Global DPDT_NORMAL := 1 + Global DPDT_DISABLED := 2 + Global DPDT_SELECTED := 3 + + ; ---- DATEBORDERSTATES ---- ; + Global DPDB_NORMAL := 1 + Global DPDB_HOT := 2 + Global DPDB_FOCUSED := 3 + Global DPDB_SELECTED := 4 + + ; ---- SHOWCALENDARBUTTONRIGHTSTATES ---- ; + Global DPSCBR_NORMAL := 1 + Global DPSCBR_HOT := 2 + Global DPSCBR_PRESSED := 3 + Global DPSCBR_DISABLED := 4 + + ; ---- DRAGDROPPARTS ---- ; + Global DD_COPY := 1 + Global DD_MOVE := 2 + Global DD_UPDATEMETADATA := 3 + Global DD_CREATELINK := 4 + Global DD_WARNING := 5 + Global DD_NONE := 6 + Global DD_IMAGEBG := 7 + Global DD_TEXTBG := 8 + + ; ---- COPYSTATES ---- ; + Global DDCOPY_HIGHLIGHT := 1 + Global DDCOPY_NOHIGHLIGHT := 2 + + ; ---- MOVESTATES ---- ; + Global DDMOVE_HIGHLIGHT := 1 + Global DDMOVE_NOHIGHLIGHT := 2 + + ; ---- UPDATEMETADATASTATES ---- ; + Global DDUPDATEMETADATA_HIGHLIGHT := 1 + Global DDUPDATEMETADATA_NOHIGHLIGHT:= 2 + + ; ---- CREATELINKSTATES ---- ; + Global DDCREATELINK_HIGHLIGHT := 1 + Global DDCREATELINK_NOHIGHLIGHT:= 2 + + ; ---- WARNINGSTATES ---- ; + Global DDWARNING_HIGHLIGHT := 1 + Global DDWARNING_NOHIGHLIGHT:= 2 + + ; ---- NONESTATES ---- ; + Global DDNONE_HIGHLIGHT := 1 + Global DDNONE_NOHIGHLIGHT := 2 + + ; ---- EDITPARTS ---- ; + Global EP_EDITTEXT := 1 + Global EP_CARET := 2 + Global EP_BACKGROUND := 3 + Global EP_PASSWORD := 4 + Global EP_BACKGROUNDWITHBORDER := 5 + Global EP_EDITBORDER_NOSCROLL := 6 + Global EP_EDITBORDER_HSCROLL := 7 + Global EP_EDITBORDER_VSCROLL := 8 + Global EP_EDITBORDER_HVSCROLL := 9 + + ; ---- EDITTEXTSTATES ---- ; + Global ETS_NORMAL := 1 + Global ETS_HOT := 2 + Global ETS_SELECTED := 3 ;needed + Global ETS_DISABLED := 4 + Global ETS_FOCUSED := 5 + Global ETS_READONLY := 6 + Global ETS_ASSIST := 7 + Global ETS_CUEBANNER := 8 + + ; ---- BACKGROUNDSTATES ---- ; + Global EBS_NORMAL := 1 ;needed + Global EBS_HOT := 2 + Global EBS_DISABLED := 3 + Global EBS_FOCUSED := 4 + Global EBS_READONLY := 5 + Global EBS_ASSIST := 6 + + ; ---- BACKGROUNDWITHBORDERSTATES ---- ; + Global EBWBS_NORMAL := 1 + Global EBWBS_HOT := 2 + Global EBWBS_DISABLED := 3 + Global EBWBS_FOCUSED := 4 + + ; ---- EDITBORDER_NOSCROLLSTATES ---- ; + Global EPSN_NORMAL := 1 + Global EPSN_HOT := 2 + Global EPSN_FOCUSED := 3 + Global EPSN_DISABLED := 4 + + ; ---- EDITBORDER_HSCROLLSTATES ---- ; + Global EPSH_NORMAL := 1 + Global EPSH_HOT := 2 + Global EPSH_FOCUSED := 3 + Global EPSH_DISABLED := 4 + + ; ---- EDITBORDER_VSCROLLSTATES ---- ; + Global EPSV_NORMAL := 1 + Global EPSV_HOT := 2 + Global EPSV_FOCUSED := 3 + Global EPSV_DISABLED := 4 + + ; ---- EDITBORDER_HVSCROLLSTATES ---- ; + Global EPSHV_NORMAL := 1 + Global EPSHV_HOT := 2 + Global EPSHV_FOCUSED := 3 + Global EPSHV_DISABLED := 4 + + ; ---- EXPLORERBARPARTS ---- ; + Global EBP_HEADERBACKGROUND := 1 + Global EBP_HEADERCLOSE := 2 + Global EBP_HEADERPIN := 3 + Global EBP_IEBARMENU := 4 + Global EBP_NORMALGROUPBACKGROUND := 5 + Global EBP_NORMALGROUPCOLLAPSE := 6 + Global EBP_NORMALGROUPEXPAND := 7 + Global EBP_NORMALGROUPHEAD := 8 + Global EBP_SPECIALGROUPBACKGROUND := 9 + Global EBP_SPECIALGROUPCOLLAPSE := 10 + Global EBP_SPECIALGROUPEXPAND := 11 + Global EBP_SPECIALGROUPHEAD := 12 + + ; ---- HEADERCLOSESTATES ---- ; + Global EBHC_NORMAL := 1 + Global EBHC_HOT := 2 + Global EBHC_PRESSED := 3 + + ; ---- HEADERPINSTATES ---- ; + Global EBHP_NORMAL := 1 + Global EBHP_HOT := 2 + Global EBHP_PRESSED := 3 + Global EBHP_SELECTEDNORMAL := 4 + Global EBHP_SELECTEDHOT := 5 + Global EBHP_SELECTEDPRESSED := 6 + + ; ---- IEBARMENUSTATES ---- ; + Global EBM_NORMAL := 1 + Global EBM_HOT := 2 + Global EBM_PRESSED := 3 + + ; ---- NORMALGROUPCOLLAPSESTATES ---- ; + Global EBNGC_NORMAL := 1 + Global EBNGC_HOT := 2 + Global EBNGC_PRESSED := 3 + + ; ---- NORMALGROUPEXPANDSTATES ---- ; + Global EBNGE_NORMAL := 1 + Global EBNGE_HOT := 2 + Global EBNGE_PRESSED := 3 + + ; ---- SPECIALGROUPCOLLAPSESTATES ---- ; + Global EBSGC_NORMAL := 1 + Global EBSGC_HOT := 2 + Global EBSGC_PRESSED := 3 + + ; ---- SPECIALGROUPEXPANDSTATES ---- ; + Global EBSGE_NORMAL := 1 + Global EBSGE_HOT := 2 + Global EBSGE_PRESSED := 3 + + ; ---- FLYOUTPARTS ---- ; + Global FLYOUT_HEADER := 1 + Global FLYOUT_BODY := 2 + Global FLYOUT_LABEL := 3 + Global FLYOUT_LINK := 4 + Global FLYOUT_DIVIDER := 5 + Global FLYOUT_WINDOW := 6 + Global FLYOUT_LINKAREA := 7 + Global FLYOUT_LINKHEADER := 8 + + ; ---- LABELSTATES ---- ; + Global FLS_NORMAL := 1 + Global FLS_SELECTED := 2 + Global FLS_EMPHASIZED := 3 + Global FLS_DISABLED := 4 + + ; ---- LINKSTATES ---- ; + Global FLYOUTLINK_NORMAL := 1 + Global FLYOUTLINK_HOVER := 2 + + ; ---- BODYSTATES ---- ; + Global FBS_NORMAL := 1 + Global FBS_EMPHASIZED := 2 + + ; ---- LINKHEADERSTATES ---- ; + Global FLH_NORMAL := 1 + Global FLH_HOVER := 2 + + ; ---- HEADERPARTS ---- ; + Global HP_HEADERITEM := 1 + Global HP_HEADERITEMLEFT := 2 + Global HP_HEADERITEMRIGHT := 3 + Global HP_HEADERSORTARROW := 4 + Global HP_HEADERDROPDOWN := 5 + Global HP_HEADERDROPDOWNFILTER := 6 + Global HP_HEADEROVERFLOW := 7 + + ; ---- HEADERSTYLESTATES ---- ; + Global HBG_DETAILS := 1 + Global HBG_ICON := 2 + ; ---- HEADERITEMSTATES ---- ; + Global HIS_NORMAL := 1 + Global HIS_HOT := 2 + Global HIS_PRESSED := 3 + Global HIS_SORTEDNORMAL := 4 + Global HIS_SORTEDHOT := 5 + Global HIS_SORTEDPRESSED := 6 + Global HIS_ICONNORMAL := 7 + Global HIS_ICONHOT := 8 + Global HIS_ICONPRESSED := 9 + Global HIS_ICONSORTEDNORMAL := 10 + Global HIS_ICONSORTEDHOT := 11 + Global HIS_ICONSORTEDPRESSED := 12 + + ; ---- HEADERITEMLEFTSTATES ---- ; + Global HILS_NORMAL := 1 + Global HILS_HOT := 2 + Global HILS_PRESSED := 3 + + ; ---- HEADERITEMRIGHTSTATES ---- ; + Global HIRS_NORMAL := 1 + Global HIRS_HOT := 2 + Global HIRS_PRESSED := 3 + ; ---- HEADERSORTARROWSTATES ---- ; + Global HSAS_SORTEDUP := 1 + Global HSAS_SORTEDDOWN := 2 + + ; ---- HEADERDROPDOWNSTATES ---- ; + Global HDDS_NORMAL := 1 + Global HDDS_SOFTHOT := 2 + Global HDDS_HOT := 3 + ; ---- HEADERDROPDOWNFILTERSTATES ---- ; + Global HDDFS_NORMAL := 1 + Global HDDFS_SOFTHOT := 2 + Global HDDFS_HOT := 3 + + ; ---- HEADEROVERFLOWSTATES ---- ; + Global HOFS_NORMAL := 1 + Global HOFS_HOT := 2 + + ; ---- LISTBOXPARTS ---- ; + Global LBCP_BORDER_HSCROLL := 1 + Global LBCP_BORDER_HVSCROLL := 2 + Global LBCP_BORDER_NOSCROLL := 3 + Global LBCP_BORDER_VSCROLL := 4 + Global LBCP_ITEM := 5 + + ; ---- BORDER_HSCROLLSTATES ---- ; + Global LBPSH_NORMAL := 1 + Global LBPSH_FOCUSED := 2 + Global LBPSH_HOT := 3 + Global LBPSH_DISABLED := 4 + + ; ---- BORDER_HVSCROLLSTATES ---- ; + Global LBPSHV_NORMAL := 1 + Global LBPSHV_FOCUSED := 2 + Global LBPSHV_HOT := 3 + Global LBPSHV_DISABLED := 4 + + ; ---- BORDER_NOSCROLLSTATES ---- ; + Global LBPSN_NORMAL := 1 + Global LBPSN_FOCUSED := 2 + Global LBPSN_HOT := 3 + Global LBPSN_DISABLED := 4 + + ; ---- BORDER_VSCROLLSTATES ---- ; + Global LBPSV_NORMAL := 1 + Global LBPSV_FOCUSED := 2 + Global LBPSV_HOT := 3 + Global LBPSV_DISABLED := 4 + + ; ---- ITEMSTATES ---- ; + Global LBPSI_HOT := 1 + Global LBPSI_HOTSELECTED := 2 + Global LBPSI_SELECTED := 3 + Global LBPSI_SELECTEDNOTFOCUS := 4 + + ; ---- LISTVIEWPARTS ---- ; + Global LVP_LISTITEM := 1 + Global LVP_LISTGROUP := 2 + Global LVP_LISTDETAIL := 3 + Global LVP_LISTSORTEDDETAIL := 4 + Global LVP_EMPTYTEXT := 5 + Global LVP_GROUPHEADER := 6 + Global LVP_GROUPHEADERLINE := 7 + Global LVP_EXPANDBUTTON := 8 + Global LVP_COLLAPSEBUTTON := 9 + Global LVP_COLUMNDETAIL := 10 + + ; ---- LISTITEMSTATES ---- ; + Global LISS_NORMAL := 1 + Global LISS_HOT := 2 + Global LISS_SELECTED := 3 + Global LISS_DISABLED := 4 + Global LISS_SELECTEDNOTFOCUS := 5 + Global LISS_HOTSELECTED := 6 + + ; ---- GROUPHEADERSTATES ---- ; + Global LVGH_OPEN := 1 + Global LVGH_OPENHOT := 2 + Global LVGH_OPENSELECTED := 3 + Global LVGH_OPENSELECTEDHOT := 4 + Global LVGH_OPENSELECTEDNOTFOCUSED := 5 + Global LVGH_OPENSELECTEDNOTFOCUSEDHOT := 6 + Global LVGH_OPENMIXEDSELECTION := 7 + Global LVGH_OPENMIXEDSELECTIONHOT := 8 + Global LVGH_CLOSE := 9 + Global LVGH_CLOSEHOT := 10 + Global LVGH_CLOSESELECTED := 11 + Global LVGH_CLOSESELECTEDHOT := 12 + Global LVGH_CLOSESELECTEDNOTFOCUSED := 13 + Global LVGH_CLOSESELECTEDNOTFOCUSEDHOT := 14 + Global LVGH_CLOSEMIXEDSELECTION := 15 + Global LVGH_CLOSEMIXEDSELECTIONHOT := 16 + + ; ---- GROUPHEADERLINESTATES ---- ; + Global LVGHL_OPEN := 1 + Global LVGHL_OPENHOT := 2 + Global LVGHL_OPENSELECTED := 3 + Global LVGHL_OPENSELECTEDHOT := 4 + Global LVGHL_OPENSELECTEDNOTFOCUSED := 5 + Global LVGHL_OPENSELECTEDNOTFOCUSEDHOT := 6 + Global LVGHL_OPENMIXEDSELECTION := 7 + Global LVGHL_OPENMIXEDSELECTIONHOT := 8 + Global LVGHL_CLOSE := 9 + Global LVGHL_CLOSEHOT := 10 + Global LVGHL_CLOSESELECTED := 11 + Global LVGHL_CLOSESELECTEDHOT := 12 + Global LVGHL_CLOSESELECTEDNOTFOCUSED := 13 + Global LVGHL_CLOSESELECTEDNOTFOCUSEDHOT := 14 + Global LVGHL_CLOSEMIXEDSELECTION := 15 + Global Global LVGHL_CLOSEMIXEDSELECTIONHOT := 16 + + ; ---- EXPANDBUTTONSTATES ---- ; + Global LVEB_NORMAL := 1 + Global LVEB_HOVER := 2 + Global LVEB_PUSHED := 3 + + ; ---- COLLAPSEBUTTONSTATES ---- ; + Global LVCB_NORMAL := 1 + Global LVCB_HOVER := 2 + Global LVCB_PUSHED := 3 + + ; ---- MENUPARTS ---- ; + Global MENU_MENUITEM_TMSCHEMA := 1 + Global MENU_MENUDROPDOWN_TMSCHEMA := 2 + Global MENU_MENUBARITEM_TMSCHEMA := 3 + Global MENU_MENUBARDROPDOWN_TMSCHEMA := 4 + Global MENU_CHEVRON_TMSCHEMA := 5 + Global MENU_SEPARATOR_TMSCHEMA := 6 + Global MENU_BARBACKGROUND := 7 + Global MENU_BARITEM := 8 + Global MENU_POPUPBACKGROUND := 9 + Global MENU_POPUPBORDERS := 10 + Global MENU_POPUPCHECK := 11 + Global MENU_POPUPCHECKBACKGROUND := 12 + Global MENU_POPUPGUTTER := 13 + Global MENU_POPUPITEM := 14 + Global MENU_POPUPSEPARATOR := 15 + Global MENU_POPUPSUBMENU := 16 + Global MENU_SYSTEMCLOSE := 17 + Global MENU_SYSTEMMAXIMIZE := 18 + Global MENU_SYSTEMMINIMIZE := 19 + Global MENU_SYSTEMRESTORE := 20 + + ; ---- BARBACKGROUNDSTATES ---- ; + Global MB_ACTIVE := 1 + Global MB_INACTIVE := 2 + + ; ---- BARITEMSTATES ---- ; + Global MBI_NORMAL := 1 + Global MBI_HOT := 2 + Global MBI_PUSHED := 3 + Global MBI_DISABLED := 4 + Global MBI_DISABLEDHOT := 5 + Global MBI_DISABLEDPUSHED := 6 + + ; ---- POPUPCHECKSTATES ---- ; + Global MC_CHECKMARKNORMAL := 1 + Global MC_CHECKMARKDISABLED := 2 + Global MC_BULLETNORMAL := 3 + Global MC_BULLETDISABLED := 4 + + ; ---- POPUPCHECKBACKGROUNDSTATES ---- ; + Global MCB_DISABLED := 1 + Global MCB_NORMAL := 2 + Global MCB_BITMAP := 3 + + ; ---- POPUPITEMSTATES ---- ; + Global MPI_NORMAL := 1 + Global MPI_HOT := 2 + Global MPI_DISABLED := 3 + Global MPI_DISABLEDHOT := 4 + + ; ---- POPUPSUBMENUSTATES ---- ; + Global MSM_NORMAL := 1 + Global MSM_DISABLED := 2 + + ; ---- SYSTEMCLOSESTATES ---- ; + Global MSYSC_NORMAL := 1 + Global MSYSC_DISABLED := 2 + + ; ---- SYSTEMMAXIMIZESTATES ---- ; + Global MSYSMX_NORMAL := 1 + Global MSYSMX_DISABLED := 2 + + ; ---- SYSTEMMINIMIZESTATES ---- ; + Global MSYSMN_NORMAL := 1 + Global MSYSMN_DISABLED := 2 + + ; ---- SYSTEMRESTORESTATES ---- ; + Global MSYSR_NORMAL := 1 + Global MSYSR_DISABLED := 2 + + ; ---- NAVIGATIONPARTS ---- ; + Global NAV_BACKBUTTON := 1 + Global NAV_FORWARDBUTTON := 2 + Global NAV_MENUBUTTON := 3 + + ; ---- NAV_BACKBUTTONSTATES ---- ; + Global NAV_BB_NORMAL := 1 + Global NAV_BB_HOT := 2 + Global NAV_BB_PRESSED := 3 + Global NAV_BB_DISABLED := 4 + + ; ---- NAV_FORWARDBUTTONSTATES ---- ; + Global NAV_FB_NORMAL := 1 + Global NAV_FB_HOT := 2 + Global NAV_FB_PRESSED := 3 + Global NAV_FB_DISABLED := 4 + + ; ---- NAV_MENUBUTTONSTATES ---- ; + Global NAV_MB_NORMAL := 1 + Global NAV_MB_HOT := 2 + Global NAV_MB_PRESSED := 3 + Global NAV_MB_DISABLED := 4 + + ; ---- PROGRESSPARTS ---- ; + Global PP_BAR := 1 + Global PP_BARVERT := 2 + Global PP_CHUNK := 3 + Global PP_CHUNKVERT := 4 + Global PP_FILL := 5 + Global PP_FILLVERT := 6 + Global PP_PULSEOVERLAY := 7 + Global PP_MOVEOVERLAY := 8 + Global PP_PULSEOVERLAYVERT := 9 + Global PP_MOVEOVERLAYVERT := 10 + Global PP_TRANSPARENTBAR := 11 + Global PP_TRANSPARENTBARVERT := 12 + + ; ---- TRANSPARENTBARSTATES ---- ; + Global PBBS_NORMAL := 1 + Global PBBS_PARTIAL := 2 + + ; ---- TRANSPARENTBARVERTSTATES ---- ; + Global PBBVS_NORMAL := 1 + Global PBBVS_PARTIAL := 2 + + ; ---- FILLSTATES ---- ; + Global PBFS_NORMAL := 1 + Global PBFS_ERROR := 2 + Global PBFS_PAUSED := 3 + Global PBFS_PARTIAL := 4 + + ; ---- FILLVERTSTATES ---- ; + Global PBFVS_NORMAL := 1 + Global PBFVS_ERROR := 2 + Global PBFVS_PAUSED := 3 + Global PBFVS_PARTIAL := 4 + + ; ---- REBARPARTS ---- ; + Global RP_GRIPPER := 1 + Global RP_GRIPPERVERT := 2 + Global RP_BAND := 3 + Global RP_CHEVRON := 4 + Global RP_CHEVRONVERT := 5 + Global RP_BACKGROUND := 6 + Global RP_SPLITTER := 7 + Global RP_SPLITTERVERT := 8 + + ; ---- CHEVRONSTATES ---- ; + Global CHEVS_NORMAL := 1 + Global CHEVS_HOT := 2 + Global CHEVS_PRESSED := 3 + + ; ---- CHEVRONVERTSTATES ---- ; + Global CHEVSV_NORMAL := 1 + Global CHEVSV_HOT := 2 + Global CHEVSV_PRESSED := 3 + + ; ---- SPLITTERSTATES ---- ; + Global SPLITS_NORMAL := 1 + Global SPLITS_HOT := 2 + Global SPLITS_PRESSED := 3 + + ; ---- SPLITTERVERTSTATES ---- ; + Global SPLITSV_NORMAL := 1 + Global SPLITSV_HOT := 2 + Global SPLITSV_PRESSED := 3 + + ; ---- SCROLLBARPARTS ---- ; + Global SBP_ARROWBTN := 1 + Global SBP_THUMBBTNHORZ := 2 + Global SBP_THUMBBTNVERT := 3 + Global SBP_LOWERTRACKHORZ := 4 + Global SBP_UPPERTRACKHORZ := 5 + Global SBP_LOWERTRACKVERT := 6 + Global SBP_UPPERTRACKVERT := 7 + Global SBP_GRIPPERHORZ := 8 + Global SBP_GRIPPERVERT := 9 + Global SBP_SIZEBOX := 10 + + ; ---- ARROWBTNSTATES ---- ; + Global ABS_UPNORMAL := 1 + Global ABS_UPHOT := 2 + Global ABS_UPPRESSED := 3 + Global ABS_UPDISABLED := 4 + Global ABS_DOWNNORMAL := 5 + Global ABS_DOWNHOT := 6 + Global ABS_DOWNPRESSED := 7 + Global ABS_DOWNDISABLED := 8 + Global ABS_LEFTNORMAL := 9 + Global ABS_LEFTHOT := 10 + Global ABS_LEFTPRESSED := 11 + Global ABS_LEFTDISABLED := 12 + Global ABS_RIGHTNORMAL := 13 + Global ABS_RIGHTHOT := 14 + Global ABS_RIGHTPRESSED := 15 + Global ABS_RIGHTDISABLED := 16 + Global ABS_UPHOVER := 17 + Global ABS_DOWNHOVER := 18 + Global ABS_LEFTHOVER := 19 + Global ABS_RIGHTHOVER := 20 + + ; ---- SCROLLBARSTYLESTATES ---- ; + Global SCRBS_NORMAL := 1 + Global SCRBS_HOT := 2 + Global SCRBS_PRESSED := 3 + Global SCRBS_DISABLED := 4 + Global SCRBS_HOVER := 5 + + ; ---- SIZEBOXSTATES ---- ; + Global SZB_RIGHTALIGN := 1 + Global SZB_LEFTALIGN := 2 + Global SZB_TOPRIGHTALIGN := 3 + Global SZB_TOPLEFTALIGN := 4 + Global SZB_HALFBOTTOMRIGHTALIGN := 5 + Global SZB_HALFBOTTOMLEFTALIGN := 6 + Global SZB_HALFTOPRIGHTALIGN := 7 + Global SZB_HALFTOPLEFTALIGN := 8 + + ; ---- SPINPARTS ---- ; + Global SPNP_UP := 1 + Global SPNP_DOWN := 2 + Global SPNP_UPHORZ := 3 + Global SPNP_DOWNHORZ := 4 + + ; ---- UPSTATES ---- ; + Global UPS_NORMAL := 1 + Global UPS_HOT := 2 + Global UPS_PRESSED := 3 + Global UPS_DISABLED := 4 + + ; ---- DOWNSTATES ---- ; + Global DNS_NORMAL := 1 + Global DNS_HOT := 2 + Global DNS_PRESSED := 3 + Global DNS_DISABLED := 4 + + ; ---- UPHORZSTATES ---- ; + Global UPHZS_NORMAL := 1 + Global UPHZS_HOT := 2 + Global UPHZS_PRESSED := 3 + Global UPHZS_DISABLED := 4 + + ; ---- DOWNHORZSTATES ---- ; + Global DNHZS_NORMAL := 1 + Global DNHZS_HOT := 2 + Global DNHZS_PRESSED := 3 + Global DNHZS_DISABLED := 4 + + ; ---- STATUSPARTS ---- ; + Global SP_PANE := 1 + Global SP_GRIPPERPANE := 2 + Global SP_GRIPPER := 3 + + ; ---- TABPARTS ---- ; + Global TABP_TABITEM := 1 + Global TABP_TABITEMLEFTEDGE := 2 + Global TABP_TABITEMRIGHTEDGE := 3 + Global TABP_TABITEMBOTHEDGE := 4 + Global TABP_TOPTABITEM := 5 + Global TABP_TOPTABITEMLEFTEDGE := 6 + Global TABP_TOPTABITEMRIGHTEDGE := 7 + Global TABP_TOPTABITEMBOTHEDGE := 8 + Global TABP_PANE := 9 + Global TABP_BODY := 10 + Global TABP_AEROWIZARDBODY := 11 + + ; ---- TABITEMSTATES ---- ; + Global TIS_NORMAL := 1 + Global TIS_HOT := 2 + Global TIS_SELECTED := 3 + Global TIS_DISABLED := 4 + Global TIS_FOCUSED := 5 + + ; ---- TABITEMLEFTEDGESTATES ---- ; + Global TILES_NORMAL := 1 + Global TILES_HOT := 2 + Global TILES_SELECTED := 3 + Global TILES_DISABLED := 4 + Global TILES_FOCUSED := 5 + + ; ---- TABITEMRIGHTEDGESTATES ---- ; + Global TIRES_NORMAL := 1 + Global TIRES_HOT := 2 + Global TIRES_SELECTED := 3 + Global TIRES_DISABLED := 4 + Global TIRES_FOCUSED := 5 + + ; ---- TABITEMBOTHEDGESTATES ---- ; + Global TIBES_NORMAL := 1 + Global TIBES_HOT := 2 + Global TIBES_SELECTED := 3 + Global TIBES_DISABLED := 4 + Global TIBES_FOCUSED := 5 + + ; ---- TOPTABITEMSTATES ---- ; + Global TTIS_NORMAL := 1 + Global TTIS_HOT := 2 + Global TTIS_SELECTED := 3 + Global TTIS_DISABLED := 4 + Global TTIS_FOCUSED := 5 + + ; ---- TOPTABITEMLEFTEDGESTATES ---- ; + Global TTILES_NORMAL := 1 + Global TTILES_HOT := 2 + Global TTILES_SELECTED := 3 + Global TTILES_DISABLED := 4 + Global TTILES_FOCUSED := 5 + + ; ---- TOPTABITEMRIGHTEDGESTATES ---- ; + Global TTIRES_NORMAL := 1 + Global TTIRES_HOT := 2 + Global TTIRES_SELECTED := 3 + Global TTIRES_DISABLED := 4 + Global TTIRES_FOCUSED := 5 + + ; ---- TOPTABITEMBOTHEDGESTATES ---- ; + Global TTIBES_NORMAL := 1 + Global TTIBES_HOT := 2 + Global TTIBES_SELECTED := 3 + Global TTIBES_DISABLED := 4 + Global TTIBES_FOCUSED := 5 + + ; ---- TASKDIALOGPARTS ---- ; + Global TDLG_PRIMARYPANEL := 1 + Global TDLG_MAININSTRUCTIONPANE := 2 + Global TDLG_MAINICON := 3 + Global TDLG_CONTENTPANE := 4 + Global TDLG_CONTENTICON := 5 + Global TDLG_EXPANDEDCONTENT := 6 + Global TDLG_COMMANDLINKPANE := 7 + Global TDLG_SECONDARYPANEL := 8 + Global TDLG_CONTROLPANE := 9 + Global TDLG_BUTTONSECTION := 10 + Global TDLG_BUTTONWRAPPER := 11 + Global TDLG_EXPANDOTEXT := 12 + Global TDLG_EXPANDOBUTTON := 13 + Global TDLG_VERIFICATIONTEXT := 14 + Global TDLG_FOOTNOTEPANE := 15 + Global TDLG_FOOTNOTEAREA := 16 + Global TDLG_FOOTNOTESEPARATOR := 17 + Global TDLG_EXPANDEDFOOTERAREA := 18 + Global TDLG_PROGRESSBAR := 19 + Global TDLG_IMAGEALIGNMENT := 20 + Global TDLG_RADIOBUTTONPANE := 21 + + ; ---- CONTENTPANESTATES ---- ; + Global TDLGCPS_STANDALONE := 1 + + ; ---- EXPANDOBUTTONSTATES ---- ; + Global TDLGEBS_NORMAL := 1 + Global TDLGEBS_HOVER := 2 + Global TDLGEBS_PRESSED := 3 + Global TDLGEBS_EXPANDEDNORMAL := 4 + Global TDLGEBS_EXPANDEDHOVER := 5 + Global TDLGEBS_EXPANDEDPRESSED := 6 + + ; ---- TEXTSTYLEPARTS ---- ; + Global TEXT_MAININSTRUCTION := 1 + Global TEXT_INSTRUCTION := 2 + Global TEXT_BODYTITLE := 3 + Global TEXT_BODYTEXT := 4 + Global TEXT_SECONDARYTEXT := 5 + Global TEXT_HYPERLINKTEXT := 6 + Global TEXT_EXPANDED := 7 + Global TEXT_LABEL := 8 + Global TEXT_CONTROLLABEL := 9 + + ; ---- HYPERLINKTEXTSTATES ---- ; + Global TS_HYPERLINK_NORMAL := 1 + Global TS_HYPERLINK_HOT := 2 + Global TS_HYPERLINK_PRESSED := 3 + Global TS_HYPERLINK_DISABLED:= 4 + + ; ---- CONTROLLABELSTATES ---- ; + Global TS_CONTROLLABEL_NORMAL := 1 + Global TS_CONTROLLABEL_DISABLED:= 2 + + ; ---- TOOLBARPARTS ---- ; + Global TP_BUTTON := 1 + Global TP_DROPDOWNBUTTON := 2 + Global TP_SPLITBUTTON := 3 + Global TP_SPLITBUTTONDROPDOWN := 4 + Global TP_SEPARATOR := 5 + Global TP_SEPARATORVERT := 6 + + ; ---- TOOLBARSTYLESTATES ---- ; + Global TS_NORMAL := 1 + Global TS_HOT := 2 + Global TS_PRESSED := 3 + Global TS_DISABLED := 4 + Global TS_CHECKED := 5 + Global TS_HOTCHECKED := 6 + Global TS_NEARHOT := 7 + Global TS_OTHERSIDEHOT := 8 + + ; ---- TOOLTIPPARTS ---- ; + Global TTP_STANDARD := 1 + Global TTP_STANDARDTITLE := 2 + Global TTP_BALLOON := 3 + Global TTP_BALLOONTITLE := 4 + Global TTP_CLOSE := 5 + Global TTP_BALLOONSTEM := 6 + + ; ---- CLOSESTATES ---- ; + Global TTCS_NORMAL := 1 + Global TTCS_HOT := 2 + Global TTCS_PRESSED := 3 + + ; ---- STANDARDSTATES ---- ; + Global TTSS_NORMAL := 1 + Global TTSS_LINK := 2 + + ; ---- BALLOONSTATES ---- ; + Global TTBS_NORMAL := 1 + Global TTBS_LINK := 2 + + ; ---- BALLOONSTEMSTATES ---- ; + Global TTBSS_POINTINGUPLEFTWALL := 1 + Global TTBSS_POINTINGUPCENTERED := 2 + Global TTBSS_POINTINGUPRIGHTWALL := 3 + Global TTBSS_POINTINGDOWNRIGHTWALL := 4 + Global TTBSS_POINTINGDOWNCENTERED := 5 + Global TTBSS_POINTINGDOWNLEFTWALL := 6 + + ; ---- TRACKBARPARTS ---- ; + Global TKP_TRACK := 1 + Global TKP_TRACKVERT := 2 + Global TKP_THUMB := 3 + Global TKP_THUMBBOTTOM := 4 + Global TKP_THUMBTOP := 5 + Global TKP_THUMBVERT := 6 + Global TKP_THUMBLEFT := 7 + Global TKP_THUMBRIGHT := 8 + Global TKP_TICS := 9 + Global TKP_TICSVERT := 10 + + ; ---- TRACKBARSTYLESTATES ---- ; + Global TKS_NORMAL := 1 + + ; ---- TRACKSTATES ---- ; + Global TRS_NORMAL := 1 + + ; ---- TRACKVERTSTATES ---- ; + Global TRVS_NORMAL := 1 + + ; ---- THUMBSTATES ---- ; + Global TUS_NORMAL := 1 + Global TUS_HOT := 2 + Global TUS_PRESSED := 3 + Global TUS_FOCUSED := 4 + Global TUS_DISABLED := 5 + + ; ---- THUMBBOTTOMSTATES ---- ; + Global TUBS_NORMAL := 1 + Global TUBS_HOT := 2 + Global TUBS_PRESSED := 3 + Global TUBS_FOCUSED := 4 + Global TUBS_DISABLED := 5 + + ; ---- THUMBTOPSTATES ---- ; + Global TUTS_NORMAL := 1 + Global TUTS_HOT := 2 + Global TUTS_PRESSED := 3 + Global TUTS_FOCUSED := 4 + Global TUTS_DISABLED := 5 + + ; ---- THUMBVERTSTATES ---- ; + Global TUVS_NORMAL := 1 + Global TUVS_HOT := 2 + Global TUVS_PRESSED := 3 + Global TUVS_FOCUSED := 4 + Global TUVS_DISABLED := 5 + + ; ---- THUMBLEFTSTATES ---- ; + Global TUVLS_NORMAL := 1 + Global TUVLS_HOT := 2 + Global TUVLS_PRESSED := 3 + Global TUVLS_FOCUSED := 4 + Global TUVLS_DISABLED := 5 + + ; ---- THUMBRIGHTSTATES ---- ; + Global TUVRS_NORMAL := 1 + Global TUVRS_HOT := 2 + Global TUVRS_PRESSED := 3 + Global TUVRS_FOCUSED := 4 + Global TUVRS_DISABLED := 5 + + ; ---- TICSSTATES ---- ; + Global TSS_NORMAL := 1 + + ; ---- TICSVERTSTATES ---- ; + Global TSVS_NORMAL := 1 + + ; ---- TREEVIEWPARTS ---- ; + Global TVP_TREEITEM := 1 + Global TVP_GLYPH := 2 + Global TVP_BRANCH := 3 + Global TVP_HOTGLYPH := 4 + + ; ---- TREEITEMSTATES ---- ; + Global TREIS_NORMAL := 1 + Global TREIS_HOT := 2 + Global TREIS_SELECTED := 3 + Global TREIS_DISABLED := 4 + Global TREIS_SELECTEDNOTFOCUS := 5 + Global TREIS_HOTSELECTED := 6 + + ; ---- GLYPHSTATES ---- ; + Global GLPS_CLOSED := 1 + Global GLPS_OPENED := 2 + + ; ---- HOTGLYPHSTATES ---- ; + Global HGLPS_CLOSED := 1 + Global HGLPS_OPENED := 2 + + ; ---- WINDOWPARTS ---- ; + Global WP_CAPTION := 1 ;needed + Global WP_SMALLCAPTION := 2 + Global WP_MINCAPTION := 3 + Global WP_SMALLMINCAPTION := 4 + Global WP_MAXCAPTION := 5 + Global WP_SMALLMAXCAPTION := 6 + Global WP_FRAMELEFT := 7 + Global WP_FRAMERIGHT := 8 + Global WP_FRAMEBOTTOM := 9 + Global WP_SMALLFRAMELEFT := 10 + Global WP_SMALLFRAMERIGHT := 11 + Global WP_SMALLFRAMEBOTTOM := 12 + Global WP_SYSBUTTON := 13 + Global WP_MDISYSBUTTON := 14 + Global WP_MINBUTTON := 15 + Global WP_MDIMINBUTTON := 16 + Global WP_MAXBUTTON := 17 + Global WP_CLOSEBUTTON := 18 + Global WP_SMALLCLOSEBUTTON := 19 + Global WP_MDICLOSEBUTTON := 20 + Global WP_RESTOREBUTTON := 21 + Global WP_MDIRESTOREBUTTON := 22 + Global WP_HELPBUTTON := 23 + Global WP_MDIHELPBUTTON := 24 + Global WP_HORZSCROLL := 25 + Global WP_HORZTHUMB := 26 + Global WP_VERTSCROLL := 27 + Global WP_VERTTHUMB := 28 + Global WP_DIALOG := 29 + Global WP_CAPTIONSIZINGTEMPLATE := 30 + Global WP_SMALLCAPTIONSIZINGTEMPLATE := 31 + Global WP_FRAMELEFTSIZINGTEMPLATE := 32 + Global WP_SMALLFRAMELEFTSIZINGTEMPLATE := 33 + Global WP_FRAMERIGHTSIZINGTEMPLATE := 34 + Global WP_SMALLFRAMERIGHTSIZINGTEMPLATE := 35 + Global WP_FRAMEBOTTOMSIZINGTEMPLATE := 36 + Global WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE := 37 + Global WP_FRAME := 38 + + ; ---- FRAMESTATES ---- ; + Global FS_ACTIVE := 1 + Global FS_INACTIVE := 2 + + ; ---- CAPTIONSTATES ---- ; + Global CS_ACTIVE := 1 ;needed + Global CS_INACTIVE := 2 + Global CS_DISABLED := 3 + + ; ---- MAXCAPTIONSTATES ---- ; + Global MXCS_ACTIVE := 1 + Global MXCS_INACTIVE := 2 + Global MXCS_DISABLED := 3 + + ; ---- MINCAPTIONSTATES ---- ; + Global MNCS_ACTIVE := 1 + Global MNCS_INACTIVE := 2 + Global MNCS_DISABLED := 3 + + ; ---- HORZSCROLLSTATES ---- ; + Global HSS_NORMAL := 1 + Global HSS_HOT := 2 + Global HSS_PUSHED := 3 + Global HSS_DISABLED := 4 + + ; ---- HORZTHUMBSTATES ---- ; + Global HTS_NORMAL := 1 + Global HTS_HOT := 2 + Global HTS_PUSHED := 3 + Global HTS_DISABLED := 4 + + ; ---- VERTSCROLLSTATES ---- ; + Global VSS_NORMAL := 1 + Global VSS_HOT := 2 + Global VSS_PUSHED := 3 + Global VSS_DISABLED := 4 + + ; ---- VERTTHUMBSTATES ---- ; + Global VTS_NORMAL := 1 + Global VTS_HOT := 2 + Global VTS_PUSHED := 3 + Global VTS_DISABLED := 4 + + ; ---- SYSBUTTONSTATES ---- ; + Global SBS_NORMAL := 1 + Global SBS_HOT := 2 + Global SBS_PUSHED := 3 + Global SBS_DISABLED := 4 + + ; ---- MINBUTTONSTATES ---- ; + Global MINBS_NORMAL := 1 + Global MINBS_HOT := 2 + Global MINBS_PUSHED := 3 + Global MINBS_DISABLED := 4 + + ; ---- MAXBUTTONSTATES ---- ; + Global MAXBS_NORMAL := 1 + Global MAXBS_HOT := 2 + Global MAXBS_PUSHED := 3 + Global MAXBS_DISABLED := 4 + + ; ---- RESTOREBUTTONSTATES ---- ; + Global RBS_NORMAL := 1 + Global RBS_HOT := 2 + Global RBS_PUSHED := 3 + Global RBS_DISABLED := 4 + + ; ---- HELPBUTTONSTATES ---- ; + Global HBS_NORMAL := 1 + Global HBS_HOT := 2 + Global HBS_PUSHED := 3 + Global HBS_DISABLED := 4 + + ; ---- CLOSEBUTTONSTATES ---- ; + Global CBS_NORMAL := 1 + Global CBS_HOT := 2 + Global CBS_PUSHED := 3 + Global CBS_DISABLED := 4 \ No newline at end of file diff --git a/lib-a_to_h/EnumToolbarButtons.ahk b/lib-a_to_h/EnumToolbarButtons.ahk new file mode 100644 index 00000000..62b29a59 --- /dev/null +++ b/lib-a_to_h/EnumToolbarButtons.ahk @@ -0,0 +1,134 @@ +EnumToolbarButtons(ctrlhwnd, is_apply_scale:=false) { + ; Thanks to LabelControl code from + ; https://www.donationcoder.com/Software/Skrommel/ + ; + ; ctrlhwnd is the toolbar hwnd. + ; Return an array of objects, with element: + ; * .x .y .w .h (button position relative to the toolbar) + ; * .cmd (command id of the button) + ; * .text (text displayed on the button) + ; + ; is_apply_scale should keep false; true is only for testing purpose + + arbtn := [] + + ControlGetPos, ctrlx, ctrly, ctrlw, ctrlh, , ahk_id %ctrlhwnd% + + WinGet, pid_target, PID, ahk_id %ctrlhwnd% + hpRemote := DllCall( "OpenProcess" + , "uint", 0x18 ; PROCESS_VM_OPERATION|PROCESS_VM_READ + , "int", false + , "uint", pid_target ) + ; hpRemote: Remote process handle + if(!hpRemote) { + tooltip, % "Autohotkey: Cannot OpenProcess(pid=" . pid_target . ")" + return + } + remote_buffer := DllCall( "VirtualAllocEx" + , "uint", hpRemote + , "Ptr", 0 ; LPVOID lpAddress ("uint" tolerable) + , "uint", 0x1000 ; size to allocate, 4KB + , "uint", 0x1000 ; MEM_COMMIT + , "uint", 0x4 ) ; PAGE_READWRITE + x1= + x2= + y1= + WM_USER:=0x400 + TB_GETSTATE:=WM_USER+18 + TB_GETBITMAP := (WM_USER + 44) ; only for test + TB_GETBUTTONSIZE := (WM_USER + 58) ; only for test + TB_GETBUTTON:=WM_USER+23 + TB_GETBUTTONTEXTW := WM_USER+75 ; I always get UTF-16 string from the toolbar // ANSI: WM_USER+45 + TB_GETITEMRECT:=WM_USER+29 + TB_BUTTONCOUNT:=WM_USER+24 + SendMessage, %TB_BUTTONCOUNT%,0,0, , ahk_id %ctrlhwnd% + buttons := ErrorLevel +;tooltip, buttons=%buttons% ; OK + + VarSetCapacity( rect, 16, 0 ) + VarSetCapacity( BtnStruct, 32, 0 ) ; Winapi TBBUTTON struct(32 bytes on x64, 20 bytes on x86) + /* + typedef struct _TBBUTTON { + int iBitmap; + int idCommand; + BYTE fsState; + BYTE fsStyle; + #ifdef _WIN64 + BYTE bReserved[6] // padding for alignment + #elif defined(_WIN32) + BYTE bReserved[2] // padding for alignment + #endif + DWORD_PTR dwData; + INT_PTR iString; + } TBBUTTON, NEAR* PTBBUTTON, FAR* LPTBBUTTON; + */ + + Loop,%buttons% + { + ; Try to get button text. Two steps: + ; 1. get command-id from button-index, + ; 2. get button text from comand-id + SendMessage, %TB_GETBUTTON%, % A_Index-1, remote_buffer, , ahk_id %ctrlhwnd% + ReadRemoteBuffer(hpRemote, remote_buffer, BtnStruct, 32) + idButton := NumGet(BtnStruct, 4, "int") + ; +; SendMessage, %TB_GETSTATE%, %idButton%, 0, , ahk_id %ctrlhwnd% ; hope that 4KB is enough ; just a test + SendMessage, %TB_GETBUTTONTEXTW%, %idButton%, remote_buffer, , ahk_id %ctrlhwnd% ; hope that 4KB is enough + btntextchars := ErrorLevel + if(btntextchars>0){ + btntextbytes := A_IsUnicode ? btntextchars*2 : btntextchars + VarSetCapacity(BtnTextBuf, btntextbytes+2, 0) ; +2 is for trailing-NUL + ReadRemoteBuffer(hpRemote, remote_buffer, BtnTextBuf, btntextbytes) + BtnText := StrGet(&BtnTextBuf, "UTF-16") + } else { + BtnText := "" + } + ;FileAppend, % A_Index . ":" . idButton . "(" . btntextchars . ")" . BtnText . "`n", _emeditor_toolbar_buttons.txt ; debug + + SendMessage,%TB_GETITEMRECT%,% A_Index-1, remote_buffer, , ahk_id %ctrlhwnd% + + ReadRemoteBuffer(hpRemote, remote_buffer, rect, 16) + oldx1:=x1 + oldx2:=x2 + oldy1:=y1 + x1 := NumGet(rect, 0, "int") + x2 := NumGet(rect, 8, "int") + y1 := NumGet(rect, 4, "int") + y2 := NumGet(rect, 12, "int") + + if(is_apply_scale) { + scale := Get_DPIScale() + x1 /= scale + y1 /= scale + x2 /= scale + y2 /= scale + } + + If (x1=oldx1 And y1=oldy1 And x2=oldx2) + Continue + If (x2-x1<10) + Continue + If (x1>ctrlw Or y1>ctrlh) + Continue + + arbtn.Insert( {"x":x1, "y":y1, "w":x2-x1, "h":y2-y1, "cmd":idButton, "text":BtnText} ) + ;line:=100000000+Floor((ctrly+y1)/same)*10000+(ctrlx+x1) + ;lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n + } + result := DllCall( "VirtualFreeEx" + , "uint", hpRemote + , "uint", remote_buffer + , "uint", 0 + , "uint", 0x8000 ) ; MEM_RELEASE + result := DllCall( "CloseHandle", "uint", hpRemote ) + return arbtn +} + +ReadRemoteBuffer(hpRemote, RemoteBuffer, ByRef LocalVar, bytes) { + result := DllCall( "ReadProcessMemory" + , "Ptr", hpRemote + , "Ptr", RemoteBuffer + , "Ptr", &LocalVar + , "uint", bytes + , "uint", 0 ) +} diff --git a/lib-a_to_h/FFMpeg_ScreenRecord.ahk b/lib-a_to_h/FFMpeg_ScreenRecord.ahk new file mode 100644 index 00000000..6ea32638 --- /dev/null +++ b/lib-a_to_h/FFMpeg_ScreenRecord.ahk @@ -0,0 +1,180 @@ +#SingleInstance Force + +WinGetClientPos( winTitle, ByRef x, ByRef y, ByRef w, ByRef h ){ + WinGet, hwnd, ID, %winTitle% + if hwnd = + { + return false + } + + VarSetCapacity( size, 16, 0 ) + DllCall( "GetClientRect", UInt, hwnd, Ptr, &size ) + DllCall( "ClientToScreen", UInt, hwnd, Ptr, &size ) + x := NumGet(size, 0, "Int") + y := NumGet(size, 4, "Int") + w := NumGet( size, 8, "Int" ) + h := NumGet( size, 12, "Int" ) + return true +} + +SetWindow(windowTitle){ + global g_windowTitle + g_windowTitle := windowTitle +} + +RecordClientArea(b){ + global g_recordClientArea + g_recordClientArea := b +} + +Record(fileOut=""){ + global g_windowTitle, g_recordClientArea + + if (g_windowTitle == "") + { + MsgBox g_windowTitle is not set + ExitApp + } + + WinActivate %g_windowTitle% + WinWaitActive %g_windowTitle%, , 2 + if (ErrorLevel = 1) + { + MsgBox, 16, ERROR, Cannot find window: "%g_windowTitle%" + ExitApp + } + + if g_recordClientArea + { + if not WinGetClientPos(g_windowTitle, x, y, w, h) + { + MsgBox, 16, ERROR, Fail to get client geometry: %g_windowTitle% + ExitApp + } + } + else + { + WinGet, hwnd, ID, %winTitle% + if hwnd = + { + MsgBox, 16, ERROR, Fail to get window geometry: %g_windowTitle% + ExitApp + } + WinGetPosEx(hwnd, x, y, w, h) + } + + ; Start VLC + StartRecordFFmpeg(x, y, w, h) +} + +Stop(){ + StopRecordFFmpeg() +} + +Exit(){ + Stop() + ExitApp +} + +StartRecordVLC(x, y, w, h, fileOut=""){ + WinClose ahk_exe vlc.exe + if ( fileOut = "" ) + { + FormatTime, now, R, yyyyMMdd_hhmmss + fileOut = %A_Desktop%\Record_%now%.mp4 + } + commandLine = "C:\Program Files\VideoLAN\VLC\vlc.exe" --qt-start-minimized screen:// :sout=#transcode{vcodec=mp4v,acodec=mp4a}:file{dst=%fileOut%} :screen-fps=60 :screen-left=%x% :screen-top=%y% :screen-width=%w% :screen-height=%h% + Run, %commandLine% +} + +StopRecordVLC(){ + DetectHiddenWindows On + WinClose ahk_exe vlc.exe + DetectHiddenWindows Off +} + +StartRecordFFmpeg(x, y, w, h){ + ; Make sure w and h are divisible by 2 + if ( Mod(w, 2) = 1 ) + w -= 1 + if ( Mod(h, 2) = 1 ) + h -= 1 + + SetWorkingDir % A_Desktop + + FormatTime, now, R, yyyyMMdd_hhmmss + fileOut = Record_%now%.mp4 + + sizeParams = -offset_x %x% -offset_y %y% -video_size %w%x%h% -draw_mouse 0 + Run, ffmpeg -y -f gdigrab -framerate 60 %sizeParams% -i desktop -f dshow -i audio="virtual-audio-capturer" -c:v libx264 -crf 0 -preset ultrafast %fileOut%,, Min +} + +StopRecordFFmpeg(){ + ControlSend, ahk_parent, q, ahk_exe ffmpeg.exe +} + +WinGetPosEx(hWindow, ByRef X = "", ByRef Y = "", ByRef Width = "", ByRef Height = "", ByRef Offset_X = "", ByRef Offset_Y = ""){ + Static Dummy5693, RECTPlus, S_OK := 0x0, DWMWA_EXTENDED_FRAME_BOUNDS := 9 + + ;-- Workaround for AutoHotkey Basic + PtrType := (A_PtrSize=8) ? "Ptr" : "UInt" + + ;-- Get the window's dimensions + ; Note: Only the first 16 bytes of the RECTPlus structure are used by the + ; DwmGetWindowAttribute and GetWindowRect functions. + VarSetCapacity(RECTPlus, 24,0) + DWMRC := DllCall("dwmapi\DwmGetWindowAttribute" + ,PtrType,hWindow ;-- hwnd + ,"UInt",DWMWA_EXTENDED_FRAME_BOUNDS ;-- dwAttribute + ,PtrType,&RECTPlus ;-- pvAttribute + ,"UInt",16) ;-- cbAttribute + + If (DWMRC <> S_OK) { + If ErrorLevel in -3, -4 ;-- Dll or function not found (older than Vista) + { + ;-- Do nothing else (for now) + } Else + outputdebug, + (LTrim Join`s + Function: %A_ThisFunc% - + Unknown error calling "dwmapi\DwmGetWindowAttribute". + RC = %DWMRC%, + ErrorLevel = %ErrorLevel%, + A_LastError = %A_LastError%. + "GetWindowRect" used instead. + ) + + ;-- Collect the position and size from "GetWindowRect" + DllCall("GetWindowRect", PtrType, hWindow, PtrType, &RECTPlus) + } + + ;-- Populate the output variables + X := Left := NumGet(RECTPlus, 0, "Int") + Y := Top := NumGet(RECTPlus, 4, "Int") + Right := NumGet(RECTPlus, 8, "Int") + Bottom := NumGet(RECTPlus, 12, "Int") + Width := Right-Left + Height := Bottom-Top + OffSet_X := 0 + OffSet_Y := 0 + + ;-- If DWM is not used (older than Vista or DWM not enabled), we're done + If (DWMRC <> S_OK) + Return &RECTPlus + + ;-- Collect dimensions via GetWindowRect + VarSetCapacity(RECT, 16, 0) + DllCall("GetWindowRect", PtrType, hWindow, PtrType, &RECT) + GWR_Width := NumGet(RECT, 8, "Int") - NumGet(RECT, 0, "Int") ;-- Right minus Left + GWR_Height := NumGet(RECT, 12, "Int") - NumGet(RECT, 4, "Int") ;-- Bottom minus Top + + ;-- Calculate offsets and update output variables + NumPut(Offset_X := (Width - GWR_Width) // 2, RECTPlus, 16, "Int") + NumPut(Offset_Y := (Height - GWR_Height) // 2, RECTPlus, 20, "Int") + Return &RECTPlus +} + +g_recordClientArea := True +SetKeyDelay, 10, 10 +SetWorkingDir % A_Desktop +Hotkey, Esc, Exit \ No newline at end of file diff --git a/lib-a_to_h/FormatDword.ahk b/lib-a_to_h/FormatDword.ahk new file mode 100644 index 00000000..b115e40a --- /dev/null +++ b/lib-a_to_h/FormatDword.ahk @@ -0,0 +1,43 @@ +/* +FormatDword + + _______________________________________________ +|1_________8|9________16|17_______24|25_______32| +|11 00 10 00.00 00 00 00.10 01 01 10.00 00 10 00| = 32 bits. +|31 8bit | 8bit | 8bit | 8bit 0| -> Bit 0-31. +| msb + next msb | next lsb + lsb | Most and Least Significant Bit. +| BYTE4 + BYTE3 + BYTE2 + BYTE1 | = 4 Byte / 4x8 bit. +| HIWORD | LOWORD | = 2 Word / 2x16 bit +|_____________________DWORD_____________________| = 1 Dword = 2 Word = 4 Byte = 1x32 bit. + +____________________________________________________________________________________________________ By Megnatar. +*/ + +; Return the first two bytes in a 32 bit integer. MSB +HIWORD(Dword,Hex=0){ + BITS:=0x10,WORD:=0xFFFF + return (!Hex)?((Dword>>BITS)&WORD):Format("{1:#x}",((Dword>>BITS)&WORD)) +} + +; Return the second two bytes in a 32bit Integer. LSB +LOWORD(Dword,Hex=0){ + WORD:=0xFFFF + Return (!Hex)?(Dword&WORD):Format("{1:#x}",(Dword&WORD)) +} + +; Combine two WORD, to make one DWORD. +MAKELONG(LOWORD,HIWORD,Hex=0){ + BITS:=0x10,WORD:=0xFFFF + return (!Hex)?((HIWORD<> 16 | bc & 0xff00 | (bc & 0xff) << 16)) - pBitmap := Gdip_CreateBitmap(w, h), G := Gdip_GraphicsFromImage(pBitmap) + pBitmap := Gdip_CreateBitmap(w, h) + G := Gdip_GraphicsFromImage(pBitmap) Gdip_FillRectangle(G, pBrushClear, 0, 0, w, h) hBitmap := Gdip_CreateHBITMAPFromBitmap(pBitmap) SetImage(hwnd, hBitmap) Gdip_DeleteBrush(pBrushClear) - Gdip_DeleteGraphics(G), Gdip_DisposeImage(pBitmap), DeleteObject(hBitmap) + Gdip_DeleteGraphics(G) + Gdip_DisposeImage(pBitmap) + DeleteObject(hBitmap) return 0 } @@ -383,10 +391,8 @@ Gdip_BitmapFromScreen(Screen:=0, Raster:="") { Screen := SubStr(Screen, 6) if !WinExist("ahk_id " Screen) return -2 - CreateRect( winRect, 0, 0, 0, 0 ) ;is 16 on both 32 and 64 - DllCall("GetWindowRect", Ptr, Screen, Ptr, &winRect ) - _w := NumGet(winRect, 8, "UInt") - NumGet(winRect, 0, "UInt") - _h := NumGet(winRect, 12, "UInt") - NumGet(winRect, 4, "UInt") + + GetWindowRect(Screen, _w, _h) _x := _y := 0 hhdc := GetDCEx(Screen, 3) } @@ -404,7 +410,8 @@ Gdip_BitmapFromScreen(Screen:=0, Raster:="") { if (_x = "") || (_y = "") || (_w = "") || (_h = "") return -1 - chdc := CreateCompatibleDC(), hbm := CreateDIBSection(_w, _h, chdc), obm := SelectObject(chdc, hbm), hhdc := hhdc ? hhdc : GetDC() + chdc := CreateCompatibleDC(), hbm := CreateDIBSection(_w, _h, chdc) + obm := SelectObject(chdc, hbm), hhdc := hhdc ? hhdc : GetDC() BitBlt(chdc, 0, 0, _w, _h, hhdc, _x, _y, Raster) ReleaseDC(hhdc) @@ -425,10 +432,7 @@ Gdip_BitmapFromScreen(Screen:=0, Raster:="") { Gdip_BitmapFromHWND(hwnd) { Ptr := A_PtrSize ? "UPtr" : "UInt" - CreateRect( winRect, 0, 0, 0, 0 ) ;is 16 on both 32 and 64 - DllCall("GetWindowRect", Ptr, hwnd, Ptr, &winRect ) - Width := NumGet(winRect, 8, "UInt") - NumGet(winRect, 0, "UInt") - Height := NumGet(winRect, 12, "UInt") - NumGet(winRect, 4, "UInt") + GetWindowRect(hwnd, Width, Height) hbm := CreateDIBSection(Width, Height), hdc := CreateCompatibleDC(), obm := SelectObject(hdc, hbm) PrintWindow(hwnd, hdc) pBitmap := Gdip_CreateBitmapFromHBITMAP(hbm) @@ -449,7 +453,8 @@ Gdip_BitmapFromHWND(hwnd) { CreateRectF(ByRef RectF, x, y, w, h) { VarSetCapacity(RectF, 16) - NumPut(x, RectF, 0, "float"), NumPut(y, RectF, 4, "float"), NumPut(w, RectF, 8, "float"), NumPut(h, RectF, 12, "float") + NumPut(x, RectF, 0, "float"), NumPut(y, RectF, 4, "float") + NumPut(w, RectF, 8, "float"), NumPut(h, RectF, 12, "float") } ;##################################################################################### @@ -457,7 +462,7 @@ CreateRectF(ByRef RectF, x, y, w, h) { ; Function CreateRect ; Description Creates a Rect object, containing a the coordinates and dimensions of a rectangle ; -; RectF Name to call the RectF object +; Rect Name to call the Rect object ; x, y x, y coordinates of the upper left corner of the rectangle ; x2, y2 x, y coordinates of the bottom right corner of the rectangle @@ -483,7 +488,8 @@ CreateRect(ByRef Rect, x, y, x2, y2) { CreateSizeF(ByRef SizeF, w, h) { VarSetCapacity(SizeF, 8) - NumPut(w, SizeF, 0, "float"), NumPut(h, SizeF, 4, "float") + NumPut(w, SizeF, 0, "float") + NumPut(h, SizeF, 4, "float") } ;##################################################################################### @@ -498,7 +504,8 @@ CreateSizeF(ByRef SizeF, w, h) { CreatePointF(ByRef PointF, x, y) { VarSetCapacity(PointF, 8) - NumPut(x, PointF, 0, "float"), NumPut(y, PointF, 4, "float") + NumPut(x, PointF, 0, "float") + NumPut(y, PointF, 4, "float") } CreatePointsF(ByRef PointsF, inPoints) { @@ -531,6 +538,10 @@ CreatePointsF(ByRef PointsF, inPoints) { CreateDIBSection(w, h, hdc:="", bpp:=32, ByRef ppvBits:=0) { ; A GDI function that creates a new hBitmap, ; a device-independent bitmap [DIB]. +; A DIB consists of two distinct parts: +; a BITMAPINFO structure describing the dimensions +; and colors of the bitmap, and an array of bytes +; defining the pixels of the bitmap. Ptr := A_PtrSize ? "UPtr" : "UInt" hdc2 := hdc ? hdc : GetDC() @@ -570,7 +581,6 @@ CreateDIBSection(w, h, hdc:="", bpp:=32, ByRef ppvBits:=0) { PrintWindow(hwnd, hdc, Flags:=0) { Ptr := A_PtrSize ? "UPtr" : "UInt" - return DllCall("PrintWindow", Ptr, hwnd, Ptr, hdc, "uint", Flags) } @@ -738,7 +748,6 @@ GetDCEx(hwnd, flags:=0, hrgnClip:=0) { ReleaseDC(hdc, hwnd:=0) { Ptr := A_PtrSize ? "UPtr" : "UInt" - return DllCall("ReleaseDC", Ptr, hwnd, Ptr, hdc) } @@ -782,7 +791,7 @@ Gdip_LibraryVersion() { ; Updated by Marius Șucan reflecting the work on Gdip_all extended compilation Gdip_LibrarySubVersion() { - return 1.74 + return 1.80 } ;##################################################################################### @@ -822,7 +831,7 @@ Gdip_BitmapFromBRA(ByRef BRAFromMemIn, File, Alternate := 0) { Offset := OffsetData + FileInfo.1 Size := FileInfo.2 } - If (Size = 0) + If (Size=0) Return -4 hData := DllCall("GlobalAlloc", "UInt", 2, "UInt", Size, "UPtr") pData := DllCall("GlobalLock", "Ptr", hData, "UPtr") @@ -969,7 +978,6 @@ Gdip_DrawRoundedRectangle2(pGraphics, pPen, x, y, w, h, r) { Gdip_DrawEllipse(pGraphics, pPen, x, y, w, h) { Ptr := A_PtrSize ? "UPtr" : "UInt" - return DllCall("gdiplus\GdipDrawEllipse", Ptr, pGraphics, Ptr, pPen, "float", x, "float", y, "float", w, "float", h) } @@ -993,7 +1001,6 @@ Gdip_DrawEllipse(pGraphics, pPen, x, y, w, h) { Gdip_DrawBezier(pGraphics, pPen, x1, y1, x2, y2, x3, y3, x4, y4) { Ptr := A_PtrSize ? "UPtr" : "UInt" - return DllCall("gdiplus\GdipDrawBezier" , Ptr, pGraphics , Ptr, pPen @@ -1147,7 +1154,6 @@ Gdip_DrawPie(pGraphics, pPen, x, y, w, h, StartAngle, SweepAngle) { Gdip_DrawLine(pGraphics, pPen, x1, y1, x2, y2) { Ptr := A_PtrSize ? "UPtr" : "UInt" - return DllCall("gdiplus\GdipDrawLine" , Ptr, pGraphics , Ptr, pPen @@ -1188,7 +1194,6 @@ Gdip_DrawLines(pGraphics, pPen, Points) { Gdip_FillRectangle(pGraphics, pBrush, x, y, w, h) { Ptr := A_PtrSize ? "UPtr" : "UInt" - return DllCall("gdiplus\GdipFillRectangle" , Ptr, pGraphics , Ptr, pBrush @@ -1391,9 +1396,9 @@ Gdip_FillClosedCurve(pGraphics, pBrush, Points, Tension:="", FillMode:=0) { ; sW, sH width and height of the source rectangle ; Matrix a color matrix used to alter image attributes when drawing ; Unit see Gdip_DrawImage() -; return status enumeration. 0 = success +; Return status enumeration. 0 = success ; -; notes If sx, sy, sw, sh are omitted the entire source bitmap will be used. +; Notes If sx, sy, sw, sh are omitted the entire source bitmap will be used. ; Matrix can be omitted to just draw with no alteration to ARGB. ; Matrix may be passed as a digit from 0 - 1 to change just transparency. ; Matrix can be passed as a matrix with "|" delimiter. @@ -1410,7 +1415,7 @@ Gdip_DrawImagePointsRect(pGraphics, pBitmap, Points, sx:="", sy:="", sw:="", sh: ImageAttr := Gdip_SetImageAttributesColorMatrix("1|0|0|0|0|0|1|0|0|0|0|0|1|0|0|0|0|0|" Matrix "|0|0|0|0|0|1") } Else usrImageAttr := 1 - if (sx = "" && sy = "" && sw = "" && sh = "") + if (sx="" && sy="" && sw="" && sh="") { sx := sy := 0 Gdip_GetImageDimensions(pBitmap, sw, sh) @@ -1491,15 +1496,19 @@ Gdip_DrawImage(pGraphics, pBitmap, dx:="", dy:="", dw:="", dh:="", sx:="", sy:=" ImageAttr := Gdip_SetImageAttributesColorMatrix("1|0|0|0|0|0|1|0|0|0|0|0|1|0|0|0|0|0|" Matrix "|0|0|0|0|0|1") } Else usrImageAttr := 1 - if (sx = "" && sy = "" && sw = "" && sh = "") + If (dx!="" && dy!="" && sx="" && sy="" && sw="" && sh="") + { + sx := sy := 0 + sw := dw := Gdip_GetImageWidth(pBitmap) + sh := dh := Gdip_GetImageHeight(pBitmap) + } Else If (sx="" && sy="" && sw="" && sh="") { - if (dx = "" && dy = "" && dw = "" && dh = "") + If (dx="" && dy="" && dw="" && dh="") { sx := dx := 0, sy := dy := 0 sw := dw := Gdip_GetImageWidth(pBitmap) sh := dh := Gdip_GetImageHeight(pBitmap) - } - else + } else { sx := sy := 0 sw := Gdip_GetImageWidth(pBitmap) @@ -1523,7 +1532,7 @@ Gdip_DrawImage(pGraphics, pBitmap, dx:="", dy:="", dw:="", dh:="", sx:="", sy:=" return _E } -Gdip_DrawImageFast(pGraphics, pBitmap, X, Y) { +Gdip_DrawImageFast(pGraphics, pBitmap, X:=0, Y:=0) { ; This function performs faster than Gdip_DrawImage(). ; X, Y - the coordinates of the destination upper-left corner ; where the pBitmap will be drawn. @@ -1749,8 +1758,20 @@ Gdip_ResetImageAttributes(ImageAttr, ColorAdjustType) { ; ; notes a bitmap can be drawn into the graphics of another bitmap -Gdip_GraphicsFromImage(pBitmap) { +Gdip_GraphicsFromImage(pBitmap, InterpolationMode:="", SmoothingMode:="", PageUnit:="", CompositingQuality:="") { + pGraphics := "" DllCall("gdiplus\GdipGetImageGraphicsContext", A_PtrSize ? "UPtr" : "UInt", pBitmap, A_PtrSize ? "UPtr*" : "UInt*", pGraphics) + If pGraphics + { + If (InterpolationMode!="") + Gdip_SetInterpolationMode(pGraphics, InterpolationMode) + If (SmoothingMode!="") + Gdip_SetSmoothingMode(pGraphics, SmoothingMode) + If (PageUnit!="") + Gdip_SetPageUnit(pGraphics, PageUnit) + If (CompositingQuality!="") + Gdip_SetCompositingMode(pGraphics, CompositingQuality) + } return pGraphics } @@ -1765,13 +1786,25 @@ Gdip_GraphicsFromImage(pBitmap) { ; ; notes You can draw a bitmap into the graphics of another bitmap. -Gdip_GraphicsFromHDC(hdc) { +Gdip_GraphicsFromHDC(hDC, InterpolationMode:="", SmoothingMode:="", PageUnit:="", CompositingQuality:="") { pGraphics := "" DllCall("gdiplus\GdipCreateFromHDC", A_PtrSize ? "UPtr" : "UInt", hdc, A_PtrSize ? "UPtr*" : "UInt*", pGraphics) + If pGraphics + { + If (InterpolationMode!="") + Gdip_SetInterpolationMode(pGraphics, InterpolationMode) + If (SmoothingMode!="") + Gdip_SetSmoothingMode(pGraphics, SmoothingMode) + If (PageUnit!="") + Gdip_SetPageUnit(pGraphics, PageUnit) + If (CompositingQuality!="") + Gdip_SetCompositingMode(pGraphics, CompositingQuality) + } + return pGraphics } -Gdip_GraphicsFromHWND(HWND, useICM:=0) { +Gdip_GraphicsFromHWND(HWND, useICM:=0, InterpolationMode:="", SmoothingMode:="", PageUnit:="", CompositingQuality:="") { ; Creates a pGraphics object that is associated with a specified window handle [HWND] ; If useICM=1, the created graphics uses ICM [color management - (International Color Consortium = ICC)]. pGraphics := "" @@ -1779,6 +1812,18 @@ Gdip_GraphicsFromHWND(HWND, useICM:=0) { DllCall("gdiplus\GdipCreateFromHWNDICM", A_PtrSize ? "UPtr" : "UInt", HWND, A_PtrSize ? "UPtr*" : "UInt*", pGraphics) Else DllCall("gdiplus\GdipCreateFromHWND", A_PtrSize ? "UPtr" : "UInt", HWND, A_PtrSize ? "UPtr*" : "UInt*", pGraphics) + + If pGraphics + { + If (InterpolationMode!="") + Gdip_SetInterpolationMode(pGraphics, InterpolationMode) + If (SmoothingMode!="") + Gdip_SetSmoothingMode(pGraphics, SmoothingMode) + If (PageUnit!="") + Gdip_SetPageUnit(pGraphics, PageUnit) + If (CompositingQuality!="") + Gdip_SetCompositingMode(pGraphics, CompositingQuality) + } return pGraphics } @@ -1787,13 +1832,13 @@ Gdip_GraphicsFromHWND(HWND, useICM:=0) { ; Function Gdip_GetDC ; Description This function gets the device context of the passed Graphics ; -; hdc This is the handle to the device context +; hDC This is the handle to the device context ; ; return returns the device context for the graphics of a bitmap Gdip_GetDC(pGraphics) { - DllCall("gdiplus\GdipGetDC", A_PtrSize ? "UPtr" : "UInt", pGraphics, A_PtrSize ? "UPtr*" : "UInt*", hdc) - return hdc + DllCall("gdiplus\GdipGetDC", A_PtrSize ? "UPtr" : "UInt", pGraphics, A_PtrSize ? "UPtr*" : "UInt*", hDC) + return hDC } ;##################################################################################### @@ -1995,6 +2040,18 @@ Gdip_GetPixel(pBitmap, x, y) { ; should use Format("{1:#x}", ARGB) } +Gdip_GetPixelColor(pBitmap, x, y, Format) { + ARGBdec := Gdip_GetPixel(pBitmap, x, y) + If (format=1) ; in HEX + { + Return Format("{1:#x}", ARGBdec) + } Else If (format=2) ; in RGBA [0-255] + { + Gdip_FromARGB(ARGBdec, A, R, G, B) + Return R "," G "," B "," A + } Else Return ARGBdec +} + ;##################################################################################### ; Function Gdip_SetPixel @@ -2080,11 +2137,26 @@ Gdip_GetImageBounds(pBitmap) { return rData } +Gdip_GetImageRawFormat(pBitmap) { +; retrieves the pBitmap [file] format + + Static RawFormatsList := {"{B96B3CA9-0728-11D3-9D7B-0000F81EF32E}":"Undefined", "{B96B3CAA-0728-11D3-9D7B-0000F81EF32E}":"MemoryBMP", "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}":"BMP", "{B96B3CAC-0728-11D3-9D7B-0000F81EF32E}":"EMF", "{B96B3CAD-0728-11D3-9D7B-0000F81EF32E}":"WMF", "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}":"JPEG", "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}":"PNG", "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}":"GIF", "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}":"TIFF", "{B96B3CB2-0728-11D3-9D7B-0000F81EF32E}":"EXIF", "{B96B3CB5-0728-11D3-9D7B-0000F81EF32E}":"Icon"} + Ptr := A_PtrSize ? "UPtr" : "UInt" + VarSetCapacity(pGuid, 16, 0) + E1 := DllCall("gdiplus\GdipGetImageRawFormat", Ptr, pBitmap, "Ptr", &pGuid) + + size := VarSetCapacity(sguid, (38 << !!A_IsUnicode) + 1, 0) + E2 := DllCall("ole32.dll\StringFromGUID2", "ptr", &pguid, "ptr", &sguid, "int", size) + R1 := E2 ? StrGet(&sguid) : E2 + R2 := RawFormatsList[R1] + Return R2 ? R2 : R1 +} + Gdip_GetImagePixelFormat(pBitmap, mode:=0) { ; Mode options ; 0 - in decimal ; 1 - in hex -; 2 - in human readable string +; 2 - in human readable format ; ; PXF01INDEXED = 0x00030101 ; 1 bpp, indexed ; PXF04INDEXED = 0x00030402 ; 4 bpp, indexed @@ -2100,6 +2172,14 @@ Gdip_GetImagePixelFormat(pBitmap, mode:=0) { ; PXF48RGB = 0x0010300C ; 48 bpp; 16 bits for each RGB ; PXF64ARGB = 0x0034400D ; 64 bpp; 16 bits for each RGB and alpha ; PXF64PARGB = 0x001A400E ; 64 bpp; 16 bits for each RGB and alpha, pre-multiplied + +; INDEXED [1-bits, 4-bits and 8-bits] pixel formats rely on color palettes. +; The color information for the pixels is stored in palettes. +; Indexed images always contain a palette - a special table of colors. +; Each pixel is an index in this table. Usually a palette contains 256 +; or less entries. That's why the maximum depth of an indexed pixel is 8 bpp. +; Using palettes is a common practice when working with small color depths. + ; modified by Marius Șucan Static PixelFormatsList := {0x30101:"1-INDEXED", 0x30402:"4-INDEXED", 0x30803:"8-INDEXED", 0x101004:"16-GRAYSCALE", 0x021005:"16-RGB555", 0x21006:"16-RGB565", 0x61007:"16-ARGB1555", 0x21808:"24-RGB", 0x22009:"32-RGB", 0x26200A:"32-ARGB", 0xE200B:"32-PARGB", 0x10300C:"48-RGB", 0x34400D:"64-ARGB", 0x1A400E:"64-PARGB"} @@ -2213,8 +2293,9 @@ Gdip_CreateBitmapFromFile(sFile, IconNumber:=1, IconSize:="") { VarSetCapacity(dib, 104) DllCall("GetObject", Ptr, hbm, "int", A_PtrSize = 8 ? 104 : 84, Ptr, &dib) ; sizeof(DIBSECTION) = 76+2*(A_PtrSize=8?4:0)+2*A_PtrSize - Stride := NumGet(dib, 12, "Int"), Bits := NumGet(dib, 20 + (A_PtrSize = 8 ? 4 : 0)) ; padding - DllCall("gdiplus\GdipCreateBitmapFromScan0", "int", Width, "int", Height, "int", Stride, "int", 0x26200A, Ptr, Bits, PtrA, pBitmapOld) + Stride := NumGet(dib, 12, "Int") + Bits := NumGet(dib, 20 + (A_PtrSize = 8 ? 4 : 0)) ; padding + pBitmapOld := Gdip_CreateBitmap(Width, Height, 0, Stride, Bits) pBitmap := Gdip_CreateBitmap(Width, Height) _G := Gdip_GraphicsFromImage(pBitmap) Gdip_DrawImage(_G, pBitmapOld, 0, 0, Width, Height, 0, 0, Width, Height) @@ -2249,8 +2330,8 @@ Gdip_CreateBitmapFromHBITMAP(hBitmap, hPalette:=0) { } Gdip_CreateHBITMAPFromBitmap(pBitmap, Background:=0xffffffff) { - DllCall("gdiplus\GdipCreateHBITMAPFromBitmap", A_PtrSize ? "UPtr" : "UInt", pBitmap, A_PtrSize ? "UPtr*" : "uint*", hbm, "int", Background) - return hbm + DllCall("gdiplus\GdipCreateHBITMAPFromBitmap", A_PtrSize ? "UPtr" : "UInt", pBitmap, A_PtrSize ? "UPtr*" : "uint*", hBitmap, "int", Background) + return hBitmap } Gdip_CreateBitmapFromHICON(hIcon) { @@ -2265,14 +2346,21 @@ Gdip_CreateHICONFromBitmap(pBitmap) { return hIcon } -Gdip_CreateBitmap(Width, Height, PixelFormat:=0) { +Gdip_CreateBitmap(Width, Height, PixelFormat:=0, Stride:=0, Scan0:=0) { ; By default, this function creates a new 32-ARGB bitmap. +; modified by Marius Șucan pBitmap := "" If !PixelFormat PixelFormat := 0x26200A ; 32-ARGB - DllCall("gdiplus\GdipCreateBitmapFromScan0", "int", Width, "int", Height, "int", 0, "int", PixelFormat, A_PtrSize ? "UPtr" : "UInt", 0, A_PtrSize ? "UPtr*" : "uint*", pBitmap) + DllCall("gdiplus\GdipCreateBitmapFromScan0" + , "int", Width + , "int", Height + , "int", Stride + , "int", PixelFormat + , A_PtrSize ? "UPtr" : "UInt", Scan0 + , A_PtrSize ? "UPtr*" : "uint*", pBitmap) Return pBitmap } @@ -2286,21 +2374,21 @@ Gdip_CreateBitmapFromClipboard() { if !DllCall("OpenClipboard", Ptr, 0) return -1 - if !hBitmap := DllCall("GetClipboardData", "uint", 2, Ptr) + hBitmap := DllCall("GetClipboardData", "uint", 2, Ptr) + if !hBitmap { DllCall("CloseClipboard") return -3 } DllCall("CloseClipboard") - if !pBitmap := Gdip_CreateBitmapFromHBITMAP(hBitmap) - { - If hBitmap - DeleteObject(hBitmap) + pBitmap := Gdip_CreateBitmapFromHBITMAP(hBitmap) + If hBitmap + DeleteObject(hBitmap) + + if !pBitmap return -4 - } - DeleteObject(hBitmap) return pBitmap } @@ -2335,7 +2423,7 @@ Gdip_SetBitmapToClipboard(pBitmap) { DllCall("RtlMoveMemory", Ptr, pdib+40, Ptr, NumGet(oi, off2 - (A_PtrSize ? A_PtrSize : 4), Ptr), Ptr, NumGet(oi, off1, "UInt")) DllCall("GlobalUnlock", Ptr, hdib) DeleteObject(hBitmap) - r3 := DllCall("SetClipboardData", "uint", 8, Ptr, hdib) + r3 := DllCall("SetClipboardData", "uint", 8, Ptr, hdib) ; CF_DIB = 8 DllCall("CloseClipboard") E := r3 ? 0 : -4 ; 0 - success Return E @@ -2410,7 +2498,6 @@ Gdip_GetBitmapFramesCount(pBitmap) { Return CountFrames } - Gdip_CreateCachedBitmap(pBitmap, pGraphics) { ; Creates a CachedBitmap object based on a Bitmap object and a pGraphics object. The cached bitmap takes ; the pixel data from the Bitmap object and stores it in a format that is optimized for the display device @@ -2453,7 +2540,7 @@ Gdip_ImageRotateFlip(pBitmap, RotateFlipType:=1) { return DllCall("gdiplus\GdipImageRotateFlip", A_PtrSize ? "UPtr" : "UInt", pBitmap, "int", RotateFlipType) } -Gdip_RotateBitmapAtCenter(pBitmap, Angle, pBrush:=0, InterpolationMode:=7) { +Gdip_RotateBitmapAtCenter(pBitmap, Angle, pBrush:=0, InterpolationMode:=7, PixelFormat:=0) { ; the pBrush will be used to fill the background of the image ; by default, it is black ; It returns the pointer to a new pBitmap. @@ -2464,7 +2551,7 @@ Gdip_RotateBitmapAtCenter(pBitmap, Angle, pBrush:=0, InterpolationMode:=7) { Return clonedBitmap } - If !pBrush + If (pBrush=0) { pBrush := Gdip_BrushCreateSolid("0xFF000000") defaultBrush := 1 @@ -2473,13 +2560,37 @@ Gdip_RotateBitmapAtCenter(pBitmap, Angle, pBrush:=0, InterpolationMode:=7) { Gdip_GetImageDimensions(pBitmap, Width, Height) Gdip_GetRotatedDimensions(Width, Height, Angle, RWidth, RHeight) Gdip_GetRotatedTranslation(Width, Height, Angle, xTranslation, yTranslation) - newBitmap := Gdip_CreateBitmap(RWidth, RHeight) - G := Gdip_GraphicsFromImage(newBitmap) + + PixelFormatReadable := Gdip_GetImagePixelFormat(pBitmap, 2) + If InStr(PixelFormatReadable, "indexed") + { + hbm := CreateDIBSection(RWidth, RHeight,,24) + hdc := CreateCompatibleDC() + obm := SelectObject(hdc, hbm) + G := Gdip_GraphicsFromHDC(hdc) + indexedMode := 1 + } Else + { + newBitmap := Gdip_CreateBitmap(RWidth, RHeight, PixelFormat) + G := Gdip_GraphicsFromImage(newBitmap) + } + Gdip_SetInterpolationMode(G, InterpolationMode) - Gdip_FillRectangle(G, pBrush, 0, 0, Width, Height) + Gdip_SetSmoothingMode(G, 4) + If pBrush + Gdip_FillRectangle(G, pBrush, 0, 0, RWidth, RHeight) Gdip_TranslateWorldTransform(G, xTranslation, yTranslation) Gdip_RotateWorldTransform(G, Angle) Gdip_DrawImageRect(G, pBitmap, 0, 0, Width, Height) + + If (indexedMode=1) + { + newBitmap := Gdip_CreateBitmapFromHBITMAP(hbm) + SelectObject(hdc, obm) + DeleteObject(hbm) + DeleteDC(hdc) + } + Gdip_DeleteGraphics(G) If (defaultBrush=1) Gdip_DeleteBrush(pBrush) @@ -2488,7 +2599,8 @@ Gdip_RotateBitmapAtCenter(pBitmap, Angle, pBrush:=0, InterpolationMode:=7) { } Gdip_ResizeBitmap(pBitmap, givenW, givenH, KeepRatio, InterpolationMode:=7, KeepPixelFormat:=0) { -; It returns a pointer to a new pBitmap. +; KeepPixelFormat can receive a specific PixelFormat. +; The function returns a pointer to a new pBitmap. Gdip_GetImageDimensions(pBitmap, Width, Height) If (KeepRatio=1) @@ -2500,12 +2612,35 @@ Gdip_ResizeBitmap(pBitmap, givenW, givenH, KeepRatio, InterpolationMode:=7, Keep ResizedH := givenH } + PixelFormatReadable := Gdip_GetImagePixelFormat(pBitmap, 2) If (KeepPixelFormat=1) PixelFormat := Gdip_GetImagePixelFormat(pBitmap, 1) - newBitmap := Gdip_CreateBitmap(ResizedW, ResizedH, PixelFormat) - G := Gdip_GraphicsFromImage(newBitmap) - Gdip_SetInterpolationMode(G, InterpolationMode) - Gdip_DrawImageRect(G, pBitmap, 0, 0, ResizedW, ResizedH) + If Strlen(KeepPixelFormat)>3 + PixelFormat := KeepPixelFormat + + If InStr(PixelFormatReadable, "indexed") + { + hbm := CreateDIBSection(ResizedW, ResizedH,,24) + hdc := CreateCompatibleDC() + obm := SelectObject(hdc, hbm) + G := Gdip_GraphicsFromHDC(hdc) + Gdip_SetInterpolationMode(G, InterpolationMode) + Gdip_SetSmoothingMode(G, 4) + Gdip_DrawImageRect(G, pBitmap, 0, 0, ResizedW, ResizedH) + newBitmap := Gdip_CreateBitmapFromHBITMAP(hbm) + If (KeepPixelFormat=1) + Gdip_BitmapSetColorDepth(newBitmap, SubStr(PixelFormatReadable, 1, 1), 1) + SelectObject(hdc, obm) + DeleteObject(hbm) + DeleteDC(hdc) + } Else + { + newBitmap := Gdip_CreateBitmap(ResizedW, ResizedH, PixelFormat) + G := Gdip_GraphicsFromImage(newBitmap) + Gdip_SetInterpolationMode(G, InterpolationMode) + Gdip_DrawImageRect(G, pBitmap, 0, 0, ResizedW, ResizedH) + } + Gdip_DeleteGraphics(G) Return newBitmap } @@ -2574,6 +2709,11 @@ Gdip_ResetPenTransform(pPen) { Return DllCall("gdiplus\GdipResetPenTransform", Ptr, pPen) } +Gdip_MultiplyPenTransform(pPen, hMatrix, matrixOrder:=0) { + Ptr := A_PtrSize ? "UPtr" : "UInt" + Return DllCall("gdiplus\GdipMultiplyPenTransform", Ptr, pPen, Ptr, hMatrix, "int", matrixOrder) +} + Gdip_RotatePenTransform(pPen, Angle, matrixOrder:=0) { Ptr := A_PtrSize ? "UPtr" : "UInt" Return DllCall("gdiplus\GdipRotatePenTransform", Ptr, pPen, "float", Angle, "int", matrixOrder) @@ -3097,6 +3237,11 @@ Gdip_TranslateTextureTransform(pTexBrush, X, Y, MatrixOrder:=0) { return DllCall("gdiplus\GdipTranslateTextureTransform", Ptr, pTexBrush, "float", X, "float", Y, "int", MatrixOrder) } +Gdip_MultiplyTextureTransform(pTexBrush, hMatrix, matrixOrder:=0) { + Ptr := A_PtrSize ? "UPtr" : "UInt" + Return DllCall("gdiplus\GdipMultiplyTextureTransform", Ptr, pTexBrush, Ptr, hMatrix, "int", matrixOrder) +} + Gdip_SetTextureTransform(pTexBrush, hMatrix) { Ptr := A_PtrSize ? "UPtr" : "UInt" return DllCall("gdiplus\GdipSetTextureTransform", Ptr, pTexBrush, Ptr, hMatrix) @@ -3114,6 +3259,13 @@ Gdip_ResetTextureTransform(pTexBrush) { } Gdip_SetTextureWrapMode(pTexBrush, WrapMode) { +; WrapMode options: +; 0 - Tiling without flipping +; 1 - Tiles are flipped horizontally as you move from one tile to the next in a row +; 2 - Tiles are flipped vertically as you move from one tile to the next in a column +; 3 - Tiles are flipped horizontally as you move along a row and flipped vertically as you move along a column +; 4 - No tiling takes place + Ptr := A_PtrSize ? "UPtr" : "UInt" return DllCall("gdiplus\GdipSetTextureWrapMode", Ptr, pTexBrush, "int", WrapMode) } @@ -3228,6 +3380,11 @@ Gdip_ScaleLinearGrBrushTransform(pLinearGradientBrush, ScaleX, ScaleY, matrixOrd return DllCall("gdiplus\GdipScaleLineTransform", Ptr, pLinearGradientBrush, "float", ScaleX, "float", ScaleY, "int", matrixOrder) } +Gdip_MultiplyLinearGrBrushTransform(pLinearGradientBrush, hMatrix, matrixOrder:=0) { + Ptr := A_PtrSize ? "UPtr" : "UInt" + Return DllCall("gdiplus\GdipMultiplyLineTransform", Ptr, pLinearGradientBrush, Ptr, hMatrix, "int", matrixOrder) +} + Gdip_TranslateLinearGrBrushTransform(pLinearGradientBrush, X, Y, matrixOrder:=0) { Ptr := A_PtrSize ? "UPtr" : "UInt" return DllCall("gdiplus\GdipTranslateLineTransform", Ptr, pLinearGradientBrush, "float", X, "float", Y, "int", matrixOrder) @@ -3377,6 +3534,9 @@ Gdip_DeleteMatrix(hMatrix) { ;##################################################################################### Gdip_DrawOrientedString(pGraphics, String, FontName, Size, Style, X, Y, Width, Height, Angle:=0, pBrush:=0, pPen:=0, Align:=0, ScaleX:=1) { +; FontName can be a name of an already installed font or it can point to a font file +; to be loaded and used to draw the string. + ; Size - in em, in world units [font size] ; Remarks: a high value might be required; over 60, 90... to see the text. ; X, Y - coordinates for the rectangle where the text will be drawn @@ -3410,12 +3570,21 @@ Gdip_DrawOrientedString(pGraphics, String, FontName, Size, Style, X, Y, Width, H If (!pBrush && !pPen) Return -3 - hFontFamily := Gdip_FontFamilyCreate(FontName) + If RegExMatch(FontName, "^(.\:\\.)") + { + hFontCollection := Gdip_NewPrivateFontCollection() + hFontFamily := Gdip_CreateFontFamilyFromFile(FontName, hFontCollection) + } Else hFontFamily := Gdip_FontFamilyCreate(FontName) + If !hFontFamily hFontFamily := Gdip_FontFamilyCreateGeneric(1) If !hFontFamily + { + If hFontCollection + Gdip_DeletePrivateFontCollection(hFontCollection) Return -1 + } FormatStyle := 0x4000 hStringFormat := Gdip_StringFormatCreate(FormatStyle) @@ -3425,6 +3594,8 @@ Gdip_DrawOrientedString(pGraphics, String, FontName, Size, Style, X, Y, Width, H If !hStringFormat { Gdip_DeleteFontFamily(hFontFamily) + If hFontCollection + Gdip_DeletePrivateFontCollection(hFontCollection) Return -2 } @@ -3450,10 +3621,18 @@ Gdip_DrawOrientedString(pGraphics, String, FontName, Size, Style, X, Y, Width, H Gdip_DeleteStringFormat(hStringFormat) Gdip_DeleteFontFamily(hFontFamily) Gdip_DeletePath(pPath) + If hFontCollection + Gdip_DeletePrivateFontCollection(hFontCollection) Return E ? E : PathBounds } -Gdip_TextToGraphics(pGraphics, Text, Options, Font:="Arial", Width:="", Height:="", Measure:=0, userBrush:=0) { +Gdip_TextToGraphics(pGraphics, Text, Options, Font:="Arial", Width:="", Height:="", Measure:=0, userBrush:=0, Unit:=0) { +; Font parameter can be a name of an already installed font or it can point to a font file +; to be loaded and used to draw the string. +; +; Set Unit to 3 [Pts] to have the texts rendered at the same size +; with the texts rendered in GUIs with -DPIscale +; ; userBrush - if a pBrush object is passed, this will be used to draw the text ; Remarks: by changing the alignment, the text will be rendered at a different X ; coordinate position; the position of the text is set relative to @@ -3511,16 +3690,21 @@ Gdip_TextToGraphics(pGraphics, Text, Options, Font:="Arial", Width:="", Height:= Colour := "0x" (Colour && Colour[2] ? Colour[2] : "ff000000") Rendering := (Rendering && (Rendering[1] >= 0) && (Rendering[1] <= 5)) ? Rendering[1] : 4 Size := (Size && (Size[1] > 0)) ? Size[2] ? IHeight*(Size[1]/100) : Size[1] : 12 + If RegExMatch(Font, "^(.\:\\.)") + { + hFontCollection := Gdip_NewPrivateFontCollection() + hFontFamily := Gdip_CreateFontFamilyFromFile(Font, hFontCollection) + } Else hFontFamily := Gdip_FontFamilyCreate(Font) - hFontFamily := Gdip_FontFamilyCreate(Font) If !hFontFamily hFontFamily := Gdip_FontFamilyCreateGeneric(1) - hFont := Gdip_FontCreate(hFontFamily, Size, Style) + hFont := Gdip_FontCreate(hFontFamily, Size, Style, Unit) FormatStyle := NoWrap ? 0x4000 | 0x1000 : 0x4000 hStringFormat := Gdip_StringFormatCreate(FormatStyle) If !hStringFormat hStringFormat := Gdip_StringFormatGetGeneric(1) + pBrush := PassBrush ? pBrush : Gdip_BrushCreateSolid(Colour) if !(hFontFamily && hFont && hStringFormat && pBrush && pGraphics) { @@ -3533,6 +3717,8 @@ Gdip_TextToGraphics(pGraphics, Text, Options, Font:="Arial", Width:="", Height:= Gdip_DeleteFont(hFont) If hFontFamily Gdip_DeleteFontFamily(hFontFamily) + If hFontCollection + Gdip_DeletePrivateFontCollection(hFontCollection) return E } @@ -3566,6 +3752,8 @@ Gdip_TextToGraphics(pGraphics, Text, Options, Font:="Arial", Width:="", Height:= Gdip_DeleteStringFormat(hStringFormat) Gdip_DeleteFont(hFont) Gdip_DeleteFontFamily(hFontFamily) + If hFontCollection + Gdip_DeletePrivateFontCollection(hFontCollection) return _E ? _E : ReturnRC } @@ -3616,7 +3804,7 @@ Gdip_MeasureString(pGraphics, sString, hFont, hStringFormat, ByRef RectF) { return &RC ? NumGet(RC, 0, "float") "|" NumGet(RC, 4, "float") "|" NumGet(RC, 8, "float") "|" NumGet(RC, 12, "float") "|" Chars "|" Lines : 0 } -Gdip_DrawStringAlongPolygon(pGraphics, String, FontName, FontSize, Style, pBrush, DriverPoints:=0, pPath:=0, minDist:=0, flatness:=4, hMatrix:=0) { +Gdip_DrawStringAlongPolygon(pGraphics, String, FontName, FontSize, Style, pBrush, DriverPoints:=0, pPath:=0, minDist:=0, flatness:=4, hMatrix:=0, Unit:=0) { ; The function allows you to draw a text string along a polygonal line. ; Each point on the line corresponds to a letter. ; If they are too close, the letters will overlap. If they are fewer than @@ -3624,6 +3812,8 @@ Gdip_DrawStringAlongPolygon(pGraphics, String, FontName, FontSize, Style, pBrush ; If given, a pPath object will be segmented according to the precision defined by «flatness». ; ; pGraphics - a pointer to a pGraphics object where to draw the text +; FontName can be the name of an already installed font or it can point to a font file +; to be loaded and used to draw the string. ; FontSize - in em, in world units ; a high value might be required; over 60, 90... to see the text. ; pBrush - a pointer to a pBrush object to fill the text with @@ -3649,6 +3839,9 @@ Gdip_DrawStringAlongPolygon(pGraphics, String, FontName, FontSize, Style, pBrush ; BoldItalic = 3 ; Underline = 4 ; Strikeout = 8 +; +; Set Unit to 3 [Pts] to have the texts rendered at the same size +; with the texts rendered in GUIs with -DPIscale If (!minDist || minDist<1) minDist := FontSize//4 + 1 @@ -3666,15 +3859,27 @@ Gdip_DrawStringAlongPolygon(pGraphics, String, FontName, FontSize, Style, pBrush If (!pPath && !DriverPoints) Return -4 - hFontFamily := Gdip_FontFamilyCreate(FontName) + If RegExMatch(FontName, "^(.\:\\.)") + { + hFontCollection := Gdip_NewPrivateFontCollection() + hFontFamily := Gdip_CreateFontFamilyFromFile(FontName, hFontCollection) + } Else hFontFamily := Gdip_FontFamilyCreate(FontName) + If !hFontFamily hFontFamily := Gdip_FontFamilyCreateGeneric(1) + If !hFontFamily + { + If hFontCollection + Gdip_DeletePrivateFontCollection(hFontCollection) Return -1 + } - hFont := Gdip_FontCreate(hFontFamily, FontSize, Style) + hFont := Gdip_FontCreate(hFontFamily, FontSize, Style, Unit) If !hFont { + If hFontCollection + Gdip_DeletePrivateFontCollection(hFontCollection) Gdip_DeleteFontFamily(hFontFamily) Return -2 } @@ -3682,7 +3887,13 @@ Gdip_DrawStringAlongPolygon(pGraphics, String, FontName, FontSize, Style, pBrush Points := StrSplit(DriverPoints, "|") PointsCount := Points.Length() If (PointsCount<2) + { + If hFontCollection + Gdip_DeletePrivateFontCollection(hFontCollection) + Gdip_DeleteFont(hFont) + Gdip_DeleteFontFamily(hFontFamily) Return -3 + } txtLen := StrLen(String) If (PointsCount2) + r := DllCall("gdiplus\GdipBitmapGetHistogram", "Ptr", pBitmap, "UInt", whichFormat, "UInt", numEntries, "Ptr", &ch0, "Ptr", 0, "Ptr", 0, "Ptr", 0) Loop %numEntries% { @@ -6154,13 +6432,13 @@ Gdip_CreateBitmapFromGdiDib(BITMAPINFO, BitmapData) { Return pBitmap } -Gdi_StretchDIBits(hDestDC, dX, dY, dW, dH, sX, sY, sW, sH, tBITMAPINFO, Usage, pBits, Rop) { +Gdi_StretchDIBits(hDestDC, dX, dY, dW, dH, sX, sY, sW, sH, tBITMAPINFO, DIB_COLORS, pBits, RasterOper) { Ptr := A_PtrSize ? "UPtr" : "UInt" Return DllCall("StretchDIBits" , Ptr, hDestDC, "int", dX, "int", dY , "int", dW, "int", dH, "int", sX, "int", sY , "int", sW, "int", sH, Ptr, pBits, Ptr, tBITMAPINFO - , "int", Usage, "uint", Rop) + , "int", DIB_COLORS, "uint", RasterOper) } Gdi_SetDIBitsToDevice(hDC, dX, dY, Width, Height, sX, sY, StartScan, ScanLines, pBits, BITMAPINFO, DIB_COLORS) { @@ -6173,10 +6451,17 @@ Gdi_SetDIBitsToDevice(hDC, dX, dY, Width, Height, sX, sY, StartScan, ScanLines, , Ptr, pBits, Ptr, BITMAPINFO, "uint", DIB_COLORS) } -Gdi_GetDIBits(hdc, hBitmap, start, cLines, pBits, BITMAPINFO, DIB_COLORS) { -; hdc - A handle to the device context. +Gdi_GetDIBits(hDC, hBitmap, start, cLines, pBits, BITMAPINFO, DIB_COLORS) { +; hDC - A handle to the device context. ; hBitmap - A handle to the GDI bitmap. This must be a compatible bitmap (DDB). -; +; pbits --A pointer to a buffer to receive the bitmap data. +; If this parameter is NULL, the function passes the dimensions +; and format of the bitmap to the BITMAPINFO structure pointed to +; by the BITMAPINFO parameter. +; A DDB is a Device-Dependent Bitmap, (as opposed to a DIB, or Device-Independent Bitmap). +; That means: a DDB does not contain color values; instead, the colors are in a +; device-dependent format. Therefore, it requires a hDC. +; ; This function returns the data-bits as device-independent bitmap ; from a hBitmap into the pBits pointer. ; @@ -6185,16 +6470,14 @@ Gdi_GetDIBits(hdc, hBitmap, start, cLines, pBits, BITMAPINFO, DIB_COLORS) { ; Function written by Marius Șucan. Ptr := A_PtrSize ? "UPtr" : "UInt" - E := DllCall("GetDIBits" - , Ptr, hdc + Return DllCall("GetDIBits" + , Ptr, hDC , Ptr, hBitmap , "uint", start , "uint", cLines , Ptr, pBits , Ptr, BITMAPINFO , "uint", DIB_COLORS, Ptr) ; PAL=1 ; RGB=2 - - Return E } ;##################################################################################### @@ -6406,7 +6689,7 @@ GenerateColorMatrix(modus, bright:=1, contrast:=0, saturation:=1, alph:=1, chnRd ; bright: [0.001 - 20.0] ; contrast: [-20.0 - 1.00] ; saturation: [0.001 - 5.00] -; alph: [0.001 - 1.00] +; alph: [0.001 - 5.00] ; ; modus options: ; 0 - personalized colors based on the bright, contrast [hue], saturation parameters @@ -6416,6 +6699,7 @@ GenerateColorMatrix(modus, bright:=1, contrast:=0, saturation:=1, alph:=1, chnRd ; 4 - grayscale G channel ; 5 - grayscale B channel ; 6 - negative / invert image +; 7 - alpha channel as grayscale image ; ; chnRdec, chnGdec, chnBdec only apply in modus=1 ; these represent offsets for the RGB channels @@ -6451,17 +6735,17 @@ GenerateColorMatrix(modus, bright:=1, contrast:=0, saturation:=1, alph:=1, chnRd { Ga := 0, Ba := 0, GGA := 0 Ra := bright - matrix := Ra "|" Ra "|" Ra "|0|0|" Ga "|" Ga "|" Ga "|0|0|" Ba "|" Ba "|" Ba "|0|0|0|0|0|" alph "|0|" GGA+0.01 "|" GGA "|" GGA "|0|1" + matrix := Ra "|" Ra "|" Ra "|0|0|" Ga "|" Ga "|" Ga "|0|0|" Ba "|" Ba "|" Ba "|0|0|0|0|0|25|0|" GGA+0.01 "|" GGA "|" GGA "|0|1" } Else If (modus=4) ; grayscale G { Ra := 0, Ba := 0, GGA := 0 Ga := bright - matrix := Ra "|" Ra "|" Ra "|0|0|" Ga "|" Ga "|" Ga "|0|0|" Ba "|" Ba "|" Ba "|0|0|0|0|0|" alph "|0|" GGA "|" GGA+0.01 "|" GGA "|0|1" + matrix := Ra "|" Ra "|" Ra "|0|0|" Ga "|" Ga "|" Ga "|0|0|" Ba "|" Ba "|" Ba "|0|0|0|0|0|25|0|" GGA "|" GGA+0.01 "|" GGA "|0|1" } Else If (modus=5) ; grayscale B { Ra := 0, Ga := 0, GGA := 0 Ba := bright - matrix := Ra "|" Ra "|" Ra "|0|0|" Ga "|" Ga "|" Ga "|0|0|" Ba "|" Ba "|" Ba "|0|0|0|0|0|" alph "|0|" GGA "|" GGA "|" GGA+0.01 "|0|1" + matrix := Ra "|" Ra "|" Ra "|0|0|" Ga "|" Ga "|" Ga "|0|0|" Ba "|" Ba "|" Ba "|0|0|0|0|0|25|0|" GGA "|" GGA "|" GGA+0.01 "|0|1" } Else If (modus=6) ; negative / invert { matrix := "-1|0|0|0|0|0|-1|0|0|0|0|0|-1|0|0|0|0|0|" alph "|0|1|1|1|0|1" @@ -6555,6 +6839,14 @@ GenerateColorMatrix(modus, bright:=1, contrast:=0, saturation:=1, alph:=1, chnRd . "| 0 | 0 | 0 |" aL "|0" . "|" s3 "|" s3 "|" s3 "| 0 |1" matrix := StrReplace(mtrx, A_Space) + } Else If (modus=7) + { + mtrx := "0|0|0|0|0" + . "|0|0|0|0|0" + . "|0|0|0|0|0" + . "|1|1|1|25|0" + . "|0|0|0|0|1" + matrix := StrReplace(mtrx, A_Space) } Return matrix } @@ -6588,13 +6880,13 @@ Gdip_CompareBitmaps(pBitmapA, pBitmapB, accuracy:=25) { || Width1 != Width2 || Height1 != Height2) Return -1 - E1 := Gdip_LockBits(pBitmap1, 0, 0, Width1, Height1, Stride1, Scan01, BitmapData2) + E1 := Gdip_LockBits(pBitmap1, 0, 0, Width1, Height1, Stride1, Scan01, BitmapData1) E2 := Gdip_LockBits(pBitmap2, 0, 0, Width2, Height2, Stride2, Scan02, BitmapData2) z := 0 - Loop, %Height1% + Loop %Height1% { y++ - Loop, %Width1% + Loop %Width1% { Gdip_FromARGB(Gdip_GetLockBitPixel(Scan01, A_Index-1, y-1, Stride1), A1, R1, G1, B1) Gdip_FromARGB(Gdip_GetLockBitPixel(Scan02, A_Index-1, y-1, Stride2), A2, R2, G2, B2) @@ -6607,7 +6899,169 @@ Gdip_CompareBitmaps(pBitmapA, pBitmapB, accuracy:=25) { return z/(Width1*Width2*3*255/100) } +Gdip_RetrieveBitmapChannel(pBitmap, channel) { +; Channel to retrive: +; 1 - Red +; 2 - Green +; 3 - Blue +; 4 - Alpha +; On success, the function will return a pBitmap +; in 32-ARGB PixelFormat containing a grayscale +; rendition of the retrieved channel. + + If (channel="1") + matrix := GenerateColorMatrix(3) + Else If (channel="2") + matrix := GenerateColorMatrix(4) + Else If (channel="3") + matrix := GenerateColorMatrix(5) + Else If (channel="4") + matrix := GenerateColorMatrix(7) + Else Return + + Gdip_GetImageDimensions(pBitmap, imgW, imgH) + If (!imgW || !imgH) + Return + + pBrush := Gdip_BrushCreateSolid(0xff000000) + newBitmap := Gdip_CreateBitmap(imgW, imgH) + If !newBitmap + Return + + G := Gdip_GraphicsFromImage(newBitmap) + Gdip_SetInterpolationMode(G, 7) + Gdip_FillRectangle(G, pBrush, 0, 0, imgW, imgH) + Gdip_DrawImage(G, pBitmap, 0, 0, imgW, imgH, 0, 0, imgW, imgH, matrix) + Gdip_DeleteBrush(pBrush) + Gdip_DeleteGraphics(G) + Return newBitmap +} + +Gdip_RenderPixelsOpaque(pBitmap, pBrush:=0, alphaLevel:=0) { +; alphaLevel - from 0 [transparent] to 1 or beyond [opaque] +; +; This function is meant to make opaque partially transparent pixels. +; It returns a pointer to a new pBitmap. +; +; If pBrush is given, the background of the image is filled using it, +; otherwise, the pixels that are 100% transparent +; might remain transparent. + + Gdip_GetImageDimensions(pBitmap, imgW, imgH) + newBitmap := Gdip_CreateBitmap(imgW, imgH) + G := Gdip_GraphicsFromImage(newBitmap) + Gdip_SetInterpolationMode(G, 7) + If alphaLevel + matrix := GenerateColorMatrix(0, 0, 0, 1, alphaLevel) + Else + matrix := GenerateColorMatrix(0, 0, 0, 1, 25) + If pBrush + Gdip_FillRectangle(G, pBrush, 0, 0, imgW, imgH) + + Gdip_DrawImage(G, pBitmap, 0, 0, imgW, imgH, 0, 0, imgW, imgH, matrix) + Gdip_DeleteGraphics(G) + Return newBitmap +} + +Gdip_TestBitmapUniformity(pBitmap, HistogramFormat:=3, ByRef maxLevelIndex:=0, ByRef maxLevelPixels:=0) { +; This function tests whether the given pBitmap +; is in a single shade [color] or not. + +; If HistogramFormat parameter is set to 3, the function +; retrieves the intensity/gray histogram and checks +; how many pixels are for each level [0, 255]. +; +; If all pixels are found at a single level, +; the return value is 1, because the pBitmap is considered +; uniform, in a single shade. +; +; One can set the HistogramFormat to 4 [R], 5 [G], 6 [B] or 7 [A] +; to test for the uniformity of a specific channel. +; +; A threshold value of 0.0005% of all the pixels, is used. +; This is to ensure that a few pixels do not change the status. + + LevelsArray := [] + maxLevelIndex := maxLevelPixels := nrPixels := 9 + Gdip_GetImageDimensions(pBitmap, Width, Height) + Gdip_GetHistogram(pBitmap, HistogramFormat, LevelsArray, 0, 0) + Loop 256 + { + nrPixels := Round(LevelsArray[A_Index - 1]) + If (nrPixels>0) + histoList .= nrPixels "." A_Index - 1 "|" + } + Sort histoList, NURD| + histoList := Trim(histoList, "|") + histoListSortedArray := StrSplit(histoList, "|") + maxLevel := StrSplit(histoListSortedArray[1], ".") + maxLevelIndex := maxLevel[2] + maxLevelPixels := maxLevel[1] + ; ToolTip, % maxLevelIndex " -- " maxLevelPixels " | " histoListSortedArray[1] "`n" histoList, , , 3 + pixelsThreshold := Round((Width * Height) * 0.0005) + 1 + If (Floor(histoListSortedArray[2])254) + Continue + Gdip_FromARGB(NumGet(Scan01+0, (pX*4)+(pY*Stride1), "UInt"), A1, R1, G1, B1) + NumPut(Gdip_ToARGB(newAlpha, R1, G1, B1), Scan01+0, (pX*4)+(pY*Stride1), "UInt") ; Gdip_SetLockBitPixel() + } + } + + Gdip_UnlockBits(newBitmap, BitmapData1) + Gdip_UnlockBits(AlphaMaskBitmap, BitmapData2) + return newBitmap +} + calcIMGdimensions(imgW, imgH, givenW, givenH, ByRef ResizedW, ByRef ResizedH) { +; imgW, imgH - original image width and height +; givenW, givenH - the width and height [in pixels] to adapt to +; ResizedW, ResizedH - the width and height resulted from adapting imgW, imgH to givenW, givenH +; by keeping the aspect ratio + PicRatio := Round(imgW/imgH, 5) givenRatio := Round(givenW/givenH, 5) If (imgW <= givenW) && (imgH <= givenH) @@ -6630,4 +7084,125 @@ calcIMGdimensions(imgW, imgH, givenW, givenH, ByRef ResizedW, ByRef ResizedH) { } } +GetWindowRect(hwnd, ByRef W, ByRef H) { + CreateRect(winRect, 0, 0, 0, 0) ;is 16 on both 32 and 64 + DllCall("GetWindowRect", Ptr, hwnd, Ptr, &winRect ) + W := NumGet(winRect, 8, "UInt") - NumGet(winRect, 0, "UInt") + H := NumGet(winRect, 12, "UInt") - NumGet(winRect, 4, "UInt") +} + +Gdip_BitmapConvertGray(pBitmap, hue:=0, vibrance:=-40, brightness:=1, contrast:=0, KeepPixelFormat:=0) { +; hue, vibrance, contrast and brightness parameters +; influence the resulted new grayscale pBitmap. +; +; KeepPixelFormat can receive a specific PixelFormat. +; The function returns a pointer to a new pBitmap. + + Gdip_GetImageDimensions(pBitmap, Width, Height) + + If (KeepPixelFormat=1) + PixelFormat := Gdip_GetImagePixelFormat(pBitmap, 1) + If StrLen(KeepPixelFormat)>3 + PixelFormat := KeepPixelFormat + + newBitmap := Gdip_CreateBitmap(Width, Height, PixelFormat) + G := Gdip_GraphicsFromImage(newBitmap) + Gdip_SetInterpolationMode(G, InterpolationMode) + pEffect := Gdip_CreateEffect(6, hue, vibrance, 0) + matrix := GenerateColorMatrix(2, brightness, contrast) + r1 := Gdip_DrawImageFX(G, pBitmap, 0, 0, Width, Height, matrix, pEffect) + Gdip_DisposeEffect(pEffect) + Gdip_DeleteGraphics(G) + Return newBitmap +} + +Gdip_BitmapSetColorDepth(pBitmap, bitsDepth, useDithering:=1) { +; Return 0 = OK - Success + + ditheringMode := (useDithering=1) ? 9 : 1 + If (useDithering=1 && bitsDepth=16) + ditheringMode := 2 + + Colors := 2**bitsDepth + If bitsDepth Between 2 and 4 + bitsDepth := "40s" + If bitsDepth Between 5 and 8 + bitsDepth := "80s" + If (bitsDepth="BW") + E := Gdip_BitmapConvertFormat(pBitmap, 0x30101, ditheringMode, 2, 2, 2, 2, 0, 0) + Else If (bitsDepth=1) + E := Gdip_BitmapConvertFormat(pBitmap, 0x30101, ditheringMode, 1, 2, 1, 2, 0, 0) + Else If (bitsDepth="40s") + E := Gdip_BitmapConvertFormat(pBitmap, 0x30402, ditheringMode, 1, Colors, 1, Colors, 0, 0) + Else If (bitsDepth="80s") + E := Gdip_BitmapConvertFormat(pBitmap, 0x30803, ditheringMode, 1, Colors, 1, Colors, 0, 0) + Else If (bitsDepth=16) + E := Gdip_BitmapConvertFormat(pBitmap, 0x21005, ditheringMode, 1, Colors, 1, Colors, 0, 0) + Else If (bitsDepth=24) + E := Gdip_BitmapConvertFormat(pBitmap, 0x21808, 2, 1, 0, 0, 0, 0, 0) + Else + E := -1 + Return E +} +Gdip_BitmapConvertFormat(pBitmap, PixelFormat, DitherType, DitherPaletteType, PaletteEntries, PaletteType, OptimalColors, UseTransparentColor:=0, AlphaThresholdPercent:=0) { +; pBitmap - Handle to a pBitmap object on which the color conversion is applied. + +; PixelFormat options: see Gdip_GetImagePixelFormat() +; Pixel format constant that specifies the new pixel format. + +; PaletteEntries Number of Entries. +; OptimalColors - Integer that specifies the number of colors you want to have in an optimal palette based on a specified pBitmap. +; This parameter is relevant if PaletteType parameter is set to PaletteTypeOptimal [1]. +; UseTransparentColor Boolean value that specifies whether to include the transparent color in the palette. +; AlphaThresholdPercent - Real number in the range 0.0 through 100.0 that specifies which pixels in the source bitmap will map to the transparent color in the converted bitmap. +; +; PaletteType options: +; Custom = 0 ; Arbitrary custom palette provided by caller. +; Optimal = 1 ; Optimal palette generated using a median-cut algorithm. +; FixedBW = 2 ; Black and white palette. +; +; Symmetric halftone palettes. Each of these halftone palettes will be a superset of the system palette. +; e.g. Halftone8 will have its 8-color on-off primaries and the 16 system colors added. With duplicates removed, that leaves 16 colors. +; FixedHalftone8 = 3 ; 8-color, on-off primaries +; FixedHalftone27 = 4 ; 3 intensity levels of each color +; FixedHalftone64 = 5 ; 4 intensity levels of each color +; FixedHalftone125 = 6 ; 5 intensity levels of each color +; FixedHalftone216 = 7 ; 6 intensity levels of each color +; +; Assymetric halftone palettes. These are somewhat less useful than the symmetric ones, but are included for completeness. +; These do not include all of the system colors. +; FixedHalftone252 = 8 ; 6-red, 7-green, 6-blue intensities +; FixedHalftone256 = 9 ; 8-red, 8-green, 4-blue intensities +; +; DitherType options: +; None = 0 +; Solid = 1 +; - it picks the nearest matching color with no attempt to halftone or dither. May be used on an arbitrary palette. +; +; Ordered dithers and spiral dithers must be used with a fixed palette. +; NOTE: DitherOrdered4x4 is unique in that it may apply to 16bpp conversions also. +; Ordered4x4 = 2 +; Ordered8x8 = 3 +; Ordered16x16 = 4 +; Ordered91x91 = 5 +; Spiral4x4 = 6 +; Spiral8x8 = 7 +; DualSpiral4x4 = 8 +; DualSpiral8x8 = 9 +; ErrorDiffusion = 10 ; may be used with any palette +; Return 0 = OK - Success + + VarSetCapacity(hPalette, 4 * PaletteEntries + 8, 0) + +; tPalette := DllStructCreate("uint Flags; uint Count; uint ARGB[" & $iEntries & "];") + NumPut(PaletteType, &hPalette, 0, "uint") + NumPut(PaletteEntries, &hPalette, 4, "uint") + NumPut(0, &hPalette, 8, "uint") + + Ptr := A_PtrSize ? "UPtr" : "UInt" + E1 := DllCall("gdiplus\GdipInitializePalette", "UPtr", &hPalette, "uint", PaletteType, "uint", OptimalColors, "Int", UseTransparentColor, Ptr, pBitmap) + E2 := DllCall("gdiplus\GdipBitmapConvertFormat", Ptr, pBitmap, "uint", PixelFormat, "uint", DitherType, "uint", DitherPaletteType, "uPtr", &hPalette, "float", AlphaThresholdPercent) + E := E1 ? E1 : E2 + Return E +} diff --git a/lib-a_to_h/ahkobj2comarray.ahk b/lib-a_to_h/ahkobj2comarray.ahk index 101c9b56..991730fa 100644 --- a/lib-a_to_h/ahkobj2comarray.ahk +++ b/lib-a_to_h/ahkobj2comarray.ahk @@ -1,4 +1,4 @@ -/* +/* Author: Naveen Garg license: GPL v2 */ diff --git a/lib-a_to_h/ahkstructlib2.ahk b/lib-a_to_h/ahkstructlib2.ahk index c11613ac..ca03cd37 100644 --- a/lib-a_to_h/ahkstructlib2.ahk +++ b/lib-a_to_h/ahkstructlib2.ahk @@ -1,4 +1,4 @@ -; ********************************* +; ********************************* ; AHK Function Library - Structures ; Version 2.02 ; - by Corrupt diff --git a/lib-a_to_h/ahkstructlib2_debug.ahk b/lib-a_to_h/ahkstructlib2_debug.ahk index 2a57f281..9a5bdf98 100644 --- a/lib-a_to_h/ahkstructlib2_debug.ahk +++ b/lib-a_to_h/ahkstructlib2_debug.ahk @@ -1,4 +1,4 @@ -; ********************************* +; ********************************* ; Debug plugin ; ********************************* ; AHK Function Library - Structures diff --git a/lib-a_to_h/align-columns.ahk b/lib-a_to_h/align-columns.ahk new file mode 100644 index 00000000..cd312098 --- /dev/null +++ b/lib-a_to_h/align-columns.ahk @@ -0,0 +1,50 @@ +lines = +( +|$|$|$|$|$|$|$|$|$|$|$| +Given$a$text$file$of$many$lines,$where$fields$within$a$line$ +are$delineated$by$a$single$'dollar'$character,$write$a$program +that$aligns$each$column$of$fields$by$ensuring$that$words$in$each$ +column$are$separated$by$at$least$one$space. +Further,$allow$for$each$word$in$a$column$to$be$either$left$ +justified,$right$justified,$or$center$justified$within$its$column. +) + +Clipboard := ColumnJustify(lines, "l") + +MsgBox, , Column Justify, The clipboard now contains the justified text. Paste it into a text editor to see it. + +ColumnJustify(lines, lcr = "l", del="$") +{ + Loop, Parse, lines, `n, `r + Loop, Parse, A_LoopField, %del% + { + If ((t := StrLen(A_LoopField)) > c%A_Index% ) + c%A_Index% := t + If (t > max) + max := t + } + blank := Fill( " ", max ) + If (lcr = "l") ;left-justify + Loop, Parse, lines, `n, `r + Loop, Parse, A_LoopField, %del% + out .= (A_Index = 1 ? "`n" : " ") SubStr(A_LoopField blank, 1, c%A_Index%) + Else If (lcr = "r") ;right-justify + Loop, Parse, lines, `n, `r + Loop, Parse, A_LoopField, %del% + out .= (A_Index = 1 ? "`n" : " ") SubStr(blank A_LoopField, -c%A_Index%+1) + Else If (lcr = "c") ;center-justify + Loop, Parse, lines, `n, `r + Loop, Parse, A_LoopField, %del% + out .= (A_Index = 1 ? "`n" : " ") SubStr(blank A_LoopField blank + , (Ceil((max * 2 + StrLen(A_LoopField))/2) - Ceil(c%A_Index%/2) + 1) + , c%A_Index%) + return SubStr(out, 2) +} + +Fill(chr, len) +{ + static y + if !y + VarSetCapacity(x, 64), VarSetCapacity(x, 0), y := True + return x, VarSetCapacity(x, len, Asc(chr)) +} diff --git a/lib-a_to_h/argp.ahk b/lib-a_to_h/argp.ahk index d3b6da6a..72ff99af 100644 --- a/lib-a_to_h/argp.ahk +++ b/lib-a_to_h/argp.ahk @@ -1,4 +1,4 @@ -/* +/* _______________________________________________________________________________ _______________________________________________________________________________ diff --git a/lib-a_to_h/array_.ahk b/lib-a_to_h/array_.ahk index e97caed1..743d1687 100644 --- a/lib-a_to_h/array_.ahk +++ b/lib-a_to_h/array_.ahk @@ -1,4 +1,4 @@ -; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat +; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat array_concat(arrays*) { results := [] diff --git a/lib-a_to_h/array_playground.ahk b/lib-a_to_h/array_playground.ahk new file mode 100644 index 00000000..8ea4dec5 --- /dev/null +++ b/lib-a_to_h/array_playground.ahk @@ -0,0 +1,142 @@ +/* This file is where I do experimental or fun stuff in AutoHotkey. +*/ + +; Functions +; ============================================================================== +genArray(len, start := 1, step := 1) { + /* Generate an array of specified length + */ + array := [] + for x in range(start, len + 1, step) { + array.Push(x) + } + + Return array +} + +generateRandArrayFile(len, num) { + /* Generate num random arrays of length len (1 to len) + + Output saved to file named rand_array_.txt + */ + array := genArray(len) + + file_name := "rand_array_" . len . ".txt" + file := FileOpen(file_name, "w") + + i := 0 + while (i < num) { + rand_array := shuffle(array) + file.Write(arrayAsStr(rand_array)) + i += 1 + } + file.Close() + + Return file_name +} + +readRandArrayFile(name) { + /* read file containing random arrays. + + Count the number of time each array appears. + */ + array := {} + Loop, Read, % name + { + if not array.HasKey(A_LoopReadLine) { + array[A_LoopReadLine] := 0 + } + array[A_LoopReadLine] += 1 + } + + StringTrimRight, base_name, name, 4 + res_name := name . "_res.txt" + + file := FileOpen(res_name, "w") + file.Write("Array: Count`r`n") + for key, val in array { + str := key . ": " . val . "`r`n" + file.Write(str) + } + file.close() + + Return res_name +} + +arrayAsStr(array) { + /* Format array as string + */ + str := "[" + for key, val in array { + str := str . val . ", " + } + StringTrimRight, str, str, 2 + str := str . "]`r`n" + Return str +} + +genRandomArray(array) { + /* Returns shuffled version of provided array. + + Original array is unaffected. + + I could rebuild this using the inside out implementation of Fischer-Yates + but that depends on frequent calls to the length of an array. + I am pretty sure that those calls in AutoHotkey are linear time. + I believe this implementation is faster. + */ + + a := [array.clone()] ; Copy of array so original is not changed + shuffle(a) + Return a +} + +shuffle(a) { + /* Shuffle array in place. + + Implementation of the Fischer-Yates shuffle. + */ + i := a.length() ; Arrays are 1-indexed so I don't need to -1 here. + while (i > 1) { ; Don't need to swap the last element with itself. + Random, rand, 0.0, 1.0 ; Get random float between 0 and 1 + j := Ceil(rand * i) ; Turn float to int between 1 and i. + temp := a[i], a[i] := a[j], a[j] := temp ; swap values at i and j in array + i -= 1 + } + Return a +} + +range(start, stop:="", step:=1) { + /* Create Python style range function in AutoHotkey. + + Copied from HTTPS://autohotkey.com/boards/viewtopic.php?t=4303 + */ + static range := { _NewEnum: Func("_RangeNewEnum") } + if !step + throw "range(): Parameter 'step' must not be 0 or blank" + if (stop == "") + stop := start, start := 0 + ; Formula: r[i] := start + step*i ; r = range object, i = 0-based index + ; For a positive 'step', the constraints are i >= 0 and r[i] < stop + ; For a negative 'step', the constraints are i >= 0 and r[i] > stop + ; No result is returned if r[0] does not meet the value constraint + if (step > 0 ? start < stop : start > stop) ;// start == start + step*0 + Return { base: range, start: start, stop: stop, step: step } +} + +_RangeNewEnum(r) { + /* Subfunction of range. + */ + static enum := { "Next": Func("_RangeEnumNext") } + Return { base: enum, r: r, i: 0 } +} + +_RangeEnumNext(enum, ByRef k, ByRef v:="") { + /* Subfunction of range. + */ + stop := enum.r.stop, step := enum.r.step + , k := enum.r.start + step*enum.i + if (ret := step > 0 ? k < stop : k > stop) + enum.i += 1 + Return ret +} diff --git a/lib-a_to_h/baseConvert.ahk b/lib-a_to_h/baseConvert.ahk index 0b8922a8..21b61d1e 100644 --- a/lib-a_to_h/baseConvert.ahk +++ b/lib-a_to_h/baseConvert.ahk @@ -1,4 +1,4 @@ -; Number System Converter by Holle +; Number System Converter by Holle ; http://www.autohotkey.com/forum/viewtopic.php?t=56135 ; Some "names" for the number systems will be accepted such as decimal/dec/d/base10/dekal or diff --git a/lib-a_to_h/bmpread.ahk b/lib-a_to_h/bmpread.ahk index df1eaba0..09cb4f00 100644 --- a/lib-a_to_h/bmpread.ahk +++ b/lib-a_to_h/bmpread.ahk @@ -1,4 +1,4 @@ - + BMPWidth(ByRef bmpdata) { return NumGet(bmpdata, 18, "UInt") } diff --git a/lib-a_to_h/bubbleSort2DArray.AHK b/lib-a_to_h/bubbleSort2DArray.AHK index c52bbc5f..cbed9688 100644 --- a/lib-a_to_h/bubbleSort2DArray.AHK +++ b/lib-a_to_h/bubbleSort2DArray.AHK @@ -1,4 +1,4 @@ -; A modified bubble search +; A modified bubble search ; This is slow, but very useful. ; If called in the correct sequence, you can completely order ; a 2 dimensional array by as many keys as you want (and in any order)! diff --git a/lib-a_to_h/cControls.ahk b/lib-a_to_h/cControls.ahk index 57d14536..6856c9c1 100644 --- a/lib-a_to_h/cControls.ahk +++ b/lib-a_to_h/cControls.ahk @@ -1,4 +1,4 @@ -Class CControl ;Never created directly +Class CControl ;Never created directly { __New(Name, Options, Text, GUINum) ;Basic constructor for all controls. The control is created in CGUI.Add() { diff --git a/lib-a_to_h/cFTP.ahk b/lib-a_to_h/cFTP.ahk index 2152a977..555bd960 100644 --- a/lib-a_to_h/cFTP.ahk +++ b/lib-a_to_h/cFTP.ahk @@ -1,4 +1,4 @@ -/* ,---, ,--, +/* ,---, ,--, ,--.' | ,--.'| | | : .--. ,--, | | : .--.--. : : : .--,`| ,'_ /| : : ' diff --git a/lib-a_to_h/cdomessage.ahk b/lib-a_to_h/cdomessage.ahk index 97e8b5d5..c9d2a1d6 100644 --- a/lib-a_to_h/cdomessage.ahk +++ b/lib-a_to_h/cdomessage.ahk @@ -1,4 +1,4 @@ -/* +/* ; In this example, Email is sent using GMail SMTP (SSL) server. cdomessage( sFrom := "Mail_Address_Of_Sender" , sTo := "Mail_Address_Of_Receipient" diff --git a/lib-a_to_h/changeScreenSize.ahk b/lib-a_to_h/changeScreenSize.ahk new file mode 100644 index 00000000..96db7ec1 --- /dev/null +++ b/lib-a_to_h/changeScreenSize.ahk @@ -0,0 +1,145 @@ +;~ #NoEnv +;~ MsgBox, % ChangeDisplaySettings("1920|1080") . " - " . ErrorLevel +;~ Pause +;~ ChangeDisplaySettings() +;~ ExitApp + +; ================================================================================================================================== +; Namespace: ChangeDisplaySettings() +; Function: Dynamically changes the display resolution, color resolution, and/or frequency of the display. +; Additionally you may change the position of a display in multi-monitor environments. +; AHK version: AHK 1.1.+ (required) +; Language: English +; Tested on: Win Vista SP2 (U32 / ANSI) (with only one display) +; Version: 1.0.00.00/2012-10-20/just me +; MSDN: msdn.microsoft.com/en-us/library/dd183413(v=vs.85).aspx +; ================================================================================================================================== +; This software is provided 'as-is', without any express or implied warranty. +; In no event will the authors be held liable for any damages arising from the use of this software. +; ================================================================================================================================== +ChangeDisplaySettings(DispRes := False, ColorRes := False, Frequency := False, DispNum := 0, DispPos := False) { + ; =================================================================================================================== + ; + ; Parameters: + ; DispRes Specifies the width and height, in pixels, of the visible device surface. + ; The new width and height have to be passed as a pipe-separated string (i.e. "1440|900") + ; False (0) : don't change + ; ColorRes Specifies the color resolution, in bits per pixel, of the display device + ; (for example: 4 for 16, 8 for 256, or 16 for 65,536 colors). + ; False (0) : don't change + ; Frequency Specifies the frequency, in hertz (cycles per second), of the display device in a particular mode. + ; False (0) : don't change + ; --------------- For multi-monitor environments only --------------------------------------------------------------- + ; DispNum Specifies the number of the display to change the settings for in a multiple-monitor environment. + ; 0 : default display device + ; DispPos Specifies the positional coordinates, in pixel, of the display device in reference to the + ; desktop area. The primary display device is always located at coordinates (0,0). + ; The new x- and y-coordinates have to be passed as a pipe-separated string (i.e. "1680|0") + ; False (0) : don't change + ; + ; If all parameters are omitted (i.e. default to zero / False), all the values currently in the registry will be + ; used for the display setting. This is the easiest way to return to the default mode after a dynamic mode change. + ; + ; Return values: + ; Returns True on success, otherwise False, ErrorLevel contains a message or one of the following error codes: + ; DISP_CHANGE_RESTART 1 + ; DISP_CHANGE_FAILED -1 + ; DISP_CHANGE_BADMODE -2 + ; DISP_CHANGE_NOTUPDATED -3 + ; DISP_CHANGE_BADFLAGS -4 + ; DISP_CHANGE_BADPARAM -5 + ; DISP_CHANGE_BADDUALVIEW -6 + ; =============================================================================================================================== + ; MS constants + Static CDS_TEST := 0x00000002 + Static DISP_CHANGE_SUCCESSFUL := 0 + Static DM_ORIENTATION := 0x00000001 + Static DM_POSITION := 0x00000020 + Static DM_BITSPERPEL := 0x00040000 + Static DM_PELSWIDTH := 0x00080000 + Static DM_PELSHEIGHT := 0x00100000 + Static DM_DISPLAYFREQUENCY := 0x00400000 + ; =============================================================================================================================== + ; AHK constants + Static TCHARsize := A_IsUnicode ? 64 : 32 ; size of TCHAR members dmDeviceName and dmFormName + Static DEVMODEsize := 92 + (TCHARsize * 2) ; size of DEVMODE structure + Static offSize := 4 + TCHARsize ; dmSize + Static offFields := 8 + TCHARsize ; dmFields + Static offPosition := 12 + TCHARsize ; dmPosition + Static offColorRes := 40 + (TCHARsize * 2) ; dmBitsPerPel + Static offWidth := 44 + (TCHARsize * 2) ; dmPelsWidth + Static offHeight := 48 + (TCHARsize * 2) ; dmPelsHeight + Static offFrequency := 56 + (TCHARsize * 2) ; dmDisplayFrequency + ; =============================================================================================================================== + ; Create the DEVMODE structure + VarSetCapacity(DEVMODE, DEVMODEsize, 0) + NumPut(DEVMODEsize, DEVMODE, offSize, "UShort") + ; =============================================================================================================================== + ; Initialize DEVMODEaddr and Fields with zero (NULL) in case the default registry settings shall be set + DEVMODEaddr := 0 + Fields := 0 + ; =============================================================================================================================== + ; Check optional parameters. + If (DispRes) { + StringSplit, Part, DispRes, | + If (Part0 <> 2) { + ErrorLevel := "Bad parameter DispRes!" + Return False + } + NumPut(Part1, DEVMODE, offWidth, "UInt") + NumPut(Part2, DEVMODE, offHeight, "UInt") + Fields |= DM_PELSWIDTH | DM_PELSHEIGHT + } + If (ColorRes) { + NumPut(ColorRes, DEVMODE, offColorRes, "UInt") + Fields |= DM_BITSPERPEL + } + If (Frequency) { + NumPut(Frequency, DEVMODE, offFrequency, "UInt") + Fields |= DM_DISPLAYFREQUENCY + } + If (DispNum < 1) + SysGet, DispNum, MonitorPrimary + If (DispPos) { + StringSplit, Part, DispPos, | + SysGet, Displays, MonitorCount + If (Part0 <> 2) || (Displays < 2) { + ErrorLevel := "Bad parameter DispPos!" + Return False + } + If (DispNum > Displays) { + ErrorLevel := "Bad parameter DispNum!" + Return False + } + NumPut(Part1, DEVMODE, offPosition + 0, "UInt") + NumPut(Part2, DEVMODE, offPosition + 4, "UInt") + Fields |= DM_POSITION + } + ; =============================================================================================================================== + ; Get the device name. + SysGet, DevName, MonitorName, %DispNum% + If (DevName = "") { + ErrorLevel := "Bad parameter DispNum!" + Return False + } + ; =============================================================================================================================== + ; New settings will be checked, if any. If the DllCall returns an error the new settings won't be set. + If (Fields) { + NumPut(Fields, DEVMODE, offFields, "UInt") + DEVMODEaddr := &DEVMODE + If (RetVal := DllCall("ChangeDisplaySettingsEx", "Str", DevName, "Ptr", DEVMODEaddr, "Ptr", 0, "UInt", CDS_TEST, "Ptr", 0, "Int")) { + ErrorLevel := RetVal + Return False + } + } + ; =============================================================================================================================== + ; New settings will be set dynamically. + If (RetVal := DllCall("ChangeDisplaySettingsEx", "Str", DevName, "Ptr", DEVMODEaddr, "Ptr", 0, "UInt", 0, "Ptr", 0, "Int")) { + ErrorLevel := RetVal + Return False + } + ; =============================================================================================================================== + ; All done successfully. + ErrorLevel := 0 + Return True +} \ No newline at end of file diff --git a/lib-a_to_h/deepcopy.ahk b/lib-a_to_h/deepcopy.ahk new file mode 100644 index 00000000..93019661 --- /dev/null +++ b/lib-a_to_h/deepcopy.ahk @@ -0,0 +1,12 @@ +DeepCopy(Array, Objs=0){ + If !Objs + Objs := Object() + Obj := Array.Clone() ; produces a shallow copy in that any sub-objects are not cloned + Objs[&Array] := Obj ; Save this new array - & returns the address of Array in memory + For Key, Val in Obj + If (IsObject(Val)) ; If it is a subarray + Obj[Key] := Objs[&Val] ; If we already know of a reference to this array + ? Objs[&Val] ; Then point it to the new array (to prevent infinite recursion on self-references + : DeepCopy(Val,Objs) ; Otherwise, clone this sub-array + Return Obj +} diff --git a/lib-a_to_h/detect_PowerMessage.ahk b/lib-a_to_h/detect_PowerMessage.ahk new file mode 100644 index 00000000..844c2e5f --- /dev/null +++ b/lib-a_to_h/detect_PowerMessage.ahk @@ -0,0 +1,116 @@ +/* + Mute on hibernation + + Purpose: + Mute the internal speakers if the computer is sent into hibernation or standby mode. + + Some laptop models of Fujitsu-Siemens are making short beep sounds everytime + they are sent into sleep mode. This annoying behavior cannot be switched off, + so this program circumvents it by disabling the speakers before sleep mode and + reactivating them when resuming from hibernation. + + Functioning: + The program runs in background, listening for the systems message to hibernate + the computer. It then mutes the speakers and turns them on again after the + computer woke up. + The mute state is left untouched in case the speakers were not muted by this + program. + The program will create one registry entry to save the mute state. + + Requirements: + - Windows 2000 and newer + - Read and write permission to HKEY_CURRENT_USER registry stem. + + + Author: Dirk Schwarzmann + Version: 0.2 + Date: 2007-08-02 + + Contact: + Dirk 'Rob' Schwarzmann + http://www.dirk-schwarzmann.de + mailto://dirk@dirk-schwarzmann.de + + Version history: + 0.1, 2007-08-01: Initial version + 0.2, 2007-08-02: Replace unreliable timer function by real power event parameters +*/ + +; Registry location to save the mute state +reg_root = HKEY_CURRENT_USER +reg_path = SessionInformation +reg_key = MutedforSuspend + +; Tray icon and menu definition +Menu, TRAY, Icon, MuteOnHibernate.ico, 1, 1 +Menu, TRAY, Tip, Mute speakers on hibernation + +; Listen to the Windows power event "WM_POWERBROADCAST" (ID: 0x218): +OnMessage(0x218, "func_WM_POWERBROADCAST") +Return + +/* + This function is executed if the system sends a power event. + Parameters wParam and lParam define the type of event: + + lParam: always 0 + wParam: + PBT_APMQUERYSUSPEND 0x0000 + PBT_APMQUERYSTANDBY 0x0001 + + PBT_APMQUERYSUSPENDFAILED 0x0002 + PBT_APMQUERYSTANDBYFAILED 0x0003 + + PBT_APMSUSPEND 0x0004 + PBT_APMSTANDBY 0x0005 + + PBT_APMRESUMECRITICAL 0x0006 + PBT_APMRESUMESUSPEND 0x0007 + PBT_APMRESUMESTANDBY 0x0008 + + PBTF_APMRESUMEFROMFAILURE 0x00000001 + + PBT_APMBATTERYLOW 0x0009 + PBT_APMPOWERSTATUSCHANGE 0x000A + + PBT_APMOEMEVENT 0x000B + PBT_APMRESUMEAUTOMATIC 0x0012 + + Source: http://weblogs.asp.net/ralfw/archive/2003/09/09/26908.aspx +*/ +func_WM_POWERBROADCAST(wParam, lParam) +{ + Global reg_root, reg_path, reg_key + + If (lParam = 0) { + ; PBT_APMSUSPEND or PBT_APMSTANDBY? -> System will sleep + If (wParam = 4 OR wParam = 5) { + ; Get mute state + SoundGet, muteState, MASTER, MUTE, 1 + + ; If sound was not already muted, we have to do it. Otherwise the user + ; himself had muted the speakers so we must not do anything. + If (muteState = "Off") { + ; Mute the speakers... + SoundSet, 1, MASTER, MUTE, 1 + ; ...and save the fact that WE have done that. This is necessary to + ; reset the previous state after resuming from suspend mode. + RegWrite, REG_DWORD, %reg_root%, %reg_path%, %reg_key%, 1 + } + } + + ; PBT_APMRESUMESUSPEND oder PBT_APMRESUMESTANDBY? -> System wakes up + If (wParam = 7 OR wParam = 8) { + ; Did WE mute the speakers before? + RegRead, muteState, %reg_root%, %reg_path%, %reg_key% + + ; If yes (muteState is 1), we have to switch on the speakers. + ; Otherwise we do nothing because it was the user who had muted the speakers. + If (muteState = "1") { + RegWrite, REG_DWORD, %reg_root%, %reg_path%, %reg_key%, 0 + SoundSet, 0, MASTER, MUTE, 1 + } + } + } + Return +} \ No newline at end of file diff --git a/lib-a_to_h/examples/AFC_Example-ManyControls.ahk b/lib-a_to_h/examples/AFC_Example-ManyControls.ahk index 457247c9..30cbff4b 100644 --- a/lib-a_to_h/examples/AFC_Example-ManyControls.ahk +++ b/lib-a_to_h/examples/AFC_Example-ManyControls.ahk @@ -1,11 +1,11 @@  -#include -#include -#include -#include -#include -#include -#include +#include %A_ScriptDir%\..\CCtrlButton.ahk +#include %A_ScriptDir%\..\CCtrlLabel.ahk +#include %A_ScriptDir%\..\CCtrlEdit.ahk +#include %A_ScriptDir%\..\CCtrlUpDown.ahk +#include %A_ScriptDir%\..\CCtrlListView.ahk +#include %A_ScriptDir%\..\CCtrlTreeView.ahk +#include %A_ScriptDir%\..\CCtrlStatusBar.ahk AFC_Entrypoint(MyWin) @@ -29,24 +29,24 @@ class MyWin extends CWindow lv := new CCtrlListView(this, "First column|Second column", "xs Section") lv.OnDoubleClick := this.lvDoubleClick lv.AddRow(["Hello", "world!"]) - + tv := new CCtrlTreeView(this, "r7") tv.OnDoubleClick := this.tvDoubleClick - + p1 := tv.AddNode("First parent") p1c1 := p1.AddNode("Parent 1's first child") p2 := tv.AddNode("Second parent") p2c1 := p2.AddNode("Parent 2's first child") p2c2 := p2.AddNode("Parent 2's second child") p2c2c1 := p2c2.AddNode("Parent 2's second child's first child") - + sb := new CCtrlStatusBar(this) sb.OnClick := this.sbClick sb.SetPartText("Ready.") - + this.Show() } - + ButtonClick(oCtrl) { this.OwnDialogs() @@ -56,13 +56,13 @@ class MyWin extends CWindow MsgBox, Hello, world!`n%text% this.editBox.Text .= "WORKS" } - + ShowOtherGUI() { this.loginform := new CLoginForm(this) this.loginform.OnEvent := this.EnteredNameAndPass } - + EnteredNameAndPass(name, pass) { this.OwnDialogs() @@ -72,7 +72,7 @@ class MyWin extends CWindow Pass: %pass% ) } - + lvDoubleClick(lv, row) { this.OwnDialogs() @@ -82,7 +82,7 @@ class MyWin extends CWindow lv.Item[row, 2] .= "EDITED" lv.AutoSizeCol() } - + tvDoubleClick(tv, node) { this.OwnDialogs() @@ -90,11 +90,11 @@ class MyWin extends CWindow for i,child in node t .= "[" i "]: " child.Text "`n" MsgBox % t - + node.Text .= "EDITED" node.Bold := !node.Bold } - + sbClick(sb) { this.OwnDialogs() @@ -118,7 +118,7 @@ class CLoginForm extends COwnedWindow but.OnEvent := this.ButtonOk this.Show() } - + ButtonOk() { name := this.ctrlName.Text @@ -132,7 +132,7 @@ class CLoginForm extends COwnedWindow this.Close() this.OnEvent.(this.owner, name, pass) } - + OnDestroy() { this.owner.SetOptions("-Disabled") diff --git a/lib-a_to_h/examples/align_demo.ahk b/lib-a_to_h/examples/align_demo.ahk index c373ed3f..2df15680 100644 --- a/lib-a_to_h/examples/align_demo.ahk +++ b/lib-a_to_h/examples/align_demo.ahk @@ -1,4 +1,4 @@ -; #Include Win.ahk +; #Include Win.ahk ; #Include Align.ahk #NoEnv SendMode Input @@ -17,7 +17,7 @@ Sleep, 1500 Align(h1, "L", 100) ;Align this control to the left edge of its parent, set width to 100, Align(h2, "T") ; then align this control to the top minus space taken from previous control, use its own height, Align(h3, "F") ; then set this control to fill remaining space. - + Align(hGui) ;Re-align hGui Return diff --git a/lib-a_to_h/file-open-utils.ahk b/lib-a_to_h/file-open-utils.ahk new file mode 100644 index 00000000..ccfe6377 --- /dev/null +++ b/lib-a_to_h/file-open-utils.ahk @@ -0,0 +1,221 @@ + +; File Open Utilities + +ResolveLnk(sTarget, byref sOutLnkParams:="") { + local ; -- + SplitPath, sTarget, , , OutExt + if (OutExt = "lnk") { + FileGetShortcut %sTarget%, sTarget, , sOutLnkParams + if (ErrorLevel) { + MsgBox 16, Error, %sTarget%`n`nLink could not be resolved. + return "" + } + } + return sTarget +} + +OpenWaitHwnd(sTarget, sParams:="", RunState:="", pTimeout:=4, sValidHwndPredicate:="IsValidWinTitleText") { + local ; -- + ; -- Find Exe -- + + sExe := sTarget + SplitPath, sTarget, , , OutExt + + if (OutExt = "lnk") { + FileGetShortcut %sTarget%, sTarget, , sLnkParams + if (ErrorLevel) { + MsgBox 16, Error, %sTarget%`n`nCould not be opened. + return 0 + } + if (sLnkParams) { + sParams = %sLnkParams% %sParams% + } + } + + if (not OutExt = "exe") { + sExe := FindExecutable(sTarget) + + if (not sExe) { + IfNotExist sTarget + { + MsgBox 16, Error, %sTarget%`n`nThe specified file was not found. + } else { + MsgBox 16, Error, %sTarget%`n`nCould not find the associated executable for the specified document. + } + return 0 + } else if (sParams) { + sParams = "%sTarget%" %sParams% + } else { + sParams = "%sTarget%" + } + } + + ; -- Begin Run -- + + sTargetWin = ahk_exe %sExe% + OldIDs := GetValidWinIDs(sTargetWin, sValidHwndPredicate) + + ; NOTE Not using `RunWait` here since some programs either doesn't respond + ; directly or doesn't respond instantly even after the program has started. + Run "%sExe%" %sParams%, , %RunState% + + Retries := pTimeout / 0.5 + FailInterval := 500 + + Loop %Retries% { + WinWait %sTargetWin%,, pTimeout + + if ErrorLevel ; Check for timeout + break + + TestIDs := GetValidWinIDs(sTargetWin, sValidHwndPredicate) + NewIDs := GetNewEntries(OldIDs, TestIDs) + ;MsgBox % GetWinTitleText("ahk_id " . FirstKey(NewIDs)) + ;MsgBox % EntriesToString(NewIDs) + + if (NewIDs.Length()) { + return FirstKey(NewIDs) + } + + Sleep FailInterval + } + + return 0 +} + +; Additional Utility Functions + +GetInternetShortcutUrl(sInternetShortcutFile) { + local ; -- + IniRead OutUrl, %sInternetShortcutFile%, InternetShortcut, Url, %A_Space% + Return OutUrl +} + +FindExecutable(sDocument, pMaxPathLen:=260) { + local ; -- + ; See, https://stackoverflow.com/a/9540278 + + VarSetCapacity(Ret, pMaxPathLen) + RetCode := DllCall("shell32.dll\FindExecutable", "Str", sDocument, "Str", "", "Str", Ret) + + if (RetCode > 32) { + Ret = %Ret% + return Ret + } + + ErrorLevel := RetCode + return "" +} + +GetWinTitleText(sWinTitle) { + local ; -- + WinGetTitle Out, %sWinTitle% + return Out +} + +IsValidWinTitleText(sWinTitle) { + local ; -- + WinGetTitle Out, %sWinTitle% + + ; Checks if invalid window. + ; Add more checks below. + if (not Out or Out ~= "Opening - (Excel|Word)") { + return "" + } + + return Out +} + +GetValidWinIDs(sWinTitle, sPredicate:="IsValidWinTitleText") { + local ; -- + WinGet FoundIDs, List, %sWinTitle% + IDMap := {} + i := 0 + Loop %FoundIDs% + { + FoundID := FoundIDs%A_Index% + if (%sPredicate%("ahk_id " . FoundID)) + IDMap[FoundID] := ++i + } + return IDMap +} + +; Utility Map Functions + +GetNewEntries(pTargetMap, pTestMap) { + local ; -- + Ret := {} + i := 0 + For k,v in pTestMap + if not pTargetMap[k] + Ret[k] := ++i + return Ret +} + +FirstKey(pMap) { + local ; -- + For i,v in pMap { + return i + } + return "" +} + +EntriesToString(pMap, sSep:="`n") { + local ; -- + Out := "" + For i,v in pMap + Out .= i . " := " . v . sSep + return Out +} + +GetExistingPath(pPath) { + Loop Files, %pPath%, DF + Return A_LoopFileLongPath +} + +GetAbsolutePath(pPath) { + local ; -- + ; From, https://www.autohotkey.com/boards/viewtopic.php?p=289536#p289536 + ; Also, https://www.autohotkey.com/docs/misc/LongPaths.htm#prefix + cc := DllCall("GetFullPathName", "str", pPath, "uint", 0, "ptr", 0, "ptr", 0, "uint") + VarSetCapacity(absPath, cc*(A_IsUnicode ? 2 : 1)) + DllCall("GetFullPathName", "str", pPath, "uint", cc, "str", absPath, "ptr", 0, "uint") + return absPath +} + +; Gets relative path, if possible. +GetRelativePath(pPath) { + return GetRelativePathTo(pPath, A_WorkingDir) +} + +; Gets relative path, if possible. +GetRelativePathTo(pPath, pFromDir) { + local ; -- + ; From, https://www.autohotkey.com/boards/viewtopic.php?p=217372#p217372 + static MAX_PATH := A_IsUnicode ? 520 : 260 ; Double for wide chars if non-ANSI + VarSetCapacity(relPath, MAX_PATH) + ; See, https://docs.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-pathrelativepathtoa + ; Restrictions: see, https://stackoverflow.com/q/58774168 + if (DllCall("Shlwapi.dll\PathRelativePathTo" + , "Str", relPath + , "Str", pFromDir, "UInt", 0x10 ; FILE_ATTRIBUTE_DIRECTORY + , "Str", pPath, "UInt", 0x10)) ; FILE_ATTRIBUTE_DIRECTORY also, so that "." is returned if same path + return SubStr(relPath, 1, 2) == ".\" ? SubStr(relPath, 3) : relPath + return pPath ; No possible relative path (e.g., already relative, different drive letter, etc.) +} + +; Gets relative path, if possible. +; +; Path normalization is performed before the +; relative path resolution process. +GetCanonRelativePath(pPath) { + return GetRelativePathTo(GetAbsolutePath(pPath), A_WorkingDir) +} + +; Gets relative path, if possible. +; +; Path normalization is performed before the +; relative path resolution process. +GetCanonRelativePathTo(pPath, pFromDir) { + return GetRelativePathTo(GetAbsolutePath(pPath), pFromDir) +} diff --git a/lib-a_to_h/internet.ahk b/lib-a_to_h/internet.ahk deleted file mode 100644 index dc8e0715..00000000 --- a/lib-a_to_h/internet.ahk +++ /dev/null @@ -1,114 +0,0 @@ -getIPInfo(getLoc:=True){ - - if getLoc { - webpage:=Download("https://www.whatismybrowser.com/detect/ip-address-location") - ; http://www.netikus.net/show_ip.html gives faster result, but no location - - start:=Instr(webpage, "
") ;Location - loc:=substr(webpage,start+19,Instr(webpage, "<",false,start+1)-start-19) - - start:=Instr(webpage, "

Your IP Address appears to be: ",start) ;IP - public_ip:=substr(webpage,start+42,Instr(webpage, "0 - title:= "Internet disconnected" , highlight:={1:True} - else if net.status=-1 AND old.status>=0 - title:="No Network Connection" , highlight:={0:True} - else if net.status=0 AND old.status=-1 - title:= "Network Connected" , highlight:={0:True} - else if net.status=1 AND old.status<=0 - title:= "Internet Connected" , highlight:={1:True} - else if net.status=1 AND old.status=2 - title:= "VPN disconnected" , highlight:={2:True} - else if net.status=2 AND old.status<=0 - title:= "Internet Connected (with VPN)", highlight:={1:True, 2:True} - else if net.status=2 AND old.status=1 - title:= "VPN Connected" , highlight:={2:True} - - current:=net, old:=net - } - if !title - title:="Internet Status" - if (current.status="") - msg:=["No Info"], color:=[False] - else{ - msg:= [ "Network = " (current.status=-1 ?"No" :"Yes" ) - , "Internet = " (current.status>0 ?"Yes" :"No" ) - , "VPN = " (current.status=2 ?"Yes" :"No" ) - , "Public IP = " (current.ipInfo.ip ?current.ipInfo.ip :"None") - , "IP Location = " (current.ipInfo.loc?current.ipInfo.loc :"?" ) - , "Local IP = " (current.ipInfo.ipl?current.ipInfo.ipl :"None") ] - - color:= [ current.status!=-1, current.status>0, current.status==2, current.ipInfo.ip, current.ipInfo.loc, current.ipInfo.ipl] - } - netNotifyShow(title,msg,color,highlight,life,refresh) - return current -} -netNotifyShow(title,msg,col,h,t,s){ - static netNotifyToast - , active_color:="0xffffff", inactive_color:="0x505050", active_hcolor:="0x107C10", inactive_hcolor:="0xFF1010" - if !netNotifyToast - netNotifyToast:=new toast({ life:0, title:{size:14,opt:"bold underline"}, message:{size:12}, margin:{x:20,y:20} }) - c:=[], o:=[] - for i,ci in col - c[i]:=ci?(h[i-1]?active_hcolor:active_color):(h[i-1]?inactive_hcolor:inactive_color) - for i,hi in h - o[i+1]:=hi?"bold":"" - - return netNotifyToast.show({ title:{text:title}, message:{text:msg,color:c,opt:o, life:t}, sound:s }) -} \ No newline at end of file diff --git a/lib-i_to_z/ImageList.ahk b/lib-i_to_z/ImageList.ahk new file mode 100644 index 00000000..b5d5e835 --- /dev/null +++ b/lib-i_to_z/ImageList.ahk @@ -0,0 +1,187 @@ +; Drugwash, February-August 2011 +; Set of ImageList functions that allow custom icon sizes +; Many thanks to SKAN for fixing bitmap stretch issue under XP + +; default: 16x16 ILC_COLOR24 ILC_MASK +; M=ILC_MASK P=ILC_PALETTE D=ILC_COLORDDB accepted colors: 4 8 16 24 32 + +ILC_Create(i, g="1", s="16x16", f="M24") +{ +if i<1 + return 0 +StringSplit, s, s, x +s2 := s2 ? s2 : s1 +c= +Loop, Parse, f + if A_LoopField is digit + c .= A_LoopField +StringReplace, f, f, c,, +m := c|(InStr(f, "M") ? 0x1 : 0)|(InStr(f, "P") ? 0x800 : 0)|(InStr(f, "D") ? 0xFE : 0) +return DllCall("ImageList_Create", "Int", s1, "Int", s2, "UInt", m, "Int", i, "Int", g) ; ILC_COLOR24 ILC_MASK +} + +ILC_List(cx, file, idx="100", cd="1") ; cd=color depth 32bit, set 0 for 24bit or lower +{ +mask := cd ? 0xFF000000 : 0xFFFFFFFF +Loop, %file% + if A_LoopFileExt in exe,dll + { + if !hInst := DllCall("GetModuleHandle", "Str", file) + hL := hInst := DllCall("LoadLibrary", "Str", file) + if idx is not integer + i := &idx + else i := idx + hIL := DllCall("ImageList_LoadImage", "UInt", hInst, "UInt", i, "Int", cx, "Int", 1, "UInt", mask, "UInt", 0, "UInt", 0x2000) + } + else if A_LoopFileExt in bmp + hIL := DllCall("ImageList_LoadImage", "UInt", 0, "Str", file, "Int", cx, "Int", 1, "UInt", mask, "UInt", 0, "UInt", 0x2010) +if (hInst && hL) + DllCall("FreeLibrary", "UInt", hInst) +return hIL +} + +ILC_FitBmp(hPic, hIL, idx="1") +{ +WinGetPos,,, W1, H1, ahk_id %hPic% +if (W1 && H1) + { + W := W1 + H := H1 + } +hBmp := ILC_ImageResize(hIL, idx, W "x" H) +hP := DllCall("SendMessage", "UInt", hPic, "UInt", 0x172, "UInt", 0, "UInt", hBmp) ; STM_SETIMAGE, IMAGE_BITMAP +return hBmp ; requires cleanup on exit! +} + +ILC_ImageResize(hIL, idx, sz="") +{ +DllCall("ImageList_GetIconSize", "UInt", hIL, "UIntP", bw, "UIntP", bh) +if !sz + { + s1 := bw + s2 := bh + } +else StringSplit, s, sz, x +hDC := DllCall("CreateCompatibleDC", "UInt", 0) +hBmp := DllCall("CreateBitmap" , "Int", bw, "Int", bh, "UInt", 1, "UInt", 0x18, "UInt", 0) ; 1color plane, 24bit +hBmp2 := DllCall("CopyImage", "UInt", hBmp, "UInt", 0, "Int", 0, "Int", 0, "UInt", 0x2004, "UInt") ; 0=IMAGE_BITMAP +DllCall("DeleteObject", "UInt", hBmp) +hBo := DllCall("SelectObject", "UInt", hDC, "UInt", hBmp2) +DllCall("ImageList_Draw", "UInt", hIL, "Int", idx-1, "UInt", hDC, "Int", 0, "Int", 0, "UInt", 0x0) ; ILD_NORMAL +DllCall("SelectObject", "UInt", hDC, "UInt", hBo) +DllCall("DeleteDC", "UInt", hDC) +hBmp := ResizeBmp(hBmp2, s1, s2) +DllCall("DeleteObject", "UInt", hBmp2) +return hBmp +} + +ResizeBmp(hBmp, w, h="") +{ +h := h ? h : w +if hBmp ; LR_CRATEDIBSECTION LR_COPYRETURNORG + return DllCall("CopyImage", "UInt", hBmp, "UInt", 0, "Int", w, "Int", h, "UInt", 0x2004, "UInt") ; 0=IMAGE_BITMAP +; requires cleanup on exit! +} + +; sz=individual image width, file=file path or ImageList handle +; res=resource index in file, cd=color depth (1-32bit, 0-lower) +GetBmp(idx, sz, ByRef file, res="", cd="1") +{ +if file is integer + hIL := file +else IfExist, %file% + { + if !hIL := ILC_List(sz, file, res, cd) + return 0 + file := hIL + } +else return 0 +return ILC_ImageResize(hIL, idx) +} + +GetPixelColor(hBmp, px, py) +{ +ofi := A_FormatInteger +SetFormat, Integer, H +hDC := DllCall("CreateCompatibleDC", "UInt", 0) +hBo := DllCall("SelectObject", "UInt", hDC, "UInt", hBmp) +sz := DllCall("GetPixel", "UInt", hDC, "Int", px, "Int", py, "UInt") +DllCall("SelectObject", "UInt", hDC, "UInt", hBo) +DllCall("DeleteDC", "UInt", hDC) +SetFormat, Integer, %ofi% +return sz +} + +SetBmp(hDest, hBmp) +{ +return DllCall("SendMessage", "UInt", hDest, "UInt", 0x172, "UInt", 0, "UInt", hBmp) ; STM_SETIMAGE, IMAGE_BITMAP +} + +ILC_Count(hwnd) +{ +if hwnd + return DllCall("ImageList_GetImageCount", "UInt", hwnd) +} + +ILC_Destroy(hwnd) +{ +return DllCall("ImageList_Destroy", "UInt", hwnd) +} + +; LR_CREATEDIBSECTION=0x2000 LR_LOADFROMFILE=0x10 LR_LOADTRANSPARENT=0x20 LR_SHARED=0x8000 +; IMAGE_BITMAP=0x0 IMAGE_ICON=0x1 IMAGE_CURSOR=0x2 +ILC_Add(hIL, icon, idx="1") +{ +Static it="BIC" +StringLeft, t, icon, 1 +StringTrimLeft, icon, icon, 1 +t := InStr(it, t)-1 +if t<0 OR hIL=0 + return 0 +hInst=0 +if icon is integer + hIcon := icon +else + { + Loop, %icon% + if A_LoopFileExt in exe,dll + { + if !hInst := DllCall("GetModuleHandle", "Str", icon) + hL := hInst := DllCall("LoadLibrary", "Str", icon) + flags=0x2000 + ; need to use MAKEINTRESOURCE here + if idx is not integer + i := &idx + else i := idx + hIcon := DllCall("LoadImage", "UInt", hInst, "UInt", i, "UInt", t, "Int", 0, "Int", 0, "UInt", flags) + } + else if A_LoopFileExt in bmp,ico,cur,ani + { + flags=0x2010 + hIcon := DllCall("LoadImage", "UInt", hInst, "Str", icon, "UInt", t, "Int", 0, "Int", 0, "UInt", flags) + } + else + { + i := idx + flags=0x8000 + hIcon := DllCall("LoadImage", "UInt", hInst, "UInt", i, "UInt", t, "Int", 0, "Int", 0, "UInt", flags) + } + } +if (hInst && hL) + DllCall("FreeLibrary", "UInt", hInst) +if t=0 + { + DllCall("ImageList_Add", "UInt", hIL, "UInt", hIcon, "UInt", 0) + DllCall("DeleteObject", "UInt", hIcon) + } +if t=1 + { + DllCall("ImageList_ReplaceIcon", "UInt", hIL, "UInt", -1, "UInt", hIcon) + DllCall("DestroyIcon", "UInt", hIcon) + } +if t=2 + { + DllCall("ImageList_ReplaceIcon", "UInt", hIL, "UInt", -1, "UInt", hIcon) + DllCall("DestroyCursor", "UInt", hIcon) + } +} diff --git a/lib-i_to_z/JSON_AHk_Parsing_for_ahk2.ahk b/lib-i_to_z/JSON_AHk_Parsing_for_ahk2.ahk new file mode 100644 index 00000000..06c800e0 --- /dev/null +++ b/lib-i_to_z/JSON_AHk_Parsing_for_ahk2.ahk @@ -0,0 +1,334 @@ +#Warn LocalSameAsGlobal, Off +/** + * Updated to work with AHK v2 by RogerWilcoNL + * + * Lib: JSON.ahk + * JSON lib for AutoHotkey. + * Version: + * v1.0.0 [2019/12/25] + * License: + * WTFPL [http wtfpl.net /] Broken Link for safety + * Based on code originaly from cocobelgica + * Requirements: + * Latest version of AutoHotkey (v2.0-a106+) + * Installation: + * Use #Include JSON.ahk or copy into a function library folder and then + * call Jxon_Load or Jxon_Dump + */ + +/** + * Function: Jxon_Dump + * Parses a JSON or AHK string into an AHK variant of any Typevalue + * Average performance about 5.5 MB/s (64-bit) + * Syntax: + * Str := Jxon_Dump(Var [, indent [, IsAhk [, Lvl]]] ) + * Parameter(s): + * Str String [retval] - resulting (formatted) string, JSON or Ahk format + * Var Variant [in] - JSON/Ahk formatted string depending on: + * Indent Str/Int [in, opt] - default is none, if Int each lvl has this many spaces extra, or + * indent string per level + * IsAhk Integer [in, opt] - false => standard JSON string (array, object, literals, numbers) + * - true(default) - expand with instance and Map, resp. '<:,>' and '(,,)' + * lvl Integer [in, opt] - starting level of indent (default=0) + */ + +/** + * Function: Jxon_Load + * Parses a JSON or AHK string into an AHK variant of any Typevalue + * Syntax: + * Variant := Jxon_Load(Src [, IsAhk[, exp]] ) + * Average performance about 1.9 MB/s (64-bit) + * Parameter(s): + * Variant Variant [retval] - resulting parse variable + * Src String [in, ByRef] - JSON/Ahk formatted string depending on: + * IsAhk Integer [in, opt] - false => standard JSON parsing (array, object, literals, numbers) + * - true(default) - expand with instance and Map, resp. '<:,>' and '(,,)' + * exp Array [in, opt] - for future expansions (not yet used) + */ +Jxon_Load(ByRef src, IsAhk:=true, args*){ + global Array, Class, Map, Object, jx + pos:=0, ch:="" + jx := {"IsAhk":IsAhk} + Ch := Next( Src, Pos ) + return DoVariant( Src, Pos, Ch) +} +DoVariant(ByRef Src, ByRef Pos, ByRef Ch){ + static null := "" + static q := "`"" + static Nbr := "0123456789-tfn" + static number := "number", integer := "integer", float := "float" + static sVarBeg := "[{<(", sVarEnd := "]}>)" + Var := null + switch Ch { + case "[" : Var := DoArray(Src, Pos, Ch) + case "{" : Var := DoObject(Src, Pos, Ch) + case "(" : Var := DoMap(Src, Pos, Ch) + case "<" : Var := DoInstance(Src, Pos, Ch) + case q : Var := DoLiteral(Src, Pos, Ch) + case "" : Error( Src, Pos, "Unexpected termination of input string" ) + default: + if InStr(Nbr, ch) + Var := DoNumber(Src, Pos, Ch) + else + Error( Src, Pos, "Expecting a variant or literal and not" ) + } + return Var +} + +Next( ByRef Src, ByRef pos ){ + while ( ( ch := SubStr(Src,++pos,1) ) > "") { + if !InStr(" `n`t`r", ch) + return ch + } + return ch +} + +DoArray(ByRef Src, ByRef pos, ByRef ch){ Var := [] + ch="[" ? ch := Next(Src, Pos) : Error( Src, Pos, "Expecting Array opening delimiter" ) + While not (ch="" || ch="]") { + Var.push(DoVariant(Src, Pos, Ch)) + ch="," ? ch:=Next(Src, Pos) : ch="]" ? tmp:=true : Error( Src, Pos, "Expecting Array item delimiter" ) + } + ch="]" ? ch:=Next(Src, Pos) : Error( Src, Pos, "Expecting Array closing delimiter" ) + return Var +} + +Class jxInst +{ +} +DoInstance(ByRef Src, ByRef pos, ByRef ch) +{ Var := jxInst.New() + ch="<" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Instance opening delimiter") + if ch != ">" { + jxKey := DoVariant(Src, Pos, Ch) + ch=":" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Instance key-value separator") + Var.%jxKey% := DoVariant(Src, Pos, Ch) + While not (ch="" or ch=">") { + ch="," ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Instance property delimiter") + jxKey := DoVariant(Src, Pos, Ch) + ch=":" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Instance key-value separator") + Var.%jxKey% := DoVariant(Src, Pos, Ch) + } + } + ch=">" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting instance closing delimiter") + return Var +} + +DoLiteral( ByRef Src, ByRef Pos, ByRef Ch ) +{ Static q := "`"" + Var := "" + i := pos + while i := InStr(Src, q,, i+1) + { + Var := StrReplace(SubStr(src, pos+1, i-pos-1), "\\", "\u005C") + if (SubStr(Var, -1) != "\") + break + } + if !i ? pos-- : 0 + Error( Src, Pos, "Unterminated string starting at" ) + + pos := i ; update pos + Ch := Next( Src, Pos:=i ) ; update pos and Ch + + Var := StrReplace(Var, "\/", "/") + , Var := StrReplace(Var, "\" q, q ) + , Var := StrReplace(Var, "\b", "`b") + , Var := StrReplace(Var, "\f", "`f") + , Var := StrReplace(Var, "\n", "`n") + , Var := StrReplace(Var, "\r", "`r") + , Var := StrReplace(Var, "\t", "`t") + + i := 0 + while i := InStr(Var, "\",, i+1) + { + if (SubStr(Var, i+1, 1) != "u") ? (pos -= StrLen(SubStr(Var, i)), next := "\") : 0 + Error( Src, Pos, "Invalid \escape" ) + ; \uXXXX - JSON unicode escape sequence + xxxx := Abs("0x" . SubStr(Var, i+2, 4)) + if (A_IsUnicode || xxxx < 0x100) + Var := SubStr(Var, 1, i-1) . Chr(xxxx) . SubStr(Var, i+6) + } + return Var +} + +DoMap(ByRef Src, ByRef pos, ByRef ch) +{ Var := Map.New() + ch="(" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Map opening delimiter") + if ch != ")" { + jxKey := DoVariant(Src, Pos, Ch) + ch="," ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Map key-value separator") + Var.%jxKey% := DoVariant(Src, Pos, Ch) + While not (ch="" or ch=")") { + ch="," ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Map item delimiter") + jxKey := DoVariant(Src, Pos, Ch) + ch="," ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Map key-value separator") + Var.%jxKey% := DoVariant(Src, Pos, Ch) + } + } + ch=")" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting instance closing delimiter") + return Var +} + +DoNumber(ByRef Src, ByRef pos, ByRef ch) +{ Static number := "number" + Var := SubStr(src, pos, i := RegExMatch(src, "S)[\]\}\>\),:\s]|$",, pos)-pos) + if Var is %number% + Var *= 1 + else if (Var = "true" || Var = "false") + Var := ( Var = "true" ? true : false ) + else if (Var = "null") + Var := null + else { + pos-- + Error( Src, Pos, "Invalid number" ) + } + pos += i-1 + Ch := Next( Src, Pos ) + return Var +} + +DoObject(ByRef Src, ByRef pos, ByRef ch) +{ Var := Object() + ch="{" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Object opening delimiter") + if ch != "}" { + jxKey := DoVariant(Src, Pos, Ch) + ch=":" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Object key-value separator") + Var.%jxKey% := DoVariant(Src, Pos, Ch) + While not (ch="" or ch="}") { + ch="," ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Object item delimiter") + jxKey := DoVariant(Src, Pos, Ch) + ch=":" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Object key-value separator") + Var.%jxKey% := DoVariant(Src, Pos, Ch) + } + } + ch="}" ? ch:=Next(Src, Pos) : Error(Src, Pos, "Expecting Object closing delimiter") + return Var +} + +Error(ByRef Src, ByRef Pos, Msg) +{ global jx + static Any := "[{(<:,>)}]`"0123456789-tfn" + Ptr := Pos + ch := SubStr( Src, Pos, 1 ) + tmp := SubStr( src, 1, pos ) + aE := StrSplit( tmp, "`n" ) + lin := aE.Length + Part := lin ? aE.Pop() : "" + if lin = 1 { + x := pos-20 + x := x<1 ? 1 : x + y := 40 + col := pos + } else { + col := StrLen(Part) + x := Instr(tmp, "`n",-(pos)) + 1 + y := Instr(src, "`n",, pos) + } + switch true { + case (!ch or col=0): Msg := Msg ? Msg : "Unexpected termination of input string" + case (!InStr(Any, ch)): Msg := Msg ? Msg : "Invalid character in input string" + default: Msg := Msg ? Msg : "Expecting " . (jx.IsAhk ? "AHK" : "JSON") + . " value (`"-string, number, [true, false, null] or variant)" + } + och := Ord(ch), ch := (och>31 && och<127 ? "'" ch "'" : "ASCII(" och ")") + Msg .= Format( " {}`nline {}, col {}, char {}`n{}", ch, lin, col, pos, Part ) +throw Exception(msg, -3, ch) +} + +Jxon_Dump(Var, indent:="", IsAhk:=true, lvl:=0) +{ static q:="`"", c:="," + if &Var = 5369863684 ;always the same on a 64 bit machine (test on 32?) + return "null" + if indent is "Number" { + i := Abs(Round(indent*1)), indent := "" + Loop i + indent .= A_Space + } + indt := "" + Loop (indent ? lvl : 0) + indt .= indent + indent ? (s:=" ",lf:="`n") : s:=lf:="" + Typ := Type(var) + Str := "" + switch Typ + { + case "integer": + return Var=true ? "true" : Var=false ? "false" : Var "" ;asume boolean + case "number", "float": + return var "" + case "string": + if var is "float" + return var + ; String (null -> not supported by AHK) + if var > "" { + str := StrReplace(var, "\", "\\") + , str := StrReplace(str, "/", "\/") + , str := StrReplace(str, q, "\" . q) + , str := StrReplace(str, "`b", "\b") + , str := StrReplace(str, "`f", "\f") + , str := StrReplace(str, "`n", "\n") + , str := StrReplace(str, "`r", "\r") + , str := StrReplace(str, "`t", "\t") + static needle := "S)[^\x20-\x7e]" + while RegExMatch(str, needle, m) + Str := StrReplace(str, m[0], Format("\u{:04X}", Ord(m[0]))) + } + return q . Str . q + case "Object": + L := ObjOwnPropCount(Var) + for key, Val in var.OwnProps() { + if IsObject(Key) || (Key == "") + throw Exception("Invalid object key.", -1, Key ? Format("", &var) : "") + Str .= ( indent ? lf . indt . s : s ) ; token + indent + . ( IsObject(Key) ? Jxon_Dump(Key, indent, IsAhk, lvl) : q . Key . q ) + . ( indent ? ": " : ":" ) ; token + padding + Str .= Jxon_Dump(Val, indent, IsAhk, lvl+1) ; value + s := c + } + return "{" . Str . (Str ? lf . indt : "") . "}" + case "Array": + L := Var.Length + for key, Val in var { + if IsObject(Key) || (Key == "") + throw Exception("Invalid array key.", -1, Key ? Format("", &var) : "") + Str .= ( indent ? lf . indt . s : s ) ; token + indent + . Jxon_Dump(Val, indent, IsAhk, lvl+1) ; value + s := c + } + return "[" . Str . (Str ? lf . indt : "") . "]" + case "Map": + L := Var.Count + aS := StrSplit( isAhk ? "(,)" : "{:}" ) + for key, Val in var { + if (Key == "") + throw Exception("Invalid Map key.", -1, Key ? Format("", &var) : "") + Str .= ( indent ? lf . indt . s : s ) ; token + indent + . ( IsObject(Key) ? Jxon_Dump(Key, , IsAhk, lvl) : q . Key . q ) + . aS[2] . ( indent ? " " : "" ) ; token + padding + Str .= Jxon_Dump(Val, indent, IsAhk, lvl+1) ; value + s := c + } + return aS[1] . Str . (Str ? lf . indt : "") . aS[3] + default: + if !IsObject(var) + throw Exception("Variant type not supported.", -1, Format("", &var)) + try + if Typ != var.__Class + x := 0/0 + catch + throw Exception("Invalid Class (" . typ . " / " . var.__Class . ").", -1, Key ? Format("", &var) : "") + L := ObjOwnPropCount(Var) + aS := StrSplit( isAhk ? "<:>" : "{:}" ) + for key, Val in var.OwnProps() { + if IsObject(Key) || (Key == "") + throw Exception("Invalid property.", -1, Key ? Format("", &var) : "") + Str .= ( indent ? lf . indt . s : s ) ; token + indent + . ( IsObject(Key) ? Jxon_Dump(Key) : q . Key . q ) + . ( indent ? ": " : ":" ) ; token + padding + Str .= Jxon_Dump(Val, indent, IsAhk, lvl+1) ; value + s := c + } + return aS[1] . Str . (Str ? lf . indt : "") . aS[3] + } + return Str +} diff --git a/lib-i_to_z/JSON_Build&Parse.ahk b/lib-i_to_z/JSON_Build&Parse.ahk new file mode 100644 index 00000000..c5c27ed7 --- /dev/null +++ b/lib-i_to_z/JSON_Build&Parse.ahk @@ -0,0 +1,104 @@ +; Credits: rbrtryn / http://www.autohotkey.com/board/topic/95262-obj-json-obj/ +/**************************************************************************************** + Function: BuildJson(obj) + Builds a JSON string from an AutoHotkey object + + Parameters: + obj - An AutoHotkey array or object, which can include nested objects. + + Remarks: + Originally Obj2Str() by Coco, + http://www.autohotkey.com/board/topic/93300-what-format-to-store-settings-in/page-2#entry588373 + + Modified to use double quotes instead of single quotes and to leave numeric values + unquoted. + + Returns: + The JSON string +*/ +BuildJson(obj) { + str := "" , array := true + for k in obj { + if (k == A_Index) + continue + array := false + break + } + for a, b in obj + str .= (array ? "" : """" a """: ") . (IsObject(b) ? BuildJson(b) : IsNumber(b) ? b : """" b """") . ", " + str := RTrim(str, " ,") + return (array ? "[" str "]" : "{" str "}") +} + +/**************************************************************************************** + Function: ParseJson(jsonStr) + Converts a JSON string into an AutoHotkey object + + Parameters: + jsonstr - the JSON string to convert + + Remarks: + Originally by Getfree, + http://www.autohotkey.com/board/topic/93300-what-format-to-store-settings-in/#entry588268 + + Returns: + The AutoHotkey object. +*/ +ParseJson(jsonStr) { + SC := ComObjCreate("ScriptControl") + SC.Language := "JScript" + ComObjError(false) + jsCode = + ( + function arrangeForAhkTraversing(obj){ + if(obj instanceof Array){ + for(var i=0 ; i 12) { + month := abs(12 - month) ; Convert it, and... + year += i ; ...add or subtract a year. + } + } + + if strLen(month) < 2 + month := "0" . month ; Keep month in MM format + + ; Return input date with modified year/month. + return year . month . SubStr(date, 7) +} diff --git a/lib-i_to_z/NumBase.ahk b/lib-i_to_z/NumBase.ahk new file mode 100644 index 00000000..98b849da --- /dev/null +++ b/lib-i_to_z/NumBase.ahk @@ -0,0 +1,38 @@ +; Any-base number conversion utilities +; +; Allows radix 2 to 62 +; +; Inspired from: +; - https://autohotkey.com/board/topic/15951-base-10-to-base-36-conversion/ +; - https://autohotkey.com/board/topic/39121-convert-from-base-10-to-base-n-and-back/ +; + +ToBase(n, b) { ; n >= 0, 1 < b <= 62 + If b not between 2 and 62 + Throw Exception("Base must be between 2 and 62, inclusive. Was " . b . " instead.") + + m := "" + Loop { + d := mod(n, b), n //= b + m := (d < 10 ? d : Chr(d < 36 ? d + 55 : d + 61)) . m + } Until n < 1 + + Return m +} + +FromBase(s, b) { ; convert base b number; s:=strings of 0..9,A..Z,a..z, to AHK number + If b not between 2 and 62 + Throw Exception("Base must be between 2 and 62, inclusive. Was " . b . " instead.") + If b <= 36 + StringUpper s, s + + d := 0, L := StrLen(s) + Loop % L { + c := Asc(ch := SubStr(s, A_Index, 1)) + If ch is not alnum + Throw Exception("Invalid number character: (0x" . ToBase(c, 16) . ") """ . ch . """") + d := d * b + (c > 57 ? (c > 90 ? c - 61 : c - 55) : c - 48) + } + + Return d +} diff --git a/lib-i_to_z/SendMessageList-Script.ahk b/lib-i_to_z/SendMessageList-Script.ahk new file mode 100644 index 00000000..485c96b6 --- /dev/null +++ b/lib-i_to_z/SendMessageList-Script.ahk @@ -0,0 +1,223 @@ +WM_NULL = 0x00 +WM_CREATE = 0x01 +WM_DESTROY = 0x02 +WM_MOVE = 0x03 +WM_SIZE = 0x05 +WM_ACTIVATE = 0x06 +WM_SETFOCUS = 0x07 +WM_KILLFOCUS = 0x08 +WM_ENABLE = 0x0A +WM_SETREDRAW = 0x0B +WM_SETTEXT = 0x0C +WM_GETTEXT = 0x0D +WM_GETTEXTLENGTH = 0x0E +WM_PAINT = 0x0F +WM_CLOSE = 0x10 +WM_QUERYENDSESSION = 0x11 +WM_QUIT = 0x12 +WM_QUERYOPEN = 0x13 +WM_ERASEBKGND = 0x14 +WM_SYSCOLORCHANGE = 0x15 +WM_ENDSESSION = 0x16 +WM_SYSTEMERROR = 0x17 +WM_SHOWWINDOW = 0x18 +WM_CTLCOLOR = 0x19 +WM_WININICHANGE = 0x1A +WM_SETTINGCHANGE = 0x1A +WM_DEVMODECHANGE = 0x1B +WM_ACTIVATEAPP = 0x1C +WM_FONTCHANGE = 0x1D +WM_TIMECHANGE = 0x1E +WM_CANCELMODE = 0x1F +WM_SETCURSOR = 0x20 +WM_MOUSEACTIVATE = 0x21 +WM_CHILDACTIVATE = 0x22 +WM_QUEUESYNC = 0x23 +WM_GETMINMAXINFO = 0x24 +WM_PAINTICON = 0x26 +WM_ICONERASEBKGND = 0x27 +WM_NEXTDLGCTL = 0x28 +WM_SPOOLERSTATUS = 0x2A +WM_DRAWITEM = 0x2B +WM_MEASUREITEM = 0x2C +WM_DELETEITEM = 0x2D +WM_VKEYTOITEM = 0x2E +WM_CHARTOITEM = 0x2F + +WM_SETFONT = 0x30 +WM_GETFONT = 0x31 +WM_SETHOTKEY = 0x32 +WM_GETHOTKEY = 0x33 +WM_QUERYDRAGICON = 0x37 +WM_COMPAREITEM = 0x39 +WM_COMPACTING = 0x41 +WM_WINDOWPOSCHANGING = 0x46 +WM_WINDOWPOSCHANGED = 0x47 +WM_POWER = 0x48 +WM_COPYDATA = 0x4A +WM_CANCELJOURNAL = 0x4B +WM_NOTIFY = 0x4E +WM_INPUTLANGCHANGEREQUEST = 0x50 +WM_INPUTLANGCHANGE = 0x51 +WM_TCARD = 0x52 +WM_HELP = 0x53 +WM_USERCHANGED = 0x54 +WM_NOTIFYFORMAT = 0x55 +WM_CONTEXTMENU = 0x7B +WM_STYLECHANGING = 0x7C +WM_STYLECHANGED = 0x7D +WM_DISPLAYCHANGE = 0x7E +WM_GETICON = 0x7F +WM_SETICON = 0x80 + +WM_NCCREATE = 0x81 +WM_NCDESTROY = 0x82 +WM_NCCALCSIZE = 0x83 +WM_NCHITTEST = 0x84 +WM_NCPAINT = 0x85 +WM_NCACTIVATE = 0x86 +WM_GETDLGCODE = 0x87 +WM_NCMOUSEMOVE = 0xA0 +WM_NCLBUTTONDOWN = 0xA1 +WM_NCLBUTTONUP = 0xA2 +WM_NCLBUTTONDBLCLK = 0xA3 +WM_NCRBUTTONDOWN = 0xA4 +WM_NCRBUTTONUP = 0xA5 +WM_NCRBUTTONDBLCLK = 0xA6 +WM_NCMBUTTONDOWN = 0xA7 +WM_NCMBUTTONUP = 0xA8 +WM_NCMBUTTONDBLCLK = 0xA9 + +WM_KEYFIRST = 0x100 +WM_KEYDOWN = 0x100 +WM_KEYUP = 0x101 +WM_CHAR = 0x102 +WM_DEADCHAR = 0x103 +WM_SYSKEYDOWN = 0x104 +WM_SYSKEYUP = 0x105 +WM_SYSCHAR = 0x106 +WM_SYSDEADCHAR = 0x107 +WM_KEYLAST = 0x108 + +WM_IME_STARTCOMPOSITION = 0x10D +WM_IME_ENDCOMPOSITION = 0x10E +WM_IME_COMPOSITION = 0x10F +WM_IME_KEYLAST = 0x10F + +WM_INITDIALOG = 0x110 +WM_COMMAND = 0x111 +WM_SYSCOMMAND = 0x112 +WM_TIMER = 0x113 +WM_HSCROLL = 0x114 +WM_VSCROLL = 0x115 +WM_INITMENU = 0x116 +WM_INITMENUPOPUP = 0x117 +WM_MENUSELECT = 0x11F +WM_MENUCHAR = 0x120 +WM_ENTERIDLE = 0x121 + +WM_CTLCOLORMSGBOX = 0x132 +WM_CTLCOLOREDIT = 0x133 +WM_CTLCOLORLISTBOX = 0x134 +WM_CTLCOLORBTN = 0x135 +WM_CTLCOLORDLG = 0x136 +WM_CTLCOLORSCROLLBAR = 0x137 +WM_CTLCOLORSTATIC = 0x138 + +WM_MOUSEFIRST = 0x200 +WM_MOUSEMOVE = 0x200 +WM_LBUTTONDOWN = 0x201 +WM_LBUTTONUP = 0x202 +WM_LBUTTONDBLCLK = 0x203 +WM_RBUTTONDOWN = 0x204 +WM_RBUTTONUP = 0x205 +WM_RBUTTONDBLCLK = 0x206 +WM_MBUTTONDOWN = 0x207 +WM_MBUTTONUP = 0x208 +WM_MBUTTONDBLCLK = 0x209 +WM_MOUSEWHEEL = 0x20A +WM_MOUSEHWHEEL = 0x20E + +WM_PARENTNOTIFY = 0x210 +WM_ENTERMENULOOP = 0x211 +WM_EXITMENULOOP = 0x212 +WM_NEXTMENU = 0x213 +WM_SIZING = 0x214 +WM_CAPTURECHANGED = 0x215 +WM_MOVING = 0x216 +WM_POWERBROADCAST = 0x218 +WM_DEVICECHANGE = 0x219 + +WM_MDICREATE = 0x220 +WM_MDIDESTROY = 0x221 +WM_MDIACTIVATE = 0x222 +WM_MDIRESTORE = 0x223 +WM_MDINEXT = 0x224 +WM_MDIMAXIMIZE = 0x225 +WM_MDITILE = 0x226 +WM_MDICASCADE = 0x227 +WM_MDIICONARRANGE = 0x228 +WM_MDIGETACTIVE = 0x229 +WM_MDISETMENU = 0x230 +WM_ENTERSIZEMOVE = 0x231 +WM_EXITSIZEMOVE = 0x232 +WM_DROPFILES = 0x233 +WM_MDIREFRESHMENU = 0x234 + +WM_IME_SETCONTEXT = 0x281 +WM_IME_NOTIFY = 0x282 +WM_IME_CONTROL = 0x283 +WM_IME_COMPOSITIONFULL = 0x284 +WM_IME_SELECT = 0x285 +WM_IME_CHAR = 0x286 +WM_IME_KEYDOWN = 0x290 +WM_IME_KEYUP = 0x291 + +WM_MOUSEHOVER = 0x2A1 +WM_NCMOUSELEAVE = 0x2A2 +WM_MOUSELEAVE = 0x2A3 + +WM_CUT = 0x300 +WM_COPY = 0x301 +WM_PASTE = 0x302 +WM_CLEAR = 0x303 +WM_UNDO = 0x304 + +WM_RENDERFORMAT = 0x305 +WM_RENDERALLFORMATS = 0x306 +WM_DESTROYCLIPBOARD = 0x307 +WM_DRAWCLIPBOARD = 0x308 +WM_PAINTCLIPBOARD = 0x309 +WM_VSCROLLCLIPBOARD = 0x30A +WM_SIZECLIPBOARD = 0x30B +WM_ASKCBFORMATNAME = 0x30C +WM_CHANGECBCHAIN = 0x30D +WM_HSCROLLCLIPBOARD = 0x30E +WM_QUERYNEWPALETTE = 0x30F +WM_PALETTEISCHANGING = 0x310 +WM_PALETTECHANGED = 0x311 + +WM_HOTKEY = 0x312 +WM_PRINT = 0x317 +WM_PRINTCLIENT = 0x318 + +WM_HANDHELDFIRST = 0x358 +WM_HANDHELDLAST = 0x35F +WM_PENWINFIRST = 0x380 +WM_PENWINLAST = 0x38F +WM_COALESCE_FIRST = 0x390 +WM_COALESCE_LAST = 0x39F +WM_DDE_FIRST = 0x3E0 +WM_DDE_INITIATE = 0x3E0 +WM_DDE_TERMINATE = 0x3E1 +WM_DDE_ADVISE = 0x3E2 +WM_DDE_UNADVISE = 0x3E3 +WM_DDE_ACK = 0x3E4 +WM_DDE_DATA = 0x3E5 +WM_DDE_REQUEST = 0x3E6 +WM_DDE_POKE = 0x3E7 +WM_DDE_EXECUTE = 0x3E8 +WM_DDE_LAST = 0x3E8 + +WM_USER = 0x400 +WM_APP = 0x8000 \ No newline at end of file diff --git a/lib-i_to_z/StaticVar.ahk b/lib-i_to_z/StaticVar.ahk new file mode 100644 index 00000000..a2fe821c --- /dev/null +++ b/lib-i_to_z/StaticVar.ahk @@ -0,0 +1,7 @@ +StaticVar(name,func){ + if (fun:=FindFunc(func))&&mVar:=(f:=Struct("ScriptStruct(Func)",fun)).mStaticVar + Loop f.mStaticVarCount + If (var:=mVar[A_Index]).mName = name + return var + return [] +} \ No newline at end of file diff --git a/lib-i_to_z/TabAlign.ahk b/lib-i_to_z/TabAlign.ahk index b3495cdb..4d9a3836 100644 --- a/lib-i_to_z/TabAlign.ahk +++ b/lib-i_to_z/TabAlign.ahk @@ -1,4 +1,4 @@ -; DESCRIPTION: Aligns tabs from input data into human-readable aligned columns. +; DESCRIPTION: Aligns tabs from input data into human-readable aligned columns. ; Found at: http://www.autohotkey.com/board/topic/123117-tabalign-tab-align-columnar-data/ ; Which is an improvement of: http://www.autohotkey.com/board/topic/74885-tabalign-function-to-tab-align-columnar-data/ ; 09/15/2015 05:55:15 PM @@ -19,7 +19,7 @@ TabAlign(data) { res .= RTrim(NewLine, "`t") . "`r`n", NewLine := "" ; append to result } return RTrim(res, "`r`n") -} +} tabs(n) { loop, % n diff --git a/lib-i_to_z/TreeView.ahk b/lib-i_to_z/TreeView.ahk index 4da1393c..12c0b0b6 100644 --- a/lib-i_to_z/TreeView.ahk +++ b/lib-i_to_z/TreeView.ahk @@ -1,4 +1,13 @@ -/* +; I THINK THIS FILE IS WRITTEN BY: +; Flipeador - uno de nuestros mejores programadores ingeniosos y miembros dedicados del foro +; one of our best ingenious programmers and dedicated forum members +; +; y sí, el español es un idioma excelente! +; Pero con demasiada frecuencia los 132 idiomas que hablo se mezclan con fluidez, y luego ya no entiendo nada. +; ¡Es por eso que usé Google y traduje las letras al inglés, dejando los originales en español! +; ¡Creo que no solo me siento así! ¡Por eso Flipeador no estaría tan enojado conmigo! + +/* Elimina el elemento especificado junto con todos sus subelementos. Parámetros: TV : El objeto control TreeView. @@ -6,6 +15,14 @@ Childs: Si este valor es 1, solo se eliminan todos los subelementos del elemento especificado. Return: Si tuvo éxito devuelve 1, caso contrario devuelve 0. Si Childs es TRUE y no hay sub-elementos para eliminar, devuelve -1. + ---------------------------------------------------------------------------------------------------------------------------------------- + Deletes the specified item along with all its sub-elements. +     Parameters: +         TV: The TreeView control object. +         ItemID: The identifier of the item to be deleted. If this value is -65536, all the elements are eliminated (it is recommended to use TV_DeleteAll). +         Childs: If this value is 1, only all sub-elements of the specified element are removed. +     Return: +         If it succeeds, it returns 1, otherwise it returns 0. If Childs is TRUE and there are no sub-elements to eliminate, it returns -1. */ TV_Delete(TV, ItemID, Childs := FALSE){ If (Childs) @@ -34,6 +51,12 @@ TV_Delete(TV, ItemID, Childs := FALSE){ TV: El objeto control TreeView. Return: Si tuvo éxito devuelve 1, caso contrario devuelve 0. + ---------------------------------------------------------------------------------------------------------------------------------------- + Remove all items in the specified TreeView control. +     Parameters: +         TV: The TreeView control object. +     Return: +         If successful, return 1, otherwise return 0. */ TV_DeleteAll(TV){ Local Styles := WinGetStyle('ahk_id' . TV.Hwnd) @@ -51,6 +74,12 @@ TV_DeleteAll(TV){ TV: El objeto control TreeView. Return: Devuelve el identificador del elemento actual seleccionado, o cero si no hay ningún elemento seleccionado. + ---------------------------------------------------------------------------------------------------------------------------------------- + Retrieves the currently selected item in the specified TreeView control. +     Parameters: +         TV: The TreeView control object. +     Return: +         Returns the identifier of the current selected item, or zero if no item is selected. */ TV_GetSelection(TV){ ; TVM_GETNEXTITEM message | TVGN_CARET = 9 @@ -65,6 +94,13 @@ TV_GetSelection(TV){ ItemID: El elemento primario. Return: Devuelve el identificador del primer elemento secundario, o cero si no se ha encontrado ningún elemento secundario. + ---------------------------------------------------------------------------------------------------------------------------------------- + Retrieves the first child of the specified element. +     Parameters: +         TV: The TreeView control object. +         ItemID: The primary element. +     Return: +         Returns the identifier of the first child element, or zero if no child element was found. */ TV_GetChild(TV, ItemID){ ; TVM_GETNEXTITEM message | TVGN_CHILD = 4 @@ -79,6 +115,13 @@ TV_GetChild(TV, ItemID){ ItemID: El elemento secundario. Return: Devuelve el identificador del elemento padre, o cero si el elemento especificado no tiene un elemento padre. + ---------------------------------------------------------------------------------------------------------------------------------------- + Retrieves the parent element of the specified child element. +     Parameters: +         TV: The TreeView control object. +         ItemID: The secondary element. +     Return: +         Returns the identifier of the parent element, or zero if the specified element does not have a parent element. */ TV_GetParent(TV, ItemID){ ; TVM_GETNEXTITEM message | TVGN_PARENT = 3 @@ -93,6 +136,13 @@ TV_GetParent(TV, ItemID){ ItemID: El identificador del elemento. Return: Devuelve el identificador del elemento hermano anterior, o cero si el elemento especificado no tiene un elemento hermano anterior. + ---------------------------------------------------------------------------------------------------------------------------------------- + Retrieves the previous sister element of the specified element. +     Parameters: +         TV: The TreeView control object. +         ItemID: The identifier of the element. +     Return: +         Returns the identifier of the previous sibling element, or zero if the specified element does not have a previous sibling element. */ TV_GetPrev(TV, ItemID, Visible := FALSE){ ; TVM_GETNEXTITEM message | TVGN_PREVIOUS = 2 | TVGN_PREVIOUSVISIBLE = 7 diff --git a/lib-i_to_z/UxTheme.ahk b/lib-i_to_z/UxTheme.ahk new file mode 100644 index 00000000..e295b392 --- /dev/null +++ b/lib-i_to_z/UxTheme.ahk @@ -0,0 +1,350 @@ +; ================================================================================================================================================== ; +; ************************************************************************************************************************************************** ; +; +; UX_THEME / VISUAL STYLE / AEROWIZARD +; +; Author: MIAMIGUY | CHESHIRECAT +; Developed: 04/27/2008 - 11/13/2019 +; Function: Colection of UxTheme API function wrappers for use with AHK in Windows Vista/7+ +; Tested with: AHK 1.1.20.00+ (A32/U32) +; Tested On: Win Vista | Win 7 | Win 10 +; Org. Forum: https://autohotkey.com/board/topic/28522-help-with-extending-client-area-in-vista-gui/ +; +; Changes: +; 0.1.00.00/2019-11-13 - initial release +; ************************************************************************************************************************************************** ; +; +; THIS CODE AND/OR INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +; INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +; IN NO EVENT WILL THE AUTHOR BE HELD LIABLE FOR ANY DAMAGES ARISING FROM THE USE OR MISUSE OF THIS SOFTWARE. +; +; ================================================================================================================================================== ; +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_Init() { + + vOS := (StrSplit(A_OSVersion, ".")[1] = 10 ? "WIN_10" : A_OSVersion) + + if (vOS=="WIN_VISTA"||vOS=="WIN_7"||vOS=="WIN_8"||vOS=="WIN_8.1"||vOS=="WIN_10") + { + cchMaxNameChars := VarSetCapacity(pszThemeFileName,(260<<1), 0) + cchMaxColorChars := VarSetCapacity(pszColorBuff ,(20<<1) , 0) + cchMaxSizeChars := VarSetCapacity(pszSizeBuff ,(20<<1) , 0) + + UxTheme_GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars) + + uxPath := StrGet(&pszThemeFileName, cchMaxNameChars, "UTF-16") + uxColor := StrGet(&pszColorBuff, cchMaxColorChars, "UTF-16") + uxSize := StrGet(&pszSizeBuff , cchMaxSizeChars , "UTF-16") + + SplitPath, uxPath, fname, fdir, fext, fnNoX, fdrive + + if ! (hModule_DWM := DllCall("GetModuleHandle", "Str", "dwmapi")) + hModule_DWM := DllCall("LoadLibrary", "Str", "dwmapi") + + if ! (hModule_UxT := DllCall("GetModuleHandle", "Str", "UxTheme")) + hModule_UxT := DllCall("LoadLibrary", "Str", "UxTheme") + + if ! (uxPath && hModule_DWM && hModule_UxT && UxTheme_IsThemeActive()) + Return False + else + Return {uxPath: uxPath, fname: fname, fdir: fdir, fext: fext, fnNoX: fnNoX, fdrive: fdrive, uxColor: uxColor, uxSize: uxSize} + } +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetCurrentThemeName(ByRef pszThemeFileName, cchMaxNameChars, ByRef pszColorBuff, cchMaxColorChars, ByRef pszSizeBuff, cchMaxSizeChars) { + + Return DllCall("UxTheme.dll\GetCurrentThemeName", "Ptr", &pszThemeFileName, "Int", cchMaxNameChars + , "Ptr", &pszColorBuff, "Int", cchMaxColorChars, "Ptr", &pszSizeBuff, "Int", cchMaxSizeChars) +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_SetThemeAppProperties(dwFlags) { + + Return DllCall("UxTheme\SetThemeAppProperties", "uInt", dwFlags) +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_OpenThemeData(hWnd, pszClassIdList) { + + Return DllCall("UxTheme\OpenThemeData", "Ptr", hWnd, "wStr", pszClassIdList) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_OpenThemeDataEx(hWnd, pszClassIdList, dwFlags) { + + Return DllCall("UxTheme\OpenThemeDataEx", "Ptr", hWnd, "uInt", pszClassIdList, "uInt", dwFlags) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_CloseThemeData(hTheme) { + + Return DllCall("UxTheme\CloseThemeData", "Ptr" hTheme) +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_SetWindowTheme(hWnd, pszSubAppName="", pszSubIdList="") { + + Return DllCall("UxTheme\SetWindowTheme", "Ptr", hWnd, "wStr", pszSubAppName, "wStr", pszSubIdList) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetWindowTheme(hWnd) { + + Return DllCall("UxTheme\GetWindowTheme", "Ptr", hWnd) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemeSysColor(hTheme, iColorID) { + + Return DllCall("UxTheme\GetThemeSysColor", "Ptr", hTheme, "Int", iColorID) +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemePartsize(hTheme, hDC, iPartId, iStateId, prc, arg6, ByRef psz) { + + Return DllCall("UxTheme\GetThemePartsize", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "Ptr", prc, "Int", arg6, "uInt*", psz) +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemeSysColorBrush(hTheme, iColorID) { + + Return DllCall("UxTheme\GetThemeSysColorBrush", "Ptr", hTheme, "Int", iColorID, "uInt") +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemeColor(hTheme, iPartId, iStateId, iPropId, ByRef pColor) { + + Return DllCall("UxTheme.dll\GetThemeColor", "Ptr", hTheme, "Int", iPartId, "Int", iStateId, "Int", iPropId, "uInt*", pColor) +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemeTextExtent(hTheme, hDC, iPartId, iStateId, pszText, iCharCount, dwTextFlags, pBoundingRect, ByRef pExtentRect) { + + Return DllCall("uxtheme\GetThemeTextExtent", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "wStr", pszText, "Int", iCharCount + , "uInt", dwTextFlags, "Ptr", pBoundingRect, "Ptr", pExtentRect) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemeSysFont(hTheme, iFontId, ByRef LOGFONT) { + + Return DllCall("uxtheme\GetThemeSysFont", "Ptr", hTheme, "Int", iFontId, "Ptr", LOGFONT) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemeFont(hTheme, hDC, iPartId, iStateId, iPropId, ByRef LOGFONT) { + + Return DllCall("uxtheme\GetThemeFont", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "Int", iPropId, "Ptr", LOGFONT) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_SetWindowThemeAttribute(hWnd, eAttribute, pvAttribute, cbAttribute) { + + Return DllCall("UxTheme\SetWindowThemeAttribute", "Ptr", hWnd, "uInt", eAttribute, "Ptr", pvAttribute, "uInt", cbAttribute) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_DrawThemeText(hTheme, hDC, iPartId, iStateId, pszText, iCharCount, dwFlags, dwTextFlags2, pRect) { + + Return DllCall("UxTheme\DrawThemeText", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "wStr", pszText, "Int", iCharCount + , "uInt", dwFlags, "uInt", dwTextFlags2, "Ptr", pRect) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_DrawThemeTextEx(hTheme, hDC, iPartId, iStateId, pszText, iCharCount, dwFlags, pRect, pOptions) { + + Return DllCall("UxTheme\DrawThemeTextEx", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "wStr", pszText, "Int", iCharCount + , "uInt", dwFlags, "Ptr", pRect, "Ptr", pOptions) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_DrawThemeBackground(hTheme, hDC, iPartId, iStateId, pRect, pClipRect) { + + Return DllCall("uxtheme\DrawThemeBackground", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "Ptr", pRect, "Ptr", pClipRect) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_DrawThemeBackgroundEx(hTheme, hDC, iPartId, iStateId, pRect, pOptions) { + + Return DllCall("uxtheme\DrawThemeBackground", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "Ptr", pRect, "Ptr", pOptions) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_DrawThemeParentBackground(hWnd, hDC, pRect) { + + Return DllCall("uxtheme\DrawThemeParentBackground", "Ptr", hWnd, "Ptr", hDC, "Ptr", pRect) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_DrawThemeParentBackgroundEx(hWnd, hDC, dwFlags, pRect) { + + Return DllCall("uxtheme\DrawThemeParentBackground", "Ptr", hWnd, "Ptr", hDC, "uInt", dwFlags, "Ptr", pRect) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_DrawThemeIcon(hTheme, hDC, iPartId, iStateId, pRect, himl, imageIndex) { + + Return DllCall("uxtheme\DrawThemeIcon", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "Ptr", pRect, "Ptr", himl, "Int", imageIndex) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_BufferedPaintInit() { + + Return DllCall("uxtheme\BufferedPaintInit", "uInt", "") + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_BufferedPaintUnInit() { + + Return DllCall("uxtheme\BufferedPaintUnInit", "uInt", "") + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_BeginBufferedPaint(hdcTarget, prcTarget, dwFormat, pPaintParams, ByRef phdc) { + + Return DllCall("uxtheme\BeginBufferedPaint", "Ptr", hdcTarget, "Ptr", prcTarget, "uInt", dwFormat, "Ptr", pPaintParams, "uInt*", phdc) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_EndBufferedPaint(hBufferedPaint, fUpdateTarget) { + + Return DllCall("uxtheme\EndBufferedPaint", "Ptr", hBufferedPaint, "Int", fUpdateTarget) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_BufferedPaintSetAlpha(hBufferedPaint, prc, alpha) { + + Return DllCall("uxtheme\BufferedPaintSetAlpha", "Ptr", hBufferedPaint, "Ptr", prc, "Int", alpha) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemeBackgroundContentRect(hTheme, hDC, iPartId, iStateId, pBoundingRect, ByRef pContentRect) { + + Return DllCall("uxtheme\GetThemeBackgroundContentRect", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "Ptr", pBoundingRect, "Ptr", pContentRect) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemeRect(hTheme, iPartId, iStateId, iPropId, ByRef pRect) { + + Return DllCall("uxtheme\GetThemeRect", "Ptr", hTheme, "Int", iPartId, "Int", iStateId, "Int", iPropId, "Ptr", pRect) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_GetThemeBackgroundExtent(hTheme, hDC, iPartId, iStateId, pContentRect, ByRef pExtentRect) { + + Return DllCall("uxtheme\GetThemeBackgroundExtent", "Ptr", hTheme, "Ptr", hDC + , "Int", iPartId, "Int", iStateId, "Ptr", pContentRect, "Ptr", pExtentRect) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_IsThemeActive() { + + Return DllCall("UxTheme\IsThemeActive", "uInt", "") + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_IsCompositionActive() { + + Return DllCall("UxTheme\IsCompositionActive", "uInt", "") + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_IsAppThemed() { + + Return DllCall("UxTheme\IsAppThemed", "uInt", "") + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_IsThemeDialogTextureEnabled(hWnd) { + + Return DllCall("UxTheme\IsThemeDialogTextureEnabled", "Ptr", hWnd) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_IsThemeBackgroundPartiallyTransparent(hTheme, iPartId, iStateId) { + + Return DllCall("UxTheme\IsThemeBackgroundPartiallyTransparent","Ptr", hTheme, "Int", iPartId, "Int", iStateId) + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; + +UxTheme_EnableThemeDialogTexture(hWnd, dwFlags) { + + Return DllCall("UxTheme\EnableThemeDialogTexture", "Ptr", hWnd, "uInt", "dwFlags") + +} + +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; \ No newline at end of file diff --git a/lib-i_to_z/VerticalTextAlign.ahk b/lib-i_to_z/VerticalTextAlign.ahk index 0283f446..63bc6839 100644 --- a/lib-i_to_z/VerticalTextAlign.ahk +++ b/lib-i_to_z/VerticalTextAlign.ahk @@ -1,5 +1,4 @@ -VerticalTextAlign(ByRef fnSqlText) -{ +VerticalTextAlign(ByRef fnSqlText) { ; aligns text vertically on spaces ; MsgBox fnSqlText: %fnSqlText% @@ -12,32 +11,27 @@ VerticalTextAlign(ByRef fnSqlText) ; set default return value ReturnValue := 0 ; success - ; validate parameters If !fnSqlText Throw, Exception("fnSqlText was empty") - ; initialise variables BatchLines := A_BatchLines - ; set this thread for max speed SetBatchLines, -1 - ; remove trailing CR LF characters StringRight, TrailingLF, fnSqlText, 2 If (TrailingLF = "`r`n") StringTrimRight, fnSqlText, fnSqlText, 2 - ; find first space position of each line, and max value for all lines MaxFirstSpace := 0 Loop, Parse, fnSqlText, `n, `r ; parse line by line { ThisLine := A_LoopField - + ; add placeholders for case statements If RegExMatch(ThisLine,"CASE.*WHEN.*THEN.*END") { @@ -48,19 +42,13 @@ VerticalTextAlign(ByRef fnSqlText) StringR := SubStr(ThisLine,LastEndPosn+3) ThisLine := StringL StrReplace(StringM,A_Space,"") StringR ; add placeholders for spaces } - + StringReplace, ThisLine, ThisLine, % "'" A_Space A_Space "'", % "''", All ; replace quoted double space (temp workaround) - ThisLine := RegExReplace(ThisLine,"[ \t]+"," ") ; remove multiple white space - ThisFirstSpace := InStr(ThisLine,A_Space,,,1) ; find position of first space - ThisFirstSpace := ThisFirstSpace ? ThisFirstSpace : StrLen(ThisLine)+1 ; if no spaces in string, first character after end of string - MaxFirstSpace := ThisFirstSpace > MaxFirstSpace ? ThisFirstSpace : MaxFirstSpace ; get max position of first space - StringReplace, ThisLine, ThisLine, % "''", % "'" A_Space A_Space "'", All ; restore quoted double space (temp workaround) - LineCount := A_Index ; count number of loops LineOriginal%A_Index% := ThisLine FirstSpace%A_Index% := ThisFirstSpace @@ -71,12 +59,12 @@ VerticalTextAlign(ByRef fnSqlText) Loop, %LineCount% { ThisFirstSpace := FirstSpace%A_Index% - + SpacesForReplace := StrReplicate(A_Space,MaxFirstSpace-ThisFirstSpace+1) StringReplace, ThisLineSpaced, LineOriginal%A_Index%, %A_Space%, %SpacesForReplace%, 0 ; replace the first space with enough to make the same as max spaces StringReplace, ThisLineSpaced, ThisLineSpaced, , %A_Space%, All ; replace placeholders - + ; align NULLs against NOT NULLs StringReplace, ThisLineSpaced, ThisLineSpaced, datetime, datextime, all ; workaround because RegEx does not seem to like the string "datetime" ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( (big|small|tiny)?int )(\s+)?(NULL)", "$1$3 $4") ; bigint,int,smallint,tinyint @@ -85,7 +73,7 @@ VerticalTextAlign(ByRef fnSqlText) ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( n?(var)?char([(](\d*|max)[)])? )(\s+)?(NULL)", "$1$5 $6") ; char,nchar,nvarchar,varchar ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( date )(\s+)?(NULL)", "$1$2 $3") ; date ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( time )(\s+)?(NULL)", "$1$2 $3") ; time - ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( timestamp )(\s+)?(NULL)", "$1$2 $3") ; timestamp + ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( timestamp )(\s+)?(NULL)", "$1$2 $3") ; timestamp ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( smalldatextime )(\s+)?(NULL)", "$1$2 $3") ; smalldatetime ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( datextime(2|offset)?([(]\d*[)])? )(\s+)?(NULL)", "$1$4 $5") ; datetime,datetime2,datetimeoffset ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( geo(graph|metr)y )(\s+)?(NULL)", "$1$3 $4") ; geography,geometry @@ -95,17 +83,17 @@ VerticalTextAlign(ByRef fnSqlText) ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( float([(]\d*[,]\d*[)])? )(\s+)?(NULL)", "$1$3 $4") ; float ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( numeric([(]\d*[,]\d*[)])? )(\s+)?(NULL)", "$1$3 $4") ; numeric ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( real([(]\d*[,]\d*[)])? )(\s+)?(NULL)", "$1$3 $4") ; real - ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( hierarchyid )(\s+)?(NULL)", "$1$2 $3") ; hierarchyid - ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( image )(\s+)?(NULL)", "$1$2 $3") ; image - ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( sql_variant )(\s+)?(NULL)", "$1$2 $3") ; sql_variant - ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( sysname )(\s+)?(NULL)", "$1$2 $3") ; sysname + ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( hierarchyid )(\s+)?(NULL)", "$1$2 $3") ; hierarchyid + ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( image )(\s+)?(NULL)", "$1$2 $3") ; image + ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( sql_variant )(\s+)?(NULL)", "$1$2 $3") ; sql_variant + ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( sysname )(\s+)?(NULL)", "$1$2 $3") ; sysname ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( uniqueidentifier )(\s+)?(NULL)", "$1$2 $3") ; uniqueidentifier - ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( xml )(\s+)?(NULL)", "$1$2 $3") ; xml + ThisLineSpaced := RegExReplace(ThisLineSpaced, "xiS)^( xml )(\s+)?(NULL)", "$1$2 $3") ; xml StringReplace, ThisLineSpaced, ThisLineSpaced, datextime, datetime, all ; workaround - - StringReplace, ThisLineSpaced, ThisLineSpaced, +, {+}, All - StringReplace, ThisLineSpaced, ThisLineSpaced, #, {#}, All - + + StringReplace, ThisLineSpaced, ThisLineSpaced, +, {+}, All + StringReplace, ThisLineSpaced, ThisLineSpaced, #, {#}, All + LineSpaced%A_Index% := ThisLineSpaced } @@ -129,7 +117,7 @@ VerticalTextAlign(ByRef fnSqlText) ErrorMessage := ThrownValue.Message, ErrorWhat := ThrownValue.What, ErrorExtra := ThrownValue.Extra, ErrorFile := ThrownValue.File, ErrorLine := ThrownValue.Line RethrowMessage := "Error at line " ErrorLine " of " ErrorWhat (ErrorMessage ? ": `n`n" ErrorMessage : "") (ErrorExtra ? "`n" ErrorExtra : "") ; (ErrorFile ? "`n`n" ErrorFile : "") - + ; set return value ReturnValue := !ReturnValue @@ -155,7 +143,7 @@ VerticalTextAlign(ByRef fnSqlText) /* ; testing -SqlText = +SqlText = ( configuration_id AS configuration_id [name] AS name diff --git a/lib-i_to_z/WindowFilter.ahk b/lib-i_to_z/WindowFilter.ahk new file mode 100644 index 00000000..e8b26fe4 --- /dev/null +++ b/lib-i_to_z/WindowFilter.ahk @@ -0,0 +1,144 @@ +;Generic Window Filter +WindowFilter_Init(WindowFilter){ + WindowFilter.WindowMatchType := "Program" + WindowFilter.WindowFilter := "" +} + +WindowFilter_ReadXML(WindowFilterObject, XMLWindowFilter){ + WindowFilterObject.WindowMatchType :=XMLWindowFilter.WindowMatchType + WindowFilterObject.WindowFilter := XMLWindowFilter.WindowFilter +} + +;Get a matching window handle from a WindowFilter object +WindowFilter_Get(WindowFilter){ + DetectHiddenWindows, On + if(WindowFilter.WindowMatchType = "Program") + { + d = `n ; string separator + s := 4096 ; size of buffers and arrays (4 KB) + + Process, Exist ; sets ErrorLevel to the PID of this running script + ; Get the handle of this script with PROCESS_QUERY_INFORMATION (0x0400) + h := DllCall("OpenProcess", "UInt", 0x0400, "Int", false, "UInt", ErrorLevel) + ; Open an adjustable access token with this process (TOKEN_ADJUST_PRIVILEGES = 32) + DllCall("Advapi32.dll\OpenProcessToken", "UInt", h, "UInt", 32, "UIntP", t) + VarSetCapacity(ti, 16, 0) ; structure of privileges + NumPut(1, ti, 0) ; one entry in the privileges array... + ; Retrieves the locally unique identifier of the debug privilege: + DllCall("Advapi32.dll\LookupPrivilegeValueA", "UInt", 0, "Str", "SeDebugPrivilege", "Int64P", luid) + NumPut(luid, ti, 4, "int64") + NumPut(2, ti, 12) ; enable this privilege: SE_PRIVILEGE_ENABLED = 2 + ; Update the privileges of this process with the new access token: + DllCall("Advapi32.dll\AdjustTokenPrivileges", "UInt", t, "Int", false, "UInt", &ti, "UInt", 0, "UInt", 0, "UInt", 0) + DllCall("CloseHandle", "UInt", h) ; close this process handle to save memory + + hModule := DllCall("LoadLibrary", "Str", "Psapi.dll") ; increase performance by preloading the libaray + s := VarSetCapacity(a, s) ; an array that receives the list of process identifiers: + c := 0 ; counter for process idendifiers + DllCall("Psapi.dll\EnumProcesses", "UInt", &a, "UInt", s, "UIntP", r) + Loop, % r // 4 ; parse array for identifiers as DWORDs (32 bits): + { + id := NumGet(a, A_Index * 4) + ; Open process with: PROCESS_VM_READ (0x0010) | PROCESS_QUERY_INFORMATION (0x0400) + h := DllCall("OpenProcess", "UInt", 0x0010 | 0x0400, "Int", false, "UInt", id) + VarSetCapacity(n, s, 0) ; a buffer that receives the base name of the module: + e := DllCall("Psapi.dll\GetModuleBaseNameA", "UInt", h, "UInt", 0, "Str", n, "UInt", s) + DllCall("CloseHandle", "UInt", h) ; close process handle to save memory + if (n && e) ; if image is not null add to list: + { + if(n = WindowFilter.WindowFilter && hwnd:=WinExist("ahk_pid " id)) + return hwnd + } + } + DllCall("FreeLibrary", "UInt", hModule) ; unload the library to free memory + return 0 + } + else if(WindowFilter.WindowMatchType = "class") + return WinExist("ahk_class " WindowFilter.WindowFilter) + else if(WindowFilter.WindowMatchType = "title") + return WinExist(Window.WindowFilter) + else if(WindowFilter.WindowMatchType = "Active") + return WinExist("A") + else if(WindowFilter.WindowMatchType = "UnderMouse") + { + MouseGetPos,,,UnderMouse + return UnderMouse + } + return 0 +} + +;Generic Window Filter match function. Filter is optional, it is used to check if the trigger is correct if used on a trigger window filter +WindowFilter_Matches(WindowFilter, TargetWindow, TriggerFilter = ""){ + global WindowList + + if(!TriggerFilter || WindowFilter.type = TriggerFilter.type) + { + if(TargetWindow = "A") + TargetWindow := WinExist("A") + class := WinGetClass("ahk_id " TargetWindow) + if(!class) + class := WindowList[TargetWindow].class + title := WinGetTitle("ahk_id " TargetWindow) + if(!title) + title := WindowList[TargetWindow].title + if(TargetWindow = "UnderMouse") + MouseGetPos,,,TargetWindow + if(WindowFilter.WindowMatchType = "Program") + { + if(GetProcessName(TargetWindow) = WindowFilter.WindowFilter) + return true + } + else if(WindowFilter.WindowMatchType = "Class") + { + if(class = WindowFilter.WindowFilter) + return true + } + else if(WindowFilter.WindowMatchType = "Title") + { + if(strStartsWith(title,WindowFilter.WindowFilter)) + return true + } + else if(WindowFilter.WindowMatchType = "Active") + { + + if(!TargetWindow || WinActive("ahk_id " TargetWindow)) + return true + } + else if(WindowFilter.WindowMatchType = "UnderMouse") + { + MouseGetPos,,,UnderMouse + if(!TargetWindow || UnderMouse = TargetWindow) + return true + } + } + return false +} + +WindowFilter_DisplayString(WindowFilter){ + return WindowFilter.WindowMatchType " " WindowFilter.WindowFilter +} + + +WindowFilter_GuiShow(WindowFilter, TriggerGUI){ + SubEventGUI_Add(WindowFilter, TriggerGUI, "DropDownList", "WindowMatchType", "Program|Class|Title|Active|UnderMouse", "", "Match Type:") + SubEventGUI_Add(WindowFilter, TriggerGUI, "Edit", "WindowFilter", "", "", "Window Filter:") +} + +;Window filter uses own GUISubmit function, so it can be executed without storing its ancestor's values +WindowFilter_GuiSubmit(WindowFilter, TriggerGUI){ + Desc_WindowMatchType := TriggerGUI.Desc_WindowMatchType + Desc_WindowFilter := TriggerGUI.Desc_WindowFilter + DropDown_WindowMatchType := TriggerGUI.DropDown_WindowMatchType + Edit_WindowFilter := TriggerGUI.Edit_WindowFilter + + ControlGetText, MatchType, , ahk_id %DropDown_WindowMatchType% + WindowFilter.WindowMatchType := MatchType + + ControlGetText, Filter, , ahk_id %Edit_WindowFilter% + WindowFilter.WindowFilter := Filter + + WinKill, ahk_id %Desc_WindowMatchType% + WinKill, ahk_id %Desc_WindowFilter% + WinKill, ahk_id %DropDown_WindowMatchType% + WinKill, ahk_id %Edit_WindowFilter% +} diff --git a/lib-i_to_z/XML-Encode_Decode.ahk b/lib-i_to_z/XML-Encode_Decode.ahk new file mode 100644 index 00000000..1eef6c2e --- /dev/null +++ b/lib-i_to_z/XML-Encode_Decode.ahk @@ -0,0 +1,64 @@ + +; Escapes all potentially dangerous characters, so that the resulting string +; can be safely inserted into an XML element text (or an attribute, when +; `quotesEncoded` is true). +; +; References: +; - https://stackoverflow.com/a/30558011 +; - https://stackoverflow.com/q/6800467 +; - https://www.w3.org/TR/xml/#NT-Char +XMLEncode(value, quotesEncoded:=false) { + local ; -- + out := "" + prev := 1 + regexNeedle := "S)" + . "[" chr(0xD800) "-" chr(0xDBFF) "][" chr(0xDC00) "-" chr(0xDFFF) "]|" ; Surrogate Pair + . "[&<>" (quotesEncoded ? "'""" : "") "]|" + . "[^ -~]" ; Match everything outside of normal chars + while (cur := RegExMatch(value, regexNeedle, m, prev)) { + out .= SubStr(value, prev, cur-prev) + switch m + { + case "&": out .= "&" + case "<": out .= "<" + case ">": out .= ">" + default: out .= "&#" Ord(m) ";" + } + prev := cur + StrLen(m) + } + out .= SubStr(value, prev) + return out +} + +; Unescapes all numeric character references and the five XML 1.0 predefined +; entities. DTD entities are not supported and are therefore not handled. +; +; References: +; - https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML +; - https://www.tutorialspoint.com/dtd/dtd_entities.htm +XMLDecode(value) { + local ; -- + out := "" + prev := 1 + regexNeedle := "S)&(?:" + . "amp|[lg]t|apos|quot|" + . "#(?:\d+|x[[:xdigit:]]+)" + . ");" + while (cur := RegExMatch(value, regexNeedle, m, prev)) { + out .= SubStr(value, prev, cur-prev) + switch m + { + case "&": out .= "&" + case "<": out .= "<" + case ">": out .= ">" + case "'": out .= "'" + case """: out .= """" + default: + num := SubStr(m, 3) + out .= Chr(SubStr(num, 1, 1) == "x" ? "0" num : num) + } + prev := cur + StrLen(m) + } + out .= SubStr(value, prev) + return out +} diff --git a/lib-i_to_z/docs/SVGraph_README.md b/lib-i_to_z/docs/SVGraph_README.md new file mode 100644 index 00000000..030f9d2c --- /dev/null +++ b/lib-i_to_z/docs/SVGraph_README.md @@ -0,0 +1,6 @@ +![Main Image Plot](https://github.com/CapnOdin/SVGraph/blob/master/Documentation/img/Main.png) +**How it works:** An ActiveX Control consisting of an IE Object is used to execute and show JavaScript whith make a SVG using the library [D3](https://d3js.org). + +**You will need:** The three source files (_SVGraph.ahk_, _SVGraph.js_, _SVGraph.html_) and the library [D3 v4](https://d3js.org/d3.v4.js) in the same folder, IE11 and maybe the newest [AHK version](https://autohotkey.com/download/). + +**Documentation:** See the [Wiki](https://github.com/CapnOdin/SVGraph/wiki). diff --git a/lib-i_to_z/examples/SVGraph test.ahk b/lib-i_to_z/examples/SVGraph test.ahk new file mode 100644 index 00000000..d8b70532 --- /dev/null +++ b/lib-i_to_z/examples/SVGraph test.ahk @@ -0,0 +1,269 @@ +SetBatchLines, -1 +#include SVGraph.ahk +#include *i + +Plots := [], locked := False + +Gui, 1:New, +Resize, SVGraph +Gui, Add, Text, x+m y+m, FunX +Gui, Add, Combobox, ys-2 w200 vEditX, x||Math.sin(x)|Math.cos(x)|Math.pow(x,2)/100 + 0.1|Math.pow(x,3)/100 + Math.pow(x,2)/100 + x/100 +Gui, Add, Text, ys x+20, FunY +Gui, Add, Combobox, ys-2 w200 vEditY, Math.sin(x)||Math.cos(x)|Math.pow(x,2)/100 + 0.1|Math.pow(x,3)/100 + Math.pow(x,2)/100 + x/100|x +Gui, Add, Text, ys x+20, Colour +Gui, Add, Combobox, ys-2 w70 vColour, #0000FF||#FF0000|#00FF00 +Gui, Add, Text, ys x+20, Resolution +Gui, Add, Edit, ys-2 w70 vResolution, 200 +Gui, Add, Text, ys x+20, Axis +Gui, Add, Combobox, ys-2 w70 vAxis, x||y|[min,max] +Gui, Add, Checkbox, ys+3 x+15 vOptimize, Optimize +Gui, Add, Button, ys-2 x+5 gPlot, Plot + +Gui, Add, Button, ys-2 x+20 gDeletePlt, Delete + +Gui, Add, Text, xs+m Section, xmin +Gui, Add, Edit, ys-2 w70 vxmin gAxes, -10 +Gui, Add, Text, ys, xmax +Gui, Add, Edit, ys-2 w70 vxmax gAxes, 10 +Gui, Add, Text, ys, ymin +Gui, Add, Edit, ys-2 w70 vymin gAxes, -1 +Gui, Add, Text, ys, ymax +Gui, Add, Edit, ys-2 w70 vymax gAxes, 1 +Gui, Add, Checkbox, ys+3 x+15 vboxed gAxes, Boxed +Gui, Add, Checkbox, ys+3 x+15 vGrid gGrid, Grid + +Gui, Add, Button, ys-2 x+5 gShowMsg vScatter, ScatterImage + +Gui, Add, Button, ys-2 x+5 gShowMsg vLable, Labels, Ticks and Margin + +Gui, Add, Button, ys-2 x+5 vSave gSave, Save + +Gui, Add, Checkbox, ys+3 x+20 vScrollvar gScroll, Scroll + +; Call sequence needed before making any plots +Gui, Add, ActiveX, xs w500 h500 vIE, Shell.Explorer +SVGraph_Attach(IE) +SVGraph_Start() + +SVGraph_Chart(960, 500, 40) + +SVGraph_ShowScrollbar(False) + +Gui, Show, AutoSize + +;-------------------------------- MSGs ---------------------------------------------- + +Gui, Scatter:+Owner1 +Gui, Scatter:Font, s20 +Gui, Scatter:Add, Text, , Scatter Image +Gui, Scatter:Font, s9 +Gui, Scatter:Add, Text, y+m, Image: +Gui, Scatter:Add, Edit, x+m vScatterImage +Gui, Scatter:Add, Button, x+m gSelectImage, Browse +Gui, Scatter:Add, Text, xs, Resolution: +Gui, Scatter:Add, Edit, x+m w70 vScatterResolution, 200 +Gui, Scatter:Add, Text, xs, Circle Size: +Gui, Scatter:Add, Edit, x+m w40 vScatterSize, 3 +Gui, Scatter:Add, Text, xs, Background Colour: +Gui, Scatter:Add, Edit, x+m vScatterBackground, #FFFFFF + +Gui Scatter:Add, Button, xs gScatter, Scatter +Gui Scatter:Add, Button, x+m gCancel, Cancel + + +Gui, Lable:+Owner1 +Gui, Lable:Font, s20 +Gui, Lable:Add, Text, , Labels and Ticks +Gui, Lable:Font, s9 +Gui, Lable:Add, Text, xs, x-lable: +Gui, Lable:Add, Edit, x+m w70 vLableXlable, +Gui, Lable:Add, Text, xs, y-lable: +Gui, Lable:Add, Edit, x+m w70 vLableYlable, +Gui, Lable:Add, Text, xs y+40, Axis: +Gui, Lable:Add, Combobox, x+m w70 vLableXorY, ||x|y +Gui, Lable:Add, Text, xs, Approx # of Ticks: +Gui, Lable:Add, Combobox, x+m w70 vLableMajor, 10||[-5,0,5] +Gui, Lable:Add, Text, xs, # of Minor Ticks: +Gui, Lable:Add, Edit, x+m w40 vLableMinor, 0 +Gui, Lable:Add, Text, xs, Grid Colour: +Gui, Lable:Add, Combobox, x+m vLableColour, lightgrey||#FF00FF +Gui, Lable:Add, Text, xs, Grid Style: +Gui, Lable:Add, Combobox, x+m vLableDasharray, 5||0|1,1,1,5,3,3 + +Gui, Lable:Add, Text, xs y+40, Margin: +Gui, Lable:Add, Combobox, x+m w150 vLableMargin, 40||{top: , left: , bottom: , right: } + +Gui, Lable:Add, Button, xs gLable, Set +Gui, Lable:Add, Button, x+m gCancel, Cancel +return + +;------------------------------------------------------------------------------------- + +GuiSize: + if(!locked){ + GuiControlGet, top, Pos, Save + GuiControlGet, side, Pos, IE + GuiControl, Move, IE, % "w" A_GuiWidth - 2*sideX " h" A_GuiHeight - (topY + 2*sideX) + SVGraph_UpdateChart(A_GuiWidth - 2*sideX - 20, A_GuiHeight - topY - 2*sideX - 20) + SetTimer, Axes, -100 + } +return + +Axes: + if(!locked){ + Gui, Submit, NoHide + SVGraph_SetAxes(xmin, xmax, ymin, ymax, boxed) + SVGraph_RemovePath() + IE.Document.parentWindow.eval("plot.ID = 0;") + for index, plot in Plots { + SVGraph_LinePlot(plot[1], plot[2], plot[3], plot[4], plot[5], plot[6]) + } + } +return + +Scroll: + Gui, Submit, NoHide + SVGraph_ShowScrollbar(Scrollvar) +return + +Grid: + Gui, Submit, NoHide + SVGraph_ShowGrid(Grid) +return + +Save: + Gui, Submit, NoHide + if("D" != FileExist("\SVGs")){ + FileCreateDir, SVGs + } + FileSelectFile, FileName, S16, % "\SVGs\" Get_Unique_Name("SVGs\plot.svg"), Save SVG, *.svg + if(FileName){ + SVGraph_SaveSVG(FileName) + } +return + +Plot: + Gui, Submit, NoHide + SVGraph_LinePlot(EditX, EditY, Colour ? Colour : "#999", Resolution, Axis, Optimize) + Plots.Push([EditX, EditY, Colour ? Colour : "#999", Resolution, Axis, Optimize]) +return + +DeletePlt: + Plots.Pop() + SVGraph_RemovePath(-1) +return + +;-------------------------------- MSGs ---------------------------------------------- + +ShowMsg: + GuiControlGet, Ctrl, FocusV + Gui, %Ctrl%:Show, AutoSize +return + +Cancel: + Gui, %A_Gui%:Show, Hide +return + +SelectImage: + FileSelectFile, image, , , Select Image + GuiControl, , ScatterImage, %image% +return + +Scatter: + Gui, Scatter:Submit + ScatterImage(ScatterImage, ScatterResolution, ScatterSize, ScatterBackground) +return + +Lable: + Gui, Lable:Submit + SVGraph_UpdateChart(, , LableMargin) + SVGraph_SetLabels(LableXlable, LableYlable) + SVGraph_SetGrid(LableXorY, LableMajor, LableMinor, LableColour, LableDasharray) +return + +;------------------------------------------------------------------------------------- + +GuiClose: +GuiEscape: + ExitApp + +ScatterImage(image, axisResolution, size := 3, background := "#FFFFFF"){ + Global locked + Static Gdip_Startup := Func("Gdip_Startup") + , Gdip_CreateBitmapFromFile := Func("Gdip_CreateBitmapFromFile") + , Gdip_GetImageWidth := Func("Gdip_GetImageWidth") + , Gdip_GetImageHeight := Func("Gdip_GetImageHeight") + , Gdip_GetPixel := Func("Gdip_GetPixel") + , Gdip_DisposeImage := Func("Gdip_DisposeImage") + , Gdip_Shutdown := Func("Gdip_Shutdown") + + if(Gdip_Startup && Gdip_CreateBitmapFromFile && Gdip_GetImageWidth && Gdip_GetImageHeight && Gdip_GetPixel && Gdip_DisposeImage && Gdip_Shutdown){ + locked := True + icon := {} + pToken := Gdip_Startup.Call() + pBitmap := Gdip_CreateBitmapFromFile.Call(image) + xmax := Gdip_GetImageWidth.Call(pBitmap) + ymax := Gdip_GetImageHeight.Call(pBitmap) + step := (xmax > ymax ? xmax : ymax) / axisResolution + + SVGraph_UpdateChart(xmax, ymax) + SVGraph_SetAxes(0, xmax, 0, ymax, True) + + loop %axisResolution% { + y := (A_Index - 1) * step + loop %axisResolution% { + x := (A_Index - 1) * step + if(((c := ARGBtoRGB(Gdip_GetPixel.Call(pBitmap, x, y)))[1] != 0) && c[2] != background){ + if(!icon.HasKey(c[2])){ + icon[c[2]] := {} + } + if(!icon[c[2]].HasKey(c[1])){ + icon[c[2]][c[1]] := {"x" : [], "y" : []} + } + icon[c[2]][c[1]]["x"].Push(x) + icon[c[2]][c[1]]["y"].Push(ymax - y) + } + } + ToolTip, % (y < ymax ? y / ymax : 1) * 100 . "%" + } + Gdip_DisposeImage.Call(pBitmap) + Gdip_Shutdown.Call(pToken) + + Group := SVGraph_Group("image") + + for colour, list in icon { + for opacity, coords in list { + SVGraph_ScatterPlot(coords["x"], coords["y"], colour, size, opacity, False, Group) + } + } + ToolTip + } else { + MsgBox, Can't find Gdip.ahk in your Library. + } + locked := False +} + +ARGBtoRGB(ARGB) { + ARGB := Format("0x{:08X}", ARGB) + Return [SubStr(ARGB, 1, 4) / 0xFF, Format("#{:06X}", "0x" SubStr(ARGB, 5))] +} + +Get_Unique_Name(FileName, Directory := False){ + SplitPath, FileName, , Dir, Ext, Name + if(!Directory){ + Directory := InStr(Dir, ":") ? Dir : A_WorkingDir "\" Dir + } + if(SubStr(Directory, 0) != "\"){ + Directory .= "\" + } + While Exist(Directory . Name . (index ? " (" . index . ")." : ".") . Ext) { + index := A_Index + } + Return Name . (index ? " (" . index . ")." : ".") . Ext +} + +Exist(path){ + IfExist, %path% + Return 1 + Return 0 +} + \ No newline at end of file diff --git a/lib-i_to_z/examples/SVGraph.html b/lib-i_to_z/examples/SVGraph.html new file mode 100644 index 00000000..14c4a704 --- /dev/null +++ b/lib-i_to_z/examples/SVGraph.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib-i_to_z/examples/SVGraph.js b/lib-i_to_z/examples/SVGraph.js new file mode 100644 index 00000000..b3c73807 --- /dev/null +++ b/lib-i_to_z/examples/SVGraph.js @@ -0,0 +1,711 @@ +function Chart(width, height, margin) { + if(typeof margin === "object"){ + this.margin = margin; + } else { + margin = margin < 40 ? 40 : margin; + this.margin = {top: margin, left: margin, bottom: margin, right: margin}; + } + this.SvgWidth = width; this.SvgHeight = height; + this.width = width - this.margin.left - this.margin.right; + this.height = height - this.margin.top - this.margin.bottom; + this.svg = d3.select("svg") + .attr("width", width) + .attr("height", height); + this.ID = 0; + + var filter = this.svg.append("filter").attr("id", "dropShadow"); + filter.append("feGaussianBlur").attr("in", "SourceAlpha").attr("stdDeviation", 3); + //filter.append("feOffset").attr("dx", 0).attr("dy", 0); + var feMerge = filter.append("feMerge"); + feMerge.append("feMergeNode"); + feMerge.append("feMergeNode").attr("in", "SourceGraphic"); + + this.Curves = { Ba: d3.curveBasis, + Bu: d3.curveBundle, + Car: d3.curveCardinal, + Cat: d3.curveCatmullRom, + L: d3.curveLinear, + MX: d3.curveMonotoneX, + MY: d3.curveMonotoneY, + N: d3.curveNatural, + S: d3.curveStep, + SA: d3.curveStepAfter, + SB: d3.curveStepBefore}; + + /*this.svg.append("polygon") + .attr("fill-rule", "evenodd") + .attr("fill", "#FF00FF") + .attr("opacity", "0.5"); */ + + this.Axes = new Axes(this.width, this.height, this.margin); + this.Data = new Data(); + + this.Charts = this.svg.append("g") + .attr("id", "charts"); + + this.Legend = this.svg.append("g") + .attr("id", "legend") + .attr("opacity", 0) + .on("mouseup", function(){plot.Legend.move = false;}) + .on("mousedown", function(){plot.Legend.move = true;}) + .on("mousemove", function(){ + if(plot.Legend.move){ + plot.Legend.attr("transform", "translate(" + (event.clientX - plot.Legend.width/2) + "," + (event.clientY - plot.Legend.height/2) + ")"); + } + }); + + this.Legend.rect = this.Legend.append("rect") + .attr("stroke", "black") + .attr("fill", "lightgrey"); + + this.Legend.move = false; + + this.Update = function(width, height, margin){ + + this.SvgWidth = width != undefined ? width : this.SvgWidth; + this.SvgHeight = height != undefined ? height : this.SvgHeight; + + if(typeof margin === "object"){ + this.margin = margin; + } else if(margin != undefined) { + margin = margin < 40 ? 40 : margin; + this.margin = {top: margin, left: margin, bottom: margin, right: margin}; + } + + this.width = this.SvgWidth - this.margin.left - this.margin.right; + this.height = this.SvgHeight - this.margin.top - this.margin.bottom; + + this.svg.attr("width", this.SvgWidth); + this.svg.attr("height", this.SvgHeight); + + /* this.svg.select("polygon") + .attr("points", toPoints([[0, 0] + , [this.width + this.margin.left + this.margin.right, 0] + , [this.width + this.margin.left + this.margin.right, this.height + this.margin.top + this.margin.bottom] + , [0, this.height + this.margin.top + this.margin.bottom] + , [0, 0] + , [this.margin.left, this.margin.top] + , [this.width + this.margin.left, this.margin.top] + , [this.width + this.margin.left, this.height + this.margin.top] + , [this.margin.left, this.height + this.margin.top] + , [this.margin.left, this.margin.top]]) + ); */ + + this.Axes.Update(this.width, this.height, this.margin); + }; + + this.RemovePath = function(index){ + if(index == undefined) { + this.svg.selectAll("#charts > .graph").remove(); + } else { + var graphs = this.svg.selectAll("#charts > .graph"); + index = index < 0 ? graphs._groups[0].length + index : index; + graphs.select(function(d, i){return i == index ? this : null;}).remove(); + } + }; + + this.SetAxes = function(xmin, xmax, ymin, ymax, Boxed) { + xmin = xmin == undefined ? this.Axes.x.min() : xmin; + xmax = xmax == undefined ? this.Axes.x.max() : xmax; + ymin = ymin == undefined ? this.Axes.y.min() : ymin; + ymax = ymax == undefined ? this.Axes.y.max() : ymax; + this.Axes.Set([xmin, xmax], [ymin, ymax], Boxed); + }; + + this.NewGroup = function(ID, InterAct){ + var g = this.Charts.append("g") + .attr("id", InterAct ? ID + "-" + this.ID : ID) + .attr("class", "graph") + .attr("transform", "translate(" + this.margin.left + "," + this.margin.top + ")"); + if(InterAct){ + ID = "#" + ID + "-" + this.ID; + g.on("mouseenter", function(){d3.select(ID + " > #circles").attr("opacity", 1); + d3.select(ID + " > path").attr("filter", "url(#dropShadow)");}); + g.on("mouseleave", function(){d3.select(ID + " > #circles").attr("opacity", 0); + d3.select(ID + " > path").attr("filter", null);}); + this.ID += 1; + } + return g; + }; + + this.LinePlot = function(FunX, FunY, Colour, Width, Resolution, Range, Optimize) { + if(!this.Axes.Exist){ + this.SetAxes(-100, 100, -100, 100) + } + var Axis = Range; + if(!Array.isArray(Range)){ + Range = [(Range == "x" ? this.Axes.x.min() : this.Axes.y.min()), (Range == "x" ? this.Axes.x.max() : this.Axes.y.max())]; + } + if(Resolution == 0){ + var Resolution = (Math.abs(Range[0]) + Math.abs(Range[1])) / 20000; + } + var Data = this.Data.FromFunction(FunX, FunY, Range[0], Range[1], Resolution, Optimize, Axis); + var line = this.NewGroup("line-graph", true); + + this.DrawLine(line, Data, Colour, Width); + this.DrawDots(line, Data.filter(function(val){return val != null;}), 3, "#000000", 0); + }; + + this.LinePlot2 = function(LstX, LstY, Colour, Width, ScaleAxes, Curve) { + var Data = d3.zip(LstX, LstY); + + if(ScaleAxes || !this.Axes.Exist){ + this.Axes.ScaleToData(Data); + } else { + Data = Data.filter(this.Axes.LimitToOne); + } + + var line = this.NewGroup("line-graph", true); + + this.DrawLine(line, Data, Colour, Width, undefined, Curve); + + this.DrawDots(line, Data.filter(function(val){return val != null;}), 3, "#000000", 0); + }; + + this.ScatterPlot = function(LstX, LstY, Colour, Size, Opacity, ScaleAxes, Group) { + Group = Group ? Group : this.NewGroup("graph"); + + var Data = d3.zip(LstX, LstY); + + if(ScaleAxes || !this.Axes.Exist){ + this.Axes.ScaleToData(Data); + } else { + Data = Data.filter(this.Axes.LimitToOne); + } + + this.DrawDots(Group, Data, Size, Colour, Opacity); + }; + + this.BarPlot = function(Axis, Data, Colour, Width, Opacity) { + var Group = this.NewGroup("graph"); + + this.DrawStacks(Group, Axis, Data, d3.stack(), Width, Colour, Opacity); + }; + + this.Tree = function(Data) { + var Group = this.NewGroup("graph"); + + this.DrawTree(Group, ObjToHierarchy(Data, "")); + }; + + this.DrawLine = function(Group, Data, Colour, Width, Opacity, Curve){ + if(Data.length < 1){ + return; + } + + Width = Width == undefined ? 3 : Width; + Opacity = Opacity == undefined ? 1 : Opacity; + Colour = Colour == undefined ? "#0000FF" : Colour; + Group = Group == undefined ? this.svg : Group; + Curve = Curve == undefined ? d3.curveCatmullRom : this.Curves[Curve]; + + Group.datum(Data); + + var line = d3.line() + .curve(Curve) + .defined(function(d){return d;}) + .x(this.Axes.GetXval) + .y(this.Axes.GetYval); + + Group.append("path") + .attr("class", "line") + .attr("d", line) + .attr("fill", "none") + .attr("stroke", Colour) + .attr("stroke-width", Width); + }; + + this.DrawDots = function(Group, Data, Radius, Colour, Opacity){ + if(Data.length < 1){ + return; + } + + Radius = Radius == undefined ? 3 : Radius; + Opacity = Opacity == undefined ? 1 : Opacity; + Colour = Colour == undefined ? "#0000FF" : Colour; + Group = Group == undefined ? this.svg : Group; + + var g = Group.append("g") + .attr("id", "circles") + .attr("fill", Colour) + .attr("opacity", Opacity); + + g.selectAll("dot") + .data(Data) + .enter().append("circle") + .attr("r", Radius) + .attr("cx", this.Axes.GetXval) + .attr("cy", this.Axes.GetYval); + }; + + this.DrawStacks = function(Group, Axis, Data, Stack, Width, Colour, Opacity){ + if(Data.length < 1){ + return; + } + + Data = Data.map(function(o,i){o.splice(0, 0, i+1); return o;}); + + var rectPerBar = Data[0].length - 1; + var numOfColours = (rectPerBar == 1) ? Data.length : rectPerBar; + + Axis = Axis == undefined ? "x" : Axis; + Width = Width == undefined ? 3 : Width; + Opacity = Opacity == undefined ? 1 : Opacity; + Colour = Colour == undefined ? GetDiffrentColours(numOfColours) : Colour; + Group = Group == undefined ? this.svg : Group; + + bool = Axis == "x"; + + Group.selectAll(".serie") + .data(Stack.keys(d3.range(1, rectPerBar + 1))(Data)) + .enter().append("g") + .attr("class", "serie") + .attr("fill", function(d) {return Colour[d.index];}) + .attr("opacity", Opacity) + .attr("transform", "translate(" + (bool ? -Width/2 : 0) + "," + (bool ? 0 : -Width/2) + ")") + .selectAll("rect") + .data(function(d){return d;}) + .enter().append("rect") + .attr("x", function(d) {return plot.Axes.x( bool ? d.data[0] : (d[1] > 0 ? d[0] : d[1]));}) + .attr("y", function(d) {return plot.Axes.y(!bool ? d.data[0] : (d[1] > 0 ? d[1] : d[0]));}) + .attr("height", bool ? function(d) {return Math.abs(plot.Axes.y(d[0]) - plot.Axes.y(d[1]));} : Width) + .attr("width", !bool ? function(d) {return Math.abs(plot.Axes.x(d[0]) - plot.Axes.x(d[1]));} : Width) + .attr("fill", function(d) {return (rectPerBar == 1) ? Colour[d.data[0] - 1] : null;}); + }; + + this.DrawTree = function(Group, Data){ + if(Data.length < 1){ + return; + } + + Group = Group == undefined ? this.svg : Group; + + var root = d3.hierarchy(Data); + + var tree = d3.tree() + .size([this.height, this.width - 100]); + + var link = Group.selectAll(".link") + .data(tree(root).links()) + .enter().append("path") + .attr("class", "link") + .attr("opacity", 0.5) + .attr("d", d3.linkHorizontal() + .x(function(d) { return d.y; }) + .y(function(d) { return d.x; })); + + var node = Group.selectAll(".node") + .data(root.descendants()) + .enter().append("g") + .attr("class", function(d) { return "node" + (d.children ? " node--internal" : " node--leaf") + ; }) // + (d.data.id.search("¤") > -1 ? " node--word" : "") + .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; }); + + node.append("circle") + .attr("r", 2.5); // function(d) { return d.data.id.search("¤") > -1 ? 3.5 : 2.5; } + + node.append("text") + .attr("dy", 3) + .attr("x", function(d) { return d.children ? -8 : 8; }) + .text(function(d) { return d.data.id.replace("¤", ""); }); // + }; + + this.MakeLegend = function(Legend, Colour){ + if(Legend == undefined || Legend.length < 1){ + this.Legend.attr("opacity", 0); + return; + } else { + Colour = Colour == undefined ? GetDiffrentColours(Legend.length) : Colour; + this.Legend.selectAll(".entry").remove(); + + this.Legend.rect.attr("height", 0); + this.Legend.rect.attr("width", 0); + + for(index in Legend){ + var entry = this.Legend.append("g") + .attr("class", "entry"); + entry.append("text") + .attr("y", index * 20 + 21) + .attr("x", -26) + .attr("text-anchor", "end") + .text(Legend[index]); + entry.append("rect") + .attr("x", -20) + .attr("y", index * 20 + 6) + .attr("width", 18) + .attr("height", 18) + .attr("fill", Colour[index]); + } + var bbox = document.getElementById("legend").getBBox(); + + this.Legend.width = bbox.width + 7; + this.Legend.height = Legend.length * 20 + 6 + 4; + + this.Legend.rect.attr("height", this.Legend.height); + this.Legend.rect.attr("width", this.Legend.width); + + this.Legend.selectAll(".entry").attr("transform", "translate(" + (bbox.width + 5) + "," + 0 + ")"); + + this.Legend.attr("transform", "translate(" + (this.width - bbox.width) + "," + 0 + ")"); + this.Legend.attr("opacity", 1); + } + }; +} + +function Axes(width, height, margin){ + this.width = width; + this.height = height; + this.boxed = undefined; + this.x = Range("x", 0, width); + this.y = Range("y", height, 0); + this.xAxis = d3.axisBottom(this.x); + this.yAxis = d3.axisLeft(this.y); + this.Exist = false; + + this.axes = d3.select("svg").append("g") + .attr("id", "axes") + .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); + + this.xGrid = new Grid("x", this.axes, this.x, this.boxed); + this.yGrid = new Grid("y", this.axes, this.y, this.boxed); + + this.NewAxis = function(ID){ + this.axes.append("text") + .attr("id", "Label-" + ID) + .attr("class", "Label") + .attr("text-anchor", "middle") + .attr("dy", (ID == "x" ? 25 : -15)); + this.axes.append("g") + .attr("id", "axis-" + ID) + .attr("class", "axis") + .on("mouseenter", function(){d3.select("#axis-" + ID + " > path").attr("filter", "url(#dropShadow)");}) + .on("mouseleave", function(){d3.select("#axis-" + ID + " > path").attr("filter", null);}); + }; + + this.NewAxis("x"); + this.NewAxis("y"); + + this.DomAxisX = document.getElementById("axis-x"); + this.DomAxisY = document.getElementById("axis-y"); + + this.HideAxes = function(bool){ + if(bool != undefined){ + this.axes.attr("opacity", bool); + } + } + + this.SetLabels = function(xLabel, yLabel){ + if(xLabel != undefined){ + this.axes.select("#Label-x").text(xLabel); + } + if(yLabel != undefined){ + this.axes.select("#Label-y").text(yLabel); + } + this.PlaceLabel(); + }; + + this.PlaceLabel = function(){ + if(this.boxed){ + var ticktextX = this.DomAxisX.getElementsByTagName("text"); + var ticktextY = this.DomAxisY.getElementsByTagName("text"); + if(ticktextX.length > 0){ + var Label = document.getElementById("Label-x").getBBox(); + this.axes.select("#Label-x").attr("dy", 10 + Label.height + ticktextX[ticktextX.length/2].getBBox().height); + } + if(ticktextY.length > 0){ + this.axes.select("#Label-y").attr("dy", -10 + ticktextY[ticktextY.length/2].getBBox().x); + } + } else { + this.axes.select("#Label-x").attr("dy", 25); + this.axes.select("#Label-y").attr("dy", -15); + } + }; + + this.Update = function(width, height, margin){ + this.width = width; + this.height = height; + this.axes.attr("transform", "translate(" + margin.left + "," + margin.top + ")"); + this.x.range([0, width]); + this.y.range([height, 0]); + }; + + this.Set = function(xlst, ylst, boxed){ + this.boxed = boxed == undefined ? this.boxed : boxed == true; + this.x.ChangeDomain(xlst); + this.y.ChangeDomain(ylst); + this.Axis("x"); + this.Axis("y"); + this.xGrid.Update(-this.height, "0," + this.height, this.boxed); + this.yGrid.Update(-this.width, "0,0", this.boxed); + this.PlaceLabel(); + this.Exist = true; + }; + + this.Grid = function(OnOff){ + this.axes.selectAll(".grid").attr("opacity", OnOff); + }; + + this.SetGrid = function(xory, major, minor, colour, dasharray){ + if(xory == "x" || xory == ""){ + this.xGrid.Set(major, minor, colour, dasharray); + this.Axis("x"); + } + if(xory == "y" || xory == ""){ + this.yGrid.Set(major, minor, colour, dasharray); + this.Axis("y"); + } + }; + + this.Axis = function(xory){ + var axis = this.axes.select("#axis-" + xory); + axis.attr("transform", "translate(" + (xory == "x" ? ("0," + (this.boxed ? this.y(this.y.start()) : (this.y.zero ? this.y(0) : this.y(this.y.mid()))) + ")") + : ((this.boxed ? "0" : (this.x.zero ? this.x(0) : this.x(this.x.mid()))) + ",0)")) + ); + axis.call((xory === "x" ? this.xAxis.tickValues(this.x.GetTicks()) : this.yAxis.tickValues(this.y.GetTicks()))); + + this.axes.select("#Label-" + xory).attr("transform", "translate(" + (xory == "x" ? (this.width / 2 + "," + this.height + ")") + : ("0," + this.height / 2 + ")rotate(-90)")) + ); + }; + + this.ScaleToData = function(data){ + if(data.length < 1){ + return; + } + this.Set(d3.extent(data, function(d){return d[0];}), d3.extent(data, function(d){return d[1];})); + }; + + this.GetXval = function(d){return plot.Axes.x(d[0]);}; + this.GetYval = function(d){return plot.Axes.y(d[1]);}; + + this.LimitToOne = function(a){return (plot.Axes.x.min() <= a[0] && a[0] <= plot.Axes.x.max() && plot.Axes.y.min() <= a[1] && a[1] <= plot.Axes.y.max());}; + this.LimitToTwo = function(x, y){return (plot.Axes.x.min() <= x && x <= plot.Axes.x.max() && plot.Axes.y.min() <= y && y <= plot.Axes.y.max());}; +} + +var Range = function(type, start, end) { + var range = d3.scaleLinear(); + range.type = type; + range.range([start, end]); + range.AproxNumOfTicks = 10; + range.ChangeDomain = function(Lst){ + this.domain(Lst); + this.zero = (d3.min(this.domain()) <= 0 && 0 <= d3.max(this.domain())); + }; + range.GetTicks = function(){ + if(Array.isArray(this.AproxNumOfTicks)){ + return this.AproxNumOfTicks; + } + return this.ticks(this.AproxNumOfTicks); + }; + range.min = function(){return d3.min(this.domain());}; + range.mid = function(){return Math.round(d3.mean(this.domain()));}; + range.max = function(){return d3.max(this.domain());}; + + range.start = function(){return this.domain()[0];}; + range.end = function(){return this.domain()[1];}; + return range; +}; + +var Grid = function(id, axes, range, Boxed) { + this.ID = id; + this.Grid = axes.append("g") + .attr("id", "grid-" + this.ID) + .attr("class", "grid") + .attr("opacity", 0) + .attr("stroke", "lightgrey") + .attr("stroke-dasharray", "5"); + this.Range = range; + this.NumOfMajorTicks = 10; + this.NumOfMinorTicks = 0; + this.Boxed = Boxed; + + this.Set = function(major, minor, colour, dasharray){ + this.NumOfMajorTicks = major == undefined ? this.NumOfMajorTicks : major; + this.Range.AproxNumOfTicks = this.NumOfMajorTicks; + this.NumOfMinorTicks = minor == undefined ? this.NumOfMinorTicks : minor; + this.Grid.attr("stroke", (colour == undefined ? "lightgrey" : colour)); + this.Grid.attr("stroke-dasharray", (dasharray == undefined ? "5" : dasharray)); + this.Grid.call(this.GetAxis()); + this.CleanUp(); + }; + + this.Update = function(tickSize, translate, Boxed){ + this.Boxed = Boxed; + this.tickSize = tickSize; + this.Grid.attr("transform", "translate(" + translate + ")"); + this.Grid.call(this.GetAxis()); + this.CleanUp(); + }; + + this.CleanUp = function(){ + this.Grid.selectAll(".tick").selectAll("line").attr("stroke", null); + this.Grid.selectAll("text").remove(); + this.Grid.select("path").remove(); + }; + + this.GetAxis = function(){ + return (this.ID == "x" ? d3.axisBottom(this.Range) : d3.axisLeft(this.Range)) + .tickFormat("") + .tickSizeOuter(0) + .tickSize(this.tickSize) + .tickValues(this.GetTicks()); + }; + + this.GetTicks = function(){ + var ticks = this.Range.GetTicks(); + var minorticks = []; + + for(i = 0; i < ticks.length; i++){ + var step = Math.abs((ticks[i] - ticks[i+1]) / (this.NumOfMinorTicks + 1)); + minorticks = minorticks.concat(d3.range(ticks[i], ticks[i+1], (ticks[i] < ticks[i+1]) ? step : - step)); + } + + minorticks.push(ticks[ticks.length - 1]) + var index = minorticks.indexOf(this.Boxed ? this.Range.start() : (this.Range.zero ? 0 : this.Range.mid())); + if(index != -1){ + minorticks.splice(index, 1); + } + return minorticks; + }; +}; + +function Data() { + this.Init = function(){ + this.x = plot.Axes.x; this.xmin = this.x.min(); this.xmid = this.x.mid(); this.xmax = this.x.max(); + this.y = plot.Axes.y; this.ymin = this.y.min(); this.ymid = this.y.mid(); this.ymax = this.y.max(); + }; + this.LimitToOne = function(a){return (this.xmin <= a[0] && a[0] <= this.xmax && this.ymin <= a[1] && a[1] <= this.ymax);}; + this.LimitToTwo = function(x, y){return (this.xmin <= x && x <= this.xmax && this.ymin <= y && y <= this.ymax);}; + + this.FromFunction = function(FunX, FunY, from, to, Resolution, Optimize, Axis){ + Axis = Axis == "y" ? false : true; + + this.Init(); + var bool = true, poslst = [], old = 0, old2 = 5, xmin = this.x.min(), xmax = this.x.max(), ymin = this.y.min(), ymax = this.y.max(); + var step = Math.abs((from - to) / Resolution); //(Math.abs(from) + Math.abs(to)) / Resolution; + var varX, varY; + if(!Optimize){ + data = d3.range(from, to, step).map(function(x){ + varX = eval(FunX); varY = eval(FunY); + if(ymin <= varY && varY <= ymax && xmin <= varX && varX <= xmax){ + return [varX, varY]; + } + }); + } else { + data = d3.range(from, to, step).map(function(x, index){ + varX = eval(FunX); varY = eval(FunY); + if(ymin <= varY && varY <= ymax && xmin <= varX && varX <= xmax){ + if(bool){ + poslst.push(index); + old = Axis ? varY : varX; bool = false; + } else if((old2 < old && old > (Axis ? varY : varX)) || (old2 > old && old < (Axis ? varY : varX))) { + poslst.push(index - 1); + } + old2 = old; old = Axis ? varY : varX; + return [varX, varY]; + } else { + if(!bool){ + poslst.push(index - 1); + bool = true; + } + } + }); + + poslst.push(data.length - 1); + poslst = poslst.reverse(); + + var extremum, start, end; + for(i in poslst) { + start = data[poslst[i]-1] != null ? data[poslst[i]-1][Axis ? 0 : 1] : from + (poslst[i]-1)*step; + end = data[poslst[i]+1] != null ? data[poslst[i]+1][Axis ? 0 : 1] : from + (poslst[i]+1)*step; + + extremum = d3.range(start, end, step / 10).map( + function(x){ + varX = eval(FunX); varY = eval(FunY); + if(ymin <= varY && varY <= ymax && xmin <= varX && varX <= xmax){ + return [varX, varY]; + }; + }).filter(function(val){return val != null;}); + + data.splice.apply(data, [poslst[i]-1 > 0 ? poslst[i]-1 : 0, 2].concat(extremum)); + } + } + var x = to; + varX = eval(FunX); varY = eval(FunY); + if(ymin <= varY && varY <= ymax && xmin <= varX && varX <= xmax){ + data.push([varX, varY]); + } + return data; + }; +} + +var GetDiffrentColours = function(num){ + return d3.range(0, 360, Math.round(360 / num)).map(function(v,i){return d3.hsl(v, 1, (i % 2) ? 0.4 : 0.6);}); +} + +var time = function(){return new Date().getTime();}; + +var PrintPointArray = function(array){ + msg = "["; + for (i in array){ + msg += (array[i] != null ? "[" + array[i][0] + ", " + array[i][1] + "], " : ""); + } + alert(msg + "]"); +} + +var IsDefined = function(val){ + return val != undefined ? val : undefined; +} + +var toPoints = function(array){ + var len = array.length, res = ""; + for(i = 0; i < len; i++){ + res += array[i][0] + "," + array[i][1] + " "; + } + return res.substr(0, res.length - 1); +} + +var Demo = function(text){ + if(document.getElementById("demo") == null){ + p = document.createElement("p"); + p.id = "demo"; + document.body.insertBefore(p, document.body.childNodes[0]); + } + document.getElementById("demo").innerHTML = text; +} + +var ObjToHierarchy = function(obj, key) { + var Hierarchy = {"id" : key}; + if((typeof obj === "string" || typeof obj === "number") && obj !== "") { + Hierarchy["children"] = [{"id" : obj}]; + } else { + Hierarchy["children"] = []; + + if(Array.isArray(obj)) { + for(i in obj) { + if((typeof obj[i] === "string" || typeof obj[i] === "number") && obj[i] !== "") { + Hierarchy["children"].push({"id" : obj[i]}); + } else { + Hierarchy["children"].push(ObjToHierarchy(obj[i], "")); + } + } + } else { + for(i in obj) { + Hierarchy["children"].push(ObjToHierarchy(obj[i], i)); + } + } + } + return Hierarchy; +} + +var ObjToString = function(obj) { + if(typeof obj != "object"){ + return (typeof obj === "number" ? obj : '"' + obj + '"'); + } + var bool = Array.isArray(obj); + res = bool ? "[" : "{"; + for(key in obj) { + res += (!bool ? '"' + key + '" : ' : "") + ObjToString(obj[key]) + ", "; + } + return res.substr(0, res.length - 2) + (bool ? "]" : "}"); +} diff --git a/lib-i_to_z/internet.ahk b/lib-i_to_z/internet.ahk index 1115035e..dc8e0715 100644 --- a/lib-i_to_z/internet.ahk +++ b/lib-i_to_z/internet.ahk @@ -1,4 +1,4 @@ -getIPInfo(getLoc:=False){ +getIPInfo(getLoc:=True){ if getLoc { webpage:=Download("https://www.whatismybrowser.com/detect/ip-address-location") diff --git a/more libs/CGUI/json.ahk b/more libs/CGUI/json.ahk index 35a76dcc..b4e396c6 100644 --- a/more libs/CGUI/json.ahk +++ b/more libs/CGUI/json.ahk @@ -1,325 +1,325 @@ -#Escapechar \ -#CommentFlag // - - -// Static initialization for stdlib, by fincs at autohotkey.com forums // -__json_init() -{ - global - static _ := __json_init() - $$ := Object() - JSON_init() -} - - -// Simple access to global variable $$ // -$(path, val = "") { - - global $$ - tempobj := $$ - - last := (instr(path, ".") - ? substr(path, 1+instr(path, ".", false, -1)) - : path) - - Loop, Parse, path, \. - { - if (val != "") { - if (last = A_loopfield){ - tempObj[A_loopfield] := val - continue - } else if (!tempObj[A_Loopfield]) - tempObj[A_loopfield] := Object() - } else if (!tempObj) - break - tempObj := tempObj[A_loopfield] - } - - if (! tempObj) - JSON_error("Cannot find or set entry " . path ) - else - return (val = "" ? tempObj : 0 ) -} - -// Save JSON string to file // -JSON_save(obj, filename, spacing=35, block=" ", level=1) { - - file := FileOpen(filename, "w") - jsonString := JSON_to(obj, spacing, block, level) "\n" - bytesWritten := file.write(jsonString) - file.close() - - if (bytesWritten <= 0) - JSON_error("Cannot write file " . filename) - else - return bytesWritten -} - -// Load JSON string from file // -JSON_load(filename) { - file := FileOpen(filename, "r") - jsonString := file.read() - file.close() - if (jsonString == "") - JSON_error("No file found, or blank file.") - return JSON_from(jsonString) -} - -// Error handling // -JSON_error(s){ - Msgbox, % "[" . A_now . "] " . s - Exit -} - -// Escape / unescape json keys and values // -JSON_escape(s){ - StringReplace, s, s, \\, \\\\, All - StringReplace, s, s, ', \\', All - StringReplace, s, s, ", \\", All - return s -} -JSON_unescape(s){ - StringReplace, s, s, \\\\, \\, All - StringReplace, s, s, \\', ', All - StringReplace, s, s, \\", ", All - return s -} - -// Turns an object to a JSON string // -JSON_to(obj, spacing = 50, block = " ", level = "1" ) { - - s := "" - for k, v in obj - { - // New line // - if (s != "") - s .= "," - s .= "\n" - - // Indent key // - Loop, %level% - s .= block - - // Escape key and value // - k := JSON_escape(k) - v := JSON_escape(v) - - // Write key // - s .= """" k """: " - - // If object, do recursion // - if (isobject(v)) { - s .= JSON_to(v, spacing, block, level + 1 ) - } else { - - // LeftAlign the second column // - totalKeyLength := level * strlen(block) + strlen(k) + 2 - if (spacing >= totalKeyLength ) { - valueIndent := spacing - totalKeyLength - loop, %valueIndent% - s .= " " - } - // Quote non-number values // - if v is not number - v := """" v """" - - // New line // - s .= v - } - } - - // Return // - if ( (s == "") && !isobject(obj) ) { - s := Object() - } else if ( (s == "") && isobject(obj) ) { - s := "{}" - } else { - s := "{" s "\n" - level -= 1 - Loop, %level% - s .= block - s .= "}" - } - return s - -} - -// Initialize the shift-reduce tables // -JSON_init(){ - - #EscapeChar ` - global JSON_regexps, JSON_rules - - // symbol : regexp // - JSON_regexps := Object( "" - . " " , "(\s+)" - , "{" , "({)" - , "[" , "(\[)" - , "]" , "(\])" - , "}" , "(})" - , "Q" , "'([^'\\]*(\\.[^'\\]*)*)'" - , "S" , """([^""\\]*(\\.[^""\\]*)*)""" - , "N" , "([+\-]?\d+([.,]\d+)?)" - , "D" , "(true|false|null)" - , ":" , "(:)" - , "," , "(,)" - . "" ) - - // 1) Match "key" in the symbol stack // - // 2) Replace with "sub" in the symbol stack // - // 3) Remove len("key") from the result stack // - // 4) Append the result of function "func" on the result stack // - JSON_rules := Object() - JSON_rules[0] := Object( "key", "(\s+)", "sub", "" , "func", "JSON_reduce_spaces" ) - JSON_rules[1] := Object( "key", "([QS]:[QSNOAD])", "sub", "_", "func", "JSON_reduce_keyvalue" ) - JSON_rules[2] := Object( "key", "(\[(([QSNOAD](,[QSNOAD])*\])|\]))", "sub", "A", "func", "JSON_reduce_array" ) - JSON_rules[3] := Object( "key", "({}|{_(,_)*})", "sub", "O", "func", "JSON_reduce_object" ) - - #Escapechar \ - -} - -// Reducing functions // -// Space // -JSON_reduce_spaces(c) { - return "" -} -// Key-value pair // -JSON_reduce_keyvalue(c){ - return Object(c[3], c[1]) -} -// Array // -JSON_reduce_array(c){ - ret := Object() - - new_idx := (c.maxindex() - 1) \/\/ 2 - for old_idx, token in c { - if (mod(old_idx,2) == 0) { - ret[new_idx] := token - new_idx -= 1 - } - } - return ret -} -// Objects // -JSON_reduce_object(c){ - ret := Object() - for old_idx, key_val in c { - if (mod(old_idx,2) == 0) { - for key, val in key_val { - ret[key] := val - } - } - } - return ret -} - - - -// Main parsing method // -JSON_from(s){ - - ret := Object() - pos := 1 - symbols := "" - len := strLen(s) - - // Loop over the tokens // - while (pos <= len) { - - // Shift a token // - t := JSON_shift(s,pos,symbols,ret) - - // Reduce // - symbols := JSON_reduce(t["symbols"],ret), pos := t["pos"] - - } - - // If succesfully reduced, return the object/array // - if (symbols == "O" || symbols == "A") - return ret[""] - else - JSON_error("Invalid JSON string, cannot convert to object.") -} - - - -// Read a token and shift in symbol to the stack // -JSON_shift(s, pos, symbols, ret){ - - global JSON_regexps - - for symbol,regexp in JSON_regexps { - - // match 1 includes quotes, match 2 doesn't // - RegexMatch(s, "PSi)(" . regexp . ")", match_, pos) - if (match_pos1 == pos){ - - // Add current state to the symbol stack // - symbols .= symbol - - // Update position // - pos += match_len1 - - // Insert the value in the value stack // - ret.insert( JSON_unescape(substr(s, match_pos2, match_len2)) ) +#Escapechar \ +#CommentFlag // + + +// Static initialization for stdlib, by fincs at autohotkey.com forums // +__json_init() +{ + global + static _ := __json_init() + $$ := Object() + JSON_init() +} + + +// Simple access to global variable $$ // +$(path, val = "") { + + global $$ + tempobj := $$ + + last := (instr(path, ".") + ? substr(path, 1+instr(path, ".", false, -1)) + : path) + + Loop, Parse, path, \. + { + if (val != "") { + if (last = A_loopfield){ + tempObj[A_loopfield] := val + continue + } else if (!tempObj[A_Loopfield]) + tempObj[A_loopfield] := Object() + } else if (!tempObj) + break + tempObj := tempObj[A_loopfield] + } + + if (! tempObj) + JSON_error("Cannot find or set entry " . path ) + else + return (val = "" ? tempObj : 0 ) +} + +// Save JSON string to file // +JSON_save(obj, filename, spacing=35, block=" ", level=1) { + + file := FileOpen(filename, "w") + jsonString := JSON_to(obj, spacing, block, level) "\n" + bytesWritten := file.write(jsonString) + file.close() + + if (bytesWritten <= 0) + JSON_error("Cannot write file " . filename) + else + return bytesWritten +} + +// Load JSON string from file // +JSON_load(filename) { + file := FileOpen(filename, "r") + jsonString := file.read() + file.close() + if (jsonString == "") + JSON_error("No file found, or blank file.") + return JSON_from(jsonString) +} + +// Error handling // +JSON_error(s){ + Msgbox, % "[" . A_now . "] " . s + Exit +} + +// Escape / unescape json keys and values // +JSON_escape(s){ + StringReplace, s, s, \\, \\\\, All + StringReplace, s, s, ', \\', All + StringReplace, s, s, ", \\", All + return s +} +JSON_unescape(s){ + StringReplace, s, s, \\\\, \\, All + StringReplace, s, s, \\', ', All + StringReplace, s, s, \\", ", All + return s +} + +// Turns an object to a JSON string // +JSON_to(obj, spacing = 50, block = " ", level = "1" ) { + + s := "" + for k, v in obj + { + // New line // + if (s != "") + s .= "," + s .= "\n" + + // Indent key // + Loop, %level% + s .= block + + // Escape key and value // + k := JSON_escape(k) + v := JSON_escape(v) + + // Write key // + s .= """" k """: " + + // If object, do recursion // + if (isobject(v)) { + s .= JSON_to(v, spacing, block, level + 1 ) + } else { + + // LeftAlign the second column // + totalKeyLength := level * strlen(block) + strlen(k) + 2 + if (spacing >= totalKeyLength ) { + valueIndent := spacing - totalKeyLength + loop, %valueIndent% + s .= " " + } + // Quote non-number values // + if v is not number + v := """" v """" + + // New line // + s .= v + } + } + + // Return // + if ( (s == "") && !isobject(obj) ) { + s := Object() + } else if ( (s == "") && isobject(obj) ) { + s := "{}" + } else { + s := "{" s "\n" + level -= 1 + Loop, %level% + s .= block + s .= "}" + } + return s + +} + +// Initialize the shift-reduce tables // +JSON_init(){ + + #EscapeChar ` + global JSON_regexps, JSON_rules + + // symbol : regexp // + JSON_regexps := Object( "" + . " " , "(\s+)" + , "{" , "({)" + , "[" , "(\[)" + , "]" , "(\])" + , "}" , "(})" + , "Q" , "'([^'\\]*(\\.[^'\\]*)*)'" + , "S" , """([^""\\]*(\\.[^""\\]*)*)""" + , "N" , "([+\-]?\d+([.,]\d+)?)" + , "D" , "(true|false|null)" + , ":" , "(:)" + , "," , "(,)" + . "" ) + + // 1) Match "key" in the symbol stack // + // 2) Replace with "sub" in the symbol stack // + // 3) Remove len("key") from the result stack // + // 4) Append the result of function "func" on the result stack // + JSON_rules := Object() + JSON_rules[0] := Object( "key", "(\s+)", "sub", "" , "func", "JSON_reduce_spaces" ) + JSON_rules[1] := Object( "key", "([QS]:[QSNOAD])", "sub", "_", "func", "JSON_reduce_keyvalue" ) + JSON_rules[2] := Object( "key", "(\[(([QSNOAD](,[QSNOAD])*\])|\]))", "sub", "A", "func", "JSON_reduce_array" ) + JSON_rules[3] := Object( "key", "({}|{_(,_)*})", "sub", "O", "func", "JSON_reduce_object" ) + + #Escapechar \ + +} + +// Reducing functions // +// Space // +JSON_reduce_spaces(c) { + return "" +} +// Key-value pair // +JSON_reduce_keyvalue(c){ + return Object(c[3], c[1]) +} +// Array // +JSON_reduce_array(c){ + ret := Object() + + new_idx := (c.maxindex() - 1) \/\/ 2 + for old_idx, token in c { + if (mod(old_idx,2) == 0) { + ret[new_idx] := token + new_idx -= 1 + } + } + return ret +} +// Objects // +JSON_reduce_object(c){ + ret := Object() + for old_idx, key_val in c { + if (mod(old_idx,2) == 0) { + for key, val in key_val { + ret[key] := val + } + } + } + return ret +} + + + +// Main parsing method // +JSON_from(s){ + + ret := Object() + pos := 1 + symbols := "" + len := strLen(s) + + // Loop over the tokens // + while (pos <= len) { + + // Shift a token // + t := JSON_shift(s,pos,symbols,ret) + + // Reduce // + symbols := JSON_reduce(t["symbols"],ret), pos := t["pos"] + + } + + // If succesfully reduced, return the object/array // + if (symbols == "O" || symbols == "A") + return ret[""] + else + JSON_error("Invalid JSON string, cannot convert to object.") +} + + + +// Read a token and shift in symbol to the stack // +JSON_shift(s, pos, symbols, ret){ + + global JSON_regexps + + for symbol,regexp in JSON_regexps { + + // match 1 includes quotes, match 2 doesn't // + RegexMatch(s, "PSi)(" . regexp . ")", match_, pos) + if (match_pos1 == pos){ + + // Add current state to the symbol stack // + symbols .= symbol + + // Update position // + pos += match_len1 + + // Insert the value in the value stack // + ret.insert( JSON_unescape(substr(s, match_pos2, match_len2)) ) - // Return the updated symbol stack and pos // - return Object("symbols", symbols, "pos", pos) - } - } + // Return the updated symbol stack and pos // + return Object("symbols", symbols, "pos", pos) + } + } - // If there is nothing to shift, error // - JSON_error("Error at pos:" pos "\n" substr(s,pos-4)) - exit -} + // If there is nothing to shift, error // + JSON_error("Error at pos:" pos "\n" substr(s,pos-4)) + exit +} -// Reduces groups of symbols into others according to the rule table // -JSON_reduce(symbols, ret){ +// Reduces groups of symbols into others according to the rule table // +JSON_reduce(symbols, ret){ - global JSON_regexps, JSON_rules + global JSON_regexps, JSON_rules - rule_idx := 0 + rule_idx := 0 - // Loop over rules, to check if it's possible to reduce tokens // - while (rule_idx <= JSON_rules.maxIndex()) { + // Loop over rules, to check if it's possible to reduce tokens // + while (rule_idx <= JSON_rules.maxIndex()) { - children := Object() - rule := JSON_rules[rule_idx] - old_symbols := rule["key"] - new_symbol := rule["sub"] - reduce_func := rule["func"] + children := Object() + rule := JSON_rules[rule_idx] + old_symbols := rule["key"] + new_symbol := rule["sub"] + reduce_func := rule["func"] - // Find something to reduce // - Regexmatch(symbols, "PSi)" . old_symbols . "$", match_) + // Find something to reduce // + Regexmatch(symbols, "PSi)" . old_symbols . "$", match_) - // If you find nothing, continue to the next rule // - if ( match_pos1 < 1 ) { - rule_idx += 1 - continue - } + // If you find nothing, continue to the next rule // + if ( match_pos1 < 1 ) { + rule_idx += 1 + continue + } - // If you find something, remove the symbols from the symbols stack // - // and reduce the tokens in the result stack // - Loop, %match_len1% { - if (ryle_idx != 0 ) - children.insert( ret[ret.maxindex()] ) - ret.remove() - stringtrimright, symbols, symbols, 1 - } + // If you find something, remove the symbols from the symbols stack // + // and reduce the tokens in the result stack // + Loop, %match_len1% { + if (ryle_idx != 0 ) + children.insert( ret[ret.maxindex()] ) + ret.remove() + stringtrimright, symbols, symbols, 1 + } - // Append the reduced symbol to the symbol stack // - symbols .= new_symbol - rule_idx := 0 + // Append the reduced symbol to the symbol stack // + symbols .= new_symbol + rule_idx := 0 - // Reduce the tokens into a new one // - if ((new_token := %reduce_func%(children)) != "") - ret[ret.maxindex()+1] := new_token + // Reduce the tokens into a new one // + if ((new_token := %reduce_func%(children)) != "") + ret[ret.maxindex()+1] := new_token - } + } - return symbols + return symbols } \ No newline at end of file diff --git a/more libs/Edit/lib/Hunspellx64.dll b/more libs/Edit/lib/Hunspellx64.dll deleted file mode 100644 index cdc2b5d8..00000000 Binary files a/more libs/Edit/lib/Hunspellx64.dll and /dev/null differ diff --git a/more libs/Edit/lib/Hunspellx86.dll b/more libs/Edit/lib/Hunspellx86.dll deleted file mode 100644 index 6e555d42..00000000 Binary files a/more libs/Edit/lib/Hunspellx86.dll and /dev/null differ diff --git a/more libs/Various1/ansi-test.ahk b/more libs/Various1/ansi-test.ahk new file mode 100644 index 00000000..63cbf825 --- /dev/null +++ b/more libs/Various1/ansi-test.ahk @@ -0,0 +1,148 @@ +; ahk: console +#NoEnv +#Warn All, StdOut + +#Include +#Include +#Include +#Include +#Include +#Include +#Include + +#Include %A_ScriptDir%\..\ansi.ahk + +class AnsiTest extends TestCase { + + @Test_PlainStrReplaceStr() { + testString := "iVGVBDfMHMdkjmglRfzUjZrNqHruIqcTxKCJtlmdGrzcwUFrGgzw" + this.assertEquals(Ansi.plainStrReplaceStr(testString, -1, "|") + , "|" SubStr(testString, 2)) + this.assertEquals(Ansi.plainStrReplaceStr(testString, 0, "|") + , "|" SubStr(testString, 2)) + this.assertEquals(Ansi.plainStrReplaceStr(testString, 1, "|") + , "|" SubStr(testString, 2)) + this.assertEquals(Ansi.plainStrReplaceStr(testString, 20, "|") + , SubStr(testString, 1, 19) "|" SubStr(testString, 21)) + this.assertEquals(Ansi.plainStrReplaceStr(testString, 21, "|") + , SubStr(testString, 1, 20) "|" SubStr(testString, 22)) + this.assertEquals(Ansi.plainStrReplaceStr(testString, 999, "|") + , SubStr(testString, 1, StrLen(testString)-1) "|") + ; ahklint-ignore-begin: W002 + this.assertEquals(Ansi.plainStrReplaceStr("iVGVBDfMHMdkjmglRfzUjZrNqHruIqcTxKCJtlmdGrzcwUFrGgzw", 2, "|") + , "i|GVBDfMHMdkjmglRfzUjZrNqHruIqcTxKCJtlmdGrzcwUFrGgzw") + this.assertEquals(Ansi.plainStrReplaceStr("iVGVBDfMHMdkjmglRfzUjZrNqHruIqcTxKCJtlmdGrzcwUFrGgzw", 2, "|") + , "i|GVBDfMHMdkjmglRfzUjZrNqHruIqcTxKCJtlmdGrzcwUFrGgzw") + this.assertEquals(Ansi.plainStrReplaceStr("aaa bbbbb cc ddddddddd eeee fff ggggg hhhhhhhhh iiiiiii jjj kk", 48, "@") + , "aaa bbbbb cc ddddddddd eeee fff ggggg hhhhhhhhh@iiiiiii jjj kk") + ; ahklint-ignore-end + } + + @Test_PlainStrInsert() { + this.assertEquals(Ansi.plainStrInsert("asdfjklö", 1, "|") + , "|asdfjklö") + this.assertEquals(Ansi.plainStrInsert("asdfjklö", 2, "|") + , "a|sdfjklö") + this.assertEquals(Ansi.plainStrInsert("asdfjklö", 4, "|") + , "asd|fjklö") + this.assertEquals(Ansi.plainStrInsert("asdfjklö", 0, "|") + , "|asdfjklö") + this.assertEquals(Ansi.plainStrInsert("asdfjklö", 99, "|") + , "asdfjklö|") + this.assertEquals(Ansi.plainStrInsert("asdfjklö", 4, "|") + , "asd|fjklö") + this.assertEquals(Ansi.plainStrInsert("asdfjklö", 4, "|") + , "asd|fjklö") + st := "abcdefghijklmnopqrstuvwxyz" + this.assertEquals(st := Ansi.plainStrInsert(st, 3, "-") + , "ab-cdefghijklmnopqrstuvwxyz") + this.assertEquals(st := Ansi.plainStrInsert(st, 10, "-") + , "ab-cdefgh-ijklmnopqrstuvwxyz") + this.assertEquals(st := Ansi.plainStrInsert(st, 23, "-") + , "ab-cdefgh-ijklmnopqrst-uvwxyz") + } + + + @Test_WordWrap() { + this.assertEquals(Ansi.wordWrap("12345", 20), "12345") + ; ahklint-ignore-begin: W002 + this.assertEquals(Ansi.wordWrap("aaa bbbbb cc ddddddddd eeee fff ggggg hhhhhhhhh iiiiiii jjj kk lll mmmmm nnnnnnnnnnnn oooo ppppp qqq rr ssss tt uuuu vv www xxxxxxxxxxxxxxxxxxx+-xxxxxxxxxxxxX yyY zz.", 20), "aaa bbbbb cc`nddddddddd eeee fff`nggggg hhhhhhhhh`niiiiiii jjj kk lll`nmmmmm nnnnnnnnnnnn`noooo ppppp qqq rr`nssss tt uuuu vv www`nxxxxxxxxxxxxxxxxxxx+`n-xxxxxxxxxxxxX yyY`nzz.") + this.assertEquals(Ansi.wordWrap("aaa bbbbb cc ddddddddd eeee fff ggggg hhhhhhhhh iiiiiii jjj kk`nlll mmmmm nnnnnnnnnnnn oooo ppppp qqq rr ssss tt uuuu vv www xxxxxxxxxxxxxxxxxxx+-xxxxxxxxxxxxX yyY zz.", 20), "aaa bbbbb cc`nddddddddd eeee fff`nggggg hhhhhhhhh`niiiiiii jjj kk`nlll mmmmm`nnnnnnnnnnnnn oooo`nppppp qqq rr ssss tt`nuuuu vv www`nxxxxxxxxxxxxxxxxxxx+`n-xxxxxxxxxxxxX yyY`nzz.") + this.assertEquals(Ansi.wordWrap("aaa bbbbb cc ddddddddd eeee fff ggggg hhhhhhhhh iiiiiii jjj kk`n`nlll mmmmm nnnnnnnnnnnn oooo ppppp qqq rr ssss tt uuuu vv www xxxxxxxxxxxxxxxxxxx+-xxxxxxxxxxxxX yyY zz.", 20), "aaa bbbbb cc`nddddddddd eeee fff`nggggg hhhhhhhhh`niiiiiii jjj kk`n`nlll mmmmm`nnnnnnnnnnnnn oooo`nppppp qqq rr ssss tt`nuuuu vv www`nxxxxxxxxxxxxxxxxxxx+`n-xxxxxxxxxxxxX yyY`nzz.") + this.assertEquals(Ansi.wordWrap("aaa bbbbb cc ddddddddd eeee fff ggggg hhhhhhhhh iiiiiii jjj kk`n`nlll mmmmm nnnnnnnnnnnn oooo ppppp qqq rr ssss tt uuuu vv www xxxxxxxxxxxxxxxxxxx+-xxxxxxxxxxxxX yyY zz.", 20), "aaa bbbbb cc`nddddddddd eeee fff`nggggg hhhhhhhhh`niiiiiii jjj kk`n`nlll mmmmm`nnnnnnnnnnnnn oooo`nppppp qqq rr ssss tt`nuuuu vv www`nxxxxxxxxxxxxxxxxxxx+`n-xxxxxxxxxxxxX yyY`nzz.") + this.assertEquals(Ansi.wordWrap("1: At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. Sanctus sea sed takimata ut vero voluptua. Est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.", 86), "1: At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,`nno sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,`nconsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et`ndolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo`ndolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem`nipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At`naccusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et`net invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. Sanctus sea`nsed takimata ut vero voluptua. Est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit`namet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et`ndolore magna aliquyam erat.") + ; ahklint-ignore-end + } + + @Test_Wrap() { + ; this.AssertEquals(Ansi.Wrap("", 5), "") + this.assertEquals(Ansi.wrap("12345", 5), "12345") + this.assertEquals(Ansi.wrap("123456", 5), "12345`n6") + ; ahklint-ignore-begin: W002 + this.assertEquals(Ansi.wrap("aaa bbbbb cc ddddddddd eeee fff ggggg hhhhhhhhh iiiiiii jjj kk lll mmmmm nnnnnnnnnnnn oooo ppppp qqq rr ssss tt uuuu vv www xxxxxxxxxxxxxxxxxxx+-xxxxxxxxxxxxX yyY zz.", 20) + , "aaa bbbbb cc ddddddd`n" + . "dd eeee fff ggggg hh`n" + . "hhhhhhh iiiiiii jjj `n" + . "kk lll mmmmm nnnnnnn`n" + . "nnnnn oooo ppppp qqq`n" + . " rr ssss tt uuuu vv `n" + . "www xxxxxxxxxxxxxxxx`n" + . "xxx+-xxxxxxxxxxxxX y`n" + . "yY zz.") + this.assertEquals(Ansi.wrap(".\mack.ahk:815:103: op.Add(new OptParser.String(0, ""color-filename"", _color_filename, ""color"", """", OptParser.OPT_ARG, G_opts[""color_filename""], G_opts[""color_filename""]))", 100) + , ".\mack.ahk:815:103: op.Add(new OptParser.String(0, ""color-filename"", _color_filename, ""color"", """"`n" + . ", OptParser.OPT_ARG, G_opts[""color_filename""], G_opts[""color_filename""]))") + this.assertEquals(Ansi.wrap("aaa bbbbb cc ddddddddd eeee fff ggggg hhhhhhhhh iiiiiii jjj kk lll mmmmm nnnnnnnnnnnn oooo ppppp qqq rr ssss tt uuuu vv www xxxxxxxxxxxxxxxxxxx+-xxxxxxxxxxxxX yyY zz.", 20) + , "aaa bbbbb cc ddddddd`n" + . "dd eeee fff ggggg hh`n" + . "hhhhhhh iiiiiii jjj `n" + . "kk lll mmmmm nnnnnnn`n" + . "nnnnn oooo ppppp qqq`n" + . " rr ssss tt uuuu vv `n" + . "www xxxxxxxxxxxxxxxx`n" + . "xxx+-xxxxxxxxxxxxX y`n" + . "yY zz.") + this.assertEquals(Ansi.wrap(" 30;40m 30;41m 30;42m 30;43m 30;44m 30;45m 30;46m 30;47m `n" + . " 31;40m 31;41m 31;42m 31;43m 31;44m 31;45m 31;46m 31;47m `n", 80) + , " 30;40m 30;41m 30;42m 30;43m 30;44m 30;45m 30;46m 30;47m `n" + . " 31;40m 31;41m 31;42m 31;43m 31;44m 31;45m 31;46m 31;47m `n") + ; ahklint-ignore-end + } + + @Test_Readable() { + ; ahklint-ignore-begin: W002 + this.assertEquals(Ansi.readable("Warum überhaupt sind die ldapai_extensions nicht korrekt gefüllt?") + , "Warum berhaupt sind die ldapai_extensions nicht korrekt gefllt?") + this.assertEquals(Ansi.readable("Warum sind die ldapai_extensions nicht korrekt gefüllt?", false) + , "Warum sind die ldapai_extensions nicht korrekt gefllt?") + ; ahklint-ignore-end + } + + @Test_setGraphic() { + this.assertEquals(Ansi.setGraphic(1,2,3), Ansi.ESC "[1;2;3m") + this.assertEquals(Ansi.setGraphic(94), Ansi.ESC "[94m") + this.assertEquals(Ansi.setGraphic([93,101]), Ansi.ESC "[93;101m") + } + + @Test_writeToStdErr() { + Ansi.stdErr := FileOpen(A_Temp "\ansi-test-err.txt", "w `n") + Ansi.writeLine("TEST,1,2,3",, Ansi.stdErr) + Ansi.stdErr.close() + this.assertEquals(TestCase.fileContent(A_Temp "\ansi-test-err.txt") + , "TEST,1,2,3`r`n") + Ansi.stdErr := Ansi.__InitStdErr() + FileDelete %A_Temp%\ansi-test-err.txt + } + + @Test_readLine() { + saveStdIn := Ansi.stdIn + Ansi.stdIn := FileOpen(A_ScriptDir "\testdata\input.txt", "r") + this.assertEquals(Ansi.readLine(), "Das ist ein Test!") + Ansi.stdIn.close() + Ansi.stdIn := saveStdIn + } +} + +exitapp AnsiTest.runTests() + +; vim: ts=4:sts=4:sw=4:tw=0:noet diff --git a/more libs/Various1/arrays-test.ahk b/more libs/Various1/arrays-test.ahk new file mode 100644 index 00000000..b91afb3b --- /dev/null +++ b/more libs/Various1/arrays-test.ahk @@ -0,0 +1,454 @@ +; ahk: console +#NoEnv +#Warn All, StdOut + +#Include +#Include +#Include +#Include +#Include +#Include +#Include +#Include + +#Include %A_ScriptDir%\..\arrays.ahk + +class ArraysTest extends TestCase { + + requires() { + return [TestCase, Arrays] + } + + @Test_class() { + this.assertTrue(IsObject(Arrays)) + this.assertException(Arrays, "__new") + this.assertTrue(IsFunc(Arrays.equal)) + this.assertTrue(IsFunc(Arrays.countOccurences)) + this.assertTrue(IsFunc(Arrays.keys)) + this.assertTrue(IsFunc(Arrays.values)) + this.assertTrue(IsFunc(Arrays.distinct)) + this.assertTrue(IsFunc(Arrays.removeValue)) + this.assertTrue(IsFunc(Arrays.shift)) + this.assertTrue(IsFunc(Arrays.append)) + this.assertTrue(IsFunc(Arrays.copyOf)) + this.assertTrue(IsFunc(Arrays.flatten)) + this.assertTrue(IsFunc(Arrays.forEach)) + this.assertTrue(IsFunc(Arrays.map)) + this.assertTrue(IsFunc(Arrays.reduce)) + } + + @Test_equal() { + this.assertException(Arrays, "equal",,, 0, []) + this.assertException(Arrays, "equal",,, [], 0) + this.assertTrue(Arrays.equal([], [])) + this.assertTrue(Arrays.equal([0], [0])) + this.assertFalse(Arrays.equal([0, 1], [0])) + this.assertFalse(Arrays.equal([1], [2, 3])) + this.assertFalse(Arrays.equal([0, 1], [1, 0])) + this.assertTrue(Arrays.equal([3, 4], [3, 4])) + } + + @Test_intersection() { + this.assertException(Arrays.Intersection, "__new",,, 0, []) + this.assertException(Arrays.Intersection, "__new",,, [], 0) + this.assertTrue(Arrays.equal(new Arrays.Intersection([], []).result() + , [])) + this.assertTrue(IsObject(new Arrays.Intersection([1], [2]))) + this.assertTrue(Arrays.equal(new Arrays.Intersection([1,2,3,4] + , [3,4,5,6]).result(), [3,3,4,4])) + a1 := [1,2,3,4], a2 := [3,4,5,6] + a3 := new Arrays.Intersection(a1, a2).result() + this.assertTrue(Arrays.equal(a1, [1,2,3,4])) + this.assertTrue(Arrays.equal(a2, [3,4,5,6])) + this.assertTrue(Arrays.equal(a3, [3,3,4,4])) + this.assertTrue(Arrays.equal(new Arrays + .Intersection(["abc", "def", "ghi", "jkl"] + , ["abc", "mno"]).result(), ["abc", "abc"])) + this.assertTrue(Arrays.equal(new Arrays.Intersection([1,2,3,4], [5,6,7]) + .result() + , [])) + this.assertTrue(Arrays.equal(new Arrays.Intersection([2,2,3], [2,3,3]) + .result() + , [2,2,3,3])) + this.assertTrue(Arrays.equal(new Arrays + .Intersection([2,11,23,31,41], [2,3,7,41,601] + , ArraysTest.compareNumbers.bind(ArraysTest)).result() + , [2,2,41,41])) + this.assertTrue(Arrays.equal(new Arrays.Intersection(["g", "h", "I"] + , ["h", "i", "j"]).result(), ["h", "h"])) + } + + @Test_union() { + this.assertTrue(Arrays.equal(new Arrays.Union([], []).result(), [])) + this.assertTrue(Arrays.equal(new Arrays.Union([1], [2]).result() + , [1,2])) + this.assertTrue(Arrays.equal(new Arrays.Union([1,2,3,4], [3,4,5,6]) + .result(), [1,2,3,3,4,4,5,6])) + this.assertTrue(Arrays.equal(new Arrays + .Union(["abc","def","ghi","jkl"], ["abc","mno"]).result() + , ["abc","abc","def","ghi","jkl","mno"])) + this.assertTrue(Arrays.equal(new Arrays.Union([1,2,3,4], [5,6,7]) + .result(), [1,2,3,4,5,6,7])) + this.assertTrue(Arrays.equal(new Arrays.Union([2,2,3], [2,3,3]) + .result(), [2,2,2,3,3,3])) + } + + @Test_symmetricDifference() { + this.assertTrue(Arrays.equal(new Arrays + .SymmetricDifference([1,2,3], [3,4]).result(), [1,2,4])) + this.assertTrue(Arrays.equal(new Arrays + .SymmetricDifference(["A","B","C","H","f","i"] + , ["A","C","D","G","I","e","f"] + , ArraysTest.compareCaseSense.bind(this)).result() + , ["B","D","G","H","I","e","i"])) + } + + @Test_relativeComplement() { + this.assertTrue(Arrays.equal(new Arrays.RelativeComplement([1,2,3] + ,[2,3,4]).result(), [1])) + this.assertTrue(Arrays.equal(new Arrays.RelativeComplement([2,3,4] + ,[1,2,3]).result(), [4])) + this.assertTrue(Arrays.equal(new Arrays + .relativeComplement(["A","B","C","H","f","i"] + , ["A","C","D","G","I","e","f"] + , ArraysTest.compareCaseSense.bind(this)).result() + , ["B","H","i"])) + } + + compareCaseSense(firstElement, secondElement) { + scs := A_StringCaseSense + StringCaseSense on + firstElement .= "$" + secondElement .= "$" + result := (firstElement == secondElement ? 0 + : firstElement > secondElement ? +1 + : -1) + StringCaseSense %scs% + return result + } + + @Test_countOccurences() { + this.assertException(Arrays, "countOccurences",,, 0, 1) + this.assertEquals(Arrays.countOccurences([], ""), 0) + this.assertEquals(Arrays.countOccurences([1], 1), 1) + this.assertEquals(Arrays.countOccurences([1,1,1], 1), 3) + this.assertEquals(Arrays + .countOccurences([1,2,3,4,3,2,1,3,2,3,1,2,3,1,5,3], 1), 4) + this.assertEquals(Arrays + .countOccurences([1,2,3,4,3,2,1,3,2,3,1,2,3,1,5,3], 2), 4) + this.assertEquals(Arrays + .countOccurences([1,2,3,4,3,2,1,3,2,3,1,2,3,1,5,3], 3), 6) + this.assertEquals(Arrays.countOccurences(["T", "e", "s", "t"], "t"), 2) + this.assertEquals(Arrays + .countOccurences(["T", "e", "s", "t"], "t", true), 1) + this.assertEquals(Arrays + .countOccurences(["T", "e", "s", "t"], "T", true), 1) + } + + @Test_keys() { + this.assertException(Arrays, "keys",,, 0) + this.assertTrue(Arrays.equal(Arrays.keys([0,3,6,9,12]), [1,2,3,4,5])) + this.assertTrue(Arrays.equal(Arrays.keys({1: 3, 3: 6, 6: 9, 9: 12}) + , [1,3,6,9])) + } + + @Test_values() { + this.assertException(Arrays, "values",,, 0) + this.assertTrue(Arrays.equal(Arrays.values([0,3,6,9,12]), [0,3,6,9,12])) + this.assertTrue(Arrays.equal(Arrays.values({1: 3, 3: 6, 6: 9, 9: 12}) + , [3,6,9,12])) + } + + @Test_distinct() { + this.assertException(Arrays, "distinct",,, 0) + this.assertTrue(Arrays.equal(Arrays + .distinct([1,2,3,4,3,2,1,3,2,3,1,2,3,1,5,3]), [1,2,3,4,5])) + this.assertTrue(Arrays.equal(Arrays + .distinct([1,3,4,3,1,3,3,1,3,1,5,3]), [1,3,4,5])) + } + + @Test_removeValue() { + this.assertException(Arrays, "removeValue",,, 0, 1) + a := [1,2,3,4,3,2,1,3,2,3,1,2,3,1,5,3] + this.assertEquals(Arrays.removeValue(a, 2), 4) + this.assertTrue(Arrays.equal(a, [1,3,4,3,1,3,3,1,3,1,5,3])) + this.assertEquals(Arrays.removeValue([2,3,3], 3), 2) + this.assertEquals(Arrays.removeValue([2,3,3,1,3,1], 3), 3) + } + + @Test_shift() { + this.assertEquals(Arrays.shift([1,3,0,3]), 1) + this.assertTrue(Arrays.equal(Arrays.shift([1,3,0,3], 0), [1])) + this.assertEquals(Arrays.shift([1,3,0,3], 1), 1) + this.assertTrue(Arrays.equal(Arrays.shift([1,3,0,3], 2), [1,3])) + this.assertTrue(Arrays.equal(Arrays.shift([1,3,0,3], 3), [1,3,0])) + this.assertTrue(Arrays.equal(Arrays.shift([1,3,0,3], 4), [1,3,0,3])) + a := [1,2,3,4,3,2,1,3,2,3,1,2,3,1,5,3] + this.assertEquals(Arrays.shift(a), 1) + this.assertEquals(Arrays.shift(a), 2) + this.assertEquals(Arrays.shift(a), 3) + this.assertTrue(Arrays.equal(Arrays.shift(a, false), [4])) + this.assertTrue(Arrays.equal(Arrays.shift(a, 2), [3,2])) + this.assertTrue(Arrays.equal(Arrays.shift(a, 5), [1,3,2,3,1])) + this.assertTrue(Arrays.equal(a, [2,3,1,5,3])) + a := ["a", "b"] + this.assertEquals(Arrays.shift(a), "a") + this.assertEquals(Arrays.shift(a), "b") + this.assertEquals(Arrays.equal(Arrays.shift([1,3,0,3], 99), [1,3,0,3])) + } + + @Test_append() { + a := ["Mo", "Di", "Mi", "Do", "Fr"] + this.assertEquals(Arrays.append(a, ["Sa", "So"]), 7) + this.assertTrue(Arrays.equal(a + , ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"])) + } + + @Test_wrap() { + this.assertEquals(Arrays.wrap(["this is a test", "this is another test"] + , 10), "this is a`ntest`nthis is`nanother`ntest`n") + this.assertEquals(Arrays.wrap(["term can have one of the following values", ". a - means A", ". b - represents a very long description which has to be wrapped at the end of the line"], 60, " ", "--]", true), "--]term can have one of the following values`n . a - means A`n . b - represents a very long description which has to be`n wrapped at the end of the line`n") ; ahklint-ignore: W002 + this.assertEquals(Arrays.wrap(["term can have one of the following values", ". a - means A", ". b - represents a very long description which has to be wrapped at the end of the line"], 60, " ", "--]", false), "--] term can have one of the following values`n . a - means A`n . b - represents a very long description which has to be`n wrapped at the end of the line`n") ; ahklint-ignore: W002 + } + + @Test_toString() { + this.assertEquals(Arrays.toString(["abc", "def", "ghi"]) + , "abc def ghi") + this.assertEquals(Arrays.toString(["abc", "def", "ghi"], ", ") + , "abc, def, ghi") + this.assertEquals(Arrays.toString(["abc", ["def", "ghi"]], ", ") + , "abc, def, ghi") + this.assertEquals(Arrays.toString([]), "") + } + + @Test_index() { + a := Arrays.index({1: "a", 2: "b", 3: "c"}) + this.assertEquals(a["a"], 1) + this.assertEquals(a["b"], 2) + this.assertEquals(a["c"], 3) + a := Arrays.index({1: "a", 2: "b", 3: "c", 4: "b"}) + this.assertEquals(a["a"], 1) + this.assertTrue(Arrays.equal(a["b"], [2, 4])) + this.assertEquals(a["c"], 3) + a := Arrays.index({"a": "x", "b": "y", "c": "z", "d": "x"}) + this.assertTrue(Arrays.equal(a["x"], ["a", "d"])) + this.assertEquals(a["y"], "b") + this.assertEquals(a["z"], "c") + } + + @Test_copyOf() { + a := [0, 1, 2, 3] + b := Arrays.copyOf(a, 4) + this.assertTrue(Arrays.equal(a, b)) + b := Arrays.copyOf(a, 3) + this.assertTrue(Arrays.equal(b, [0, 1, 2])) + b := Arrays.copyOf(a, 6) + this.assertTrue(Arrays.equal(b, [0, 1, 2, 3, 0, 0])) + b := Arrays.copyOf(a, 6, -1) + this.assertTrue(Arrays.equal(b, [0, 1, 2, 3, -1, -1])) + b := Arrays.copyOf(a, 0) + this.assertTrue(Arrays.equal(b, [])) + } + + @Test_flatten() { + a := [1, [2, 3, [4, 5], 6, 7, 8], 9, 10] + f := Arrays.flatten(a) + this.assertEquals(f.minIndex(), 1) + this.assertEquals(f.maxIndex(), 10) + this.assertEquals(f[1], 1) + this.assertEquals(f[2], 2) + this.assertEquals(f[3], 3) + this.assertEquals(f[4], 4) + this.assertEquals(f[5], 5) + this.assertEquals(f[6], 6) + this.assertEquals(f[7], 7) + this.assertEquals(f[8], 8) + this.assertEquals(f[9], 9) + this.assertEquals(f[10], 10) + } + + @Test_unionWithSource() { + this.assertTrue(Arrays.equal(new Arrays + .Union(["abc","def","ghi","jkl"], ["abc","mno"],, true).result() + , ["(A) abc","(B) abc","(A) def" + ,"(A) ghi","(A) jkl","(B) mno"])) + this.assertTrue(Arrays.equal(new Arrays.Union([1,2,3,4] + , [3,4,5,6],, true).result() + , ["(A) 1","(A) 2","(A) 3","(B) 3" + ,"(A) 4","(B) 4","(B) 5","(B) 6"])) + } + + @Test_map() { + invoice := { customer: "BigCo" + , performances: [ { playID: "hamlet" } + , { playID: "othello" } ] } + + this.assertException(Arrays, "map",,, 0, "enrich") + this.assertException(Arrays, "map",,, invoice.performances + , "aMissingFunction") + + result := Arrays.map(invoice.performances, Func("enrich")) + this.assertEquals(result.count(), 2) + this.assertEquals(result[1].playID, "hamlet") + this.assertEquals(result[1].play, "Test") + this.assertEquals(result[1].amount, 42) + this.assertEquals(result[2].playID, "othello") + this.assertEquals(result[2].play, "Test") + this.assertEquals(result[2].amount, 42) + + result := Arrays.map(["a", "b"], Func("enrich")) + this.assertEquals(result.count(), 2) + this.assertEquals(result[1, 1], "a") + this.assertEquals(result[1].play, "Test") + this.assertEquals(result[1].amount, 42) + this.assertEquals(result[2, 1], "b") + this.assertEquals(result[2].play, "Test") + this.assertEquals(result[2].amount, 42) + + result := Arrays.map([], "enrich") + this.assertEquals(result.count(), 0) + } + + @Test_isArray() { + this.assertException(Arrays, "isArray",,, 0) + } + + @Test_isCallbackFunction() { + this.assertException(Arrays, "isCallbackFunction",,, "aMissingFunction") + } + + @Test_reduce() { + this.assertException(Arrays, "reduce",,, 0, "sum", 0) + this.assertException(Arrays, "reduce",,, [], "aMissingFunction", 0) + this.assertEquals(Arrays.reduce([1,2,3,4], Func("sum"), 5), 15) + this.assertEquals(Arrays.reduce([1,2,3,4], Func("mult"), 5), 120) + this.assertEquals(Arrays.reduce(["T", "e", "s", "t"] + , Func("ArraysTest.enumeration").bind(ArraysTest), "A") + , "A;T;e;s;t") + this.assertEquals(Arrays.reduce(["T", "e", "s", "t"] + , ArraysTest.enumeration.bind(ArraysTest), "A") + , "A;T;e;s;t") + this.assertEquals(Arrays.reduce(["T", "e", "s", "t"], Func("cat"), "A ") + , "A Test") + this.assertEquals(Arrays.reduce([15, 12, 10, 14], Func("Min"), +9999) + , 10) + this.assertEquals(Arrays.reduce([15, 12, 10, 14], Func("Max"), -9999) + , 15) + } + + enumeration(accumulator, element) { + return accumulator ";" element + } + + @Test_forEach() { + this.assertException(Arrays, "forEach",,, 0, "copyItems") + this.assertException(Arrays, "forEach",,, [], "aMissingFunction") + items := ["item1", "item2", "item3"] + copy := [] + Arrays.forEach(items, ArraysTest.copyItems.bind(ArraysTest, copy)) + this.assertEquals(copy.count(), 3) + this.assertEquals(copy[1], items[1]) + this.assertEquals(copy[2], items[2]) + this.assertEquals(copy[3], items[3]) + ; Just to demonstrate another use-case: + Arrays.forEach(copy, ArraysTest.logItems.bind(ArraysTest)) + } + + copyItems(copy, item) { + copy.push(item) + } + + logItems(item, index) { + OutputDebug % "`n" index ": " item + } + + @Test_filter() { + this.assertException(Arrays, "filter",,, 0, "findLongWords") + this.assertException(Arrays, "filter",,, [], "aMissingFunction") + words := ["spray", "limit", "elite", "exubertant", "destruction", "present"] ; ahklint-ignore: W002 + this.assertTrue(Arrays.equal(Arrays.filter(words + , ArraysTest.findLongWords.bind(ArraysTest)) + , ["exubertant", "destruction", "present"])) + } + + findLongWords(word) { + return StrLen(word) > 6 + } + + @Test_sort() { + this.assertException(Arrays, "sort",,, 0) + this.assertException(Arrays, "sort",,, [], "missingFunction") + months := ["Mar", "Jan", "Feb", "Dec"] + this.assertTrue(Arrays.equal(Arrays.sort(months) + , ["Dec", "Feb", "Jan", "Mar"])) + array1 := [1, 30, 4, 21, 100000] + this.assertTrue(Arrays.equal(Arrays.sort(array1) + , [1, 100000, 21, 30, 4])) + this.assertTrue(Arrays.equal(Arrays.sort(months + , ArraysTest.sortDescending.bind(ArraysTest)) + , ["Mar", "Jan", "Feb", "Dec"])) + months := ["Mar", "Jan", "Feb", "Dec"] + this.assertTrue(Arrays.equal(Arrays.sort(months + , ArraysTest.sortDescending.bind(ArraysTest)*-1) + , ["Dec", "Feb", "Jan", "Mar"])) + this.assertTrue(Arrays.equal(Arrays.sort(array1 + , ArraysTest.sortDescending.bind(ArraysTest)) + , [4, 30, 21, 100000, 1])) + this.assertTrue(Arrays.equal(Arrays.sort(array1 + , ArraysTest.compareNumbers.bind(ArraysTest)) + , [1, 4, 21, 30, 100000])) + } + + sortDescending(firstElement, secondElement) { + return Arrays.Quicksort.compareStrings(firstElement, secondElement) * -1 + } + + compareNumbers(firstElement, secondElement) { + return firstElement - secondElement + } + + @Test_sortByProperty() { + employees + := [{name: "Alice", salary: 2300.00} + , {name: "Bob", salary: 1950.00} + , {name: "Charlie", salary: 2160.00} + , {name: "Dave", salary: 2000.00}] + + salaryList := Arrays.sort(employees + , ArraysTest.compareBySalaryProperty.bind(ArraysTest)) + this.assertEquals(salaryList.count(), 4) + this.assertEquals(salaryList[1].name, "Bob") + this.assertEquals(salaryList[1].salary, 1950.00) + this.assertEquals(salaryList[2].name, "Dave") + this.assertEquals(salaryList[2].salary, 2000.00) + this.assertEquals(salaryList[3].name, "Charlie") + this.assertEquals(salaryList[3].salary, 2160.00) + this.assertEquals(salaryList[4].name, "Alice") + this.assertEquals(salaryList[4].salary, 2300.00) + } + + compareBySalaryProperty(a, b) { + return a.salary - b.salary + } +} + +enrich(anArray) { + result := anArray.clone() + result.play := "Test" + result.amount := 42 + return result +} + +sum(accumulator, element) { + return accumulator + element +} + +mult(accumulator, element) { + return accumulator * element +} + +cat(accumulator, element) { + return accumulator . element +} + +exitapp ArraysTest.runTests() diff --git a/more libs/Various1/base64-test.ahk b/more libs/Various1/base64-test.ahk new file mode 100644 index 00000000..c5f141d4 --- /dev/null +++ b/more libs/Various1/base64-test.ahk @@ -0,0 +1,52 @@ +; ahk: console +; ahklint-ignore-begin: W002 +#NoEnv +#Warn All, StdOut + +#Include + +#Include %A_ScriptDir%\..\base64.ahk + +class Base64Test extends TestCase { + + @Test_Class() { + this.assertEquals(Base64.CRYPT_STRING_BASE64, 0x00000001) + } + + @Test_encode() { + st := "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" + + l_1252 := strPutVar(st, st_1252, "cp1252") + this.assertEquals(Base64.encode(st_1252, l_1252) + , "UG9seWZvbiB6d2l0c2NoZXJuZCBh32VuIE3keGNoZW5zIFb2Z2VsIFL8YmVuLCBKb2dodXJ0IHVuZCBRdWFyaw==") + + l_utf8 := strPutVar(st, st_utf8, "utf-8") + this.assertEquals(Base64.encode(st_utf8, l_utf8) + , "UG9seWZvbiB6d2l0c2NoZXJuZCBhw59lbiBNw6R4Y2hlbnMgVsO2Z2VsIFLDvGJlbiwgSm9naHVydCB1bmQgUXVhcms=") + + l := StrPutVar("aov", staov, "cp1252") + OutputDebug % Base64.encode(staov, l) + } + + @Test_Decode() { + st := "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark" + + l_1252 := Base64.decode("UG9seWZvbiB6d2l0c2NoZXJuZCBh32VuIE3keGNoZW5zIFb2Z2VsIFL8YmVuLCBKb2dodXJ0IHVuZCBRdWFyaw==" + , 0, Base64.CRYPT_STRING_BASE64, st_1252) + this.assertEquals(StrGet(&st_1252, l_1252, "cp1252"), st) + + l_utf8 := Base64.decode("UG9seWZvbiB6d2l0c2NoZXJuZCBhw59lbiBNw6R4Y2hlbnMgVsO2Z2VsIFLDvGJlbiwgSm9naHVydCB1bmQgUXVhcms= " + , 0, Base64.CRYPT_STRING_BASE64, st_utf8) + this.assertEquals(StrGet(&st_utf8, l_utf8, "utf-8"), st) + } +} + +strPutVar(string, ByRef var, encoding) { + VarSetCapacity(var, StrPut(string, encoding) + * ((encoding="utf-16"||encoding="cp1200"||encoding="utf-8") ? 2 : 1)) + l := StrPut(string, &var, encoding) + return l-1 +} + +exitapp Base64Test.runTests() +; vim: ts=4:sts=4:sw=4:tw=0:noet diff --git a/more libs/Various1/bitset-test.ahk b/more libs/Various1/bitset-test.ahk new file mode 100644 index 00000000..cbcd3cc5 --- /dev/null +++ b/more libs/Various1/bitset-test.ahk @@ -0,0 +1,401 @@ +; ahk: console +#NoEnv +SetBatchLines -1 +#Warn All, StdOut + +#Include +#Include + +#Include %A_ScriptDir%\..\bitset.ahk + +class BitSetTest extends TestCase { + + requires() { + return [TestCase, Arrays, System, Math + , BitSet.requires()*] + } + + @Test_bitSetClass() { + this.assertEquals(BitSet.ADDRESS_BITS_PER_WORD, 6) + This.assertEquals(BitSet.BITS_PER_WORD, 64) + this.assertEquals(BitSet.BIT_INDEX_MASK, 63) + this.assertEquals(BitSet.WORD_MASK, SL(0xffffffffffffffff)) + this.assertTrue(IsFunc(BitSet.wordIndex)) + this.assertTrue(IsFunc(BitSet.checkInvariants)) + this.assertTrue(IsFunc(BitSet.recalculateWordsInUse)) + this.assertTrue(IsFunc(BitSet.__new)) + this.assertTrue(IsFunc(BitSet.initWords)) + this.assertTrue(IsFunc(BitSet.valueOfLong)) + this.assertTrue(IsFunc(BitSet.toLongArray)) + this.assertTrue(IsFunc(BitSet.expandTo)) + this.assertTrue(IsFunc(BitSet.checkRange)) + this.assertTrue(IsFunc(BitSet.flip)) + this.assertTrue(IsFunc(BitSet.length)) + this.assertTrue(IsFunc(BitSet.nextSetBit)) + } + + @Test_new() { + bs := new BitSet() + this.assertTrue(IsObject(bs)) + this.assertEquals(bs.length(), 0) + bs := new BitSet(0) + this.assertTrue(IsObject(bs)) + this.assertEquals(bs.length(), 0) + bs := new BitSet(16) + this.assertEquals(bs.length(), 0) + bs.set(0) + this.assertEquals(bs.length(), 1) + bs.set(1) + this.assertEquals(bs.length(), 2) + bs.set(2) + this.assertEquals(bs.length(), 3) + bs.set(127) + this.assertEquals(bs.length(), 128) + bs := BitSet.valueOfLong([42]) + bs := BitSet.valueOfLong([0]) + this.assertException(BitSet, "__new",,, -1) + } + + @Test_wordIndex() { + this.assertEquals(BitSet.wordIndex(63), 0) + this.assertEquals(BitSet.wordIndex(64), 1) + this.assertEquals(BitSet.wordIndex(319), 4) + this.assertEquals(BitSet.wordIndex(320), 5) + this.assertEquals(BitSet.wordIndex(196 - 48 - 1) + 1, 3) + } + + @Test_initWords() { + bs := new BitSet(320) + bs.initWords(320) + this.assertEquals(bs.words.minIndex(), 0) + this.assertEquals(bs.words.maxIndex(), 4) + } + + @Test_length() { + bs1 := new BitSet(8) + bs2 := new BitSet(8) + bs1.set(0) + bs1.set(1) + bs1.set(2) + bs1.set(3) + bs1.set(4) + bs1.set(5) + bs2.set(2) + bs2.set(4) + bs2.set(6) + bs2.set(8) + bs2.set(10) + this.assertEquals(Arrays.equal(bs1.toByteArray(), [0, 1, 2, 3, 4, 5])) + this.assertEquals(Arrays.equal(bs2.toByteArray(), [2, 4, 6, 8, 10])) + this.assertEquals(bs1.length(), 6) + this.assertEquals(bs2.length(), 11) + + bs := new BitSet(320) + bs.set(320) + this.assertEquals(bs.length(), 321) + } + + @Test_nextSetBit() { + bs := new BitSet([102]) + this.assertException(bs, "nextSetBit",,, -1) + ; 76543210 + ; -------- + ; 102b = 01100110 + this.assertEquals(bs.nextSetBit(0), 1) + this.assertEquals(bs.nextSetBit(1), 1) + this.assertEquals(bs.nextSetBit(2), 2) + this.assertEquals(bs.nextSetBit(3), 5) + this.assertEquals(bs.nextSetBit(4), 5) + this.assertEquals(bs.nextSetBit(5), 5) + this.assertEquals(bs.nextSetBit(6), 6) + this.assertEquals(bs.nextSetBit(7), -1) + } + + @Test_nextClearBit() { + bs := new BitSet([102]) + this.assertException(bs, "nextClearBit",,, -1) + ; 76543210 + ; -------- + ; 102b = 01100110 + this.assertEquals(bs.nextClearBit(0), 0) + this.assertEquals(bs.nextClearBit(1), 3) + this.assertEquals(bs.nextClearBit(2), 3) + this.assertEquals(bs.nextClearBit(3), 3) + this.assertEquals(bs.nextClearBit(4), 4) + this.assertEquals(bs.nextClearBit(5), 7) + this.assertEquals(bs.nextClearBit(6), 7) + this.assertEquals(bs.nextClearBit(7), 7) + this.assertEquals(bs.nextClearBit(8), 8) + bs2 := new BitSet(64) + bs2.set(32) + bs2.set(33) + bs2.set(35) + this.assertEquals(bs2.nextClearBit(32), 34) + bs3 := new BitSet([254]) + this.assertEquals(bs3.nextClearBit(0), 0) + this.assertEquals(bs3.nextClearBit(1), 8) + this.assertEquals(bs3.nextClearBit(2), 8) + this.assertEquals(bs3.nextClearBit(98), 98) + } + + @Test_toString() { + bs := new BitSet() + this.assertEquals(bs.toString(), "{}") + this.assertEquals(bs.length(), 0) + bs := new BitSet([102]) + this.assertEquals(bs.toString(), "{1, 2, 5, 6}") + + bs := new BitSet([1454, 102]) + this.assertEquals(bs.toString() + , "{1, 2, 3, 5, 7, 8, 10, 65, 66, 69, 70}") + } + + @Test_valueOfLongs() { + bs := new BitSet().valueOfLong([1527]) + this.assertTrue(Arrays.equal(bs.toLongArray(), [1527])) + } + + @Test_valueOfBytes() { + bs := new BitSet().valueOfByte([9, 15, 0, 27]) + this.assertTrue(Arrays.equal(bs.toByteArray(), [9, 15, 0, 27])) + } + + @Test_flip() { + bs := new BitSet([102]) + bs.flip(0) + this.assertEquals(bs.words[0], 103) + bs.flip(1) + this.assertEquals(bs.words[0], 101) + bs.flip(1) + this.assertEquals(bs.words[0], 103) + this.assertException(bs, "flip", "", "IndexOutOfBoundsException", -1) + + bs := new BitSet([102]) + this.assertEquals(bs.words[0], 102) + bs.flipRange(0, 7) + this.assertEquals(bs.words[0], 25) + bs.flipRange(1, 1) + this.assertEquals(bs.words[0], 25) + + bs := new BitSet(320) + bs.flipRange(90, 240) + this.assertEquals(bs.toString(), "{90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239}") ; ahklint-ignore: W002 + this.assertTrue(Arrays.equal(bs.toLongArray() + , [0, -67108864, -1, 281474976710655])) + } + + @Test_set() { + bs := new BitSet([102]) + bs.set(0) + this.assertEquals(bs.words[0], 103) + bs.set(4) + this.assertEquals(bs.words[0], 119) + bs.set(1) + this.assertEquals(bs.words[0], 119) + this.assertException(bs, "Set", "", "IndexOutOfBoundsException", -1) + + bs := new BitSet([102]) + bs.setRange(2, 6) + this.assertEquals(bs.words[0], 126) + + bs := new BitSet() + bs.set(127) + this.assertTrue(bs.get(127)) + this.assertEquals(bs.length(), 128) + } + + @Test_clear() { + bs := new BitSet([102]) + this.assertException(bs, "clear",,, -1) + bs.clear(1) + this.assertEquals(bs.words[0], 100) + bs.clear(6) + this.assertEquals(bs.words[0], 36) + bs.clear(3) + this.assertEquals(bs.words[0], 36) + this.assertException(bs, "Set", "", "IndexOutOfBoundsException", -1) + + bs := new BitSet([102]) + bs.clearRange(2, 6) + this.assertEquals(bs.words[0], 66) + + bs.clearRange(2, 2) + this.assertEquals(bs.words[0], 66) + + bs.clearRange(99, 123) + this.assertEquals(bs.words[0], 66) + + bs.clear() + this.assertEquals(bs.words[0], 0) + + bs.clear(999) + this.assertEquals(bs.words[0], 0) + + bs.set(2) + bs.clearRange(2, 123) + this.assertEquals(bs.words[0], 0) + } + + @Test_clearRange() { + bs := new BitSet(320) + bs.setRange(0, 320) + this.assertTrue(Arrays.equal(bs.toLongArray(), [-1, -1, -1, -1, -1])) + bs.clearRange(63, 216) + this.assertEquals(bs.length(), 320) + this.assertEquals(bs.toString() + , "{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319}") ; ahklint-ignore: W002 + ; TestCase.writeLine(Arrays.toString(bs.toLongArray())) + ; this.assertTrue(Arrays.equal(bs.toLongArray() + ; , [9223372036854775807, 0, 0, -16777216, -1])) ; QUESTION: Why + ; does Java get this data (4th word has another value)? + } + + @Test_setValue() { + bs := new BitSet([102]) + bs.setValue(0, true) + this.assertEquals(bs.words[0], 103) + bs.setValue(0, false) + this.assertEquals(bs.words[0], 102) + this.assertException(bs, "Set", "", "IndexOutOfBoundsException", -1) + } + + @Test_get() { + bs := new BitSet([102]) + this.assertException(bs, "get",,, -1) + this.assertEquals(bs.get(0), 0) + this.assertEquals(bs.get(1), 1) + this.assertEquals(bs.get(2), 1) + this.assertEquals(bs.get(3), 0) + this.assertEquals(bs.get(4), 0) + this.assertEquals(bs.get(5), 1) + this.assertEquals(bs.get(6), 1) + this.assertEquals(bs.get(7), 0) + } + + @Test_setRange() { + bs := new BitSet(320) + bs.setRange(1, 320) + this.assertTrue(Arrays.equal(bs.toLongArray(), [-2, -1, -1, -1, -1])) + bs.setRange(1,1) + this.assertTrue(Arrays.equal(bs.toLongArray(), [-2, -1, -1, -1, -1])) + } + + @Test_getRange() { + bs := new BitSet([102]) + this.assertException(bs, "getRange",,, -5, 5) + this.assertException(bs, "getRange",,, 5, -5) + this.assertException(bs, "getRange",,, 5, 2) + bs2 := bs.getRange(1, 6) + this.assertEquals(bs2.words[0], 19) + this.assertTrue(IsObject(bs.getRange(0, 0))) + this.assertTrue(IsObject(bs.getRange(1, 99))) + bs2 := new BitSet(320) + bs2.setRange(63, 216) + this.assertEquals(bs2.length(), 216) + bs3 := bs2.getRange(48, 196) + this.assertEquals(bs3.toString(), "{15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147}") ; ahklint-ignore: W002 + this.assertEquals(bs3.toLongArray().count(), 3) + this.assertEquals(bs3.toLongArray()[1], -32768) + this.assertEquals(bs3.toLongArray()[2], -1) + this.assertEquals(bs3.toLongArray()[3], 1048575) + this.assertTrue(Arrays.equal(bs3.toLongArray(), [-32768, -1, 1048575])) + } + + @Test_useCase() { + bits1 := new BitSet(16) + bits2 := new BitSet(16) + loop 16 { + i := A_Index-1 + if (Mod(i, 2) = 0) { + bits1.set(i) + } + if (Mod(i, 5) != 0) { + bits2.set(i) + } + } + this.assertEquals(bits1.toString(), "{0, 2, 4, 6, 8, 10, 12, 14}") + this.assertEquals(bits2.toString() + , "{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}") + + bits2.and(bits1) + this.assertEquals(bits2.toString(), "{2, 4, 6, 8, 12, 14}") + + bits2.or(bits1) + this.assertEquals(bits2.toString(), "{0, 2, 4, 6, 8, 10, 12, 14}") + + bits2.xor(bits1) + this.assertEquals(bits2.toString(), "{}") + + bits2.set(1) + bits2.andNot(bits1) + this.assertEquals(bits2.toString(), "{1}") + } + + @Test_or() { + bits1 := new BitSet(8) + bits2 := new BitSet(64) + this.assertEquals(bits1.or(bits1), "") + bits1.set(0) + bits1.set(1) + bits1.set(2) + bits1.set(3) + bits1.set(4) + bits1.set(5) + bits2.set(64) + bits1.or(bits2) + this.assertEquals(bits1.toString(), "{0, 1, 2, 3, 4, 5, 64}") + } + + @Test_and() { + bits1 := new BitSet(8) + bits2 := new BitSet(64) + this.assertEquals(bits1.or(bits1), "") + bits1.set(0) + bits1.set(1) + bits1.set(2) + bits1.set(3) + bits1.set(4) + bits1.set(5) + bits2.set(3) + bits2.set(5) + bits2.set(64) + bits1.and(bits2) + this.assertEquals(bits1.toString(), "{3, 5}") + bits1.and(bits1) + this.assertEquals(bits1.toString(), "{3, 5}") + bits2.and(bits1) + this.assertEquals(bits2.toString(), "{3, 5}") + + } + + @Test_xor() { + bits1 := new BitSet(64) + bits2 := new BitSet(8) + this.assertEquals(bits1.or(bits1), "") + bits1.set(0) + bits1.set(1) + bits1.set(2) + bits1.set(3) + bits1.set(4) + bits1.set(5) + bits1.set(64) + bits2.set(3) + bits2.set(5) + bits2.xor(bits1) + this.assertEquals(bits1.toString(), "{0, 1, 2, 3, 4, 5, 64}") + } + + @Test_cardinality() { + bits1 := new BitSet(64) + bits1.set(0) + bits1.set(1) + bits1.set(2) + bits1.set(3) + bits1.set(4) + bits1.set(5) + bits1.set(64) + this.assertEquals(bits1.cardinality(), 7) + } +} + +exitapp BitSetTest.runTests() diff --git a/more libs/Various1/calendar-test.ahk b/more libs/Various1/calendar-test.ahk new file mode 100644 index 00000000..8959c5f2 --- /dev/null +++ b/more libs/Various1/calendar-test.ahk @@ -0,0 +1,720 @@ +; ahk: console +#NoEnv +#Warn All, StdOut + +#Include + +#Include %A_ScriptDir%\..\calendar.ahk + +class CalendarTest extends TestCase { + + @Test_class() { + this.assertTrue(IsObject(Calendar)) + this.assertTrue(IsObject(Calendar.Units)) + this.assertTrue(IsFunc(Calendar.__New)) + this.assertTrue(IsFunc(Calendar.get)) + this.assertTrue(IsFunc(Calendar.isLeapYear)) + this.assertTrue(IsFunc(Calendar.long)) + this.assertTrue(IsFunc(Calendar.asLong)) + this.assertTrue(IsFunc(Calendar.setAsLong)) + this.assertTrue(IsFunc(Calendar.julian)) + this.assertTrue(IsFunc(Calendar.asJulian)) + this.assertTrue(IsFunc(Calendar.setAsJulian)) + this.assertTrue(IsFunc(Calendar.date)) + this.assertTrue(IsFunc(Calendar.asDate)) + this.assertTrue(IsFunc(Calendar.setAsDate)) + this.assertTrue(IsFunc(Calendar.time)) + this.assertTrue(IsFunc(Calendar.asTime)) + this.assertTrue(IsFunc(Calendar.setAsTime)) + this.assertTrue(IsFunc(Calendar.year)) + this.assertTrue(IsFunc(Calendar.asYear)) + this.assertTrue(IsFunc(Calendar.setAsYear)) + this.assertTrue(IsFunc(Calendar.month)) + this.assertTrue(IsFunc(Calendar.asMonth)) + this.assertTrue(IsFunc(Calendar.setAsMonth)) + this.assertTrue(IsFunc(Calendar.day)) + this.assertTrue(IsFunc(Calendar.asDay)) + this.assertTrue(IsFunc(Calendar.setAsDay)) + this.assertTrue(IsFunc(Calendar.hour)) + this.assertTrue(IsFunc(Calendar.asHour)) + this.assertTrue(IsFunc(Calendar.setAsHour)) + this.assertTrue(IsFunc(Calendar.minutes)) + this.assertTrue(IsFunc(Calendar.asMinutes)) + this.assertTrue(IsFunc(Calendar.setAsMinutes)) + this.assertTrue(IsFunc(Calendar.seconds)) + this.assertTrue(IsFunc(Calendar.asSeconds)) + this.assertTrue(IsFunc(Calendar.setAsSeconds)) + this.assertTrue(IsFunc(Calendar.easterSunday)) + this.assertTrue(IsFunc(Calendar.daysInMonth)) + this.assertTrue(IsFunc(Calendar.dayOfWeek)) + this.assertTrue(IsFunc(Calendar.week)) + this.assertTrue(IsFunc(Calendar.compare)) + this.assertTrue(IsFunc(Calendar.adjust)) + this.assertTrue(IsFunc(Calendar.findWeekDay)) + this.assertTrue(IsFunc(Calendar.formatTime)) + this.assertException(Calendar.Units, "__New") + } + + @Test_constants() { + this.assertTrue(Calendar.SUNDAY, 1) + this.assertTrue(Calendar.MONDAY, 2) + this.assertTrue(Calendar.TUESDAY, 3) + this.assertTrue(Calendar.WEDNESDAY, 4) + this.assertTrue(Calendar.THURSDAY, 5) + this.assertTrue(Calendar.FRIDAY, 6) + this.assertTrue(Calendar.SATURDAY, 7) + + this.assertTrue(Calendar.JANUARY, 1) + this.assertTrue(Calendar.FEBRUARY, 2) + this.assertTrue(Calendar.MARCH, 3) + this.assertTrue(Calendar.APRIL, 4) + this.assertTrue(Calendar.MAY, 5) + this.assertTrue(Calendar.JUNE, 6) + this.assertTrue(Calendar.JULY, 7) + this.assertTrue(Calendar.AUGUST, 8) + this.assertTrue(Calendar.SEPTEMBER, 9) + this.assertTrue(Calendar.OCTOBER, 10) + this.assertTrue(Calendar.NOVEMBER, 11) + this.assertTrue(Calendar.DECEMBER, 12) + } + + @Test_classUnits() { + this.assertEquals(Calendar.Units.SECONDS, "s") + this.assertEquals(Calendar.Units.SECOND, "s") + this.assertEquals(Calendar.Units.MINUTES, "m") + this.assertEquals(Calendar.Units.MINUTE, "m") + this.assertEquals(Calendar.Units.HOURS, "h") + this.assertEquals(Calendar.Units.HOUR, "h") + this.assertEquals(Calendar.Units.DAYS, "D") + this.assertEquals(Calendar.Units.DAY, "D") + this.assertTrue(IsFunc(Calendar.Units.isValid)) + } + + @Test_isValidUnit() { + this.assertTrue(Calendar.Units.isValid(Calendar.Units.SECOND)) + this.assertTrue(Calendar.Units.isValid(Calendar.Units.SECONDS)) + this.assertFalse(Calendar.Units.isValid("x")) + this.assertFalse(Calendar.Units.isValid(Calendar.Units.isValid)) + } + + @Test_classTimeZone() { + this.assertTrue(IsObject(TIME_ZONE_INFORMATION)) + this.assertTrue(IsObject(Calendar.TimeZone)) + this.assertTrue(Calendar.TimeZone.__Class = "Calendar.TimeZone") + this.assertTrue(IsFunc(Calendar.TimeZone.getBias)) + this.assertEquals(new Calendar.TimeZone().bias, -60) + } + + @Test_helperClass() { + this.assertTrue(IsObject(CalendarHelper)) + this.assertException(CalendarHelper, "__New") + this.assertTrue(IsFunc(CalendarHelper.validTime)) + } + + @Test_testForValidYear() { + this.assertEquals(CalendarHelper.testForValidYear(A_Now), A_Now) + this.assertException(CalendarHelper, "testForValidYear",,, 1600) + } + + @Test_testForValidMonth() { + this.assertEquals(CalendarHelper.testForValidMonth(A_Now), A_Now) + this.assertEquals(CalendarHelper.testForValidMonth(2019), 201901) + this.assertException(CalendarHelper, "testForValidMonth",,, 201900) + this.assertException(CalendarHelper, "testForValidMonth",,, 201913) + } + + @Test_testForValidDay() { + this.assertEquals(CalendarHelper.testForValidDay(A_Now), A_Now) + this.assertEquals(CalendarHelper.testForValidDay(20190812), 20190812) + this.assertEquals(CalendarHelper.testForValidDay(201908), 20190801) + this.assertException(CalendarHelper, "testForValidDay",,, 20190800) + this.assertException(CalendarHelper, "testForValidDay",,, 20190631) + this.assertException(CalendarHelper, "testForValidDay",,, 20191232) + this.assertException(CalendarHelper, "testForValidDay",,, 20190229) + } + + @Test_testForValidHour() { + this.assertEquals(CalendarHelper.testForValidHour(A_Now), A_Now) + this.assertEquals(CalendarHelper.testForValidHour(2019081208) + , 2019081208) + this.assertEquals(CalendarHelper.testForValidHour(2019081200) + , 2019081200) + this.assertEquals(CalendarHelper.testForValidHour(2019081223) + , 2019081223) + this.assertException(CalendarHelper, "testForValidHour",,, 2019081224) + } + + @Test_testForValidMinutes() { + this.assertEquals(CalendarHelper.testForValidMinutes(A_Now), A_Now) + this.assertEquals(CalendarHelper.testForValidMinutes(201908120848) + , 201908120848) + this.assertEquals(CalendarHelper.testForValidMinutes(201908120859) + , 201908120859) + this.assertEquals(CalendarHelper.testForValidMinutes(2019081208) + , 201908120800) + this.assertException(CalendarHelper, "testForValidMinutes" + ,,, 201908120860) + } + + @Test_testForValidSeconds() { + this.assertEquals(CalendarHelper.testForValidSeconds(A_Now), A_Now) + this.assertEquals(CalendarHelper.testForValidSeconds(20190812084836) + , 20190812084836) + this.assertEquals(CalendarHelper.testForValidSeconds(20190812085900) + , 20190812085900) + this.assertEquals(CalendarHelper.testForValidSeconds(20190812085959) + , 20190812085959) + this.assertEquals(CalendarHelper.testForValidSeconds(201908120859) + , 20190812085900) + this.assertException(CalendarHelper, "testForValidSeconds" + ,,, 20190812085160) + } + + @Test_returnMaxDaysForFebruary() { + this.assertEquals(CalendarHelper.returnMaxDaysForFebruary(2019), 28) + this.assertEquals(CalendarHelper.returnMaxDaysForFebruary(2020), 29) + this.assertEquals(CalendarHelper.returnMaxDaysForFebruary(2100), 28) + } + + @Test_CalendarHelper_daysInMonth() { + this.assertEquals(CalendarHelper.daysInMonth(201901, 01), 31) + this.assertEquals(CalendarHelper.daysInMonth(201902, 02), 28) + this.assertEquals(CalendarHelper.daysInMonth(201903, 03), 31) + this.assertEquals(CalendarHelper.daysInMonth(201904, 04), 30) + this.assertEquals(CalendarHelper.daysInMonth(201905, 05), 31) + this.assertEquals(CalendarHelper.daysInMonth(201906, 06), 30) + this.assertEquals(CalendarHelper.daysInMonth(201907, 07), 31) + this.assertEquals(CalendarHelper.daysInMonth(201908, 08), 31) + this.assertEquals(CalendarHelper.daysInMonth(201909, 09), 30) + this.assertEquals(CalendarHelper.daysInMonth(201910, 10), 31) + this.assertEquals(CalendarHelper.daysInMonth(201911, 11), 30) + this.assertEquals(CalendarHelper.daysInMonth(201912, 12), 31) + this.assertEquals(CalendarHelper.daysInMonth(202002, 02), 29) + this.assertEquals(CalendarHelper.daysInMonth(210002, 02), 28) + } + + @Test_testForValidInteger() { + this.assertTrue(CalendarHelper.testForValidInteger(0)) + this.assertTrue(CalendarHelper.testForValidInteger(123)) + this.assertTrue(CalendarHelper.testForValidInteger(-123)) + this.assertException(CalendarHelper, "testForValidInteger",,, "abc") + } + + @Test_testForValidNumber() { + this.assertTrue(CalendarHelper.testForValidNumber(0)) + this.assertTrue(CalendarHelper.testForValidNumber(123)) + this.assertTrue(CalendarHelper.testForValidNumber(-123)) + this.assertTrue(CalendarHelper.testForValidNumber(123.)) + this.assertTrue(CalendarHelper.testForValidNumber(-123.)) + this.assertTrue(CalendarHelper.testForValidNumber(123.0)) + this.assertTrue(CalendarHelper.testForValidNumber(123.9)) + this.assertTrue(CalendarHelper.testForValidNumber(123.456)) + this.assertTrue(CalendarHelper.testForValidNumber(-123.456)) + this.assertTrue(CalendarHelper.testForValidNumber(.456)) + this.assertTrue(CalendarHelper.testForValidNumber(-.456)) + this.assertTrue(CalendarHelper.testForValidNumber(-0.456)) + this.assertTrue(CalendarHelper.testForValidNumber(+123.456)) + this.assertTrue(CalendarHelper.testForValidNumber(-.0)) + this.assertTrue(CalendarHelper.testForValidNumber(-0.)) + this.assertException(CalendarHelper, "testForValidNumber",,, "abc") + this.assertException(CalendarHelper, "testForValidNumber",,, "-1,5") + } + + @Test_testForValidWeekDay() { + loop 7 { + this.assertTrue(CalendarHelper.testForValidWeekDay(A_Index)) + } + this.assertException(CalendarHelper, "testForValidWeekDay",,, 0) + this.assertException(CalendarHelper, "testForValidWeekDay",,, 8) + } + + @Test_adjustMonthAndHandleUnderFlowOrOverFlow() { + ts := new Calendar("20190121") + CalendarHelper.adjustMonthAndHandleUnderFlowOrOverFlow(ts, -1) + this.assertEquals(ts.asDate(), "20181221") + CalendarHelper.adjustMonthAndHandleUnderFlowOrOverFlow(ts, 1) + this.assertEquals(ts.asDate(), "20190121") + CalendarHelper.adjustMonthAndHandleUnderFlowOrOverFlow(ts, 1) + this.assertEquals(ts.asDate(), "20190221") + CalendarHelper.adjustMonthAndHandleUnderFlowOrOverFlow(ts, 6) + this.assertEquals(ts.asDate(), "20190821") + CalendarHelper.adjustMonthAndHandleUnderFlowOrOverFlow(ts, 10) + this.assertEquals(ts.asDate(), "20200621") + } + + @Test_findNextOrFirstOccurenceOfWeekDay() { + this.assertTrue(CalendarHelper.findNextOrFirstOccurenceOfWeekDay(0)) + this.assertTrue(CalendarHelper.findNextOrFirstOccurenceOfWeekDay(0.1)) + this.assertTrue(CalendarHelper.findNextOrFirstOccurenceOfWeekDay(0.5)) + this.assertTrue(CalendarHelper.findNextOrFirstOccurenceOfWeekDay(1)) + this.assertTrue(CalendarHelper.findNextOrFirstOccurenceOfWeekDay(3)) + this.assertFalse(CalendarHelper.findNextOrFirstOccurenceOfWeekDay(-.1)) + this.assertFalse(CalendarHelper.findNextOrFirstOccurenceOfWeekDay(-.9)) + this.assertFalse(CalendarHelper.findNextOrFirstOccurenceOfWeekDay(-1)) + this.assertFalse(CalendarHelper.findNextOrFirstOccurenceOfWeekDay(-3)) + } + + @Test_new() { + this.assertException(Calendar, "__new", "", "", "text") + this.assertException(Calendar, "__new", "", "", "2012.05.31") + this.assertException(Calendar, "__new", "", "", 123) + this.assertException(Calendar, "__new", "", "", 1600) + this.assertException(Calendar, "__new", "", "", 201200) + this.assertException(Calendar, "__new", "", "", 201213) + this.assertException(Calendar, "__new", "", "", 201299) + this.assertException(Calendar, "__new", "", "", 20120100) + this.assertException(Calendar, "__new", "", "", 2012010124) + this.assertException(Calendar, "__new", "", "", 201201012360) + this.assertException(Calendar, "__new", "", "", 20120101235960) + this.assertEquals(new Calendar(1601).get(), 16010101000000) + this.assertEquals(new Calendar(1969).get(), 19690101000000) + this.assertEquals(new Calendar(196903).get(), 19690301000000) + this.assertEquals(new Calendar(19690313).get(), 19690313000000) + this.assertEquals(new Calendar(1969031307).get(), 19690313070000) + this.assertEquals(new Calendar(196903130720).get(), 19690313072000) + this.assertEquals(new Calendar(20120229).get(), 20120229000000) + this.assertEquals(new Calendar(20000229).get(), 20000229000000) + this.assertEquals(new Calendar(ts := A_Now).get(), ts) + } + + @Test_isLeapYear() { + this.assertTrue(new Calendar(2000).isLeapYear()) + this.assertFalse(new Calendar(2010).isLeapYear()) + this.assertFalse(new Calendar(2011).isLeapYear()) + this.assertTrue(new Calendar(2012).isLeapYear()) + this.assertFalse(new Calendar(2013).isLeapYear()) + this.assertFalse(new Calendar(2014).isLeapYear()) + this.assertFalse(new Calendar(2015).isLeapYear()) + this.assertTrue(new Calendar(2016).isLeapYear()) + this.assertFalse(new Calendar(2100).isLeapYear()) + } + + @Test_setAsLong() { + this.assertEquals(new Calendar().setAsLong(-25377000).get() + , 19690313065000) + this.assertEquals(new Calendar().setAsLong(1271374609).get() + , 20100415233649) + } + + @Test_aslong() { + this.assertEquals(new Calendar(19690313065000).asLong(), -25377000) + this.assertEquals(new Calendar(20100415233649).asLong(), 1271374609) + } + + @Test_asJulian() { + this.assertEquals(new Calendar(20120612).asJulian(), 164) + } + + @Test_setAsJulian() { + this.assertEquals(new Calendar(20120101).setAsJulian(164).get() + , 20120612000000) + this.assertEquals(new Calendar(201201011724).setAsJulian(164).get() + , 20120612172400) + this.assertEquals(new Calendar(2013).setAsJulian(164).get() + , 20130613000000) + this.assertException(new Calendar(), "setAsJulian",,, "abc") + this.assertException(new Calendar(), "setAsJulian",,, 999) + } + + @Test_asDate() { + this.assertEquals(new Calendar(196903130650).asDate(), 19690313) + } + + @Test_setAsDate() { + this.assertEquals(new Calendar(20100415233649).setAsDate(19690313).get() + , 19690313233649) + this.assertEquals(new Calendar(20100415233649).setAsDate(196903).get() + , 19690301233649) + this.assertEquals(new Calendar(20100415233649).setAsDate(1969).get() + , 19690101233649) + this.assertException(new Calendar(), "setAsDate",,, "abc") + } + + @Test_asTime() { + this.assertEquals(new Calendar(19690313065019).asTime(), 065019) + } + + @Test_setAsTime() { + this.assertEquals(new Calendar(19690313065019).setAsTime(123647).get() + , 19690313123647) + this.assertEquals(new Calendar(19690313065019).setAsTime(1236).get() + , 19690313123600) + this.assertEquals(new Calendar(19690313065019).setAsTime(12).get() + , 19690313120000) + this.assertException(new Calendar(), "setAsTime",,, "abc") + } + + @Test_asYear() { + this.assertEquals(new Calendar(19690313065019).asYear(), 1969) + } + + @Test_setAsYear() { + this.assertEquals(new Calendar(19690313065019).setAsYear(2012).get() + , 20120313065019) + this.assertException(new Calendar(), "setAsYear",,, "abc") + } + + @Test_asMonth() { + this.assertEquals(new Calendar(19690313065019).asMonth(), 3) + } + + @Test_setAsMonth() { + this.assertEquals(new Calendar(19690313065019).setAsMonth(12).get() + , 19691213065019) + this.assertEquals(new Calendar(19690313065019).setAsMonth(9).get() + , 19690913065019) + this.assertException(new Calendar(), "setAsMonth", "", "", 13) + } + + @Test_asDay() { + this.assertEquals(new Calendar(19690313065019).asDay(), 13) + this.assertEquals(new Calendar(19690313065019).setAsDay(19).get() + , 19690319065019) + this.assertEquals(new Calendar(19690313065019).setAsDay(9).get() + , 19690309065019) + this.assertException(new Calendar(), "setAsDay",,, "abc") + } + + @Test_setAsDay() { + this.assertEquals(new Calendar(19690313065019).setAsDay(19).get() + , 19690319065019) + this.assertEquals(new Calendar(19690313065019).setAsDay(9).get() + , 19690309065019) + this.assertException(new Calendar(), "setAsDay",,, "abc") + } + + @Test_asHour() { + this.assertEquals(new Calendar(19690313065019).asHour(), 6) + } + + @Test_setAsHour() { + this.assertEquals(new Calendar(19690313065019).setAsHour(12).get() + , 19690313125019) + this.assertEquals(new Calendar(19690313065019).setAsHour(9).get() + , 19690313095019) + this.assertException(new Calendar(), "setAsHour",,, "abc") + } + + @Test_asMinutes() { + this.assertEquals(new Calendar(19690313065019).asMinutes(), 50) + } + + @Test_setAsMinutes() { + this.assertEquals(new Calendar(19690313065019).setAsMinutes(33).get() + , 19690313063319) + this.assertEquals(new Calendar(19690313065019).setAsMinutes(9).get() + , 19690313060919) + this.assertException(new Calendar(), "setAsMinutes",,, "abc") + } + + @Test_asSeconds() { + this.assertEquals(new Calendar(19690313065019).asSeconds(), 19) + } + + @Test_setAsSeconds() { + this.assertEquals(new Calendar(19690313065019).setAsSeconds(24).get() + , 19690313065024) + this.assertEquals(new Calendar(19690313065019).setAsSeconds(9).get() + , 19690313065009) + this.assertException(new Calendar(), "setAsSeconds",,, "abc") + } + + @Test_SetDateAndTime() { + this.assertEquals(new Calendar(19690313065019) + .setAsYear(2006) + .setAsMonth(12) + .setAsDay(19) + .setAsHour(12) + .setAsMinutes(56) + .setAsSeconds(38).get(), 20061219125638) + } + + @Test_dayOfWeek() { + this.assertEquals(new Calendar(20120611).dayOfWeek(), Calendar.MONDAY) + this.assertEquals(new Calendar(19690313).dayOfWeek(), Calendar.THURSDAY) + } + + @Test_week() { + this.assertEquals(new Calendar(20120611).week(), 24) + this.assertEquals(new Calendar(2012).week(), 52) + } + + @Test_daysInMonth() { + this.assertEquals(new Calendar(201201).daysInMonth(), 31) + this.assertEquals(new Calendar(201202).daysInMonth(), 29) + this.assertEquals(new Calendar(201203).daysInMonth(), 31) + this.assertEquals(new Calendar(201204).daysInMonth(), 30) + this.assertEquals(new Calendar(201205).daysInMonth(), 31) + this.assertEquals(new Calendar(201206).daysInMonth(), 30) + this.assertEquals(new Calendar(201207).daysInMonth(), 31) + this.assertEquals(new Calendar(201208).daysInMonth(), 31) + this.assertEquals(new Calendar(201209).daysInMonth(), 30) + this.assertEquals(new Calendar(201210).daysInMonth(), 31) + this.assertEquals(new Calendar(201211).daysInMonth(), 30) + this.assertEquals(new Calendar(201212).daysInMonth(), 31) + this.assertEquals(new Calendar(201102).daysInMonth(), 28) + this.assertException(CalendarHelper, "daysInMonth",,, "abc") + } + + @Test_easterSunday() { + this.assertTrue(IsObject(new Calendar(1954).easterSunday())) + this.assertEquals(new Calendar(1954).easterSunday().__Class, "Calendar") + this.assertEquals(new Calendar(1954).easterSunday().get() + , 19540418000000) + this.assertEquals(new Calendar(1981).easterSunday().get() + , 19810419000000) + this.assertEquals(new Calendar(2009).easterSunday().get() + , 20090412000000) + this.assertEquals(new Calendar(2010).easterSunday().get() + , 20100404000000) + this.assertEquals(new Calendar(2011).easterSunday().get() + , 20110424000000) + this.assertEquals(new Calendar(2012).easterSunday().get() + , 20120408000000) + this.assertEquals(new Calendar(2013).easterSunday().get() + , 20130331000000) + } + + @Test_compare() { + c1 := new Calendar() + this.assertEquals(c1.compare(c1), 0) + this.assertException(c1, "Compare", "", "", c1, "invalidunit") + this.assertException(c1, "Compare", "", "", c1, Calendar.Units.SECONDS + , "nonumber") + this.assertEquals(new Calendar(20100413100703) + .compare(new Calendar(20100413100711)), 8) + this.assertEquals(new Calendar(20100413100711) + .compare(new Calendar(20100413100703)), -8) + this.assertEquals(new Calendar(20100413100703) + .compare(new Calendar(20100413100711), Calendar.Units.SECONDS) + , 8) + this.assertEquals(new Calendar(20100413100711) + .compare(new Calendar(20100413101503), Calendar.Units.MINUTES) + , 7) + this.assertEquals(new Calendar(20120606) + .compare(new Calendar(20120605), Calendar.Units.DAYS), -1) + this.assertEquals(new Calendar(2012060617) + .compare(new Calendar(2012060513), Calendar.Units.DAYS), -1) + this.assertEquals(new Calendar(2012060617) + .compare(new Calendar(2012060513), Calendar.Units.DAYS, 0.2) + , -1.17) + this.assertEquals(new Calendar(20120606133600) + .compare(new Calendar(20120606133630), Calendar.Units.MINUTES + , 0.2), 0.5) + this.assertEquals(new Calendar(20120606133600) + .compare(new Calendar(20120606133645), Calendar.Units.MINUTES + , 0.2), 0.75) + this.assertEquals(new Calendar(201206061328) + .compare(new Calendar(201206061333), Calendar.Units.HOURS, 0.2) + , 0.08) + this.assertEquals(new Calendar(201206061200) + .compare(new Calendar(201206060000), Calendar.Units.DAYS, 0.2) + , -0.5) + this.assertEquals(new Calendar(201206061200) + .compare(new Calendar(201206060000), Calendar.Units.DAYS, 0.2) + , -0.5) + this.assertEquals(new Calendar(201206061200) + .compare(new Calendar(201206060000), Calendar.Units.DAYS, .2) + , -.5) + t1 := new Calendar().setAsDate(20171116).setAsTime(0706) + t2 := new Calendar().setAsDate(20171116).setAsTime(1640) + this.assertEquals(t1.compare(t2, Calendar.Units.MINUTES), 574) + } + + @Test_duration() { + d := Calendar.duration(0) + this.assertEquals(d[1], 0) + this.assertEquals(d[2], 0) + this.assertEquals(d[3], 0) + this.assertEquals(d[4], 0) + d := Calendar.duration(1) + this.assertEquals(d[1], 0) + this.assertEquals(d[2], 0) + this.assertEquals(d[3], 0) + this.assertEquals(d[4], 1) + d := Calendar.duration(60) + this.assertEquals(d[1], 0) + this.assertEquals(d[2], 0) + this.assertEquals(d[3], 1) + this.assertEquals(d[4], 0) + d := Calendar.duration(1041) + this.assertEquals(d[1], 0) + this.assertEquals(d[2], 0) + this.assertEquals(d[3], 17) + this.assertEquals(d[4], 21) + d := Calendar.duration(21122017) + this.assertEquals(d[4] + d[3]*60 + d[2]*3600 + d[1]*86400, 21122017) + } + + @Test_adjust() { + this.assertEquals(new Calendar(20130214) + .adjust(0, -1, 0, 0, 0, 0).get(), 20130114000000) + this.assertEquals(new Calendar(20130218) + .adjust(0, -2, 0, 0, 0, 0).get(), 20121218000000) + this.assertEquals(new Calendar(20130218) + .adjust(0, -12, 0, 0, 0, 0).get(), 20120218000000) + this.assertEquals(new Calendar(20130218) + .adjust(0, -15, 0, 0, 0, 0).get(), 20111118000000) + this.assertEquals(new Calendar(20130218) + .adjust(0, -24, 0, 0, 0, 0).get(), 20110218000000) + this.assertEquals(new Calendar(20130218) + .adjust(0, -30, 0, 0, 0, 0).get(), 20100818000000) + this.assertEquals(new Calendar(20130218) + .adjust(1, -30, 0, 0, 0, 0).get(), 20110818000000) + this.assertEquals(new Calendar(20130218) + .adjust(-1, -30, 0, 0, 0, 0).get(), 20090818000000) + this.assertEquals(new Calendar(20130218) + .adjust(2, 0, 0, 0, 0, 0).get(), 20150218000000) + this.assertEquals(new Calendar(20130218) + .adjust(0, 1, 0, 0, 0, 0).get(), 20130318000000) + this.assertEquals(new Calendar(20130218) + .adjust(0, 10, 0, 0, 0, 0).get(), 20131218000000) + this.assertEquals(new Calendar(20130218) + .adjust(0, 11, 0, 0, 0, 0).get(), 20140118000000) + this.assertEquals(new Calendar(20110612093513) + .adjust(0, 0, 0, 0, 0, 0).get(), 20110612093513) + this.assertEquals(new Calendar(20110612093513) + .adjust(0, 0, 0, 0, 0, 5).get(), 20110612093518) + this.assertEquals(new Calendar(20110612093513) + .adjust(0, 0, 0, 0, 0, 50).get(), 20110612093603) + this.assertEquals(new Calendar(20110612093513) + .adjust(0, 0, 0, 0, 4, 0).get(), 20110612093913) + this.assertEquals(new Calendar(20110612093513) + .adjust(0, 0, 0, 0, 133, 0).get(), 20110612114813) + this.assertEquals(new Calendar(20110612093513) + .adjust(0, 0, 30, 0, 0, 0).get(), 20110712093513) + this.assertEquals(new Calendar(20110612093513) + .adjust(0, 1, 0, 0, 0, 0).get(), 20110712093513) + this.assertEquals(new Calendar(20110612093513) + .adjust(1, 1, 1, 1, 1, 1).get(), 20120713103614) + this.assertEquals(new Calendar(20110612093513) + .adjust(0, 13, 0, 0, 0, 0).get(), 20120712093513) + this.assertEquals(new Calendar(20120612) + .adjust(0, 0, 28, 0, 0, 0).get(), 20120710000000) + this.assertEquals(new Calendar(20120612) + .adjust(0, 0, 0, 72, 0, 0).get(), 20120615000000) + this.assertEquals(new Calendar(20120612) + .adjust(0, 0, 1, 72, 0, 0).get(), 20120616000000) + this.assertEquals(new Calendar(20110612) + .adjust(0, 0, -1, 0, 0, 0).get(), 20110611000000) + this.assertEquals(new Calendar(20120630) + .adjust(0, 0, -34, 0, 0, 0).get(), 20120527000000) + this.assertEquals(new Calendar(20120630) + .adjust(0, -2, 0, 0, 0, 0).get(), 20120430000000) + this.assertEquals(new Calendar(20110612) + .adjust(-3, 0, 0, 0, 0, 0).get(), 20080612000000) + this.assertEquals(new Calendar(20120630) + .adjust(0, -2, -34, 0, 0, 0).get(), 20120327000000) + this.assertEquals(new Calendar(20120327) + .adjust(0, 2, 34, 0, 0, 0).get(), 20120630000000) + this.assertEquals(new Calendar(20121231235959) + .adjust(0, 0, 0, 0, 0, 1).get(), 20130101000000) + this.assertEquals(new Calendar(20130101000000) + .adjust(0, 0, 0, 0, 0, -1).get(), 20121231235959) + this.assertEquals(new Calendar(20130131) + .adjust(0, 2, 0, 0, 0, 0).get(), 20130331000000) + this.assertEquals(new Calendar(20130128) + .adjust(0, 2, 0, 0, 0, 0).get(), 20130328000000) + this.assertEquals(new Calendar(20130130) + .adjust(0, 1, 0, 0, 0, 0).get(), 20130228000000) + this.assertEquals(new Calendar(20130430) + .adjust(0, -1, 0, 0, 0, 0).get(), 20130330000000) + this.assertEquals(new Calendar(20130430) + .adjust(0, -2, 0, 0, 0, 0).get(), 20130228000000) + this.assertEquals(new Calendar(20130218154534) + .adjust(1, 2, 3, 4, 5, 6).get(), 20140421195040) + this.assertEquals(new Calendar(20130218154534) + .adjust(-1, -2, -3, -4, -5, -6).get(), 20111215114028) + this.assertEquals(new Calendar(20130218154534) + .adjust(-1, 2, -3, 4, -5, 6).get(), 20120415194040) + ; this.AssertEquals(new Calendar(20130218154534).adjust(-10, 20, -30, 40, -50, 60).get(), 20040921065634) ; Ergebnis gem. Notes-@adjust + this.assertEquals(new Calendar(20130218154534) + .adjust(-10, 20, 0, 0, 0, 0).get(), 20041018154534) + cal := new Calendar() + this.assertException(cal, "adjust",,, "abc") + this.assertException(cal, "adjust",,, 0, "abc") + this.assertException(cal, "adjust",,, 0, 0, "abc") + this.assertException(cal, "adjust",,, 0, 0, 0, "abc") + this.assertException(cal, "adjust",,, 0, 0, 0, 0, "abc") + this.assertException(cal, "adjust",,, 0, 0, 0, 0, 0, "abc") + } + + @Test_findWeekDay() { + this.assertEquals(new Calendar(20120613) + .findWeekDay(Calendar.THURSDAY).get(), 20120614000000) + this.assertEquals(new Calendar(20120613) + .findWeekDay(Calendar.SATURDAY).asDay(), 16) + this.assertEquals(new Calendar(20120612) + .findWeekDay().asDay(), 17) + this.assertEquals(new Calendar(20120612) + .findWeekDay(Calendar.MONDAY).asDay(), 18) + this.assertEquals(new Calendar(20120613) + .findWeekDay(Calendar.MONDAY).asDay(), 18) + this.assertEquals(new Calendar(20120617) + .findWeekDay(Calendar.MONDAY).asDay(), 18) + this.assertEquals(new Calendar(20120613) + .findWeekDay(Calendar.WEDNESDAY).get(), 20120620000000) + this.assertEquals(new Calendar(20120613) + .findWeekDay(Calendar.TUESDAY, Calendar.FIND_RECENT).get() + , 20120612000000) + this.assertEquals(new Calendar(20120613) + .findWeekDay(Calendar.MONDAY, Calendar.FIND_RECENT).asDay(), 11) + this.assertEquals(new Calendar(20120613) + .findWeekDay(Calendar.SUNDAY, Calendar.FIND_RECENT).asDay(), 10) + this.assertEquals(new Calendar(20120613) + .findWeekDay(Calendar.WEDNESDAY, Calendar.FIND_RECENT).asDay() + , 6) + this.assertEquals(new Calendar(20120630) + .findWeekDay(Calendar.SUNDAY, Calendar.FIND_RECENT).asDay(), 24) + this.assertEquals(new Calendar(201206) + .findWeekDay().asDay(), 3) ; Erster Sonntag im Juni 2012 + this.assertEquals(new Calendar(201206) + .findWeekDay(Calendar.MONDAY).asDay(), 4) ; Erster Montag im Juni 2012 + this.assertEquals(new Calendar(201206) + .findWeekDay(Calendar.SUNDAY, -1).asDay(), 24) ; Letzter Sonntag im Juni 2012 + this.assertEquals(new Calendar(201206) + .findWeekDay(Calendar.SATURDAY, -1).asDay(), 30) ; Letzter Samstag im Juni 2012 + this.assertEquals(new Calendar(201206) + .findWeekDay(Calendar.MONDAY, -1).asDay(), 25) ; Letzter Montag im Juni 2012 + this.assertEquals(new Calendar(201206) + .findWeekDay(Calendar.SUNDAY, -2).asDay(), 17) ; Vorletzter Sonntag im Juni 2012 + this.assertEquals(new Calendar(201206) + .findWeekDay(Calendar.SUNDAY, -3).asDay(), 10) ; Drittletzter Sonntag im Juni 2012 + this.assertEquals(new Calendar(201206) + .findWeekDay(Calendar.SUNDAY, -4).asDay(), 3) ; Viertletzter Sonntag im Juni 2012 + this.assertEquals(new Calendar(201206) + .findWeekDay(Calendar.SUNDAY, -5).asDate(), 20120527) ; Fünftletzter Sonntag im Juni 2012 (gibt es nicht!) + this.assertEquals(new Calendar(201307) + .findWeekDay(Calendar.MONDAY, 1).asDay(), 1) ; 1. Montag im Juli 2013 + this.assertEquals(new Calendar(201307) + .findWeekDay(Calendar.MONDAY, 2).asDay(), 8) ; 2. Montag im Juli 2013 + this.assertEquals(new Calendar(201307) + .findWeekDay(Calendar.MONDAY, 3).asDay(), 15) ; 3. Montag im Juli 2013 + this.assertEquals(new Calendar(201307) + .findWeekDay(Calendar.MONDAY, 4).asDay(), 22) ; 4. Montag im Juli 2013 + this.assertEquals(new Calendar(201307) + .findWeekDay(Calendar.MONDAY, 5).asDay(), 29) ; 5. Montag im Juli 2013 + this.assertEquals(new Calendar(201307) + .findWeekDay(Calendar.MONDAY, 6).asDate(), 20130805) ; 6. Montag im Juli 2013 (gibt es nicht!) + cal := new Calendar() + this.assertException(cal, "findWeekDay",,, "abc") + this.assertException(cal, "findWeekDay",,, 1, "abc") + this.assertException(cal, "findWeekDay",,, 0) + this.assertException(cal, "findWeekDay",,, 8) + } + + @Test_formatTime() { + this.assertEquals(new Calendar(201311151325) + .formatTime(), "13:25 Freitag, 15. November 2013") + this.assertEquals(new Calendar(201311151325) + .formatTime("ShortDate"), "15.11.2013") + this.assertEquals(new Calendar(201311151325) + .formatTime("Time"), "13:25") + this.assertEquals(new Calendar(20131115132517) + .formatTime("Time"), "13:25") + this.assertEquals(new Calendar(20131115132517) + .formatTime("dd.MM.yyyy HH:mm:ss"), "15.11.2013 13:25:17") + } +} + +exitapp CalendarTest.runTests() diff --git a/more libs/Various1/console-test.ahk b/more libs/Various1/console-test.ahk new file mode 100644 index 00000000..b950e434 --- /dev/null +++ b/more libs/Various1/console-test.ahk @@ -0,0 +1,34 @@ +; ahk: console +#Warn All, StdOut + +#Include +#Include +#Include +#Include +#Include +#Include +#Include + +#Include %A_ScriptDir%\..\console.ahk + +class ConsoleTest extends TestCase { + + @Test_Constants() { + this.assertEquals(Console.STD_INPUT_HANDLE, -10) + this.assertEquals(Console.STD_OUTPUT_HANDLE, -11) + this.assertEquals(Console.STD_ERROR_HANDLE, -12) + } + + @Test_Class() { + this.assertTrue(IsFunc("Console.__New"), 0) + this.assertTrue(IsFunc("Console.SetTextAttribute"), 1) + this.assertException(Console, "__New") + this.assertFalse(Console.hConsoleHandle = 0) + } + + @Test_Write() { + this.assertEquals(Console.write("TEST"), 4) + } +} + +exitapp ConsoleTest.runTests() diff --git a/more libs/Various1/cron-test.ahk b/more libs/Various1/cron-test.ahk new file mode 100644 index 00000000..801712d0 --- /dev/null +++ b/more libs/Various1/cron-test.ahk @@ -0,0 +1,133 @@ +; ahk: console +#NoEnv +#Warn All, StdOut +SetBatchLines -1 + +#Include + +#Include %A_ScriptDir%\..\cron.ahk + +class CronTest extends TestCase { + + requires() { + return [TestCase, Cron] + } + + cron_tab := [] + + @Test_Class() { + this.assertTrue(IsFunc(Cron.__New)) + this.assertException(Cron, "__New") + } + + @Test_Value2Expr() { + this.assertEquals(Cron.value2Expr(5), "0*5") + this.assertEquals(Cron.value2Expr(15), "0*15") + this.assertEquals(Cron.value2Expr("05"), "0*5") + } + + @Test_Range2List() { + this.assertEquals(Cron.range2List("*", 1, 7), "*") + this.assertEquals(Cron.range2List("2-5", 1, 7), "2,3,4,5") + this.assertEquals(Cron.range2List("0-12", 0, 23) + , "0,1,2,3,4,5,6,7,8,9,10,11,12") + this.assertEquals(Cron.range2List("1/2", 1, 12), "1,3,5,7,9,11") + } + + @Test_ParseEntry() { + this.assertEquals(Cron.parseEntry("* * * * *", "Dummy") + , "* * * * * Dummy") + this.assertEquals(Cron.parseEntry("0-59 0-23 1-31 1-12 1-7", "Dummy") + , "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 1,2,3,4,5,6,7,8,9,10,11,12 1,2,3,4,5,6,7 Dummy") ; ahklint-ignore: W002 + this.assertEquals(Cron.parseEntry("0/15 * * * *", "Dummy") + , "0,15,30,45 * * * * Dummy") + this.assertEquals(Cron.parseEntry("* * 5-31/10 * *", "Dummy") + , "* * 5,15,25 * * Dummy") + this.assertEquals(Cron.parseEntry("0/5 * * * *", "Dummy") + , "0,5,10,15,20,25,30,35,40,45,50,55 * * * * Dummy") + this.assertEquals(Cron.parseEntry("0/5 6-17 * * 2-6", "Dummy") + , "0,5,10,15,20,25,30,35,40,45,50,55 6,7,8,9,10,11,12,13,14,15,16,17 * * 2,3,4,5,6 Dummy") ; ahklint-ignore: W002 + this.assertEquals(Cron.parseEntry("0/2 * * * *", "Dummy") + , "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * Dummy") ; ahklint-ignore: W002 + this.assertEquals(Cron.parseEntry("1/2 * * * *", "Dummy") + , "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59 * * * * Dummy") ; ahklint-ignore: W002 + this.assertEquals(Cron.parseEntry("3/13 * * * *", "Dummy") + , "3,16,29,42,55 * * * * Dummy") + this.assertEquals(Cron.parseEntry("5,35 3/4 * * *", "Dummy") + , "5,35 3,7,11,15,19,23 * * * Dummy") + this.assertEquals(Cron.parseEntry("5/30 3/4 * * *", "Dummy") + , "5,35 3,7,11,15,19,23 * * * Dummy") + this.assertException(Cron, "ParseEntry", "", "" + , "30 21 7 19 *", "Dummy") + } + + @Test_AddScheduler() { + Cron.reset() + Cron.addScheduler("* * * * *", "Dummy") + Cron.addScheduler("0/2 * * * *", "Dummy2") + Cron.addScheduler("0/5 * * * *", "Dummy5") + Cron.addScheduler("1/15 * * * *", "Dummy15") + this.assertEquals(Cron.cron_tab, "`n1:* * * * * Dummy`n2:0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * Dummy2`n3:0,5,10,15,20,25,30,35,40,45,50,55 * * * * Dummy5`n4:1,16,31,46 * * * * Dummy15`n") ; ahklint-ignore: W002 + this.assertEquals(Cron.cron_job_num, 4) + Cron.start() + Cron.stop() + } + + @Test_PatternHelper() { + this.assertEquals(PatternHelper(6, 10), "6,16,26,36,46,56") + this.assertEquals(PatternHelper(7, 11), "7,18,29,40,51") + this.assertEquals(PatternHelper(31, 30), "1,31") + this.assertEquals(PatternHelper(48, 3) + , "0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57") + this.assertEquals(PatternHelper(0, 10), "0,10,20,30,40,50") + } + + @Test_AddScheduler2() { + Cron.reset() + p1 := PatternHelper(m := A_Min, 10) + Cron.addScheduler("*/10 * * * *", "Dummy") + p2 := PatternHelper(m := A_Min, 7) + Cron.addScheduler("*/7 * * * *", "Dummy") + p3 := PatternHelper(m := A_Min, 30) + Cron.addScheduler("*/30 * * * *", "Dummy") + p4 := PatternHelper(h := A_Hour, 5, 24) + Cron.addScheduler("0 */5 * * *", "Dummy") + this.assertEquals(Cron.cron_tab, "`n1:" + . p1 " * * * * Dummy`n2:" + . p2 " * * * * Dummy`n3:" + . p3 " * * * * Dummy`n4:0 " + . p4 " * * * Dummy`n") + } +} + +dummy(n) { + OutputDebug Dummy [%n%] %A_Min%' +} + +dummy2(n) { + OutputDebug Dummy 2 [%n%] %A_Min%' +} + +dummy5(n) { + OutputDebug Dummy 5 [%n%] %A_Min%' +} + +patternHelper(m, i, max=60) { + OutputDebug m=%m% i=%i% max=%max% + m := Mod(m, i) + ; OutputDebug m=%m% + list := "" + while (m < max) { + list .= (list = "" ? "" : ",") m + m+=i + } + + OutputDebug list=%list% + return list +} + +cronTetRetVal := CronTest.runTests() + +; Sleep 120000 + +exitapp cronTetRetVal diff --git a/more libs/Various1/crypto-test.ahk b/more libs/Various1/crypto-test.ahk new file mode 100644 index 00000000..6a89776b --- /dev/null +++ b/more libs/Various1/crypto-test.ahk @@ -0,0 +1,150 @@ +; ahk: console +#NoEnv +#Warn All, StdOut + +#Include +#Include + +#Include %A_ScriptDir%\..\crypto.ahk + +class CryptoTest extends TestCase { + + @Test_Class() { + this.assertTrue(IsObject(Crypto)) + this.assertException(Crypto, "__New") + this.assertTrue(IsFunc(Crypto.encrypt)) + this.assertTrue(IsFunc(Crypto.decrypt)) + this.assertTrue(IsFunc(Crypto.isValidAlgorithm)) + } + + @Test_Class_RC4() { + this.assertTrue(IsObject(Crypto.RC4)) + this.assertException(Crypto.RC4, "__New") + this.assertTrue(IsFunc(Crypto.RC4.encodeDecode)) + } + + @Test_Class_XOR() { + this.assertTrue(IsObject(Crypto.XOR)) + this.assertException(Crypto.XOR, "__New") + this.assertTrue(IsFunc(Crypto.XOR.encodeDecode)) + } + + @Test_Class_MD5() { + this.assertTrue(IsObject(Crypto.MD5)) + this.assertException(Crypto.MD5, "__New") + this.assertTrue(IsFunc(Crypto.MD5.encode)) + } + + @Test_RC4() { + _msg := "Dummy" + len := Crypto.RC4.encodeDecode(msg := _msg, "secret") + this.assertEquals(len, 10) + this.assertEquals(NumGet(msg, 0, "UChar"), 0x2e) + this.assertEquals(NumGet(msg, 1, "UChar"), 0xd3) + this.assertEquals(NumGet(msg, 2, "UChar"), 0x32) + this.assertEquals(NumGet(msg, 3, "UChar"), 0xb5) + this.assertEquals(NumGet(msg, 4, "UChar"), 0x71) + this.assertEquals(NumGet(msg, 5, "UChar"), 0x90) + this.assertEquals(NumGet(msg, 6, "UChar"), 0xe8) + this.assertEquals(NumGet(msg, 7, "UChar"), 0x8f) + this.assertEquals(NumGet(msg, 8, "UChar"), 0xd8) + this.assertEquals(NumGet(msg, 9, "UChar"), 0xcb) + Crypto.RC4.encodeDecode(msg, "secret") + this.assertEquals(msg, _msg) + } + + @Test_XOR() { + _msg := "Dummy" + len := Crypto.XOR.encodeDecode(msg := _msg, "secret") + this.assertEquals(len, 10) + this.assertEquals(NumGet(msg, 0, "UChar"), 0x37) + this.assertEquals(NumGet(msg, 1, "UChar"), 0x00) + this.assertEquals(NumGet(msg, 2, "UChar"), 0x10) + this.assertEquals(NumGet(msg, 3, "UChar"), 0x00) + this.assertEquals(NumGet(msg, 4, "UChar"), 0x0e) + this.assertEquals(NumGet(msg, 5, "UChar"), 0x00) + this.assertEquals(NumGet(msg, 6, "UChar"), 0x1f) + this.assertEquals(NumGet(msg, 7, "UChar"), 0x00) + this.assertEquals(NumGet(msg, 8, "UChar"), 0x1c) + this.assertEquals(NumGet(msg, 9, "UChar"), 0x00) + Crypto.XOR.encodeDecode(msg, "secret") + this.assertEquals(msg, _msg) + } + + @Test_MD5() { + this.assertEquals(Crypto.MD5.encode(_msg := "") + , "d41d8cd98f00b204e9800998ecf8427e") + l0 := ("test").put(st0, "cp0") + this.assertEquals(Crypto.MD5.encode(st0, l0) + , "098f6bcd4621d373cade4e832627b4f6") + l0 := ("Franz jagt im komplett verwahrlosten Taxi quer durch Bayern") + .Put(st0) + this.assertEquals(Crypto.MD5.encode(st0, l0) + , "a3cca2b2aa1e3b5b3b5aad99a8529074") + l0 := ("Frank jagt im komplett verwahrlosten Taxi quer durch Bayern") + .Put(st0) + this.assertEquals(Crypto.MD5.encode(st0, l0) + , "7e716d0e702df0505fc72e2b89467910") + } + + @Test_Constants() { + this.assertTrue(Crypto.ALGORITHM_RC4, 1) + this.assertTrue(Crypto.ALGORITHM_XOR, 2) + } + + @Test_IsValidAlgorithm() { + this.assertFalse(Crypto.isValidAlgorithm(0)) + this.assertTrue(Crypto.isValidAlgorithm(1)) + this.assertTrue(Crypto.isValidAlgorithm(2)) + this.assertFalse(Crypto.isValidAlgorithm(3)) + this.assertFalse(Crypto.isValidAlgorithm(-1)) + this.assertFalse(Crypto.isValidAlgorithm(4)) + this.assertFalse(Crypto.isValidAlgorithm("")) + this.assertFalse(Crypto.isValidAlgorithm("RC4")) + } + + @Test_Encrypt() { + this.assertException(Crypto, "Encrypt", "", "" + , m := "Dummy", "Cipher", "InvalidAlgorithm") + this.assertEquals(Crypto.encrypt(m := "Dummy", "secret" + , Crypto.ALGORITHM_RC4), "{RC4}LtMytXGQ6I/Yyw==") + this.assertEquals(Crypto.encrypt(m := "Dummy", "secret" + , Crypto.ALGORITHM_XOR), "{XOR}NwAQAA4AHwAcAA==") + this.assertEquals(Crypto.encrypt(m := "marsreise" + , "00481-827-6123453-74320", Crypto.ALGORITHM_RC4) + , "{RC4}WNyp+ZJ91Yn2j9ls3wQEJaYG") + } + + @Test_Decrypt() { + ; Ansi example: + /* + Crypto.Decrypt(m := "{xor}Njs6OjEyODIr", "_") + VarSetCapacity(m, -1) + this.AssertEquals(m, "dummy") + */ + + Crypto.decrypt(m := "{RC4}LtMytXGQ6I/Yyw==", "secret") + VarSetCapacity(m, -1) + this.assertEquals(m, "Dummy") + + Crypto.decrypt(m := "{XOR}NwAQAA4AHwAcAA==", "secret") + VarSetCapacity(m, -1) + this.assertEquals(m, "Dummy") + + Crypto.decrypt(m := "{xor}KTZyb21yPS8yci8+bGZn", "_") + VarSetCapacity(m, -1) + Crypto.decrypt(m := "{xor}LzIyNCs2MTk=", "_") + VarSetCapacity(m, -1) + + Crypto.decrypt(m := "{RC4}WNyp+ZJ91Yn2j9ls3wQEJaYG" + , "00481-827-6123453-74320") + VarSetCapacity(m, -1) + this.assertEquals(m, "marsreise") + + Crypto.decrypt(m := "LtMytXGQ6I/Yyw==", "secret",, Crypto.ALGORITHM_RC4) + VarSetCapacity(m, -1) + this.assertEquals(m, "Dummy") + } +} + +exitapp CryptoTest.runTests() diff --git a/more libs/Various1/datatable-test.ahk b/more libs/Various1/datatable-test.ahk new file mode 100644 index 00000000..32c2fc5f --- /dev/null +++ b/more libs/Various1/datatable-test.ahk @@ -0,0 +1,577 @@ +; ahk: console +#NoEnv +#Warn All, StdOut + +#Include +#Include +#Include +#Include +#Include +#Include +#Include + +#Include %A_ScriptDir%\..\datatable.ahk + +class DataTableTest extends TestCase { + + @Test_class() { + this.assertTrue(IsObject(new DataTable())) + this.assertEquals(IsFunc(DataTable.defineColumn), 3) + this.assertEquals(IsFunc(DataTable.addData), 2) + this.assertEquals(IsFunc(DataTable.getTableAsString), 2) + this.assertEquals(IsFunc(DataTable.setSortAlgorithm), 3) + + this.assertTrue(new DataTable().hasKey("tableColumns")) + this.assertTrue(IsObject(new DataTable()["tableColumns"])) + this.assertTrue(new DataTable().hasKey("aMaxColValue")) + this.assertTrue(IsObject(new DataTable()["aMaxColValue"])) + this.assertTrue(new DataTable().hasKey("tableRows")) + this.assertTrue(IsObject(new DataTable()["tableRows"])) + this.assertTrue(new DataTable().hasKey("iSortAlgorithm")) + this.assertEquals(new DataTable().iSortAlgorithm + , DataTable.SORT_QUICKSORT) + } + + @Test_constants() { + this.assertEquals(DataTable.COL_ALIGN_LEFT, 0) + this.assertEquals(DataTable.COL_ALIGN_RIGHT, 1) + this.assertEquals(DataTable.COL_ALIGN_CENTER, 2) + this.assertEquals(DataTable.COL_RESIZE_TRUNCATE, 4) + this.assertEquals(DataTable.COL_RESIZE_TRUNCATE_RIGHT, 4) + this.assertEquals(DataTable.COL_RESIZE_TRUNCATE_LEFT, 8) + this.assertEquals(DataTable.COL_RESIZE_TRUNCATE_MIDDLE, 16) + this.assertEquals(DataTable.COL_RESIZE_USE_LARGEST_DATA, 32) + this.assertEquals(DataTable.COL_RESIZE_SHOW_ELLIPSIS, 64) + this.assertEquals(DataTable.SORT_SELECTIONSORT, 1) + this.assertEquals(DataTable.SORT_QUICKSORT, 2) + } + + @Test_columnClass() { + this.assertTrue(IsObject(new DataTable.Column())) + this.assertEquals(IsFunc(DataTable.Column.__new), 2) + + this.assertTrue(new DataTable.Column().hasKey("width")) + this.assertEquals(new DataTable.Column()["width"], 40) + this.assertTrue(new DataTable.Column().hasKey("flags")) + this.assertEquals(new DataTable.Column()["flags"], 0) + } + + @Test_wrappedColumnClass() { + this.assertTrue(IsObject(new DataTable.Column.Wrapped())) + this.assertEquals(IsFunc(DataTable.Column.Wrapped.__new), 2) + + this.assertTrue(new DataTable.Column.Wrapped().hasKey("width")) + this.assertEquals(new DataTable.Column.Wrapped()["width"] + , 40) + } + + @Test_newColumn() { + col := new DataTable.Column() + this.assertEquals(col["width"], 40) + col := new DataTable.Column(50) + this.assertEquals(col["width"], 50) + col := new DataTable.Column(50 + , DataTable.COL_RESIZE_SHORTEN | DataTable.COL_ALIGN_CENTER) + this.assertEquals(col["width"], 50) + this.assertEquals(col["flags"] + , DataTable.COL_RESIZE_SHORTEN | DataTable.COL_ALIGN_CENTER) + col := new DataTable.Column(, DataTable.COL_ALIGN_CENTER) + this.assertEquals(col["width"], 40) + this.assertEquals(col["flags"], DataTable.COL_ALIGN_CENTER) + } + + @Test_newWrapapedColumn() { + wcol := new DataTable.Column.Wrapped() + this.assertEquals(wcol["width"], 40) + wcol := new DataTable.Column.Wrapped(50) + this.assertEquals(wcol["width"], 50) + } + + @Test_defineColumn() { + dt := new DataTable() + col := new DataTable.Column() + dt.defineColumn(col) + this.assertEquals(dt.tableColumns.maxIndex(), 1) + this.assertEquals(dt.tableColumns[1]["width"], 40) + this.assertEquals(dt.aMaxColValue[1], 0) + dt.defineColumn(new DataTable.Column()) + this.assertEquals(dt.tableColumns.maxIndex(), 2) + this.assertEquals(dt.tableColumns[2]["width"], 40) + this.assertEquals(dt.aMaxColValue[2], 0) + dt.defineColumn(new DataTable.Column.Wrapped()) + this.assertEquals(dt.tableColumns.maxIndex(), 3) + this.assertEquals(dt.tableColumns[3]["width"], 40) + this.assertEquals(dt.aMaxColValue[3], 0) + this.assertException(dt, "DefineColumn", "", "", {}) + this.assertException(dt, "DefineColumn", "", "", "A string") + } + + @Test_1Column() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column()) + this.assertEquals(dt.addData(["Montag"], ["Dienstag"], ["Mittwoch"] + , ["Donnerstag"], ["Freitag"], ["Samstag"], ["Sonntag"]), 7) + this.assertEquals(dt.tableRows[1][1], "Montag") + this.assertEquals(dt.tableRows[2][1], "Dienstag") + this.assertEquals(dt.tableRows[3][1], "Mittwoch") + this.assertEquals(dt.tableRows[4][1], "Donnerstag") + this.assertEquals(dt.tableRows[5][1], "Freitag") + this.assertEquals(dt.tableRows[6][1], "Samstag") + this.assertEquals(dt.tableRows[7][1], "Sonntag") + } + + @Test_2Columns() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column()) + dt.defineColumn(new DataTable.Column()) + this.assertEquals(dt.addData(["Montag", "Morgen"] + , ["Dienstag", "Mittag"], ["Mittwoch", "Abend"] + , ["Donnerstag", "Früh"], ["Freitag", "Nachmittag"] + , ["Samstag", "Vormittag"], ["Sonntag", "Nacht"]), 7) + this.assertEquals(dt.tableRows[1][1], "Montag") + this.assertEquals(dt.tableRows[1][2], "Morgen") + this.assertEquals(dt.tableRows[2][1], "Dienstag") + this.assertEquals(dt.tableRows[2][2], "Mittag") + this.assertEquals(dt.tableRows[3][1], "Mittwoch") + this.assertEquals(dt.tableRows[3][2], "Abend") + this.assertEquals(dt.tableRows[4][1], "Donnerstag") + this.assertEquals(dt.tableRows[4][2], "Früh") + this.assertEquals(dt.tableRows[5][1], "Freitag") + this.assertEquals(dt.tableRows[5][2], "Nachmittag") + this.assertEquals(dt.tableRows[6][1], "Samstag") + this.assertEquals(dt.tableRows[6][2], "Vormittag") + this.assertEquals(dt.tableRows[7][1], "Sonntag") + this.assertEquals(dt.tableRows[7][2], "Nacht") + } + + @Test_maxColValue() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column( + , DataTable.COL_RESIZE_USE_LARGEST_DATA)) + this.assertEquals(dt.addData(["Montag"], ["Dienstag"], ["Mittwoch"] + , ["Donnerstag"], ["Freitag"], ["Samstag"], ["Sonntag"]), 7) + this.assertEquals(dt.tableRows[1][1], "Montag") + this.assertEquals(dt.tableRows[2][1], "Dienstag") + this.assertEquals(dt.tableRows[3][1], "Mittwoch") + this.assertEquals(dt.tableRows[4][1], "Donnerstag") + this.assertEquals(dt.tableRows[5][1], "Freitag") + this.assertEquals(dt.tableRows[6][1], "Samstag") + this.assertEquals(dt.tableRows[7][1], "Sonntag") + this.assertEquals(dt.aMaxColValue[1], 10) + } + + @Test_alignColumn() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(10)) + dt.defineColumn(new DataTable.Column(30)) + dt.defineColumn(new DataTable.Column(30, DataTable.COL_ALIGN_RIGHT)) + dt.defineColumn(new DataTable.Column(30, DataTable.COL_ALIGN_CENTER)) + this.assertEquals(dt.renderColumn("abcdefghijklmnopqrstuvwxyz", 1) + , "abcdefghij") + this.assertEquals(dt.renderColumn("abcdefghijklmnopqrstuvwxyz", 2) + , "abcdefghijklmnopqrstuvwxyz ") + this.assertEquals(dt.renderColumn("abcdefghijklmnopqrstuvwxyz", 3) + , " abcdefghijklmnopqrstuvwxyz") + this.assertEquals(dt.renderColumn("abcdefghijklmnopqrstuvwxyz", 4) + , " abcdefghijklmnopqrstuvwxyz ") + } + + @Test_truncateColumn1() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(0 + , DataTable.COL_RESIZE_USE_LARGEST_DATA)) + dt.addData(["Januar"], ["Februar"], ["März"], ["April"], ["Mai"] + , ["Juni"], ["Juli"], ["August"], ["September"], ["Oktober"] + , ["November"], ["Dezember"]) + this.assertEquals(dt.getTableAsString() + , "Januar `n" + . "Februar `n" + . "März `n" + . "April `n" + . "Mai `n" + . "Juni `n" + . "Juli `n" + . "August `n" + . "September`n" + . "Oktober `n" + . "November `n" + . "Dezember `n") + } + + @Test_truncateColumn2() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(3)) + dt.addData(["Januar"], ["Februar"], ["März"], ["April"], ["Mai"] + , ["Juni"], ["Juli"], ["August"], ["September"], ["Oktober"] + , ["November"], ["Dezember"]) + this.assertEquals(dt.getTableAsString() + , "Jan`n" + . "Feb`n" + . "Mär`n" + . "Apr`n" + . "Mai`n" + . "Jun`n" + . "Jul`n" + . "Aug`n" + . "Sep`n" + . "Okt`n" + . "Nov`n" + . "Dez`n") + } + + @Test_truncateColumn3() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(7 + , DataTable.COL_RESIZE_TRUNCATE_LEFT + | DataTable.COL_RESIZE_SHOW_ELLIPSIS)) + dt.addData(["Januar"], ["Februar"], ["März"], ["April"], ["Mai"] + , ["Juni"], ["Juli"], ["August"], ["September"], ["Oktober"] + , ["November"], ["Dezember"]) + this.assertEquals(dt.getTableAsString() + , "Januar `n" + . "Februar`n" + . "März `n" + . "April `n" + . "Mai `n" + . "Juni `n" + . "Juli `n" + . "August `n" + . "...mber`n" + . "Oktober`n" + . "...mber`n" + . "...mber`n") + } + + @Test_truncateColumn4() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(8, DataTable.COL_RESIZE_TRUNCATE + | DataTable.COL_RESIZE_SHOW_ELLIPSIS)) + dt.addData(["Januar"], ["Februar"], ["März"], ["April"], ["Mai"] + , ["Juni"], ["Juli"], ["August"], ["September"], ["Oktober"] + , ["November"], ["Dezember"]) + this.assertEquals(dt.getTableAsString() + , "Januar `n" + . "Februar `n" + . "März `n" + . "April `n" + . "Mai `n" + . "Juni `n" + . "Juli `n" + . "August `n" + . "Septe...`n" + . "Oktober `n" + . "November`n" + . "Dezember`n") + } + + @Test_truncateColumn5() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(7 + , DataTable.COL_RESIZE_TRUNCATE_MIDDLE + | DataTable.COL_RESIZE_SHOW_ELLIPSIS)) + dt.addData(["Januar"], ["Februar"], ["März"], ["April"], ["Mai"] + , ["Juni"], ["Juli"], ["August"], ["September"], ["Oktober"] + , ["November"], ["Dezember"]) + this.assertEquals(dt.getTableAsString() + , "Januar `n" + . "Februar`n" + . "März `n" + . "April `n" + . "Mai `n" + . "Juni `n" + . "Juli `n" + . "August `n" + . "Se...er`n" + . "Oktober`n" + . "No...er`n" + . "De...er`n") + } + + @Test_truncateColumn6() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(8 + , DataTable.COL_RESIZE_TRUNCATE_MIDDLE + | DataTable.COL_RESIZE_SHOW_ELLIPSIS)) + dt.addData(["Januar"], ["Februar"], ["März"], ["April"], ["Mai"] + , ["Juni"], ["Juli"], ["August"], ["September"], ["Oktober"] + , ["November"], ["Dezember"]) + this.assertEquals(dt.getTableAsString() + , "Januar `n" + . "Februar `n" + . "März `n" + . "April `n" + . "Mai `n" + . "Juni `n" + . "Juli `n" + . "August `n" + . "Sep...er`n" + . "Oktober `n" + . "November`n" + . "Dezember`n") + } + + @Test_wrapColumn() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column.Wrapped(5)) + dt.addData(["Das ist ein Test"], ["Das ist ein schwerer Test"]) + this.assertEquals(dt.getTableAsString() + , "Das `n" + . "ist `n" + . "ein `n" + . "Test `n" + . "Das `n" + . "ist `n" + . "ein `n" + . "schwe`n" + . "rer `n" + . "Test `n") + } + + @Test_wrapColumn2() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(5)) + dt.defineColumn(new DataTable.Column.Wrapped(5)) + dt.defineColumn(new DataTable.Column(3)) + dt.addData(["1.)", "Das ist ein Test", "AAA"], ["2.)" + , "Das ist ein schwerer Test", "BBB"]) + this.assertEquals(dt.getTableAsString("|", "[", "]") + , "[1.) |Das |AAA]`n" + . "[ |ist | ]`n" + . "[ |ein | ]`n" + . "[ |Test | ]`n" + . "[2.) |Das |BBB]`n" + . "[ |ist | ]`n" + . "[ |ein | ]`n" + . "[ |schwe| ]`n" + . "[ |rer | ]`n" + . "[ |Test | ]`n") + } + + @Test_wrapColumn3() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column( + , DataTable.COL_RESIZE_USE_LARGEST_DATA)) + dt.defineColumn(new DataTable.Column.Wrapped(20)) + dt.addData(["autohotkey", "*.ahk"]) + dt.addData(["md", "*.md *.mkd *.markdown"]) + dt.addData(["ruby", "*.rb *.rhtml *.rjs *.rxml *.erb *.rake *.spec"]) + dt.addData(["yaml", "*.yaml *.yml"]) + this.assertEquals(dt.getTableAsString() + , "autohotkey *.ahk `n" + . "md *.md *.mkd `n" + . " *.markdown `n" + . "ruby *.rb *.rhtml *.rjs `n" + . " *.rxml *.erb *.rake `n" + . " *.spec `n" + . "yaml *.yaml *.yml `n") + } + + @Test_getTable() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(0)) + dt.defineColumn(new DataTable.Column(0)) + dt.defineColumn(new DataTable.Column(0)) + dt.addData(["_", "abc", "def"] + , ["ghi", "jkl", "mno"] + , ["pqrs", "tuv", "wxyz"]) + t := dt.getTable() + this.assertEquals(t[1].MaxIndex(), 3) + this.assertEquals(t[1, 1], "_") + this.assertEquals(t[1, 2], "abc") + this.assertEquals(t[1, 3], "def") + this.assertEquals(t[2].MaxIndex(), 3) + this.assertEquals(t[2, 1], "ghi") + this.assertEquals(t[2, 2], "jkl") + this.assertEquals(t[2, 3], "mno") + this.assertEquals(t[3].MaxIndex(), 3) + this.assertEquals(t[3, 1], "pqrs") + this.assertEquals(t[3, 2], "tuv") + this.assertEquals(t[3, 3], "wxyz") + } + + @Test_getTableAsString() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(0)) + dt.defineColumn(new DataTable.Column(0)) + dt.defineColumn(new DataTable.Column(0)) + dt.addData(["_", "abc", "def"] + , ["ghi", "jkl", "mno"] + , ["pqrs", "tuv", "wxyz"]) + this.assertEquals(dt.getTableAsString() + , "_ abc def`nghi jkl mno`npqrs tuv wxyz`n") + } + + @Test_getTableAsString2() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(0)) + dt.defineColumn(new DataTable.Column(0)) + dt.defineColumn(new DataTable.Column(0)) + dt.addData(["_", "abc", "def"] + , ["ghi", "jkl", "mno"] + , ["pqrs", "tuv", "wxyz"]) + this.assertEquals(dt.getTableAsString(" | ", "[ ", " ]") + , "[ _ | abc | def ]`n" + . "[ ghi | jkl | mno ]`n" + . "[ pqrs | tuv | wxyz ]`n") + } + + @Test_getTableForConsoleOutput() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(5,, 93,101)) + dt.defineColumn(new DataTable.Column(3,, 97,42)) + dt.addData(["_", "123"], ["abc", "456"], ["def", "789"] + , ["ghi", "abc"], ["jkl", "def"]) + t := dt.getTableForConsoleOutput("|", Ansi.ESC "[1m<" Ansi.reset(), ">") + this.assertEquals(t.maxIndex(), 5) + ; TestCase.write(LoggingHelper.dump(t) "`n") + } + + @Test_truncateMiddle() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(12 + , DataTable.COL_RESIZE_TRUNCATE_MIDDLE + | DataTable.COL_RESIZE_SHOW_ELLIPSIS)) + dt.defineColumn(new DataTable.Column(13 + , DataTable.COL_RESIZE_TRUNCATE_MIDDLE + | DataTable.COL_RESIZE_SHOW_ELLIPSIS)) + this.assertEquals(dt.renderColumn("f37c99f8569d4c4ab703", 1) + , "f37c9...b703") + this.assertEquals(dt.renderColumn("f37c99f8569d4c4ab703", 2) + , "f37c9...ab703") + } + + @Test_setSortAlghorithm() { + dt := new DataTable() + dt.setSortAlgorithm(DataTable.SORT_SELECTIONSORT) + this.assertEquals(dt.iSortAlgorithm, DataTable.SORT_SELECTIONSORT) + dt.setSortAlgorithm(DataTable.SORT_QUICKSORT) + this.assertEquals(dt.iSortAlgorithm, DataTable.SORT_QUICKSORT) + this.assertException(dt, "SetSortAlgorithm", "", "", 0) + this.assertException(dt, "SetSortAlgorithm", "", "", 3) + } + + @Test_sort() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(0)) + dt.addData(["aaa"]) + dt.sort() + t := dt.getTable() + this.assertEquals(t[1, 1], "aaa") + } + + @Test_compare() { + this.assertEquals(DataTable.compare([1], ["a", "z"], ["b", "x"]), -1) + this.assertEquals(DataTable.compare([1], ["b", "x"], ["a", "z"]), +1) + this.assertEquals(DataTable.compare([1], ["b", "x"], ["b", "z"]), 0) + this.assertEquals(DataTable.compare([2], ["a", "z"], ["b", "x"]), +1) + this.assertEquals(DataTable.compare([2], ["b", "x"], ["a", "z"]), -1) + this.assertEquals(DataTable.compare([2], ["b", "x"], ["b", "x"]), 0) + this.assertEquals(DataTable.compare([1,2], ["a", "z"], ["a", "x"]), +1) + this.assertEquals(DataTable.compare([2,1], ["a", "z"], ["b", "z"]), -1) + } + + @Test_sort1() { + dt := new DataTable() + dt.defineColumn(new DataTable.Column(0)) + dt.addData(["Montag"], ["Dienstag"], ["Mittwoch"], ["Donnerstag"] + , ["Freitag"], ["Samstag"], ["Sonntag"]) + dt.sort() + t := dt.getTable() + this.assertEquals(t[1, 1], "Dienstag") + this.assertEquals(t[2, 1], "Donnerstag") + this.assertEquals(t[3, 1], "Freitag") + this.assertEquals(t[4, 1], "Mittwoch") + this.assertEquals(t[5, 1], "Montag") + this.assertEquals(t[6, 1], "Samstag") + this.assertEquals(t[7, 1], "Sonntag") + dt.sort(-1) + t := dt.getTable() + this.assertEquals(t[7, 1], "Dienstag") + this.assertEquals(t[6, 1], "Donnerstag") + this.assertEquals(t[5, 1], "Freitag") + this.assertEquals(t[4, 1], "Mittwoch") + this.assertEquals(t[3, 1], "Montag") + this.assertEquals(t[2, 1], "Samstag") + this.assertEquals(t[1, 1], "Sonntag") + } + + @Test_sort2() { + dt := new DataTable() + dt.setSortAlgorithm(DataTable.SORT_SELECTIONSORT) + dt.defineColumn(new DataTable.Column(0)) + dt.defineColumn(new DataTable.Column(0)) + dt.addData(["T14", "TsA"], ["T14", "PHd"], ["T14", "SrP"] + , ["T14", "BatJ"], ["T14", "HosB"], ["T14", "KnoA"]) + dt.addData(["T04", "Shl"], ["T04", "SCph"], ["T04", "Mkt"] + , ["T04", "MetS"]) + dt.sort(2, 1) + t := dt.getTable() + this.assertEquals(t[1, 1], "T14") + this.assertEquals(t[1, 2], "BatJ") + this.assertEquals(t[2, 1], "T14") + this.assertEquals(t[2, 2], "HosB") + this.assertEquals(t[3, 1], "T14") + this.assertEquals(t[3, 2], "KnoA") + this.assertEquals(t[4, 1], "T04") + this.assertEquals(t[4, 2], "MetS") + this.assertEquals(t[5, 1], "T04") + this.assertEquals(t[5, 2], "Mkt") + this.assertEquals(t[6, 1], "T14") + this.assertEquals(t[6, 2], "PHd") + this.assertEquals(t[7, 1], "T04") + this.assertEquals(t[7, 2], "SCph") + this.assertEquals(t[8, 1], "T04") + this.assertEquals(t[8, 2], "Shl") + this.assertEquals(t[9, 1], "T14") + this.assertEquals(t[9, 2], "SrP") + this.assertEquals(t[10, 1], "T14") + this.assertEquals(t[10, 2], "TsA") + dt.sort(1, 2) + t := dt.getTable() + this.assertEquals(t[1, 1], "T04") + this.assertEquals(t[1, 2], "MetS") + this.assertEquals(t[2, 1], "T04") + this.assertEquals(t[2, 2], "Mkt") + this.assertEquals(t[3, 1], "T04") + this.assertEquals(t[3, 2], "SCph") + this.assertEquals(t[4, 1], "T04") + this.assertEquals(t[4, 2], "Shl") + this.assertEquals(t[5, 1], "T14") + this.assertEquals(t[5, 2], "BatJ") + this.assertEquals(t[6, 1], "T14") + this.assertEquals(t[6, 2], "HosB") + this.assertEquals(t[7, 1], "T14") + this.assertEquals(t[7, 2], "KnoA") + this.assertEquals(t[8, 1], "T14") + this.assertEquals(t[8, 2], "PHd") + this.assertEquals(t[9, 1], "T14") + this.assertEquals(t[9, 2], "SrP") + this.assertEquals(t[10, 1], "T14") + this.assertEquals(t[10, 2], "TsA") + dt.setSortAlgorithm(DataTable.SORT_QUICKSORT) + dt.sort(1, -2) + t := dt.getTable() + this.assertEquals(t[1, 1], "T04") + this.assertEquals(t[1, 2], "Shl") + this.assertEquals(t[2, 1], "T04") + this.assertEquals(t[2, 2], "SCph") + this.assertEquals(t[3, 1], "T04") + this.assertEquals(t[3, 2], "Mkt") + this.assertEquals(t[4, 1], "T04") + this.assertEquals(t[4, 2], "MetS") + this.assertEquals(t[5, 1], "T14") + this.assertEquals(t[5, 2], "TsA") + this.assertEquals(t[6, 1], "T14") + this.assertEquals(t[6, 2], "SrP") + this.assertEquals(t[7, 1], "T14") + this.assertEquals(t[7, 2], "PHd") + this.assertEquals(t[8, 1], "T14") + this.assertEquals(t[8, 2], "KnoA") + this.assertEquals(t[9, 1], "T14") + this.assertEquals(t[9, 2], "HosB") + this.assertEquals(t[10, 1], "T14") + this.assertEquals(t[10, 2], "BatJ") + } +} + +exitapp DataTableTest.runTests() diff --git a/more libs/Various1/dimension-test.ahk b/more libs/Various1/dimension-test.ahk new file mode 100644 index 00000000..383b6612 --- /dev/null +++ b/more libs/Various1/dimension-test.ahk @@ -0,0 +1,39 @@ +; ahk: console +#NoEnv +#Warn All, StdOut + +#Include +#Include %A_ScriptDir%\..\dimension.ahk + +class DimensionTest extends TestCase { + + requires() { + return [TestCase, Dimension] + } + + @Test_class() { + this.assertEquals() + } + + @Test_memory() { + this.assertEquals(Dimension.Memory.Proper(11240526), "10.7MB") + this.assertEquals(Dimension.Memory.Proper(11240526, "B", 0.0), "11MB") + } + + @Test_customUnitsMemory() { + Dimension.Memory.Units := ["b", "KiB", "MeB", "GiB", "TeB"] + this.assertEquals(Dimension.Memory.Proper(11240526), "10.7MeB") + this.assertEquals(Dimension.Memory.Proper(11240526, "B", 0.0), "11MeB") + } + + @Test_time() { + d := Dimension.Time.Proper(5, "Min") + this.assertEquals(d.value, 5) + this.assertEquals(d.dimension, "Min") + this.assertEquals(Dimension.Time.ProperString(5, "Min",, "0.0") + , "5 Min") + this.assertEquals(Dimension.Time.ProperString(300, "Sek"), "5.0 Min") + } +} + +exitapp DimensionTest.runTests() diff --git a/more libs/Various1/figures/pager/AlmostAPage.txt b/more libs/Various1/figures/pager/AlmostAPage.txt new file mode 100644 index 00000000..596d2aa6 --- /dev/null +++ b/more libs/Various1/figures/pager/AlmostAPage.txt @@ -0,0 +1,22 @@ +Das ist Zeile #1! +Das ist Zeile #2! +Das ist Zeile #3! +Das ist Zeile #4! +Das ist Zeile #5! +Das ist Zeile #6! +Das ist Zeile #7! +Das ist Zeile #8! +Das ist Zeile #9! +Das ist Zeile #10! +Das ist Zeile #11! +Das ist Zeile #12! +Das ist Zeile #13! +Das ist Zeile #14! +Das ist Zeile #15! +Das ist Zeile #16! +Das ist Zeile #17! +Das ist Zeile #18! +Das ist Zeile #19! +Das ist Zeile #20! +Das ist Zeile #21! +Das ist Zeile #22! diff --git a/more libs/Various1/figures/pager/ColoredOutput.txt b/more libs/Various1/figures/pager/ColoredOutput.txt new file mode 100644 index 00000000..0c45a2be --- /dev/null +++ b/more libs/Various1/figures/pager/ColoredOutput.txt @@ -0,0 +1,73 @@ +Er hrte leise Schritte hinter sich. Das bedeutete nichts Gutes. Wer wrde ihm +schon folgen, spt in der Nacht und dazu noch in dieser engen Gasse mitten im +bel beleumundeten Hafenviertel? Gerade jetzt, wo er das Ding seines Lebens +gedreht hatte und mit der Beute verschwinden wollte! Hatte einer seiner +zahllosen Kollegen dieselbe Idee gehabt, ihn beobachtet und abgewartet, um ihn +nun um die Frchte seiner Arbeit zu erleichtern? Oder gehrten die Schritte +hinter ihm zu einem der unzhligen Gesetzeshter dieser Stadt, und die sthlerne +Acht um seine Handgelenke wrde gleich zuschnappen? Er konnte die Aufforderung +stehen zu bleiben schon hren. Gehetzt sah er sich um. Pltzlich erblickte er +den schmalen Durchgang. Blitzartig drehte er sich nach rechts und verschwand +zwischen den beiden Gebuden. Beinahe wre er dabei ber den umgestrzten +Mlleimer gefallen, der mitten im Weg lag. Er versuchte, sich in der Dunkelheit +seinen Weg zu ertasten und erstarrte: Anscheinend gab es keinen anderen Ausweg +aus diesem kleinen Hof als den Durchgang, durch den er gekommen war. Die +Schritte wurden lauter und lauter, er sah eine dunkle Gestalt um die Ecke +biegen. Fieberhaft irrten seine Augen durch die nchtliche Dunkelheit und +suchten einen Ausweg. War jetzt wirklich alles vorbei, waren alle Mhe und alle +Vorbereitungen umsonst? Er presste sich ganz eng an die Wand hinter ihm und +hoffte, der Verfolger wrde ihn bersehen, als pltzlich neben ihm mit kaum +wahrnehmbarem Quietschen eine Tr im nchtlichen Wind hin und her schwang. +Knnte dieses der flehentlich herbeigesehnte Ausweg aus seinem Dilemma sein? +Langsam bewegte er sich auf die offene Tr zu, immer dicht an die Mauer +gepresst. Wrde diese Tr seine Rettung werden? +--break-- +Eine wunderbare Heiterkeit hat meine ganze Seele eingenommen, gleich den sen +Frhlingsmorgen, die ich mit ganzem Herzen geniee. Ich bin allein und freue +mich meines Lebens in dieser Gegend, die fr solche Seelen geschaffen ist wie +die meine. Ich bin so glcklich, mein Bester, so ganz in dem Gefhle von ruhigem +Dasein versunken, da meine Kunst darunter leidet. Ich knnte jetzt nicht +zeichnen, nicht einen Strich, und bin nie ein grerer Maler gewesen als in +diesen Augenblicken. Wenn das liebe Tal um mich dampft, und die hohe Sonne an +der Oberflche der undurchdringlichen Finsternis meines Waldes ruht, und nur +einzelne Strahlen sich in das innere Heiligtum stehlen, ich dann im hohen Grase +am fallenden Bache liege, und nher an der Erde tausend mannigfaltige Grschen +mir merkwrdig werden; wenn ich das Wimmeln der kleinen Welt zwischen Halmen, +die unzhligen, unergrndlichen Gestalten der Wrmchen, der Mckchen nher an +meinem Herzen fhle, und fhle die Gegenwart des Allmchtigen, der uns nach +seinem Bilde schuf, das Wehen des Alliebenden, der uns in ewiger Wonne schwebend +trgt und erhlt; mein Freund! Wenn's dann um meine Augen dmmert, und die Welt +um mich her und der Himmel ganz in meiner Seele ruhn wie die Gestalt einer +Geliebten - dann sehne ich mich oft und denke : ach knntest du das wieder +ausdrcken, knntest du dem Papiere das einhauchen, was so voll, so warm in dir +lebt, da es wrde der Spiegel deiner Seele, wie deine Seele ist der Spiegel des +unendlichen Gottes! - mein Freund - aber ich gehe darber zugrunde, ich erliege +unter der Gewalt der Herrlichkeit dieser Erscheinungen. + +--break--Jemand musste Josef K. verleumdet haben, denn ohne dass er etwas Bses getan +htte, wurde er eines Morgens verhaftet. Wie ein Hund! sagte er, es war, als +sollte die Scham ihn berleben. Als Gregor Samsa eines Morgens aus unruhigen +Trumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer +verwandelt. Und es war ihnen wie eine Besttigung ihrer neuen Trume und guten +Absichten, als am Ziele ihrer Fahrt die Tochter als erste sich erhob und ihren +jungen Krper dehnte. Es ist ein eigentmlicher Apparat, sagte der Offizier zu +dem Forschungsreisenden und berblickte mit einem gewissermaen bewundernden +Blick den ihm doch wohlbekannten Apparat. Sie htten noch ins Boot springen +knnen, aber der Reisende hob ein schweres, geknotetes Tau vom Boden, drohte +ihnen damit und hielt sie dadurch von dem Sprunge ab. In den letzten Jahrzehnten +ist das Interesse an Hungerknstlern sehr zurckgegangen. Aber sie berwanden +sich, umdrngten den Kfig und wollten sich gar nicht fortrhren. Jemand musste +Josef K. verleumdet haben, denn ohne dass er etwas Bses getan htte, wurde er +eines Morgens verhaftet. Wie ein Hund! sagte er, es war, als sollte die Scham +ihn berleben. Als Gregor Samsa eines Morgens aus unruhigen Trumen erwachte, +fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Und es +war ihnen wie eine Besttigung ihrer neuen Trume und guten Absichten, als am +Ziele ihrer Fahrt die Tochter als erste sich erhob und ihren jungen Krper +dehnte. Es ist ein eigentmlicher Apparat, sagte der Offizier zu dem +Forschungsreisenden und berblickte mit einem gewissermaen bewundernden Blick +den ihm doch wohlbekannten Apparat. Sie htten noch ins Boot springen knnen, +aber der Reisende hob ein schweres, geknotetes Tau vom Boden, drohte ihnen damit +--break--und hielt sie dadurch von dem Sprunge ab. In den letzten Jahrzehnten ist das +Interesse an Hungerknstlern sehr zurckgegangen. Aber sie berwanden sich, +umdrngten den Kfig und wollten sich gar nicht fortrhren. + diff --git a/more libs/Various1/figures/pager/MoreThanAPage.txt b/more libs/Various1/figures/pager/MoreThanAPage.txt new file mode 100644 index 00000000..046f3578 --- /dev/null +++ b/more libs/Various1/figures/pager/MoreThanAPage.txt @@ -0,0 +1,26 @@ +Das ist Zeile #1! +Das ist Zeile #2! +Das ist Zeile #3! +Das ist Zeile #4! +Das ist Zeile #5! +Das ist Zeile #6! +Das ist Zeile #7! +Das ist Zeile #8! +Das ist Zeile #9! +Das ist Zeile #10! +Das ist Zeile #11! +Das ist Zeile #12! +Das ist Zeile #13! +Das ist Zeile #14! +Das ist Zeile #15! +Das ist Zeile #16! +Das ist Zeile #17! +Das ist Zeile #18! +Das ist Zeile #19! +Das ist Zeile #20! +Das ist Zeile #21! +Das ist Zeile #22! +Das ist Zeile #23! +--break--Das ist Zeile #24! +Das ist Zeile #25! +Das ist Zeile #26! diff --git a/more libs/Various1/figures/pager/MoreThanThreePages.txt b/more libs/Various1/figures/pager/MoreThanThreePages.txt new file mode 100644 index 00000000..9df7e51b --- /dev/null +++ b/more libs/Various1/figures/pager/MoreThanThreePages.txt @@ -0,0 +1,100 @@ +Das ist Zeile #1! +Das ist Zeile #2! +Das ist Zeile #3! +Das ist Zeile #4! +Das ist Zeile #5! +Das ist Zeile #6! +Das ist Zeile #7! +Das ist Zeile #8! +Das ist Zeile #9! +Das ist Zeile #10! +Das ist Zeile #11! +Das ist Zeile #12! +Das ist Zeile #13! +Das ist Zeile #14! +Das ist Zeile #15! +Das ist Zeile #16! +Das ist Zeile #17! +Das ist Zeile #18! +Das ist Zeile #19! +Das ist Zeile #20! +Das ist Zeile #21! +Das ist Zeile #22! +Das ist Zeile #23! +--break--Das ist Zeile #24! +Das ist Zeile #25! +Das ist Zeile #26! +Das ist Zeile #27! +Das ist Zeile #28! +Das ist Zeile #29! +Das ist Zeile #30! +Das ist Zeile #31! +Das ist Zeile #32! +Das ist Zeile #33! +Das ist Zeile #34! +Das ist Zeile #35! +Das ist Zeile #36! +Das ist Zeile #37! +Das ist Zeile #38! +Das ist Zeile #39! +Das ist Zeile #40! +Das ist Zeile #41! +Das ist Zeile #42! +Das ist Zeile #43! +Das ist Zeile #44! +Das ist Zeile #45! +Das ist Zeile #46! +--break--Das ist Zeile #47! +Das ist Zeile #48! +Das ist Zeile #49! +Das ist Zeile #50! +Das ist Zeile #51! +Das ist Zeile #52! +Das ist Zeile #53! +Das ist Zeile #54! +Das ist Zeile #55! +Das ist Zeile #56! +Das ist Zeile #57! +Das ist Zeile #58! +Das ist Zeile #59! +Das ist Zeile #60! +Das ist Zeile #61! +Das ist Zeile #62! +Das ist Zeile #63! +Das ist Zeile #64! +Das ist Zeile #65! +Das ist Zeile #66! +Das ist Zeile #67! +Das ist Zeile #68! +Das ist Zeile #69! +--break--Das ist Zeile #70! +Das ist Zeile #71! +Das ist Zeile #72! +Das ist Zeile #73! +Das ist Zeile #74! +Das ist Zeile #75! +Das ist Zeile #76! +Das ist Zeile #77! +Das ist Zeile #78! +Das ist Zeile #79! +Das ist Zeile #80! +Das ist Zeile #81! +Das ist Zeile #82! +Das ist Zeile #83! +Das ist Zeile #84! +Das ist Zeile #85! +Das ist Zeile #86! +Das ist Zeile #87! +Das ist Zeile #88! +Das ist Zeile #89! +Das ist Zeile #90! +Das ist Zeile #91! +Das ist Zeile #92! +--break--Das ist Zeile #93! +Das ist Zeile #94! +Das ist Zeile #95! +Das ist Zeile #96! +Das ist Zeile #97! +Das ist Zeile #98! +Das ist Zeile #99! +Das ist Zeile #100! diff --git a/more libs/Various1/figures/pager/MoreThanTwoPages.txt b/more libs/Various1/figures/pager/MoreThanTwoPages.txt new file mode 100644 index 00000000..3e96cd57 --- /dev/null +++ b/more libs/Various1/figures/pager/MoreThanTwoPages.txt @@ -0,0 +1,50 @@ +Das ist Zeile #1! +Das ist Zeile #2! +Das ist Zeile #3! +Das ist Zeile #4! +Das ist Zeile #5! +Das ist Zeile #6! +Das ist Zeile #7! +Das ist Zeile #8! +Das ist Zeile #9! +Das ist Zeile #10! +Das ist Zeile #11! +Das ist Zeile #12! +Das ist Zeile #13! +Das ist Zeile #14! +Das ist Zeile #15! +Das ist Zeile #16! +Das ist Zeile #17! +Das ist Zeile #18! +Das ist Zeile #19! +Das ist Zeile #20! +Das ist Zeile #21! +Das ist Zeile #22! +Das ist Zeile #23! +--break--Das ist Zeile #24! +Das ist Zeile #25! +Das ist Zeile #26! +Das ist Zeile #27! +Das ist Zeile #28! +Das ist Zeile #29! +Das ist Zeile #30! +Das ist Zeile #31! +Das ist Zeile #32! +Das ist Zeile #33! +Das ist Zeile #34! +Das ist Zeile #35! +Das ist Zeile #36! +Das ist Zeile #37! +Das ist Zeile #38! +Das ist Zeile #39! +Das ist Zeile #40! +Das ist Zeile #41! +Das ist Zeile #42! +Das ist Zeile #43! +Das ist Zeile #44! +Das ist Zeile #45! +Das ist Zeile #46! +--break--Das ist Zeile #47! +Das ist Zeile #48! +Das ist Zeile #49! +Das ist Zeile #50! diff --git a/more libs/Various1/figures/pager/OneLine.txt b/more libs/Various1/figures/pager/OneLine.txt new file mode 100644 index 00000000..dca7c591 --- /dev/null +++ b/more libs/Various1/figures/pager/OneLine.txt @@ -0,0 +1 @@ +Das ist ein Einzeiler. diff --git a/more libs/Various1/flimsydata-test.ahk b/more libs/Various1/flimsydata-test.ahk new file mode 100644 index 00000000..0bac5906 --- /dev/null +++ b/more libs/Various1/flimsydata-test.ahk @@ -0,0 +1,181 @@ +; ahk: console +#NoEnv +#Warn All, StdOut + +#Include +#Include +#Include + +#Include %A_ScriptDir%\..\flimsydata.ahk + +class FlimsyDataTestClass extends TestCase { + + requires() { + return [TestCase, FlimsyData, Calendar, Random] + } + + @Test_getNumber() { + fd := new FlimsyData.Simple(123) + this.assertEquals(fd.getInt(), 3) + this.assertEquals(fd.getInt(50, 100), 75) + this.assertEquals(fd.getInt(200, 2000), 1927) + this.assertEquals(fd.getInt(, 2000), 611) + this.assertEquals(fd.getFloat(), 3.041659) + this.assertEquals(fd.getFloat(0.0, 999.9), 690.815911) + this.assertEquals(fd.getFloat(0.0, 999.99, 06.1), "0551.3") + } + + @Test_getFloat() { + fd := new FlimsyData.Simple(123) + this.AssertEquals(fd.GetFloat(), 7.268221) + this.AssertEquals(fd.GetFloat(0.0, 999.9), 712.883705) + this.AssertEquals(fd.GetFloat(0.0, 999.99, 06.1), "0286.1") + } + + @Test_getString() { + fd := new FlimsyData.Simple(1342) + this.assertEquals(fd.getMixedString(1), "w") + this.assertEquals(fd.getMixedString(3), "KDo") + this.assertEquals(fd.getUpperCaseString(3), "XJB") + this.assertEquals(fd.getLowerCaseString(3), "ers") + this.assertEquals(fd.getMixedString(5), "rKMvw") + this.assertEquals(fd.getMixedString(3, 8), "sIxxi") + this.assertEquals(fd.getUpperCaseString(4, 10), "PQTHR") + this.assertEquals(fd.getLowerCaseString(8, 12), "gsynttrjz") + } + @Test_getTimeStamp() { + fd := new FlimsyData.Simple(211215) + this.assertEquals(fd.getTimeStamp(1601, 9999), 16610721040435) + this.assertEquals(fd.getTimeStamp(19950501, 9999), 19960727124807) + this.assertEquals(fd.getTimeStamp(1601, 19690313), 16830519133542) + this.assertEquals(fd.getTimeStamp(19690313, 19950501), 19800403034719) + } + + @Test_getDate() { + fd := new FlimsyData.Simple(1046) + this.assertEquals(fd.getDate(1601, 9999), 16010329) + this.assertEquals(fd.getDate(1969, 1995), 19740124) + } + + @Test_getTime() { + fd := new FlimsyData.Simple(22122015) + this.assertEquals(fd.getTime(000000, 235959), 234415) + this.assertEquals(fd.getTime(100000, 120000), 100230) + } + + @Test_patternSubSetOfElements() { + fd4p := new FlimsyData.Pattern(0x0a1b2c) + fd4p.pattern := "%[Mo,Di,Mi,Do,Fr,Sa,So]" + fd4p.findSubSetsOfElements() + this.assertTrue(Arrays.Equal(fd4p.patternGroup[1] + , ["Mo","Di","Mi","Do","Fr","Sa","So"])) + fd4p.pattern := "%[a,b,c]%[x,y,z]" + fd4p.findSubSetsOfElements() + this.assertTrue(Arrays.Equal(fd4p.patternGroup[2], ["x", "y", "z"])) + } + + @Test_randomPattern() { + fd4p := new FlimsyData.Pattern(0x0a1b2c) + this.assertEquals(fd4p.getPattern("v%[Mo,Di,Mi,Do,Fr,Sa,So]AA%[Jan,Feb,Mar,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez]C.#%[PHd,BatJ,HosB,KnoA,TsA,SrP]"), "oDi3,JunP-7HosB") ; ahklint-ignore: W002 + this.assertEquals(fd4p.getPattern(["CvccVcv##$", "xxx%[&,$,%,@]"]) + , "DehlIpi14<") + this.assertEquals(fd4p.getPattern(["CvccVcv##$", "xxx%[&,$,%,@]"]) + , "JaxyIya79|") + this.assertEquals(fd4p.getPattern(["CvccVcv##$", "xxx%[&,$,%,@]"]) + , "LjL@") + this.assertEquals(fd4p.getPattern(["L##\ ##L", "LL#\ L#"]), "B17 89P") + this.assertEquals(fd4p.getPattern(["L##\ ##L", "LL#\ L#"]), "ZG8 A4") + this.assertEquals(fd4p.getPattern(["Cv\-cc\-Vcv##$", "xx\:x%[&,$,%,@]"]) + , "Uo:Z&") + this.assertEquals(fd4p.getPattern(["XXXXXXXXXXX"]), "noyXepbePUN") + this.assertEquals(fd4p.getPattern(["Cv\-cc\-Vcv##$", "xx\:x%[&,$,%,@]"]) + , "Le-xj-Aqo39%") + this.assertEquals(fd4p.getPattern("cvcvcv##%[!,§,$,%,(,),=]") + , "goliru51$") + this.assertException(fd4p, "getPattern",,, "abc") + } + + @Test_getCountry() { + this.assertEquals(FlimsyData.getCountry("de_DE"), "DE") + this.assertEquals(FlimsyData.getCountry("de"), "DE") + this.assertEquals(FlimsyData.getCountry("en_US"), "US") + this.assertException(FlimsyData, "getCountry",,, "abc") + } + + @Test_getLanguage() { + this.assertEquals(FlimsyData.getLanguage("de_DE"), "de") + this.assertEquals(FlimsyData.getLanguage("de"), "de") + this.assertEquals(FlimsyData.getLanguage("en_US"), "en") + this.assertException(FlimsyData, "getLanguage",,, "abc") + } + + @Test_givenname() { + fd4gn := new FlimsyData.Givenname(4002) + this.assertEquals(fd4gn.get("PGivenname"), "Axel") + this.assertEquals(fd4gn.get("PGivenname"), "Axel") + this.assertEquals(fd4gn.get("PGivenname"), "Jochen") + } + + @Test_postalcode() { + fd4pc := new Flimsydata.Postalcode(13) + this.assertEquals(fd4pc.get("PPostalcode"), 86152) + this.assertEquals(fd4pc.get("PPostalcode", "en_UK"), "TF66 9PH") + this.assertEquals(fd4pc.get("PPostalcode", "en_UK"), "W06 4CH") + this.assertEquals(fd4pc.get("PPostalcode", "nl"), 3909) + } + + @Test_Lorem() { + fd := new FlimsyData.Lorem(10595) + this.assertEquals(fd.getSentence("PLorem"), "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.") ; ahklint-ignore: W002 + this.assertEquals(fd.getWord("PLorem"), "in") + this.assertEquals(fd.getWord("PLorem"), "wisi") + this.assertEquals(fd.getWord("PLorem"), "tation") + } + + @Test_TextWithOwnProvider() { + fd := new FlimsyData.Lorem(135910) + this.assertEquals(fd.getWord("PTestText"), "Kapitel") + this.assertEquals(fd.getWord("PTestText"), "besteht") + this.assertEquals(fd.getSentence("PTestText"), "Wie man hier sieht!") + this.assertEquals(fd.getSentence("PTestText") + , "Und schließlich der zweite Satz des dritten Absatzes.") + this.assertTrue(Arrays.Equal(fd.getChapter("PTestText") + , PTestText.data[1])) + this.assertEquals(fd.getWord("PTEstText", 3), "Satz zum diesem") + } + + @Test_Metasyntax() { + fd := new FlimsyData.Lorem(22917155) + this.AssertEquals(fd.getWord("PMetasyntax"), "Quux") + this.AssertEquals(fd.getWord("PMetasyntax"), "bar") + this.AssertEquals(fd.getWord("PMetasyntax"), "qux") + this.AssertEquals(fd.getWord("PMetasyntax", 15) + , "corge Waldo corge plugh qux corge " + . "bar qux Fred foo bar Waldo") + } + + @Test_Fileext() { + fd := new FlimsyData.Lorem(12345) + this.AssertEquals(fd.getWord("PFileext"), "ahk") + } +} + +FlimsyDataTestClass.RunTests() +exitapp + +class PTestText extends FlimsyData.Provider { + + ; ahklint-ignore-begin: W002,W003 + static data := [ [ "Das ist der erste Satz des ersten Absatzes. Und das der Zweite." + , "Dies hier ist der erste und einzige Satz des zweiten Absatzes." + , "Als nächstes der erste Satz des dritten Absatzes. Und schließlich der zweite Satz des dritten Absatzes. Abschließend noch der dritte und letzte Satz des dritten Absatzes." ] + , [ "Hier fängt das zweite Kapitel an. Somit ist dies der zweite Satz im ersten Absatz des zweiten Kapitels. Der erste Absatz des zweiten Kapitels endet mit diesem Satz!" + , "Auch das zweite Kapitel hat mehrere Absätze. Wie man hier sieht!" + , "Das sollte zum testen genügen." ] + , [ "Dieser Testtext besteht aus drei Kapiteln:" + , "Das erste hat drei Absätze." + , "Das zweite hat nur einen Absatz." + , "Und das dritte hat vier Absätze." ] ] + ; ahklint-ignore-end +} + diff --git a/more libs/Various1/ldap-test.ahk b/more libs/Various1/ldap-test.ahk new file mode 100644 index 00000000..c001173d --- /dev/null +++ b/more libs/Various1/ldap-test.ahk @@ -0,0 +1,566 @@ +; ahk: console +; ahk: x86 +#NoEnv +SetBatchLines -1 +#Warn All, StdOut + +#Include +#Include + +#Include %A_ScriptDir%\..\ldap.ahk +#Include c:\work\ahk\projects\Struct\modules\struct\LDAPAPIInfo.ahk + +class LdapTest extends TestCase { + + requires() { + return [TestCase, Ldap, LDAPAPIInfo, LDAPMod] + } + + static SERVER := "localhost" + static PORT := 10389 + static COVER_SERVICE := false + static VI_SERVER := "lxs150w05.viessmann.com" + static VI_PORT := 389 + + static ld := 0 + + @BeforeClass_SetUp() { + for ldap_svc in ComObjGet("winmgmts:") + .execQuery("Select * from Win32_Service where Name='apacheds-default'") { ; ahklint-ignore: W002 + if (ldap_svc.state != "Running") { + OutputDebug Starting apacheds-default service... + LdapTest.COVER_SERVICE := true + if ((ldap_rc := ldap_svc.startService()) != 0) { + this.fail("*** FATAL: apacheds-default service " + . "could not be startet: " ldap_rc,, true) + } + max_tries := 600 + while (max_tries > 0 && ldap_svc.state != "Running") { + sleep 100 + for ldap_svc in ComObjGet("winmgmts:") + .execQuery("Select * from Win32_Service where Name='apacheds-default'") { ; ahklint-ignore: W002 + break + } + max_tries-- + } + if (max_tries = 0) { + this.fail("*** FATAL: apacheds-default service " + . "could not be startet in an adequate time",, true) + } else { + OutputDebug apacheds-default service has been started + } + } else { + OutputDebug apacheds-default service is already running + } + break + } + } + + @AfterClass_TearDown() { + if (LdapTest.COVER_SERVICE) { + for ldap_svc in ComObjGet("winmgmts:") + .execQuery("Select * from Win32_Service where Name='apacheds-default'") { ; ahklint-ignore: W002 + if (ldap_svc.state = "Running") { + OutputDebug Stopping apacheds-default service... + if ((ldap_rc := ldap_svc.stopService()) != 0) { + this.fail("*** FATAL: apacheds-default service " + . "could not be stopped: " ldap_rc,, true) + } + max_tries := 600 + while (max_tries > 0 && ldap_svc.state != "Stopped") { + sleep 100 + for ldap_svc in ComObjGet("winmgmts:") + .execQuery("Select * from Win32_Service where Name='apacheds-default'") { ; ahklint-ignore: W002 + break + } + max_tries-- + } + if (max_tries = 0) { + this.fail("*** FATAL: apacheds-default service " + . "could not be stopped in an adequate time" + ,, true) + } + else { + OutputDebug apacheds-default service has been stopped + } + } else { + OutputDebug apacheds-default service has already been stopped ; ahklint-ignore: W002 + } + break + } + } + } + + @AfterClass_unbind() { + if (LdapTest.ld != 0) { + LdapTest.ld.unbind() + } + } + + @Test_AW() { + if (A_IsUnicode) { + this.assertEquals(Ldap.AW, "W") + } else { + this.assertEquals(Ldap.AW, "A") + } + } + + @Test_Constants() { + this.assertEquals(Ldap.SCOPE_BASE, 0) + this.assertEquals(Ldap.SCOPE_ONELEVEL, 1) + this.assertEquals(Ldap.SCOPE_SUBTREE, 2) + this.assertEquals(Ldap.MOD_ADD, 0) + this.assertEquals(Ldap.MOD_DELETE, 1) + this.assertEquals(Ldap.MOD_REPLACE, 2) + + this.assertEquals(Ldap.OPT_API_INFO, 0x00) + this.assertEquals(Ldap.OPT_API_FEATURE_INFO, 0x15) + this.assertEquals(Ldap.OPT_AREC_EXCLUSIVE, 0x98) + this.assertEquals(Ldap.OPT_AUTO_RECONNECT, 0x91) + this.assertEquals(Ldap.OPT_CACHE_ENABLE, 0x0F) + this.assertEquals(Ldap.OPT_CACHE_FN_PTRS, 0x0D) + this.assertEquals(Ldap.OPT_CACHE_STRATEGY, 0x0E) + this.assertEquals(Ldap.OPT_CLIENT_CERTIFICATE, 0x80) + this.assertEquals(Ldap.OPT_DEREF, 0x02) + this.assertEquals(Ldap.OPT_DESC, 0x01) + this.assertEquals(Ldap.OPT_DNSDOMAIN_NAME, 0x3B) + this.assertEquals(Ldap.OPT_ENCRYPT, 0x96) + this.assertEquals(Ldap.OPT_ERROR_NUMBER, 0x31) + this.assertEquals(Ldap.OPT_ERROR_STRING, 0x32) + this.assertEquals(Ldap.OPT_FAST_CONCURRENT_BIND, 0x41) + this.assertEquals(Ldap.OPT_GETDSNAME_FLAGS, 0x3D) + this.assertEquals(Ldap.OPT_HOST_NAME, 0x30) + this.assertEquals(Ldap.OPT_HOST_REACHABLE, 0x3E) + this.assertEquals(Ldap.OPT_IO_FN_PTRS, 0x0B) + this.assertEquals(Ldap.OPT_PING_KEEP_ALIVE, 0x36) + this.assertEquals(Ldap.OPT_PING_LIMIT, 0x38) + this.assertEquals(Ldap.OPT_PING_WAIT_TIME, 0x37) + this.assertEquals(Ldap.OPT_PROMPT_CREDENTIALS, 0x3F) + this.assertEquals(Ldap.OPT_PROTOCOL_VERSION, 0x11) + this.assertEquals(Ldap.OPT_VERSION, 0x11) + this.assertEquals(Ldap.OPT_REBIND_ARG, 0x07) + this.assertEquals(Ldap.OPT_REBIND_FN, 0x06) + this.assertEquals(Ldap.OPT_REF_DEREF_CONN_PER_MSG, 0x94) + this.assertEquals(Ldap.OPT_REFERAL_CALLBACK, 0x70) + this.assertEquals(Ldap.OPT_REFERAL_HOP_LIMIT, 0x10) + this.assertEquals(Ldap.OPT_REFERALS, 0x08) + this.assertEquals(Ldap.OPT_RESTART, 0x09) + this.assertEquals(Ldap.OPT_ROOTDSE_CACHE, 0x9A) + this.assertEquals(Ldap.OPT_SASL_METHOD, 0x97) + this.assertEquals(Ldap.OPT_SECURITY_CONTEXT, 0x99) + this.assertEquals(Ldap.OPT_SEND_TIMEOUT, 0x42) + this.assertEquals(Ldap.OPT_SCH_FLAGS, 0x43) + this.assertEquals(Ldap.OPT_SOCKET_BIND_ADDRESSES, 0x44) + this.assertEquals(Ldap.OPT_SERVER_CERTIFICATE, 0x81) + this.assertEquals(Ldap.OPT_SERVER_ERROR, 0x33) + this.assertEquals(Ldap.OPT_SERVER_EXT_ERROR, 0x34) + this.assertEquals(Ldap.OPT_SIGN, 0x95) + this.assertEquals(Ldap.OPT_SIZELIMIT, 0x03) + this.assertEquals(Ldap.OPT_SSL, 0x0A) + this.assertEquals(Ldap.OPT_SSL_INFO, 0x93) + this.assertEquals(Ldap.OPT_SSPI_FLAGS, 0x92) + this.assertEquals(Ldap.OPT_TCP_KEEPALIVE, 0x40) + this.assertEquals(Ldap.OPT_THREAD_FN_PTRS, 0x05) + this.assertEquals(Ldap.OPT_TIMELIMIT, 0x04) + + this.assertEquals(Ldap.OPT_ON, true) + this.assertEquals(Ldap.OPT_OFF, false) + + this.assertEquals(Ldap.DEREF_NEVER, 0x00) + this.assertEquals(Ldap.DEREF_SEARCHING, 0x01) + this.assertEquals(Ldap.DEREF_FINDING, 0x02) + this.assertEquals(Ldap.DEREF_ALWAYS, 0x03) + + this.assertEquals(Ldap.VERSION1, 1) + this.assertEquals(Ldap.VERSION2, 2) + this.assertEquals(Ldap.VERSION3, 3) + + this.assertEquals(Ldap.CHASE_SUBORDINATE_REFERALS, 0x20) + this.assertEquals(Ldap.CHASE_EXTERNAL_REFERALS, 0x40) + + this.assertEquals(Ldap.AUTH_NEGOTIATE, 0x400) + + this.assertEquals(Ldap.NO_LIMIT, 0) + + this.assertEquals(Ldap.LDAP_API_INFO_VERSION, 1) + } + + @Test_ServerUnAvailable() { + this.assertEquals(Ldap.hWldap32, 0) + l := new Ldap("localhost", 0) + if (!Ldap.hWldap32) { + this.fail("*** FATAL: Wldap32.dll could not be loaded",, true) + } + this.assertEquals(l.connect(), 81) + } + + @Test_ServerAvailable() { + LdapTest.ld := new Ldap(LdapTest.SERVER, LdapTest.PORT) + try { + this.assertEquals(LdapTest.ld.connect(), 0) + } catch _ex { + this.fail("*** FATAL ", _ex.message, true) + } + } + + @Test_ReconnectWithV3() { + this.assertEquals(LdapTest.ld.setOption(Ldap.OPT_VERSION + , Ldap.VERSION3), 0) + this.assertEquals(LdapTest.ld.connect(), 0) + this.assertEquals(LdapTest.ld.simpleBind("uid=admin,ou=system" + , "secret"), 0) + } + + @Depend_@Test_SetOption() { + return "@Test_ServerAvailable" + } + @Test_SetOption() { + this.assertEquals(LdapTest.ld.setOption(Ldap.OPT_VERSION, Ldap.VERSION3) + , 0) + VarSetCapacity(sl, 4, 0) + NumPut(4, sl, 0, "UInt") + this.assertEquals(LdapTest.ld.setOption(Ldap.OPT_SIZELIMIT, &sl), 0) + VarSetCapacity(tl, 4, 0) + NumPut(10, tl, 0, "UInt") + this.assertEquals(LdapTest.ld.setOption(Ldap.OPT_TIMELIMIT, &tl), 0) + } + + @Depend_@Test_GetOption() { + return "@Test_ServerAvailable,@Test_ReconnectWithV3,@Test_SetOption" + } + @Test_GetOption() { + ai := new LDAPAPIInfo() + ai.ldapai_info_version := Ldap.LDAP_API_INFO_VERSION + ai.get(apiInfo) + LdapTest.ld.getOption(Ldap.OPT_API_INFO, apiInfo) + ai.set(apiInfo) + this.assertEquals(ai.ldapai_info_version, 1) + this.assertEquals(ai.ldapai_api_version, 2004) + this.assertEquals(ai.ldapai_protocol_version, 3) + this.assertTrue(Arrays.equal(ai.ldapai_extensions + , ["VIRTUAL_LIST_VIEW"])) + this.assertEquals(ai.ldapai_vendor_name, "Microsoft Corporation.") + this.assertEquals(ai.ldapai_vendor_version, 510) + VarSetCapacity(a_e, 4, 0) + this.assertEquals(LdapTest.ld.getOption(Ldap.OPT_AREC_EXCLUSIVE, a_e) + , 0) + this.assertEquals(NumGet(&a_e, 0, "UInt"), Ldap.OPT_OFF) + VarSetCapacity(hostname, A_PtrSize, 0) + this.assertEquals(LdapTest.ld.getOption(Ldap.OPT_HOST_NAME, hostname) + , 0) + this.assertTrue(RegExMatch(StrGet(NumGet(&hostname, 0, "Ptr")) + , A_ComputerName "(\..+)?")) + VarSetCapacity(r_h_l, 4, 0) + this.assertEquals(LdapTest.ld.getOption(Ldap.OPT_REFERAL_HOP_LIMIT + , r_h_l), 0) + this.assertEquals(NumGet(&r_h_l, 0, "UInt"), 32) + VarSetCapacity(refs, 4, 0) + this.assertEquals(LdapTest.ld.getOption(Ldap.OPT_REFERALS, refs), 0) + this.assertEquals(NumGet(&refs, 0, "UInt"), Ldap.OPT_ON) + VarSetCapacity(sl, 4, 0) + this.assertEquals(LdapTest.ld.getOption(Ldap.OPT_SIZELIMIT, sl), 0) + this.assertEquals(NumGet(sl, 0, "UInt"), 4) + VarSetCapacity(ssl, 4, 0) + this.assertEquals(LdapTest.ld.getOption(Ldap.OPT_SSL, ssl), 0) + this.assertEquals(NumGet(ssl, 0, "UInt"), Ldap.OPT_OFF) + VarSetCapacity(tl, 4, 0) + this.assertEquals(LdapTest.ld.getOption(Ldap.OPT_TIMELIMIT, tl), 0) + this.assertEquals(NumGet(tl, 0, "UInt"), 10) + VarSetCapacity(ar, 4, 0) + this.assertEquals(LdapTest.ld.getOption(Ldap.OPT_AUTO_RECONNECT, ar), 0) + this.assertEquals(NumGet(ar, 0, "UInt"), Ldap.OPT_ON) + VarSetCapacity(pc, 4, 0) + this.assertEquals(LdapTest.ld.getOption(Ldap.OPT_AUTO_RECONNECT, pc), 0) + this.assertEquals(NumGet(pc, 0, "UInt"), Ldap.OPT_ON) + } + + @Test_Bind() { + this.assertEquals(LdapTest.ld.simpleBind("uid=admin,ou=system" + , "secret"), 0) + } + + @Depend_@Test_Get_DN() { + return "@Test_ServerAvailable,@Test_ReconnectWithV3,@Test_Bind" + } + @Test_Get_DN() { + this.assertEquals(LdapTest.ld.search(sr, "ou=system", "(uid=admin)" + ,, ["uid"]), 0) + this.assertEquals(ldapTest.ld.countEntries(sr), 1) + 1stEntry := LdapTest.ld.firstEntry(sr) + 1stAttr := LdapTest.ld.firstAttribute(1stEntry) + System.strCpy(1stAttr, stAttr) + this.assertEquals(stAttr, "uid") + valuesList := LdapTest.ld.getValues(1stEntry, 1stAttr) + this.assertEquals(System.ptrListToStrArray(valuesList)[1], "admin") + } + + @Test_Count_Entries() { + this.assertEquals(LdapTest.ld.search(sr, "", "(ou=*)" + , Ldap.SCOPE_ONELEVEL), 0) + this.assertEquals(LdapTest.ld.countEntries(sr), 3) + } + + @Depend_@Test_Add() { + return "@Test_ServerAvailable" + } + @Test_Add() { + cn_values := [ "Peter Pan", "" ] + Name_mod_op := Ldap.MOD_ADD + Name_mod_type := "cn" + System.strArrayToPtrList(cn_values, Name_mod_values) + Name_s := LDAPMod(Name, Name_mod_op, Name_mod_type, Name_mod_values) + ; OutputDebug % "Name:`n" LoggingHelper.HexDump(&Name, 0, Name_s) + + oc_values := [ "top", "person", "inetOrgPerson", "" ] + OClass_mod_op := Ldap.MOD_ADD + OClass_mod_type := "objectClass" + System.strArrayToPtrList(oc_values, OClass_mod_values) + OClass_s := LDAPMod(OClass, OClass_mod_op, OClass_mod_type + , OClass_mod_values) + ; OutputDebug % "OClass:`n" LoggingHelper.HexDump(&OClass, 0, OClass_s) + + gn_values := [ "Peter", "" ] + FName_mod_op := Ldap.MOD_ADD + FName_mod_type := "givenName" + System.strArrayToPtrList(gn_values, FName_mod_values) + FName_s := LDAPMod(FName, FName_mod_op, FName_mod_type + , FName_mod_values) + ; OutputDebug % "FName:`n" LoggingHelper.HexDump(&FName, 0, FName_s) + + sn_values := [ "Pan", "" ] + LName_mod_op := Ldap.MOD_ADD + LName_mod_type := "sn" + System.strArrayToPtrList(sn_values, LName_mod_values) + LName_s := LDAPMod(LName, LName_mod_op, LName_mod_type + , LName_mod_values) + ; OutputDebug % "LName:`n" LoggingHelper.HexDump(&LName, 0, LName_s) + + ti_values := [ "Developer", "" ] + Title_mod_op := Ldap.MOD_ADD + Title_mod_type := "title" + System.strArrayToPtrList(ti_values, Title_mod_values) + Title_s := LDAPMod(Title, Title_mod_op, Title_mod_type + , Title_mod_values) + ; OutputDebug % "Title:`n" LoggingHelper.HexDump(&Title, 0, Title_s) + + NewEntry_s := System.ptrList(NewEntry, &Name, &OClass, &FName, &LName + , &Title, 0) + ; OutputDebug % "NewEntry:`n" LoggingHelper.HexDump(&NewEntry, 0, NewEntry_s) + rc := LdapTest.ld.add("cn=Peter Pan,dc=example,dc=com", NewEntry) + OutputDebug % A_ThisFunc ":" Ldap.err2String(rc) + if (rc) { + this.fail("Entry to create already existing" + , "Delete entry:`ndn: cn=Peter Pan,dc=example,dc=com`n" + . "changetype: delete`n" + , true) + } + } + + @Depend_@Test_Modify() { + return "@Test_Add" + } + @Test_Modify() { + sn_values := [ "Black", "" ] + SName_mod_op := Ldap.MOD_REPLACE + SName_mod_type := "sn" + System.strArrayToPtrList(sn_values, SName_mod_values) + SName_s := LDAPMod(SName, SName_mod_op, SName_mod_type + , SName_mod_values) + ti_values := [ "Administrator", "Lightning And Strike Detonator", "" ] + Title_mod_op := Ldap.MOD_ADD + Title_mod_type := "title" + System.strArrayToPtrList(ti_values, Title_mod_values) + Title_s := LDAPMod(Title, Title_mod_op, Title_mod_type + , Title_mod_values) + ModEntry_s := System.ptrList(ModEntry, &Title, &SName, 0) + rc := LdapTest.ld.modify("cn=Peter Pan,dc=example,dc=com", ModEntry) + OutputDebug % A_ThisFunc ":" Ldap.err2String(rc) + this.assertEquals(rc, 0) + } + + @Test_FormatFilter() { + expected_output = +( + (objectclass=top) +) + this.assertEquals(Ldap.formatFilter("(objectclass=top)", false) + , expected_output) + ; ahklint-ignore-begin: W002,W003 + Example0 := "(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(accountExpires=0)(accountExpires=9223372036854775807)))" + Example0_output := "(&`n" + . " (objectCategory=person)`n" + . " (objectClass=user)`n" + . " (!`n" + . " (userAccountControl:1.2.840.113556.1.4.803:=2)`n" + . " )`n" + . " (|`n" + . " (accountExpires=0)`n" + . " (accountExpires=9223372036854775807)`n" + . " )`n" + . ")" + Example1 := "(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(accountExpires=0)(accountExpires=9223372036854775807))(userAccountControl:1.2.840.113556.1.4.803:=65536))" + Example1_output := "(&`n" + . " (objectCategory=person)`n" + . " (objectClass=user)`n" + . " (!`n" + . " (userAccountControl:1.2.840.113556.1.4.803:=2)`n" + . " )`n" + . " (|`n" + . " (accountExpires=0)`n" + . " (accountExpires=9223372036854775807)`n" + . " )`n" + . " (userAccountControl:1.2.840.113556.1.4.803:=65536)`n" + . ")" + Example2 := "(&(&(!(cn:dn:=jbond))(|(ou:dn:=ResearchAndDevelopment)(ou:dn:=HumanResources)))(objectclass=Person))" + Example2_output := "(&`n" + . " (&`n" + . " (!`n" + . " (cn:dn:=jbond)`n" + . " )`n" + . " (|`n" + . " (ou:dn:=ResearchAndDevelopment)`n" + . " (ou:dn:=HumanResources)`n" + . " )`n" + . " )`n" + . " (objectclass=Person)`n" + . ")" + Example3 := "(&(&(!(cn:dn:=jbond))(|(ou:dn:=ResearchAndDevelopment)(ou:dn:=HumanResources)))(objectclass=Person))" + Example3_output := "(&`n" + . " (&`n" + . " (!`n" + . " (cn:dn:=jbond)`n" + . " )`n" + . " (|`n" + . " (ou:dn:=ResearchAndDevelopment)`n" + . " (ou:dn:=HumanResources)`n" + . " )`n" + . " )`n" + . " (objectclass=Person)`n" + . ")" + ; ahklint-ignore-end + this.assertEquals(Ldap.formatFilter(Example0, false), Example0_output) + this.assertEquals(Ldap.formatFilter(Example1, false), Example1_output) + this.assertEquals(Ldap.formatFilter(Example2, false), Example2_output) + this.assertEquals(Ldap.formatFilter(Example3, true), Example3_output) + this.assertException(Ldap, "FormatFilter",,, "cn=*))") + } + + @Depend_@Test_Search_DN() { + return "@Test_Add,@Test_Modify" + } + @Test_Search_DN() { + decisionTable + := {title: ["Developer" + , "Administrator" + , "Lightning And Strike Detonator"] + , sn: ["Black"]} + this.assertException(LdapTest.ld, "Search",,, sr := "" + , "cn=Peter Pan,dc=example,dc=com", "(objectclass=*)" + ,, "string_nicht_erlaubt") + this.assertEquals(LdapTest.ld.search(sr + , "cn=Peter Pan,dc=example,dc=com" + , "(objectclass=*)",, ["title", "sn"]), 0) + 1stEntry := LdapTest.ld.firstEntry(sr) + 1stAttr := LdapTest.ld.firstAttribute(1stEntry) + System.strCpy(1stAttr, stAttr) + values := System.ptrListToStrArray(LdapTest.ld + .getValues(1stEntry, 1stAttr), false) + this.assertTrue(Arrays.equal(decisionTable[stAttr], values)) + 2ndAttr := LdapTest.ld.nextAttribute(1stEntry) + System.strCpy(2ndAttr, stAttr2) + values2 := System.ptrListToStrArray(LdapTest.ld + .getValues(1stEntry, 2ndAttr), false) + this.assertTrue(Arrays.equal(decisionTable[stAttr2], values2)) + } + + @Depend_@Test_Search_Attributes() { + return "@Test_Add, @Test_Modify" + } + @Test_Search_Attributes() { + decisionTable + := {title: ["Developer" + , "Administrator" + , "Lightning And Strike Detonator"] + , sn: ["Black"]} + this.assertEquals(LdapTest.ld.search(sr, "dc=example,dc=com" + , "(cn=Peter Pan)",, ["title", "sn"]), 0) + 1stEntry := LdapTest.ld.firstEntry(sr) + 1stAttr := LdapTest.ld.firstAttribute(1stEntry) + System.strCpy(1stAttr, stAttr) + 1stValues := LdapTest.ld.getValues(1stEntry, 1stAttr) + values := System.ptrListToStrArray(1stValues, false) + this.assertTrue(Arrays.equal(decisionTable[stAttr], values)) + 2ndAttr := LdapTest.ld.nextAttribute(1stEntry) + System.strCpy(2ndAttr, stAttr2) + 2ndValues := LdapTest.ld.getValues(1stEntry, 2ndAttr) + values2 := System.ptrListToStrArray(2ndValues, false) + this.assertTrue(Arrays.equal(decisionTable[stAttr2], values2)) + } + + @Depend_@Test_Search_Multiple() { + return "@Test_ServerAvailable" + } + @Test_Search_Multiple() { + decisionTable + := {Lucy: "van Pelt" + , Linus: "van Pelt"} + this.assertTrue(RegExMatch(LdapTest.ld.search(sr, "dc=example,dc=com" + , "(sn=van Pelt)", 2, ["givenname"]), "^(0|80)$")) + 1stEntry := LdapTest.ld.firstEntry(sr) + 1stAttr := LdapTest.ld.firstAttribute(1stEntry) + givennames := System.ptrListToStrArray(LdapTest.ld + .getValues(1stEntry, 1stAttr), false) + givenname := givennames[1] + this.assertEquals(decisionTable[givenname], "van Pelt") + nxtEntry := LdapTest.ld.nextEntry(1stEntry) + 1stAttr := LdapTest.ld.firstAttribute(nxtEntry) + givennames := System.ptrListToStrArray(LdapTest.ld + .getValues(nxtEntry, 1stAttr), false) + givenname := givennames[1] + this.assertEquals(decisionTable[givenname], "van Pelt") + this.assertEquals(LdapTest.ld.nextEntry(nxtEntry), 0) + this.assertEquals(LdapTest.ld.getLastError(), 0) + } + + @Depend_@Test_Delete() { + return "@Test_Add" + } + @Test_Delete() { + rc := LdapTest.ld.delete("cn=Peter Pan,dc=example,dc=com") + OutputDebug % A_ThisFunc ":" Ldap.err2String(rc) + this.assertEquals(rc, 0) + } + + @Depend_@Test_Errors() { + return "@Test_ServerAvailable" + } + @Test_Errors() { + this.assertEquals(LdapTest.ld.err2String(), "Erfolg") + this.assertEquals(LdapTest.ld.err2String(32), "Objekt nicht vorhanden") + } + + @Depend_@Test_Unbind() { + return "@Test_ServerAvailable" + } + @Test_Unbind() { + this.assertEquals(LdapTest.ld.unbind(), 0) + } + + @Test_VILdap() { + LdapTest.ld_vi := new Ldap(LdapTest.VI_SERVER, LdapTest.VI_PORT) + try { + this.assertEquals(LdapTest.ld_vi.connect(), 0) + } catch _ex { + this.fail("*** FATAL ", _ex.message, true) + } + this.assertEquals(LdapTest.ld_vi.search(sr + , "dc=viessmann,dc=net", "cn=tam_blacklist"), 0) + this.assertEquals(LdapTest.ld_vi.countEntries(sr), 1) + 1stEntry := LdapTest.ld_vi.firstEntry(sr) + this.assertEqualsIgnoreCase(LdapTest.ld_vi.getDn(1stEntry) + , "cn=tam_blacklist,ou=groups,dc=viessmann,dc=net") + this.assertEquals(LdapTest.ld_vi.unbind(), 0) + } +} + +exitapp LdapTest.runTests() diff --git a/more libs/Various1/lib/ansi.ahk b/more libs/Various1/lib/ansi.ahk new file mode 100644 index 00000000..36ff46bc --- /dev/null +++ b/more libs/Various1/lib/ansi.ahk @@ -0,0 +1,354 @@ +class Ansi { + + requires() { + return [Console, Math, Arrays] + } + + static ansiExit := Ansi.__onExit() + static stdOut := Ansi.__initStdOut() + static stdErr := Ansi.__initStdErr() + static stdIn := Ansi.__initStdIn() + static hasAnsiSupport := Ansi.__initAnsiSupport() + static ESC := "" + static ANSI_SEQ_REGEX := "\x1b\[([0-9a-fA-FxX;]+)*([HfABCDEFGsuJKmn])" + static NEWLINE := "`n" + static EMPTY_STRING := "" + static RANGE_OF_UNREADABLE_CHARS_REGEX := "[\x{0000}-\x{001a}" + . "\x{001c}-\x{001f}" + . "\x{007f}-\x{ffff}]" + static NO_BUFFER := false + + static ATTR_OFF := 0 + static ATTR_BOLD := 1 + static ATTR_ITALIC := 3 + static ATTR_UNDERSCORE := 4 + static ATTR_UNDERLINE := 4 + static ATTR_BLINK := 5 + static ATTR_REVERSE := 7 + static ATTR_IMAGE_NEG := 7 + static ATTR_CONCEALED := 8 + static ATTR_IMAGE_POS := 27 + static FOREGROUND_BLACK := 30 + static FOREGROUND_RED := 31 + static FOREGROUND_GREEN := 32 + static FOREGROUND_YELLOW := 33 + static FOREGROUND_BLUE := 34 + static FOREGROUND_MAGENTA := 35 + static FOREGROUND_CYAN := 36 + static FOREGROUND_WHITE := 37 + static BACKGROUND_BLACK := 40 + static BACKGROUND_RED := 41 + static BACKGROUND_GREEN := 42 + static BACKGROUND_YELLOW := 43 + static BACKGROUND_BLUE := 44 + static BACKGROUND_MAGENTA := 45 + static BACKGROUND_CYAN := 46 + static BACKGROUND_WHITE := 47 + static FOREGROUND_BRIGHT_BLACK := 90 + static FOREGROUND_BRIGHT_RED := 91 + static FOREGROUND_BRIGHT_GREEN := 92 + static FOREGROUND_BRIGHT_YELLOW := 93 + static FOREGROUND_BRIGHT_BLUE := 94 + static FOREGROUND_BRIGHT_MAGENTA := 95 + static FOREGROUND_BRIGHT_CYAN := 96 + static FOREGROUND_BRIGHT_WHITE := 97 + static BACKGROUND_BRIGHT_BLACK := 100 + static BACKGROUND_BRIGHT_RED := 101 + static BACKGROUND_BRIGHT_GREEN := 102 + static BACKGROUND_BRIGHT_YELLOW := 103 + static BACKGROUND_BRIGHT_BLUE := 104 + static BACKGROUND_BRIGHT_MAGENTA := 105 + static BACKGROUND_BRIGHT_CYAN := 106 + static BACKGROUND_BRIGHT_WHITE := 107 + + __initStdOut() { + h := FileOpen("*", "w `n", "cp850") + h.read(0) + return h + } + + __initStdErr() { + h := FileOpen("**", "w", "cp850") + h.read(0) + return h + } + + __initStdIn() { + if (Console.hStdIn) { + Console.hStdIn.close() + } + h := FileOpen("*", "r `n", "cp850") + h.write(0) + return h + } + + __initAnsiSupport() { + EnvGet da, DISABLE_ANSI + EnvGet ansicon_version, ANSICON_VER + return ansicon_version && (!da) + } + + __new() { + throw Exception("Instantiation of class 'a" + . this.__Class "' ist not allowed", -1) + } + + __onExit() { + OnExit("Ansi.ExitFunc") + return "Ansi.ExitFunc" + } + + exitFunc(reason=0, code=0) { + Ansi.write(Ansi.showCursor()) + Ansi.flush() + Ansi.stdOut.close() + } + + write(string, writeTo="") { + output := writeTo != "" ? writeTo : Ansi.stdOut + n := 0 + if (Ansi.hasAnsiSupport) { + output.write(string) + if (Ansi.NO_BUFFER) { + Ansi.flush() + } + n := Ansi.plainStrLen(string) + } else { + n := Console.writeAndTranslateAnsiSequences(string) + } + return n + } + + writeLine(string="", flush_immediate=false, writeTo="") { + stringWithNewLine := Ansi.write(string "`n", writeTo) + if (flush_immediate || Ansi.NO_BUFFER) { + Ansi.flush() + } + return stringWithNewLine + } + + writeError(string) { + return Ansi.write(string, Ansi.stdErr) + } + + wordWrap(inputString, desiredWidth) { + return Ansi.wrap(inputString, desiredWidth, true) + } + + wrap(inputString, desiredWidth, useWordWrapping=false) { + resultString := inputString + startAt := 1 + while (startAt < Ansi.plainStrLen(resultString) - desiredWidth + 1) { + lookAtString := SubStr(Ansi.plainStr(resultString) + , startAt, desiredWidth + 1) + newLineAt := RegExMatch(lookAtString, "O).*?[\r\n]", newLine) + if (newLineAt) { + resultString .= newLine + startAt += (newLineAt + newLine.len - 1) + } else { + aSpaceToReplaceWithNewlineAt + := RegExMatch(lookAtString, "\s+[^\s]*$") + if (useWordWrapping && aSpaceToReplaceWithNewlineAt) { + replaceAt := startAt + aSpaceToReplaceWithNewlineAt - 1 + resultString := Ansi.plainStrReplaceStr(resultString + , replaceAt, Ansi.NEWLINE) + startAt += aSpaceToReplaceWithNewlineAt + } else { + insertAt := startAt + desiredWidth + resultString := Ansi.plainStrInsert(resultString, insertAt + , Ansi.NEWLINE) + startAt += desiredWidth + 1 + } + } + } + return resultString + } + + readLine(pbMultiLine=false, ByRef pstLine="") { + pstLine := "" + loop { + Ansi.stdOut.read(0) + line := RTrim(Ansi.stdIn.readLine(), "`n`r") + pstLine .= line + Ansi.stdOut.read(0) + } until (StrLen(line) = 0 || pbMultiLine = false) + return line + } + + readable(st, emph=true) { + while (RegExMatch(st, Ansi.RANGE_OF_UNREADABLE_CHARS_REGEX, $)) { + if (emph) { + subst := Ansi.setGraphic(Ansi.ATTR_IMAGE_NEG) + . "<" (Asc($)).asHex(String.ASHEX_NOPREFIX, 2) + . ">" Ansi.setGraphic(Ansi.ATTR_IMAGE_POS) + } else { + subst := "<" (Asc($)).asHex(String.ASHEX_NOPREFIX, 2) ">" + } + st := StrReplace(st, $, subst) + } + return st + } + + cursorPosition(line=0, column=0) { + return Ansi.ESC "[" line ";" column "H" + } + + cursorUp(value=1) { + return Ansi.ESC "[" value "A" + } + + cursorDown(value=1) { + return Ansi.ESC "[" value "B" + } + + cursorForward(value=1) { + return Ansi.ESC "[" value "C" + } + + cursorBackward(value=1) { + return Ansi.ESC "[" value "D" + } + + cursorNexLine(value=1) { + return Ansi.ESC "[" value "E" + } + + cursorPreviousLine(value=1) { + return Ansi.ESC "[" value "F" + } + + cursorHorizontalAbs(value) { + return Ansi.ESC "[" value "G" + } + + saveCursorPosition() { + return Ansi.ESC "[s" + } + + restoreCursorPosition() { + return Ansi.ESC "[u" + } + + eraseDisplay(value=2) { + return Ansi.ESC "[" value "J" + } + + eraseLine(value="") { + return Ansi.ESC "[" value "K" + } + + setGraphic(value*) { + ansiGraphicCodes := "" + listOfValues := Arrays.flatten(value) + while (A_Index <= listOfValues.maxIndex()) { + ansiGraphicCodes .= (A_Index = 1 ? "" : ";") listOfValues[A_Index] + } + return Ansi.ESC "[" ansiGraphicCodes "m" + } + + hideCursor() { + return Ansi.ESC "[?25l" + } + + showCursor() { + return Ansi.ESC "[?25h" + } + + reset() { + return Ansi.ESC "[0m" + } + + flush() { + Ansi.stdOut.read(0) + Ansi.stdErr.read(0) + } + + plainStr(inputString) { + return RegExReplace(inputString, Ansi.ANSI_SEQ_REGEX, "") + } + + plainStrLen(inputString) { + return StrLen(Ansi.plainStr(inputString)) + } + + plainSubStr(inputString, start, length="") { + textParts := inputString.split(Ansi.ANSI_SEQ_REGEX) + plainText := Arrays.toString(textParts.surround, "") + return SubStr(plainText, start, length) + } + + plainStrInsert(inputString, atPosition, newSubstring) { + atPosition := Math.limitTo(atPosition, 1, StrLen(inputString) + 1) + replaceAt := Ansi.findPositionToReplaceAt(inputString, atPosition) + resultString := SubStr(inputString, 1, replaceAt - 1) + . newSubstring + . SubStr(inputString, replaceAt) + return resultString + } + + plainStrReplaceStr(inputString, atPosition, newSubstring) { + atPosition := Math.limitTo(atPosition, 1, StrLen(inputString)) + replaceAt := Ansi.findPositionToReplaceAt(inputString, atPosition) + resultString := SubStr(inputString, 1, replaceAt - 1) + . newSubstring + . SubStr(inputString, replaceAt + StrLen(newSubstring)) + return resultString + } + + findPostionsOfAnsiSequences(inputString) { + startAt := 1 + positionsOfAnsiSequences := [] + while (ansiSequenceFoundAt := RegExMatch(inputString + , "O)" Ansi.ANSI_SEQ_REGEX + , ansiSequence, startAt)) { + startAt := ansiSequenceFoundAt + ansiSequence.len + positionsOfAnsiSequences.push({position: ansiSequence.pos + , length: ansiSequence.len}) + } + return positionsOfAnsiSequences + } + + findPositionToReplaceAt(inputString, atPosition) { + positionsOfAnsiSequences + := Ansi.findPostionsOfAnsiSequences(inputString) + replaceAt := Ansi.transistPosition(inputString, atPosition + , positionsOfAnsiSequences) + return replaceAt + } + + transistPosition(inputString, position, positionsOfAnsiSequences) { + if (positionsOfAnsiSequences.maxIndex()) { + while (position >= positionsOfAnsiSequences[A_Index].position + && position < StrLen(inputString) + && A_Index <= positionsOfAnsiSequences.maxIndex()) { + position += positionsOfAnsiSequences[A_Index].length + } + } + return position + } + + mapColor(color) { + static COLOR_MAPPING + := {30: Console.Color.Foreground.BLACK + , 31: Console.Color.Foreground.RED + , 32: Console.Color.Foreground.GREEN + , 33: Console.Color.Foreground.OCHER + , 34: Console.Color.Foreground.BLUE + , 35: Console.Color.Foreground.PURPLE + , 36: Console.Color.Foreground.TURQUOISE + , 37: Console.Color.Foreground.LIGHTGREY + , 40: Console.Color.Background.BLACK + , 41: Console.Color.Background.RED + , 42: Console.Color.Background.GREEN + , 43: Console.Color.Background.OCHER + , 44: Console.Color.Background.BLUE + , 45: Console.Color.Background.PURPLE + , 46: Console.Color.Background.TURQUOISE + , 47: Console.Color.Background.LIGHTGREY} + + if ((color < 30 || color > 37) && (color < 40 || color > 47)) { + throw Exception("Invalid color code",, color) + } + return COLOR_MAPPING[color] + } +} diff --git a/more libs/Various1/lib/app.ahk b/more libs/Various1/lib/app.ahk new file mode 100644 index 00000000..c9d765ff --- /dev/null +++ b/more libs/Various1/lib/app.ahk @@ -0,0 +1,26 @@ +class App { + + requires() { + return [] + } + + ; TODO: Handly cyclic dependencies + checkRequiredClasses(forClass="") { + forClass := (forClass != "" ? forClass : this) + requiredClasses := forClass.requires() + while (A_Index <= requiredClasses.maxIndex()) { + requiredClass := requiredClasses[A_Index] + if (IsObject(requiredClass)) { + OutputDebug % forClass.__Class " uses " requiredClass.__Class + App.checkRequiredClasses(requiredClass) + } else { + OutputDebug % "Misses requirement #" A_Index + . " for " forClass.__Class + MsgBox % "Missing requirement #" A_Index + . " for " forClass.__Class + exitapp -1 + } + } + return forClass + } +} diff --git a/more libs/Various1/lib/arrays.ahk b/more libs/Various1/lib/arrays.ahk new file mode 100644 index 00000000..fcaf1ce0 --- /dev/null +++ b/more libs/Various1/lib/arrays.ahk @@ -0,0 +1,273 @@ +; ahk: console +class Arrays { + + requires() { + return [String] + } + + #Include %A_LineFile%\..\modules\arrays\ + #Include Venn.ahk + #Include Quicksort.ahk + + __new() { + throw Exception("Instatiation of class '" this.__Class + . "' ist not allowed", -1) + } + + equal(anArray, anArrayToCompareWith) { + Arrays.isArray(anArray) + Arrays.isArray(anArrayToCompareWith) + if (!(anArray.count() == anArrayToCompareWith.count())) { + return false + } + loop % anArray.count() { + if (!(anArray[A_Index] == anArrayToCompareWith[A_Index])) { + return false + } + } + return true + } + + countOccurences(anArray, lookUpValue, caseSensitive=false) { + Arrays.isArray(anArray) + result := 0 + loop % anArray.count() { + result += Arrays.areValuesEqual(anArray[A_Index], lookUpValue + , caseSensitive) + } + return result + } + + areValuesEqual(aValue, anotherValue, caseSensitive) { + return (!caseSensitive && aValue = anotherValue) + || (caseSensitive && aValue == anotherValue) + ? 1 : 0 + } + + keys(anArray) { + Arrays.isArray(anArray) + result := [] + for key in anArray { + result.push(key) + } + return result + } + + values(anArray) { + Arrays.isArray(anArray) + result := [] + for _, value in anArray { + result.push(value) + } + return result + } + + distinct(anArray) { + Arrays.isArray(anArray) + distinctValuesInArray := [] + for _, value in anArray { + if (!distinctValuesInArray.hasKey(value)) { + distinctValuesInArray[value] := true + } + } + return Arrays.keys(distinctValuesInArray) + } + + removeValue(anArray, theValueToRemove, caseSensitive=false) { + Arrays.isArray(anArray) + result := 0 + index := anArray.minIndex() + while (index <= anArray.maxIndex()) { + if (Arrays.areValuesEqual(anArray[index], theValueToRemove + , caseSensitive)) { + anArray.removeAt(index) + result++ + } else { + index++ + } + } + return result + } + + shift(anArray, shiftByElements=1) { + Arrays.isArray(anArray) + if (shiftByElements < 1) { + numberOfShifts := 1 + } else if (shiftByElements > anArray.maxIndex()) { + numberOfShifts := anArray.maxIndex() + } else { + numberOfShifts := shiftByElements + } + shiftedElements := [] + loop %numberOfShifts% { + shiftedElements.push(anArray.removeAt(anArray.minIndex())) + } + if (shiftByElements != 1) { + return shiftedElements + } + return shiftedElements[1] + } + + append(anArray, anotherArray) { + Arrays.isArray(anArray) + Arrays.isArray(anotherArray) + for _, value in anotherArray { + anArray.push(value) + } + return anArray.maxIndex() + } + + wrap(anArray, textWidth, indentWithText="", indent1stElementWithText="" + , replace1stIndent=false) { + Arrays.isArray(anArray) + wrappedText := "" + index := anArray.minIndex() + while (index <= anArray.maxIndex()) { + if (A_Index = 1) { + wrappedElement := anArray[index++].wrap(textWidth + , indentWithText, indent1stElementWithText + , replace1stIndent) + } else { + wrappedElement := anArray[index++].wrap(textWidth + , indentWithText, "", false) + } + wrappedText .= wrappedElement "`n" + } + return wrappedText + } + + toString(anArray, separateWithText=" ") { + Arrays.isArray(anArray) + if (!anArray.maxIndex()) { + return "" + } + index := anArray.minIndex() + result := "" + while (index <= anArray.maxIndex()) { + result .= Arrays.appendElementToString(result, separateWithText + , anArray[index++]) + } + return result + } + + appendElementToString(currentString, separateWithText, element) { + result := (currentString != "" ? separateWithText : "") + if (element.maxIndex() == "") { + result .= element + } else { + result .= Arrays.toString(element, separateWithText) + } + return result + } + + index(anArray) { + indexOfArray := [] + for key, value in anArray { + indexKey := value + indexValue := key + if (!indexOfArray.hasKey(indexKey)) { + indexOfArray[indexKey] := indexValue + } else { + previousValues := [indexOfArray[indexKey]] + previousValues.push(indexValue) + indexOfArray[indexKey] := previousValues + } + } + return indexOfArray + } + + copyOf(anArray, newLength, padWith=0) { + copyOfArray := [] + startIndex := anArray.minIndex() + endIndex := anArray.maxIndex() + index := startIndex + loop %newLength% { + copyOfArray[index] := (index <= endIndex ? anArray[index] : padWith) + index++ + } + return copyOfArray + } + + sort(anArray, compareFunc="") { + Arrays.isArray(anArray) + if (compareFunc == "") { + compareFunc := Arrays.Quicksort.compareStrings.bind(Arrays) + } + Arrays.isCallbackFunction(compareFunc) + return Arrays.Quicksort.sort(anArray, compareFunc + , anArray.minIndex(), anArray.maxIndex()) + } + + flatten(anArray, reset=true) { + static flatArray + Arrays.isArray(anArray) + if (reset) { + flatArray := [] + } + index := anArray.minIndex() + loop { + if (anArray[index].minIndex() != "") { + Arrays.flatten(anArray[index], false) + } else { + flatArray.push(anArray[index]) + } + index++ + } until (index > anArray.maxIndex()) + return flatArray + } + + map(anArray, callbackFunc) { + Arrays.isArray(anArray) + Arrays.isCallbackFunction(callbackFunc) + result := [] + for _, currentValue in anArray { + if (!IsObject(currentValue)) { + currentValue := {1: currentValue} + } + result.push(callbackFunc.call(currentValue)) + } + return result + } + + reduce(anArray, callbackFunc, initialValue) { + Arrays.isArray(anArray) + Arrays.isCallbackFunction(callbackFunc) + result := initialValue + for _, currentValue in anArray { + result := callbackFunc.call(result, currentValue) + } + return result + } + + forEach(anArray, callbackFunc) { + Arrays.isArray(anArray) + Arrays.isCallbackFunction(callbackFunc) + for _, currentValue in anArray { + callbackFunc.call(currentValue, A_Index, anArray) + } + } + + filter(anArray, callbackFunc) { + Arrays.isArray(anArray) + Arrays.isCallbackFunction(callbackFunc) + result := [] + for _, currentValue in anArray { + if (callbackFunc.call(currentValue, A_Index, anArray)) { + result.push(currentValue) + } + } + return result + } + + isArray(anArray) { + if (anArray.count() == "") { + throw Exception("Argument has to be an array") + } + } + + isCallbackFunction(callbackFunc) { + if (!IsFunc(callbackFunc) && !IsObject(callbackFunc)) { + throw Exception("Callback function not found " callbackFunc) + } + } +} diff --git a/more libs/Various1/lib/base64.ahk b/more libs/Various1/lib/base64.ahk new file mode 100644 index 00000000..c14e58b7 --- /dev/null +++ b/more libs/Various1/lib/base64.ahk @@ -0,0 +1,128 @@ +class Base64 { + + requires() { + return [] + } + + static A_W := Base64.initAorW() + + /* + * Constants: Encode/Decode + * CRYPT_STRING_BASE64HEADER - Base64, with certificate beginning and ending headers. + * CRYPT_STRING_BASE64 - Base64, without headers. + * CRYPT_STRING_BINARY - Pure binary copy. + * CRYPT_STRING_BASE64REQUESTHEADER - Base64, with request beginning and ending headers. + * CRYPT_STRING_HEX - Hexadecimal only. + * CRYPT_STRING_HEXASCII - Hexadecimal, with ASCII character display. + * CRYPT_STRING_BASE64X509CRLHEADER - Base64, with X.509 CRL beginning and ending headers. + * CRYPT_STRING_HEXADDR - Hexadecimal, with address display. + * CRYPT_STRING_HEXRAW - A raw hexadecimal string. + * CRYPT_STRING_STRICT - Enforce strict decoding of ASN.1 text formats. + * + + * Constants: Encode only + * CRYPT_STRING_NOCRLF - Do not append any new line character to the encoded string. + * CRYPT_STRING_NOCR - Only use the line feed (LF) character (0x0A) for a new line. + + + * Constants: Decode only + * CRYPT_STRING_BASE64_ANY - Tries the following, in order: CRYPT_STRING_BASE64HEADER / CRYPT_STRING_BASE64 + * CRYPT_STRING_ANY - Tries the following, in order: CRYPT_STRING_BASE64HEADER / CRYPT_STRING_BASE64 / CRYPT_STRING_BINARY + * CRYPT_STRING_HEX_ANY - Tries the following, in order: CRYPT_STRING_HEXADDR / CRYPT_STRING_HEXASCIIADDR / CRYPT_STRING_HEX / CRYPT_STRING_HEXRAW / CRYPT_STRING_HEXASCII + */ + static CRYPT_STRING_BASE64HEADER := 0x00000000 + static CRYPT_STRING_BASE64 := 0x00000001 + static CRYPT_STRING_BINARY := 0x00000002 + static CRYPT_STRING_BASE64REQUESTHEADER := 0x00000003 + static CRYPT_STRING_HEX := 0x00000004 + static CRYPT_STRING_HEXASCII := 0x00000005 + static CRYPT_STRING_BASE64_ANY := 0x00000006 + static CRYPT_STRING_ANY := 0x00000007 + static CRYPT_STRING_HEX_ANY := 0x00000008 + static CRYPT_STRING_BASE64X509CRLHEADER := 0x00000009 + static CRYPT_STRING_HEXADDR := 0x0000000a + static CRYPT_STRING_HEXASCIIADDR := 0x0000000b + static CRYPT_STRING_HEXRAW := 0x0000000c + static CRYPT_STRING_STRICT := 0x20000000 + static CRYPT_STRING_NOCRLF := 0x40000000 + static CRYPT_STRING_NOCR := 0x80000000 + + __new() { + throw Exception("Instantiation of class '" this.__Class + . "' is not allowed", -1) + } + + initAorW() { + return A_IsUnicode ? "W" : "A" + } + + encode(ByRef pbBinary, cbBinary=0, dwFlags=0x40000001) { + if (!cbBinary) { + cbBinary := (StrLen(pbBinary)) * (A_IsUnicode ? 2 : 1) + } + pcchString := 0 + if (!DllCall("crypt32\CryptBinaryToString" Base64.A_W + , "Str", pbBinary + , "UInt", cbBinary + , "UInt", dwFlags + , "Ptr", 0 + , "UInt*", pcchString + , "CDecl")) { + throw Exception(A_ThisFunc " failed",, A_LastError) + } + VarSetCapacity(pszString, pcchString * (A_IsUnicode ? 2 : 1), 0) + if (!DllCall("crypt32\CryptBinaryToString" Base64.A_W + , "Str", pbBinary + , "UInt", cbBinary + , "UInt", dwFlags + , "Ptr", &pszString + , "UInt*", pcchString + , "CDecl")) { + throw Exception(A_ThisFunc " failed",, A_LastError) + } + return StrGet(&pszString) + } + + decode(pszString, cchString, dwFlags, ByRef pbBinary, ByRef pcbBinary=0 + , ByRef pdwSkip=0, ByRef pdwFlags=0) { + if (!cchString) { + cchString := StrLen(pszString) * (A_IsUnicode ? 2 : 1) + } + VarSetCapacity(_pcbBinary, 4, 0) + NumPut(pcbBinary, _pcbBinary, 0, "UInt") + VarSetCapacity(_pdwSkip, 4, 0) + NumPut(pdwSkip, _pdwSkip, 0, "UInt") + VarSetCapacity(_pdwFlags, 4, 0) + NumPut(pdwFlags, _pdwFlags, 0, "UInt") + if (!DllCall("crypt32\CryptStringToBinary" Base64.A_W + , "Str", pszString + , "UInt", cchString + , "UInt", dwFlags + , "Ptr", 0 + , "UInt", &_pcbBinary + , "UInt", &_pdwSkip + , "UInt", &_pdwFlags + , "CDecl")) { + throw Exception(A_ThisFunc " failed",, A_LastError) + } + pcbBinary := NumGet(_pcbBinary, 0, "UInt") * (A_IsUnicode ? 2 : 1) + VarSetCapacity(pbBinary, pcbBinary, 0) + NumPut(pcbBinary, _pcbBinary, 0, "UInt") + if (!DllCall("crypt32\CryptStringToBinary" Base64.A_W + , "Str", pszString + , "UInt", cchString + , "UInt", dwFlags + , "Ptr", &pbBinary + , "UInt", &_pcbBinary + , "UInt", &_pdwSkip + , "UInt", &_pdwFlags + , "CDecl")) { + throw Exception(A_ThisFunc " failed",, A_LastError) + } + pcbBinary := NumGet(_pcbBinary, 0, "UInt") + pdwSkip := NumGet(_pdwSkip, 0, "UInt") + pdwFlags := NumGet(_pdwFlags, 0, "UInt") + return NumGet(_pcbBinary, 0, "UInt") + } +} +; vim: ts=4:sts=4:sw=4:tw=0:noet diff --git a/more libs/Various1/lib/bitset.ahk b/more libs/Various1/lib/bitset.ahk new file mode 100644 index 00000000..e081aa66 --- /dev/null +++ b/more libs/Various1/lib/bitset.ahk @@ -0,0 +1,501 @@ +class BitSet { + + requires() { + return [TestCase, Arrays, System, Math] + } + + ; @SeeAlso: http://www.docjar.com/html/api/java/util/BitSet.java.html + + static ADDRESS_BITS_PER_WORD := 6 + static BITS_PER_WORD := 1 << BitSet.ADDRESS_BITS_PER_WORD + static BIT_INDEX_MASK := BitSet.BITS_PER_WORD - 1 + static WORD_MASK := SL(0xffffffffffffffff) + + words := [] + wordsInUse := 0 + sizeIsSticky := false + + wordIndex(bitIndex) { + return bitIndex >> BitSet.ADDRESS_BITS_PER_WORD + } + + checkInvariants() { + try { + TestCase.assert(this.wordsInUse == 0 + || this.words[this.wordsInUse - 1] != 0 + , A_ThisFunc ": Assertion 1 failed: " + . this.wordsInUse "==0 || " + . this.words[this.wordsInUse - 1] "!=0") + TestCase.assert(this.wordsInUse >= 0 + && this.wordsInUse <= this.words.count() + , A_ThisFunc ": Assertion 2 failed: " + . this.wordsInUse ">=0 && " + . this.wordsInUse "<=" this.words.count()) + TestCase.assert(this.wordsInUse == this.words.count() + || this.words[this.wordsInUse] == 0 + , A_ThisFunc ": Assertion 3 failed: " + . this.wordsInUse "==" this.words.count() " || " + . this.words[this.wordsInUse] "==0") + } catch gotException { ; NOTEST: Selfcheck + throw gotException ; NOTEST: - + } + } + + recalculateWordsInUse() { + i := this.wordsInUse - 1 + while (i >= 0) { + if (this.words[i] != 0) { + break + } + i-- + } + this.wordsInUse := i + 1 + } + + __new(arg="") { + if (!arg) { + this.initWords(BitSet.BITS_PER_WORD) + this.sizeIsSticky := false + } else if (IsObject(arg)) { + words := arg + loop % arg.maxIndex() { + this.words[A_Index-1] := words[A_Index] + } + this.wordsInUse := (words.maxIndex() = "" ? 0 : words.maxIndex()) + this.checkInvariants() + } else { + nbits := arg + if (nbits < 0) { + throw Exception("NegativeArraySizeException: nbits < 0: " nbits) + } + this.initWords(nbits) + this.sizeIsSticky := true + } + return this + } + + initWords(nbits) { + this.words := [] + loop % this.wordIndex(nbits-1) + 1 { + this.words[A_Index-1] := 0 + } + } + + valueOfLong(longs) { + n := longs.maxIndex() + while (n > 0 && longs[n] = 0) { + n-- + } + return new BitSet(Arrays.copyOf(longs, n)) + } + + valueOfByte(bytes) { + n := bytes.maxIndex() + while (n > 0 && bytes[n - 1] == 0) { + n-- + } + return new BitSet(bytes) + } + + toLongArray() { + longArray := [] + loop % this.wordsInUse { + longArray.push(this.words[A_Index - 1]) + } + return longArray + } + + toByteArray() { + ; TODO: Implment `toByteArray` method! + /* + int n = wordsInUse; + if (n == 0) + return new byte[0]; + int len = 8 * (n-1); + for (long x = words[n - 1]; x != 0; x >>>= 8) + len++; + byte[] bytes = new byte[len]; + ByteBuffer bb = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN); + for (int i = 0; i < n - 1; i++) + bb.putLong(words[i]); + for (long x = words[n - 1]; x != 0; x >>>= 8) + bb.put((byte) (x & 0xff)); + return bytes; + */ + return this.toLongArray() + } + + ensureCapacity(wordsRequired) { + if (this.words.count() < wordsRequired) { + request := Max(2 * this.words.count(), wordsRequired) + this.words := Arrays.copyOf(this.words, request) + this.sizeIsSticky := false + } + } + + expandTo(wordIndex) { + wordsRequired := wordIndex + 1 + if (this.wordsInUse < wordsRequired) { + this.ensureCapacity(wordsRequired) + this.wordsInUse := wordsRequired + } + } + + checkRange(fromIndex, toIndex) { + if (fromIndex < 0) { + throw Exception("IndexOutOfBoundsException: fromIndex < 0: " + . fromIndex) + } + if (toIndex < 0) { + throw Exception("IndexOutOfBoundsException: toIndex < 0: " + . toIndex) + } + if (fromIndex > toIndex) { + throw Exception("IndexOutOfBoundsException: fromIndex: " + . fromIndex " > toIndex: " toIndex) + } + } + + flip(bitIndex) { + if (bitIndex < 0) { + throw Exception("IndexOutOfBoundsException: bitIndex < 0: " + . bitIndex) + } + wordIndex := this.wordIndex(bitIndex) + this.expandTo(wordIndex) + this.words[wordIndex] ^= (1 << bitIndex) + this.recalculateWordsInUse() + this.checkInvariants() + } + + flipRange(fromIndex, toIndex) { + this.checkRange(fromIndex, toIndex) + if (fromIndex == toIndex) { + return + } + startWordIndex := this.wordIndex(fromIndex) + endWordIndex := this.wordIndex(toIndex - 1) + this.expandTo(endWordIndex) + firstWordMask := BitSet.WORD_MASK << fromIndex + lastWordMask := Math.zeroFillShiftR(BitSet.WORD_MASK, -toIndex) + if (startWordIndex = endWordIndex) { + ; Case 1: One word + this.words[startWordIndex] ^= (firstWordMask & lastWordMask) + } else { + ; Case 2: Multiple words + ; Handle first word + this.words[startWordIndex] ^= firstWordMask + ; Handle intermediate words, if any + i := startWordIndex+1 + while (i < endWordIndex) { + this.words[i++] ^= BitSet.WORD_MASK + } + ; Handle last word + this.words[endWordIndex] ^= lastWordMask + } + this.recalculateWordsInUse() + this.checkInvariants() + } + + set(bitIndex) { + if (bitIndex < 0) { + throw Exception("IndexOutOfBoundsException: bitIndex < 0: " + . bitIndex) + } + wordIndex := this.wordIndex(bitIndex) + this.expandTo(wordIndex) + this.words[wordIndex] |= (1 << bitIndex) + this.checkInvariants() + } + + setValue(bitIndex, value) { + if (value) { + this.set(bitIndex) + } else { + this.clear(bitIndex) + } + } + + setRange(fromIndex, toIndex) { + if (fromIndex = toIndex) { + return + } + startWordIndex := this.wordIndex(fromIndex) + endWordIndex := this.wordIndex(toIndex - 1) + this.expandTo(endWordIndex) + firstWordMask := SL(BitSet.WORD_MASK << fromIndex) + lastWordMask := Math.zeroFillShiftR(BitSet.WORD_MASK, -toIndex) + if (startWordIndex == endWordIndex) { + ; Case 1: One word + this.words[startWordIndex] |= (firstWordMask & lastWordMask) + } else { + ; Case 2: Multiple words + ; Handle first word + this.words[startWordIndex] |= firstWordMask + ; Handle intermediate words, if any + i := startWordIndex+1 + while (i < endWordIndex) { + this.words[i++] := BitSet.WORD_MASK + } + ; Handle last word + this.words[endWordIndex] |= lastWordMask + } + this.checkInvariants() + } + + and(set) { + if (this = set) { + return + } + while (this.wordsInUse > set.wordsInUse) { + this.words[--this.wordsInUse] := 0 + } + i := 0 + while (i < this.wordsInUse) { + this.words[i] &= set.words[i] + i++ + } + this.recalculateWordsInUse() + this.checkInvariants() + } + + or(set) { + if (this = set) { + return + } + wordsInCommon := Min(this.wordsInUse, set.wordsInUse) + if (this.wordsInUse < set.wordsInUse) { + this.ensureCapacity(set.wordsInUse) + this.wordsInUse := set.wordsInUse + } + + i := 0 + while (i < wordsInCommon) { + this.words[i] |= set.words[i] + i++ + } + if (wordsInCommon < set.wordsInUse) { + System.arrayCopy(set.words, wordsInCommon, this.words, wordsInCommon + , this.wordsInUse - wordsInCommon) + } + this.checkInvariants() + } + + xor(set) { + wordsInCommon := Min(this.wordsInUse, set.wordsInUse) + if (this.wordsInUse < set.wordsInUse) { + this.ensureCapacity(set.wordsInUse) + this.wordsInUse := set.wordsInUse + } + i := 0 + while (i < wordsInCommon) { + this.words[i] ^= set.words[i] + i++ + } + if (wordsInCommon < set.wordsInUse) { + System.arrayCopy(set.words, wordsInCommon, this.words, wordsInCommon + , set.wordsInUse - wordsInCommon) + } + this.recalculateWordsInUse() + this.checkInvariants() + } + + andNot(set) { + i := Min(this.wordsInUse, set.wordsInUse) - 1 + while (i >= 0) { + this.words[i] &= ~set.words[i] + i-- + } + this.recalculateWordsInUse() + this.checkInvariants() + } + + clear(bitIndex="") { + if (bitIndex == "") { + loop % this.wordsInUse { + this.words[A_Index-1] := 0 + } + return + } + if (bitIndex < 0) { + throw Exception("IndexOutOfBoundsException: bitIndex < 0: " + . bitIndex) + } + wordIndex := this.wordIndex(bitIndex) + if (wordIndex >= this.wordsInUse) { + return + } + this.words[wordIndex] &= ~(1 << bitIndex) + this.recalculateWordsInUse() + this.checkInvariants() + } + + clearRange(fromIndex, toIndex) { + if (fromIndex == toIndex) { + return + } + startWordIndex := this.wordIndex(fromIndex) + if (startWordIndex >= this.wordsInUse) { + return + } + endWordIndex := this.wordIndex(toIndex - 1) + if (endWordIndex >= this.wordsInUse) { + toIndex := this.length() + endWordIndex := this.wordsInUse - 1 + } + firstWordMask := BitSet.WORD_MASK << fromIndex + lastWordMask := Math.zeroFillShiftR(BitSet.WORD_MASK, -toIndex) + if (startWordIndex == endWordIndex) { + ; Case 1: One word + this.words[startWordIndex] &= ~(firstWordMask & lastWordMask) + } else { + ; Case 2: Multiple words + ; Handle first word + this.words[startWordIndex] &= ~firstWordMask + ; Handle intermediate words, if any + i := startWordIndex+1 + while (i < endWordIndex) { + this.words[i++] := 0 + } + ; Handle last word + this.words[endWordIndex] &= ~lastWordMask + } + this.recalculateWordsInUse() + this.checkInvariants() + } + + get(bitIndex) { + if (bitIndex < 0) { + throw Exception("IndexOutOfBoundsException: bitIndex < 0: " + . bitIndex) + } + this.checkInvariants() + wordIndex := this.wordIndex(bitIndex) + return wordIndex < this.wordsInUse + && ((this.words[wordIndex] & (1 << bitIndex)) != 0) + } + + getRange(fromIndex, toIndex) { + this.checkRange(fromIndex, toIndex) + this.checkInvariants() + len := this.length() + if (len <= fromIndex || fromIndex == toIndex) { + return new BitSet(0) + } + if (toIndex > len) { + toIndex := len + } + result := new BitSet(toIndex - fromIndex) + targetWords := this.wordIndex(toIndex - fromIndex - 1) + 1 + sourceIndex := this.wordIndex(fromIndex) + wordAligned := (fromIndex & BitSet.BIT_INDEX_MASK) == 0 + ; Process all words but the last word + i := 0 + while (i < targetWords - 1) { + result.words[i++] := wordAligned + ? this.words[sourceIndex] + : Math.zeroFillShiftR(this.words[sourceIndex], fromIndex) + | (this.words[sourceIndex+1] << -fromIndex) + sourceIndex++ + } + ; Process the last word + lastWordMask := Math.zeroFillShiftR(BitSet.WORD_MASK, -toIndex) + result.words[targetWords - 1] + := ((toIndex-1) & BitSet.BIT_INDEX_MASK) + < (fromIndex & BitSet.BIT_INDEX_MASK) + ? (Math.zeroFillShiftR(this.words[sourceIndex], fromIndex) + | (this.words[sourceIndex+1] & lastWordMask) << -fromIndex) + : (Math.zeroFillShiftR(this.words[sourceIndex] & lastWordMask + , fromIndex)) + ; Set wordsInUse correctly + result.wordsInUse := targetWords + result.recalculateWordsInUse() + result.checkInvariants() + return result + } + + nextSetBit(fromIndex) { + if (fromIndex < 0) { + throw Exception("IndexOutOfBoundsException: fromIndex: " fromIndex) + } + this.checkInvariants() + u := this.wordIndex(fromIndex) + if (u >= this.wordsInUse) { + return -1 + } + word := this.words[u] & (BitSet.WORD_MASK << fromIndex) + loop { + if (word != 0) { + return (u * BitSet.BITS_PER_WORD) + + Math.numberOfTrailingZeros(word) + } + if (++u == this.wordsInUse) { + return -1 + } + word := this.words[u] + } + } + + nextClearBit(fromIndex) { + if (fromIndex < 0) { + throw Exception("IndexOutOfBoundsException: fromIndex < 0: " + . fromIndex) + } + this.checkInvariants() + u := this.wordIndex(fromIndex) + if (u >= this.wordsInUse) { + return fromIndex + } + word := ~this.words[u] & (BitSet.WORD_MASK << fromIndex) + loop { + if (word != 0) { + return (u * BitSet.BITS_PER_WORD) + + Math.numberOfTrailingZeros(word) + } + if (++u = this.wordsInUse) { + return this.wordsInUse * BitSet.BITS_PER_WORD + } + word := ~this.words[u] + } + } + + length() { + if (this.wordsInUse = 0) { + return 0 + } + return BitSet.BITS_PER_WORD * (this.wordsInUse - 1) + + (BitSet.BITS_PER_WORD + - Math.numberOfLeadingZeros(this.words[this.wordsInUse - 1])) + } + + cardinality() { + sum := 0 + loop % this.wordsInUse { + sum += Math.bitCount(this.words[A_Index - 1]) + } + return sum + } + + toString() { + this.checkInvariants() + numBits := (this.wordsInUse > 128) + ? this.cardinality() + : this.wordsInUse * BitSet.BITS_PER_WORD + result := "{" + i := this.nextSetBit(0) + if (i != -1) { + result .= i + i := this.nextSetBit(i+1) + while (i >= 0) { + endOfRun := this.nextClearBit(i) + while (i < endOfRun) { + result .= ", " i + i++ + } + i := this.nextSetBit(i+1) + } + } + result .= "}" + return result + } +} diff --git a/more libs/Various1/lib/calendar.ahk b/more libs/Various1/lib/calendar.ahk new file mode 100644 index 00000000..f781d442 --- /dev/null +++ b/more libs/Various1/lib/calendar.ahk @@ -0,0 +1,392 @@ +#Include + +#Include %A_LineFile%\..\modules\calendar +#Include CalendarHelper.ahk + +class Calendar { + + static SUNDAY := 1 + static MONDAY := 2 + static TUESDAY := 3 + static WEDNESDAY := 4 + static THURSDAY := 5 + static FRIDAY := 6 + static SATURDAY := 7 + + static JANUARY := 1 + static FEBRUARY := 2 + static MARCH := 3 + static APRIL := 4 + static MAY := 5 + static JUNE := 6 + static JULY := 7 + static AUGUST := 8 + static SEPTEMBER := 9 + static OCTOBER := 10 + static NOVEMBER := 11 + static DECEMBER := 12 + + static FIND_NEXT := +0.1 + static FIND_RECENT := -0.1 + static FIND_NEXT_OR_FIRST_OCCURENCE_OF_WEEKDAY := 0 + + timeStamp := A_Now + + #Include %A_LineFile%\..\modules\calendar\ + #Include Units.ahk + #Include TimeZone.ahk + + __new(dateTime="") { + try { + this.timeStamp := CalendarHelper.validTime(dateTime) + } catch _ex { + throw _ex + } + return this + } + + get() { + return this.timeStamp + } + + isLeapYear() { + yearToTest := SubStr(this.timeStamp, 1, 4) + return (Mod(yearToTest, 4) == 0 && Mod(yearToTest, 100) != 0) + || Mod(yearToTest, 400) == 0 + } + + long(piLong="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asLong()/Calendar.setAsLong() instead ; ahklint-ignore: W002 + if (piLong = "") { + return this.asLong() + } + return this.setAsLong(piLong) + } ; notest-end + + asLong() { + dateTime := this.timeStamp + dateTime -= 19700101000000, Seconds + return dateTime + } + + setAsLong(newLongDateTime) { + dateTime := 19700101000000 + dateTime += newLongDateTime, Seconds + this.timeStamp := dateTime + return this + } + + julian(piJulian="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asJulian()/Calendar.setAsJulian() instead ; ahklint-ignore: W002 + if (piJulian = "") { + return this.asJulian() + } + return this.setAsJulian(piJulian) + } ; notest-end + + asJulian() { + julianDateTime := 0 + loop % this.asMonth() - 1 { + julianDateTime += CalendarHelper.daysInMonth(this.timeStamp + , A_Index) + } + julianDateTime += this.asDay() + return julianDateTime + } + + setAsJulian(newJulianDateTime) { + if (!RegExMatch(newJulianDateTime, "^\d+$")) { + throw Exception("Invalid data type - integer expected" + , -1 , "<" newJulianDateTime ">") + } + daysInYear := 337 + CalendarHelper.daysInMonth(this.timeStamp, 2) + if (newJulianDateTime < 1 || newJulianDateTime > daysInYear) { + throw Exception("Julian day must be between 1 and " daysInYear + , -1, "<" newJulianDateTime ">") + } + dayOfJulianDateTime := newJulianDateTime + while (dayOfJulianDateTime > CalendarHelper.daysInMonth(this.timeStamp + , A_Index)) { + dayOfJulianDateTime -= CalendarHelper.daysInMonth(this.timeStamp + , A_Index) + monthOfJulianDateTime := A_Index + 1 + } + this.setAsMonth(monthOfJulianDateTime) + this.setAsDay(dayOfJulianDateTime) + return this + } + + date(pDate="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asDate()/Calendar.setAsDate() instead ; ahklint-ignore: W002 + if (pDate = "") { + return this.asDate() + } + return this.setAsDate(pDate) + } ; notest-end + + asDate() { + return SubStr(this.timeStamp, 1, 8) + } + + setAsDate(newDate) { + validNewDate := CalendarHelper.validTime(newDate) + this.timeStamp := SubStr(validNewDate, 1, 8) SubStr(this.timeStamp, 9) + return this + } + + time(pTime="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asTime()/Calendar.setAsTime() instead ; ahklint-ignore: W002 + if (pTime = "") { + return this.asTime() + } + return this.setAsTime(pTime) + } ; notest-end + + asTime() { + return SubStr(this.timeStamp, 9) + } + + setAsTime(newTime) { + validNewTime := CalendarHelper.validTime(16010101 newTime) + this.timeStamp := SubStr(this.timeStamp, 1, 8) SubStr(validNewTime, 9) + return this + } + + year(piYear="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asYear()/Calendar.setAsYear() instead ; ahklint-ignore: W002 + if (piYear = "") { + return this.asYear() + } + return this.setAsYear(piYear) + } ; notest-end + + asYear() { + return SubStr(this.timeStamp, 1, 4) + } + + setAsYear(newYear) { + validNewYear := CalendarHelper.validTime(newYear) + this.timeStamp := SubStr(validNewYear, 1, 4) SubStr(this.timeStamp, 5) + return this + } + + month(piMonth="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asMonth()/Calendar.setAsMonth() instead ; ahklint-ignore: W002 + if (piMonth = "") { + return this.asMonth() + } + return this.setAsMonth(piMonth) + } ; notest-end + + asMonth() { + return SubStr(this.timeStamp, 5, 2) + } + + setAsMonth(newMonth) { + validNewMonth := CalendarHelper.validTime(1601 SubStr("0" newMonth, -1)) + this.timeStamp := SubStr(this.timeStamp, 1, 4) + . SubStr(validNewMonth, 5, 2) + . SubStr(this.timeStamp, 7) + return this + } + + day(piDay="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asDay()/Calendar.setAsDay() instead ; ahklint-ignore: W002 + if (piDay = "") { + return this.asDay() + } + return this.setAsDay(piDay) + } ; notest-end + + asDay() { + return SubStr(this.timeStamp, 7, 2) + } + + setAsDay(newDay) { + validNewDay := CalendarHelper.validTime(160101 SubStr("0" newDay, -1)) + this.timeStamp := SubStr(this.timeStamp, 1, 6) + . SubStr(validNewDay, 7, 2) + . SubStr(this.timeStamp, 9) + return this + } + + hour(piHour="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asHour()/Calendar.setAsHour() instead ; ahklint-ignore: W002 + if (piHour = "") { + return this.asHour() + } else { + return this.setAsHour(piHour) + } + } ; notest-end + + asHour() { + return SubStr(this.timeStamp, 9, 2) + } + + setAsHour(newHour) { + newValidHour := CalendarHelper.validTime(16010101 + . SubStr("0" newHour, -1)) + this.timeStamp := SubStr(this.timeStamp, 1, 8) + . SubStr(newValidHour, 9, 2) + . SubStr(this.timeStamp, 11) + return this + } + + minutes(piMinutes="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asMinutes()/Calendar.setAsMinutes() instead ; ahklint-ignore: W002 + if (piMinutes = "") { + return this.asMinutes() + } + return this.setAsMinutes(piMinutes) + } ; notest-end + + asMinutes() { + return SubStr(this.timeStamp, 11, 2) + } + + setAsMinutes(newMinutes) { + validNewMinutes := CalendarHelper.validTime(1601010100 + . SubStr("0" newMinutes, -1)) + this.timeStamp := SubStr(this.timeStamp, 1, 10) + . SubStr(validNewMinutes, 11, 2) + . SubStr(this.timeStamp, 13) + return this + } + + seconds(piSeconds="") { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated: Use Calendar.asSeconds()/Calendar.setAsSeconds() instead ; ahklint-ignore: W002 + if (piSeconds = "") { + return this.asSeconds() + } + return this.setAsSeconds(piSeconds) + } ; notest-end + + asSeconds() { + return SubStr(this.timeStamp, 13, 2) + } + + setAsSeconds(newSeconds) { + newValidSeconds := CalendarHelper.validTime(160101010000 + . SubStr("0" newSeconds, -1)) + this.timeStamp := SubStr(this.timeStamp, 1, 12) + . SubStr(newValidSeconds, 13, 2) + return this + } + + easterSunday() { + X := this.asYear() + A := Mod(X, 19) + K := X // 100 + M := 15 + (3 * K + 3) // 4 - (8 * K + 13) // 25 + D := Mod((19 * A + M), 30) + S := 2 - (3 * K + 3) // 4 + R := D // 29 + (D // 28 - D // 29) * (A // 11) + OG := 21 + D - R + SZ := 7 - Mod((X + X // 4 + S), 7) + OE := 7 - Mod((OG - SZ), 7) + OS := OG + OE + return new Calendar(this.asYear() ((OS <= 31) + ? "03" SubStr("0" OS, -1) + : "04" SubStr("0" (OS - 31), -1))) + } + + daysInMonth() { + return CalendarHelper.daysInMonth(this.timeStamp, this.asMonth()) + } + + dayOfWeek() { + FormatTime weekDay, % this.timeStamp, WDay + return weekDay + } + + week() { + FormatTime weekOfYear, % this.timeStamp, YWeek + return SubStr(weekOfYear, -1) + } + + compare(anotherCalendar, unit="", precision="") { + if (unit != "" && !Calendar.Units.isValid(unit)) { + throw Exception("Invalid calendar unit", -1, "<" unit ">") + } + if (precision != "") { + if (!RegExMatch(precision, "^[+-]?(\d+|\d*?\.\d+)$")) { + throw Exception("Invalid datatype - number expected" + , -1, "<" precision ">") + } + compareInUnit := Calendar.Units.SECONDS + } else { + compareInUnit := unit + } + timeStampToCompare := anotherCalendar.get() + thisTimeStamp := this.get() + difference := timeStampToCompare + difference -= thisTimeStamp, %compareInUnit% + if (precision != "" && !(unit == Calendar.Units.SECONDS)) { + currentFloatFormat := A_FormatFloat + SetFormat Float, %precision% + if (unit == Calendar.Units.MINUTES) { + difference /= 60.0 + } else if (unit == Calendar.Units.HOURS) { + difference /= 3600.0 + } else if (unit == Calendar.Units.DAYS) { + difference /= 86400.0 + } + SetFormat Float, %currentFloatFormat% + } + return difference + } + + duration(seconds) { + days := seconds // 86400 + seconds -= days * 86400 + hours := seconds // 3600 + seconds -= hours * 3600 + minutes := seconds // 60 + seconds := seconds - minutes * 60 + return [days, hours, minutes, seconds] + } + + adjust(adjustYears=0, adjustMonths=0, adjustDays=0, adjustHours=0 + , adjustMinutes=0, adjustSeconds=0) { + CalendarHelper.testForValidInteger(adjustYears, "Invalid years") + CalendarHelper.testForValidInteger(adjustMonths, "Invalid months") + CalendarHelper.testForValidInteger(adjustDays, "Invalid days") + CalendarHelper.testForValidInteger(adjustHours, "Invalid hours") + CalendarHelper.testForValidInteger(adjustMinutes, "Invalid minutes") + CalendarHelper.testForValidInteger(adjustSeconds, "Invalid seconds") + yearsToAdjust := adjustYears + adjustMonths // 12 + this.setAsYear(this.asYear() + yearsToAdjust) + monthsToAdjust := Mod(adjustMonths, 12) + CalendarHelper.adjustMonthAndHandleUnderFlowOrOverFlow(this + , monthsToAdjust) + ts := this.timeStamp + ts += adjustDays, Days + ts += adjustHours, Hours + ts += adjustMinutes, Minutes + ts += adjustSeconds, Seconds + this.timeStamp := ts + return this + } + + findWeekDay(dayOfWeek=1, occurenceAndDirection=0.1) { + CalendarHelper.testForValidWeekDay(dayOfWeek) + CalendarHelper.testForValidNumber(occurenceAndDirection) + if (CalendarHelper + .findNextOrFirstOccurenceOfWeekDay(occurenceAndDirection)) { + occurenceOfWeekDay + := CalendarHelper.findNextOccurenceOfWeekDay(this.clone() + , dayOfWeek, occurenceAndDirection) + } else { + occurenceOfWeekDay + := CalendarHelper.findRecentOccurenceOfWeekDay(this.clone() + , dayOfWeek, occurenceAndDirection) + } + return occurenceOfWeekDay + } + + formatTime(pattern="") { + dateTime := this.timeStamp + FormatTime dateTime, %dateTime%, %pattern% + return dateTime + } +} diff --git a/more libs/Various1/lib/console.ahk b/more libs/Various1/lib/console.ahk new file mode 100644 index 00000000..65f82d2d --- /dev/null +++ b/more libs/Various1/lib/console.ahk @@ -0,0 +1,460 @@ +#Include + +#Include + +class Console { + + static STD_INPUT_HANDLE = -10 + static STD_OUTPUT_HANDLE = -11 + static STD_ERROR_HANDLE = -12 + + static ANSI_SEQ_REGEX := "\x1b\[([0-9a-fA-FxX;]+)*([HfABCDEFGsuJKmn])" + + static hStdOut := Console.__initHandle(Console.STD_OUTPUT_HANDLE) + static hStdErr := Console.__initHandle(Console.STD_ERROR_HANDLE) + static hStdIn := Console.__initHandle(Console.STD_INPUT_HANDLE) + + static BufferInfo := Console.__initBufferInfo() + + static SavedPos := [0, 0] + + static Encoding := "cp850" + + class Color { + wAttributes := 0 + strText := "" + + static COLOR_REVERSE := 0x10000 + static COLOR_BOLD := 0x20000 + static COLOR_HIGHLIGHT := 0x40000 + static COLOR_NORMAL := 0x80000 + + class Foreground { + static BLACK := 0 + static BLUE := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_BLUE + static GREEN := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_GREEN + static TURQUOISE := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_GREEN + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_BLUE + static RED := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_RED + static PURPLE := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_BLUE + static OCHER := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_GREEN + static LIGHTGREY := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_GREEN + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_BLUE + static DARKGREY := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY + static LIGHTBLUE := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_BLUE + static LIME := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_GREEN + static AUQA := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_GREEN + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_BLUE + static LIGHTRED := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_RED + static MAGENTA := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_BLUE + static YELLOW := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_GREEN + static WHITE := CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_GREEN + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_BLUE + } + + class Background { + static BLACK := 0 + static BLUE := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_BLUE + static GREEN := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_GREEN + static TURQUOISE := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_GREEN + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_BLUE + static RED := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_RED + static PURPLE := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_BLUE + static OCHER := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_GREEN + static LIGHTGREY := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_GREEN + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_BLUE + static DARKGREY := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY + static LIGHTBLUE := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_BLUE + static LIME := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_GREEN + static AUQA := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_GREEN + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_BLUE + static LIGHTRED := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_RED + static MAGENTA := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_BLUE + static YELLOW := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_GREEN + static WHITE := CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_RED + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_GREEN + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_BLUE + } + + __new(pwAttributes, pstrText="") { + this.wAttributes := pwAttributes + this.strText := pstrText + return this + } + + reverse(pwAttributes="") { + if (pwAttributes = "") { + pwAttributes := Console.getBufferInfo().wAttributes + } + return ((pwAttributes & 0x0f)<<4) | ((pwAttributes & 0xf0)>>4) + } + + bold(pwAttributes="") { + if (pwAttributes = "") { + pwAttributes := Console.getBufferInfo().wAttributes + } + return pwAttributes & 0x0f + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY + } + + highlight() { + bi := Console.getBufferInfo() + return bi.wAttributes + | CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY + } + + normal() { + bi := Console.getBufferInfo() + return (bi.foregroundColor() + & ~CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY) + | (bi.backgroundColor() + & ~CONSOLE_SCREEN_BUFFER_INFO.BACKGROUND_INTENSITY) + } + } + + __initHandle(piHandle) { + return DllCall("GetStdHandle", "UInt", piHandle, "Ptr") + } + + __initBufferInfo() { + VarSetCapacity(_csbi, sizeof(CONSOLE_SCREEN_BUFFER_INFO), 0) + _ret := DllCall("GetConsoleScreenBufferInfo", "Ptr", Console.hStdOut + , "Ptr", &_csbi) + if (_ret != 0) { + return new CONSOLE_SCREEN_BUFFER_INFO(_csbi) + } + return "" + } + + __new() { + throw Exception("Instantiation of class '" this.__Class + . "' ist not allowed", -1) + } + + write(pBuffer*) { + n := 0 + for i, _item in pBuffer { + if (_item.maxIndex() != "") { + return n += Console.writeList(_item) + } + if (_item.__Class = "Console.Color") { + if (_item.strText != "") { + _currentAttributes := Console.bufferInfo.wAttributes + Console.setTextAttribute(_item.wAttributes) + if (Console.bufferInfo) { + FileAppend % _item.strText, CONOUT$, % Console.encoding + } else { + FileAppend % _item.strText, * + } + Console.setTextAttribute(_currentAttributes) + } else { + Console.setTextAttribute(_item.wAttributes) + if (Console.bufferInfo) { + FileAppend % _item.strText, CONOUT$, % Console.encoding + } else { + FileAppend % _item.strText, * + } + } + n += StrLen(_item.strText) + } else { + if (Console.bufferInfo) { + FileAppend %_item%, CONOUT$, % Console.encoding + } else { + FileAppend %_item%, * + } + n += StrLen(_item) + } + } + return n + } + + writeAndTranslateAnsiSequences(string) { + p := 1 + while (RegExMatch(string, "(.*?)" Console.ANSI_SEQ_REGEX, $, p)) { + p += StrLen($) + OutputDebug ::: %A_ThisFunc% ::: p=%p% -- $=%$% / $1=%$1% / $2=%$2% / $3=%$3% ; ahklint-ignore: W002 + n += Console.write($1) + if ($3 == "H" || $3 == "f" ) { + values := StrSplit($2, ";") + if (values.maxIndex() > 2) { + continue + } + Console.setCursorPos(values[2] = "" || values[2] = 0 + ? 0 : values[2] - 1 + , values[1] = "" || values[1] = 0 + ? 0 : values[1] - 1) + } else if ($3 == "A") { + Console.setCursorPos(0, $2 = "" ? -1 : $2 = 0 ? 0 : $2*(-1) + , true) + } else if ($3 == "B") { + Console.setCursorPos(0, $2 = "" ? 1 : $2 = 0 ? 0 : $2 + , true) + } else if ($3 == "C") { + Console.setCursorPos($2 = "" ? 1 : $2 = 0 ? 0 : $2, 0 + , true) + } else if ($3 == "D") { + Console.setCursorPos($2 = "" ? -1 : $2 = 0 ? 0 : $2*(-1), 0 + , true) + } else if ($3 == "E") { + Console.setCursorPos("", $2 = "" ? 1 : $2 = 0 ? 0 : $2 + , true) + Console.setCursorPos(0) + } else if ($3 == "F") { + Console.setCursorPos("", $2 = "" ? -1 : $2 = 0 ? 0 : $2*(-1) + , true) + Console.setCursorPos(0) + } else if ($3 == "G") { + Console.setCursorPos($2 - 1) + } else if ($3 == "s") { + Console.savePosition() + } else if ($3 == "u") { + Console.restorePosition() + } else if ($3 == "J") { + Console.clearSCR() + } else if ($3 == "K") { + Console.clearEOL() + } else if ($3 = "m") { + values := StrSplit($2, ";") + consoleColor + := new Console.Color(Console.bufferInfo.wAttributes) + loop % values.maxIndex() { + value := values[A_Index] + OutputDebug ::: value=%value% + if (value = 0) { + consoleColor.wAttributes + := Console.bufferInfo.wAttributes + } else if (value = 1) { + consoleColor.wAttributes := consoleColor.wAttributes + | CONSOLE_SCREEN_BUFFER_INFO.FOREGROUND_INTENSITY ; ahklint-ignore: W002 + } else if (value = 7) { + hb := consoleColor.wAttributes & 0xf0 + lb := consoleColor.wAttributes & 0xf + consoleColor.wAttributes := lb<<4 | hb>>4 + } else if (value >= 30 && value <= 37) { + consoleColor.wAttributes + := consoleColor.wAttributes & 0xf8 + | Ansi.mapColor(value) + } else if (value >= 40 && value <= 47) { + consoleColor.wAttributes + := consoleColor.wAttributes & 0xf + | Ansi.mapColor(value) + } + } + OutputDebug ::: consoleColor=%consoleColor% + Console.write(consoleColor, "") + } else if ($3 = "n" && $2 = "6") { + bi := Console.getBufferInfo() + SendRaw % "^[[" bi.dwCursorPosition.Y+1 + . ";" bi.dwCursorPosition.X+1 "R" + } + } + return n + Console.write(SubStr(string, p)) + } + + writeList(pList) { + n := 0 + for i, _item in pList { + n += Console.write(_item) + } + return n + } + + resetColor() { + return Console.setTextAttribute(Console.bufferInfo.wAttributes) + } + + + setTextAttribute(psAttributes=0, phHandle="") { + if (phHandle = "") { + phHandle := Console.hStdOut + } + + _rbhn := psAttributes & 0xf0000 ; Reverse, Bold, Highlight, Normal + if (_rbhn) { + psAttributes := psAttributes & ~_rbhn + if (_rbhn & Console.Color.COLOR_BOLD) { + psAttributes := Console.Color.Bold(psAttributes) + } + if (_rbhn & Console.Color.COLOR_HIGHLIGHT) { + psAttributes := Console.Color.Highlight(psAttributes) + } + if (_rbhn & Console.Color.COLOR_REVERSE) { + psAttributes := Console.Color.Reverse(psAttributes) + } + if (_rbhn & Console.Color.COLOR_NORMAL) { + psAttributes := Console.Color.Normal(psAttributes) + } + } + if (phHandle) { + return DllCall("SetConsoleTextAttribute", "Ptr", phHandle + , "UShort", psAttributes, "Int") + } + } + + read(ByRef pBuffer, pNumberOfCharsToRead=1, pInputControlObject="") { + if (!Console.hStdIn) { + return throw Exception("No Standard Input availalbe", 1) + } + + if (IsObject(pInputControlObject)) { + pInputControlObject.get(pInputControl) + } + + VarSetCapacity(pBuffer, pNumberOfCharsToRead * (A_IsUnicode ? 2 : 1), 0) + VarSetCapacity(lpNumberOfCharsRead, 4, 0) + DllCall("FlushConsoleInputBuffer", "Ptr", Console.hStdIn, "Int") + DllCall("ReadConsole" (A_IsUnicode ? "W" : "A"), "Ptr", Console.hStdIn + , "Ptr", &pBuffer + , "UInt", pNumberOfCharsToRead + , "UInt", &lpNumberOfCharsRead + , "UInt", &pInputControl + , "Int") + return NumGet(lpNumberOfCharsRead, 0, "UInt") + } + + ;{{{ ReadInput + /* + BOOL WINAPI ReadConsoleInput( + _In_ HANDLE hConsoleInput, + _Out_ PINPUT_RECORD lpBuffer, + _In_ DWORD nLength, + _Out_ LPDWORD lpNumberOfEventsRead + ); + */ + readInput(ByRef pBuffer, pnLength=1) { + if (!Console.hStdIn) { + return throw Exception("No Standard Input availalbe", 1) + } + + VarSetCapacity(pBuffer, 2 * pnLength, 0) + VarSetCapacity(_noer, 4, 0) + DllCall("ReadConsoleInput" (A_IsUnicode ? "W" : "A") + , "Ptr", Console.hStdIn + , "Ptr", &pBuffer + , "UInt", pnLength + , "Ptr", &_noer + , "Int") + + return NumGet(_noer, 0, "UInt") + } + + setCursorPos(piX="", piY="", pbRelative=false) { + bi := Console.getBufferInfo() + if (pbRelative) { + piX := piX != "" ? bi.dwCursorPosition.X + piX : "" + piY := piY != "" ? bi.dwCursorPosition.Y + piY : "" + } + piX := piX = "" ? bi.dwCursorPosition.X : piX + piY := piY = "" ? bi.dwCursorPosition.Y : piY + + VarSetCapacity(_cp, 4, 0) + NumPut(piX, _cp, 0, "UShort") + NumPut(piY, _cp, 2, "UShort") + return DllCall("SetConsoleCursorPosition", "Ptr", Console.hStdOut + , "UInt", NumGet(_cp, 0, "UInt"), "Int") + } + + savePosition() { + bi := Console.getBufferInfo() + Console.savedPos := [bi.dwCursorPosition.X, bi.dwCursorPosition.Y] + } + + restorePosition() { + Console.setCursorPos(Console.savedPos[1], Console.savedPos[2]) + } + + clearEOL() { + bi := Console.getBufferInfo() + Console.fillWithCharacter(" ", bi.dwSize.X - bi.dwCursorPosition.X + , bi.dwCursorPosition.X, bi.dwCursorPosition.Y) + Console.fillWithAttribute(bi.wAttributes + , bi.dwSize.X - bi.dwCursorPosition.X, bi.dwCursorPosition.X + , bi.dwCursorPosition.Y) + Console.setCursorPos(0, bi.dwCursorPosition.Y) + } + + clearSCR() { + bi := Console.getBufferInfo() + Console.fillWithCharacter(" ", bi.dwSize.X * bi.dwSize.Y, 0, 0) + Console.fillWithAttribute(bi.wAttributes, bi.dwSize.X * bi.dwSize.Y + , 0, 0) + Console.setCursorPos(0, 0) + } + + getBufferInfo() { + VarSetCapacity(_csbi, sizeof(CONSOLE_SCREEN_BUFFER_INFO), 0) + DllCall("GetConsoleScreenBufferInfo", "Ptr", Console.hStdOut + , "Ptr", &_csbi, "Int") + return new CONSOLE_SCREEN_BUFFER_INFO(_csbi) + } + + fillWithCharacter(pcChar=" ", pnLength=1, piX=0, piY=0) { + VarSetCapacity(dwWriteCoord, 4, 0) + NumPut(piX, dwWriteCoord, 0, "UShort") + NumPut(piY, dwWriteCoord, 2, "UShort") + _dwWriteCoord := NumGet(dwWriteCoord, 0, "UInt") + VarSetCapacity(_nocw, 4, 0) + if (A_IsUnicode) { + VarSetCapacity(_c, 2, 0), NumPut(Chr(SubStr(pcChar, 1, 1)) + , _c, 0, "Short") + } else { + VarSetCapacity(_c, 1, 0), NumPut(Chr(SubStr(pcChar, 1, 1)) + , _c, 0, "Char") + } + DllCall("FillConsoleOutputCharacter" (A_IsUnicode ? "W" : "A") + , "Ptr", Console.hStdOut + , (A_IsUnicode ? "Short" : "Char") + , NumGet(pcChar, 0, (A_IsUnicode ? "Short" : "Char")) + , "UInt", pnLength + , "UInt", _dwWriteCoord + , "UInt", &_nocw + , "Int") + return NumGet(_nocw, 0, "UInt") + } + + fillWithAttribute(pwAttributes=7, pnLength=1, piX=0, piY=0) { + VarSetCapacity(dwWriteCoord, 4, 0) + NumPut(piX, dwWriteCoord, 0, "UShort") + NumPut(piY, dwWriteCoord, 2, "UShort") + _dwWriteCoord := NumGet(dwWriteCoord, 0, "UInt") + VarSetCapacity(_noaw, 4, 0) + + DllCall("FillConsoleOutputAttribute", "Ptr", Console.hStdOut + , "UShort", pwAttributes + , "UInt", pnLength + , "UInt", _dwWriteCoord + , "UInt", &_noaw + , "Int") + + return NumGet(_noaw, 0, "UInt") + } + + refreshBufferInfo() { + Console.bufferInfo := Console.__InitBufferInfo() + } +} diff --git a/more libs/Various1/lib/cron.ahk b/more libs/Various1/lib/cron.ahk new file mode 100644 index 00000000..ae3c7111 --- /dev/null +++ b/more libs/Various1/lib/cron.ahk @@ -0,0 +1,173 @@ +; TODO: Refactor +class Cron { + + requires() { + return [String, Arrays, Math] + } + + static cron_tab := "`n" + static IsStarted := false + static cron_job_num := 0 + + __new() { + throw Exception("Instatiation of class " this.__Class + . " is not allowed", -1) + } + + start() { + delay := (((60 - A_Sec) * 1000) - A_MSec) * -1 + SetTimer CronTimer, %delay% + Cron.isStarted := true + return + + CronTimer: + _timer := new Logger("class." A_ThisFunc) + delay := (((60 - A_Sec) * 1000) - A_MSec) * -1 + Cron.scheduler(A_Min) + SetTimer CronTimer, %delay% + _timer.info("delay", delay) + return _timer.exit() + } + + stop() { + Cron.isStarted := false + SetTimer CronTimer, Off + return ErrorLevel + } + + reset() { + Cron.cron_tab := "`n" + Cron.cron_job_num := 0 + } + + scheduler(current_min) { + static last_runs_min := -1 + + if (!Cron.isStarted) { + return -1 + } + if (last_runs_min = current_min) { + while (last_runs_min = current_min) { + sleep 500 + current_min := A_Min + } + } + + expr := "\n(?P\d+?):\s*" + . "((\d+,)*" Cron.value2Expr(current_min) "(,\d+)*|\*)\s+" + . "((\d+,)*" Cron.value2Expr(A_Hour) "(,\d+)*|\*)\s+" + . "((\d+,)*" Cron.value2Expr(A_DD) "(,\d+)*|\*)\s+" + . "((\d+,)*" Cron.value2Expr(A_MM) "(,\d+)*|\*)\s+" + . "((\d+,)*" Cron.value2Expr(A_WDay) "(,\d+)*|\*)\s+" + . "(?P.+?)\s*\n" + + num_jobs := 0 + start := 1 + loop { + job_found_at := RegExMatch(Cron.cron_tab, expr, job_, start) + if (job_found_at) { + num_jobs++ + %job_name%(job_number) + start := job_found_at + StrLen(job_name) - 1 + } + } until (job_found_at = 0) + + last_runs_min := current_min + + return num_job + } + + addScheduler(cron_pattern, function_name) { + this.cron_tab .= ++Cron.cron_job_num ":" + . Cron.parseEntry(cron_pattern, function_name) "`n" + } + + parseEntry(cron_pattern, function_name) { + entry := cron_pattern.trimAll() " " function_name.trimAll() + sub_expr := "(((\d+,)*\d+|(\d+-\d+,)*\d+-\d+|\*)(\/\d+)*)\s+" + expr := "S)^" sub_expr.repeat(5) "(.+?)$" + if (RegExMatch(entry, expr, cron_entry)) { + minute := Cron.range2List(cron_entry1, 0, 59, A_Min) + hour := Cron.range2List(cron_entry6, 0, 23, A_Hour) + day := Cron.range2List(cron_entry11, 1, 31, A_MDay) + month := Cron.range2List(cron_entry16, 1, 12, A_Mon) + wday := Cron.range2List(cron_entry21, 1, 7, A_WDay) + function := cron_entry26 + effective_entry := minute " " + . hour " " + . day " " + . month " " + . wday " " + . function + } else { + effective_entry := "" + throw Exception("Entry '" entry "' is rejected: " ErrorLevel) + } + return effective_entry + } + + ; TODO: Refactor + range2List(range, min, max, actual=0) { + if (range = "*") { + return range + } + list_value := [] + RegExMatch(range, "(.+?)(\/(\d+))*$", range) + if (range3 != "" && range1 != "*") { + range := range1 "-" max + } else if (range3 != "" && range1 = "*") { + range := Mod(actual, range3) "-" max + } else if (range3 != "" && range1 != "") { + range := range1 "-" max + } + ranges := StrSplit(range, ",") + loop % ranges.maxIndex() { + if (RegExMatch(ranges[A_Index], "(?P\d+)-(?P\d+)" + , range_)) { + ; range_from := Math.LimitTo(range_from, min, max) + if (range_from < min || range_from > max) { + throw Exception("Range out of bounds: " range_from + . " (" min "-" max ")") + } + ; range_to := Math.LimitTo(range_to, min, max) + if (range_to < min || range_to > max) { + throw Exception("Range out of bounds: " range_to " + . (" min "-" max ")") + } + loop { + list_value.push(range_from++) + } until (range_from > range_to) + } else if (RegExMatch(ranges[A_Index], "\d+", range_val)) { + if (range_val < min || range_val > max) { + throw Exception("Range out of bounds: " range_val + . " (" min "-" max ")") + } + list_value.push(range_val) + } + } + uni_list_vals := Arrays.distinct(list_value) + if (range3 != "") { + i := 1 + n := 0 + while (i <= uni_list_vals.maxIndex()) { + if (mod(n, range3) != 0) { + uni_list_vals.remove(i) + } else { + i++ + } + n++ + } + } + list_values := "" + for key, value in uni_list_vals { + list_values .= (list_values = "" ? "" : ",") value + } + return list_values + } + + value2Expr(value) { + return "0*" RegExReplace(value, "^0*", "") + } + +} + diff --git a/more libs/Various1/lib/crypto.ahk b/more libs/Various1/lib/crypto.ahk new file mode 100644 index 00000000..2a1cf309 --- /dev/null +++ b/more libs/Various1/lib/crypto.ahk @@ -0,0 +1,191 @@ +; TODO: Refactor +class Crypto { + + requires() { + return [String, Base64] + } + + static ALGORITHM_RC4 := 1 + static ALGORITHM_XOR := 2 + + class RC4 { + + __new() { + throw Exception("Instatiation of class '" this.__Class + . "' ist not allowed", -1) + } + + ; TODO: Refactor + encodeDecode(ByRef Message, ByRef Key, iMsgLen=0, iKeyLen=0 + , iSkipStates=256) { + if (iMsgLen = 0) { + iMsgLen := StrLen(Message) * (A_IsUnicode ? 2 : 1) + } + if (iKeyLen = 0) { + iKeyLen := StrLen(Key) * (A_IsUnicode ? 2 : 1) + } + + __KeyToArray__: + aKey := [] + loop % iKeyLen { + i := A_Index - 1 + aKey[i] := NumGet(Key, i, "UChar") + } + + __Initialize__: + aS_Box := [] + loop 256 { + i := A_Index - 1 + aS_Box[i] := i + } + + __ComputeRandoms__: + j := 0 + ; skip first 256 states to avoid Fluhrer/Martin/Shamir RC4 attack + ; http://www.fact-index.com/r/rc/rc4_cipher.html + loop % iSkipStates + iKeyLen { + i := A_Index - 1 + m := Mod(i, iKeyLen) + j := Mod((j + aS_Box[i] + aKey[m]), 256) + _x := aS_Box[i] + aS_Box[i] := aS_Box[j] + aS_Box[j] := _x + } + + __EncryptDecrypt__: + i := 0 + j := 0 + loop % iMsgLen { + i := Mod(A_Index, 256) + j := Mod((j + aS_Box[i]), 256) + _x := aS_Box[i] + aS_Box[i] := aS_Box[j] + aS_Box[j] := _x + z := Mod((aS_Box[i] + aS_Box[j]), 256) + k := aS_Box[z] + i_1 := A_Index - 1 + char := k ^ NumGet(Message, i_1, "UChar") + NumPut(char, Message, i_1, "UChar") + } + return iMsgLen + } + } + + class XOR { + + __new() { + throw Exception("Instatiation of class '" this.__Class + . "' ist not allowed", -1) + } + + encodeDecode(ByRef Message, ByRef Key, iMsgLen=0, iKeyLen=0) { + if (iMsgLen = 0) { + iMsgLen := StrLen(Message) * (A_IsUnicode ? 2 : 1) + } + if (iKeyLen = 0) { + iKeyLen := StrLen(Key) * (A_IsUnicode ? 2 : 1) + } + i := 0 + Loop %iMsgLen% { + c_m := NumGet(Message, A_Index - 1, "UChar") + c_k := NumGet(Key, i, "UChar") + char := c_m ^ c_k + NumPut(char, Message, A_Index - 1, "UChar") + i := Mod(i + 1, iKeyLen) + } + return iMsgLen + } + } + + class MD5 { + + __new() { + throw Exception("Instatiation of class '" this.__Class + . "' ist not allowed", -1) + } + + encode(ByRef Message, iMsgLen=0) { + if (iMsgLen = 0) { + iMsgLen := VarSetCapacity(Message, -1) + if (A_IsUnicode) { + Message := Message.put("cp0") + iMsgLen /= 2 + } + } + VarSetCapacity(md5Context, 104, 0) + DllCall("advapi32\MD5Init", "Str", md5Context) + DllCall("advapi32\MD5Update", "Str", md5Context + , "Str", Message, "UInt", iMsgLen) + DllCall("advapi32\MD5Final", "Str", md5Context) + Hexstr_Digest := "" + loop 16 { + Hexstr_Digest .= RegExReplace((*(&md5Context + 87 + A_Index), 2) + .AsHex(), "i)^0x", "").padLeft(2, "0") + } + return Hexstr_Digest + } + } + + __new() { + throw Exception("Instatiation of class '" this.__Class + . "' ist not allowed", -1) + } + + encrypt(ByRef Message, ByRef Key, iAlgorithm, iMsgLen=0, iKeyLen=0) { + if (!Crypto.isValidAlgorithm(iAlgorithm)) { + throw Exception("Invalid Algorithm: " iAlgorithm) + } + if (iAlgorithm = Crypto.ALGORITHM_RC4) { + n := Crypto.RC4.encodeDecode(Message, Key, iMsgLen, iKeyLen) + return "{RC4}" Base64.encode(Message, n + , Base64.CRYPT_STRING_BASE64|Base64.CRYPT_STRING_NOCRLF) + } + if (iAlgorithm = Crypto.ALGORITHM_XOR) { + n := Crypto.XOR.encodeDecode(Message, Key, iMsgLen, iKeyLen) + return "{XOR}" Base64.encode(Message, n + , Base64.CRYPT_STRING_BASE64|Base64.CRYPT_STRING_NOCRLF) + } + } + + decrypt(ByRef Message, ByRef Key, iKeyLen=0, iAlgorithm="") { + if (iAlgorithm != "" && !Crypto.isValidAlgorithm(iAlgorithm)) { + throw Exception("Invalid Algorithm: " iAlgorithm) + } + n := "" + if (iAlgorithm = "") { + if (!RegExMatch(Message + , "iO)^\{(?PRC4|XOR)}" + . "(?P[a-zA-Z0-9+/]+={0,2})" + , Code)) { + throw Exception("Invalid Message: " + . Code.algorithm " " Code.data) + } + } else { + Code := {Data: Message} + if (iAlgorithm = Crypto.ALGORITHM_RC4) { + Code["Algorithm"] := "RC4" + } else { + Code["Algorithm"] := "XOR" + } + } + if (Code.algorithm = "RC4") { + len := Base64.decode(Code.data, 0 + , Base64.CRYPT_STRING_BASE64, Message) + n := Crypto.RC4.encodeDecode(Message, Key, len, iKeyLen) + } else if (Code.algorithm = "XOR") { + len := Base64.decode(Code.data, 0 + , Base64.CRYPT_STRING_BASE64, Message) + n := Crypto.XOR.encodeDecode(Message, Key, len, iKeyLen) + } + return n + } + + isValidAlgorithm(iAlgorithm) { + if (iAlgorithm >= Crypto.ALGORITHM_RC4 + && iAlgorithm <= Crypto.ALGORITHM_XOR) { + return true + } + return false + } +} +; vim: ts=4:sts=4:sw=4:tw=0:noet diff --git a/more libs/Various1/lib/datatable.ahk b/more libs/Various1/lib/datatable.ahk new file mode 100644 index 00000000..ef99bdeb --- /dev/null +++ b/more libs/Various1/lib/datatable.ahk @@ -0,0 +1,333 @@ +class DataTable { + + requires() { + return [Ansi, Arrays, String, Object] + } + + static COL_ALIGN_LEFT := 0 + static COL_ALIGN_RIGHT := 1 + static COL_ALIGN_CENTER := 2 + static COL_RESIZE_TRUNCATE := 4 + static COL_RESIZE_TRUNCATE_RIGHT := 4 + static COL_RESIZE_TRUNCATE_LEFT := 8 + static COL_RESIZE_TRUNCATE_MIDDLE := 16 + static COL_RESIZE_USE_LARGEST_DATA := 32 + static COL_RESIZE_SHOW_ELLIPSIS := 64 + + static SORT_SELECTIONSORT := 1 + static SORT_QUICKSORT := 2 + + static COMPARE_EQUALS := 0 + static COMPARE_GREATER_THAN := +1 + static COMPARE_LESS_THAN := -1 + + tableColumns := [] + aMaxColValue := [] + tableRows := [] + iSortAlgorithm := DataTable.SORT_QUICKSORT + + #Include %A_LineFile%\..\modules\datatable + #Include column.ahk + #Include selectionsort.ahk + #Include quicksort.ahk + + defineColumn(column) { + if (!Object.instanceOf(column, "DataTable.Column")) { + throw Exception("The passed object is not of type " + . "'DataTable.Column'") + } + this.tableColumns.push(column) + this.aMaxColValue.push(0) + return this.tableColumns.maxIndex() + } + + addData(rowsWithColumns*) { + for rowIndex, columns in rowsWithColumns { + if (!IsObject(columns)) { + throw Exception("Argument " rowIndex " - Array required: " + . columns) + } + if (columns.maxIndex() != this.tableColumns.maxIndex()) { + throw Exception("Argument " rowIndex " - " + . this.tableColumns.maxIndex() + . " element(s) required but got " columns.maxIndex()) + } + this.appendRowAndInsertColumnData(columns) + } + return this.tableRows.maxIndex() + } + + appendRowAndInsertColumnData(columns) { + rowIndex := 1 + (this.tableRows.maxIndex() != "" + ? this.tableRows.maxIndex() + : 0) + while (A_Index <= columns.maxIndex()) { + columnData := columns[A_Index] + this.tableRows[rowIndex, A_Index] := columnData + this.checkIfThisColumnHasTheWidestData(rowIndex, A_Index) + } + } + + checkIfThisColumnHasTheWidestData(rowIndex, columnIndex) { + columnData := this.getCellContent(rowIndex, columnIndex) + columnDataLength := StrLen(columnData) + if ((this.tableColumns[columnIndex].flags + & DataTable.COL_RESIZE_USE_LARGEST_DATA) + && columnDataLength > this.aMaxColValue[columnIndex]) { + this.aMaxColValue[columnIndex] := columnDataLength + } + } + + getTable() { + table := [] + loop % this.tableRows.maxIndex() { + row := [] + rowIndex := A_Index + loop % this.tableRows[rowIndex].maxIndex() { + cellData := this.getCellContent(rowIndex, A_Index) + row.push(this.renderColumn(cellData, A_Index)) + } + table.push(row) + } + return table + } + + getTableAsString(textBetweenColumns=" " + , textInFrontOfFirstColumn="", textAfterLastColumn="") { + tableAsString := "" + loop % this.tableRows.maxIndex() { + columns := [] + rowIndex := A_Index + maxLines := this.determineRowHeight(rowIndex) + columns := this.insertColumnWithCorrectHeight(columns + , textInFrontOfFirstColumn, maxLines) + loop % this.tableRows[rowIndex].maxIndex() { + if (A_Index > 1) { + columns := this.insertColumnWithCorrectHeight(columns + , textBetweenColumns, maxLines) + } + columnWidth := this.getColumnWidth(A_Index) + cellData := this.getCellContent(rowIndex, A_Index) + columnData := this.renderColumn(cellData, A_Index) + columns.push(this + .expandToNeccesaryRowHeight(columnData, maxLines + , " ".repeat(columnWidth))) + } + columns := this.insertColumnWithCorrectHeight(columns + , textAfterLastColumn, maxLines) + tableAsString .= this.concatLinesOfEveryColumn(columns, maxLines) + } + return tableAsString + } + + concatLinesOfEveryColumn(columns, maxLines) { + lines := "" + loop %maxLines% { + rowLine := A_Index + line := "" + loop % columns.maxIndex() { + line .= columns[A_Index, rowLine] + } + lines .= line "`n" + } + return lines + } + + determineRowHeight(rowIndex) { + maxLines := 0 + loop % this.tableRows[rowIndex].maxIndex() { + columnData := this.getCellContent(rowIndex, A_Index) + lines := StrSplit(this.renderColumn(columnData, A_Index), "`n") + if (lines.maxIndex() > maxLines) { + maxLines := lines.maxIndex() + } + } + return maxLines + } + + insertColumnWithCorrectHeight(columns, textToInsert, maxLines) { + if (textToInsert) { + columns.push(this.expandToNeccesaryRowHeight(textToInsert + , maxLines)) + } + return columns + } + + expandToNeccesaryRowHeight(what, height, whatElse="") { + if (whatElse == "") { + whatElse := what + } + return StrSplit(what.expand("`n" whatElse, height), "`n") + } + + getTableForConsoleOutput(textBetweenColumns=" " + , textInFrontOfFirstColumn="", textAfterLastColumn="") { + table := [] + loop % this.tableRows.maxIndex() { + row := [] + rowIndex := A_Index + row.push(textInFrontOfFirstColumn) + loop % this.tableRows[rowIndex].maxIndex() { + cellData := this.getCellContent(rowIndex, A_Index) + columnData := this.renderColumn(cellData, A_Index) + if (A_Index > 1) { + row.push(textBetweenColumns) + } + if (this.tableColumns[A_Index].attributes = "") { + row.push(columnData) + } else { + graphicAttributes := Arrays + .toString(this.tableColumns[A_Index].attributes + , ";") + row.push(Ansi.setGraphic(graphicAttributes) + . columnData + . Ansi.reset()) + } + } + row.push(textAfterLastColumn "`n") + table.push(row) + } + return table + } + + getColumn(columnData, columnIndex) { + OutputDebug %A_ThisFunc% is deprecated: Use DataTable.renderColumn() instead ; ahklint-ignore: W002 + return this.renderColumn(columnData, columnIndex) + } + + renderColumn(columnData, columnIndex) { + column := this.tableColumns[columnIndex] + if (Object.instanceOf(column, "DataTable.Column.Wrapped")) { + columnData := columnData.wrap(column.width,,,, true) + } else { + columnWidth := ((column.flags + & DataTable.COL_RESIZE_USE_LARGEST_DATA) + ? this.aMaxColValue[columnIndex] + : column.width) + if (columnWidth > 0 && StrLen(columnData) != columnWidth) { + columnData := this.reformatColumnData(columnData, columnWidth + , column.flags) + } + } + return columnData + } + + reformatColumnData(columnData, columnWidth, flags) { + if (StrLen(columnData) > columnWidth) { + columnData := this.handleColumnDataOverflow(columnData, columnWidth + , flags) + } else if (StrLen(columnData) < columnWidth) { + columnData := this.handleColumnDataUnderflow(columnData, columnWidth + , flags) + } + return columnData + } + + handleColumnDataOverflow(columnData, columnWidth, flags) { + ellipsis := "" + if (flags & DataTable.COL_RESIZE_SHOW_ELLIPSIS) { + columnWidth -= 3 + ellipsis := "..." + } + if (flags & DataTable.COL_RESIZE_TRUNCATE_LEFT) { + columnData := ellipsis columnData.subStr(1 - columnWidth) + } else if (flags & DataTable.COL_RESIZE_TRUNCATE_MIDDLE) { + middleOfColumnAt := Ceil(columnWidth / 2) + halfSizeOfTheColumn := columnWidth - middleOfColumnAt + columnData := columnData.subStr(1, middleOfColumnAt) + . ellipsis + . columnData.subStr(1 - halfSizeOfTheColumn) + } else { + columnData := columnData.subStr(1, columnWidth) + . ellipsis + } + return columnData + } + + handleColumnDataUnderflow(columnData, columnWidth, flags) { + if (flags & DataTable.COL_ALIGN_RIGHT) { + columnData := columnData.padLeft(columnWidth) + } else if (flags & DataTable.COL_ALIGN_CENTER) { + columnData := columnData.padCenter(columnWidth) + } else { + columnData := columnData.padRight(columnWidth) + } + return columnData + } + + getCellContent(rowIndex, columnIndex) { + return this.tableRows[rowIndex, columnIndex] + } + + getColumnWidth(colIndex) { + return (this.aMaxColValue[colIndex] > 0 + ? this.aMaxColValue[colIndex] + : this.tableColumns[colIndex].width) + } + + swap(listToSort, anIndex, anotherIndex) { + saveElement := listToSort[anIndex] + listToSort[anIndex] := listToSort[anotherIndex] + listToSort[anotherIndex] := saveElement + } + + compare(listWithColumnNumbersToSort, aRow, anotherRow) { + resultOfComparison := DataTable.COMPARE_EQUALS + loop % listWithColumnNumbersToSort.maxIndex() { + columnNumberToCompare := listWithColumnNumbersToSort[A_Index] + resultOfComparison := this.compareTwoColumns(aRow, anotherRow + , columnNumberToCompare) + if (resultOfComparison != 0) { + break + } + } + return resultOfComparison + } + + ascendingSortRequested(columnNumberToSort) { + return (columnNumberToSort > 0) + } + + compareTwoColumns(aRow, anotherRow, columnNumberToCompare) { + columnNumber := Abs(columnNumberToCompare) + resultOfComparison := this.compareValues(aRow[columnNumber] + , anotherRow[columnNumber]) + return (this.ascendingSortRequested(columnNumberToCompare)) + ? resultOfComparison + : resultOfComparison * -1 + } + + compareValues(aValue, anotherValue) { + return (aValue < anotherValue ? DataTable.COMPARE_LESS_THAN + : aValue > anotherValue ? DataTable.COMPARE_GREATER_THAN + : DataTable.COMPARE_EQUALS) + } + + setSortAlgorithm(algorithm) { + if (algorithm = DataTable.SORT_SELECTIONSORT + || algorithm = DataTable.SORT_QUICKSORT) { + this.iSortAlgorithm := algorithm + } else { + throw Exception("Invalid sort algorithm: " algorithm) + } + } + + sort(sortOrderByColumnIndex*) { + sortOrder := [] + if (sortOrderByColumnIndex.maxIndex() == "") { + sortOrder.push(1) + } else { + while (A_Index <= sortOrderByColumnIndex.maxIndex()) { + sortOrder.push(sortOrderByColumnIndex[A_Index]) + } + } + if (this.iSortAlgorithm = DataTable.SORT_QUICKSORT) { + DataTable.Quicksort.sort(this.tableRows, sortOrder + , this.tableRows.minIndex(), this.tableRows.maxIndex()) + } else if (this.iSortAlgorithm = DataTable.SORT_SELECTIONSORT) { + DataTable.Selectionsort.sort(this.tableRows, sortOrder) + } else { + throw Exception("Invalid sort algorithm set: " this.iSortAlgorithm) + } + } +} diff --git a/more libs/Various1/lib/dimension.ahk b/more libs/Various1/lib/dimension.ahk new file mode 100644 index 00000000..b045c3bd --- /dev/null +++ b/more libs/Various1/lib/dimension.ahk @@ -0,0 +1,95 @@ +class Dimension { + + static units := "" + static type := 0 + + proper(instance, ByRef number, initialDimension="", factor=0) { + start := 1 + if (initialDimension != "") { + loop { + start := A_Index + } until (A_Index > instance.Units.MaxIndex() + || instance.units[A_Index] = initialDimension) + } + return Dimension.recalc(instance, number, factor, start) + } + + recalc(instance, ByRef number, factor, startAtDimension) { + n := startAtDimension + if (instance.Factor.MaxIndex() != "") { + n := Dimension.recalcFactorList(instance, number, factor, n) + } else if (instance.type = 1) { + n := Dimension.recalcExponential(instance, number, factor, n) + } else { + n := Dimension.recalcLinear(instance, number, factor, n) + } + return n + } + + recalcFactorList(instance, ByRef number, factor, n) { + while (number / instance.factor[n] >= 1 + && n < instance.Factor.maxIndex()) { + number := number / instance.factor[n] + n++ + } + return n + } + + recalcExponential(instance, ByRef number, factor, n) { + while (v / factor ** n >= 1) { + v := v / factor ** n + n++ + } + return n + } + + recalcLinear(instance, ByRef number, factor, n) { + while (number / factor >= 1 && n < instance.Units.maxIndex()) { + number := number / factor + n++ + } + return n + } + + class MetricLength { + + static units := ["mm", "cm", "dm", "m", "km"] + static factor := [1000, 60, 60, 24] + static type := 2 + } + + class Memory { + + static units := ["B", "KB", "MB", "GB", "TB"] + static factor := 1024 + + proper(pValue, initialDimension="", pfPrecision="0.1") { + currentFormat := A_FormatFloat + SetFormat Float, %pfPrecision% + n := Dimension.proper(this, pValue, initialDimension, 1024) + SetFormat Float, %currentFormat% + return pValue this.units[n] + } + } + + class Time { + + static units := ["MSec", "Sek", "Min", "Std", "Tg"] + static factor := [1000, 60, 60, 24] + + proper(pValue, pstStartDimension="", pfPrecision="0.1") { + n := Dimension.proper(this, pValue, pstStartDimension) + currentFormat := A_FormatFloat + SetFormat Float, %pfPrecision% + d := {Value: pValue+=0.0, Dimension: this.units[n]} + SetFormat Float, %currentFormat% + return d + } + + properString(pValue, pstStartDimension="", pstSeparate=" " + , pfPrecision="0.1") { + d := this.proper(pValue+0.0, pstStartDimension, pfPrecision) + return d.value pstSeparate d.dimension + } + } +} diff --git a/more libs/Various1/lib/flimsydata.ahk b/more libs/Various1/lib/flimsydata.ahk new file mode 100644 index 00000000..5529f7fe --- /dev/null +++ b/more libs/Various1/lib/flimsydata.ahk @@ -0,0 +1,71 @@ +class Flimsydata { + + requires() { + return [Random, Calendar] + } + + #Include %A_LineFile%\..\modules\flimsydata\ + #Include Simple.ahk + #Include Givenname.ahk + #Include Postalcode.ahk + #Include Lorem.ahk + #Include Pattern.ahk + + class Provider { + static data := "" + } + + class Formatter { + + randomizer := "" + + __new(seed=12345) { + this.randomizer := new Random(seed) + return this + } + } + + getRandomInt(randomizer, from, to) { + return from + Mod(randomizer.generateRandomInt32(), to + 1 - from) + } + + getRandomListElement(randomizer, list) { + randomIndex := Flimsydata.getRandomInt(randomizer + , list.minIndex() + , list.maxIndex()) + return list[randomIndex] + } + + getRandomPattern(randomizer, pattern) { + randomPattern := new Flimsydata.Pattern() + return randomPattern.getPatternForRandomizer(randomizer, pattern) + } + + getCountry(inputLocale) { + if (RegExMatch(inputLocale + , "iJ)^([a-z]{2}_(?P[a-z]{2})|(?P[a-z]{2}))$" + , locale)) { + return localeCountry.upper() + } + throw Exception("Invalid locale: " inputLocale) + } + + getLanguage(inputLocale) { + if (RegExMatch(inputLocale + , "iJ)^((?P[a-z]{2})_[a-z]{2}" + . "|(?P[a-z]{2}))$" + , locale)) { + return localeLanguage.lower() + } + throw Exception("Invalid locale: " inputLocale) + } +} + +#Include %A_LineFile%\..\modules\flimsydata\dataprovider +#Include PGivenname.ahk +#Include PPostalcode.ahk +#Include PLorem.ahk +#Include PMetasyntax.ahk +#Include PFoldername.ahk +#Include PFilename.ahk +#Include PFileext.ahk diff --git a/more libs/Various1/lib/ldap.ahk b/more libs/Various1/lib/ldap.ahk new file mode 100644 index 00000000..56b938a8 --- /dev/null +++ b/more libs/Various1/lib/ldap.ahk @@ -0,0 +1,498 @@ +#Include +; #Include +#Include c:\work\ahk\projects\Struct\modules\struct\LDAPMod.ahk + +class Ldap { + + requires() { + return [Ansi, String, System] + } + + static hWldap32 := 0 + static AW := Ldap.__AW() + + static SCOPE_BASE := 0 + static SCOPE_ONELEVEL := 1 + static SCOPE_SUBTREE := 2 + static MOD_ADD := 0 + static MOD_DELETE := 1 + static MOD_REPLACE := 2 + + static OPT_API_INFO := 0x00 + static OPT_API_FEATURE_INFO := 0x15 + static OPT_AREC_EXCLUSIVE := 0x98 + static OPT_AUTO_RECONNECT := 0x91 + static OPT_CACHE_ENABLE := 0x0F + static OPT_CACHE_FN_PTRS := 0x0D + static OPT_CACHE_STRATEGY := 0x0E + static OPT_CLIENT_CERTIFICATE := 0x80 + static OPT_DEREF := 0x02 + static OPT_DESC := 0x01 + static OPT_DNSDOMAIN_NAME := 0x3B + static OPT_ENCRYPT := 0x96 + static OPT_ERROR_NUMBER := 0x31 + static OPT_ERROR_STRING := 0x32 + static OPT_FAST_CONCURRENT_BIND := 0x41 + static OPT_GETDSNAME_FLAGS := 0x3D + static OPT_HOST_NAME := 0x30 + static OPT_HOST_REACHABLE := 0x3E + static OPT_IO_FN_PTRS := 0x0B + static OPT_PING_KEEP_ALIVE := 0x36 + static OPT_PING_LIMIT := 0x38 + static OPT_PING_WAIT_TIME := 0x37 + static OPT_PROMPT_CREDENTIALS := 0x3F + static OPT_PROTOCOL_VERSION := 0x11 + static OPT_VERSION := 0x11 + static OPT_REBIND_ARG := 0x07 + static OPT_REBIND_FN := 0x06 + static OPT_REF_DEREF_CONN_PER_MSG := 0x94 + static OPT_REFERAL_CALLBACK := 0x70 + static OPT_REFERAL_HOP_LIMIT := 0x10 + static OPT_REFERALS := 0x08 + static OPT_RESTART := 0x09 + static OPT_ROOTDSE_CACHE := 0x9A + static OPT_SASL_METHOD := 0x97 + static OPT_SECURITY_CONTEXT := 0x99 + static OPT_SEND_TIMEOUT := 0x42 + static OPT_SCH_FLAGS := 0x43 + static OPT_SOCKET_BIND_ADDRESSES := 0x44 + static OPT_SERVER_CERTIFICATE := 0x81 + static OPT_SERVER_ERROR := 0x33 + static OPT_SERVER_EXT_ERROR := 0x34 + static OPT_SIGN := 0x95 + static OPT_SIZELIMIT := 0x03 + static OPT_SSL := 0x0A + static OPT_SSL_INFO := 0x93 + static OPT_SSPI_FLAGS := 0x92 + static OPT_TCP_KEEPALIVE := 0x40 + static OPT_THREAD_FN_PTRS := 0x05 + static OPT_TIMELIMIT := 0x04 + + static OPT_ON := true + static OPT_OFF := false + + static DEREF_NEVER := 0x00 + static DEREF_SEARCHING := 0x01 + static DEREF_FINDING := 0x02 + static DEREF_ALWAYS := 0x03 + + static VERSION1 := 1 + static VERSION2 := 2 + static VERSION3 := 3 + + static CHASE_SUBORDINATE_REFERALS := 0x20 + static CHASE_EXTERNAL_REFERALS := 0x40 + + static AUTH_NEGOTIATE := 0x400 + + static NO_LIMIT := 0 + + static LDAP_API_INFO_VERSION := 1 + + /* + * Constants: Return Values + * + * Remarks: Use Ldap. to access an constant's value. + * + * LDAP_ADMIN_LIMIT_EXCEEDED := 0x0b - Administration limit on the server was exceeded. + * LDAP_AFFECTS_MULTIPLE_DSAS := 0x47 - Multiple directory service agents are affected. + * LDAP_ALIAS_DEREF_PROBLEM := 0x24 - Cannot dereference the alias. + * LDAP_ALIAS_PROBLEM := 0x21 - The alias is invalid. + * LDAP_ALREADY_EXISTS := 0x44 - The object already exists. + * LDAP_ATTRIBUTE_OR_VALUE_EXISTS := 0x14 - The attribute exists or the value has been assigned. + * LDAP_AUTH_METHOD_NOT_SUPPORTED := 0x07 - The authentication method is not supported. To determine the + * authentication methods supported by an Active Directory server, + * retrieve the SupportedSASLMechanisms property of rootDSE. For + * more information, see Serverless Binding and RootDSE. + * LDAP_AUTH_UNKNOWN := 0x56 - Unknown authentication error occurred. + * LDAP_BUSY := 0x33 - The server is busy. + * LDAP_CLIENT_LOOP := 0x60 - Client loop was detected. + * LDAP_COMPARE_FALSE := 0x05 - For ldap_compare_ext_s and ldap_compare_s, this message is + * returned if the function succeeds, and the attribute and known + * values do not match. + * LDAP_COMPARE_TRUE := 0x06 - For ldap_compare_ext_s and ldap_compare_s, this message is + * returned if the function succeeds, and the attribute and known + * values match. + * LDAP_CONFIDENTIALITY_REQUIRED := 0x0d - Confidentiality is required. + * LDAP_CONNECT_ERROR := 0x5b - Cannot establish the connection. + * LDAP_CONSTRAINT_VIOLATION := 0x13 - There was a constraint violation. + * LDAP_CONTROL_NOT_FOUND := 0x5d - The LDAP function (ldap_parse_page_control, + * ldap_parse_sort_control, or ldap_parse_vlv_control) did not find + * the specified control. + * LDAP_DECODING_ERROR := 0x54 - Decoding error occurred. + * LDAP_ENCODING_ERROR := 0x53 - Encoding error occurred. + * LDAP_FILTER_ERROR := 0x57 - The search filter is bad. + * LDAP_INAPPROPRIATE_AUTH := 0x30 - Authentication is inappropriate. + * LDAP_INAPPROPRIATE_MATCHING := 0x12 - There was an inappropriate matching. + * LDAP_INSUFFICIENT_RIGHTS := 0x32 - The user has insufficient access rights. + * LDAP_INVALID_CREDENTIALS := 0x31 - The supplied credential is invalid. + * LDAP_INVALID_DN_SYNTAX := 0x22 - The distinguished name has an invalid syntax. + * LDAP_INVALID_SYNTAX := 0x15 - The syntax is invalid. + * LDAP_IS_LEAF := 0x23 - The object is a leaf. + * LDAP_LOCAL_ERROR := 0x52 - Local error occurred. If this error occurs during a binding + * operation, for more information, see ldap_bind_s. + * LDAP_LOOP_DETECT := 0x36 - The chain of referrals has looped back to a referring server. + * LDAP_MORE_RESULTS_TO_RETURN := 0x5f - More results are to be returned. + * LDAP_NAMING_VIOLATION := 0x40 - There was a naming violation. + * LDAP_NO_MEMORY := 0x5a - The system is out of memory. + * LDAP_NO_OBJECT_CLASS_MODS := 0x45 - Cannot modify object class. + * LDAP_NO_RESULTS_RETURNED := 0x5e - Results are not returned. + * LDAP_NO_SUCH_ATTRIBUTE := 0x10 - Requested attribute does not exist. + * LDAP_NO_SUCH_OBJECT := 0x20 - Object does not exist. + * LDAP_NOT_ALLOWED_ON_NONLEAF := 0x42 - Operation is not allowed on a nonleaf object. + * LDAP_NOT_ALLOWED_ON_RDN := 0x43 - Operation is not allowed on RDN. + * LDAP_NOT_SUPPORTED := 0x5c - The feature is not supported. + * LDAP_OBJECT_CLASS_VIOLATION := 0x41 - There was an object class violation. + * LDAP_OPERATIONS_ERROR := 0x01 - Operations error occurred. + * LDAP_OTHER := 0x50 - Unknown error occurred. + * LDAP_PARAM_ERROR := 0x59 - A bad parameter was passed to a routine. + * LDAP_PARTIAL_RESULTS := 0x09 - Partial results and referrals received. Note: Same error code + * as LDAP_REFERRAL_V2. The server returns the same result code for + * these two similar instances, v2 referral and continuation + * references. For further information, see the protocol reference, + * Referrals in LDAPv2 and LDAPv3. + * LDAP_PROTOCOL_ERROR := 0x02 - Protocol error occurred. + * LDAP_REFERRAL := 0x0a - A referral was returned from the server. + * LDAP_REFERRAL_LIMIT_EXCEEDED := 0x61 - The referral limit has been exceeded. + * LDAP_REFERRAL_V2 := 0x09 - A referral was returned from the server. Note: Same error code + * as LDAP_PARTIAL_RESULTS. The server returns the same result code + * for these two similar instances, v2 referral and continuation + * references. For further information, see the protocol reference, + * Referrals in LDAPv2 and LDAPv3. + * LDAP_RESULTS_TOO_LARGE := 0x46 - Results returned are too large. + * LDAP_SERVER_DOWN := 0x51 - Cannot contact the LDAP server. + * LDAP_SIZELIMIT_EXCEEDED := 0x04 - Size limit was exceeded. + * LDAP_STRONG_AUTH_REQUIRED := 0x08 - Strong authentication is required. + * LDAP_SUCCESS := 0x00 - The call completed successfully. + * LDAP_TIMELIMIT_EXCEEDED := 0x03 - Time limit, set by the server side time limit parameter, was exceeded. + * LDAP_TIMEOUT := 0x55 - The search was aborted due to exceeding the limit of the client side timeout parameter. + * LDAP_UNAVAILABLE := 0x34 - The server is unavailable. + * LDAP_UNAVAILABLE_CRIT_EXTENSION := 0x0c - The control is critical and the server does not support the control. + * LDAP_UNDEFINED_TYPE := 0x11 - Type is not defined. + * LDAP_UNWILLING_TO_PERFORM := 0x35 - The server is not willing to handle directory requests. + * LDAP_USER_CANCELLED := 0x58 - The user has canceled the operation. + * LDAP_VIRTUAL_LIST_VIEW_ERROR := 0x4c - An error occurred when attempting to perform a requested Virtual + * List View operation. A detailed error code is returned in the + * ldctl_value field of the LDAP_CONTROL_VLVRESPONSE control. + */ + + static LDAP_ADMIN_LIMIT_EXCEEDED := 0x0b ; Administration limit on the server was exceeded. + static LDAP_AFFECTS_MULTIPLE_DSAS := 0x47 ; Multiple directory service agents are affected. + static LDAP_ALIAS_DEREF_PROBLEM := 0x24 ; Cannot dereference the alias. + static LDAP_ALIAS_PROBLEM := 0x21 ; The alias is invalid. + static LDAP_ALREADY_EXISTS := 0x44 ; The object already exists. + static LDAP_ATTRIBUTE_OR_VALUE_EXISTS := 0x14 ; The attribute exists or the value has been assigned. + static LDAP_AUTH_METHOD_NOT_SUPPORTED := 0x07 ; The authentication method is not supported. To determine the + ; authentication methods supported by an Active Directory server, + ; retrieve the SupportedSASLMechanisms property of rootDSE. For + ; more information, see Serverless Binding and RootDSE. + static LDAP_AUTH_UNKNOWN := 0x56 ; Unknown authentication error occurred. + static LDAP_BUSY := 0x33 ; The server is busy. + static LDAP_CLIENT_LOOP := 0x60 ; Client loop was detected. + static LDAP_COMPARE_FALSE := 0x05 ; For ldap_compare_ext_s and ldap_compare_s, this message is + ; returned if the function succeeds, and the attribute and known + ; values do not match. + static LDAP_COMPARE_TRUE := 0x06 ; For ldap_compare_ext_s and ldap_compare_s, this message is + ; returned if the function succeeds, and the attribute and known + ; values match. + static LDAP_CONFIDENTIALITY_REQUIRED := 0x0d ; Confidentiality is required. + static LDAP_CONNECT_ERROR := 0x5b ; Cannot establish the connection. + static LDAP_CONSTRAINT_VIOLATION := 0x13 ; There was a constraint violation. + static LDAP_CONTROL_NOT_FOUND := 0x5d ; The LDAP function (ldap_parse_page_control, + ; ldap_parse_sort_control, or ldap_parse_vlv_control) did not find + ; the specified control. + static LDAP_DECODING_ERROR := 0x54 ; Decoding error occurred. + static LDAP_ENCODING_ERROR := 0x53 ; Encoding error occurred. + static LDAP_FILTER_ERROR := 0x57 ; The search filter is bad. + static LDAP_INAPPROPRIATE_AUTH := 0x30 ; Authentication is inappropriate. + static LDAP_INAPPROPRIATE_MATCHING := 0x12 ; There was an inappropriate matching. + static LDAP_INSUFFICIENT_RIGHTS := 0x32 ; The user has insufficient access rights. + static LDAP_INVALID_CREDENTIALS := 0x31 ; The supplied credential is invalid. + static LDAP_INVALID_DN_SYNTAX := 0x22 ; The distinguished name has an invalid syntax. + static LDAP_INVALID_SYNTAX := 0x15 ; The syntax is invalid. + static LDAP_IS_LEAF := 0x23 ; The object is a leaf. + static LDAP_LOCAL_ERROR := 0x52 ; Local error occurred. If this error occurs during a binding + ; operation, for more information, see ldap_bind_s. + static LDAP_LOOP_DETECT := 0x36 ; The chain of referrals has looped back to a referring server. + static LDAP_MORE_RESULTS_TO_RETURN := 0x5f ; More results are to be returned. + static LDAP_NAMING_VIOLATION := 0x40 ; There was a naming violation. + static LDAP_NO_MEMORY := 0x5a ; The system is out of memory. + static LDAP_NO_OBJECT_CLASS_MODS := 0x45 ; Cannot modify object class. + static LDAP_NO_RESULTS_RETURNED := 0x5e ; Results are not returned. + static LDAP_NO_SUCH_ATTRIBUTE := 0x10 ; Requested attribute does not exist. + static LDAP_NO_SUCH_OBJECT := 0x20 ; Object does not exist. + static LDAP_NOT_ALLOWED_ON_NONLEAF := 0x42 ; Operation is not allowed on a nonleaf object. + static LDAP_NOT_ALLOWED_ON_RDN := 0x43 ; Operation is not allowed on RDN. + static LDAP_NOT_SUPPORTED := 0x5c ; The feature is not supported. + static LDAP_OBJECT_CLASS_VIOLATION := 0x41 ; There was an object class violation. + static LDAP_OPERATIONS_ERROR := 0x01 ; Operations error occurred. + static LDAP_OTHER := 0x50 ; Unknown error occurred. + static LDAP_PARAM_ERROR := 0x59 ; A bad parameter was passed to a routine. + static LDAP_PARTIAL_RESULTS := 0x09 ; Partial results and referrals received. Note: Same error code + ; as LDAP_REFERRAL_V2. The server returns the same result code for + ; these two similar instances, v2 referral and continuation + ; references. For further information, see the protocol reference, + ; Referrals in LDAPv2 and LDAPv3. + static LDAP_PROTOCOL_ERROR := 0x02 ; Protocol error occurred. + static LDAP_REFERRAL := 0x0a ; A referral was returned from the server. + static LDAP_REFERRAL_LIMIT_EXCEEDED := 0x61 ; The referral limit has been exceeded. + static LDAP_REFERRAL_V2 := 0x09 ; A referral was returned from the server. Note: Same error code + ; as LDAP_PARTIAL_RESULTS. The server returns the same result code + ; for these two similar instances, v2 referral and continuation + ; references. For further information, see the protocol reference, + ; Referrals in LDAPv2 and LDAPv3. + static LDAP_RESULTS_TOO_LARGE := 0x46 ; Results returned are too large. + static LDAP_SERVER_DOWN := 0x51 ; Cannot contact the LDAP server. + static LDAP_SIZELIMIT_EXCEEDED := 0x04 ; Size limit was exceeded. + static LDAP_STRONG_AUTH_REQUIRED := 0x08 ; Strong authentication is required. + static LDAP_SUCCESS := 0x00 ; The call completed successfully. + static LDAP_TIMELIMIT_EXCEEDED := 0x03 ; Time limit, set by the server side time limit parameter, was exceeded. + static LDAP_TIMEOUT := 0x55 ; The search was aborted due to exceeding the limit of the client side timeout parameter. + static LDAP_UNAVAILABLE := 0x34 ; The server is unavailable. + static LDAP_UNAVAILABLE_CRIT_EXTENSION := 0x0c ; The control is critical and the server does not support the control. + static LDAP_UNDEFINED_TYPE := 0x11 ; Type is not defined. + static LDAP_UNWILLING_TO_PERFORM := 0x35 ; The server is not willing to handle directory requests. + static LDAP_USER_CANCELLED := 0x58 ; The user has canceled the operation. + static LDAP_VIRTUAL_LIST_VIEW_ERROR := 0x4c ; An error occurred when attempting to perform a requested Virtual + ; List View operation. A detailed error code is returned in the + ; ldctl_value field of the LDAP_CONTROL_VLVRESPONSE control. + + class Helper { + + static HL_COL_LOGIC := "" + static HL_COL_OPERATOR := "" + static HL_COL_ATTR := "" + static HL_COL_VALUE := "" + + indent_text(text, num, indent_width=2, indent_char=" ") { + return "`n" (indent_char.repeat(indent_width)).repeat(num) text + } + } + + hLdap := 0 + + __AW() { + return (A_IsUnicode ? "W" : "A") + } + + __new(hostname, port=389) { + if (!Ldap.hWldap32) { + Ldap.hWldap32 := DllCall("LoadLibrary", "Str", "Wldap32.dll", "Ptr") + } + this.hLdap := DllCall("wldap32\ldap_init" Ldap.AW + , "Str", hostname, "UInt", port, "CDecl Ptr") + return this + } + + setOption(option, invalue) { + return DllCall("wldap32\ldap_set_option" (Ldap.AW = "W" ? "W":"") + , "Ptr", this.hLdap, "Int", option, "Ptr", invalue, "CDecl") + } + + getOption(option, ByRef value) { + return DllCall("wldap32\ldap_get_option" (Ldap.AW = "W" ? "W":"") + , "Ptr", this.hLdap, "Int", option, "Ptr", &value, "CDecl") + } + + connect(timeout=0) { + return DllCall("wldap32\ldap_connect", "Ptr", this.hLdap + , "Ptr", 0, "CDecl") + } + + search(ByRef search_res, basedn, filter, scope=2, attrs=0 + , attrs_only=false) { + if (attrs != 0 && !IsObject(attrs)) { + throw Exception("attrs must be 0 or a string array") + } + if (attrs) { + l := System.strArrayToPtrList(attrs, _attrs) + } else { + _attrs := "" + } + VarSetCapacity(res, A_PtrSize, 0) + ret := DllCall("wldap32\ldap_search_s" Ldap.AW + , "Ptr", this.hLdap + , "Str", basedn + , "UInt", scope + , "Str", filter + , "Ptr", &_attrs + , "UInt", attrs_only + , "Ptr", &res + , "CDecl UInt") + + search_res := NumGet(res, 0, "Ptr") + return ret ; QUESTION: Why is the return value sometimes 80? Maybe a timing issue? + } + + formatFilter(filter, hilightSyntax=true) { + indentedString := "" + indent := 0 + i := 1 + while (i <= StrLen(filter)) { + char := SubStr(filter, i, 1) + st := SubStr(filter, i-1, 2) + if (RegExMatch(st, "\([|&!]", $)) { + indent++ + indentedString .= char Ldap.helper.indent_text("", indent) + } else if (st = ")(") { + indentedString .= Ldap.helper.indent_text(char, indent) + } else if (st = "))") { + indent-- + indentedString .= Ldap.helper.indent_text(char, indent) + } else { + indentedString .= char + } + i++ + } + if (indent < 0) { + throw Exception("Invalid LDAP filter") + } + filter := indentedString + if (hilightSyntax) { + ; ahklint-ignore-begin: W009 + filter := RegExReplace(filter, "(\w*?)=([\w_-]+)" + , Ldap.Helper.HL_COL_ATTR "${1}=" + . Ldap.Helper.HL_COL_VALUE "${2}") + filter := RegExReplace(filter, "[&|!]" + , Ldap.Helper.HL_COL_LOGIC "${0}") + filter := RegExReplace(filter, "[<>~*=]" + , Ldap.Helper.HL_COL_OPERATOR "${0}") + ; ahklint-ignore-end + } + return filter + } + + countEntries(search_res) { + return DllCall("wldap32\ldap_count_entries", "Ptr", this.hLdap + , "Ptr", search_res, "CDecl") + } + + firstEntry(search_res) { + return DllCall("wldap32\ldap_first_entry", "Ptr", this.hLdap + , "UInt", search_res, "CDecl") + } + + nextEntry(entry) { + return DllCall("wldap32\ldap_next_entry", "Ptr", this.hLdap + , "Ptr", entry, "CDecl") + } + + firstAttribute(entry) { + VarSetCapacity(pBer, A_PtrSize, 0) + ret := DllCall("wldap32\ldap_first_attribute" Ldap.AW, "Ptr", this.hLdap + , "UInt", entry, "Ptr", &pBer, "CDecl") + if (ret) { + this._p_ber := NumGet(pBer, 0, "Ptr") + } + return ret + } + + nextAttribute(entry) { + return DllCall("wldap32\ldap_next_attribute" Ldap.AW, "Ptr", this.hLdap + , "UInt", entry, "Ptr", this._p_ber, "CDecl") + } + + getValues(entry, attr) { + return DllCall("wldap32\ldap_get_values" Ldap.AW, "Ptr", this.hLdap + , "Ptr", entry, "Ptr", attr, "CDecl Ptr") + } + + countValues(values) { + return DllCall("wldap32\ldap_count_values" Ldap.AW + , "Ptr", values, "CDecl") + } + + getDn(entry) { + return DllCall("wldap32\ldap_get_dn" Ldap.AW, "Ptr", this.hLdap + , "Ptr", entry, "CDecl Str") + } + + getLastError() { + return DllCall("wldap32\LdapGetLastError", "CDecl") + } + + err2String(err="") { + if (err = "") { + err := this.getLastError() + } + return DllCall("wldap32\ldap_err2string" this.AW, "UInt" + , err, "CDecl Str") + } + + simpleBind(dn, passwd) { + return DllCall("wldap32\ldap_simple_bind_s" Ldap.AW, "Ptr", this.hLdap + , "Str", dn, "Str", passwd, "Cdecl") + } + + unbind() { + ret := 0 + if (this.hLdap) { + ret := DllCall("wldap32\ldap_unbind", "Ptr", this.hLdap, "CDecl") + } + this.hLdap := 0 + return ret + } + + add(entry_dn, ByRef ldap_mod) { + return DllCall("wldap32\ldap_add_s" Ldap.AW, "Ptr", this.hLdap + , "Str", entry_dn, "Ptr", &ldap_mod, "CDecl UInt") + } + + delete(dn) { + return DllCall("wldap32\ldap_delete_s" Ldap.AW, "Ptr", this.hLdap + , "Str", dn, "CDecl UInt") + } + + modify(dn, ByRef ldap_mod) { + return DllCall("wldap32\ldap_modify_s" Ldap.AW, "Ptr", this.hLdap + , "Str", dn, "Ptr", &ldap_mod, "CDecl UInt") + } +} + +LDAPMod(ByRef mod_data, mod_op, ByRef mod_type, ByRef mod_values) { ; ahklint-ignore: W007 + s := VarSetCapacity(mod_data, 4+A_PtrSize+A_PtrSize, 0) + NumPut(mod_op, mod_data, 0, "UInt") + NumPut(&mod_type, mod_data, 4, "Ptr") + NumPut(&mod_values, mod_data, 4+A_PtrSize, "Ptr") + return s +} + +/* +dump_ldap_mod_struct(ByRef ldap_mod, _Ptr="Ptr", _A_PtrSize="") { + if (!_A_PtrSize) { + _A_PtrSize := A_PtrSize + } + OutputDebug % "mod_values:" LoggingHelper.hexDump(&ldap_mod + , 0, VarSetCapacity(ldap_mod)) + loop % ((VarSetCapacity(ldap_mod) / _A_PtrSize)-1) { + ; *** mod_op *** + _p_ldap_mod := NumGet(ldap_mod, (A_Index-1)*_A_PtrSize, _Ptr) + OutputDebug % "mod_op = " NumGet(_p_ldap_mod+0, 0, "UInt") + ; *** mod_type *** + _p_mod_type := NumGet(_p_ldap_mod+0, 4, _Ptr) + _mod_type := "" + _n := 0 + loop { + _n += (A_IsUnicode ? 2 : 1) + } until (NumGet(_p_mod_type+0, _n, (A_IsUnicode?"UShort":"UChar")) = 0) + _mod_type := StrGet(_p_mod_type+0, _n) + OutputDebug % "_mod_type = " _mod_type + ; OutputDebug % LoggingHelper.HexDump(&_mod_type, 0, _n) + ; *** mod_values *** + _p_mod_values := NumGet(_p_ldap_mod+0, 4+_A_PtrSize, _Ptr) + loop { + _p_value := NumGet(_p_mod_values+0, (A_Index-1)*_A_PtrSize, _Ptr) + if (_p_value > 0) { + _n := 0 + loop { + _n += (A_IsUnicode ? 2 : 1) + } until (NumGet(_p_value+0, _n + , (A_IsUnicode ? "UShort" : "UChar")) = 0) + OutputDebug % _mod_type "[" A_Index "]" + , "(" _p_value.asHex() ") " StrGet(_p_value+0, _n) + ; OutputDebug % LoggingHelper.HexDump(_p_value+0, 0, _n) + } + } until (_p_value = 0) + } +} +*/ diff --git a/more libs/Various1/lib/long.ahk b/more libs/Various1/lib/long.ahk new file mode 100644 index 00000000..d4256676 --- /dev/null +++ b/more libs/Various1/lib/long.ahk @@ -0,0 +1,42 @@ +class Long { + + requires() { + return [Math] + } + + static DIGITS + := ["0", "1", "2", "3", "4", "5" + , "6", "7", "8", "9", "a", "b" + , "c", "d", "e", "f", "g", "h" + , "i", "j", "k", "l", "m", "n" + , "o", "p", "q", "r", "s", "t" + , "u", "v", "w", "x", "y", "z"] + + toUnsignedString(i, shift) { + buf := [] + charPos := 64 + radix := I(1 << shift) + mask := radix - 1 + loop { + buf[--charPos] := Long.DIGITS[I(i & mask)+1] + i := Math.zeroFillShiftR(i, shift) + } until (i = 0) + st := "" + loop % 64 - charPos { + st := st . buf[charPos + A_Index - 1] + } + return st + } + + toBinaryString(i) { + return Long.toUnsignedString(i, 1) + } + + toHexString(i) { + return Long.toUnsignedString(i, 4) + } + + toOctalString(i) { + return Long.toUnsignedString(i, 3) + } +} diff --git a/more libs/Various1/lib/math.ahk b/more libs/Various1/lib/math.ahk new file mode 100644 index 00000000..d447a0d4 --- /dev/null +++ b/more libs/Various1/lib/math.ahk @@ -0,0 +1,379 @@ +#Include %A_LineFile%\..\modules\math +#Include MathHelper.ahk +#Include PrimeFactorProduct.ahk + +class Math { + + requires() { + return [Arrays] + } + + static MIN_LONG := -0x8000000000000000 + static MAX_LONG := 0x7FFFFFFFFFFFFFFF + static MIN_INT := -0x80000000 + static MAX_INT := 0x7FFFFFFF + static MIN_SHORT := -0x8000 + static MAX_SHORT := 0x7fff + + __new() { + throw Exception("Instatiation of class '" this.__Class + . "' is not allowed") + } + + swap(ByRef firstElement, ByRef secondElement) { + tempElement := firstElement + firstElement := secondElement + secondElement := tempElement + } + + floor(elements*) { + OutputDebug %A_ThisFunc% is deprecated. Use Math.min() instead + return MathHelper.floorCeil("floor", Math.MAX_INT, elements) + } + + ceil(elements*) { + OutputDebug %A_ThisFunc% is deprecated. Use Math.max() instead + return MathHelper.floorCeil("ceil", Math.MIN_INT, elements) + } + + min(elements*) { + flatElements := Arrays.flatten([elements]) + return Arrays.reduce(flatElements, Func("min") + , flatElements[flatElements.minIndex()]) + } + + max(elements*) { + flatElements := Arrays.flatten([elements]) + return Arrays.reduce(flatElements, Func("max") + , flatElements[flatElements.minIndex()]) + } + + limitTo(number, minimum, maximum) { + if (number >= minimum && number <= maximum) { + return number + } + if (number > maximum) { + return maximum + } else { + return minimum + } + } + + isEven(number) { + if number is not integer + { + throw Exception("Invalid data type, integer expected" + , -1, "<" number ">") + } + return Mod(number, 2) = 0 + } + + isOdd(number) { + if number is not integer + { + throw Exception("Invalid data type, integer expected" + , -1, "<" number ">") + } + return Mod(number, 2) != 0 + } + + isFractional(number) { + tempFloatFormat := A_FormatFloat + SetFormat Float, 0.0 + integerShare := number + 0 + SetFormat Float, %tempFloatFormat% + return number - integerShare != 0 + } + + root(degreeOfRoot, number) { + if degreeOfRoot is not integer + { + throw Exception("Invalid data type, integer excpected" + , -1, "<" degreeOfRoot ">") + } + if number is not number + { + throw Exception("Invalid data type, number expected" + , -1, "<" number ">") + } + tempFloatFormat := A_FormatFloat + SetFormat Float, 0.14 ; FIXME: with 0.15 Math.Root(5, 2476099) returns 19.000000000000004 + rootOfNumber := number**(1 / degreeOfRoot) + SetFormat Float, %tempFloatFormat% + return rootOfNumber + } + + log(base, exponent) { + if base is not integer + { + throw Exception("Invalid data type, integer excpected" + , -1, "<" base ">") + } + if exponent is not number + { + throw Exception("Invalid data type, number excpected" + , -1, "<" exponent ">") + } + tempFloatFormat := A_FormatFloat + SetFormat Float, 0.16 + logarithm := Log(exponent) / Log(base) + SetFormat Float, %tempFloatFormat% + return logarithm + } + + isPrime(number) { + if number is not integer + { + throw Exception("Invalid data type, integer excpected" + , -1, "<" number ">") + } + if (number == 1) { + return false + } + if (number >= 10) { + cLastDigit := SubStr(number, 0) + if cLastDigit not in 1,3,7,9 + { + return false + } + } + i := 2 + while (i * i <= number) { + if (Mod(number, i) = 0) { + return false + } + i++ + } + return true + } + + integerFactorization(number) { + if number is not number + { + throw Exception("Invalid data type, number expected" + , -1, "<" number ">") + } + if number is not integer + { + return new PrimeFactorProduct(number) + } + if (Math.isPrime(number)) { + return new PrimeFactorProduct(number) + } + listOfPrimeFactors := new PrimeFactorProduct() + i := 2 + while (number > 1 && number / i != 1) { + while (Mod(number, i) = 0) { + listOfPrimeFactors.add(i) + number //= i + } + if (number > 1) { + loop { + i++ + } until (Math.isPrime(i)) + } + } + if (number > 1) { + listOfPrimeFactors.add(i) + } + return listOfPrimeFactors + } + + greatestCommonDivisor(firstNumber="", secondNumber="" + , useEuklidsAlgorithm=true) { + if firstNumber is not number + { + throw Exception("Invalid data type, number expected" + , -1, "<" firstNumber ">") + } + if secondNumber is not number + { + throw Exception("Invalid data type, number expected" + , -1, "<" secondNumber ">") + } + if (useEuklidsAlgorithm) { + return MathHelper.GCDEuklid(firstNumber, secondNumber) + } + greatestCommonDivisor := 1 + listOfPrimeFactorsForFirstNumber + := Math.integerFactorization(firstNumber).getList() + listOfPrimeFactorsForSecondNumber + := Math.integerFactorization(secondNumber).getList() + intersectionOfPrimeFactors := Arrays.distinct(Arrays + .intersection(listOfPrimeFactorsForFirstNumber + , listOfPrimeFactorsForSecondNumber)) + while (A_Index <= intersectionOfPrimeFactors.maxIndex()) { + greatestCommonDivisor *= intersectionOfPrimeFactors[A_Index] + } + return greatestCommonDivisor + } + + lowestCommonMultiple(firstNumber="", secondNumber="") { + if firstNumber is not number + { + throw Exception("Invalid data type, number expected" + , -1, "<" firstNumber ">") + } + if secondNumber is not number + { + throw Exception("Invalid data type, number expected" + , -1, "<" secondNumber ">") + } + lowestCommonMultiple := 1 + listOfPrimeFactorsForFirstNumber + := Math.integerFactorization(firstNumber).getList() + listOfPrimeFactorsForSecondNumber + := Math.integerFactorization(secondNumber).getList() + listOfDistinctPrimeFactorsForFirstNumber + := Arrays.distinct(listOfPrimeFactorsForFirstNumber) + occurenceOfFactorOfFirstNumber := 0 + occurenceOfFactorOfSecondNumber := 0 + while (A_Index <= listOfDistinctPrimeFactorsForFirstNumber.maxIndex()) { + factor := listOfDistinctPrimeFactorsForFirstNumber[A_Index] + occurenceOfFactorOfFirstNumber := Arrays + .countOccurences(listOfPrimeFactorsForFirstNumber, factor) + occurenceOfFactorOfSecondNumber := Arrays + .countOccurences(listOfPrimeFactorsForSecondNumber, factor) + if (occurenceOfFactorOfFirstNumber + >= occurenceOfFactorOfSecondNumber) { + lowestCommonMultiple *= factor**occurenceOfFactorOfFirstNumber + Arrays.removeValue(listOfPrimeFactorsForSecondNumber, factor) + } else { + lowestCommonMultiple *= factor**occurenceOfFactorOfSecondNumber + Arrays.removeValue(listOfPrimeFactorsForSecondNumber, factor) + } + } + while (A_Index <= listOfPrimeFactorsForSecondNumber.maxIndex()) { + lowestCommonMultiple *= listOfPrimeFactorsForSecondNumber[A_Index] + } + return lowestCommonMultiple + } + + ; see also: https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19 + zeroFillShiftR(number, shift) { + if (number == 0) { + return 0 + } + if (number > 0x7fffffffffffffff) { + number := (number & ~0x7fffffffffffffff) - 1 + } + if (number > 0) { + return number >> shift + } + return (number >> shift) + (2 << ~shift) + } + + numberOfLeadingZeros(number) { + if (number = 0) { + return 64 + } + n := 1 + x := UI(Math.zeroFillShiftR(number, 32)) + if (x = 0) { + n += 32, x := I(number) + } + if (Math.zeroFillShiftR(x, 16) = 0) { + n += 16, I(x <<= 16) + } + if (Math.zeroFillShiftR(x, 24) = 0) { + n += 8, I(x <<= 8) + } + if (Math.zeroFillShiftR(x, 28) = 0) { + n += 4, I(x <<= 4) + } + if (Math.zeroFillShiftR(x, 30) = 0) { + n += 2, I(x <<= 2) + } + n -= I(Math.zeroFillShiftR(x, 31)) + return n + } + + bitCount(number) { + number := number - (Math.zeroFillShiftR(number, 1) & 0x5555555555555555) + number := (number & 0x3333333333333333) + + (Math.zeroFillShiftR(number, 2) & 0x3333333333333333) + number := number + Math.zeroFillShiftR(number, 4) & 0x0f0f0f0f0f0f0f0f + number := number + Math.zeroFillShiftR(number, 8) + number := number + Math.zeroFillShiftR(number, 16) + number := number + Math.zeroFillShiftR(number, 32) + return I(number & 0x7f) + } + + numberOfTrailingZeros(number) { + if (number = 0) { + return 64 + } + n := 63 + y := I(number) + if (y != 0) { + n := n -32, x := y + } else { + x := I(Math.zeroFillShiftR(number, 32)) + } + y := I(x <<16) + if (y != 0) { + n := n -16, x := y + } + y := I(x << 8) + if (y != 0) { + n := n - 8, x := y + } + y := I(x << 4) + if (y != 0) { + n := n - 4, x := y + } + y := I(x << 2) + if (y != 0) { + n := n - 2, x := y + } + _x := UI(x << 1) + return n - (Math.zeroFillShiftR(UI(x << 1), 31)) + } +} + +; ahklint-ignore-begin: W007 +I(i) { + return i << 32 >> 32 +} + +S(s) { + return s << 48 >> 48 +} + +L(l) { + return l << 64 >> 64 +} + +UI(i) { + return i & 0xffffffff +} + +US(s) { + return s & 0xffff +} + +UL(l) { + return l & 0xffffffffffffffff +} + +SI(i) { + if (i < 0) { + return i + } + return i-(0xffffffff+1) +} + +SS(s) { + if (s < 0) { + return s + } + return s-(0xffff+1) +} + +SL(l) { + if (l < 0) { + return l + } + return l-(0xffffffffffffffff+1) +} +; ahklint-ignore-end diff --git a/more libs/Various1/lib/modules/arrays/Quicksort.ahk b/more libs/Various1/lib/modules/arrays/Quicksort.ahk new file mode 100644 index 00000000..e6cf7fb8 --- /dev/null +++ b/more libs/Various1/lib/modules/arrays/Quicksort.ahk @@ -0,0 +1,53 @@ +class Quicksort { + + sort(anArray, compareFunc, left, right) { + if (left < right) { + pivotPoint := Arrays.Quicksort.divide(anArray, compareFunc + , left, right) + Arrays.Quicksort.sort(anArray, compareFunc, left, pivotPoint-1) + Arrays.Quicksort.sort(anArray, compareFunc, pivotPoint+1, right) + } + return anArray + } + + divide(anArray, compareFunc, left, right) { + i := left + j := right - 1 + pivotElement := anArray[right] + loop { + while (compareFunc.call(anArray[i], pivotElement) + <= 0 && i < right) { + i++ + } + while (compareFunc.call(anArray[j], pivotElement) + >= 0 && j > left) { + j-- + } + if (i < j) { + Arrays.Quicksort.swap(anArray, i, j) + } else { + break + } + } + Arrays.Quicksort.swap(anArray, i, right) + return i + } + + swap(anArray, pi, pj) { + _temp := anArray[pi] + anArray[pi] := anArray[pj] + anArray[pj] := _temp + } + + compareStrings(firstElement, secondElement) { + scs := A_StringCaseSense + StringCaseSense on + firstElement .= "$" + secondElement .= "$" + result := (firstElement == secondElement ? 0 + : firstElement < secondElement ? -1 + : +1) + StringCaseSense %scs% + return result + } +} diff --git a/more libs/Various1/lib/modules/arrays/Venn.ahk b/more libs/Various1/lib/modules/arrays/Venn.ahk new file mode 100644 index 00000000..6011fa18 --- /dev/null +++ b/more libs/Various1/lib/modules/arrays/Venn.ahk @@ -0,0 +1,142 @@ +class Union extends Arrays.Venn { + processOperation() { + base.retrieveElementsInSetA() + base.retrieveElementsInSetB() + base.retrieveElementsContainedInBothSets() + } +} + +class Intersection extends Arrays.Venn { + processOperation() { + base.catchUpSetA() + base.catchUpSetB() + base.retrieveElementsContainedInBothSets() + } +} + +class SymmetricDifference extends Arrays.Venn { + processOperation() { + base.retrieveElementsInSetA() + base.retrieveElementsInSetB() + base.catchUpBothSets() + } +} + +class RelativeComplement extends Arrays.Venn { + processOperation() { + base.retrieveElementsInSetA() + base.catchUpSetB() + base.catchUpSetAForElementsContainedInBothSets() + } +} + +class Venn { + setA := [] + setB := [] + indexA := 0 + indexB := 0 + compareFunc := Arrays.Quicksort.compareStrings.bind(this) ; TODO: Use a method from String class + printSource := false + resultSet := [] + + __new(setA, setB, compareFunc="", printSource=false) { + Arrays.isArray(setA) + Arrays.isArray(setB) + this.compareFunc := (compareFunc != "" + ? compareFunc + : Arrays.Quicksort.compareStrings.bind(this)) + Arrays.isCallbackFunction(this.compareFunc) + this.setA := setA.clone() + this.setB := setB.clone() + this.indexA := this.setA.minIndex() + this.indexB := this.setB.minIndex() + VarSetCapacity(HIGH, 64, 0xff) + this.setA.push(HIGH) + this.setB.push(HIGH) + this.printSource := printSource + this.processSetAAndSetB() + } + + result() { + return this.resultSet + } + + processSetAAndSetB() { + while ((this.indexA != "" && this.indexB != "") + && (this.indexA < this.setA.maxIndex() + || this.indexB < this.setB.maxIndex())) { + this.processOperation() + } + } + + catchUpSetA() { + while (this.indexA < this.setA.maxIndex() + && (this.compareFunc.call(this.setA[this.indexA] + , this.setB[this.indexB])) < 0) { + this.indexA++ + } + } + + retrieveElementsInSetA() { + while (this.indexA < this.setA.maxIndex() + && (this.compareFunc.call(this.setA[this.indexA] + , this.setB[this.indexB])) < 0) { + this.pushToResultSet(this.setA[this.indexA], "A") + this.indexA++ + } + } + + catchUpSetB() { + while (this.indexB < this.setB.maxIndex() + && (this.compareFunc.call(this.setB[this.indexB] + , this.setA[this.indexA])) < 0) { + this.indexB++ + } + } + + retrieveElementsInSetB() { + while (this.indexB < this.setB.maxIndex() + && (this.compareFunc.call(this.setB[this.indexB] + , this.setA[this.indexA])) < 0) { + this.pushToResultSet(this.setB[this.indexB], "B") + this.indexB++ + } + } + + catchUpBothSets() { + while ((this.indexA < this.setA.maxIndex() + || this.indexB < this.setB.maxIndex()) + && (this.compareFunc.call(this.setA[this.indexA] + , this.setB[this.indexB])) == 0) { + this.indexB++ + this.indexA++ + } + } + + retrieveElementsContainedInBothSets() { + while ((this.indexA < this.setA.maxIndex() + || this.indexB < this.setB.maxIndex()) + && (this.compareFunc.call(this.setA[this.indexA] + , this.setB[this.indexB])) == 0) { + this.pushToResultSet(this.setA[this.indexA], "A") + this.indexA++ + this.pushToResultSet(this.setB[this.indexB], "B") + this.indexB++ + } + } + + catchUpSetAForElementsContainedInBothSets() { + while ((this.indexA < this.setA.maxIndex() + || this.indexB < this.setB.maxIndex()) + && (this.compareFunc.call(this.setA[this.indexA] + , this.setB[this.indexB])) == 0) { + this.indexA++ + } + } + + pushToResultSet(element, source="") { + this.resultSet.push((this.printSource + ? "(" source ") " : "") + . element) + } +} diff --git a/more libs/Various1/lib/modules/calendar/CalendarHelper.ahk b/more libs/Various1/lib/modules/calendar/CalendarHelper.ahk new file mode 100644 index 00000000..302aef53 --- /dev/null +++ b/more libs/Various1/lib/modules/calendar/CalendarHelper.ahk @@ -0,0 +1,222 @@ +class CalendarHelper { + + static MAX_DAY_OF_MONTH := [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + + __new() { + throw Exception("Instatiation of class '" + . this.__Class "' is not allowed", -1) + } + + validTime(dateTime="") { + if (dateTime = "") { + validDateTime := A_Now + } else if (!RegExMatch(dateTime, "^\d+$")) { + throw Exception("The given time contains invalid characters" + , -1, "<" dateTime ">") + } else if (StrLen(dateTime) < 4) { + throw Exception("Invalid time. " + . "Provide at least a year between 1601 and 9999" + , -1, "<" dateTime ":" dateTime.Len() ">") + } else { + dateTimeWithYear := CalendarHelper.testForValidYear(dateTime) + CalendarHelper.MAX_DAY_OF_MONTH[2] + := CalendarHelper.returnMaxDaysForFebruary(dateTimeWithYear) + dateTimeWithMonth + := CalendarHelper.testForValidMonth(dateTimeWithYear) + dateTimeWithDay := CalendarHelper.testForValidDay(dateTimeWithMonth) + dateTimeWithHours + := CalendarHelper.testForValidHour(dateTimeWithDay) + dateTimeWithMinutes + := CalendarHelper.testForValidMinutes(dateTimeWithHours) + dateTimeWithSeconds + := CalendarHelper.testForValidSeconds(dateTimeWithMinutes) + validDateTime := dateTimeWithSeconds + } + return validDateTime + } + + returnMaxDaysForFebruary(dateTime) { + yearToTest := SubStr(dateTime, 1, 4) + if ((Mod(yearToTest, 4) == 0 && Mod(yearToTest, 100) != 0) + || Mod(yearToTest, 400) == 0) { + return 29 + } + return 28 + } + + testForValidYear(dateTime) { + yearToTest := SubStr(dateTime, 1, 4) + if (yearToTest < 1601) { + throw Exception("Provide a year between 1601 and 9999" + , -1, "<" yearToTest ">") + } + return dateTime + } + + testForValidMonth(dateTime) { + monthToTest := SubStr(dateTime, 5, 2) + if (monthToTest = "") { + dateTime .= "01" + } + else if (monthToTest < 01 || monthToTest > 12) { + throw Exception("Month must be between 01 and 12" + , -1, "<" monthToTest ">") + } + return dateTime + } + + testForValidDay(dateTime) { + dayToTest := SubStr(dateTime, 7, 2) + if (dayToTest = "") { + dateTime .= "01" + } + else { + month := SubStr(dateTime, 5, 2) + year := SubStr(dateTime, 1, 4) + CalendarHelper.MAX_DAY_OF_MONTH[2] + := CalendarHelper.returnMaxDaysForFebruary(year) + if (dayToTest < 01 + || dayToTest > CalendarHelper.MAX_DAY_OF_MONTH[month]) { + throw Exception("Day of month must be between 01 and " + . CalendarHelper.MAX_DAY_OF_MONTH[month] + , -1, "<" dayToTest ">") + } + } + return dateTime + } + + testForValidHour(dateTime) { + hourToTest := SubStr(dateTime, 9, 2) + if (hourToTest = "") { + dateTime .= "00" + } + else if (hourToTest < 00 || hourToTest > 23) { + throw Exception("Hour must be between 00 and 23" + , -1, "<" hourToTest ">") + } + return dateTime + } + + testForValidMinutes(dateTime) { + minutesToTest := SubStr(dateTime, 11, 2) + if (minutesToTest = "") { + dateTime .= "00" + } + else if (minutesToTest < 00 || minutesToTest > 59) { + throw Exception("Minutes must be between 00 and 59" + , -1, "<" minutesToTest ">") + } + return dateTime + } + + testForValidSeconds(dateTime) { + secondsToTest := SubStr(dateTime, 13, 2) + if (secondsToTest = "") { + dateTime .= "00" + } + else if (secondsToTest < 00 || secondsToTest > 59) { + throw Exception("Seconds must be between 00 and 59" + , -1, "<" secondsToTest ">") + } + return dateTime + } + + daysInMonth(dateTime="", month="") { + try { + CalendarHelper.validTime(dateTime) + } catch _ex { + throw _ex + } + return CalendarHelper.MAX_DAY_OF_MONTH[month] + } + + testForValidInteger(value, additionalInfo="") { + if (!RegExMatch(value, "^[-+]?\d+$")) { + throw Exception(additionalInfo (additionalInfo != "" ? " - " : "") + . "integer expected", -1, "<" value ">") + } + return true + } + + testForValidNumber(value, additionalInfo="") { + if (!RegExMatch(value, "^[+-]?(\d+|\d*?\.\d*)$")) { + throw Exception(additionalInfo (additionalInfo != "" ? " - " : "") + . "number expected", -1, "<" value ">") + } + return true + } + + testForValidWeekDay(weekDay) { + if (weekDay < Calendar.SUNDAY || weekDay > Calendar.SATURDAY) { + throw Exception("Week day must be between " Calendar.SUNDAY + . " and " Calendar.SATURDAY, -1, "<" weekDay ">") + } + return true + } + + adjustMonthAndHandleUnderFlowOrOverFlow(calendar, monthsToAdjust) { + if (calendar.asMonth() + monthsToAdjust < 1) { + calendar.setAsMonth(12 + calendar.asMonth() + monthsToAdjust) + calendar.setAsYear(calendar.asYear() - 1) + } else if (calendar.asMonth() + monthsToAdjust > 12) { + calendar.setAsMonth(calendar.asMonth() + monthsToAdjust - 12) + calendar.setAsYear(calendar.asYear() + 1) + } else { + calendar.setAsMonth(calendar.asMonth() + monthsToAdjust) + } + maxDaysInAdjustedMonth + := CalendarHelper.daysInMonth(new Calendar(calendar.asYear() + . calendar.asMonth()).get(), calendar.asMonth()) + if (calendar.asDay() > maxDaysInAdjustedMonth) { + calendar.setAsDay(maxDaysInAdjustedMonth) + } + } + + findNextOrFirstOccurenceOfWeekDay(direction) { + return direction >= Calendar.FIND_NEXT_OR_FIRST_OCCURENCE_OF_WEEKDAY + } + + findNextOccurenceOfWeekDay(calendar, weekDay, occurence) { + if (occurence == Calendar.FIND_NEXT) { + if (weekDay = calendar.dayOfWeek()) { + occurence := 2 + } else { + occurence := 1 + } + } else { + calendar.setAsDay(1) + } + if (weekDay <= calendar.dayOfWeek()) { + if (weekDay = calendar.dayOfWeek()) { + occurence -= 1 + } + distance := weekDay + 7 - calendar.dayOfWeek() + } else { + distance := weekDay - calendar.dayOfWeek() + } + distance *= occurence + calendar.adjust(0, 0, distance) + return calendar + } + + findRecentOccurenceOfWeekDay(calendar, weekDay, occurence) { + if (occurence == Calendar.FIND_RECENT) { + occurence := 1 + } else { + calendar.setAsDay(calendar.daysInMonth()) + } + if (weekDay = calendar.dayOfWeek()) { + if (occurence > 0) { + distance := 7 + } else { + distance := 0 + } + } else { + distance := calendar.dayOfWeek() - weekDay + } + distance += 7 * (Abs(occurence) - 1) + distance *= -1 + calendar.adjust(0, 0, distance) + return calendar + } +} diff --git a/more libs/Various1/lib/modules/calendar/TimeZone.ahk b/more libs/Various1/lib/modules/calendar/TimeZone.ahk new file mode 100644 index 00000000..a9bea2bf --- /dev/null +++ b/more libs/Various1/lib/modules/calendar/TimeZone.ahk @@ -0,0 +1,64 @@ +class TimeZone { + + static UNKWOWN := 0 + static STANDARD := 1 + static DAYLIGHT := 2 + static INVALID := -1 + + iD := 0 + bias := 0 + + ; ahklint-ignore-begin: W003 + setting + := { standard : { bias: 0 + , name: "" + , date: { day: 0 + , dayOfWeek: 0 + , month: 0 + , hour: 0 + , minute: 0 } } + , Daylight : { bias: 0 + , name: "" + , date: { Day: 0 + , dayOfWeek: 0 + , month: 0 + , hour: 0 + , minute: 0 } } } + ; ahklint-ignore-end + + __new() { + VarSetCapacity(_tzi, sizeOf(TIME_ZONE_INFORMATION)) + this.iD := DllCall("GetTimeZoneInformation", "UInt", &_tzi, "UInt") + if (this.iD != Calendar.TimeZone.INVALID) { + tzi := new TIME_ZONE_INFORMATION(_tzi) + this.bias := tzi.bias + this.Setting.Standard.bias := tzi.StandardBias + this.Setting.Standard.name := tzi.StandardName + this.Setting.Standard.Date.day := tzi.StandardDate.wDay + this.Setting.Standard.Date.dayOfWeek := tzi.StandardDate.wDayOfWeek + this.Setting.Standard.Date.month := tzi.StandardDate.wMonth + this.Setting.Standard.Date.hour := tzi.StandardDate.wHour + this.Setting.Standard.Date.minute := tzi.StandardDate.wMinute + this.Setting.Daylight.bias := tzi.DaylightBias + this.Setting.Daylight.name := tzi.DaylightName + this.Setting.Daylight.Date.day := tzi.DaylightDate.wDay + this.Setting.Daylight.Date.dayOfWeek := tzi.DaylightDate.wDayOfWeek + this.Setting.Daylight.Date.month := tzi.DaylightDate.wMonth + this.Setting.Daylight.Date.hour := tzi.DaylightDate.wHour + this.Setting.Daylight.Date.minute := tzi.DaylightDate.wMinute + } + return this + } + + getBias() { + bias := "" + if (this.iD = Calendar.TimeZone.UNKWOWN) { + bias := this.bias + } else if (this.iD = Calendar.TimeZone.STANDARD) { + bias := this.bias + this.Setting.Standard.bias + } else if (this.iD = Calendar.TimeZone.DAYLIGHT) { + bias := this.bias + this.Setting.Daylight.bias + } + return bias + } +} diff --git a/more libs/Various1/lib/modules/calendar/Units.ahk b/more libs/Various1/lib/modules/calendar/Units.ahk new file mode 100644 index 00000000..2c1ea848 --- /dev/null +++ b/more libs/Various1/lib/modules/calendar/Units.ahk @@ -0,0 +1,26 @@ +class Units { + static SECONDS := "s" + static SECOND := "s" + static MINUTES := "m" + static MINUTE := "m" + static HOURS := "h" + static HOUR := "h" + static DAYS := "D" + static DAY := "D" + + __new() { + throw Exception("Instatiation of class '" this.__Class + . "' is not allowed", -1) + } + + isValid(unitCharToCheck) { + if (StrLen(unitCharToCheck) == 1) { + for unitName, unitChar in Calendar.Units { + if (unitCharToCheck = unitChar) { + return true + } + } + } + return false + } +} diff --git a/more libs/Various1/lib/modules/datatable/column.ahk b/more libs/Various1/lib/modules/datatable/column.ahk new file mode 100644 index 00000000..e20298f7 --- /dev/null +++ b/more libs/Various1/lib/modules/datatable/column.ahk @@ -0,0 +1,24 @@ +class Column { + + width := 40 + flags := 0 + attributes := [] + + __new(width=40, flags=0, attributes*) { + this.width := width + this.flags := flags + this.attributes := attributes + } + + class Wrapped extends DataTable.Column { + + width := 40 + attributes := "" + + __new(width=40, attributes*) { + this.width := width + this.attributes := attributes + return this + } + } +} diff --git a/more libs/Various1/lib/modules/datatable/quicksort.ahk b/more libs/Various1/lib/modules/datatable/quicksort.ahk new file mode 100644 index 00000000..52645952 --- /dev/null +++ b/more libs/Various1/lib/modules/datatable/quicksort.ahk @@ -0,0 +1,50 @@ +class Quicksort { + + sort(listToSort, listWithColumnNumbersToSort + , leftBoundary, rightBoundary) { + if (leftBoundary < rightBoundary) { + pivot := DataTable.Quicksort.divide(listToSort + , listWithColumnNumbersToSort, leftBoundary, rightBoundary) + DataTable.Quicksort.sort(listToSort + , listWithColumnNumbersToSort, leftBoundary, pivot-1) + DataTable.Quicksort.sort(listToSort + , listWithColumnNumbersToSort, pivot+1, rightBoundary) + } + } + + divide(listToSort, listWithColumnNumbersToSort + , leftBoundary, rightBoundary) { + left := leftBoundary + right := rightBoundary - 1 + pivot := listToSort[rightBoundary] + loop { + left := this.searchAtRightForElementGreaterThanPivot(listToSort + , listWithColumnNumbersToSort, left, pivot, rightBoundary) + right := this.searchAtLeftForElementGreaterThanPivot(listToSort + , listWithColumnNumbersToSort, right, pivot, leftBoundary) + if (left < right) { + DataTable.swap(listToSort, left, right) + } + } until (left >= right) + DataTable.swap(listToSort, left, rightBoundary) + return left + } + + searchAtRightForElementGreaterThanPivot(listToSort + , listWithColumnNumbersToSort, left, pivot, rightBoundary) { + while (DataTable.compare(listWithColumnNumbersToSort + , listToSort[left], pivot) <= 0 && left < rightBoundary) { + left++ + } + return left + } + + searchAtLeftForElementGreaterThanPivot(listToSort + , listWithColumnNumbersToSort, right, pivot, leftBoundary) { + while (DataTable.compare(listWithColumnNumbersToSort + , listToSort[right], pivot) >= 0 && right > leftBoundary) { + right-- + } + return right + } +} diff --git a/more libs/Various1/lib/modules/datatable/selectionsort.ahk b/more libs/Various1/lib/modules/datatable/selectionsort.ahk new file mode 100644 index 00000000..c23fb1d6 --- /dev/null +++ b/more libs/Various1/lib/modules/datatable/selectionsort.ahk @@ -0,0 +1,20 @@ +class Selectionsort { + + sort(listToSort, listWithColumnNumbersToSort) { + n := listToSort.maxIndex() + l := 1 + while (l < n) { + m := l + i := l + 1 + while (i <= n) { + if (Datatable.compare(listWithColumnNumbersToSort + , listToSort[i], listToSort[m]) < 0) { + m := i + } + i++ + } + Datatable.swap(listToSort, m, l) + l++ + } + } +} diff --git a/more libs/Various1/lib/modules/flimsydata/Givenname.ahk b/more libs/Various1/lib/modules/flimsydata/Givenname.ahk new file mode 100644 index 00000000..b810ee4d --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/Givenname.ahk @@ -0,0 +1,11 @@ +class Givenname extends Flimsydata.Formatter { + + get(dataProvider, locale="de") { + if (!Object.InstanceOf(%dataProvider%, "Flimsydata.Provider")) { + throw Exception("Provider class must " + . "extend 'Flimsydata.Provider': " dataProvider) + } + return Flimsydata.getRandomListElement(this.randomizer + , %dataProvider%.data[locale]) + } +} diff --git a/more libs/Various1/lib/modules/flimsydata/Lorem.ahk b/more libs/Various1/lib/modules/flimsydata/Lorem.ahk new file mode 100644 index 00000000..17e31f38 --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/Lorem.ahk @@ -0,0 +1,71 @@ +class Lorem extends Flimsydata.Formatter { + + getChapter(dataProvider, count=1) { + numberOfChapter := Flimsydata.getRandomInt(this.randomizer + , %dataProvider%.data.minIndex() + , %dataProvider%.data.maxIndex()) + return %dataProvider%.data[numberOfChapter] + } + + getParagraph(dataProvider, count=1) { + paragraph := "" + loop %count% { + chapter := this.getChapter(dataProvider, 1) + numberOfParagraph := Flimsydata.GetRandomInt(this.randomizer + , chapter.minIndex() + , chapter.maxIndex()) + paragraph .= (paragraph = "" ? "" : "`n") + . chapter[numberOfParagraph] + } + return paragraph + } + + getSentence(dataProvider, count=1) { + sentence := "" + loop %count% { + paragraph := this.getParagraph(dataProvider, 1) + paragraph := RegExReplace(paragraph, "\.(?=\s*?\w)", ".`n") + paragraph := RegExReplace(paragraph, "!(?=\s*?\w)", "!`n") + paragraph := RegExReplace(paragraph, "\?(?=\s*?\w)", "?`n") + listOfSentences := StrSplit(paragraph, "`n", " `t") + numberOfSentence := Flimsydata.GetRandomInt(this.randomizer + , listOfSentences.minIndex() + , listOfSentences.maxIndex()) + sentence .= (sentence = "" ? "" : " ") + . listOfSentences[numberOfSentence] + } + return sentence + } + + getWord(dataProvider, count=1) { + word := "" + loop %count% { + sentence := this.getSentence(dataProvider, 1) + listOfWords := StrSplit(sentence, " ", " !,.?-") + numberOfWord := Flimsydata.GetRandomInt(this.randomizer + , listOfWords.minIndex() + , listOfWords.maxIndex()) + word .= (word = "" ? "" : " ") listOfWords[numberOfWord] + } + return word + } + + dump(dataProvider) { + chapterIndex := %dataProvider%.data.MinIndex() + while (chapterIndex <= %dataProvider%.data.MaxIndex()) { + par := %dataProvider%.data[chapterIndex].MinIndex() + while (par <= %dataProvider%.data[chapterIndex].MaxIndex()) { + partext := %dataProvider%.data[chapterIndex, par] + partext := RegExReplace(partext, "\.(?=\s*?\w)", ".`n") + partext := RegExReplace(partext, "!(?=\s*?\w)", "!`n") + partext := RegExReplace(partext, "\?(?=\s*?\w)", "?`n") + sent_list := StrSplit(partext, "`n", " `t") + for i, sent in sent_list { + OutputDebug % chapterIndex ".§" par "#" i ": " sent + } + par++ + } + chapterIndex++ + } + } +} diff --git a/more libs/Various1/lib/modules/flimsydata/Pattern.ahk b/more libs/Various1/lib/modules/flimsydata/Pattern.ahk new file mode 100644 index 00000000..b483b68e --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/Pattern.ahk @@ -0,0 +1,169 @@ +class Pattern extends Flimsydata.Formatter { + + static DIGITS := Flimsydata.Pattern.defineDigits() + static LC_VOWELS := Flimsydata.Pattern.defineVowelsLower() + static UC_VOWELS := Flimsydata.Pattern.defineVowelsUpper() + static LC_CONSONANTS := Flimsydata.Pattern.defineConsonatsLower() + static UC_CONSONANTS := Flimsydata.Pattern.defineConsonatsUpper() + static LC_LETTERS := Flimsydata.Pattern.defineLettersLower() + static UC_LETTERS := Flimsydata.Pattern.defineLettersUpper() + static PUNCT := Flimsydata.Pattern.definePunct() + static SPACES := Flimsydata.Pattern.defineSpaces() + static SPECIAL := Flimsydata.Pattern.defineSpecialChars() + static LETTERS := Flimsydata.Pattern.defineLetters() + static SP_LETTERS := " " Flimsydata.Pattern.defineLetters() + static ALPHA := Flimsydata.Pattern.defineAlphabetic() + static ALPHANUM := Flimsydata.Pattern.defineAlphaNumeric() + + pattern := "" + patternGroup := [] + patternGroupIndex := 1 + + defineDigits() { + return "0123456789" + } + + defineVowelsLower() { + return "aeiou" + } + + defineVowelsUpper() { + StringUpper vowelsUpper, % Flimsydata.Pattern.defineVowelsLower() + return vowelsUpper + } + + defineConsonatsLower() { + return "bcdfghjklmnpqrstvwxyz" + } + + defineConsonatsUpper() { + StringUpper consonantsUpper, % Flimsydata.Pattern.defineConsonatsLower() + return consonantsUpper + } + + defineLettersLower() { + return Flimsydata.Pattern.defineVowelsLower() + . Flimsydata.Pattern.defineConsonatsLower() + } + + defineLettersUpper() { + return Flimsydata.Pattern.defineVowelsUpper() + . Flimsydata.Pattern.defineConsonatsUpper() + } + + definePunct() { + return ",.-;:`´'!?""" + } + + defineSpaces() { + return " `t`n`r" + } + + defineSpecialChars() { + return "§$%&/()=\}][{@_#+*~<|>" + } + + defineLetters() { + return Flimsydata.Pattern.defineLettersLower() + . Flimsydata.Pattern.defineLettersUpper() + } + + defineAlphabetic() { + return Flimsydata.Pattern.defineLetters() + . Flimsydata.Pattern.definePunct() + . Flimsydata.Pattern.defineSpecialChars() + } + + defineAlphaNumeric() { + return Flimsydata.Pattern.defineAlphabetic() + . Flimsydata.Pattern.defineDigits() + } + + getPattern(pattern) { + this.pattern := this.pickPattern(pattern) + this.findSubSetsOfElements() + this.patternGroupIndex := 1 + handleEscapeChar := false + randomPatternString := "" + loop % StrLen(this.pattern) { + patternChar := SubStr(this.pattern, A_Index, 1) + if (handleEscapeChar) { + randomPatternString .= patternChar + handleEscapeChar := false + continue + } else if (patternChar == "%") { + randomPatternString .= this.getRandomGroup() + continue + } else if (patternChar == "\") { + handleEscapeChar := true + continue + } else { + setForPatternChar := this.getSubSetForPatternChar(patternChar) + } + randomIndex := Flimsydata.getRandomInt(this.randomizer, 1 + , StrLen(setForPatternChar)) + randomPatternString .= SubStr(setForPatternChar, randomIndex, 1) + } + return randomPatternString + } + + getPatternForRandomizer(randomizer, pattern) { + this.randomizer := randomizer + return this.getPattern(pattern) + } + + pickPattern(pattern) { + if (pattern.maxIndex() == "") { + return pattern + } + randomPatternIndex := Flimsydata.getRandomInt(this.randomizer + , pattern.minIndex() + , pattern.maxIndex()) + return pattern[randomPatternIndex] + } + + findSubSetsOfElements() { + subSetsOfElements := [] + p := 1 + while (p := RegExMatch(this.pattern, "`%\[(.+?)\]", $, p)) { + subSetsOfElements.push(StrSplit($1, ",", " `t``")) + this.pattern := (this.pattern).cutAt(p+1, StrLen($)-1) + p++ + } + this.patternGroup := subSetsOfElements + } + + getRandomGroup() { + setForPatternChar := this.patternGroup[this.patternGroupIndex++] + randomPatternGroupIndex := Flimsydata.getRandomInt(this.randomizer + , setForPatternChar.minIndex() + , setForPatternChar.maxIndex()) + return setForPatternChar[randomPatternGroupIndex] + } + + getSubSetForPatternChar(patternChar) { + subSetForPatternChar + := (patternChar == "v" ? Flimsydata.Pattern.LC_VOWELS + : patternChar == "V" ? Flimsydata.Pattern.UC_VOWELS + : patternChar == "c" ? Flimsydata.Pattern.LC_CONSONANTS + : patternChar == "C" ? Flimsydata.Pattern.UC_CONSONANTS + : patternChar == "l" ? Flimsydata.Pattern.LC_LETTERS + : patternChar == "L" ? Flimsydata.Pattern.UC_LETTERS + : patternChar == "x" ? Flimsydata.Pattern.LETTERS + : patternChar == "X" ? Flimsydata.Pattern.SP_LETTERS + : patternChar == "#" ? Flimsydata.Pattern.DIGITS + : patternChar == "." ? Flimsydata.Pattern.PUNCT + : patternChar == "$" ? Flimsydata.Pattern.SPECIAL + : patternChar == "a" ? Flimsydata.Pattern.ALPHA + : patternChar == "A" ? Flimsydata.Pattern.ALPHANUM + : patternChar == "*" ? Flimsydata.Pattern.ALPHANUM + . Flimsydata.Pattern.SPACES + : "") + if (!subSetForPatternChar) { + throw Exception("Invalid pattern char at " + . A_Index ": '" patternChar "' within '" + . this.pattern "'") + } + return subSetForPatternChar + } +} diff --git a/more libs/Various1/lib/modules/flimsydata/Postalcode.ahk b/more libs/Various1/lib/modules/flimsydata/Postalcode.ahk new file mode 100644 index 00000000..425a1e6d --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/Postalcode.ahk @@ -0,0 +1,12 @@ +class Postalcode extends Flimsydata.Formatter { + + get(dataProvider, locale="de_DE") { + country := Flimsydata.getCountry(locale) + postalCodeForCountryFunc := %dataProvider%["get" country] + if (!postalCodeForCountryFunc) { + throw Exception("Provider '" dataProvider + . "' missing function for country: " country) + } + return postalCodeForCountryFunc.(this, this.randomizer) + } +} diff --git a/more libs/Various1/lib/modules/flimsydata/Simple.ahk b/more libs/Various1/lib/modules/flimsydata/Simple.ahk new file mode 100644 index 00000000..52c2beac --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/Simple.ahk @@ -0,0 +1,79 @@ +class Simple extends Flimsydata.Formatter { + + static CHARS_LOWERCASE := "abcdefghijklmnopqrstuvwxyz" + static CHARS_UPPERCASE := "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + static CHARS_MIXED := Flimsydata.Simple.CHARS_LOWERCASE + . Flimsydata.Simple.CHARS_UPPERCASE + + getInt(from=1, to=10) { + if (from > to) { + throw Exception("'from'-value (" from ") mustn't be " + . "greatern than 'to'-value (" to ")") + } + return Flimsydata.getRandomInt(this.randomizer, from, to) + } + + getFloat(from=1.0, to=10.0, format="") { + if (from > to) { + throw Exception("'from'-value (" from ") mustn't be " + . "greatern than 'to'-value (" to ")") + } + randomNumber := from + this.randomizer.generateRandomReal2() + * (to - from) + if (format == "") { + format := A_FormatFloat + } + currentFloatFormat := A_FormatFloat + SetFormat Float, %format% + randomNumber += 0.0 + SetFormat Float, %currentFloatFormat% + return randomNumber + } + + getUpperCaseString(minLength, maxLength="") { + return this.getString(minLength, maxLength, this.CHARS_UPPERCASE) + } + + getLowerCaseString(minLength, maxLength="") { + return this.getString(minLength, maxLength, this.CHARS_LOWERCASE) + } + + getMixedString(minLength, maxLength="") { + return this.getString(minLength, maxLength) + } + + getString(minLength, maxLength, chars="") { + if (chars == "") { + chars := this.CHARS_MIXED + } + if (maxLength + 0) { + length := this.getInt(minLength, maxLength) + } else { + length := minLength + } + randomString := "" + loop %length% { + randomString .= SubStr(chars, this.getInt(1, StrLen(chars)), 1) + } + return randomString + } + + getTimeStamp(fromTimeStamp, toTimeStamp) { + return this.getCalendar(fromTimeStamp, toTimeStamp).get() + } + + getDate(fromDate, toDate) { + return this.getCalendar(fromDate, toDate).asDate() + } + + getTime(fromTime=000000, toTime=235959) { + return this.getCalendar(16010101 fromTime, 16010101 toTime).asTime() + } + + getCalendar(fromTimeStamp, toTimeStamp) { + fromLongTimeStamp := new Calendar(fromTimeStamp).asLong() + toLongTimeStamp := new Calendar(toTimeStamp).asLong() + return new Calendar().setAsLong(this.GetInt(fromLongTimeStamp + , toLongTimeStamp)) + } +} diff --git a/more libs/Various1/lib/modules/flimsydata/dataprovider/PFileext.ahk b/more libs/Various1/lib/modules/flimsydata/dataprovider/PFileext.ahk new file mode 100644 index 00000000..bcd1d0e1 --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/dataprovider/PFileext.ahk @@ -0,0 +1,14 @@ +class PFileext extends Flimsydata.Provider { + + static data := [[ "txt" + , "exe" + , "html" + , "pdf" + , "ahk" + , "md" + , "doc" + , "rtf" + , "jpeg" + , "mp3" + , "png" ]] +} diff --git a/more libs/Various1/lib/modules/flimsydata/dataprovider/PFilename.ahk b/more libs/Various1/lib/modules/flimsydata/dataprovider/PFilename.ahk new file mode 100644 index 00000000..afd8bd57 --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/dataprovider/PFilename.ahk @@ -0,0 +1,76 @@ +class PFilename extends Flimsydata.Provider { + + ; Assoziationen zu 'Dokument' + static data := [[ "Adelsbrief" + , "Adelsdiplom" + , "Aktennotiz" + , "Aktienurkunde" + , "Aktienzertifikat" + , "Anfuegung" + , "Anhang" + , "Anlage" + , "Archivale" + , "Arztbrief" + , "Aufzeichnung" + , "Aussendung" + , "Autograf" + , "Autograph" + , "Bayerischer Geograph" + , "Befundbericht" + , "Beleg" + , "Bemerkung" + , "Bericht" + , "Bescheid" + , "Buchung" + , "Bulletin" + , "Bussenzettel" + , "Chronik" + , "Communiquee" + , "Diplom" + , "Diplomurkunde" + , "Dokument" + , "Einreiseerlaubnis" + , "Einzahlungsschein" + , "Entlassungsbrief" + , "Erlagschein" + , "Fahrausweis" + , "Fuehrerschein" + , "Geschichte" + , "Handelspapier" + , "Kolophon" + , "Kommunikee" + , "Konnossement" + , "Kurrende" + , "L-Schein" + , "Letzter_Wille" + , "Manuskript" + , "NV-Bescheinigung" + , "Nachlassdokument" + , "Nichtveranlagungsbescheinigung" + , "Ostfraenkische_Voelkertafel" + , "Passvermerk" + , "Presseaussendung" + , "Presseerklaerung" + , "Rapport" + , "Rundbrief" + , "Rundschreiben" + , "Schlussformel" + , "Schriftstueck" + , "Seeladeschein" + , "Strafmandat" + , "Strafzettel" + , "Unterlage" + , "Urkunde" + , "Verfasseranmerkung" + , "Visum" + , "Waffenpass" + , "Waffenschein" + , "Waffentragbewilligung" + , "Wertpapier" + , "Wertschrift" + , "letztwillige Verfuegung" + , "nicht lebendes Objekt" + , "unbelebtes Objekt" + , "Ueberweisungsschein" ]] +} + diff --git a/more libs/Various1/lib/modules/flimsydata/dataprovider/PFoldername.ahk b/more libs/Various1/lib/modules/flimsydata/dataprovider/PFoldername.ahk new file mode 100644 index 00000000..5624893a --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/dataprovider/PFoldername.ahk @@ -0,0 +1,57 @@ +class PFoldername extends Flimsydata.Provider { + + ; Assoziationen zu 'Information' + static data := [[ "Abstraktion" + , "Ammenmaerchen" + , "Anzeichen" + , "Auflistung" + , "Aufschneiderei" + , "Aufstellung" + , "Aufzaehlung" + , "Ausgangsdaten" + , "Auskunft" + , "Auskunftsschalter" + , "Basisinformationen" + , "Bekanntmachung" + , "Bericht" + , "Berichterstattung" + , "Bibliothek" + , "Bluff" + , "Botschaft" + , "Buecherei" + , "Daten" + , "Datenansammlung" + , "Datenmaterial" + , "Datenschema" + , "Datenuebertragung" + , "Fakten" + , "Grunddaten" + , "Hinweisschild" + , "Hinweistafel" + , "Information" + , "Informationstafel" + , "Informationsuebertragung" + , "Karte" + , "Kommunikationsdaten" + , "Landkarte" + , "Metadaten" + , "Metainformationen" + , "Nachrichtengehalt" + , "Nachrichteninhalt" + , "Omen" + , "Ordnungsprinzip" + , "Plan" + , "Schalter" + , "Schema" + , "Statistik" + , "System" + , "Totalerhebung" + , "Verbindungsdaten" + , "Verkehrsdaten" + , "Vollerhebung" + , "Vorbedeutung" + , "Wissen" + , "doppelt" + , "mehrfach" + , "pleonastisch" ]] +} diff --git a/more libs/Various1/lib/modules/flimsydata/dataprovider/PGivenname.ahk b/more libs/Various1/lib/modules/flimsydata/dataprovider/PGivenname.ahk new file mode 100644 index 00000000..0030c479 --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/dataprovider/PGivenname.ahk @@ -0,0 +1,8 @@ +class PGivenname extends Flimsydata.Provider { + static data := {"de": ["Harry" + , "Jochen" + , "Benjamin" + , "Andree" + , "Axel" + , "Klaus-Peter"]} +} diff --git a/more libs/Various1/lib/modules/flimsydata/dataprovider/PLorem.ahk b/more libs/Various1/lib/modules/flimsydata/dataprovider/PLorem.ahk new file mode 100644 index 00000000..133dd173 --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/dataprovider/PLorem.ahk @@ -0,0 +1,11 @@ +class PLorem extends Flimsydata.Provider { + + static data := [["Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + , "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat." + , "Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi." + , "Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat." + , "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis." + , "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. Sanctus sea sed takimata ut vero voluptua. Est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat." + , "Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."]] + +} diff --git a/more libs/Various1/lib/modules/flimsydata/dataprovider/PMetasyntax.ahk b/more libs/Various1/lib/modules/flimsydata/dataprovider/PMetasyntax.ahk new file mode 100644 index 00000000..58eb025b --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/dataprovider/PMetasyntax.ahk @@ -0,0 +1,19 @@ +class PMetasyntax extends Flimsydata.Provider { + + static data := [["foo" + , "bar" + , "baz" + , "qux" + , "Quux" + , "corge" + , "grault" + , "garply" + , "Waldo" + , "Fred" + , "plugh" + , "xyzzy" + , "thud" + , "" + , ""]] +} + diff --git a/more libs/Various1/lib/modules/flimsydata/dataprovider/PPostalcode.ahk b/more libs/Various1/lib/modules/flimsydata/dataprovider/PPostalcode.ahk new file mode 100644 index 00000000..28dcbf2e --- /dev/null +++ b/more libs/Various1/lib/modules/flimsydata/dataprovider/PPostalcode.ahk @@ -0,0 +1,21 @@ +class PPostalcode extends Flimsydata.Provider { + + getDE(randomizer) { + 1stChar := Flimsydata.getRandomInt(randomizer, 0, 9) + 2ndTo4thChar := Flimsydata.getRandomInt(randomizer, 1000, 9999) + return 1stChar . 2ndTo4thChar + } + + getUK(randomizer) { + return Flimsydata.getRandomPattern(randomizer, ["L#\ #LL" + , "L##\ #LL" + , "L#L\ #LL" + , "LL#\ #LL" + , "LL##\ #LL" + , "LL#L\ #LL"]) + } + + getNL(randomizer) { + return Flimsydata.getRandomInt(randomizer, 1000, 9999) + } +} diff --git a/more libs/Various1/lib/modules/math/MathHelper.ahk b/more libs/Various1/lib/modules/math/MathHelper.ahk new file mode 100644 index 00000000..42f295f3 --- /dev/null +++ b/more libs/Various1/lib/modules/math/MathHelper.ahk @@ -0,0 +1,54 @@ +class MathHelper { + + __new() { + throw Exception("Instatiation of class '" this.__Class + . "' ist not allowed", -1) + } + + floorCeil(pstrType, pnFloorCeil, p*) { + for i, v in p { + if (v.maxIndex() != "") { + for j, v1 in v { + if (!IsObject(v1)) { + if v1 is not number + { + throw Exception("Invalid data type", -1, "<" v1 ">") + } + if ((pstrType = "ceil" && v1 > pnFloorCeil) + || (pstrType = "floor" && v1 < pnFloorCeil)) { + pnFloorCeil := v1 + } + } else { + pnFloorCeil := MathHelper.floorCeil(pstrType + , pnFloorCeil, v1) + } + } + } else { + if v is not number + { + throw Exception("Invalid data type", -1, "<" v ">") + } + if ((pstrType = "ceil" && v > pnFloorCeil) + || (pstrType = "floor" && v < pnFloorCeil)) { + pnFloorCeil := v + } + } + } + return pnFloorCeil + } + + GCDEuklid(pnValue1, pnValue2) { ; ahklint-ignore: W007 + if (pnValue1 < pnValue2) { + Math.swap(pnValue1, pnValue2) + } + return MathHelper.GCDEuklidRecursion(pnValue1, pnValue2) + } + + GCDEuklidRecursion(pnValue1, pnValue2) { ; ahklint-ignore: W007 + _remain := Mod(pnValue1, pnValue2) + if (_remain > 0) { + return MathHelper.GCDEuklidRecursion(pnValue2, _remain) + } + return pnValue2 + } +} diff --git a/more libs/Various1/lib/modules/math/PrimeFactorProduct.ahk b/more libs/Various1/lib/modules/math/PrimeFactorProduct.ahk new file mode 100644 index 00000000..410b7f67 --- /dev/null +++ b/more libs/Various1/lib/modules/math/PrimeFactorProduct.ahk @@ -0,0 +1,65 @@ +class PrimeFactorProduct { + + factorList := [] + numberOfFactors := 0 + + __new(factor="") { + if (factor != "") { + this.factorList.push(factor) + this.numberOfFactors := 1 + } + return this + } + + count() { + return this.numberOfFactors + } + + add(piFactor) { + this.factorList.push(piFactor) + this.numberOfFactors++ + return this.factorList.maxIndex() + } + + getList() { + return this.factorList + } + + toString(compactStyle=false, powerSymbol="**") { + factorListAsString := "" + if (!compactStyle) { + while (A_Index <= this.factorList.maxIndex()) { + factorListAsString .= (factorListAsString = "" ? "" : "*") + . this.factorList[A_Index] + } + } else { + numberOfSameFactors := 0 + previousFactor := this.factorList[1] + while (A_Index <= this.factorList.maxIndex()) { + factor := this.factorList[A_Index] + if (A_Index == 1 || factor == previousFactor) { + numberOfSameFactors++ + } else { + factorListAsString .= PrimeFactorProduct + .factorGroupAsString(factorListAsString + , previousFactor, numberOfSameFactors, powerSymbol) + previousFactor := factor + numberOfSameFactors := 1 + } + } + factorListAsString .= PrimeFactorProduct + .factorGroupAsString(factorListAsString + , previousFactor, numberOfSameFactors, powerSymbol) + } + return factorListAsString + } + + factorGroupAsString(factorListAsString, previousFactor, numberOfSameFactors + , powerSymbol) { + return (factorListAsString == "" ? "" : "*") + . previousFactor + . (numberOfSameFactors > 1 + ? powerSymbol numberOfSameFactors : "") + } +} + diff --git a/more libs/Various1/lib/modules/optparser/Boolean.ahk b/more libs/Various1/lib/modules/optparser/Boolean.ahk new file mode 100644 index 00000000..93e95741 --- /dev/null +++ b/more libs/Various1/lib/modules/optparser/Boolean.ahk @@ -0,0 +1,29 @@ +class Boolean extends OptParser.Option { + value := true + + __new(option1Dash, option2Dashes, optionClass=0, optionProperty="" + , description="", flags=0, initValue=false) { + base.__new(option1Dash, option2Dashes, optionClass, optionProperty + , "", description, flags | OptParser.OPT_NOARG, true + , initValue) + return this + } + + set(argument, op) { + if (RegExMatch(argument, "--(no-?)?(\w+)", $)) { + base.set("--" $2, op) + if ($1 != "") { + this.optionClass[this.optionProperty] + := !this.optionClass[this.optionProperty] + } + return StrLen(this.optionClass[this.optionProperty]) + } else { + return base.set(argument, op) + } + } + + getLongMatch() { + return "^--" (this.flags & OptParser.OPT_NEG ? "(no-?)?" : "") + . SubStr(this.option2Dashes, 3) "(=.*)?$" + } +} diff --git a/more libs/Various1/lib/modules/optparser/Callback.ahk b/more libs/Various1/lib/modules/optparser/Callback.ahk new file mode 100644 index 00000000..e76d1cad --- /dev/null +++ b/more libs/Various1/lib/modules/optparser/Callback.ahk @@ -0,0 +1,35 @@ +class Callback extends OptParser.Option { + + pFunc := 0 + + __new(option1Dash, option2Dashes, optionClass, optionProperty + , functionName, argumentDescription="", description="" + , flags=1) { + base.__new(option1Dash, option2Dashes, optionClass, optionProperty + , argumentDescription, description, flags, "", "") + if (!IsFunc(functionName)) { + throw Exception("Function not found: " functionName) + } + this.pFunc := Func(functionName) + return this + } + + set(argument, op) { + no_opt := "" + if (RegExMatch(argument, "--(no-?)?(\w+)", $)) { + res := base.set("--" $2, op) + no_opt := $1 + } else { + res := base.set(argument, op) + } + value := this.pFunc.(this.optionClass[this.optionProperty] + , no_opt) + this.optionClass[this.optionProperty] := value + return StrLen(value) + } + + getLongMatch() { + return "^--" (this.flags & OptParser.OPT_NEG ? "(no-?)?" : "") + . SubStr(this.option2Dashes, 3) "(=.*)?$" + } +} diff --git a/more libs/Various1/lib/modules/optparser/Counter.ahk b/more libs/Various1/lib/modules/optparser/Counter.ahk new file mode 100644 index 00000000..b985e5e3 --- /dev/null +++ b/more libs/Various1/lib/modules/optparser/Counter.ahk @@ -0,0 +1,28 @@ +class Counter { + + static flags := OptParser.OPT_NOARG + optionClass := 0 + description := "" + option1Dash := "-" + + __new(optionClass, optionProperty="", description="" + , initialValue=1) { + this.optionClass := optionClass + this.optionProperty := optionProperty + this.description := description + this.optionClass[this.optionProperty] := initialValue + + return this + } + + set(argumentDescription, op) { + value := argumentDescription.SubStr(2) + this.optionClass[this.optionProperty] := value + op.iPtr += 1 + return value + } + + getShortMatch() { + return "^-[0-9]+$" + } +} diff --git a/more libs/Various1/lib/modules/optparser/Generic.ahk b/more libs/Various1/lib/modules/optparser/Generic.ahk new file mode 100644 index 00000000..86e68ddb --- /dev/null +++ b/more libs/Various1/lib/modules/optparser/Generic.ahk @@ -0,0 +1,41 @@ +class Generic { + + flags := OptParser.OPT_NOARG | OptParser.OPT_HIDDEN + optionsClass := 0 + regularExpression := "" + option2Dashes := "--" + value := "" + + __new(regularExpression, optionClass, optionProperty="", flags=0) { + this.optionsClass := optionClass + this.optionProperty := optionProperty + this.regularExpression := regularExpression + this.flags := this.flags | flags + return this + } + + set(genericOption, op) { + genericOptionWithoutDashes := genericOption.SubStr(3) + op.iPtr += 1 + this.setValue(genericOptionWithoutDashes) + return StrLen(this.optionsClass[this.optionProperty]) + } + + setValue(value) { + value := RegExReplace(value, "i)^no-?", "!", "", 1) + if (this.flags & OptParser.OPT_MULTIPLE) { + if (!IsObject(this.optionsClass[this.optionProperty])) { + this.optionsClass[this.optionProperty] := [] + } + this.optionsClass[this.optionProperty].Push(value) + } else { + this.optionsClass[this.optionProperty] := value + } + } + + getLongMatch() { + RegExMatch(this.regularExpression, "^([imsxADJUXPSC]+\))?(.*)", $) + return $1 "^--" (this.flags & OptParser.OPT_NEG ? "(no-?)?" : "") + . $2 "$" + } +} diff --git a/more libs/Various1/lib/modules/optparser/Group.ahk b/more libs/Various1/lib/modules/optparser/Group.ahk new file mode 100644 index 00000000..eb561850 --- /dev/null +++ b/more libs/Various1/lib/modules/optparser/Group.ahk @@ -0,0 +1,12 @@ +class Group { + description := "" + + __new(description) { + this.description := description + return this + } + + usage() { + return this.description + } +} diff --git a/more libs/Various1/lib/modules/optparser/Line.ahk b/more libs/Various1/lib/modules/optparser/Line.ahk new file mode 100644 index 00000000..e4b327cf --- /dev/null +++ b/more libs/Various1/lib/modules/optparser/Line.ahk @@ -0,0 +1,59 @@ +class Line { + leftText := "" + rightText := "" + leftMargin := 0 + rightMargin := 0 + indentWidth := 0 + + __new(leftText, rightText + , leftMargin=26, rightMargin=60, indentWidth=4) { + this.leftText := leftText + this.rightText := rightText + this.leftMargin := leftMargin + this.rightMargin := rightMargin + this.indentWidth := indentWidth + return this + } + + usage() { + leftText := " ".repeat(this.indentWidth) this.leftText + rightText := this.rightText + usage := "" + if (StrLen(leftText) > this.leftMargin-1) { + usage := this.leftTextDoesNotFitInMargin(leftText, rightText) + } else { + usage := this.leftTextFitsInMargin(leftText, rightText) + } + return usage + } + + leftTextDoesNotFitInMargin(leftText, rightText) { + if (rightText != "") { + if (rightText.minIndex() == "") { + usage := leftText "`n" + . rightText.wrap(this.rightMargin + , " ".repeat(this.leftMargin)) + } else { + usage := leftText "`n" + . Arrays.wrap(rightText, this.rightMargin + , " ".repeat(this.leftMargin)) + } + } else { + usage := leftText + } + return usage + } + + leftTextFitsInMargin(leftText, rightText) { + if (rightText.minIndex() == "") { + usage := leftText.padRight(this.leftMargin-1) + . rightText.wrap(this.rightMargin + , " ".repeat(this.leftMargin), " ", true) + } else { + usage := leftText.padRight(this.leftMargin-1) + . Arrays.wrap(rightText, this.rightMargin + , " ".repeat(this.leftMargin), " ", true) + } + return usage + } +} diff --git a/more libs/Various1/lib/modules/optparser/Option.ahk b/more libs/Various1/lib/modules/optparser/Option.ahk new file mode 100644 index 00000000..c550436d --- /dev/null +++ b/more libs/Various1/lib/modules/optparser/Option.ahk @@ -0,0 +1,116 @@ +class Option { + option1Dash := "" + option2Dashes := "" + optionClass := 0 + argumentDescription := "" + description := "" + flags := 0 + value := "" + defaultValue := "" + + __new(option1Dash, option2Dashes, optionClass, optionProperty + , argumentDescription="", description="", flags=0 + , defaultValue=0, initialValue="") { + this.option1Dash := (option1Dash != 0 ? "-" option1Dash : "") + this.option2Dashes := (option2Dashes != "" + ? "--" option2Dashes + : "") + this.optionClass := optionClass + this.optionProperty := optionProperty + this.argumentDescription := (!(flags | OptParser.OPT_NOARG) + && argumentDescription = "" ? "..." : argumentDescription) + this.description := description + this.flags := flags + this.defaultValue := defaultValue + this.optionClass[this.optionProperty] := initialValue + return this + } + + usage() { + if (this.flags & OptParser.OPT_HIDDEN) { + return "" + } else { + return new OptParser.Line(this.optionUsage() + , this.description).usage() + } + } + + optionUsage() { + return this.option1Dash (this.option1Dash != "" + && this.option2Dashes != "" ? ", " : "") + . (this.option2Dashes != "" + && this.flags & OptParser.OPT_NEG_USAGE + ? this.option2Dashes.replace("--", "--[no]") + : this.option2Dashes) this.argumentUsage() + } + + argumentUsage() { + if (this.flags & OptParser.OPT_NOARG) { + argUsage := "" + } else { + argNameInBrackets := "<" this.argumentDescription ">" + if (this.flags & OptParser.OPT_OPTARG) { + argUsage := "[" + . (this.option2Dashes != "" ? "=" : "") + . argNameInBrackets "]" + } else { + argUsage := " " argNameInBrackets + } + } + return argUsage + } + + set(argument, optionParser) { + if (this.defaultValue != "" + && (!(this.flags & OptParser.OPT_MULTIPLE) + || this.value = "")) { + this.setValue(this.defaultValue) + } + if (this.flags & OptParser.OPT_ARGREQ + || this.flags & OptParser.OPT_OPTARG) { + RegExMatch(argument + , "iJ)^(-\w(?P.+))|(--[\w-]+?=(?P.+))$" + , group) + if (groupArgument != "") { + this.setValue(groupArgument) + } else if (optionParser.iPtr < optionParser.argumentList + .maxIndex()) { + nextArgument + := optionParser.argumentList[optionParser.iPtr + 1] + if (nextArgument != "" + && SubStr(nextArgument, 1, 1) != "-" + || (this.flags & OptParser.OPT_ALLOW_SINGLE_DASH + && nextArgument == "-")) { + optionParser.iPtr += 1 + this.setValue(nextArgument) + } + } + if ((this.flags & OptParser.OPT_ARGREQ) + && this.optionClass[this.optionProperty] = "") { + throw Exception("Missing argument '" + . this.argumentDescription "'") + } + } + optionParser.iPtr += 1 + return StrLen(this.optionClass[this.optionProperty]) + } + + setValue(value) { + if (this.flags & OptParser.OPT_MULTIPLE) { + if (!IsObject(this.optionClass[this.optionProperty])) { + this.optionClass[this.optionProperty] := [] + } + this.optionClass[this.optionProperty].Push(value) + } else { + this.optionClass[this.optionProperty] := value + } + } + + getLongMatch() { + return "^" this.option2Dashes "(=.*)?$" + } + + getShortMatch() { + return "^" this.option1Dash "(=.*)?$" + } +} diff --git a/more libs/Various1/lib/modules/optparser/RcFile.ahk b/more libs/Various1/lib/modules/optparser/RcFile.ahk new file mode 100644 index 00000000..64394ca0 --- /dev/null +++ b/more libs/Various1/lib/modules/optparser/RcFile.ahk @@ -0,0 +1,21 @@ +class RcFile extends OptParser.Option { + + __new(option1Dash, option2Dashes, optionClass, optionProperty="" + , argumentDescription="", description="", flags=1 + , value="", initialValue="") { + base.__new(option1Dash, option2Dashes, optionClass, optionProperty + , argumentDescription, description, flags, value, initialValue) + return this + } + + set(argument, optionParser) { + result := base.set(argument, optionParser) + if (optionParser.useEnvVar) { + argsFromRcFile := optionParser + .processRcFile(this.optionClass[this.optionProperty]) + optionParser.argumentList.insertAt(optionParser.iPtr + , argsFromRcFile*) + } + return result + } +} diff --git a/more libs/Various1/lib/modules/optparser/String.ahk b/more libs/Various1/lib/modules/optparser/String.ahk new file mode 100644 index 00000000..68a8c642 --- /dev/null +++ b/more libs/Various1/lib/modules/optparser/String.ahk @@ -0,0 +1,14 @@ +class String extends OptParser.Option { + + __new(option1Dash, option2Dashes, optionClass, optionProperty="" + , argumentDescription="", description="", flags=1 + , value="", initialValue="") { + base.__new(option1Dash, option2Dashes, optionClass, optionProperty + , argumentDescription, description, flags, value, initialValue) + return this + } + + getShortMatch() { + return "^" this.option1Dash ".*$" + } +} diff --git a/more libs/Various1/lib/modules/pager/actions.ahk b/more libs/Various1/lib/modules/pager/actions.ahk new file mode 100644 index 00000000..cfc2f168 --- /dev/null +++ b/more libs/Various1/lib/modules/pager/actions.ahk @@ -0,0 +1,37 @@ +pagerActionQuit() { + if (A_IsPaused) { + Ansi.write(Ansi.restoreCursorPosition() Ansi.reset() + . Ansi.eraseLine()) + Ansi.flush() + Ansi.flushInput() + } + exitapp +} + +pagerActionNextPage() { + Pause Off + Ansi.write(Ansi.restoreCursorPosition() Ansi.reset() + . Ansi.eraseLine()) + Ansi.flush() + Console.refreshBufferInfo() + Pager.scrollOneLine := false + return +} + +pagerActionContinue() { + Pause off + Ansi.write(Ansi.restoreCursorPosition() Ansi.reset() + . Ansi.eraseLine()) + Ansi.flush() + Pager.enablePager := false + Console.refreshBufferInfo() + return +} + +pagerActionNextLine() { + Pause off + Ansi.write(Ansi.restoreCursorPosition() Ansi.reset() + . Ansi.eraseLine()) + Ansi.flush() + Pager.scrollOneLine := true +} diff --git a/more libs/Various1/lib/modules/string/HyphenationHelper.ahk b/more libs/Various1/lib/modules/string/HyphenationHelper.ahk new file mode 100644 index 00000000..36b41ee4 --- /dev/null +++ b/more libs/Various1/lib/modules/string/HyphenationHelper.ahk @@ -0,0 +1,123 @@ +class HyphenationHelper { + + static CONSONANTS := "bcdfghjklmnpqrstvwxz" + static VOCALS := "aeiouyäöü" + static CLUSTERED_CONSONANTS := "(sch|ch|ck|ph|rf|sh|th)" + static CLUSTERED_VOCALS := "(au|eu|ie|ei|äu)" + + static MIDDLE_DOT := "·" ; Chr(183) + static HYPHEN_LINE := "-" + + static hyphen := HyphenationHelper.MIDDLE_DOT + + static wordToBeHyphenated := "" + static consonantAtLeft := 0 + static consonantAt := 0 + static vocalAt := 0 + + hyphenate(wordToBeHyphenated, hyphenateAt=-1, hyphenChar="") { + HyphenationHelper.wordToBeHyphenated := wordToBeHyphenated + startAt := (hyphenateAt > 0 ? hyphenateAt : 1) + HyphenationHelper.setHyphen(hyphenateAt, hyphenChar) + loop { + startAt := HyphenationHelper.findPositionOfNextVocal(startAt) + HyphenationHelper.findPositionOfConsonantAtLeft() + if (HyphenationHelper.distanceToConsonantIsGreaterThanTwo()) { + startAt := HyphenationHelper.hasClusteredConsonants(startAt) + } else if (HyphenationHelper.distanceToVocalIsGreaterThanThree()) { + startAt := HyphenationHelper.hasClusteredVocals(startAt) + } + if (A_Index >= StrLen(wordToBeHyphenated)) { + throw Exception("Infinite hyphenation loop: " + . wordToBeHyphenated) + } + } until (hyphenateAt > 0 + || startAt >= StrLen(HyphenationHelper.wordToBeHyphenated)) + if (hyphenateAt > 0 + && HyphenationHelper.wordToBeHyphenated = wordToBeHyphenated) { + throw Exception("Could not be hyphenated up to position " + . hyphenateAt ": " wordToBeHyphenated) + } + return HyphenationHelper.wordToBeHyphenated + } + + setHyphen(hyphenateAt, hyphenChar) { + HyphenationHelper.hyphen := (hyphenChar != "" ? hyphenChar + : (hyphenateAt > 0 ? HyphenationHelper.HYPHEN_LINE + : HyphenationHelper.MIDDLE_DOT)) + } + + findPositionOfNextVocal(startAt) { + HyphenationHelper.vocalAt + := RegExMatch(HyphenationHelper.wordToBeHyphenated + , "[" HyphenationHelper.VOCALS "]",, startAt) + return HyphenationHelper.vocalAt + 1 + } + + findPositionOfConsonantAtLeft() { + HyphenationHelper.consonantAt := HyphenationHelper.vocalAt + loop { + HyphenationHelper.consonantAtLeft + := SubStr(HyphenationHelper.wordToBeHyphenated + , HyphenationHelper.consonantAt-=1, 1) + } until (InStr(HyphenationHelper.CONSONANTS + , HyphenationHelper.consonantAtLeft)) + } + + hasClusteredConsonants(startAt) { + c2 := SubStr(HyphenationHelper.wordToBeHyphenated + , HyphenationHelper.consonantAt-1, 1) + if (c2 != HyphenationHelper.hyphen + && c2 != HyphenationHelper.HYPHEN_LINE) { + c3 := (c2 HyphenationHelper.consonantAtLeft = "ch" + && SubStr(HyphenationHelper.wordToBeHyphenated + , HyphenationHelper.consonantAt-2, 1) = "s" + ? "s" + : "") ; check for 'sch' + syllable := c3 c2 HyphenationHelper.consonantAtLeft + if (RegExMatch(syllable, HyphenationHelper.CLUSTERED_CONSONANTS)) { + HyphenationHelper.consonantAt-=StrLen(syllable)-1 + } + HyphenationHelper.wordToBeHyphenated + := SubStr(HyphenationHelper.wordToBeHyphenated + , 1, HyphenationHelper.consonantAt-1) + . HyphenationHelper.hyphen + . SubStr(HyphenationHelper.wordToBeHyphenated + , HyphenationHelper.consonantAt) + } + return startAt + 1 + } + + hasClusteredVocals(startAt) { + v1 := SubStr(HyphenationHelper.wordToBeHyphenated + , HyphenationHelper.vocalAt-1, 1) + v2 := SubStr(HyphenationHelper.wordToBeHyphenated + , HyphenationHelper.vocalAt-2, 1) + if (RegExMatch(v2 v1, HyphenationHelper.CLUSTERED_VOCALS)) { + HyphenationHelper.wordToBeHyphenated + := SubStr(HyphenationHelper.wordToBeHyphenated + , 1, HyphenationHelper.vocalAt-1) + . HyphenationHelper.hyphen + . SubStr(HyphenationHelper.wordToBeHyphenated + , HyphenationHelper.vocalAt) + } + return startAt + 1 + } + + distanceToConsonantIsGreaterThanTwo() { + return HyphenationHelper.consonantAt > 2 + } + + distanceToVocalIsGreaterThanThree() { + return HyphenationHelper.vocalAt > 3 + } + + getVocalAt() { + return HyphenationHelper.vocalAt + } + + getConsonantAt() { + return HyphenationHelper.consonantAt + } +} +; vim:tw=0:ts=4:sts=4:sw=4:noet:ft=autohotkey:nobomb diff --git a/more libs/Various1/lib/modules/string/PrintfHelper.ahk b/more libs/Various1/lib/modules/string/PrintfHelper.ahk new file mode 100644 index 00000000..2e9d4095 --- /dev/null +++ b/more libs/Various1/lib/modules/string/PrintfHelper.ahk @@ -0,0 +1,177 @@ +class PrintfHelper { + + static INT_TYPES := "di" + static FLOAT_TYPES := "fe" + static NUMBER_TYPES := PrintfHelper.INT_TYPES PrintfHelper.FLOAT_TYPES + static CHAR_TYPES := "cs" + static TYPES := PrintfHelper.NUMBER_TYPES PrintfHelper.CHAR_TYPES + + static placeHolderValues := [] + static placeHolderIndex := 0 + static placeHolder := {} + + printf(patternText, placeHolderValues*) { + PrintfHelper.values := Arrays.flatten(placeHolderValues) + p := 1 + PrintfHelper.placeHolderIndex := 0 + loop { + if (p := PrintfHelper.patternHasPlaceHolders(patternText, p)) { + PrintfHelper.handleZero() + replacingValue + := PrintfHelper.values[++PrintfHelper.placeHolderIndex] + replacingValue := PrintfHelper.handleGenericSize(replacingValue) + replacingValue := PrintfHelper.handlePrecision(replacingValue) + replacingValue := PrintfHelper.handleSigns(replacingValue) + replacingValue := PrintfHelper.handleChars(replacingValue) + replacingValue := PrintfHelper.handleStrings(replacingValue) + replacingValue := PrintfHelper.doPadding(replacingValue) + patternText := patternText.replaceAt(p + , StrLen(PrintfHelper.placeHolder.all), replacingValue) + p += StrLen(replacingValue) + } + } until (p <= 0) + return StrReplace(patternText, "%%", "%") + } + + patternHasPlaceHolders(patternText, position) { + PrintfHelper.placeHolder := {} + if (newPosition := RegExMatch(patternText + , "(?[ +-]?)" + . "(?0?)" + . "(?\d*|\*)" + . "(\.(?\d*|\*))?" + . "(?[" PrintfHelper.TYPES "])" + , $, position)) { + PrintfHelper.placeHolder.all := $ + PrintfHelper.placeHolder.flag := $flag + PrintfHelper.placeHolder.zero := $zero + PrintfHelper.placeHolder.size := $size + PrintfHelper.placeHolder.precision := $precision + PrintfHelper.placeHolder.type := $type + return newPosition + } + return 0 + } + + handleGenericSize(replacingValue) { + if (PrintfHelper.placeHolder.size = "*") { + PrintfHelper.placeHolder.size := replacingValue + return PrintfHelper.values[++PrintfHelper.placeHolderIndex] + } + return replacingValue + } + + handlePrecision(replacingValue) { + if (PrintfHelper.placeHolder.precision = "*") { + PrintfHelper.placeHolder.precision := replacingValue + return PrintfHelper.values[++PrintfHelper.placeHolderIndex] + } + return replacingValue + } + + handleZero() { + PrintfHelper.placeHolder.zero := (PrintfHelper.placeHolder.zero = "" + ? " " + : "0") + } + + handleSigns(replacingValue) { + if (InStr(PrintfHelper.NUMBER_TYPES, PrintfHelper.placeHolder.type)) { + if (PrintfHelper.placeHolder.flag = "+" && replacingValue >= 0) { + return "+" replacingValue + } else if (PrintfHelper.placeHolder.flag = " ") { + return Abs(replacingValue) + } + } + return replacingValue + } + + handleChars(replacingValue) { + if (PrintfHelper.placeHolder.type = "c") { + if (replacingValue >= 0 && replacingValue <= 255) { + return Chr(replacingValue) + } else { + return SubStr(replacingValue, 1, 1) + } + } + return replacingValue + } + + handleStrings(replacingValue) { + if (PrintfHelper.placeHolder.type = "s") { + if (PrintfHelper.placeHolder.precision + && StrLen(replacingValue) + > PrintfHelper.placeHolder.precision) { + replacingValue := SubStr(replacingValue + , 1, PrintfHelper.placeHolder.precision) + } + } + return replacingValue + } + + doPadding(replacingValue) { + ; if (PrintfHelper.placeHolder.size) { + if (InStr(PrintfHelper.INT_TYPES + , PrintfHelper.placeHolder.type)) { + replacingValue := PrintfHelper.padIntegerTypes(replacingValue) + } else if (InStr(PrintfHelper.CHAR_TYPES + , PrintfHelper.placeHolder.type)) { + replacingValue := PrintfHelper.padCharTypes(replacingValue) + } else if (InStr(PrintfHelper.FLOAT_TYPES + , PrintfHelper.placeHolder.type)) { + replacingValue := PrintfHelper.padFloatTypes(replacingValue) + } + ; } + return replacingValue + } + + padIntegerTypes(replacingValue) { + if (PrintfHelper.placeHolder.precision != "") { + if (PrintfHelper.placeHolder.precision == 0 + && replacingValue == 0) { + replacingValue := "" + } else if (PrintfHelper.placeHolder.precision > 0) { + replacingValue := replacingValue + .padNumber(PrintfHelper.placeHolder.precision) + } + } + replacingValue := RegExReplace(replacingValue , "\.\d+$", "") + size := (PrintfHelper.placeHolder.size == "" + ? StrLen(replacingValue) + : PrintfHelper.placeHolder.size) + if (PrintfHelper.placeHolder.flag = "-") { + replacingValue := replacingValue.padRight(size) + } else { + replacingValue := replacingValue + .padNumber(size + , PrintfHelper.placeHolder.zero) + } + return replacingValue + } + + padCharTypes(replacingValue) { + if (StrLen(replacingValue) < PrintfHelper.placeHolder.size) { + replacingValue := (PrintfHelper.placeHolder.flag == "-" + ? replacingValue.padRight(PrintfHelper.placeHolder.size) + : replacingValue.padLeft(PrintfHelper.placeHolder.size)) + } + return replacingValue + } + + padFloatTypes(replacingValue) { + RegExMatch(replacingValue + , "(?[+-]?\d*)(\.(?\d*))?", $) + frac := (PrintfHelper.placeHolder.precision > 0 + ? "." ($fraction ? $fraction : "0") + .padRight(PrintfHelper.placeHolder.precision, "0") + : "") + if (PrintfHelper.placeHolder.size == "") { + replacingValue := $integer frac + } else { + replacingValue := $integer + .padNumber(PrintfHelper.placeHolder.size - StrLen(frac) + , PrintfHelper.placeHolder.zero) frac + } + return replacingValue + } +} diff --git a/more libs/Various1/lib/modules/testcase/LoggingHelper.ahk b/more libs/Various1/lib/modules/testcase/LoggingHelper.ahk new file mode 100644 index 00000000..3f9a34fa --- /dev/null +++ b/more libs/Various1/lib/modules/testcase/LoggingHelper.ahk @@ -0,0 +1,317 @@ +;{{{ LoggingHelper +/* + * Class: LoggingHelper + * Provide methods which support logging. + */ +class LoggingHelper { + + ;{{{ __New + /* + * Constructor: __New + * Instantiation of the LoggingHelper ist not allowed. + */ + __New() { + throw Exception("Instantiation of class '" this.__Class + . "' is not allowed") + } + ;}}} + + ;{{{ TweakValue + /* + * Method: TweakValue + * Returns a printable output for objects and exceptions. + * + * Parameters: + * pValue - Pass thru value. + * + * Returns: + * The content of pValue. + */ + tweakValue(pValue) { + _providedValue := pValue + + if (IsObject(pValue)) { + if (pValue.__Class != "") { + _providedValue := "@" Object(pValue) + . (pValue.base.__Class != "" + ? "::" pValue.base.__Class : "") + . (pValue.base.base.__Class != "" + ? "<-" pValue.base.base.__Class : "") + } else if (pValue.HasKey("What") && pValue.HasKey("File") + && pValue.HasKey("Line") && pValue.HasKey("Message")) { + _providedValue := "" + } else if (pValue.__Class = "") { + _providedValue := "@" Object(pValue) + } + } else { + if pValue is integer + { + _fi := A_FormatInteger + SetFormat Integer, h + _hex := pValue + 0 + SetFormat Integer, %_fi% + _providedValue := pValue " (" _hex ")" + } else if (RegExMatch(pValue, "`m)^\s*$", _providedValue)) { + StringReplace _providedValue, _providedValue, %A_Space%, ·, All + StringReplace _providedValue, _providedValue, %A_Tab%, ¬, All + StringReplace _providedValue, _providedValue, `n, ¶, All + } else { + _p := 0 + try { + if (_p := RegExMatch(pValue, "`nm)^(.+?)(\s*?)$" + , #, _p + 1)) { + _providedValue := "" + loop { + StringReplace #2, #2, %A_Space%, ·, All + StringReplace #2, #2, %A_Tab%, ¬, All + _providedValue .= #1 #2 "`n" + } until ((_p := RegExMatch(pValue, "`nm)^(.*?)(\s*?)$" + , #, _p + 1)) = 0) + } + } catch _ex { + OutputDebug % "RegExMatch runtime error: " _ex.Message " - haystack = " pValue ; ahklint-ignore: W002 + _providedValue := pValue + } + _providedValue := RegExReplace(_providedValue, "`n$", "") + _providedValue := StrReplace(_providedValue, "`n", "¶") + } + } + return _providedValue + } + ;}}} + + ;{{{ JustifyLeft + /* + * Method: JustifyLeft + * Left-aligns a string to a specified size by using a given padding character. + * + * Parameters: + * pstrText - The string to align. + * piLength - Size desired length of the result string. + * pcChar - The character to use for padding. + * + * Returns: + * A left aligned string of the specified size, padded with the given character. + * + * See Also: + * + */ + justifyLeft(pstrText="", piLength=1, pcChar=" ") { + _pad := pcChar + loop % (piLength - 1) { + _pad .= pcChar + } + + return SubStr(pstrText _pad, 1, piLength) + } + ;}}} + + ;{{{ JustifyRight + /* + * Method: JustifyRight + * Right-aligns a string to a specified size by using a given padding character. + * + * Parameters: + * pstrText - The string to align. + * piLength - Size desired length of the result string. + * pcChar - The character to use for padding. + * + * Returns: + * A right aligned string of the specified size, padded with the given character. + * + * See Also: + * + */ + justifyRight(pstrText="", piLength=1, pcChar=" ") { + _pad := pcChar + loop % (piLength - 1) { + _pad .= pcChar + } + + return SubStr(_pad pstrText, (piLength - 1) * -1) + } + ;}}} + + ;{{{ Dump + /* + * Method: Dump + * Dump the content of an object by traversing over its components. + * + * Parameters: + * pObject - Provide the object to dump. + * piNestedLevel - For internal use *do not set* + * strId - For internal use *do not set* + * + * Returns: + * An object dump as a string. + */ + dump(pObject, piNestedLevel=1, strId="") { + static SPACER1 := " " + static SPACER2 := " " + static strOutput := "" + + if (!IsObject(pObject)) { + return pObject + } + if (piNestedLevel > 32) { + return + } + + gosub Indent + + if (strOutput = "") { + strOutput .= "Dump>> " (IsObject(pObject.base) + ? LoggingHelper.JustifyLeft("@" Object(pObject.base), 10) + : SPACER2) + . " " (pObject.__Class != "" + ? pObject.__Class " object" + : "Object has no base class" ) "`n" + } + + if (pObject.base) { + if (IsObject(pObject.base) && pObject.base.__Class != "") { + _name := pObject.base.__Class + _suffix := " class" + } else if (IsObject(pObject.base)) { + _name := pObject.base + _suffix := "{}" + } else { + _name := pObject.base + _suffix := "" + } + piNestedLevel++ + gosub Indent + strOutput .= SPACER1 SubStr(_indent, 1, StrLen(_indent) - 4) "|\`n" + strOutput .= "Base " (IsObject(pObject.base) + ? LoggingHelper.JustifyLeft("@" Object(pObject.base), 10) + : SPACER2) " " _indent _name _suffix "`n" + strOutput .= LoggingHelper.Dump(pObject.base, piNestedLevel, _name) + strOutput .= SPACER1 SubStr(_indent, 1, StrLen(_indent) - 4) "|/`n" + piNestedLevel-- + gosub Indent + } + + for _key, _value in pObject { + if (IsObject(_value) && IsFunc(_value)) { + strOutput .= "Func " (IsObject(_value) + ? LoggingHelper.JustifyLeft("@" Object(_value), 10) + : SPACER2) + . " " _indent _key "()`n" + } else if (_value.MinIndex() != "" && _value.MaxIndex() != "") { + strOutput .= "Array " (IsObject(_value) + ? LoggingHelper.JustifyLeft("@" Object(_value), 10) + : SPACER2) + . " " _indent _key + . "[" _value.minIndex() ".." _value.maxIndex() "]`n" + piNestedLevel++ + gosub Indent + strOutput .= SPACER1 + . SubStr(_indent, 1, StrLen(_indent) - 4) "|\`n" + strOutput .= LoggingHelper.Dump(_value + , piNestedLevel, strId "." _key) + strOutput .= SPACER1 + . SubStr(_indent, 1, StrLen(_indent) - 4) "|/`n" + piNestedLevel-- + gosub Indent + } else if (IsObject(_value)) { + if (_value.__Class != "") { + strOutput .= "Class " (IsObject(_value) + ? LoggingHelper.JustifyLeft("@" Object(_value), 10) + : SPACER2) " " _indent _key "`n" + } else { + strOutput .= "Object " (IsObject(_value) + ? LoggingHelper.JustifyLeft("@" Object(_value), 10) + : SPACER2) " " _indent _key " = {}`n" + } + piNestedLevel++ + gosub Indent + strOutput .= SPACER1 + . SubStr(_indent, 1, StrLen(_indent) - 4) "|\`n" + strOutput .= LoggingHelper.Dump(_value + , piNestedLevel, strId "." _key) + strOutput .= SPACER1 + . SubStr(_indent, 1, StrLen(_indent) - 4) "|/`n" + piNestedLevel-- + gosub Indent + } else { + strOutput .= "Prop " (IsObject(pObject.base) + ? LoggingHelper.JustifyLeft("@" + . Object(pObject.base), 10) + : SPACER2) " " _indent + . _key " = " LoggingHelper.TweakValue(_value) "`n" + } + } + + if (piNestedLevel <= 1) { + strOutput .= "End<<`n" + } + _output := strOutput, strOutput := "" + return _output + + Indent: + _indent := "" + loop % (piNestedLevel - 1) { + _indent .= "| " + } + _indent .= "* " + return + } + ;}}} + + ;{{{ HexDump + /* + * Method: HexDump + * Generat a hex dump for a given memory address from specified offset and length. + * + * Parameters: + * piAddress - The address to start the dump. + * piOffset - The offset to add to piAddress. + * piSize - The number of bytes to dump. + * + * Returns: + * A hex dump as a string. + */ + hexDump(piAddress, piOffset=0, piSize="") { + _ofs := 0 + _str := "" + strOutput := "" + _addr := &piAddress + _fi := A_FormatInteger + SetFormat Integer, h + loop %piSize% { + if (Mod(_ofs, 16) = 0) { + _addr := LoggingHelper.JustifyRight(RegExReplace(piAddress+_ofs + , "i)^0x", ""), 12, 0) + strOutput .= " " _str "`n" _addr " " + _str := "" + } else if (Mod(_ofs, 8) = 0) { + strOutput .= " " + } + charCode := NumGet(piAddress + _ofs, 0, "UChar") + _str .= (charCode >= 32 && charCode <= 126 ? Chr(charCode) : ".") + strOutput .= LoggingHelper.JustifyRight(RegExReplace(charCode + , "i)^0x", ""), 2, 0) " " + _ofs++ + } + if (Mod(_ofs, 16) != 0) { + strOutput .= LoggingHelper.JustifyLeft("" + , 3 * (16 - Mod(_ofs, 16)), " ") + . (Mod(_ofs, 16) = Mod(_ofs, 8) ? " " : "") + } + strOutput .= " " _str + SetFormat Integer, %_fi% + + return strOutput + } + ;}}} + + hex(value) { + _fi := A_FormatInteger + SetFormat Integer, h + value+=0 + SetFormat Integer, %_fi% + + return value + } +} diff --git a/more libs/Various1/lib/modules/testcase/TestData.ahk b/more libs/Various1/lib/modules/testcase/TestData.ahk new file mode 100644 index 00000000..07d5b354 --- /dev/null +++ b/more libs/Various1/lib/modules/testcase/TestData.ahk @@ -0,0 +1,17 @@ +class TestData { + + static testNames := {} + static beforeClassFixtureNames := {} + static beforeFixtureNames := {} + static afterClassFixtureNames := {} + static afterFixtureNames := {} + static performedTestNames := {} + static testState := {} + static selectedTestNames := {} + static failedTests := {} + static testClass := 0 + static longestTestName := 0 + static assertionCounter := 0 + static numberOfPassingTests := 0 + static numberOfFailingTests := 0 +} diff --git a/more libs/Various1/lib/object.ahk b/more libs/Various1/lib/object.ahk new file mode 100644 index 00000000..8302016e --- /dev/null +++ b/more libs/Various1/lib/object.ahk @@ -0,0 +1,193 @@ +class Object { + + class Ini { + stFileName := "" + section := {} + + __new(pstFileName) { + this.stFileName := pstFileName + return this + } + + write(pstSection, pstKey, pValue) { + _curValue := this.section[pstSection, pstKey] + this.section[pstSection, pstKey] := pValue + return _curValue + } + + read(pstSection, pstKey) { + return this.section[pstSection, pstKey] + } + + save() { + _file := FileOpen(this.stFileName, "w") + _file.writeLine("# " A_Now) + + for _section, _entry in this.section { + _file.writeLine("[" _section "]") + for _key, _value in _entry { + _file.writeLine((_key != "" ? _key "=" _value : " ")) + } + } + + _file.close() + + return this + } + + load() { + _file := FileOpen(this.stFileName, "r") + + this.section := {} + + _section := "" + while (!_file.atEOF()) { + _line := _file.readLine() + if (RegExMatch(_line, "^#.*$")) { + continue + } + if (RegExMatch(_line, "^\[(.*)\]", $)) { + this.section[$1] := {} + _section := $1 + continue + } + if (RegExMatch(_line, "^(.+?)=(.*?)\s*$", $)) { + this.section[_section, $1] := $2 + continue + } + } + + _file.close() + + return this + } + } + + __new() { + throw Exception("Instatiation of class '" this.__Class + . "' is not allowed") + } + + serialize(po, pstIniFileName) { + _ini := new Object.Ini(pstIniFileName) + + if (po.__Class != "") { + _ini.write("__Class", "__Class", po.__Class) + } + + object_Serialize(po, _ini) + + _ini.save() + } + + deserialize(pstIniFileName) { + _ini := new Object.Ini(pstIniFileName) + _ini.load() + + IniRead _type, %pstIniFileName%, __Class, __Class, *SIMPLE_OBJECT* + + if (_type == "*SIMPLE_OBJECT*") { + _obj := Object() + _obj := object_Deserialize(_obj, _ini.section) + } else { + _obj := new %_type%() + _obj := object_Deserialize(_obj, _ini.section) + } + + return _obj + } + + instanceOf(po, pstrClassName) { + loop { + if (po.__Class = pstrClassName || po.base.__Class = pstrClassName) { + return true + } + if (IsObject(po.base)) { + po := po.base + } else { + break + } + } + return false + } + + compare(poFirst, poSecond) { + o1 := poFirst.clone() + o2 := poSecond.clone() + _keys := [] + for _key, _value in o1 { + _keys.push(_key) + } + for _i, _key in _keys { + if (o1[_key] != o2[_key]) { + return false + } + o1.remove(_key) + o2.remove(_key) + } + for _key, _value in o2 { + return false + } + return true + } +} + +object_Serialize(poObject, poIni, pstId="") { + if (!IsObject(poObject)) { + throw Exception("The given variable does not contain an object" + , -1, poObject) + } + if (poObject.base) { + object_Serialize(poObject.base, poIni, pstId) + } + if (poObject.getCapacity() = 0) { + poIni.write(pstId, "", "") + return poObject + } + for _key, _value in poObject { + if (_value.minIndex() != "" && _value.maxIndex() != "") { + object_Serialize(_value, poIni, (pstId != "" ? pstId "." : "") _key) + } else if (IsObject(_value)) { + object_Serialize(_value, poIni, (pstId != "" ? pstId "." : "") _key) + } else { + if (_key != "__class") { + _value := StrReplace(_value, "`n", "``n") + poIni.write(pstId, _key, _value) + } + } + } + + return poObject +} + +object_Deserialize(poObject, poData, pstId="") { + + for _key, _value in poData { + ; OutputDebug ### %_key% = %_value% / %pstId% + if (IsObject(_value)) { + objs := StrSplit(_key, ".") + o := poObject + loop % objs.maxIndex() { + if (!IsObject(o[objs[A_Index]])) { + o[objs[A_Index]] := {} + } + o := o[objs[A_Index]] + } + object_Deserialize(poObject, _value + , (pstId != "" ? pstId "." : "") _key) + } else if (_key != "__class") { + _value := StrReplace(_value, "`n", "``n") + if (pstId) { + objs := StrSplit(pstId, ".") + o := poObject + loop % objs.maxIndex() { + o := o[objs[A_Index]] + } + o[_key] := _value + } else { + poObject[_key] := _value + } + } + } + return poObject +} diff --git a/more libs/Various1/lib/optparser.ahk b/more libs/Various1/lib/optparser.ahk new file mode 100644 index 00000000..8ded27c3 --- /dev/null +++ b/more libs/Various1/lib/optparser.ahk @@ -0,0 +1,285 @@ +class OptParser { + + requires() { + return [Object, String] + } + + /* + * Constants: Parser & Option flags. + * OPT_ARGREQ - Argument required. + * OPT_ARG - Same as OPT_ARGREQ. For compatibilty issues + * OPT_OPTARG - Optional argument. + * OPT_NOARG - No argument allowed. + * OPT_HIDDEN - Don't print argument in usage. + * OPT_MULTIPLE - Collect arguments in a list. + * OPT_NEG - Allow 'no-' prefix to invert options. + * OPT_NEG_USAGE - Display as 'no'-option in usage. + * PARSER_ALLOW_DASHED_ARGS - Allow dashes in arguments + */ + static OPT_ARG := 1 + static OPT_ARGREQ := 1 + static OPT_OPTARG := 2 + static OPT_NOARG := 4 + static OPT_HIDDEN := 8 + static OPT_MULTIPLE := 16 + static OPT_NEG := 32 + static OPT_NEG_USAGE := 64 + static OPT_ALLOW_SINGLE_DASH := 128 + + static PARSER_ALLOW_DASHED_ARGS := 1 + + static rcPathGlobal := A_AppDataCommon + static rcPathUser := A_AppData + static rcPathProject := A_WorkingDir + + envVarName := "" + useEnvVar := true + rcFileName := "" + usageText := [] + optionList := [] + argumentList := [] + iPtr := 0 + exitOnDie := false + hasCounter := false + + #Include %A_LineFile%\..\modules\optparser + #Include Group.ahk + #Include Line.ahk + #Include Option.ahk + #Include Boolean.ahk + #Include String.ahk + #Include Callback.ahk + #Include RcFile.ahk + #Include Counter.ahk + #Include Generic.ahk + + __new(usageText, flags=0, envVarName="", rcFileName="") { + if (IsObject(usageText)) { + this.usageText := usageText + } else { + this.usageText := [usageText] + } + this.flags := flags + this.envVarName := envVarName + this.rcFileName := rcFileName + return this + } + + add(option) { + if (Object.instanceOf(option, "OptParser.Counter")) { + if (this.hasCounter) { + this.die("Only one counter option per option parser allowed." ; NOTEST: 'die' method will never return + , 3) ; NOTEST + } else { + this.hasCounter := true + } + } + this.optionList.insert(option) + } + + usage() { + usageText := "" + for i, usageOfParser in this.usageText { + usageText .= (i = 1 ? "usage: " : " or: ") usageOfParser "`n" + } + usageText .= "`n" + for i, alternativeUsageOfParser in this.optionList { + usageText .= ((usage := alternativeUsageOfParser.usage()) = "" + ? "" + : usage "`n") + } + return usageText "`n" + } + + die(message, exitCode=0) { + if (!this.exitOnDie) { + throw Exception(message, exitCode) + } else { ; NOTEST: Not testable via TestCase class + exitapp exitCode ; NOTEST + } + } + + parse(argumentList) { + if (!IsObject(argumentList)) { + throw Exception("The given argument is not an array") + } + cleanedArgumentList := this.handleEnvNoEnvOptions(argumentList) + rcArgumentList := (this.useEnvVar == true + ? this.handleRcFiles(cleanedArgumentList) + : cleanedArgumentList) + envArgumentList := this.handleEnvironmentVariable(rcArgumentList) + expandedArgumentList := this.expandBundeledOptions(envArgumentList) + this.argumentList := expandedArgumentList + this.parseArguments() + return this.determineRemainigArguments() + } + + handleRcFiles(inputArgumentList) { + globalArgumentList := this.handleRcFile(inputArgumentList + , OptParser.rcPathGlobal "\" this.rcFileName) + userArgumentList := this.handleRcFile(globalArgumentList + , OptParser.rcPathUser "\" this.rcFileName) + projectArgumentList := this.handleRcFile(userArgumentList + , OptParser.rcPathProject "\" this.rcFileName) + return projectArgumentList + } + + handleRcFile(argumentList, rcFile) { + argsFromRcFile := this.processRcFile(rcFile) + if (argsFromRcFile.maxIndex() != "") { + argumentList.insertAt(1, argsFromRcFile*) + } + return argumentList + } + + processRcFile(filePath) { + argumentList := [] + fileAttributes := FileExist(filePath) + if (fileAttributes && !InStr(fileAttributes, "D")) { + try { + rcFile := FileOpen(filePath, "r `n") + while (not rcFile.atEOF) { + line := rcFile.readLine() + if (!RegExMatch(line, "^\s*(#.*)?$")) { + args := StrSplit(line, [A_Space, A_Tab], "`r`n") + argumentList.push(args*) + } + } + } finally { + if (rcFile) { + rcFile.close() + } + } + } + return argumentList + } + + handleEnvironmentVariable(argumentList) { + if (this.envVarName) { + envVarName := this.envVarName + EnvGet optionsInEnvVar, %envVarName% + if (this.useEnvVar && optionsInEnvVar) { + argumentList.insertAt(1, optionsInEnvVar.toArray()*) + } + } + return argumentList + } + + expandBundeledOptions(argumentList) { + alteredArgumentList := [] + while (A_Index <= argumentList.maxIndex()) { + argument := argumentList[A_Index] + try { + if (RegExMatch(argument, "^-(?P[\w\W]+)" + , bundled)) { + alteredArgumentList + := this.processBundeledOptions(bundledArguments + , alteredArgumentList, argument) + } else { + alteredArgumentList.insert(argument) + } + } catch argumentThatCantBeBundeled { + alteredArgumentList.insert(argumentThatCantBeBundeled) + } + } + return alteredArgumentList + } + + parseArguments() { + this.iPtr := this.argumentList.minIndex() + validArgument := 0 + while (validArgument != -1 + && this.iPtr <= this.argumentList.maxIndex()) { + argumentToParse := this.argumentList[this.iPtr] + if (this.optionList.maxIndex() = "") { + validArgument := -1 + } else { + validArgument + := this.testIfValidLongOrShortOption(argumentToParse) + if (!validArgument) { + this.die("Invalid argument: " argumentToParse) ; NOTEST: 'die' method will never return + } + } + } + } + + determineRemainigArguments() { + remainingArguments := [] + while (this.iPtr != "" && this.iPtr <= this.argumentList.maxIndex()) { + argument := this.argumentList[this.iPtr++] + if (!(this.flags & OptParser.PARSER_ALLOW_DASHED_ARGS) + && SubStr(argument, 1, 1) = "-") { + this.die("A remainig argument starts with a dash: " ; NOTEST: 'die' method will never return + . argument, 4) ; NOTEST + } + remainingArguments.push(argument) + } + return remainingArguments + } + + handleEnvNoEnvOptions(argumentList) { + i := argumentList.minIndex() + while (i <= argumentList.maxIndex()) { + if (RegExMatch(argumentList[i], "--no-?env")) { + argumentList.removeAt(i) + this.useEnvVar := false + continue + } else if (argumentList[i] == "--env") { + argumentList.removeAt(i) + this.useEnvVar := true + continue + } + i++ + } + return argumentList + } + + processBundeledOptions(bundledArguments, alteredArgumentList, argument) { + loop % StrLen(bundledArguments) { + option := SubStr(bundledArguments, A_Index, 1) + if (!this.isBundlingOfThisOptionPossible(option)) { + throw argument + } + alteredArgumentList.insert("-" option) + } + return alteredArgumentList + } + + isBundlingOfThisOptionPossible(option) { + p := this.optionList.minIndex() + while (p <= this.optionList.maxIndex()) { + if (SubStr(this.optionList[p].option1Dash, 0) == option) { + if (this.optionList[p].flags & OptParser.OPT_ARGREQ) { + return false + } else { + return true + } + } + p++ + } + return false + } + + testIfValidLongOrShortOption(argumentToParse) { + validOption := 0 + while (!validOption && A_Index <= this.optionList.maxIndex()) { + option := this.optionList[A_Index] + if (Object.instanceOf(option, "OptParser.Group")) { + continue + } else if (argumentToParse == "--" + || SubStr(argumentToParse, 1, 1) != "-") { + if (argumentToParse == "--") { + this.iPtr += 1 + } + validOption := -1 + } else if ((option.option2Dashes != "" && RegExMatch(argumentToParse + , option.getLongMatch())) + || (option.option1Dash != "" && RegExMatch(argumentToParse + , option.getShortMatch()))) { + option.set(argumentToParse, this) + validOption := 1 + } + } + return validOption + } +} diff --git a/more libs/Various1/lib/pager.ahk b/more libs/Various1/lib/pager.ahk new file mode 100644 index 00000000..f82a9acf --- /dev/null +++ b/more libs/Various1/lib/pager.ahk @@ -0,0 +1,112 @@ +#Include +#Include + +#Include %A_LineFile%\..\modules\pager\ +#Include actions.ahk + +class Pager { + + requires() { + return [] + } + + static TEST_CONSOLE_HEIGHT := 24 + static TEST_CONSOLE_WIDTH := 80 + + static handleOfCurrentConsoleWindow := WinExist("A") + static lineCounter := 0 + static enablePager := true + static scrollOneLine := false + static runInTestMode := false + static breakMessage := "" + + writeHardWrapped(text) { + wrappedText := Ansi.wrap(text, Pager.getConsoleWidth()) + Pager.lineCounter := Pager.writeText(wrappedText + , Pager.lineCounter) + return Pager.lineCounter + } + + writeWordWrapped(text) { + wordWrappedText := Ansi.wordWrap(text, Pager.getConsoleWidth()) + Pager.lineCounter := Pager.writeText(wordWrappedText + , Pager.lineCounter) + return Pager.lineCounter + } + + writeText(wrappedText, lineCounter) { + listOfLines := StrSplit(wrappedText, Ansi.NEWLINE) + loop % listOfLines.maxIndex() { + lineCounter := Pager.printLineAndBreak(listOfLines[A_Index] + , lineCounter) + } + return lineCounter + } + + printLineAndBreak(textToPrint, lineCounter) { + lineCounter++ + if (Pager.enablePager && (Pager.scrollOneLine + || lineCounter = Pager.getConsoleHeight())) { + Pager.break(Pager.breakMessage) + lineCounter := 1 + } + if (Pager.getMaxConsoleWidth() + && ((A_IsCompiled + && Ansi.plainStrLen(textToPrint) >= Pager.getMaxConsoleWidth()) + || (Ansi.plainStrLen(textToPrint) + > Pager.getMaxConsoleWidth()))) { + Ansi.write(textToPrint) + } else { + Ansi.writeLine(textToPrint) + } + return lineCounter + } + + break(breakMessage, resetLineCounter=false) { + if (resetLineCounter) { + Pager.lineCounter := 0 + } + if (Pager.runInTestMode) { + Ansi.write(Pager.breakMessage) + Ansi.flush() + return + } + Ansi.write(Ansi.saveCursorPosition() Ansi.cursorHorizontalAbs(1) + . Ansi.reset() Ansi.eraseLine() + . Ansi.setGraphic(Ansi.ATTR_REVERSE) breakMessage Ansi.reset() + . Ansi.eraseLine()) + _handleOfCurrentConsoleWindow := Pager.handleOfCurrentConsoleWindow + HotKey, IfWinActive, ahk_id %_handleOfCurrentConsoleWindow% + HotKey, q, pagerActionQuit + HotKey, c, pagerActionContinue + HotKey, Space, pagerActionNextPage + HotKey, Enter, pagerActionNextLine + Ansi.flush() + Pause On + } + + getConsoleHeight() { + if (Pager.runInTestMode) { + return Pager.TEST_CONSOLE_HEIGHT + } + conHeight := 1 + Console.bufferInfo.srWindow.bottom + - Console.bufferInfo.srWindow.top + return conHeight + } + + getConsoleWidth() { + if (Pager.runInTestMode) { + return Pager.TEST_CONSOLE_WIDTH + } + conWidth := 1 + Console.bufferInfo.srWindow.right + - Console.bufferInfo.srWindow.left + return conWidth + } + + getMaxConsoleWidth() { + if (Pager.runInTestMode) { + return Pager.TEST_CONSOLE_WIDTH + } + return Console.bufferInfo.dwMaximumWindowSize.X + } +} diff --git a/more libs/Various1/lib/queue.ahk b/more libs/Various1/lib/queue.ahk new file mode 100644 index 00000000..af7eaac7 --- /dev/null +++ b/more libs/Various1/lib/queue.ahk @@ -0,0 +1,58 @@ +class Queue { + + queueSize := 0 + content := [] + + __new(queueSize=0) { + if queueSize is not integer + { + throw Exception("Param 'queueSize' must be a number") + } + if (queueSize < 0) { + throw Exception("Param 'queueSize' must not be less than 0") + } + this.queueSize := queueSize + return this + } + + push(newEntry) { + index := this.content.minIndex() + if (this.queueSize = 0 || index = "" + || this.content.maxIndex() - index < this.queueSize) { + this.content.push(newEntry) + if (this.queueSize != 0 + && this.content.maxIndex() - index >= this.queueSize) { + removedValue := this.content.remove(index) + } else { + removedValue := "" + } + } + return removedValue + } + + pop(keepEntry=false) { + index := this.content.minIndex() + if (index = "") { + return "" + } + return keepEntry + ? this.content[this.content.minIndex()] + : this.content.remove(this.content.minIndex()) + } + + length() { + if (this.content.maxIndex() = "") { + return 0 + } + return this.content.maxIndex() - this.content.minIndex() + 1 + } + + clear() { + if (this.content.maxIndex() = "") { + return 0 + } + size := this.length() + this.content := [] + return size + } +} diff --git a/more libs/Various1/lib/random.ahk b/more libs/Various1/lib/random.ahk new file mode 100644 index 00000000..5dca22e8 --- /dev/null +++ b/more libs/Various1/lib/random.ahk @@ -0,0 +1,169 @@ +class Random { + + static N := 624 + static M := 397 + static MATRIX_A := 0x9908b0df + static UPPER_MASK := 0x80000000 + static LOWER_MASK := 0x7fffffff + + mt := [] + mti := Random.N + 1 + + __new(p1, p2="") { + if (IsObject(p1) && p1.minIndex() != "") { + if (p2 = "" || p2 = 0) { + p2 := p1.maxIndex() + } + this.initializeRandomGeneratorByArray(p1, p2) + } else { + this.initializeRandomGenerator(p1) + } + + return this + } + + init_genrand(pSeed) { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated. Use initializeRandomGenerator() instead. ; ahklint-ignore: W002 + return this.initializeRandomGenerator(speed) + } ; notest-end + + initializeRandomGenerator(pSeed) { + this.mt[0] := pSeed & 0xffffffff + this.mti := 1 + while (this.mti < Random.N) { + this.mt[this.mti] := 1812433253 + * (this.mt[this.mti-1] ^ (this.mt[this.mti-1] >> 30)) + + this.mti + this.mt[this.mti] &= 0xffffffff + this.mti++ + } + } + + init_by_array(paInit_key, piKey_length) { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated. Use initializeRandomGeneratorByArray() instead. ; ahklint-ignore: W002 + return this.initializeRandomGeneratorByArray(paInit_key, piKey_length) + } ; notest-end + + initializeRandomGeneratorByArray(initialKeyArray, keyLength) { + this.initializeRandomGenerator(19650218) + i := 1, j := 0 + k := (Random.N > keyLength ? Random.N : keyLength) + while (k) { + this.mt[i] := (this.mt[i] ^ ((this.mt[i-1] ^ (this.mt[i-1] >> 30)) + * 1664525)) + initialKeyArray[j+1] + j + this.mt[i] &= 0xffffffff + i++, j++ + if (i >= Random.N) { + this.mt[0] := this.mt[Random.N-1] + i := 1 + } + if (j >= keyLength) { + j := 0 + } + k-- + } + k := Random.N - 1 + while (k) { + this.mt[i] := (this.mt[i] ^ ((this.mt[i-1] ^ (this.mt[i-1] >> 30)) + * 1566083941)) - i + this.mt[i] &= 0xffffffff + i++ + if (i >= Random.N) { + this.mt[0] := this.mt[Random.N-1] + i := 1 + } + k-- + } + this.mt[0] := 0x80000000 + } + + genrand_int32() { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated. Use generateRandomInt32() instead. ; ahklint-ignore: W002 + return this.generateRandomInt32() + } ; notest-end + generateRandomInt32() { + mag01 := [] + mag01[0] := 0x0 + mag01[1] := Random.MATRIX_A + + if (this.mti >= Random.N) { + if (this.mti == Random.N + 1) { + this.initializeRandomGenerator(5489) + } + kk := 0 + while (kk < Random.N - Random.M) { + y := (this.mt[kk] & Random.UPPER_MASK) + | (this.mt[kk+1] & Random.LOWER_MASK) + this.mt[kk] := this.mt[kk+Random.M] ^ (y >> 1) ^ mag01[y & 0x1] + kk++ + } + while (kk < Random.N - 1) { + y := (this.mt[kk] & Random.UPPER_MASK) + | (this.mt[kk+1] & Random.LOWER_MASK) + this.mt[kk] := this.mt[kk+(Random.M-Random.N)] + ^ (y >> 1) ^ mag01[y & 0x1] + kk++ + } + y := (this.mt[Random.N-1] & Random.UPPER_MASK) + | (this.mt[0] & Random.LOWER_MASK) + this.mt[Random.N-1] := this.mt[Random.M-1] + ^ (y >> 1) ^ mag01[y & 0x1] + this.mti := 0 + } + + y := this.mt[this.mti++] + + y ^= (y >> 11) + y ^= (y << 7) & 0x9d2c5680 + y ^= (y << 15) & 0xefc60000 + y ^= (y >> 18) + + return y + } + + genrand_real1() { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated. Use generateRandomReal1() instead. ; ahklint-ignore: W002 + return this.generateRandomReal1() + } ; notest-end + generateRandomReal1() { + a := this.generateRandomInt32() * (1.0 / 4294967295.0) + return a + } + + genrand_real2() { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated. Use generateRandomReal2() instead. ; ahklint-ignore: W002 + return this.generateRandomReal2() + } ; notest-end + generateRandomReal2() { + a := this.generateRandomInt32() * (1.0 / 4294967296.0) + return a + } + + genrand_int31() { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated. Use generateRandomInt31() instead. ; ahklint-ignore: W002 + return this.generateRandomInt31() + } ; notest-end + generateRandomInt31() { + a := this.generateRandomInt32() >> 1 + return a + } + + genrand_real3() { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated. Use generateRandomReal3() instead. ; ahklint-ignore: W002 + return this.generateRandomReal3() + } ; notest-end + generateRandomReal3() { + a := (this.generateRandomInt32() + 0.5) * (1.0 / 4294967296.0) + return a + } + + genrand_res53() { ; notest-begin + OutputDebug %A_ThisFunc% is deprecated. Use generateRes53() instead. ; ahklint-ignore: W002 + return this.generateRes53() + } ; notest-end + generateRes53() { + a := this.generateRandomInt32() >> 5 + b := this.generateRandomInt32() >> 6 + return (a * 67108864.0 + b) * (1.0 / 9007199254740992.0) + } +} diff --git a/more libs/Various1/lib/string.ahk b/more libs/Various1/lib/string.ahk new file mode 100644 index 00000000..fc5e1dcd --- /dev/null +++ b/more libs/Various1/lib/string.ahk @@ -0,0 +1,706 @@ +; ahk: console +#Include %A_LineFile%\..\modules\string\ +#Include HyphenationHelper.ahk +#Include PrintfHelper.ahk + +"".base.repeat := Func("String.repeat") +"".base.pad := Func("String.pad") +"".base.padRight := Func("String.padRight") +"".base.padLeft := Func("String.padLeft") +"".base.padCenter := Func("String.padCenter") +"".base.padNumber := Func("String.padNumber") +"".base.trim := Func("String.trim") +"".base.trimLeft := Func("String.trimLeft") +"".base.trimRight := Func("String.trimRight") +"".base.trimAll := Func("String.trimAll") +"".base.count := Func("String.count") +"".base.replaceAt := Func("String.replaceAt") +"".base.insertAt := Func("String.insertAt") +"".base.cutAt := Func("String.cutAt") +"".base.upper := Func("String.upper") +"".base.lower := Func("String.lower") +"".base.asRegEx := Func("String.asRegEx") +"".base.subStr := Func("String.subStr") +"".base.swap := Func("String.swap") +"".base.reverse := Func("String.reverse") +"".base.asHex := Func("String.asHex") +"".base.asBinary := Func("String.asBinary") +"".base.asNumber := Func("String.asNumber") +"".base.len := Func("String.len") +"".base.put := Func("String.put") +"".base.get := Func("String.get") +"".base.toArray := Func("String.toArray") +"".base.formatNumber:= Func("String.formatNumber") +"".base.replace := Func("String.replace") +"".base.in := Func("String.in") +"".base.wrap := Func("String.wrap") +"".base.compare := Func("String.compare") +"".base.compareAsCaseSensitiveString + := Func("String.compareAsCaseSensitiveString") +"".base.compareAsString := Func("String.compareAsString") +"".base.compareAsNumber := Func("String.compareAsNumber") +"".base.equals := Func("String.equals") +"".base.equalsString := Func("String.equalsString") +"".base.equalsCaseSensitiveString + := Func("String.equalsCaseSensitiveString") +"".base.equalsNumber := Func("String.equalsNumber") +"".base.extract := Func("String.extract") +"".base.filter := Func("String.filter") +"".base.expand := Func("String.expand") +"".base.subst := Func("String.subst") +"".base.split := Func("String.split") +"".base.printf := Func("String.printf") +"".base.hyphenate := Func("String.hyphenate") + +class String { + + ; ahklint-ignore-begin: W002 + static TRIM_LEFT := -1, TRIM_ALL := 0, TRIM_RIGHT := +1 + static PAD_LEFT := 0, PAD_CENTER := 1, PAD_RIGHT := 2, PAD_NUMBER := 3 + static ASHEX_LOWER := 0, ASHEX_UPPER := 1, ASHEX_NOPREFIX := 2, ASHEX_2DIGITS := 4 + static EXTRACT_NOBOUNDARY := 0, EXTRACT_LEFTBOUNDARY := 1, EXTRACT_RIGHTBOUNDARY := 2, EXTRACT_WITHBOUNDARY := 3 + static COMPARE_DETERMINE := 0, COMPARE_AS_STRING := 1, COMPARE_AS_CASE_SENSITIVE_STRING := 2, COMPARE_AS_NUMBER := 3 + ; ahklint-ignore-end + + __new() { + throw Exception("Instantiation of class '" + . String.__Class "' is not allowed", -1) + } + + repeat(howManyTimes=1) { + if (howManyTimes <= 0) { + return "" + } + resultString := this + loop % (howManyTimes - 1) { + this .= resultString + } + return this + } + + pad(flags=0, length="", padWith="") { + OutputDebug %A_ThisFunc% is deprecated. Use String.padLeft/.padRight/.padCenter/.padNumber instead ; ahklint-ignore: W002 + if (flags < String.PAD_LEFT || flags > String.PAD_NUMBER) { + throw Exception("Invalid padding flags", -1) + } + if (length < 0) { + throw Exception("Invalid pad size: " length) + } + $sign := "" + if (flags = String.PAD_NUMBER) { + padWith := (padWith = "" ? "0" : padWith) + if (padWith = "0" && RegExMatch(this + , "^(?[+-]?)(?.*)$", $)) { + this := $number + if ($sign) { + length-=1 + } + } + } + if (padWith = "") { + padWith := " " + } else if (StrLen(padWith) > 1) { + padWith := SubStr(padWith, 1, 1) + } + padLength := length - StrLen(this) + if (padLength < 0 && flags = String.PAD_NUMBER) { + return this + } + if (length >= StrLen(this) || flags = String.PAD_NUMBER) { + if (flags = String.PAD_LEFT || flags = String.PAD_NUMBER) { + this := padWith.repeat(padLength) this + } else if (flags = String.PAD_RIGHT) { + this := this padWith.repeat(padLength) + } else { + this := padWith.repeat(Ceil(padLength / 2)) + . this + . padWith.repeat(Floor(padLength / 2)) + } + } else { + if (flags = String.PAD_LEFT) { + this := SubStr(this, 0-StrLen(this)+2) + } else if (flags = String.PAD_RIGHT) { + this := SubStr(this, 1, length) + } else { + this := SubStr(this, 1 + Floor(StrLen(this) / 2) + - Floor(length / 2), length) + } + } + return $sign this + } + + padRight(length, padWith=" ") { + String.testPadLength(length) + padChar := SubStr(padWith, 1, 1) + return SubStr(this padChar.repeat(length), 1, length) + } + + padLeft(length, padWith=" ") { + String.testPadLength(length) + padChar := SubStr(padWith, 1, 1) + return SubStr(padChar.repeat(length) this, 0 - (length - 1)) + } + + padCenter(length, padWith=" ") { + String.testPadLength(length) + padLength := length - StrLen(this) + if (padLength < 0) { + return SubStr(this, 1 + Floor(StrLen(this) / 2) + - Floor(length / 2), length) + } + padChar := SubStr(padWith, 1, 1) + return padChar.repeat(Ceil(padLength / 2)) + . this padChar.repeat(Floor(padLength / 2)) + } + + padNumber(length, padWith="0") { + String.testPadLength(length) + if (StrLen(this) >= length) { + return this + } + padChar := SubStr(padWith, 1, 1) + if (padChar = "0" && RegExMatch(this + , "^(?[+-]?)(?.*)$", $)) { + this := $number + if ($sign) { + length-=1 + } + } else { + $sign := "" + } + return $sign this.padLeft(length, padChar) + } + + testPadLength(length) { + if (length < 0) { + throw Exception("Invalid pad size: " length) + } + } + + trim(pnTrimTo=0) { + OutputDebug %A_ThisFunc% is deprecated. Use String.trimLeft/.trimRight/.trimAll instead ; ahklint-ignore: W002 + if (pnTrimTo <= 0) { + this := RegExReplace(this, "^[\s]+", "") + } + if (pnTrimTo >= 0) { + this := RegExReplace(this, "[\s]+$", "") + } + return this + } + + trimLeft() { + return RegExReplace(this, "^[\s]+", "") + } + + trimRight() { + return RegExReplace(this, "[\s]+$", "") + } + + trimAll() { + return this.trimLeft().trimRight() + } + + count(regExToCount) { + if (regExToCount = "") { + return 0 + } + count := 0 + lookAt := 0 + while (lookAt := RegExMatch(this, regExToCount,, lookAt + 1)) { + count++ + } + return count + } + + replaceAt(from, length, replaceWith) { + if (from < 1 || from > StrLen(this)) { + throw Exception("Index out of range: " from, -1) + } + this := SubStr(this, 1, from - 1) + . replaceWith + . SubStr(this, from + length) + return this + } + + insertAt(at, insertText) { + this := SubStr(this, 1, at - 1) + . insertText + . SubStr(this, at) + return this + } + + cutAt(at, cuttingLength) { + cuttedString := "" + if (at > 1) { + cuttedString .= SubStr(this, 1, at - 1) + } + if (cuttingLength != "") { + cuttedString .= SubStr(this, at + cuttingLength) + } + return cuttedString + } + + upper() { + StringUpper this, this + return this + } + + lower() { + StringLower, this, this + return this + } + + asRegEx() { + this := StrReplace(this, "\", "\\") + this := StrReplace(this, ".", "\.") + this := StrReplace(this, "*", "\*") + this := StrReplace(this, "?", "\?") + this := StrReplace(this, "+", "\+") + this := StrReplace(this, "[" "\[") + this := StrReplace(this, "{", "\{") + this := StrReplace(this, "|", "\|") + this := StrReplace(this, "(", "\(") + this := StrReplace(this, ")", "\)") + this := StrReplace(this, "^", "\^") + this := StrReplace(this, "$", "\$") + return this + } + + subStr(from, length="") { + if (length) { + return SubStr(this, from, length) + } + return SubStr(this, from) + } + + swap(ByRef anotherString) { + tempString := anotherString + anotherString := this + return tempString + } + + reverse() { + reversedString := "" + stringLength := StrLen(this) + loop %stringLength% { + reversedString .= SubStr(this, stringLength - A_Index + 1, 1) + } + return reversedString + } + + asHex(flags=0, length=0) { + if (!RegExMatch(this, "^[+-]?\d+$")) { + throw Exception("Invalid data type, integer expcected" + , -1, "<" this ">") + } + currentIntegerFormat := A_FormatInteger + if (flags & String.ASHEX_UPPER) { + SetFormat Integer, H + } else { + SetFormat Integer, h + } + this += 0 + SetFormat Integer, D + RegExMatch(this, "i)([+-]?)(0x)([0-9a-f]+)", $) + this := $1 ((flags & String.ASHEX_NOPREFIX) ? "" : $2) + if ((flags & String.ASHEX_2DIGITS) && StrLen($3) == 1) { + this .= "0" + } + this .= $3 + if (length > 0) { + this := this.padNumber(length) + } + SetFormat Integer, %currentIntegerFormat% + return this + } + + asBinary(padLength=4, digitsToGroup="") { + static BIT_PATTERN + := { 0: "0000" , 1: "0001" , 2: "0010" , 3: "0011" + , 4: "0100" , 5: "0101" , 6: "0110" , 7: "0111" + , 8: "1000" , 9: "1001" , A: "1010" , B: "1011" + , C: "1100" , D: "1101" , E: "1110" , F: "1111" } + + if (!RegExMatch(this, "^[+-]?\d+$")) { + throw Exception("Invalid data type, integer expcected" + , -1, "<" this ">") + } + hexValue := this.asHex(String.ASHEX_NOPREFIX) + binaryValue := "" + loop % StrLen(hexValue) { + binaryValue .= BIT_PATTERN[SubStr(hexValue, A_Index, 1)] + } + if (padLength != 4) { + binaryValue := RegExReplace(binaryValue, "^0+", "") + if (padLength != 0) { + binaryValue := binaryValue.padNumber(padLength, "0") + } + } + if (digitsToGroup) { + at := digitsToGroup + 1 + while (at < StrLen(binaryValue)) { + binaryValue := binaryValue.insertAt(at, " ") + at += digitsToGroup + 1 + } + } + if (this < 0) { + binaryValue := "-" binaryValue + } + return binaryValue + } + + asNumber(inputDecimalChar=",", inputThousandsDelimiter=".") { + formattedNumber := this + withoutThousandsDelimiter := RegExReplace(formattedNumber + , "\Q" inputThousandsDelimiter "\E", "") + withoutDecimalChar := RegExReplace(withoutThousandsDelimiter + , "\Q" inputDecimalChar "\E", ".",, 1) + plainNumber := RegExReplace(withoutDecimalChar, "[^0-9+-.]", "") + return plainNumber + } + + len() { + return StrLen(this) + } + + put(ByRef var, targetEncoding="cp0") { + VarSetCapacity(var, StrPut(this, targetEncoding) + * ((targetEncoding="utf-16" + ||targetEncoding="cp1200" + ||targetEncoding="utf-8") ? 2 : 1)) + length := (StrPut(this, &var, targetEncoding)) - 1 + return length + } + + ; TODO: Document method + ; FIXME: Test method. Isn't working yet :-( + /* + get(size, sourceEncoding = "cp0") { + _str := this + st := StrGet(&_str, size, sourceEncoding) + _len := VarSetCapacity(st, -1) + this := st + return this + } + */ + + toArray(delimiters=" ", charsToOmit="", keepEmptyElements=true) { + stringToSplit := this + this := StrSplit(stringToSplit, delimiters, charsToOmit) + concat := 0 + i := 1 + while (i <= this.maxIndex()) { + if (SubStr(this[i], 1, 1) = """") { + this[i] := SubStr(this[i], 2) + concat := i++ + } else if (concat > 0 && SubStr(this[i], 0) = """") { + this[concat] .= " " SubStr(this[i], 1, StrLen(this[i])-1) + concat := 1 + this.removeAt(i) + } else if (concat > 1) { + this[concat] .= " " this[i] + this.removeAt(i) + } else { + if (!keepEmptyElements && this[i] = "") { + this.removeAt(i) + } else { + i++ + } + } + } + return this + } + + formatNumber(inputDecimalChar="." + , formatWithDecimalChar=",", formatWithThousandsDelimiter=".") { + numbersMantissa := "" + numbersFraction := "" + if (!RegExMatch(this, "^(?P[+-]?\d+)(\Q" + . inputDecimalChar + . "\E(?P\d+([eE]?[+-]?\d+)?))?$", numbers)) { + throw Exception("InvalidNumberFormat", this) + } + _len := StrLen(numbersMantissa) + loop % (_len - 1) // 3 { + numbersMantissa := numbersMantissa.insertAt(_len + 1 - (A_Index * 3) + , formatWithThousandsDelimiter) + } + return numbersFraction = "" + ? numbersMantissa + : numbersMantissa formatWithDecimalChar numbersFraction + } + + replace(searchFor, replaceWith="", replaceAllOccurences=true) { + return StrReplace(this, searchFor, replaceWith, + , (replaceAllOccurences ? -1 : 1)) + } + + in(listOfStrings*) { + commaSeparatedList := "" + while (A_Index <= listOfStrings.maxIndex()) { + commaSeparatedList .= (commaSeparatedList = "" ? "" : ",") + . listOfStrings[A_Index] + } + searchFor := this + if searchFor in %commaSeparatedList% + { + return true + } + return false + } + + wrap(length, indentWith="", initialIndent="", replaceFirstIndent=false + , fillUp=false) { + if (length < 3) { + throw Exception("MinRequiredWidth3", length) + } + wrappedString := initialIndent + endOfNextChunk := 1 + index := endOfNextChunk + length + split := 0 + while (index <= StrLen(this)) { + index := String.findPositionOfNextSpace(this, index, endOfNextChunk) + if (index = endOfNextChunk) { + chunk := SubStr(this, endOfNextChunk, length) + endOfNextChunk += length + } else { + chunk := SubStr(this + , endOfNextChunk, index - endOfNextChunk + 1) + endOfNextChunk := index + 2 + } + wrappedString .= String.composeWrappedString(String + .returnIndent(split, replaceFirstIndent, indentWith) + , chunk, fillUp, length) "`n" + index := endOfNextChunk + length + split++ + } + if (endOfNextChunk <= StrLen(this)) { + chunk := SubStr(this, endOfNextChunk) + wrappedString .= String.composeWrappedString(String + .returnIndent(split, replaceFirstIndent, indentWith) + , chunk, fillUp, length) + } + return wrappedString + } + + findPositionOfNextSpace(text, startAt, downTo) { + at := startAt + loop { + char := SubStr(text, at--, 1) + } until (at <= downTo || char == A_Space || char == A_Tab) + return at + } + + returnIndent(split, replaceFirstIndent, indentWith) { + return (split == 0 && replaceFirstIndent ? "" : indentWith) + } + + composeWrappedString(indent, wrappedString, fillUp, length) { + indentedString := indent . wrappedString + return (fillUp ? indentedString.padRight(length, " ") : indentedString) + } + + compare(compareWith, flag=0) { + OutputDebug % A_ThisFunc ": compare <" this "> with <" compareWith "> " flag ; ahklint-ignore: W002 + if (flag = String.COMPARE_AS_STRING) { + return this.compareAsString(compareWith) + } else if (flag = String.COMPARE_AS_CASE_SENSITIVE_STRING) { + return this.compareAsCaseSensitiveString(compareWith) + } else { + if (RegExMatch(this, "^[+-]?\d+(\.\d+)*([eE][+-]?\d)*$")) { + return this.compareAsNumber(compareWith) + } + return this.compareAsCaseSensitiveString(compareWith) + } + } + + compareAsString(compareWith) { + compareThisString := this "$" + compareWithString := compareWith "$" + return (compareThisString = compareWithString ? 0 + : compareThisString > compareWithString ? +1 + : -1) + } + + compareAsCaseSensitiveString(compareWith) { + scs := A_StringCaseSense + StringCaseSense on + compareThisString := this "$" + compareWithString := compareWith "$" + result := (compareThisString == compareWithString ? 0 + : compareThisString > compareWithString ? +1 + : -1) + StringCaseSense %scs% + return result + } + + compareAsNumber(compareWith) { + return (this = compareWith ? 0 + : this > compareWith ? +1 + : -1) + } + + equals(compareWith, caseSensitive=true) { + return this.compare(compareWith, caseSensitive) == 0 + } + + equalsString(compareWith) { + return this.compareAsString(compareWith) == 0 + } + + equalsCaseSensitiveString(compareWith) { + return this.compareAsCaseSensitiveString(compareWith) == 0 + } + + equalsNumber(compareWith) { + return this.compareAsNumber(compareWith) == 0 + } + + extract(fromString, toString, includeBoundaries=0) { + if (fromString) { + p1 := InStr(this, fromString) + if (!(includeBoundaries & String.EXTRACT_LEFTBOUNDARY)) { + p1 += 1 + } + } else { + p1 := 1 + } + p2 := InStr(this, toString,, p1) + if (includeBoundaries & String.EXTRACT_RIGHTBOUNDARY) { + p2 += 1 + } + return this.subStr(p1, p2-p1) + } + + filter(filterExpression, filterIsRegularExpression=false + , ignoreCase=false, invertMatch=false, ByRef match="") { + if (!filterIsRegularExpression) { + filterExpression := RegExReplace(filterExpression + , "([^*?]+)", "\Q$1\E") + filterExpression := StrReplace(filterExpression, "*", ".*") + filterExpression := StrReplace(filterExpression, "?", ".?") + filterExpression := "^" filterExpression "$" + } + if (!ignoreCase && RegExMatch(filterExpression + , "^([msxADJUXOPSC]|`n|`r|`a|(?Pi))*?\)", has_)) { + if (has_i) { + ignoreCase := true + } + } + filterExpression := RegExReplace(filterExpression + , "^([imsxADJUXOPSC]|`n|`r|`a)+\)", "") + if (ignoreCase) { + filterExpression := "iO)" filterExpression + } else { + filterExpression := "O)" filterExpression + } + p := RegExMatch(this, filterExpression, match) + if (invertMatch) { + p := !p + } + return p + } + + expand(expandBy, howOften, delimiter="`n") { + if (howOften <= 0) { + return "" + } + if (this != "") { + tokens := StrSplit(this, delimiter) + numberOfTokens := tokens.maxIndex() + if (tokens[numberOfTokens] = "") { + tokens.removeAt(numberOfTokens) + numberOfTokens := tokens.maxIndex() + } + } else { + numberOfTokens := 0 + } + loop % (howOften - numberOfTokens) { + this .= expandBy + } + return this + } + + subst(pstSubst*) { + OutputDebug %A_ThisFunc% is deprecated. Use String.Printf instead ; ahklint-ignore: W002,W009 + loop % pstSubst.maxIndex() { + p := RegExMatch(this, "%(?[si])(?[+-]?\d+)*", $) + ps := StrLen($) + if ($size = "") { + _subst := pstSubst[A_Index] + } else if ($type = "s") { + if ($size > 0) { + _subst := (pstSubst[A_Index]).padRight($size, " ") + } else if ($size < 0) { + _subst := (pstSubst[A_Index]).padLeft(Abs($size), " ") + } else { + _subst := pstSubst[A_Index] + } + } else if ($type = "i") { + _subst := (pstSubst[A_Index]) + .padLeft($size, (SubStr($size, 1, 1)="0" ? "0" : " ")) + } + this := (p > 1 ? SubStr(this, 1, p-1) : "") + . _subst SubStr(this, p+ps) + } + return this + } + + split(delimitingRegEx) { + parts := { surround: [] + , delimiter: [] + , all: [] } + if (delimitingRegEx == "") { + parts.surround := [this] + parts.all := [this] + return parts + } + startAt := 1 + positionWithinThis := 1 + while (delimiterFoundAt := (RegExMatch(this, delimitingRegEx + , delimiter, startAt))) { + surroundPartLength := delimiterFoundAt - positionWithinThis + if (surroundPartLength > 0) { + surroundPart := SubStr(this + , positionWithinThis, surroundPartLength) + parts.surround.push(surroundPart) + parts.all.push(surroundPart) + } + parts.delimiter.push(delimiter) + parts.all.push(delimiter) + startAt := delimiterFoundAt + StrLen(delimiter) + positionWithinThis := startAt + } + if (positionWithinThis <= StrLen(this)) { + remainingSurroundPart := SubStr(this, positionWithinThis) + parts.surround.push(remainingSurroundPart) + parts.all.push(remainingSurroundPart) + } + return parts + } + + unSplit(parts) { + concatedString := "" + if (parts.delimiter[1] == parts.all[1]) { + loop % parts.delimiter.maxIndex() { + concatedString .= parts.delimiter[A_Index] + concatedString .= parts.surround[A_Index] + } + } else { + loop % parts.surround.maxIndex() { + concatedString .= parts.surround[A_Index] + concatedString .= parts.delimiter[A_Index] + } + } + return concatedString + } + + printf(placeHolderValues*) { + return PrintfHelper.printf(this, placeHolderValues) + } + + hyphenate(hyphenateAt=-1, hyphenChar="") { + return HyphenationHelper.hyphenate(this, hyphenateAt, hyphenChar) + } +} +; vim: ts=4:sts=4:sw=4:tw=0:noet diff --git a/more libs/Various1/lib/system.ahk b/more libs/Various1/lib/system.ahk new file mode 100644 index 00000000..4184c10f --- /dev/null +++ b/more libs/Various1/lib/system.ahk @@ -0,0 +1,399 @@ +class System { + + static FORMAT_MESSAGE_ALLOCATE_BUFFER := 0x00000100 + static FORMAT_MESSAGE_ARGUMENT_ARRAY := 0x00002000 + static FORMAT_MESSAGE_FROM_HMODULE := 0x00000800 + static FORMAT_MESSAGE_FROM_STRING := 0x00000400 + static FORMAT_MESSAGE_FROM_SYSTEM := 0x00001000 + static FORMAT_MESSAGE_IGNORE_INSERTS := 0x00000200 + static FORMAT_MESSAGE_MAX_WIDTH_MASK := 0x000000FF + + static vArgs = System.__vArgs() + + __new() { + throw Exception("Instantiation of class '" + . System.__Class "' is not allowed") + } + + __vArgs() { + global + local _argList := [] + + loop %0% { + _argList.push(%A_Index%) + } + + return _argList + } + + getLastError() { + return DllCall("GetLastError", UInt) + } + + formatMessage(dwFlags=0, lpSource=0, dwMessageId=0, dwLanguageId=0 + , ByRef lpBuffer="", nSize=0, va_list*) { + nSize := (A_IsUnicode ? 2 * nSize : nSize) + VarSetCapacity(lpBuffer, nSize, 0) + + if (dwFlags & System.FORMAT_MESSAGE_ARGUMENT_ARRAY) { + VarSetCapacity(pArgs, va_list.maxIndex() * A_PtrSize, 0) + _ofs := 0 + loop % va_list.maxIndex() { + NumPut(va_list[A_Index], pArgs, _ofs, "Ptr") + _ofs += A_PtrSize + } + } else { + pArgs := 0 + } + + nChars := DllCall("FormatMessage" + , "UInt", dwFlags + , "Ptr", lpSource + , "UInt", dwMessageId + , "UInt", dwLanguageId + , "Ptr", &lpBuffer + , "UInt", nSize + , "Ptr", &pArgs + , "UInt") + + VarSetCapacity(lpBuffer, -1) + return nChars + } + + newUuid() { + try { + VarSetCapacity(_uuid,16) + DllCall("Rpcrt4\UuidCreate","Str", _uuid) + DllCall("Rpcrt4\UuidToString", "Ptr", &_uuid + , "Ptr *", pStr := 0, "Int") + System.strCpy(pStr, stUuid) + } catch _ex { + throw _ex + } + return stUuid + } + + arrayCopy(ByRef src, srcPos, ByRef dest, destPos, length) { + if (!IsObject(src)) { + throw Exception("InvalidArrayException: src: " src) + } + if (!IsObject(dest)) { + throw Exception("InvalidArrayException: dest: " dest) + } + if (srcPos < src.minIndex()) { + throw Exception("IndexOutOfBoundsException: srcPos < " + . src.minIndex() ": " srcPos) + } + if (srcPos > src.maxIndex()) { + throw Exception("IndexOutOfBoundsException: srcPos > " + . src.maxIndex() ": " srcPos) + } + if (destPos < dest.minIndex()) { + throw Exception("IndexOutOfBoundsException: destPos < " + . dest.minIndex() ": " destPos) + } + if (destPos > dest.maxIndex()) { + throw Exception("IndexOutOfBoundsException: destPos > " + . dest.maxIndex() ": " destPos) + } + loop %length% { + dest[destPos + (A_Index - 1)] := src[srcPos + (A_Index - 1)] + } + } + + strCpy(ByRef ptr, ByRef string) { + if (A_IsUnicode) { + ptrLen := DllCall("lstrlenW", "Ptr", ptr) + VarSetCapacity(string, ptrLen * 2) + return DllCall("lstrcpyW", "WStr", string, "Ptr", ptr) + } + ptrLen := DllCall("lstrlenA", "Ptr", ptr) + VarSetCapacity(string, ptrLen) + return DllCall("lstrcpyA", "AStr", string, "Ptr", ptr) + } + + strPut(st, ByRef var, encoding, ret_as_str=false) { + VarSetCapacity(var, StrPut(st, encoding) + * ((encoding = "utf-16" || encoding = "cp1200") ? 2 : 1)) + length := StrPut(st, &var, encoding) + if (!ret_as_str) { + return length + } + VarSetCapacity(var, -1) + return var + } + + ptrListToStrArray(ByRef ptr, add_empty_element=true) { + aStr := [] + loop { + OutputDebug % "ptr = " &ptr + _addr := NumGet(ptr+0, 0, "Ptr") + OutputDebug _addr=%_addr% + if (!_addr) { + if (add_empty_element) { + aStr.push("") + } + break + } + System.strCpy(_addr, _st) + OutputDebug _st=%_st% + aStr.push(_st) + ptr += A_PtrSize + } + return aStr + } + + strArrayToPtrList(ByRef a, ByRef ptr) { + i := a.minIndex() + s := 0 + if (i) { + s := VarSetCapacity(ptr, (a.maxIndex() - a.minIndex() + 1) + * A_PtrSize) + while (i <= a.maxIndex()) { + NumPut(a.getAddress(i), ptr, (A_Index - 1) * A_PtrSize, "Ptr") + i++ + } + } + + return s + } + + strArrayToStrArrayList(ByRef a, ByRef ptr) { + i := a.minIndex() + l := 1 + while (i <= a.maxIndex()) { + l += StrLen(a[i++]) + 1 + } + s := VarSetCapacity(ptr, l * (A_IsUnicode ? 2 : 1), 0) + i := a.minIndex() + _ofs := 0 + while (i <= a.maxIndex()) { + l := (StrLen(a[i]) + 1)*(A_IsUnicode ? 2 : 1) + StrPut(a[i], &ptr+_ofs, l) + _ofs+=l + i++ + } + return s + } + + ptrList(ByRef p, a*) { + s := VarSetCapacity(p, (a.maxIndex() - a.minIndex() + 1) * A_PtrSize, 0) + ofs := 0 + i := a.minIndex() + while (i <= a.maxIndex()) { + NumPut(a[i++], p, ofs, "Ptr") + ofs += A_PtrSize + } + return s + } + + envGet(var_name) { + EnvGet content, %var_name% + return content + } + + which(file, dirs=".", exts="*", all_matches=false) { + SplitPath file, file_name, file_dir, file_ext, file_name_no_ext + if (!file_ext) { + if (!IsObject(exts) && exts != "") { + exts := StrSplit(exts, ";") + } + } else { + exts := [ file_ext ] + } + if (!file_dir) { + if (!IsObject(dirs) && dirs != "") { + dirs := StrSplit(dirs, ";") + } + } + loop % exts.maxIndex() { + if (SubStr(exts[A_Index], 1, 1) != ".") { + exts[A_Index] := "." exts[A_Index] + } + } + + found := [] + if (file_dir = "") { + loop % dirs.maxIndex() { + search_path := dirs[A_Index] + loop % exts.maxIndex() { + search_file := search_path + . "\" file_name_no_ext exts[A_Index] + if (RegExMatch(FileExist(search_file), "[RASHNOCT]")) { + found.push(search_file) + if (!all_matches) { + break + } + } + } + } + } else { + loop % exts.maxIndex() { + search_file := file_dir "\" file_name_no_ext exts[A_Index] + if (RegExMatch(FileExist(search_file), "[RASHNOCT]")) { + found.push(search_file) + if (!all_matches) { + break + } + } + } + } + if (!all_matches) { + return found[1] + } + return found + } + + runProcess(Command, Stream_To="", Working_Dir="", Input_Data="") { + DllCall("CreatePipe" + , "Ptr*", H_StdIn_Reader + , "Ptr*" ,H_StdIn_Writer + , "UInt", 0 + , "UInt", 0) + + DllCall("CreatePipe" + , "Ptr*", H_StdOut_Reader + , "Ptr*", H_StdOut_Writer + , "UInt", 0 + , "UInt" ,0) + + DllCall("SetHandleInformation" + , "Ptr", H_StdIn_Reader + , "UInt", 1 + , "UInt", 1) + + DllCall("SetHandleInformation" + , "Ptr", H_StdOut_Writer + , "UInt", 1 + , "UInt", 1) + + if (A_PtrSize = 4) { + VarSetCapacity(Process_Info, 16, 0) + Startup_Info_Size := VarSetCapacity(Startup_Info, 68, 0) + NumPut(Startup_Info_Size, Startup_Info, 0, "UInt") + NumPut(0x100, Startup_Info, 44, "UInt") + NumPut(H_StdIn_Reader, Startup_Info, 56, "Ptr") + NumPut(H_StdOut_Writer, Startup_Info, 60, "Ptr") + NumPut(H_StdOut_Writer, Startup_Info, 64, "Ptr") + } else if (A_PtrSize = 8) { + VarSetCapacity(Process_Info, 24, 0) + Startup_Info_Size := VarSetCapacity(Startup_Info, 96, 0) + NumPut(Startup_Info_Size, Startup_Info, 0, "UInt") + NumPut(0x100, Startup_Info, 60, "UInt") + NumPut(H_StdIn_Reader, Startup_Info, 80, "Ptr") + NumPut(H_StdOut_Writer, Startup_Info, 88, "Ptr") + NumPut(H_StdOut_Writer, Startup_Info, 96, "Ptr") + } + + DllCall("CreateProcess" + , "UInt", 0 + , "Ptr", &Command + , "UInt", 0 + , "UInt", 0 + , "Int", true + , "UInt", 0x08000000 + , "UInt", 0 + , "Ptr", Working_Dir ? &Working_Dir : 0 + , "Ptr", &Startup_Info + , "Ptr", &Process_Info) + + if (Input_Data != "") { + FileOpen(H_StdIn_Writer, "h", "CP0").write(Input_Data) + } + + Stream_To+0 ? (Alloc_Console := DllCall("AllocConsole") + , H_Console := DllCall("CreateFile" + , "Str", "CON" + , "UInt", 0x40000000 + , "UInt", Alloc_Console ? 0 : 3 + , "UInt", 0 + , "UInt", 3 + , "UInt", 0 + , "UInt", 0 + , "Ptr")) + : "" + DllCall("CloseHandle", "Ptr", H_StdOut_Writer) + loop { + Result := DllCall("ReadFile" + , "Ptr", H_StdOut_Reader + , "Ptr", &S_Temp + , "UInt", N_Temp + , "UIntP", N_Size := 0 + , "UInt", 0) + if (Result = 0) { + break + } else { + NumPut(0, S_Temp, N_Size, "UChar") + VarSetCapacity(S_Temp, -1) + Output .= StrGet(&S_Temp, N_Size, "CP0") + if (Stream_To) { + loop { + if (RegExMatch(Output, "[^\n]*\n", S_Trim, N_Trim)) { + Stream_To+0 ? DllCall("WriteFile" + , "Ptr", H_Console + , "Ptr", &S_Trim + , "UInt", StrLen(S_Trim) + , "UIntP", 0 + , "UInt", 0) + : %Stream_To%(S_Trim) + , N_Trim += StrLen(S_Trim) + } else { + break + } + } + } + } + } + + Stream_To+0 ? (DllCall("Sleep", "UInt", 1000) + , H_Console+1 ? DllCall("CloseHandle", "Ptr", H_Console) + : "", Alloc_Console ? DllCall("FreeConsole") : "") : "" + + Wait_Result := DllCall("WaitForSingleObject" + , "Ptr", NumGet(Process_Info, 0, "Ptr") + , "UInt", 0xFFFFFFFF ; INFINITE + , "UInt") + + DllCall("CloseHandle", "Ptr", NumGet(Process_Info, 0, "Ptr")) + + DllCall("CloseHandle", "Ptr", NumGet(Process_Info, A_PtrSize, "Ptr")) + + DllCall("CloseHandle", "Ptr", H_StdIn_Writer) + + DllCall("CloseHandle", "Ptr", H_StdIn_Reader) + + DllCall("CloseHandle", "UInt", H_StdOut_Reader) + + return Output + } + + typeOf(var, type="") { + types := [] + + if (type) { + if (type = "object" && IsObject(var)) { + return true + } + if var is %type% + { + return true + } else { + return false + } + } else { + type_list := ["integer", "float", "number", "digit", "xdigit" + , "alpha", "upper", "lower", "alnum", "space", "time"] + for i, t in type_list { + if var is %t% + { + types.push(t) + } + } + if (IsObject(var)) { + types.push("object") + } + return types + } + } +} +; vim: ts=4:sts=4:sw=4:tw=0:noet diff --git a/more libs/Various1/lib/testcase.ahk b/more libs/Various1/lib/testcase.ahk new file mode 100644 index 00000000..08f556a1 --- /dev/null +++ b/more libs/Various1/lib/testcase.ahk @@ -0,0 +1,606 @@ +#Include + +#Include %A_LineFile%\..\modules\testcase\ +#Include TestData.ahk +#Include LoggingHelper.ahk + +class TestCase { + + requires() { + return [DataTable, App] + } + + static lAPIOverhead := TestCase.initAPIOverhead() + static lFrequency := TestCase.initFrequency() + static testOut := TestCase.openTestOutForOutput() + + static duration := 0.0 + static allSuccessfulTestsDuration := 0.0 + static stopOnFirstError := false + + static SUCCESSFUL := 1 + static SUCCESSFUL_SYMBOL := Chr(0x2714) + static FAILED := 0 + static FAILED_SYMBOL := Chr(0x274c) + static UNKNOWN := "" + static NOT_RUN := -1 + + static IGNORE_CASE := 1 + static AS_STRING := 2 + + static GREEN := "" + static RED := "" + static BLUE := "" + static YELLOW := "" + static MAGENTA := "" + static CYAN := "" + static WHITE := "" + static RESET := "" + + __new() { + throw Exception("Instantiation of class '" this.__Class + . "' ist not allowed", -1) + } + + openTestOutForOutput() { + testOut := FileOpen("*", "w `n", "utf-8") + testOut.read(0) + return testOut + } + + initAPIOverhead() { + DllCall("QueryPerformanceCounter", "Int64 *", start := 0) + DllCall("QueryPerformanceCounter", "Int64 *", end := 0) + return end - start + } + + initFrequency() { + DllCall("QueryPerformanceFrequency", "Int64 *", freqency := 0) + return freqency + } + + runTests(selectedTestNames*) { + App.checkRequiredClasses(this) + TestData.testClass := this + TestCase.handleStopOnFirstError() + selectedTestNames.push(A_Args*) + TestCase.selectTests(selectedTestNames*) + if (TestCase.findTestsAndFixtures(TestData.testClass)) { + TestCase.runBeforeClassFixtures() + TestCase.runSelectedTests() + TestCase.runAfterClassFixtures() + TestCase.writeTestSummary() + } else { + TestCase.writeLine("No tests found") + } + TestCase.writeLine("`n") + TestCase.logTestResultSummaryToDebugOut() + return TestData.numberOfFailingTests + } + + handleStopOnFirstError() { + if (A_Args.maxIndex() != "" && A_Args[A_Args.maxIndex()] == "-S") { + OutputDebug Halt on first error + TestCase.stopOnFirstError := true + A_Args.removeAt(A_Args.length()) + } + } + + selectTests(selectedTestNames*) { + while (A_Index <= selectedTestNames.maxIndex()) { + selectedTestName := selectedTestNames[A_Index] + OutputDebug Select %selectedTestName% + TestData.selectedTestNames[selectedTestName] := "" + } + } + + findTestsAndFixtures(classToTest) { + if (classToTest.base) { + TestCase.findTestsAndFixtures(classToTest.base) + } + for classPropertyName, classProperty in classToTest { + if (IsFunc(classProperty) == 2 + && RegExMatch(classPropertyName, "i)^@Test.+")) { + TestCase.addTest(classPropertyName, classProperty) + } else if (IsFunc(classProperty) == 2 + && RegExMatch(classPropertyName, "i)^@BeforeClass.+")) { + TestCase.addBeforeClassFixture(classPropertyName, classProperty) + } else if (IsFunc(classProperty) = 2 + && RegExMatch(classPropertyName, "i)^@Before(?!Class).+")) { + TestCase.addBeforeFixture(classPropertyName, classProperty) + } else if (IsFunc(classProperty) = 2 + && RegExMatch(classPropertyName, "i)^@AfterClass.+")) { + TestCase.addAfterClassFixture(classPropertyName, classProperty) + } else if (IsFunc(classProperty) = 2 + && RegExMatch(classPropertyName, "i)^@After(?!Class).+")) { + TestCase.addAfterFixture(classPropertyName, classProperty) + } else if (IsObject(classProperty)) { + TestCase.findTestsAndFixtures(classProperty) + } + } + return TestData.testNames.count() + } + + runBeforeClassFixtures() { + for iFixture, _fixture in TestData.beforeClassFixtureNames { + OutputDebug Run %_fixture% + TestData.testClass[_fixture].(TestData.testClass) + } + } + + runAfterClassFixtures() { + for iFixture, _fixture in TestData.afterClassFixtureNames { + OutputDebug Run %_fixture% + TestData.testClass[_fixture].(TestData.testClass) + } + } + + runSelectedTests() { + TestCase.writeLine("`n" TestCase.WHITE + . "Running " A_ScriptName + . TestCase.RESET) + for objectReference, testName in TestData.testNames { + if (TestData.selectedTestNames.count() == 0 + || TestData.selectedTestNames.hasKey(testName)) { + TestCase.runBeforeFixtures() + try { + TestCase.performTestFunction(testName, TestData.testClass) + } catch gotException { + TestCase.testFailed(testName, gotException) + if (TestCase.stopOnFirstError) { + break + } + } + TestCase.runAfterFixtures() + } + } + } + + runBeforeFixtures() { + for iFixture, _fixture in TestData.beforeFixtureNames { + OutputDebug Run %_fixture% + TestData.testClass[_fixture].(TestData.testClass) + } + } + + runAfterFixtures() { + for iFixture, _fixture in TestData.afterFixtureNames { + OutputDebug Run %_fixture% + TestData.testClass[_fixture].(TestData.testClass) + } + } + + performTestFunction(testName, testClass) { + OutputDebug Run %testName% + TestCase.write(" " testName "...") + TestData.assertionCounter := 0 + TestCase.performDependencies(testName, testClass) + TestData.performedTestNames[testName] := true + testStartTime := TestCase.clock() + res := testClass[testName].(testClass) + testEndTime := TestCase.clock() + TestCase.duration := TestCase.testDuration(testStartTime, testEndTime) + OutputDebug % testName " (" TestCase.duration * 1000 "ms)" + TestCase.allSuccessfulTestsDuration += TestCase.duration + durationInMSec := Round(TestCase.duration * 1000, 0) + TestCase.writeLine(" " + . TestCase.GREEN + . TestCase.SUCCESSFUL_SYMBOL + . TestCase.RESET + . " " testName + . TestCase.YELLOW + . (durationInMSec == 0 ? "" : " (" durationInMSec "ms)") + . TestCase.RESET "") + TestData.testState[testName] := TestCase.SUCCESSFUL + TestData.numberOfPassingTests++ + return res + } + + performDependencies(testName, testClass) { + if (testClass.hasKey("@Depend_" testName)) { + dependendTestsNames := testClass["@Depend_" testName]() + dependendTests := StrSplit(dependendTestsNames, ",", " `t`r`n") + while (A_Index <= dependendTests.maxIndex()) { + dependendTestName := dependendTests[A_Index] + OutputDebug Run %dependendTestName% <-%testName% + if (!TestData.performedTestNames.hasKey(dependendTestName)) { + TestData.performedTestNames[testName] := true + try { + TestCase.performTestFunction(dependendTestName + , testClass) + TestData.testState[dependendTestName] := true + } catch _ex { + TestData.testState[dependendTestName] := false + throw Exception("Depending test failed: " + . dependendTestName ": " + . _ex.message ": " _ex.extra) + } + } else { + OutputDebug Skip %dependendTestName% <-%testName% + } + } + } + } + + testFailed(testName, exceptionReceived) { + TestCase.writeLine(" " + . TestCase.RED + . TestCase.FAILED_SYMBOL + . TestCase.RESET + . " " testName + . TestCase.RESET + . "") + TestData.numberOfFailingTests++ + TestData.failedTests.push(Object("strTest", testName + , "ex", exceptionReceived + , "failedAtAssertion", TestData.assertionCounter)) + TestData.testState[testName] := TestCase.FAILED + TestCase.failedAssertionSource[testName] + := TestCase.getAssertionSource(testName + , TestData.assertionCounter) + } + + testDuration(startTime, endTime) { + return (endTime - startTime - TestCase.lAPIOverhead) + / TestCase.lFrequency + } + + addTest(classPropertyName, classProperty) { + TestData.testNames[Object(classProperty)] := classPropertyName + TestCase.registerTest(classPropertyName) + OutputDebug % "Add Test " classPropertyName + } + + addBeforeClassFixture(classPropertyName, classProperty) { + TestData.beforeClassFixtureNames[Object(classProperty)] + := classPropertyName + OutputDebug % "Add BeforeClass fixture " classPropertyName + } + + addBeforeFixture(classPropertyName, classProperty) { + TestData.beforeFixtureNames[Object(classProperty)] := classPropertyName + OutputDebug % "Add Before fixture " classPropertyName + } + + addAfterClassFixture(classPropertyName, classProperty) { + TestData.afterClassFixtureNames[Object(classProperty)] + := classPropertyName + OutputDebug % "Add AfterClass fixture " classPropertyName + } + + addAfterFixture(classPropertyName, classProperty) { + TestData.afterFixtureNames[Object(classProperty)] := classPropertyName + OutputDebug % "Add After fixture " classPropertyName + } + + write(text="") { + TestCase.testOut.write(text) + TestCase.testOut.read(0) + } + + writeLine(text="") { + TestCase.testOut.writeLine(text) + TestCase.testOut.read(0) + } + + writeTestSummary() { + TestCase.writeLine("`n`n" TestCase.GREEN + . TestData.numberOfPassingTests " passing" + . TestCase.RESET + . " (" + . Round(TestCase.allSuccessfulTestsDuration * 1000, 0) + . "ms)") + TestCase.writeLine(TestCase.RED + . TestData.numberOfFailingTests " failing" + . TestCase.RESET) + for i, failedTest in TestData.failedTests { + TestCase.writeLine() + TestCase.writeLine(TestCase.WHITE + . i ") " failedTest.strTest + . " fails when executing assertion #" + . failedTest.failedAtAssertion + . failedTest.ex.extra + . TestCase.RESET + . "`n") + TestCase.writeLine("`t" + . TestCase.RED + . failedTest.ex.message + . TestCase.RESET + . "`n") + TestCase.writeLine("`t" + . TestCase.failedAssertionSource[failedTest.strTest] + . "`n") + } + } + + clock() { + DllCall("QueryPerformanceCounter", "Int64 *", currentTime := 0) + return currentTime + } + + assert(expression, messageText="AssertionError") { + TestData.assertionCounter++ + if (expression == true) { + return true + } + TestCase.reportError(expression == true, true, messageText) + } + + assertSame(actualValue, expectedValue, messageText="AssertionError") { + TestData.assertionCounter++ + if (!IsObject(actualValue)) { + TestCase.reportError(actualValue, "" + , "First argument has to be an object") + } + if (!IsObject(expectedValue)) { + TestCase.reportError(expectedValue, "" + , "Second argument has to be an object") + } + if (!(Object(expectedValue) = Object(actualValue))) { + TestCase.reportError("@" Object(actualValue) + , "@" Object(expectedValue), messageText) + } + return true + } + + assertEquals(actualValue, expectedValue, messageText="AssertionError") { + TestData.assertionCounter++ + areBothValuesFromTheSameType := ((actualValue + 0) == actualValue) + == ((expectedValue + 0) == expectedValue) + if (!areBothValuesFromTheSameType || !(actualValue == expectedValue)) { + TestCase.reportError(actualValue, expectedValue, messageText) + } + return actualValue + } + + assertEqualsIgnoreCase(actualValue, expectedValue + , messageText="AssertionError") { + StringUpper actualValueUpCase, actualValue + StringUpper expectedValueUpCase, expectedValue + if (TestCase.assertEquals(actualValueUpCase, expectedValueUpCase + , messageText)) { + return actualValue + } + } + + assertTrue(expression="", messageText="AssertionError") { + TestData.assertionCounter++ + if (expression == "" || !expression) { + TestCase.reportError(expression, true, messageText) + } + return expression + } + + assertFalse(expression, messageText="AssertionError") { + TestData.assertionCounter++ + if (expression == "" || !(expression == false)) { + TestCase.reportError(expression, true, messageText) + } + return expression + } + + assertEmpty(actualValue, messageText="AssertionError") { + TestData.assertionCounter++ + if (actualValue != "") { + TestCase.reportError(IsObject(actualValue) + ? "@" Object(actualValue) + : actualValue + , "", messageText) + } + return actualValue + } + + assertNotEmpty(actualValue, messageText="AssertionError") { + TestData.assertionCounter++ + if (actualValue == "") { + TestCase.reportError(actualValue, "", messageText) + } + return actualValue + } + + assertException(baseObject, methodName, messageText="AssertionException" + , expectedExceptionRegEx="", parms*) { + TestData.assertionCounter++ + gotAnException := false + caughtException := "" + try { + methodQualifier := "" + if (IsObject(baseObject)) { + functionObject := baseObject[methodName] + if (baseObject.__Class = "") { + methodQualifier := """"".base." + functionObject.(parms*) + } else { + methodQualifier := baseObject.__Class "." + functionObject.(baseObject, parms*) + } + } else { + functionObject := Func(methodName) + functionObject.(parms*) + } + gotAnException := false + } catch caughtException { + gotAnException := RegExMatch(caughtException.message + , expectedExceptionRegEx) + } + if (!gotAnException) { + testee := methodQualifier methodName + TestCase.processException(messageText, caughtException, testee + , parms*) + } + } + + processException(messageText, caughtException, testee, parms*) { + if (messageText = "") { + messageText := "AssertionError" + } + strParmList := "" + for i, _parm in parms { + strParmList .= (strParmList = "" ? "" : ";") + . i "=" (IsObject(_parm) + ? "@" Object(_parm) + : _parm) + } + throw Exception(messageText, -1 + , (caughtException.message == "" + ? "" : caughtException.message ": ") + . "Expected " testee + . " to throw an exception but didn't get one; " strParmList) + } + + fileContent(fileName) { + FileRead content, %fileName% + return content + } + + fail(messageText, extraInfo="", terminateProgram=false) { + if (!terminateProgram) { + throw Exception(messageText, -1, extraInfo) + } else { + TestCase.write("`n`n" messageText ":" extraInfo "`n`n") + exitapp -1 + } + } + + stateName(state) { + if (state = TestCase.UNKNOWN) { + return "Unknown test" + } else if (state = TestCase.NOT_RUN) { + return "Did not run" + } else if (state = TestCase.SUCCESSFUL) { + return "Successfull" + } else if (state = TestCase.FAILED) { + return "Failed" + } + return "Unknown state: " state + } + + visibleCtrls(st, compareTo="") { + StringReplace st, st, `r,, All + StringReplace st, st, `n, ¶`n, All + StringReplace st, st, %A_Space%, ·, All + if (compareTo) { + _st := st + StringReplace compareTo, compareTo, `r,, All + StringReplace compareTo, compareTo, `n, ¶`n, All + StringReplace compareTo, compareTo, %A_Space%, ·, All + res := "" + l_st := StrLen(st) + l_ct := StrLen(compareTo) + p := 1 + diff := false + while (p <= l_st && p <= l_ct) { + c_st := SubStr(st, p, 1) + c_ct := SubStr(compareTo, p, 1) + if (Asc(c_st) != Asc(c_ct)) { + if (diff = false) { + res .= "" + diff := true + } + } else if (diff) { + res .= "" + diff := false + } + res .= c_st + p++ + } + st := res "" + if (p <= l_st) { + st .= "" SubStr(_st, p) "" + } + } + return st + } + + registerTest(test) { + TestData.testState[test] := TestCase.NOT_RUN + if (StrLen(test) > TestCase.longestTestName) { + TestCase.longestTestName := StrLen(test) + } + } + + didNotRun(test) { + return (TestData.testState[test] = TestCase.NOT_RUN) + } + + didRun(test) { + return !TestCase.didNotRun(test) + } + + wasSuccessful(test) { + return TestData.testState[test] = TestCase.SUCCESSFUL + } + + hasFailed(test) { + return TestData.testState[test] = TestCase.FAILED + } + + isUnknwon(test) { + return TestData.testState[test] = TestCase.UNKNOWN + } + + isKnown(test) { + return !TestCase.isUnknwon(test) + } + + reportError(actualValue, expectedValue, messageText) { + throw Exception(messageText, -1 + , "`n" TestCase.GREEN "Expected:`n" + . TestCase.RESET expectedValue + . TestCase.RED + . "`nbut got:`n" + . TestCase.RESET + . TestCase.visibleCtrls(actualValue, expectedValue)) + } + + getAssertionSource(testName, assertionNumber) { + static testSourceCode := "" + + if (testSourceCode) == "" { + testSourceCode := TestCase.loadTestSourceFile() + } + testAt := RegExMatch(testSourceCode, "im`a)" testName "\(.*\)\s+\{", $) + findAssertionAt := testAt + StrLen($) + loop { + findAssertionAt := RegExMatch(testSourceCode + , "im`a)assert(Same|Equals(IgnoreCase)?|" + . "True|False|(Not)?Empty|Exception)?" + , assertion, findAssertionAt) + findAssertionAt += StrLen(assertion) + 1 + } until (A_Index >= assertionNumber) + loop { + char := SubStr(testSourceCode, --findAssertionAt, 1) + } until (char == "`n" || char == "`r") + RegExMatch(testSourceCode, "m`a)\s*(?P.*?)\s*?$" + , assertion, findAssertionAt+1) + lines := StrSplit(SubStr(testSourceCode, 1, findAssertionAt) + , "`n", "`r") + return lines.maxIndex() ": " assertionSource + } + + loadTestSourceFile() { + FileRead testSourceCode, %A_ScriptFullPath% + startAt := 1 + while (foundAt := (RegExMatch(testSourceCode + , "ms`a)(?<=\/\*)(.*?)(?=\*\/)|(`;.*?$)", pattern, startAt))) { + testSourceCode := SubStr(testSourceCode, 1, foundAt - 1) + . RegExReplace(pattern, "\w", "X") + . SubStr(testSourceCode, foundAt + StrLen(pattern)) + startAt := foundAt + StrLen(pattern) + 1 + } + return testSourceCode + } + + logTestResultSummaryToDebugOut() { + summaryTable := new DataTable() + summaryTable.defineColumn(new DataTable.Column( + , DataTable.COL_RESIZE_USE_LARGEST_DATA)) + summaryTable.defineColumn(new DataTable.Column( + , DataTable.COL_RESIZE_USE_LARGEST_DATA)) + summaryTable.addData(["TESTNAME", "RESULT"]) + for testName, testState in TestData.testState { + summaryTable.addData([testName, TestCase.stateName(testState)]) + } + OutputDebug % "`n" summaryTable.getTableAsString("| ", " | ", " |") + } +} diff --git a/more libs/Various1/long-test.ahk b/more libs/Various1/long-test.ahk new file mode 100644 index 00000000..a5fa0cec --- /dev/null +++ b/more libs/Various1/long-test.ahk @@ -0,0 +1,43 @@ +; ahk: console +#NoEnv +SetBatchLines -1 +#Warn All, StdOut + +#Include + +#Include %A_ScriptDir%\..\long.ahk + +class LongTest extends TestCase { + + @Test_ToUnsignedString() { + this.assertEquals(Long.toUnsignedString(-102, 1) + , 18446744073709551514) + this.assertEquals(Long.toUnsignedString(UL(-102), 1) + , 18446744073709551514) + } + + @Test_ToBinaryString() { + ; ahklint-ignore-begin: W002 + this.assertEquals(Long.toBinaryString(102), "1100110") + this.assertEquals(Long.toBinaryString(0x7fffffffffffffff) + , "111111111111111111111111111111111111111111111111111111111111111") + this.assertEquals(Long.toBinaryString(-0x8000000000000000) + , "1000000000000000000000000000000000000000000000000000000000000000") + this.assertEquals(Long.toBinaryString(UL(-102)) + , "1111111111111111111111111111111111111111111111111111111110011010") + ; ahklint-ignore-end + } + + @Test_ToHexString() { + this.assertEquals(Long.toHexString(102), "66") + this.assertEquals(Long.toHexString(UL(-102)), "7fffffffffffff9a") + } + + @Test_ToOctalString() { + this.assertEquals(Long.toOctalString(102), "146") + this.assertEquals(Long.toOctalString(UL(-102)) + , "1777777777777777777632") + } +} + +exitapp LongTest.runTests() diff --git a/more libs/Various1/math-test.ahk b/more libs/Various1/math-test.ahk new file mode 100644 index 00000000..6f91d43b --- /dev/null +++ b/more libs/Various1/math-test.ahk @@ -0,0 +1,322 @@ +; ahk: console +#NoEnv +#Warn All, StdOut + +#Include +#Include +#Include +#Include +#Include +#Include +#Include + +#Include %A_ScriptDir%\..\math.ahk + +class MathTest extends TestCase { + + @Test_mathClass() { + this.assertTrue(IsFunc(Math.swap)) + this.assertTrue(IsFunc(Math.floor)) + this.assertTrue(IsFunc(Math.ceil)) + this.assertTrue(IsFunc(Math.limitTo)) + this.assertTrue(IsFunc(Math.isEven)) + this.assertTrue(IsFunc(Math.isOdd)) + this.assertTrue(IsFunc(Math.root)) + this.assertTrue(IsFunc(Math.log)) + this.assertTrue(IsFunc(Math.isPrime)) + this.assertTrue(IsFunc(Math.integerFactorization)) + this.assertTrue(IsFunc(Math.greatestCommonDivisor)) + this.assertTrue(IsFunc(Math.lowestCommonMultiple)) + this.assertTrue(IsFunc(Math.isFractional)) + this.assertTrue(IsFunc(Math.zeroFillShiftR)) + this.assertTrue(IsFunc(Math.numberOfTrailingZeros)) + this.assertTrue(IsFunc(Math.numberOfLeadingZeros)) + this.assertTrue(IsFunc(Math.bitCount)) + this.assertTrue(IsFunc("S")) + this.assertTrue(IsFunc("I")) + this.assertTrue(IsFunc("L")) + } + + @Test_new() { + this.assertException(Math, "__new") + this.assertException(MathHelper, "__new") + } + + @Test_constants() { + this.assertEquals(Math.MIN_LONG, -0x8000000000000000) + this.assertEquals(Math.MAX_LONG, 0x7FFFFFFFFFFFFFFF) + this.assertEquals(Math.MIN_INT, -0x80000000) + this.assertEquals(Math.MAX_INT, 0x7FFFFFFF) + this.assertEquals(Math.MIN_SHORT, -0x8000) + this.assertEquals(Math.MAX_SHORT, 0x7FFF) + } + + @Test_swap() { + Math.swap(a := "a", b := "b") + this.assertTrue(a == "b" && b == "a") + Math.swap(a := -5, b := 133) + this.assertTrue(a = 133 && b = -5) + Math.swap(a := 15, b := 15) + this.assertTrue(a = 15 && b = 15) + Math.swap(a := 123, b := 123) + this.assertTrue(a = 123 && b = 123) + } + + @Test_ceilAndFloor() { + this.assertException(Math , "floor") + this.assertException(Math , "ceil") + this.assertEquals(Math.floor(13, 3), 3) + this.assertEquals(Math.floor(-50, 0), -50) + this.assertEquals(Math.floor(-50, 0, -50.01), -50.01) + this.assertEquals(Math.ceil(-50, 0, -50.01), 0) + this.assertEquals(Math.floor(1.3, 2.1, 1.1, 2.9), 1.1) + this.assertEquals(Math.ceil(1.3, 2.1, 1.1, 2.9), 2.9) + this.assertEquals(Math.floor([13, 3]), 3) + this.assertEquals(Math.floor(69, [13, 3], 19), 3) + this.assertEquals(Math.floor([11,[21,22,23,[24,75,26],9],31]), 9) + this.assertEquals(Math.ceil([11,[21,22,23,[24,75,26],29],31]), 75) + this.assertEquals(Math.ceil(x := 5), 5) + this.assertEquals(Math.floor(x := 4), 4) + this.assertException(Math, "floor",,, [13, "vier", 3]) + this.assertEquals(MathHelper.floorCeil("floor", 100, 99), 99) + this.assertEquals(MathHelper.floorCeil("ceil", 99, 100), 100) + } + + @Test_min() { + this.assertEquals(Math.min(), "") + this.assertEquals(Math.min(5), 5) + this.assertEquals(Math.min(13, 3), 3) + this.assertEquals(Math.min(-50, 0), -50) + this.assertEquals(Math.min(-50, 0, -50.01), -50.01) + this.assertEquals(Math.min(1.3, 2.1, 1.1, 2.9), 1.1) + this.assertEquals(Math.min([13, 3]), 3) + this.assertEquals(Math.min(69, [13, 3], 19), 3) + this.assertEquals(Math.min([11,[21,22,23,[24,75,26],9],31]), 9) + this.assertEquals(Math.min(x := 4), 4) + } + + @Test_max() { + this.assertEquals(Math.max(-50, 0, -50.01), 0) + this.assertEquals(Math.max(1.3, 2.1, 1.1, 2.9), 2.9) + this.assertEquals(Math.max([11,[21,22,23,[24,75,26],29],31]), 75) + this.assertEquals(Math.max(x := 5), 5) + } + + @Test_limitTo() { + this.assertEquals(Math.limitTo(7, 3, 13), 7) + this.assertEquals(Math.limitTo(0, 3, 13), 3) + this.assertEquals(Math.limitTo(100, 3, 13), 13) + } + + @Test_oddEven() { + this.assertException(Math, "isEven", "", "", "text") + this.assertException(Math, "isOdd", "", "", "text") + this.assertTrue(Math.isEven(2)) + this.assertFalse(Math.isEven(3)) + this.assertFalse(Math.isOdd(2)) + this.assertTrue(Math.isOdd(3)) + } + + @Test_root() { + this.assertException(Math, "root", "", "", 5, "text") + this.assertException(Math, "root", "", "", "text", 2476099) + this.assertException(Math, "root", "", "", "text", "text") + ; this.assertEquals(Math.root(5, 2476099), 19.000000000000004) + this.assertEquals(Math.root(5, 2476099), 19.0) + this.assertEquals(Math.root(3, 27), 3) + } + + @Test_log() { + this.assertException(Math, "log", "", "", 2, "text") + this.assertException(Math, "log", "", "", "text", 52) + this.assertException(Math, "log", "", "", "text", "text") + this.assertEquals(Math.log(2, 8), 3) + this.assertEquals(Math.log(2, 52), 5.7004397181410926) + } + + @Test_prime() { + this.assertException(Math, "isPrime", "", "", "") + this.assertException(Math, "isPrime", "", "", "text") + this.assertFalse(Math.isPrime(1)) + this.assertTrue(Math.isPrime(2)) + this.assertTrue(Math.isPrime(3)) + this.assertTrue(Math.isPrime(7)) + this.assertFalse(Math.isPrime(9)) + this.assertTrue(Math.isPrime(31)) + this.assertTrue(Math.isPrime("31")) + this.assertFalse(Math.isPrime(469)) + this.assertFalse(Math.isPrime(2047)) + this.assertTrue(Math.isPrime(5987)) + this.assertTrue(Math.isPrime(524287)) + this.assertTrue(Math.isPrime(420618259)) + this.assertTrue(Math.isPrime(2147483647)) + } + + @Test_integerFactorization() { + this.assertException(Math, "IntegerFactorization", "", "", "text") + pf := Math.integerFactorization(765).getList() + this.assertTrue(pf[1] = 3 && pf[2] = 3 && pf[3] = 5 && pf[4] = 17) + this.assertTrue(IsObject(Math.integerFactorization(3.14))) + this.assertEquals(Math.integerFactorization(3.14).toString(), 3.14) + this.assertTrue(IsObject(Math.integerFactorization(3))) + this.assertEquals(Math.integerFactorization(3).toString(), 3) + this.assertEquals(Math.integerFactorization(3).count(), 1) + this.assertEquals(Math.integerFactorization(765).toString(), "3*3*5*17") + this.assertEquals(Math.integerFactorization(765).count(), 4) + this.assertEquals(Math.integerFactorization(12).toString(), "2*2*3") + this.assertEquals(Math.integerFactorization(18).toString(), "2*3*3") + this.assertEquals(Math.integerFactorization(5986).toString(), "2*41*73") + this.assertEquals(Math.integerFactorization(6936).toString(true) + , "2**3*3*17**2") + this.assertEquals(Math.integerFactorization(420618259).toString() + , 420618259) + this.assertEquals(Math.integerFactorization(420618258).toString() + , "2*3*3*3*3*509*5101") + this.assertEquals(Math.integerFactorization(420618258) + .toString(true, "^"), "2*3^4*509*5101") + this.assertEquals(Math.integerFactorization(420618258).count(), 7) + } + + @Test_GCD() { + this.assertException(Math, "greatestCommonDivisor", "", "", "text", 1) + this.assertException(Math, "greatestCommonDivisor", "", "", 1, "text") + this.assertEquals(Math.greatestCommonDivisor(12, 18), 6) + this.assertEquals(Math.greatestCommonDivisor(53667, 459486), 603) + this.assertEquals(Math.greatestCommonDivisor(643126, 1034922), 82) + this.assertEquals(Math.greatestCommonDivisor(643126, 1034922, false) + , 82) + } + + @Test_LCM() { + this.assertException(Math, "lowestCommonMultiple", "", "", "text", 1) + this.assertException(Math, "lowestCommonMultiple", "", "", 1, "text") + this.assertEquals(Math.lowestCommonMultiple(12, 18), 36) + this.assertEquals(Math.lowestCommonMultiple(24, 60), 120) + this.assertEquals(Math.lowestCommonMultiple(1820, 6825), 27300) + } + + @Test_isFractional() { + this.assertTrue(Math.isFractional(0.1)) + this.assertTrue(Math.isFractional(1.1)) + this.assertTrue(Math.isFractional(3.1415)) + this.assertTrue(Math.isFractional(-0.1)) + this.assertTrue(Math.isFractional(-3.50)) + this.assertFalse(Math.isFractional(0)) + this.assertFalse(Math.isFractional(1)) + this.assertFalse(Math.isFractional(0.0)) + this.assertFalse(Math.isFractional(130369)) + } + + @Test_I() { + this.assertEquals(I(0), 0) + this.assertEquals(I(1), 1) + this.assertEquals(I(2), 2) + this.assertEquals(I(-1), -1) + this.assertEquals(I(-2), -2) + this.assertEquals(I(Math.MAX_INT), 2147483647) + this.assertEquals(I(Math.MIN_INT), -2147483648) + this.assertEquals(I(Math.MIN_INT - 1), Math.MAX_INT) + this.assertEquals(I(Math.MIN_INT - 1005), 2147482643) + this.assertEquals(I(-2147484653), 2147482643) + this.assertEquals(I(Math.MAX_INT + 1), Math.MIN_INT) + this.assertEquals(I(Math.MAX_INT + 1009), -2147482640) + this.assertEquals(I(1711276032), 1711276032) + this.assertEquals(I(3422552064), -872415232) + } + + @Test_S() { + this.assertEquals(S(0), 0) + this.assertEquals(S(1), 1) + this.assertEquals(S(2), 2) + this.assertEquals(S(-1), -1) + this.assertEquals(S(-2), -2) + this.assertEquals(S(Math.MAX_SHORT + 1), Math.MIN_SHORT) + this.assertEquals(S(Math.MIN_SHORT - 1), Math.MAX_SHORT) + this.assertEquals(S(66666), 1130) + } + + @Test_L() { + this.assertEquals(L(0), 0) + this.assertEquals(L(1), 1) + this.assertEquals(L(2), 2) + this.assertEquals(L(-1), -1) + this.assertEquals(L(-2), -2) + this.assertEquals(L(Math.MAX_LONG + 1), Math.MIN_LONG) + this.assertEquals(L(Math.MIN_LONG - 1), Math.MAX_LONG) + } + + @Test_UL() { + this.assertEquals(UL(-1), Math.MAX_LONG) + } + + @Test_US() { + this.assertEquals(US(-1), 0xffff) + } + + @Test_SL() { + this.assertEquals(SL(0xffffffffffffffff << -2), -4611686018427387904) + this.assertEquals(SL(0xffffffffffffffff << -1), -9223372036854775808) + this.assertEquals(SL(0xffffffffffffffff << 0), -1) + this.assertEquals(SL(0xffffffffffffffff << 1), -2) + this.assertEquals(SL(0xffffffffffffffff << 2), -4) + } + + @Test_zeroFillShiftR() { + this.assertEquals(Math.zeroFillShiftR(SL(0xffffffffffffffff), -7), 127) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -321), 0) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -320) + , 9223372036854775807) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -319) + , 4611686018427387903) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -129), 0) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -128) + , 9223372036854775807) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -127) + , 4611686018427387903) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -126) + , 2305843009213693951) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -66), 1) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -65), 0) + this.assertEquals(Math.zeroFillShiftR(9223372036854775807, -64) + , 9223372036854775807) + this.assertEquals(Math.zeroFillShiftR(5, 1), 2) + this.assertEquals(Math.zeroFillShiftR(UI(-1), 30), 3) + this.assertEquals(Math.zeroFillShiftR(UI(-1), 31), 1) + this.assertEquals(Math.zeroFillShiftR(UI(-2147483648), 31), 1) + this.assertEquals(Math.zeroFillShiftR(-1, -1), 1) + this.assertEquals(Math.zeroFillShiftR(-1, -7), 127) + this.assertEquals(Math.zeroFillShiftR(130369, 0), 130369) + this.assertEquals(Math.zeroFillShiftR(SL(0xffffffffffffffff), -63) + , 0xffffffffffffffff) + this.assertEquals(Math.zeroFillShiftR(SL(0xffffffffffffffff), -64), -1) + this.assertEquals(Math.zeroFillShiftR(SL(0xffffffffffffffff), -65), 1) + this.assertEquals(Math.zeroFillShiftR(UL(-1), 47), 65535) + this.assertEquals(Math.zeroFillShiftR(-1, 48), 65535) + this.assertEquals(Math.zeroFillShiftR((0 << 1), 31), 0) + } + + @Test_numberOfTrailingZeros() { + this.assertEquals(Math.numberOfTrailingZeros(0), 64) + this.assertEquals(Math.numberOfTrailingZeros(102), 1) + this.assertEquals(Math.numberOfTrailingZeros(100), 2) + this.assertEquals(Math.numberOfTrailingZeros(-4294967296), 32) + } + + @Test_numberOfLeadingZeros() { + this.assertEquals(Math.numberOfLeadingZeros(0), 64) + this.assertEquals(Math.numberOfLeadingZeros(102), 57) + this.assertEquals(Math.numberOfLeadingZeros(1 << 127), 0) + this.assertEquals(Math.numberOfLeadingZeros(4), 61) + this.assertEquals(Math.numberOfLeadingZeros(30), 59) + } + + @Test_bitCount() { + this.assertEquals(Math.bitCount(0), 0) + this.assertEquals(Math.bitCount(1), 1) + this.assertEquals(Math.bitCount(2), 1) + this.assertEquals(Math.bitCount(3), 2) + this.assertEquals(Math.bitCount(34809348508034), 23) + } +} + +exitapp MathTest.runTests() diff --git a/more libs/Various1/money-test.ahk b/more libs/Various1/money-test.ahk new file mode 100644 index 00000000..bd2706fe --- /dev/null +++ b/more libs/Various1/money-test.ahk @@ -0,0 +1,160 @@ +; ahk: console +#Warn All, MsgBox + +#Include +#Include +#Include +#Include +#Include +#Include +#Include + +#Include %A_ScriptDir%\..\testcase.ahk + +class Money { + fAmount := 0 + strCurrency := "" + + __New(amount, currency) { + this.fAmount := amount + this.strCurrency := currency + } + + add(poMoney) { + return new Money(this.fAmount + poMoney.fAmount, this.strCurrency) + } + + equals(poMoney) { + if (poMoney != "" && poMoney.__Class = this.__Class) { + return this.strCurrency = poMoney.strCurrency + && this.fAmount = poMoney.fAmount + } + + return false + } +} + + +class MoneyBag { + fMonies := [] + + __New(poMonies*) { + for i, _money in poMonies { + this.fMonies.push(_money) + } + } + + equals(poMoneyBag) { + if (this.fMonies.maxIndex() != poMoneyBag.fMonies.maxIndex()) { + return false + } + + for i, _money in this.fMonies { + bFound := false + loop % poMoneyBag.fMonies.maxIndex() { + if (_money.equals(poMoneyBag.fMonies[A_Index])) { + bFound := true + break + } + } + if (!bFound) { + return false + } + } + + return true + } +} + + +class MoneyTest extends TestCase { + + @Before_Setup() { + global + f12CHF := new Money(12, "CHF") + f14CHF := new Money(14, "CHF") + f7USD := new Money( 7, "USD") + f21USD := new Money(21, "USD") + fMB1 := new MoneyBag(f12CHF, f7USD) + fMB2 := new MoneyBag(f14CHF, f21USD) + } + + @Test_MoneyClass() { + _res := MoneyTest.assertTrue(IsFunc(Money.add)) + MoneyTest.assertEquals(_res, 3) + _res := MoneyTest.assertTrue(IsFunc(Money.equals)) + MoneyTest.assertEquals(_res, 3) + } + + @Depend_@Test_SimpleAdd() { + return "@Test_MoneyClass" + } + + @Test_SimpleAdd() { + global f12CHF, f14CHF + expected := new Money(26, "CHF") + _res := MoneyTest.assertTrue(expected.equals(f12CHF.add(f14CHF))) + MoneyTest.assertEquals(_res, true) + + } + + @Test_Equals() { + global f12CHF, f14CHF + _res := MoneyTest.assertFalse(f12CHF.equals("")) + MoneyTest.assertEquals(_res, false) + _res := MoneyTest.assertSame(f12CHF, f12CHF) + MoneyTest.assertEquals(_res, true) + _res := MoneyTest.assertTrue(f12CHF.equals(new Money(12, "CHF"))) + MoneyTest.assertEquals(_res, true) + _res := MoneyTest.assertFalse(f12CHF.equals(f14CHF)) + MoneyTest.assertEquals(_res, false) + } + + @Test_Equals_With_Length() { + this.assertEquals("13", "13") + this.assertException(this, "AssertEquals", "", "", "13.1", " 13.0") + this.assertEquals("13", "013") + } + + @Test_MoneyBagClass() { + _res := MoneyTest.assertTrue(IsFunc(MoneyBag.equals)) + MoneyTest.assertEquals(_res, 3) + } + + @Test_BagEquals() { + global fMB1, fMB2, f12CHF + _res := MoneyTest.assertFalse(fMB1.equals("")) + MoneyTest.assertEquals(_res, false) + _res := MoneyTest.assertSame(fMB1, fMB1) + MoneyTest.assertEquals(_res, true) + _res := MoneyTest.assertFalse(fMB1.equals(f12CHF)) + MoneyTest.assertEquals(_res, false) + _res := MoneyTest.assertFalse(f12CHF.equals(fMB1)) + MoneyTest.assertEquals(_res, false) + _res := MoneyTest.assertTrue(fMB1.equals(fMB1)) + MoneyTest.assertEquals(_res, true) + _res := MoneyTest.assertTrue(fMB1.equals(fMB1)) + MoneyTest.assertEquals(_res, true) + } + + @Depend_@Test_Equals_With_Length() { + return "@Test_MoneyClass, @Test_SimpleAdd, @Test_Equals" + } + + @Test_Assertion() { + if (TestCase.didNotRun("@Test_MoneyClass")) { + this.fail("@Test_MoneyClass must run") + } + x := 0 + this.assertTrue(this.assert(x = 0)) + this.assertException(TestCase, "Assert", "", "", (x != 0)) + this.assertException(TestCase, "Assert", "", "Not valid!", (x != 0) + , "Not valid!") + } + + @Test_AssertEqual() { + this.assertEquals("0123", "0123") + } +} + +exitapp MoneyTest.runTests() diff --git a/more libs/Various1/object-test.ahk b/more libs/Various1/object-test.ahk new file mode 100644 index 00000000..50d6891a --- /dev/null +++ b/more libs/Various1/object-test.ahk @@ -0,0 +1,323 @@ +; ahk: console +#NoEnv +#Warn All, StdOut + +#Include +#Include +#Include +#Include +#Include +#Include +#Include + +#Include %A_ScriptDir%\..\object.ahk + +class ObjectTest extends TestCase { + + @Test_ObjectClass() { + this.assertTrue(IsFunc(Object.serialize)) + this.assertTrue(IsFunc(Object.deserialize)) + this.assertTrue(IsFunc("object_Serialize")) + this.assertTrue(IsFunc("object_Deserialize")) + this.assertTrue(IsFunc(Object.instanceOf)) + this.assertTrue(IsFunc(Object.compare)) + this.assertTrue(IsObject(Object.ini)) + this.assertTrue(IsFunc(Object.ini.__new)) + this.assertTrue(IsFunc(Object.ini.write)) + } + + @Test_Ini_Write_Read() { + _ini := New Object.ini(A_Temp "\object-test.ini") + _ini.write("MySection1", "MyKey1", "MyValue-A") + _ini.write("MySection1", "MyKey2", "MyValue-B") + _ini.write("MySection2", "MyKey3", "MyValue-C") + _ini.write("MySection3", "MyKey4", "MyValue-D") + this.assertEquals(_ini.read("MySection1", "MyKey1"), "MyValue-A") + this.assertEquals(_ini.read("MySection1", "MyKey2"), "MyValue-B") + this.assertEquals(_ini.read("MySection3", "MyKey4"), "MyValue-D") + this.assertEquals(_ini.read("MySection2", "MyKey3"), "MyValue-C") + } + + @Test_New() { + this.assertException(Object, "__New") + } + + @Test_Serialize_Object() { + ; ahklint-ignore-begin: W003 + o := { Herausgeber: "Xema" + , Nummer: "1234-5678-9012-3456" + , Deckung: 2.0e+6 + , Waehrung: "EURO" + , Inhaber: { Name: "Mustermann" + , Vorname: "Max" + , maennlich: true + , Kinder: [] + , Hobbys: [ "Reiten", "Golfen", "Lesen" ] + , Alter: 42 + , Partner: "Erika" } + , Konto: { Nummer: 123456789 + , BLZ: 10020003 } } + ; ahklint-ignore-end + + Object.serialize(o, A_Temp "\object-test.ini") + + IniRead _Herausgeber, %A_Temp%\object-test.ini,, Herausgeber + this.assertEquals(_Herausgeber, "Xema") + IniRead _Nummer, %A_Temp%\object-test.ini,, Nummer + this.assertEquals(_Nummer, "1234-5678-9012-3456") + IniRead _Deckung, %A_Temp%\object-test.ini,, Deckung + this.assertEquals(_Deckung, 2.0e+6) + IniRead _Waehrung, %A_Temp%\object-test.ini,, Waehrung + this.assertEquals(_Waehrung, "EURO") + IniRead _Name, %A_Temp%\object-test.ini, Inhaber, Name + this.assertEquals(_Name, "Mustermann") + IniRead _Vorname, %A_Temp%\object-test.ini, Inhaber, Vorname + this.assertEquals(_Vorname, "Max") + IniRead _maennlich, %A_Temp%\object-test.ini, Inhaber, maennlich + this.assertEquals(_maennlich, true) + IniRead _Kinder, %A_Temp%\object-test.ini, Inhaber.kinder + this.assertEquals(_Kinder, "") + IniRead _Hobbys, %A_Temp%\object-test.ini, Inhaber.hobbys, 1 + this.assertEquals(_Hobbys, "Reiten") + IniRead _Hobbys, %A_Temp%\object-test.ini, Inhaber.hobbys, 2 + this.assertEquals(_Hobbys, "Golfen") + IniRead _Hobbys, %A_Temp%\object-test.ini, Inhaber.hobbys, 3 + this.assertEquals(_Hobbys, "Lesen") + IniRead _Hobbys, %A_Temp%\object-test.ini, Inhaber.hobbys, 4 + this.assertEquals(_Hobbys, "ERROR") + IniRead _Alter, %A_Temp%\object-test.ini, Inhaber, Alter + this.assertEquals(_Alter, 42) + IniRead _Partner, %A_Temp%\object-test.ini, Inhaber, Partner + this.assertEquals(_Partner, "Erika") + IniRead _Nummer, %A_Temp%\object-test.ini, Konto, Nummer + this.assertEquals(_Nummer, 123456789) + IniRead _BLZ, %A_Temp%\object-test.ini, Konto, BLZ + this.assertEquals(_BLZ, 10020003) + } + + @Test_Serialize_Object2() { + this.assertException(Object, "Serialize", "", "" + , "FooBar", A_Temp "\object-test.ini") + } + + @Depend_@Test_Deserialize_Object() { + return "@Test_Serialize_Object" + } + @Test_Deserialize_Object() { + o := Object.deserialize(A_Temp "\object-test.ini") + this.assertEquals(o.herausgeber, "Xema") + this.assertEquals(o.nummer, "1234-5678-9012-3456") + this.assertEquals(o.deckung, 2.0e+6) + this.assertEquals(o.waehrung, "EURO") + this.assertEquals(o.inhaber.name, "Mustermann") + this.assertEquals(o.inhaber.vorname, "Max") + this.assertEquals(o.inhaber.maennlich, true) + this.assertEquals(o.inhaber.kinder.maxIndex(), "") + this.assertTrue(IsObject(o.inhaber.kinder)) + this.assertEquals(o.inhaber.hobbys[1], "Reiten") + this.assertEquals(o.inhaber.hobbys[2], "Golfen") + this.assertEquals(o.inhaber.hobbys[3], "Lesen") + this.assertEquals(o.inhaber.alter, 42) + this.assertEquals(o.inhaber.partner, "Erika") + this.assertEquals(o.konto.nummer, 123456789) + this.assertEquals(o.konto.BLZ, 10020003) + } + + @Test_Check_Testclass() { + this.assertTrue(IsObject(KKunde)) + this.assertTrue(IsObject(KKunde.KInhaber)) + this.assertTrue(IsObject(KKunde.KKonto)) + } + + @Test_Serialize_Class() { + o := new KKunde() + Object.serialize(o, A_Temp "\class-test.ini") + + ; Class variable + IniRead _M, %A_Temp%\class-test.ini, KInhaber, M + this.assertEquals(_M, true) + IniRead _W, %A_Temp%\class-test.ini, KInhaber, W + this.assertEquals(_W, false) + + ; Instance variable + IniRead _Herausgeber, %A_Temp%\class-test.ini,, Herausgeber + this.assertEquals(_Herausgeber, "Xema") + IniRead _Nummer, %A_Temp%\class-test.ini,, Nummer + this.assertEquals(_Nummer, "1234-5678-9012-3456") + IniRead _Deckung, %A_Temp%\class-test.ini,, Deckung + this.assertEquals(_Deckung, 2.0e+6) + IniRead _Waehrung, %A_Temp%\class-test.ini,, Waehrung + this.assertEquals(_Waehrung, "EURO") + IniRead _Name, %A_Temp%\class-test.ini, Inhaber, Name + this.assertEquals(_Name, "Mustermann") + IniRead _Vorname, %A_Temp%\class-test.ini, Inhaber, Vorname + this.assertEquals(_Vorname, "Max") + IniRead _maennlich, %A_Temp%\class-test.ini, Inhaber, maennlich + this.assertEquals(_maennlich, true) + IniRead _Kinder, %A_Temp%\class-test.ini, Inhaber.kinder + this.assertEquals(_Kinder, "") + IniRead _Hobbys, %A_Temp%\class-test.ini, Inhaber.hobbys, 1 + this.assertEquals(_Hobbys, "Reiten") + IniRead _Hobbys, %A_Temp%\class-test.ini, Inhaber.hobbys, 2 + this.assertEquals(_Hobbys, "Golfen") + IniRead _Hobbys, %A_Temp%\class-test.ini, Inhaber.hobbys, 3 + this.assertEquals(_Hobbys, "Lesen") + IniRead _Hobbys, %A_Temp%\class-test.ini, Inhaber.hobbys, 4 + this.assertEquals(_Hobbys, "ERROR") + IniRead _Alter, %A_Temp%\class-test.ini, Inhaber, Alter + this.assertEquals(_Alter, 42) + IniRead _Partner, %A_Temp%\class-test.ini, Inhaber, Partner + this.assertEquals(_Partner, "Erika") + IniRead _Nummer, %A_Temp%\class-test.ini, Konto, Nummer + this.assertEquals(_Nummer, 123456789) + IniRead _BLZ, %A_Temp%\class-test.ini, Konto, BLZ + this.assertEquals(_BLZ, 10020003) + } + + @Test_Deserialize_Class() { + o := Object.deserialize(A_Temp "\class-test.ini") + this.assertEquals(o.herausgeber, "Xema") + this.assertEquals(o.nummer, "1234-5678-9012-3456") + this.assertEquals(o.deckung, 2.0e+6) + this.assertEquals(o.waehrung, "EURO") + this.assertEquals(o.inhaber.name, "Mustermann") + this.assertEquals(o.inhaber.vorname, "Max") + this.assertEquals(o.inhaber.maennlich, true) + this.assertEquals(o.inhaber.kinder.maxIndex(), "") + this.assertTrue(IsObject(o.inhaber.kinder)) + this.assertEquals(o.inhaber.hobbys[1], "Reiten") + this.assertEquals(o.inhaber.hobbys[2], "Golfen") + this.assertEquals(o.inhaber.hobbys[3], "Lesen") + this.assertEquals(o.inhaber.alter, 42) + this.assertEquals(o.inhaber.partner, "Erika") + this.assertEquals(o.konto.nummer, 123456789) + this.assertEquals(o.konto.BLZ, 10020003) + } + + @Test_Deserialize_Class2() { + _ini = + ( LTrim RTrim0 + [] + Deckung=3000 + Herausgeber=Mexa + Nummer=0815-4711-0123-4567 + Waehrung=USD + [__Class] + __Class=KKunde + [Inhaber] + Alter=24 + M=0 + maennlich=0 + Name=Horstmannskoetter + Partner=Kevin + Vorname=Jaqueline + W=1 + [Inhaber.hobbys] + 1=Tanzen + 2=Reisen + [Inhaber.kinder] + 1=Chantal + [KInhaber] + M=0 + W=1 + [Konto] + BLZ=50050010 + Nummer=16112017 + ) + f := FileOpen(A_Temp "\class-test.ini", "w") + f.writeLine(_ini) + f.close() + + o := Object.deserialize(A_Temp "\class-test.ini") + this.assertEquals(o.herausgeber, "Mexa") + this.assertEquals(o.nummer, "0815-4711-0123-4567") + this.assertEquals(o.deckung, 3000) + this.assertEquals(o.waehrung, "USD") + this.assertEquals(o.inhaber.name, "Horstmannskoetter") + this.assertEquals(o.inhaber.vorname, "Jaqueline") + this.assertEquals(o.inhaber.maennlich, false) + this.assertEquals(o.inhaber.kinder[1], "Chantal") + this.assertEquals(o.inhaber.hobbys[1], "Tanzen") + this.assertEquals(o.inhaber.hobbys[2], "Reisen") + this.assertEquals(o.inhaber.alter, 24) + this.assertEquals(o.inhaber.partner, "Kevin") + this.assertEquals(o.konto.nummer, 16112017) + this.assertEquals(o.konto.BLZ, 50050010) + } + + @Test_InstanceOf() { + o := new KKundeEx() + this.assertTrue(Object.instanceOf(o, "KKundeEx")) + this.assertTrue(Object.instanceOf(o, "KKunde")) + this.assertFalse(Object.instanceOf(o, "SpecialClass")) + this.assertTrue(Object.instanceOf(o.inhaber, "KKunde.KInhaber")) + } + + @Test_Compare() { + this.assertTrue(Object.compare({a: "a", b: "b", c: "c"} + , {a: "a", b: "b", c: "c"})) + this.assertFalse(Object.compare({a: "a", b: "b", c: "x"} + , {a: "a", b: "b", c: "c"})) + this.assertFalse(Object.compare({a: "a", b: "b"} + , {a: "a", b: "b", c: "c"})) + this.assertFalse(Object.compare({a: "a", b: "b", c: "c"} + , {a: "a", c: "c"})) + this.assertFalse(Object.compare({a: "a", b: "b", c: "c"} + , {a: "a", b: "x", c: "c"})) + } + + @Test_Serialize_Class2() { + o := new KKunde() + Object.serialize(o, A_Temp "\class-test.ini") + o1 := Object.deserialize(A_Temp "\class-test.ini") + o2 := Object.deserialize(A_Temp "\class-test.ini") + o2 := Object.deserialize(A_Temp "\class-test.ini") + this.assertTrue(o1, o2) + } + + @AfterClass_Teardown() { + FileDelete %A_Temp%\object-test.ini + if (FileExist(A_Temp "\object-test.ini")) { + this.fail("File " A_Temp "\object-test.ini could not be deleted") + } + FileDelete %A_Temp%\class-test.ini + if (FileExist(A_Temp "\class-test.ini")) { + this.fail("File " A_Temp "\class-test.ini could not be deleted") + } + } +} + +; Testclass definitions +class KKunde { + + class KInhaber { + static M := true + static W := false + + Name := "Mustermann" + Vorname := "Max" + maennlich := KKunde.KInhaber.M + Kinder := [] + Hobbys := [ "Reiten", "Golfen", "Lesen" ] + Alter := 42 + Partner := "Erika" + } + + class KKonto { + Nummer := 123456789 + BLZ := 10020003 + } + + Herausgeber := "Xema" + Nummer := "1234-5678-9012-3456" + Deckung := 2.0e+6 + Waehrung := "EURO" + Inhaber := new KKunde.KInhaber() + Konto := new KKunde.KKonto() +} + +class KKundeEx extends KKunde { + +} + +exitapp ObjectTest.runTests() diff --git a/more libs/Various1/optparser-test.ahk b/more libs/Various1/optparser-test.ahk new file mode 100644 index 00000000..eb79ce38 --- /dev/null +++ b/more libs/Various1/optparser-test.ahk @@ -0,0 +1,893 @@ +; ahk: console +#Warn All, StdOut +#NoEnv +SetBatchLines -1 + +#Include + +#Include %A_ScriptDir%\..\optparser.ahk + +class OptParserTest extends TestCase { + + @Test_class() { + this.assertTrue(IsObject(new OptParser())) + this.assertTrue(IsObject(new OptParser.Group)) + this.assertTrue(IsObject(new OptParser.Option)) + this.assertTrue(IsObject(new OptParser.Boolean)) + this.assertTrue(IsObject(new OptParser.String)) + this.assertTrue(IsObject(new OptParser.Callback)) + this.assertTrue(IsObject(new OptParser.Generic)) + } + + @Test_constants() { + this.assertEquals(OptParser.OPT_ARG, 1) + this.assertEquals(OptParser.OPT_OPTARG, 2) + this.assertEquals(OptParser.OPT_NOARG, 4) + this.assertEquals(OptParser.OPT_HIDDEN, 8) + this.assertEquals(OptParser.OPT_MULTIPLE, 16) + this.assertEquals(OptParser.OPT_NEG, 32) + this.assertEquals(OptParser.OPT_NEG_USAGE, 64) + this.assertEquals(OptParser.OPT_ALLOW_SINGLE_DASH, 128) + this.assertEquals(OptParser.PARSER_ALLOW_DASHED_ARGS, 1) + } + + @Test_lineClass() { + ; ahklint-ignore-begin: W002 + this.assertEquals(new OptParser.Line("abc", "defghi").usage() + , " abc defghi") + this.assertEquals(new OptParser.Line("abc-def-ghi-jkl-mno-pqr-stu" + , "defghi").usage() + , " abc-def-ghi-jkl-mno-pqr-stu`n" + . " defghi") + this.assertEquals(new OptParser.Line("abc" + , "foo bar buzz bar buzz bar foo bar foo buzz bar buzz foo bar buzz bar foo").usage() + , " abc foo bar buzz bar buzz bar foo bar foo buzz bar buzz foo bar`n" + . " buzz bar foo") + this.assertEquals(new OptParser.Line("abc-def-ghi-jkl-mno-pqr-stu" + , "foo bar buzz bar buzz bar foo bar foo buzz bar buzz foo bar buzz bar foo").usage() + , " abc-def-ghi-jkl-mno-pqr-stu`n" + . " foo bar buzz bar buzz bar foo bar foo buzz bar buzz foo bar`n" + . " buzz bar foo") + this.assertEquals(new OptParser.Line("abc" + , "foo bar buzz bar buzz bar foo bar", 10, 20, 2).usage() + , " abc foo bar buzz bar`n" + . " buzz bar foo bar") + this.assertEquals(new OptParser.Line("abc-def-ghi", "foo bar buzz bar foo bar foo", 10, 20, 2).usage() + , " abc-def-ghi`n" + . " foo bar buzz bar foo`n" + . " bar foo") + ; ahklint-ignore-end + } + + @Test_parse() { + op := new OptParser("Test") + this.assertException(op, "Parse", "", "", "string") + _args := op.parse(["asdf"]) + this.assertEquals(_args[1], "asdf") + } + + @Test_noArgs() { + op := new OptParser("Test") + _args := op.parse([]) + this.assertEmpty(_args.minIndex()) + this.assertEmpty(_args.maxIndex()) + } + + @Test_simple() { + op := new OptParser("A Test Option Parser") + this.assertEquals(op.usageText.maxIndex(), 1) + this.assertEquals(op.usageText[1], "A Test Option Parser") + + op.add(new OptParser.Group("Test options")) + this.assertEquals(op.optionList.maxIndex(), 1) + this.assertEquals(op.optionList[1].__Class, "OptParser.Group") + this.assertEquals(op.optionList[1].description, "Test options") + + opt := {} + op.add(new OptParser.Boolean("v", "verbose", opt + , "bVerbose", "Be more verbose")) + this.assertEquals(op.optionList.maxIndex(), 2) + this.assertEquals(op.optionList[2].__Class, "OptParser.Boolean") + this.assertEquals(op.optionList[2].option1Dash, "-v") + this.assertEquals(op.optionList[2].option2Dashes, "--verbose") + this.assertEmpty(op.optionList[2].argumentDescription) + this.assertEquals(op.optionList[2].description, "Be more verbose") + this.assertEquals(op.optionList[2].flags, OptParser.OPT_NOARG) + this.assertEquals(op.optionList[2].value, true) + this.assertEquals(opt.bVerbose, false) + this.assertEquals(op.usage() + , "usage: A Test Option Parser`n`nTest options`n -v, --verbose Be more verbose`n`n") ; ahklint-ignore: W002 + + args := op.parse(["--verbose", "asdf"]) + this.assertEquals(args.maxIndex(), 1) + this.assertEquals(opt.bVerbose, true) + this.assertEquals(args[1], "asdf") + + opt.bVerbose := false + args := op.parse(["-v", "asdf"]) + this.assertEquals(args.maxIndex(), 1) + this.assertEquals(opt.bVerbose, true) + this.assertEquals(args[1], "asdf") + } + + @Test_booleanWithInit() { + opt := {} + op := new OptParser("Test") + op.add(new OptParser.Boolean("v", "verbose", opt + , "v", "Verbose output",, true)) + op.add(new OptParser.Boolean("q", "quiet", opt + , "q", "Quiet output")) + op.parse(["-q"]) + this.assertEquals(opt.v, true) + this.assertEquals(opt.q, true) + } + + @Test_stringWithInit() { + opts := {} + op := new OptParser("Test") + op.add(new OptParser.String("s", "string", opts + , "s", "string", "A string" + , OptParser.OPT_OPTARG, "123", "123")) + op.parse([""]) + ; op.TrimArg(s) + this.assertEquals(opts.s, "123") + op2 := new OptParser("Test") + op2.add(new OptParser.String("s", "string", opts + , "s2", "string", "A string" + , OptParser.OPT_OPTARG, "456", "456")) + op2.parse(["-s", "abcdefg"]) + ; op2.TrimArg(s2) + this.assertEquals(opts.s2, "abcdefg") + } + + @Test_multiUsages() { + op := new OptParser(["The first usage" + , "The second usage" + , "The third usage"]) + this.assertEquals(op.usageText.maxIndex(), 3) + this.assertEquals(op.usageText[1], "The first usage") + this.assertEquals(op.usageText[2], "The second usage") + this.assertEquals(op.usageText[3], "The third usage") + this.assertEquals(op + .usage(), "usage: The first usage`n or: The second usage`n or: The third usage`n`n`n") ; ahklint-ignore: W002 + } + + @Test_bundeledOptions() { + opts := {} + op := new OptParser("Test [-a] [-s] [-d] [-f] []...") + op.add(new OptParser.Boolean("a", "", opts + , "a", "", OptParser.OPT_HIDDEN)) + op.add(new OptParser.Boolean("s", "", opts + , "s", "", OptParser.OPT_HIDDEN)) + op.add(new OptParser.Boolean("d", "", opts + , "d", "", OptParser.OPT_HIDDEN)) + op.add(new OptParser.Boolean("f", "", opts + , "f", "", OptParser.OPT_HIDDEN)) + this.assertEquals(op.optionList.maxIndex(), 4) + opts.a := false, opts.s := false, opts.d := false, opts.f := false + op.parse(["-a"]) + this.assertTrue(opts.a = true && opts.s = false + && opts.d = false && opts.f = false) + opts.a := false, opts.s := false, opts.d := false, opts.f := false + op.parse(["-as"]) + this.assertTrue(opts.a = true && opts.s = true + && opts.d = false && opts.f = false) + opts.a := false, opts.s := false, opts.d := false, opts.f := false + op.parse(["-asd"]) + this.assertTrue(opts.a = true && opts.s = true + && opts.d = true && opts.f = false) + opts.a := false, opts.s := false, opts.d := false, opts.f := false + op.parse(["-asdf"]) + this.assertTrue(opts.a = true && opts.s = true + && opts.d = true && opts.f = true) + opts.a := false, opts.s := false, opts.d := false, opts.f := false + op.parse(["-adfs"]) + this.assertTrue(opts.a = true && opts.s = true + && opts.d = true && opts.f = true) + opts.a := false, opts.s := false, opts.d := false, opts.f := false + op.parse(["-af"]) + this.assertTrue(opts.a = true && opts.s = false + && opts.d = false && opts.f = true) + opts.a := false, opts.s := false, opts.d := false, opts.f := false + op.parse(["-af", "-sd"]) + this.assertTrue(opts.a = true && opts.s = true + && opts.d = true && opts.f = true) + opts.a := false, opts.s := false, opts.d := false, opts.f := false + op.parse(["-s", "-d", "-f", "-a"]) + this.assertTrue(opts.a = true && opts.s = true + && opts.d = true && opts.f = true) + opts.a := false, opts.s := false, opts.d := false, opts.f := false + args := op.parse(["-asf", "one", "two"]) + this.assertTrue(opts.a = true && opts.s = true + && opts.d = false && opts.f = true) + this.assertTrue(args[1] = "one" && args[2] = "two") + } + + @Test_bundeledOptions2() { + opts := {} + op := new OptParser("Test [-k] [-C[]] arg") + op.add(new OptParser.Boolean("k", "", opts, "k", "")) + op.add(new OptParser.String("C", "", opts + , "C", "", OptParser.OPT_OPTARG, 2, 2)) + op.parse(["-kC"]) + this.assertEquals(opts.k, true) + this.assertEquals(opts.C, 2) + } + + @Test_counter() { + opts := {} + op := new OptParser("Test <-n>") + op.add(new OptParser.Counter(opts, "n", "Counter", 0)) + this.assertException(op, "add", "", "" + , new OptParser.Counter(x := "", "Another Counter", 0)) + op.parse(["-12345"]) + this.assertEquals(opts.n, 12345) + op.parse(["-12345", "-9876"]) + this.assertEquals(opts.n, 9876) + + opts2 := {} + op2 := new OptParser("Test 2 <-x>") + op2.add(new OptParser.Counter(opts2, "x", "Counter", 1)) + op2.parse([-1303]) + this.assertEquals(opts2.x, 1303) + + this.assertException(op2, "add", "", "" + , new OptParser.Counter(opts2, "n", "Counter", 1)) + } + + @Test_optionalArg() { + opts := {} + op := new OptParser("Test [option]") + op.add(new OptParser.String("s", "test-string", opts + , "st", "string", "A test string", OptParser.OPT_OPTARG)) + op.parse(["-sasdf"]) + this.assertEquals(opts.st, "asdf") + op.parse(["-s", "jkloe"]) + this.assertEquals(opts.st, "jkloe") + op.parse(["-s", "asdf"]) + this.assertEquals(opts.st, "asdf") + op.parse(["--test-string", "jkloe"]) + this.assertEquals(opts.st, "jkloe") + op.parse(["--test-string=asdf"]) + this.assertEquals(opts.st, "asdf") + } + + @Test_requiredArg() { + opts := {} + op := new OptParser("Test [option]") + op.add(new OptParser.String("s", "test-string", opts + , "st", "string", "A test string", OptParser.OPT_ARG)) + op.parse(["-sasdf"]) + this.assertEquals(opts.st, "asdf") + op.parse(["-s", "jkloe"]) + this.assertEquals(opts.st, "jkloe") + op.parse(["-s", "asdf"]) + this.assertEquals(opts.st, "asdf") + op.parse(["--test-string", "jkloe"]) + this.assertEquals(opts.st, "jkloe") + op.parse(["--test-string=asdfx"]) + this.assertEquals(opts.st, "asdfx") + opts.st := "" + this.assertException(op, "Parse", "", "Missing argument 'string'" + , ["-s"]) + this.assertException(op, "Parse", "", "Missing argument 'string'" + , ["--test-string"]) + } + + @Test_invalidArgument() { + opts := {} + op := new OptParser("Test [-x]") + op.add(new OptParser.Boolean("x", "", opts + , "x", "An X marks the place")) + op.parse(["-x"]) + this.assertTrue(opts.x) + this.assertException(op, "Parse", "", "Invalid argument: -y", ["-y"]) + } + + ; ahklint-ignore-begin: E001,W002,W003,W004 + @Test_realWorldExample1() { + stExpectedUsage = +( +usage: git branch [options] [-r | -a] [--merged | --no-merged] + or: git branch [options] [-l] [-f] [] + or: git branch [options] [-r] (-d | -D) ... + or: git branch [options] (-m | -M) [] + +Generic options + -v, --verbose show hash and subject, give twice for upstream branch + -q, --quiet suppress informational messages + -t, --track set up tracking mode (see git-pull(1)) + --set-upstream change upstream info + -u, --set-upstream-to + change the upstream info + --unset-upstream Unset the upstream info + --color[=] use colored output + -r, --remotes act on remote-tracking branches + --contains print only branches that contain the commit + --abbrev[=] use digits to display SHA-1s + +Specific git-branch actions: + -a, --all list both remote-tracking and local branches + -d, --delete delete fully merged branch + -D delete branch (even if not merged) + -m, --move move/rename a branch and its reflog + -M move/rename a branch, even if target exists + --list list branch names + -l, --create-reflog create the branch's reflog + --edit-description edit the description for the branch + -f, --force force creation (when already exists) + --no-merged print only not merged branches + --merged print only merged branches + --column[=