Code: | #NoTrayIcon
#RequireAdmin
#Region
#AutoIt3Wrapper_Icon=network.ico
#AutoIt3Wrapper_Outfile=LDWin.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Description=Link Discovery for Windows
#AutoIt3Wrapper_Res_Fileversion=2.2.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Chris Hall 2010-2015
#AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
#AutoIt3Wrapper_Res_Field=ProductName|LDWin
#AutoIt3Wrapper_Res_Field=ProductVersion|2.2
#AutoIt3Wrapper_Res_Field=OriginalFileName|LDWin.exe
#AutoIt3Wrapper_Run_AU3Check=n
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#EndRegion
$VER = "2.2"
GLOBAL CONST $GUI_EVENT_CLOSE = - 3
GLOBAL CONST $GUI_EVENT_MINIMIZE = - 4
GLOBAL CONST $GUI_EVENT_RESTORE = - 5
GLOBAL CONST $GUI_EVENT_MAXIMIZE = - 6
GLOBAL CONST $GUI_EVENT_PRIMARYDOWN = - 7
GLOBAL CONST $GUI_EVENT_PRIMARYUP = - 8
GLOBAL CONST $GUI_EVENT_SECONDARYDOWN = - 9
GLOBAL CONST $GUI_EVENT_SECONDARYUP = - 10
GLOBAL CONST $GUI_EVENT_MOUSEMOVE = - 11
GLOBAL CONST $GUI_EVENT_RESIZED = - 12
GLOBAL CONST $GUI_EVENT_DROPPED = - 13
GLOBAL CONST $GUI_RUNDEFMSG = "GUI_RUNDEFMSG"
GLOBAL CONST $GUI_AVISTOP = 0
GLOBAL CONST $GUI_AVISTART = 1
GLOBAL CONST $GUI_AVICLOSE = 2
GLOBAL CONST $GUI_CHECKED = 1
GLOBAL CONST $GUI_INDETERMINATE = 2
GLOBAL CONST $GUI_UNCHECKED = 4
GLOBAL CONST $GUI_DROPACCEPTED = 8
GLOBAL CONST $GUI_NODROPACCEPTED = 4096
GLOBAL CONST $GUI_ACCEPTFILES = $GUI_DROPACCEPTED
GLOBAL CONST $GUI_SHOW = 16
GLOBAL CONST $GUI_HIDE = 32
GLOBAL CONST $GUI_ENABLE = 64
GLOBAL CONST $GUI_DISABLE = 128
GLOBAL CONST $GUI_FOCUS = 256
GLOBAL CONST $GUI_NOFOCUS = 8192
GLOBAL CONST $GUI_DEFBUTTON = 512
GLOBAL CONST $GUI_EXPAND = 1024
GLOBAL CONST $GUI_ONTOP = 2048
GLOBAL CONST $GUI_FONTITALIC = 2
GLOBAL CONST $GUI_FONTUNDER = 4
GLOBAL CONST $GUI_FONTSTRIKE = 8
GLOBAL CONST $GUI_DOCKAUTO = 1
GLOBAL CONST $GUI_DOCKLEFT = 2
GLOBAL CONST $GUI_DOCKRIGHT = 4
GLOBAL CONST $GUI_DOCKHCENTER = 8
GLOBAL CONST $GUI_DOCKTOP = 32
GLOBAL CONST $GUI_DOCKBOTTOM = 64
GLOBAL CONST $GUI_DOCKVCENTER = 128
GLOBAL CONST $GUI_DOCKWIDTH = 256
GLOBAL CONST $GUI_DOCKHEIGHT = 512
GLOBAL CONST $GUI_DOCKSIZE = 768
GLOBAL CONST $GUI_DOCKMENUBAR = 544
GLOBAL CONST $GUI_DOCKSTATEBAR = 576
GLOBAL CONST $GUI_DOCKALL = 802
GLOBAL CONST $GUI_DOCKBORDERS = 102
GLOBAL CONST $GUI_GR_CLOSE = 1
GLOBAL CONST $GUI_GR_LINE = 2
GLOBAL CONST $GUI_GR_BEZIER = 4
GLOBAL CONST $GUI_GR_MOVE = 6
GLOBAL CONST $GUI_GR_COLOR = 8
GLOBAL CONST $GUI_GR_RECT = 10
GLOBAL CONST $GUI_GR_ELLIPSE = 12
GLOBAL CONST $GUI_GR_PIE = 14
GLOBAL CONST $GUI_GR_DOT = 16
GLOBAL CONST $GUI_GR_PIXEL = 18
GLOBAL CONST $GUI_GR_HINT = 20
GLOBAL CONST $GUI_GR_REFRESH = 22
GLOBAL CONST $GUI_GR_PENSIZE = 24
GLOBAL CONST $GUI_GR_NOBKCOLOR = - 2
GLOBAL CONST $GUI_BKCOLOR_DEFAULT = - 1
GLOBAL CONST $GUI_BKCOLOR_TRANSPARENT = - 2
GLOBAL CONST $GUI_BKCOLOR_LV_ALTERNATE = 4261412864
GLOBAL CONST $GUI_WS_EX_PARENTDRAG = 1048576
GLOBAL CONST $WS_TILED = 0
GLOBAL CONST $WS_OVERLAPPED = 0
GLOBAL CONST $WS_MAXIMIZEBOX = 65536
GLOBAL CONST $WS_MINIMIZEBOX = 131072
GLOBAL CONST $WS_TABSTOP = 65536
GLOBAL CONST $WS_GROUP = 131072
GLOBAL CONST $WS_SIZEBOX = 262144
GLOBAL CONST $WS_THICKFRAME = 262144
GLOBAL CONST $WS_SYSMENU = 524288
GLOBAL CONST $WS_HSCROLL = 1048576
GLOBAL CONST $WS_VSCROLL = 2097152
GLOBAL CONST $WS_DLGFRAME = 4194304
GLOBAL CONST $WS_BORDER = 8388608
GLOBAL CONST $WS_CAPTION = 12582912
GLOBAL CONST $WS_OVERLAPPEDWINDOW = 13565952
GLOBAL CONST $WS_TILEDWINDOW = 13565952
GLOBAL CONST $WS_MAXIMIZE = 16777216
GLOBAL CONST $WS_CLIPCHILDREN = 33554432
GLOBAL CONST $WS_CLIPSIBLINGS = 67108864
GLOBAL CONST $WS_DISABLED = 134217728
GLOBAL CONST $WS_VISIBLE = 268435456
GLOBAL CONST $WS_MINIMIZE = 536870912
GLOBAL CONST $WS_CHILD = 1073741824
GLOBAL CONST $WS_POPUP = 2147483648
GLOBAL CONST $WS_POPUPWINDOW = 2156396544
GLOBAL CONST $DS_MODALFRAME = 128
GLOBAL CONST $DS_SETFOREGROUND = 512
GLOBAL CONST $DS_CONTEXTHELP = 8192
GLOBAL CONST $WS_EX_ACCEPTFILES = 16
GLOBAL CONST $WS_EX_MDICHILD = 64
GLOBAL CONST $WS_EX_APPWINDOW = 262144
GLOBAL CONST $WS_EX_COMPOSITED = 33554432
GLOBAL CONST $WS_EX_CLIENTEDGE = 512
GLOBAL CONST $WS_EX_CONTEXTHELP = 1024
GLOBAL CONST $WS_EX_DLGMODALFRAME = 1
GLOBAL CONST $WS_EX_LEFTSCROLLBAR = 16384
GLOBAL CONST $WS_EX_OVERLAPPEDWINDOW = 768
GLOBAL CONST $WS_EX_RIGHT = 4096
GLOBAL CONST $WS_EX_STATICEDGE = 131072
GLOBAL CONST $WS_EX_TOOLWINDOW = 128
GLOBAL CONST $WS_EX_TOPMOST = 8
GLOBAL CONST $WS_EX_TRANSPARENT = 32
GLOBAL CONST $WS_EX_WINDOWEDGE = 256
GLOBAL CONST $WS_EX_LAYERED = 524288
GLOBAL CONST $WS_EX_CONTROLPARENT = 65536
GLOBAL CONST $WS_EX_LAYOUTRTL = 4194304
GLOBAL CONST $WS_EX_RTLREADING = 8192
GLOBAL CONST $WM_GETTEXTLENGTH = 14
GLOBAL CONST $WM_GETTEXT = 13
GLOBAL CONST $WM_SIZE = 5
GLOBAL CONST $WM_SIZING = 532
GLOBAL CONST $WM_USER = 1024
GLOBAL CONST $WM_CREATE = 1
GLOBAL CONST $WM_DESTROY = 2
GLOBAL CONST $WM_MOVE = 3
GLOBAL CONST $WM_ACTIVATE = 6
GLOBAL CONST $WM_SETFOCUS = 7
GLOBAL CONST $WM_KILLFOCUS = 8
GLOBAL CONST $WM_ENABLE = 10
GLOBAL CONST $WM_SETREDRAW = 11
GLOBAL CONST $WM_SETTEXT = 12
GLOBAL CONST $WM_PAINT = 15
GLOBAL CONST $WM_CLOSE = 16
GLOBAL CONST $WM_QUERYENDSESSION = 17
GLOBAL CONST $WM_QUIT = 18
GLOBAL CONST $WM_ERASEBKGND = 20
GLOBAL CONST $WM_QUERYOPEN = 19
GLOBAL CONST $WM_SYSCOLORCHANGE = 21
GLOBAL CONST $WM_ENDSESSION = 22
GLOBAL CONST $WM_SHOWWINDOW = 24
GLOBAL CONST $WM_SETTINGCHANGE = 26
GLOBAL CONST $WM_WININICHANGE = 26
GLOBAL CONST $WM_DEVMODECHANGE = 27
GLOBAL CONST $WM_ACTIVATEAPP = 28
GLOBAL CONST $WM_FONTCHANGE = 29
GLOBAL CONST $WM_TIMECHANGE = 30
GLOBAL CONST $WM_CANCELMODE = 31
GLOBAL CONST $WM_IME_STARTCOMPOSITION = 269
GLOBAL CONST $WM_IME_ENDCOMPOSITION = 270
GLOBAL CONST $WM_IME_COMPOSITION = 271
GLOBAL CONST $WM_IME_KEYLAST = 271
GLOBAL CONST $WM_SETCURSOR = 32
GLOBAL CONST $WM_MOUSEACTIVATE = 33
GLOBAL CONST $WM_CHILDACTIVATE = 34
GLOBAL CONST $WM_QUEUESYNC = 35
GLOBAL CONST $WM_GETMINMAXINFO = 36
GLOBAL CONST $WM_PAINTICON = 38
GLOBAL CONST $WM_ICONERASEBKGND = 39
GLOBAL CONST $WM_NEXTDLGCTL = 40
GLOBAL CONST $WM_SPOOLERSTATUS = 42
GLOBAL CONST $WM_DRAWITEM = 43
GLOBAL CONST $WM_MEASUREITEM = 44
GLOBAL CONST $WM_DELETEITEM = 45
GLOBAL CONST $WM_VKEYTOITEM = 46
GLOBAL CONST $WM_CHARTOITEM = 47
GLOBAL CONST $WM_SETFONT = 48
GLOBAL CONST $WM_GETFONT = 49
GLOBAL CONST $WM_SETHOTKEY = 50
GLOBAL CONST $WM_GETHOTKEY = 51
GLOBAL CONST $WM_QUERYDRAGICON = 55
GLOBAL CONST $WM_COMPAREITEM = 57
GLOBAL CONST $WM_GETOBJECT = 61
GLOBAL CONST $WM_COMPACTING = 65
GLOBAL CONST $WM_COMMNOTIFY = 68
GLOBAL CONST $WM_WINDOWPOSCHANGING = 70
GLOBAL CONST $WM_WINDOWPOSCHANGED = 71
GLOBAL CONST $WM_POWER = 72
GLOBAL CONST $WM_NOTIFY = 78
GLOBAL CONST $WM_COPYDATA = 74
GLOBAL CONST $WM_CANCELJOURNAL = 75
GLOBAL CONST $WM_INPUTLANGCHANGEREQUEST = 80
GLOBAL CONST $WM_INPUTLANGCHANGE = 81
GLOBAL CONST $WM_TCARD = 82
GLOBAL CONST $WM_HELP = 83
GLOBAL CONST $WM_USERCHANGED = 84
GLOBAL CONST $WM_NOTIFYFORMAT = 85
GLOBAL CONST $WM_PARENTNOTIFY = 528
GLOBAL CONST $WM_ENTERMENULOOP = 529
GLOBAL CONST $WM_EXITMENULOOP = 530
GLOBAL CONST $WM_NEXTMENU = 531
GLOBAL CONST $WM_CAPTURECHANGED = 533
GLOBAL CONST $WM_MOVING = 534
GLOBAL CONST $WM_POWERBROADCAST = 536
GLOBAL CONST $WM_DEVICECHANGE = 537
GLOBAL CONST $WM_MDICREATE = 544
GLOBAL CONST $WM_MDIDESTROY = 545
GLOBAL CONST $WM_MDIACTIVATE = 546
GLOBAL CONST $WM_MDIRESTORE = 547
GLOBAL CONST $WM_MDINEXT = 548
GLOBAL CONST $WM_MDIMAXIMIZE = 549
GLOBAL CONST $WM_MDITILE = 550
GLOBAL CONST $WM_MDICASCADE = 551
GLOBAL CONST $WM_MDIICONARRANGE = 552
GLOBAL CONST $WM_MDIGETACTIVE = 553
GLOBAL CONST $WM_MDISETMENU = 560
GLOBAL CONST $WM_ENTERSIZEMOVE = 561
GLOBAL CONST $WM_EXITSIZEMOVE = 562
GLOBAL CONST $WM_DROPFILES = 563
GLOBAL CONST $WM_MDIREFRESHMENU = 564
GLOBAL CONST $WM_IME_SETCONTEXT = 641
GLOBAL CONST $WM_IME_NOTIFY = 642
GLOBAL CONST $WM_IME_CONTROL = 643
GLOBAL CONST $WM_IME_COMPOSITIONFULL = 644
GLOBAL CONST $WM_IME_SELECT = 645
GLOBAL CONST $WM_IME_CHAR = 646
GLOBAL CONST $WM_IME_REQUEST = 648
GLOBAL CONST $WM_IME_KEYDOWN = 656
GLOBAL CONST $WM_IME_KEYUP = 657
GLOBAL CONST $WM_NCMOUSEHOVER = 672
GLOBAL CONST $WM_MOUSEHOVER = 673
GLOBAL CONST $WM_NCMOUSELEAVE = 674
GLOBAL CONST $WM_MOUSELEAVE = 675
GLOBAL CONST $WM_WTSSESSION_CHANGE = 689
GLOBAL CONST $WM_TABLET_FIRST = 704
GLOBAL CONST $WM_TABLET_LAST = 735
GLOBAL CONST $WM_CUT = 768
GLOBAL CONST $WM_COPY = 769
GLOBAL CONST $WM_PASTE = 770
GLOBAL CONST $WM_CLEAR = 771
GLOBAL CONST $WM_UNDO = 772
GLOBAL CONST $WM_PALETTEISCHANGING = 784
GLOBAL CONST $WM_HOTKEY = 786
GLOBAL CONST $WM_PALETTECHANGED = 785
GLOBAL CONST $WM_PRINT = 791
GLOBAL CONST $WM_PRINTCLIENT = 792
GLOBAL CONST $WM_APPCOMMAND = 793
GLOBAL CONST $WM_QUERYNEWPALETTE = 783
GLOBAL CONST $WM_THEMECHANGED = 794
GLOBAL CONST $WM_HANDHELDFIRST = 856
GLOBAL CONST $WM_HANDHELDLAST = 863
GLOBAL CONST $WM_AFXFIRST = 864
GLOBAL CONST $WM_AFXLAST = 895
GLOBAL CONST $WM_PENWINFIRST = 896
GLOBAL CONST $WM_PENWINLAST = 911
GLOBAL CONST $WM_CONTEXTMENU = 123
GLOBAL CONST $WM_STYLECHANGING = 124
GLOBAL CONST $WM_STYLECHANGED = 125
GLOBAL CONST $WM_DISPLAYCHANGE = 126
GLOBAL CONST $WM_GETICON = 127
GLOBAL CONST $WM_SETICON = 128
GLOBAL CONST $WM_NCCREATE = 129
GLOBAL CONST $WM_NCDESTROY = 130
GLOBAL CONST $WM_NCCALCSIZE = 131
GLOBAL CONST $WM_NCHITTEST = 132
GLOBAL CONST $WM_NCPAINT = 133
GLOBAL CONST $WM_NCACTIVATE = 134
GLOBAL CONST $WM_GETDLGCODE = 135
GLOBAL CONST $WM_SYNCPAINT = 136
GLOBAL CONST $WM_NCMOUSEMOVE = 160
GLOBAL CONST $WM_NCLBUTTONDOWN = 161
GLOBAL CONST $WM_NCLBUTTONUP = 162
GLOBAL CONST $WM_NCLBUTTONDBLCLK = 163
GLOBAL CONST $WM_NCRBUTTONDOWN = 164
GLOBAL CONST $WM_NCRBUTTONUP = 165
GLOBAL CONST $WM_NCRBUTTONDBLCLK = 166
GLOBAL CONST $WM_NCMBUTTONDOWN = 167
GLOBAL CONST $WM_NCMBUTTONUP = 168
GLOBAL CONST $WM_NCMBUTTONDBLCLK = 169
GLOBAL CONST $WM_NCXBUTTONDOWN = 171
GLOBAL CONST $WM_NCXBUTTONUP = 172
GLOBAL CONST $WM_NCXBUTTONDBLCLK = 173
GLOBAL CONST $WM_KEYDOWN = 256
GLOBAL CONST $WM_KEYFIRST = 256
GLOBAL CONST $WM_KEYUP = 257
GLOBAL CONST $WM_CHAR = 258
GLOBAL CONST $WM_DEADCHAR = 259
GLOBAL CONST $WM_SYSKEYDOWN = 260
GLOBAL CONST $WM_SYSKEYUP = 261
GLOBAL CONST $WM_SYSCHAR = 262
GLOBAL CONST $WM_SYSDEADCHAR = 263
GLOBAL CONST $WM_KEYLAST = 265
GLOBAL CONST $WM_UNICHAR = 265
GLOBAL CONST $WM_INITDIALOG = 272
GLOBAL CONST $WM_COMMAND = 273
GLOBAL CONST $WM_SYSCOMMAND = 274
GLOBAL CONST $WM_TIMER = 275
GLOBAL CONST $WM_HSCROLL = 276
GLOBAL CONST $WM_VSCROLL = 277
GLOBAL CONST $WM_INITMENU = 278
GLOBAL CONST $WM_INITMENUPOPUP = 279
GLOBAL CONST $WM_MENUSELECT = 287
GLOBAL CONST $WM_MENUCHAR = 288
GLOBAL CONST $WM_ENTERIDLE = 289
GLOBAL CONST $WM_MENURBUTTONUP = 290
GLOBAL CONST $WM_MENUDRAG = 291
GLOBAL CONST $WM_MENUGETOBJECT = 292
GLOBAL CONST $WM_UNINITMENUPOPUP = 293
GLOBAL CONST $WM_MENUCOMMAND = 294
GLOBAL CONST $WM_CHANGEUISTATE = 295
GLOBAL CONST $WM_UPDATEUISTATE = 296
GLOBAL CONST $WM_QUERYUISTATE = 297
GLOBAL CONST $WM_CTLCOLORMSGBOX = 306
GLOBAL CONST $WM_CTLCOLOREDIT = 307
GLOBAL CONST $WM_CTLCOLORLISTBOX = 308
GLOBAL CONST $WM_CTLCOLORBTN = 309
GLOBAL CONST $WM_CTLCOLORDLG = 310
GLOBAL CONST $WM_CTLCOLORSCROLLBAR = 311
GLOBAL CONST $WM_CTLCOLORSTATIC = 312
GLOBAL CONST $WM_CTLCOLOR = 25
GLOBAL CONST $MN_GETHMENU = 481
GLOBAL CONST $WM_APP = 32768
GLOBAL CONST $NM_FIRST = 0
GLOBAL CONST $NM_OUTOFMEMORY = $NM_FIRST - 1
GLOBAL CONST $NM_CLICK = $NM_FIRST - 2
GLOBAL CONST $NM_DBLCLK = $NM_FIRST - 3
GLOBAL CONST $NM_RETURN = $NM_FIRST - 4
GLOBAL CONST $NM_RCLICK = $NM_FIRST - 5
GLOBAL CONST $NM_RDBLCLK = $NM_FIRST - 6
GLOBAL CONST $NM_SETFOCUS = $NM_FIRST - 7
GLOBAL CONST $NM_KILLFOCUS = $NM_FIRST - 8
GLOBAL CONST $NM_CUSTOMDRAW = $NM_FIRST - 12
GLOBAL CONST $NM_HOVER = $NM_FIRST - 13
GLOBAL CONST $NM_NCHITTEST = $NM_FIRST - 14
GLOBAL CONST $NM_KEYDOWN = $NM_FIRST - 15
GLOBAL CONST $NM_RELEASEDCAPTURE = $NM_FIRST - 16
GLOBAL CONST $NM_SETCURSOR = $NM_FIRST - 17
GLOBAL CONST $NM_CHAR = $NM_FIRST - 18
GLOBAL CONST $NM_TOOLTIPSCREATED = $NM_FIRST - 19
GLOBAL CONST $NM_LDOWN = $NM_FIRST - 20
GLOBAL CONST $NM_RDOWN = $NM_FIRST - 21
GLOBAL CONST $NM_THEMECHANGED = $NM_FIRST - 22
GLOBAL CONST $WM_MOUSEFIRST = 512
GLOBAL CONST $WM_MOUSEMOVE = 512
GLOBAL CONST $WM_LBUTTONDOWN = 513
GLOBAL CONST $WM_LBUTTONUP = 514
GLOBAL CONST $WM_LBUTTONDBLCLK = 515
GLOBAL CONST $WM_RBUTTONDOWN = 516
GLOBAL CONST $WM_RBUTTONUP = 517
GLOBAL CONST $WM_RBUTTONDBLCLK = 518
GLOBAL CONST $WM_MBUTTONDOWN = 519
GLOBAL CONST $WM_MBUTTONUP = 520
GLOBAL CONST $WM_MBUTTONDBLCLK = 521
GLOBAL CONST $WM_MOUSEWHEEL = 522
GLOBAL CONST $WM_XBUTTONDOWN = 523
GLOBAL CONST $WM_XBUTTONUP = 524
GLOBAL CONST $WM_XBUTTONDBLCLK = 525
GLOBAL CONST $WM_MOUSEHWHEEL = 526
GLOBAL CONST $PS_SOLID = 0
GLOBAL CONST $PS_DASH = 1
GLOBAL CONST $PS_DOT = 2
GLOBAL CONST $PS_DASHDOT = 3
GLOBAL CONST $PS_DASHDOTDOT = 4
GLOBAL CONST $PS_NULL = 5
GLOBAL CONST $PS_INSIDEFRAME = 6
GLOBAL CONST $LWA_ALPHA = 2
GLOBAL CONST $LWA_COLORKEY = 1
GLOBAL CONST $RGN_AND = 1
GLOBAL CONST $RGN_OR = 2
GLOBAL CONST $RGN_XOR = 3
GLOBAL CONST $RGN_DIFF = 4
GLOBAL CONST $RGN_COPY = 5
GLOBAL CONST $ERRORREGION = 0
GLOBAL CONST $NULLREGION = 1
GLOBAL CONST $SIMPLEREGION = 2
GLOBAL CONST $COMPLEXREGION = 3
GLOBAL CONST $TRANSPARENT = 1
GLOBAL CONST $OPAQUE = 2
GLOBAL CONST $CCM_FIRST = 8192
GLOBAL CONST $CCM_GETUNICODEFORMAT = ($CCM_FIRST + 6 )
GLOBAL CONST $CCM_SETUNICODEFORMAT = ($CCM_FIRST + 5 )
GLOBAL CONST $CCM_SETBKCOLOR = $CCM_FIRST + 1
GLOBAL CONST $CCM_SETCOLORSCHEME = $CCM_FIRST + 2
GLOBAL CONST $CCM_GETCOLORSCHEME = $CCM_FIRST + 3
GLOBAL CONST $CCM_GETDROPTARGET = $CCM_FIRST + 4
GLOBAL CONST $CCM_SETWINDOWTHEME = $CCM_FIRST + 11
GLOBAL CONST $GA_PARENT = 1
GLOBAL CONST $GA_ROOT = 2
GLOBAL CONST $GA_ROOTOWNER = 3
GLOBAL CONST $SM_CXSCREEN = 0
GLOBAL CONST $SM_CYSCREEN = 1
GLOBAL CONST $SM_CXVSCROLL = 2
GLOBAL CONST $SM_CYHSCROLL = 3
GLOBAL CONST $SM_CYCAPTION = 4
GLOBAL CONST $SM_CXBORDER = 5
GLOBAL CONST $SM_CYBORDER = 6
GLOBAL CONST $SM_CXDLGFRAME = 7
GLOBAL CONST $SM_CYDLGFRAME = 8
GLOBAL CONST $SM_CYVTHUMB = 9
GLOBAL CONST $SM_CXHTHUMB = 10
GLOBAL CONST $SM_CXICON = 11
GLOBAL CONST $SM_CYICON = 12
GLOBAL CONST $SM_CXCURSOR = 13
GLOBAL CONST $SM_CYCURSOR = 14
GLOBAL CONST $SM_CYMENU = 15
GLOBAL CONST $SM_CXFULLSCREEN = 16
GLOBAL CONST $SM_CYFULLSCREEN = 17
GLOBAL CONST $SM_CYKANJIWINDOW = 18
GLOBAL CONST $SM_MOUSEPRESENT = 19
GLOBAL CONST $SM_CYVSCROLL = 20
GLOBAL CONST $SM_CXHSCROLL = 21
GLOBAL CONST $SM_DEBUG = 22
GLOBAL CONST $SM_SWAPBUTTON = 23
GLOBAL CONST $SM_RESERVED1 = 24
GLOBAL CONST $SM_RESERVED2 = 25
GLOBAL CONST $SM_RESERVED3 = 26
GLOBAL CONST $SM_RESERVED4 = 27
GLOBAL CONST $SM_CXMIN = 28
GLOBAL CONST $SM_CYMIN = 29
GLOBAL CONST $SM_CXSIZE = 30
GLOBAL CONST $SM_CYSIZE = 31
GLOBAL CONST $SM_CXFRAME = 32
GLOBAL CONST $SM_CYFRAME = 33
GLOBAL CONST $SM_CXMINTRACK = 34
GLOBAL CONST $SM_CYMINTRACK = 35
GLOBAL CONST $SM_CXDOUBLECLK = 36
GLOBAL CONST $SM_CYDOUBLECLK = 37
GLOBAL CONST $SM_CXICONSPACING = 38
GLOBAL CONST $SM_CYICONSPACING = 39
GLOBAL CONST $SM_MENUDROPALIGNMENT = 40
GLOBAL CONST $SM_PENWINDOWS = 41
GLOBAL CONST $SM_DBCSENABLED = 42
GLOBAL CONST $SM_CMOUSEBUTTONS = 43
GLOBAL CONST $SM_SECURE = 44
GLOBAL CONST $SM_CXEDGE = 45
GLOBAL CONST $SM_CYEDGE = 46
GLOBAL CONST $SM_CXMINSPACING = 47
GLOBAL CONST $SM_CYMINSPACING = 48
GLOBAL CONST $SM_CXSMICON = 49
GLOBAL CONST $SM_CYSMICON = 50
GLOBAL CONST $SM_CYSMCAPTION = 51
GLOBAL CONST $SM_CXSMSIZE = 52
GLOBAL CONST $SM_CYSMSIZE = 53
GLOBAL CONST $SM_CXMENUSIZE = 54
GLOBAL CONST $SM_CYMENUSIZE = 55
GLOBAL CONST $SM_ARRANGE = 56
GLOBAL CONST $SM_CXMINIMIZED = 57
GLOBAL CONST $SM_CYMINIMIZED = 58
GLOBAL CONST $SM_CXMAXTRACK = 59
GLOBAL CONST $SM_CYMAXTRACK = 60
GLOBAL CONST $SM_CXMAXIMIZED = 61
GLOBAL CONST $SM_CYMAXIMIZED = 62
GLOBAL CONST $SM_NETWORK = 63
GLOBAL CONST $SM_CLEANBOOT = 67
GLOBAL CONST $SM_CXDRAG = 68
GLOBAL CONST $SM_CYDRAG = 69
GLOBAL CONST $SM_SHOWSOUNDS = 70
GLOBAL CONST $SM_CXMENUCHECK = 71
GLOBAL CONST $SM_CYMENUCHECK = 72
GLOBAL CONST $SM_SLOWMACHINE = 73
GLOBAL CONST $SM_MIDEASTENABLED = 74
GLOBAL CONST $SM_MOUSEWHEELPRESENT = 75
GLOBAL CONST $SM_XVIRTUALSCREEN = 76
GLOBAL CONST $SM_YVIRTUALSCREEN = 77
GLOBAL CONST $SM_CXVIRTUALSCREEN = 78
GLOBAL CONST $SM_CYVIRTUALSCREEN = 79
GLOBAL CONST $SM_CMONITORS = 80
GLOBAL CONST $SM_SAMEDISPLAYFORMAT = 81
GLOBAL CONST $SM_IMMENABLED = 82
GLOBAL CONST $SM_CXFOCUSBORDER = 83
GLOBAL CONST $SM_CYFOCUSBORDER = 84
GLOBAL CONST $SM_TABLETPC = 86
GLOBAL CONST $SM_MEDIACENTER = 87
GLOBAL CONST $SM_STARTER = 88
GLOBAL CONST $SM_SERVERR2 = 89
GLOBAL CONST $SM_CMETRICS = 90
GLOBAL CONST $SM_REMOTESESSION = 4096
GLOBAL CONST $SM_SHUTTINGDOWN = 8192
GLOBAL CONST $SM_REMOTECONTROL = 8193
GLOBAL CONST $SM_CARETBLINKINGENABLED = 8194
GLOBAL CONST $BLACKNESS = 66
GLOBAL CONST $CAPTUREBLT = 1073741824
GLOBAL CONST $DSTINVERT = 5570569
GLOBAL CONST $MERGECOPY = 12583114
GLOBAL CONST $MERGEPAINT = 12255782
GLOBAL CONST $NOMIRRORBITMAP = 2147483648
GLOBAL CONST $NOTSRCCOPY = 3342344
GLOBAL CONST $NOTSRCERASE = 1114278
GLOBAL CONST $PATCOPY = 15728673
GLOBAL CONST $PATINVERT = 5898313
GLOBAL CONST $PATPAINT = 16452105
GLOBAL CONST $SRCAND = 8913094
GLOBAL CONST $SRCCOPY = 13369376
GLOBAL CONST $SRCERASE = 4457256
GLOBAL CONST $SRCINVERT = 6684742
GLOBAL CONST $SRCPAINT = 15597702
GLOBAL CONST $WHITENESS = 16711778
GLOBAL CONST $DT_BOTTOM = 8
GLOBAL CONST $DT_CALCRECT = 1024
GLOBAL CONST $DT_CENTER = 1
GLOBAL CONST $DT_EDITCONTROL = 8192
GLOBAL CONST $DT_END_ELLIPSIS = 32768
GLOBAL CONST $DT_EXPANDTABS = 64
GLOBAL CONST $DT_EXTERNALLEADING = 512
GLOBAL CONST $DT_HIDEPREFIX = 1048576
GLOBAL CONST $DT_INTERNAL = 4096
GLOBAL CONST $DT_LEFT = 0
GLOBAL CONST $DT_MODIFYSTRING = 65536
GLOBAL CONST $DT_NOCLIP = 256
GLOBAL CONST $DT_NOFULLWIDTHCHARBREAK = 524288
GLOBAL CONST $DT_NOPREFIX = 2048
GLOBAL CONST $DT_PATH_ELLIPSIS = 16384
GLOBAL CONST $DT_PREFIXONLY = 2097152
GLOBAL CONST $DT_RIGHT = 2
GLOBAL CONST $DT_RTLREADING = 131072
GLOBAL CONST $DT_SINGLELINE = 32
GLOBAL CONST $DT_TABSTOP = 128
GLOBAL CONST $DT_TOP = 0
GLOBAL CONST $DT_VCENTER = 4
GLOBAL CONST $DT_WORDBREAK = 16
GLOBAL CONST $DT_WORD_ELLIPSIS = 262144
GLOBAL CONST $RDW_ERASE = 4
GLOBAL CONST $RDW_FRAME = 1024
GLOBAL CONST $RDW_INTERNALPAINT = 2
GLOBAL CONST $RDW_INVALIDATE = 1
GLOBAL CONST $RDW_NOERASE = 32
GLOBAL CONST $RDW_NOFRAME = 2048
GLOBAL CONST $RDW_NOINTERNALPAINT = 16
GLOBAL CONST $RDW_VALIDATE = 8
GLOBAL CONST $RDW_ERASENOW = 512
GLOBAL CONST $RDW_UPDATENOW = 256
GLOBAL CONST $RDW_ALLCHILDREN = 128
GLOBAL CONST $RDW_NOCHILDREN = 64
GLOBAL CONST $WM_RENDERFORMAT = 773
GLOBAL CONST $WM_RENDERALLFORMATS = 774
GLOBAL CONST $WM_DESTROYCLIPBOARD = 775
GLOBAL CONST $WM_DRAWCLIPBOARD = 776
GLOBAL CONST $WM_PAINTCLIPBOARD = 777
GLOBAL CONST $WM_VSCROLLCLIPBOARD = 778
GLOBAL CONST $WM_SIZECLIPBOARD = 779
GLOBAL CONST $WM_ASKCBFORMATNAME = 780
GLOBAL CONST $WM_CHANGECBCHAIN = 781
GLOBAL CONST $WM_HSCROLLCLIPBOARD = 782
GLOBAL CONST $HTERROR = - 2
GLOBAL CONST $HTTRANSPARENT = - 1
GLOBAL CONST $HTNOWHERE = 0
GLOBAL CONST $HTCLIENT = 1
GLOBAL CONST $HTCAPTION = 2
GLOBAL CONST $HTSYSMENU = 3
GLOBAL CONST $HTGROWBOX = 4
GLOBAL CONST $HTSIZE = $HTGROWBOX
GLOBAL CONST $HTMENU = 5
GLOBAL CONST $HTHSCROLL = 6
GLOBAL CONST $HTVSCROLL = 7
GLOBAL CONST $HTMINBUTTON = 8
GLOBAL CONST $HTMAXBUTTON = 9
GLOBAL CONST $HTLEFT = 10
GLOBAL CONST $HTRIGHT = 11
GLOBAL CONST $HTTOP = 12
GLOBAL CONST $HTTOPLEFT = 13
GLOBAL CONST $HTTOPRIGHT = 14
GLOBAL CONST $HTBOTTOM = 15
GLOBAL CONST $HTBOTTOMLEFT = 16
GLOBAL CONST $HTBOTTOMRIGHT = 17
GLOBAL CONST $HTBORDER = 18
GLOBAL CONST $HTREDUCE = $HTMINBUTTON
GLOBAL CONST $HTZOOM = $HTMAXBUTTON
GLOBAL CONST $HTSIZEFIRST = $HTLEFT
GLOBAL CONST $HTSIZELAST = $HTBOTTOMRIGHT
GLOBAL CONST $HTOBJECT = 19
GLOBAL CONST $HTCLOSE = 20
GLOBAL CONST $HTHELP = 21
GLOBAL CONST $COLOR_SCROLLBAR = 0
GLOBAL CONST $COLOR_BACKGROUND = 1
GLOBAL CONST $COLOR_ACTIVECAPTION = 2
GLOBAL CONST $COLOR_INACTIVECAPTION = 3
GLOBAL CONST $COLOR_MENU = 4
GLOBAL CONST $COLOR_WINDOW = 5
GLOBAL CONST $COLOR_WINDOWFRAME = 6
GLOBAL CONST $COLOR_MENUTEXT = 7
GLOBAL CONST $COLOR_WINDOWTEXT = 8
GLOBAL CONST $COLOR_CAPTIONTEXT = 9
GLOBAL CONST $COLOR_ACTIVEBORDER = 10
GLOBAL CONST $COLOR_INACTIVEBORDER = 11
GLOBAL CONST $COLOR_APPWORKSPACE = 12
GLOBAL CONST $COLOR_HIGHLIGHT = 13
GLOBAL CONST $COLOR_HIGHLIGHTTEXT = 14
GLOBAL CONST $COLOR_BTNFACE = 15
GLOBAL CONST $COLOR_BTNSHADOW = 16
GLOBAL CONST $COLOR_GRAYTEXT = 17
GLOBAL CONST $COLOR_BTNTEXT = 18
GLOBAL CONST $COLOR_INACTIVECAPTIONTEXT = 19
GLOBAL CONST $COLOR_BTNHIGHLIGHT = 20
GLOBAL CONST $COLOR_3DDKSHADOW = 21
GLOBAL CONST $COLOR_3DLIGHT = 22
GLOBAL CONST $COLOR_INFOTEXT = 23
GLOBAL CONST $COLOR_INFOBK = 24
GLOBAL CONST $COLOR_HOTLIGHT = 26
GLOBAL CONST $COLOR_GRADIENTACTIVECAPTION = 27
GLOBAL CONST $COLOR_GRADIENTINACTIVECAPTION = 28
GLOBAL CONST $COLOR_MENUHILIGHT = 29
GLOBAL CONST $COLOR_MENUBAR = 30
GLOBAL CONST $COLOR_DESKTOP = 1
GLOBAL CONST $COLOR_3DFACE = 15
GLOBAL CONST $COLOR_3DSHADOW = 16
GLOBAL CONST $COLOR_3DHIGHLIGHT = 20
GLOBAL CONST $COLOR_3DHILIGHT = 20
GLOBAL CONST $COLOR_BTNHILIGHT = 20
GLOBAL CONST $HINST_COMMCTRL = - 1
GLOBAL CONST $IDB_STD_SMALL_COLOR = 0
GLOBAL CONST $IDB_STD_LARGE_COLOR = 1
GLOBAL CONST $IDB_VIEW_SMALL_COLOR = 4
GLOBAL CONST $IDB_VIEW_LARGE_COLOR = 5
GLOBAL CONST $IDB_HIST_SMALL_COLOR = 8
GLOBAL CONST $IDB_HIST_LARGE_COLOR = 9
GLOBAL CONST $STARTF_FORCEOFFFEEDBACK = 128
GLOBAL CONST $STARTF_FORCEONFEEDBACK = 64
GLOBAL CONST $STARTF_RUNFULLSCREEN = 32
GLOBAL CONST $STARTF_USECOUNTCHARS = 8
GLOBAL CONST $STARTF_USEFILLATTRIBUTE = 16
GLOBAL CONST $STARTF_USEHOTKEY = 512
GLOBAL CONST $STARTF_USEPOSITION = 4
GLOBAL CONST $STARTF_USESHOWWINDOW = 1
GLOBAL CONST $STARTF_USESIZE = 2
GLOBAL CONST $STARTF_USESTDHANDLES = 256
GLOBAL CONST $CDDS_PREPAINT = 1
GLOBAL CONST $CDDS_POSTPAINT = 2
GLOBAL CONST $CDDS_PREERASE = 3
GLOBAL CONST $CDDS_POSTERASE = 4
GLOBAL CONST $CDDS_ITEM = 65536
GLOBAL CONST $CDDS_ITEMPREPAINT = 65537
GLOBAL CONST $CDDS_ITEMPOSTPAINT = 65538
GLOBAL CONST $CDDS_ITEMPREERASE = 65539
GLOBAL CONST $CDDS_ITEMPOSTERASE = 65540
GLOBAL CONST $CDDS_SUBITEM = 131072
GLOBAL CONST $CDIS_SELECTED = 1
GLOBAL CONST $CDIS_GRAYED = 2
GLOBAL CONST $CDIS_DISABLED = 4
GLOBAL CONST $CDIS_CHECKED = 8
GLOBAL CONST $CDIS_FOCUS = 16
GLOBAL CONST $CDIS_DEFAULT = 32
GLOBAL CONST $CDIS_HOT = 64
GLOBAL CONST $CDIS_MARKED = 128
GLOBAL CONST $CDIS_INDETERMINATE = 256
GLOBAL CONST $CDIS_SHOWKEYBOARDCUES = 512
GLOBAL CONST $CDIS_NEARHOT = 1024
GLOBAL CONST $CDIS_OTHERSIDEHOT = 2048
GLOBAL CONST $CDIS_DROPHILITED = 4096
GLOBAL CONST $CDRF_DODEFAULT = 0
GLOBAL CONST $CDRF_NEWFONT = 2
GLOBAL CONST $CDRF_SKIPDEFAULT = 4
GLOBAL CONST $CDRF_NOTIFYPOSTPAINT = 16
GLOBAL CONST $CDRF_NOTIFYITEMDRAW = 32
GLOBAL CONST $CDRF_NOTIFYSUBITEMDRAW = 32
GLOBAL CONST $CDRF_NOTIFYPOSTERASE = 64
GLOBAL CONST $CDRF_DOERASE = 8
GLOBAL CONST $CDRF_SKIPPOSTPAINT = 256
GLOBAL CONST $GUI_SS_DEFAULT_GUI = BITOR ($WS_MINIMIZEBOX , $WS_CAPTION , $WS_POPUP , $WS_SYSMENU )
GLOBAL CONST $FC_NOOVERWRITE = 0
GLOBAL CONST $FC_OVERWRITE = 1
GLOBAL CONST $FT_MODIFIED = 0
GLOBAL CONST $FT_CREATED = 1
GLOBAL CONST $FT_ACCESSED = 2
GLOBAL CONST $FO_READ = 0
GLOBAL CONST $FO_APPEND = 1
GLOBAL CONST $FO_OVERWRITE = 2
GLOBAL CONST $FO_BINARY = 16
GLOBAL CONST $FO_UNICODE = 32
GLOBAL CONST $FO_UTF16_LE = 32
GLOBAL CONST $FO_UTF16_BE = 64
GLOBAL CONST $FO_UTF8 = 128
GLOBAL CONST $FO_UTF8_NOBOM = 256
GLOBAL CONST $EOF = - 1
GLOBAL CONST $FD_FILEMUSTEXIST = 1
GLOBAL CONST $FD_PATHMUSTEXIST = 2
GLOBAL CONST $FD_MULTISELECT = 4
GLOBAL CONST $FD_PROMPTCREATENEW = 8
GLOBAL CONST $FD_PROMPTOVERWRITE = 16
GLOBAL CONST $CREATE_NEW = 1
GLOBAL CONST $CREATE_ALWAYS = 2
GLOBAL CONST $OPEN_EXISTING = 3
GLOBAL CONST $OPEN_ALWAYS = 4
GLOBAL CONST $TRUNCATE_EXISTING = 5
GLOBAL CONST $INVALID_SET_FILE_POINTER = - 1
GLOBAL CONST $FILE_BEGIN = 0
GLOBAL CONST $FILE_CURRENT = 1
GLOBAL CONST $FILE_END = 2
GLOBAL CONST $FILE_ATTRIBUTE_READONLY = 1
GLOBAL CONST $FILE_ATTRIBUTE_HIDDEN = 2
GLOBAL CONST $FILE_ATTRIBUTE_SYSTEM = 4
GLOBAL CONST $FILE_ATTRIBUTE_DIRECTORY = 16
GLOBAL CONST $FILE_ATTRIBUTE_ARCHIVE = 32
GLOBAL CONST $FILE_ATTRIBUTE_DEVICE = 64
GLOBAL CONST $FILE_ATTRIBUTE_NORMAL = 128
GLOBAL CONST $FILE_ATTRIBUTE_TEMPORARY = 256
GLOBAL CONST $FILE_ATTRIBUTE_SPARSE_FILE = 512
GLOBAL CONST $FILE_ATTRIBUTE_REPARSE_POINT = 1024
GLOBAL CONST $FILE_ATTRIBUTE_COMPRESSED = 2048
GLOBAL CONST $FILE_ATTRIBUTE_OFFLINE = 4096
GLOBAL CONST $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
GLOBAL CONST $FILE_ATTRIBUTE_ENCRYPTED = 16384
GLOBAL CONST $FILE_SHARE_READ = 1
GLOBAL CONST $FILE_SHARE_WRITE = 2
GLOBAL CONST $FILE_SHARE_DELETE = 4
GLOBAL CONST $GENERIC_ALL = 268435456
GLOBAL CONST $GENERIC_EXECUTE = 536870912
GLOBAL CONST $GENERIC_WRITE = 1073741824
GLOBAL CONST $GENERIC_READ = 2147483648
FUNC _FILECOUNTLINES ($SFILEPATH )
LOCAL $HFILE = FILEOPEN ($SFILEPATH , $FO_READ )
IF $HFILE = - 1 THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $SFILECONTENT = STRINGSTRIPWS (FILEREAD ($HFILE ) , 2 )
FILECLOSE ($HFILE )
LOCAL $ATMP
IF STRINGINSTR ($SFILECONTENT , @LF ) THEN
$ATMP = STRINGSPLIT (STRINGSTRIPCR ($SFILECONTENT ) , @LF )
ELSEIF STRINGINSTR ($SFILECONTENT , @CR ) THEN
$ATMP = STRINGSPLIT ($SFILECONTENT , @CR )
ELSE
IF STRINGLEN ($SFILECONTENT ) THEN
RETURN 1
ELSE
RETURN SETERROR (2 , 0 , 0 )
ENDIF
ENDIF
RETURN $ATMP [0 ]
ENDFUNC
FUNC _FILECREATE ($SFILEPATH )
LOCAL $HOPENFILE = FILEOPEN ($SFILEPATH , $FO_OVERWRITE )
IF $HOPENFILE = - 1 THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $HWRITEFILE = FILEWRITE ($HOPENFILE , "" )
FILECLOSE ($HOPENFILE )
IF $HWRITEFILE = - 1 THEN RETURN SETERROR (2 , 0 , 0 )
RETURN 1
ENDFUNC
FUNC _FILELISTTOARRAY ($SPATH , $SFILTER = "*" , $IFLAG = 0 )
LOCAL $HSEARCH , $SFILE , $SFILELIST , $SDELIM = "|"
$SPATH = STRINGREGEXPREPLACE ($SPATH , "[\\/]+\z" , "" ) & "\"
IF NOT FILEEXISTS ($SPATH ) THEN RETURN SETERROR (1 , 1 , "" )
IF STRINGREGEXP ($SFILTER , "[\\/:><\|]|(?s)\A\s*\z" ) THEN RETURN SETERROR (2 , 2 , "" )
IF NOT ($IFLAG = 0 OR $IFLAG = 1 OR $IFLAG = 2 ) THEN RETURN SETERROR (3 , 3 , "" )
$HSEARCH = FILEFINDFIRSTFILE ($SPATH & $SFILTER )
IF @ERROR THEN RETURN SETERROR (4 , 4 , "" )
WHILE 1
$SFILE = FILEFINDNEXTFILE ($HSEARCH )
IF @ERROR THEN EXITLOOP
IF ($IFLAG + @EXTENDED = 2 ) THEN CONTINUELOOP
$SFILELIST &= $SDELIM & $SFILE
WEND
FILECLOSE ($HSEARCH )
IF NOT $SFILELIST THEN RETURN SETERROR (4 , 4 , "" )
RETURN STRINGSPLIT (STRINGTRIMLEFT ($SFILELIST , 1 ) , "|" )
ENDFUNC
FUNC _FILEPRINT ($S_FILE , $I_SHOW = @SW_HIDE )
LOCAL $A_RET = DLLCALL ("shell32.dll" , "int" , "ShellExecuteW" , "hwnd" , 0 , "wstr" , "print" , "wstr" , $S_FILE , "wstr" , "" , "wstr" , "" , "int" , $I_SHOW )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $A_RET [0 ] <= 32 THEN RETURN SETERROR (10 , $A_RET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _FILEREADTOARRAY ($SFILEPATH , BYREF $AARRAY )
LOCAL $HFILE = FILEOPEN ($SFILEPATH , $FO_READ )
IF $HFILE = - 1 THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $AFILE = FILEREAD ($HFILE , FILEGETSIZE ($SFILEPATH ) )
IF STRINGRIGHT ($AFILE , 1 ) = @LF THEN $AFILE = STRINGTRIMRIGHT ($AFILE , 1 )
IF STRINGRIGHT ($AFILE , 1 ) = @CR THEN $AFILE = STRINGTRIMRIGHT ($AFILE , 1 )
FILECLOSE ($HFILE )
IF STRINGINSTR ($AFILE , @LF ) THEN
$AARRAY = STRINGSPLIT (STRINGSTRIPCR ($AFILE ) , @LF )
ELSEIF STRINGINSTR ($AFILE , @CR ) THEN
$AARRAY = STRINGSPLIT ($AFILE , @CR )
ELSE
IF STRINGLEN ($AFILE ) THEN
DIM $AARRAY [2 ] = [1 , $AFILE ]
ELSE
RETURN SETERROR (2 , 0 , 0 )
ENDIF
ENDIF
RETURN 1
ENDFUNC
FUNC _FILEWRITEFROMARRAY ($FILE , $A_ARRAY , $I_BASE = 0 , $I_UBOUND = 0 , $S_DELIM = "|" )
IF NOT ISARRAY ($A_ARRAY ) THEN RETURN SETERROR (2 , 0 , 0 )
LOCAL $IDIMS = UBOUND ($A_ARRAY , 0 )
IF $IDIMS > 2 THEN RETURN SETERROR (4 , 0 , 0 )
LOCAL $LAST = UBOUND ($A_ARRAY ) - 1
IF $I_UBOUND < 1 OR $I_UBOUND > $LAST THEN $I_UBOUND = $LAST
IF $I_BASE < 0 OR $I_BASE > $LAST THEN $I_BASE = 0
LOCAL $HFILE
IF ISSTRING ($FILE ) THEN
$HFILE = FILEOPEN ($FILE , $FO_OVERWRITE )
ELSE
$HFILE = $FILE
ENDIF
IF $HFILE = - 1 THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $ERRORSAV = 0
SWITCH $IDIMS
CASE 1
FOR $X = $I_BASE TO $I_UBOUND
IF FILEWRITE ($HFILE , $A_ARRAY [$X ] & @CRLF ) = 0 THEN
$ERRORSAV = 3
EXITLOOP
ENDIF
NEXT
CASE 2
LOCAL $S_TEMP
FOR $X = $I_BASE TO $I_UBOUND
$S_TEMP = $A_ARRAY [$X ] [0 ]
FOR $Y = 1 TO $IDIMS
$S_TEMP &= $S_DELIM & $A_ARRAY [$X ] [$Y ]
NEXT
IF FILEWRITE ($HFILE , $S_TEMP & @CRLF ) = 0 THEN
$ERRORSAV = 3
EXITLOOP
ENDIF
NEXT
ENDSWITCH
IF ISSTRING ($FILE ) THEN FILECLOSE ($HFILE )
IF $ERRORSAV THEN RETURN SETERROR ($ERRORSAV , 0 , 0 )
RETURN 1
ENDFUNC
FUNC _FILEWRITELOG ($SLOGPATH , $SLOGMSG , $IFLAG = - 1 )
LOCAL $HOPENFILE = $SLOGPATH , $IOPENMODE = $FO_APPEND
LOCAL $SDATENOW = @YEAR & "-" & @MON & "-" & @MDAY
LOCAL $STIMENOW = @HOUR & ":" & @MIN & ":" & @SEC
LOCAL $SMSG = $SDATENOW & " " & $STIMENOW & " : " & $SLOGMSG
IF $IFLAG <> - 1 THEN
$SMSG &= @CRLF & FILEREAD ($SLOGPATH )
$IOPENMODE = $FO_OVERWRITE
ENDIF
IF ISSTRING ($SLOGPATH ) THEN
$HOPENFILE = FILEOPEN ($SLOGPATH , $IOPENMODE )
IF $HOPENFILE = - 1 THEN
RETURN SETERROR (1 , 0 , 0 )
ENDIF
ENDIF
LOCAL $IRETURN = FILEWRITELINE ($HOPENFILE , $SMSG )
IF ISSTRING ($SLOGPATH ) THEN
$IRETURN = FILECLOSE ($HOPENFILE )
ENDIF
IF $IRETURN <= 0 THEN
RETURN SETERROR (2 , $IRETURN , 0 )
ENDIF
RETURN $IRETURN
ENDFUNC
FUNC _FILEWRITETOLINE ($SFILE , $ILINE , $STEXT , $FOVERWRITE = 0 )
IF $ILINE <= 0 THEN RETURN SETERROR (4 , 0 , 0 )
IF NOT ISSTRING ($STEXT ) THEN
$STEXT = STRING ($STEXT )
IF $STEXT = "" THEN RETURN SETERROR (6 , 0 , 0 )
ENDIF
IF $FOVERWRITE <> 0 AND $FOVERWRITE <> 1 THEN RETURN SETERROR (5 , 0 , 0 )
IF NOT FILEEXISTS ($SFILE ) THEN RETURN SETERROR (2 , 0 , 0 )
LOCAL $SREAD_FILE = FILEREAD ($SFILE )
LOCAL $ASPLIT_FILE = STRINGSPLIT (STRINGSTRIPCR ($SREAD_FILE ) , @LF )
IF UBOUND ($ASPLIT_FILE ) < $ILINE THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $IENCODING = FILEGETENCODING ($SFILE )
LOCAL $HFILE = FILEOPEN ($SFILE , $IENCODING + $FO_OVERWRITE )
IF $HFILE = - 1 THEN RETURN SETERROR (3 , 0 , 0 )
$SREAD_FILE = ""
FOR $I = 1 TO $ASPLIT_FILE [0 ]
IF $I = $ILINE THEN
IF $FOVERWRITE = 1 THEN
IF $STEXT <> "" THEN $SREAD_FILE &= $STEXT & @CRLF
ELSE
$SREAD_FILE &= $STEXT & @CRLF & $ASPLIT_FILE [$I ] & @CRLF
ENDIF
ELSEIF $I < $ASPLIT_FILE [0 ] THEN
$SREAD_FILE &= $ASPLIT_FILE [$I ] & @CRLF
ELSEIF $I = $ASPLIT_FILE [0 ] THEN
$SREAD_FILE &= $ASPLIT_FILE [$I ]
ENDIF
NEXT
FILEWRITE ($HFILE , $SREAD_FILE )
FILECLOSE ($HFILE )
RETURN 1
ENDFUNC
FUNC _PATHFULL ($SRELATIVEPATH , $SBASEPATH = @WORKINGDIR )
IF NOT $SRELATIVEPATH OR $SRELATIVEPATH = "." THEN RETURN $SBASEPATH
LOCAL $SFULLPATH = STRINGREPLACE ($SRELATIVEPATH , "/" , "\" )
LOCAL CONST $SFULLPATHCONST = $SFULLPATH
LOCAL $SPATH
LOCAL $BROOTONLY = STRINGLEFT ($SFULLPATH , 1 ) = "\" AND STRINGMID ($SFULLPATH , 2 , 1 ) <> "\"
FOR $I = 1 TO 2
$SPATH = STRINGLEFT ($SFULLPATH , 2 )
IF $SPATH = "\\" THEN
$SFULLPATH = STRINGTRIMLEFT ($SFULLPATH , 2 )
LOCAL $NSERVERLEN = STRINGINSTR ($SFULLPATH , "\" ) - 1
$SPATH = "\\" & STRINGLEFT ($SFULLPATH , $NSERVERLEN )
$SFULLPATH = STRINGTRIMLEFT ($SFULLPATH , $NSERVERLEN )
EXITLOOP
ELSEIF STRINGRIGHT ($SPATH , 1 ) = ":" THEN
$SFULLPATH = STRINGTRIMLEFT ($SFULLPATH , 2 )
EXITLOOP
ELSE
$SFULLPATH = $SBASEPATH & "\" & $SFULLPATH
ENDIF
NEXT
IF $I = 3 THEN RETURN ""
IF STRINGLEFT ($SFULLPATH , 1 ) <> "\" THEN
IF STRINGLEFT ($SFULLPATHCONST , 2 ) = STRINGLEFT ($SBASEPATH , 2 ) THEN
$SFULLPATH = $SBASEPATH & "\" & $SFULLPATH
ELSE
$SFULLPATH = "\" & $SFULLPATH
ENDIF
ENDIF
LOCAL $ATEMP = STRINGSPLIT ($SFULLPATH , "\" )
LOCAL $APATHPARTS [$ATEMP [0 ] ] , $J = 0
FOR $I = 2 TO $ATEMP [0 ]
IF $ATEMP [$I ] = ".." THEN
IF $J THEN $J -= 1
ELSEIF NOT ($ATEMP [$I ] = "" AND $I <> $ATEMP [0 ] ) AND $ATEMP [$I ] <> "." THEN
$APATHPARTS [$J ] = $ATEMP [$I ]
$J += 1
ENDIF
NEXT
$SFULLPATH = $SPATH
IF NOT $BROOTONLY THEN
FOR $I = 0 TO $J - 1
$SFULLPATH &= "\" & $APATHPARTS [$I ]
NEXT
ELSE
$SFULLPATH &= $SFULLPATHCONST
IF STRINGINSTR ($SFULLPATH , ".." ) THEN $SFULLPATH = _PATHFULL ($SFULLPATH )
ENDIF
WHILE STRINGINSTR ($SFULLPATH , ".\" )
$SFULLPATH = STRINGREPLACE ($SFULLPATH , ".\" , "\" )
WEND
RETURN $SFULLPATH
ENDFUNC
FUNC _PATHGETRELATIVE ($SFROM , $STO )
IF STRINGRIGHT ($SFROM , 1 ) <> "\" THEN $SFROM &= "\"
IF STRINGRIGHT ($STO , 1 ) <> "\" THEN $STO &= "\"
IF $SFROM = $STO THEN RETURN SETERROR (1 , 0 , STRINGTRIMRIGHT ($STO , 1 ) )
LOCAL $ASFROM = STRINGSPLIT ($SFROM , "\" )
LOCAL $ASTO = STRINGSPLIT ($STO , "\" )
IF $ASFROM [1 ] <> $ASTO [1 ] THEN RETURN SETERROR (2 , 0 , STRINGTRIMRIGHT ($STO , 1 ) )
LOCAL $I = 2
LOCAL $IDIFF = 1
WHILE 1
IF $ASFROM [$I ] <> $ASTO [$I ] THEN
$IDIFF = $I
EXITLOOP
ENDIF
$I += 1
WEND
$I = 1
LOCAL $SRELPATH = ""
FOR $J = 1 TO $ASTO [0 ]
IF $I >= $IDIFF THEN
$SRELPATH &= "\" & $ASTO [$I ]
ENDIF
$I += 1
NEXT
$SRELPATH = STRINGTRIMLEFT ($SRELPATH , 1 )
$I = 1
FOR $J = 1 TO $ASFROM [0 ]
IF $I > $IDIFF THEN
$SRELPATH = "..\" & $SRELPATH
ENDIF
$I += 1
NEXT
IF STRINGRIGHT ($SRELPATH , 1 ) == "\" THEN $SRELPATH = STRINGTRIMRIGHT ($SRELPATH , 1 )
RETURN $SRELPATH
ENDFUNC
FUNC _PATHMAKE ($SZDRIVE , $SZDIR , $SZFNAME , $SZEXT )
IF STRINGLEN ($SZDRIVE ) THEN
IF NOT (STRINGLEFT ($SZDRIVE , 2 ) = "\\" ) THEN $SZDRIVE = STRINGLEFT ($SZDRIVE , 1 ) & ":"
ENDIF
IF STRINGLEN ($SZDIR ) THEN
IF NOT (STRINGRIGHT ($SZDIR , 1 ) = "\" ) AND NOT (STRINGRIGHT ($SZDIR , 1 ) = "/" ) THEN $SZDIR = $SZDIR & "\"
ENDIF
IF STRINGLEN ($SZEXT ) THEN
IF NOT (STRINGLEFT ($SZEXT , 1 ) = "." ) THEN $SZEXT = "." & $SZEXT
ENDIF
RETURN $SZDRIVE & $SZDIR & $SZFNAME & $SZEXT
ENDFUNC
FUNC _PATHSPLIT ($SZPATH , BYREF $SZDRIVE , BYREF $SZDIR , BYREF $SZFNAME , BYREF $SZEXT )
LOCAL $DRIVE = ""
LOCAL $DIR = ""
LOCAL $FNAME = ""
LOCAL $EXT = ""
LOCAL $POS
LOCAL $ARRAY [5 ]
$ARRAY [0 ] = $SZPATH
IF STRINGMID ($SZPATH , 2 , 1 ) = ":" THEN
$DRIVE = STRINGLEFT ($SZPATH , 2 )
$SZPATH = STRINGTRIMLEFT ($SZPATH , 2 )
ELSEIF STRINGLEFT ($SZPATH , 2 ) = "\\" THEN
$SZPATH = STRINGTRIMLEFT ($SZPATH , 2 )
$POS = STRINGINSTR ($SZPATH , "\" )
IF $POS = 0 THEN $POS = STRINGINSTR ($SZPATH , "/" )
IF $POS = 0 THEN
$DRIVE = "\\" & $SZPATH
$SZPATH = ""
ELSE
$DRIVE = "\\" & STRINGLEFT ($SZPATH , $POS - 1 )
$SZPATH = STRINGTRIMLEFT ($SZPATH , $POS - 1 )
ENDIF
ENDIF
LOCAL $NPOSFORWARD = STRINGINSTR ($SZPATH , "/" , 0 , - 1 )
LOCAL $NPOSBACKWARD = STRINGINSTR ($SZPATH , "\" , 0 , - 1 )
IF $NPOSFORWARD >= $NPOSBACKWARD THEN
$POS = $NPOSFORWARD
ELSE
$POS = $NPOSBACKWARD
ENDIF
$DIR = STRINGLEFT ($SZPATH , $POS )
$FNAME = STRINGRIGHT ($SZPATH , STRINGLEN ($SZPATH ) - $POS )
IF STRINGLEN ($DIR ) = 0 THEN $FNAME = $SZPATH
$POS = STRINGINSTR ($FNAME , "." , 0 , - 1 )
IF $POS THEN
$EXT = STRINGRIGHT ($FNAME , STRINGLEN ($FNAME ) - ($POS - 1 ) )
$FNAME = STRINGLEFT ($FNAME , $POS - 1 )
ENDIF
$SZDRIVE = $DRIVE
$SZDIR = $DIR
$SZFNAME = $FNAME
$SZEXT = $EXT
$ARRAY [1 ] = $DRIVE
$ARRAY [2 ] = $DIR
$ARRAY [3 ] = $FNAME
$ARRAY [4 ] = $EXT
RETURN $ARRAY
ENDFUNC
FUNC _REPLACESTRINGINFILE ($SZFILENAME , $SZSEARCHSTRING , $SZREPLACESTRING , $FCASENESS = 0 , $FOCCURANCE = 1 )
LOCAL $IRETVAL = 0
LOCAL $NCOUNT , $SENDSWITH
IF STRINGINSTR (FILEGETATTRIB ($SZFILENAME ) , "R" ) THEN RETURN SETERROR (6 , 0 , - 1 )
LOCAL $HFILE = FILEOPEN ($SZFILENAME , $FO_READ )
IF $HFILE = - 1 THEN RETURN SETERROR (1 , 0 , - 1 )
LOCAL $S_TOTFILE = FILEREAD ($HFILE , FILEGETSIZE ($SZFILENAME ) )
IF STRINGRIGHT ($S_TOTFILE , 2 ) = @CRLF THEN
$SENDSWITH = @CRLF
ELSEIF STRINGRIGHT ($S_TOTFILE , 1 ) = @CR THEN
$SENDSWITH = @CR
ELSEIF STRINGRIGHT ($S_TOTFILE , 1 ) = @LF THEN
$SENDSWITH = @LF
ELSE
$SENDSWITH = ""
ENDIF
LOCAL $AFILELINES = STRINGSPLIT (STRINGSTRIPCR ($S_TOTFILE ) , @LF )
FILECLOSE ($HFILE )
LOCAL $IENCODING = FILEGETENCODING ($SZFILENAME )
LOCAL $HWRITEHANDLE = FILEOPEN ($SZFILENAME , $IENCODING + $FO_OVERWRITE )
IF $HWRITEHANDLE = - 1 THEN RETURN SETERROR (2 , 0 , - 1 )
FOR $NCOUNT = 1 TO $AFILELINES [0 ]
IF STRINGINSTR ($AFILELINES [$NCOUNT ] , $SZSEARCHSTRING , $FCASENESS ) THEN
$AFILELINES [$NCOUNT ] = STRINGREPLACE ($AFILELINES [$NCOUNT ] , $SZSEARCHSTRING , $SZREPLACESTRING , 1 - $FOCCURANCE , $FCASENESS )
$IRETVAL = $IRETVAL + 1
IF $FOCCURANCE = 0 THEN
$IRETVAL = 1
EXITLOOP
ENDIF
ENDIF
NEXT
FOR $NCOUNT = 1 TO $AFILELINES [0 ] - 1
IF FILEWRITELINE ($HWRITEHANDLE , $AFILELINES [$NCOUNT ] ) = 0 THEN
FILECLOSE ($HWRITEHANDLE )
RETURN SETERROR (3 , 0 , - 1 )
ENDIF
NEXT
IF $AFILELINES [$NCOUNT ] <> "" THEN FILEWRITE ($HWRITEHANDLE , $AFILELINES [$NCOUNT ] & $SENDSWITH )
FILECLOSE ($HWRITEHANDLE )
RETURN $IRETVAL
ENDFUNC
FUNC _TEMPFILE ($S_DIRECTORYNAME = @TEMPDIR , $S_FILEPREFIX = "~" , $S_FILEEXTENSION = ".tmp" , $I_RANDOMLENGTH = 7 )
IF ISKEYWORD ($S_FILEPREFIX ) THEN $S_FILEPREFIX = "~"
IF ISKEYWORD ($S_FILEEXTENSION ) THEN $S_FILEEXTENSION = ".tmp"
IF ISKEYWORD ($I_RANDOMLENGTH ) THEN $I_RANDOMLENGTH = 7
IF NOT FILEEXISTS ($S_DIRECTORYNAME ) THEN $S_DIRECTORYNAME = @TEMPDIR
IF NOT FILEEXISTS ($S_DIRECTORYNAME ) THEN $S_DIRECTORYNAME = @SCRIPTDIR
IF STRINGRIGHT ($S_DIRECTORYNAME , 1 ) <> "\" THEN $S_DIRECTORYNAME = $S_DIRECTORYNAME & "\"
LOCAL $S_TEMPNAME
DO
$S_TEMPNAME = ""
WHILE STRINGLEN ($S_TEMPNAME ) < $I_RANDOMLENGTH
$S_TEMPNAME = $S_TEMPNAME & CHR (RANDOM (97 , 122 , 1 ) )
WEND
$S_TEMPNAME = $S_DIRECTORYNAME & $S_FILEPREFIX & $S_TEMPNAME & $S_FILEEXTENSION
UNTIL NOT FILEEXISTS ($S_TEMPNAME )
RETURN $S_TEMPNAME
ENDFUNC
FUNC _HEXTOSTRING ($STRHEX )
IF STRINGLEFT ($STRHEX , 2 ) = "0x" THEN RETURN BINARYTOSTRING ($STRHEX )
RETURN BINARYTOSTRING ("0x" & $STRHEX )
ENDFUNC
FUNC _STRINGBETWEEN ($S_STRING , $S_START , $S_END , $V_CASE = - 1 )
LOCAL $S_CASE = ""
IF $V_CASE = DEFAULT OR $V_CASE = - 1 THEN $S_CASE = "(?i)"
LOCAL $S_PATTERN_ESCAPE = "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)"
$S_START = STRINGREGEXPREPLACE ($S_START , $S_PATTERN_ESCAPE , "\\$1" )
$S_END = STRINGREGEXPREPLACE ($S_END , $S_PATTERN_ESCAPE , "\\$1" )
IF $S_START = "" THEN $S_START = "\A"
IF $S_END = "" THEN $S_END = "\z"
LOCAL $A_RET = STRINGREGEXP ($S_STRING , "(?s)" & $S_CASE & $S_START & "(.*?)" & $S_END , 3 )
IF @ERROR THEN RETURN SETERROR (1 , 0 , 0 )
RETURN $A_RET
ENDFUNC
FUNC _STRINGENCRYPT ($I_ENCRYPT , $S_ENCRYPTTEXT , $S_ENCRYPTPASSWORD , $I_ENCRYPTLEVEL = 1 )
IF $I_ENCRYPT <> 0 AND $I_ENCRYPT <> 1 THEN
SETERROR (1 , 0 , "" )
ELSEIF $S_ENCRYPTTEXT = "" OR $S_ENCRYPTPASSWORD = "" THEN
SETERROR (1 , 0 , "" )
ELSE
IF NUMBER ($I_ENCRYPTLEVEL ) <= 0 OR INT ($I_ENCRYPTLEVEL ) <> $I_ENCRYPTLEVEL THEN $I_ENCRYPTLEVEL = 1
LOCAL $V_ENCRYPTMODIFIED
LOCAL $I_ENCRYPTCOUNTH
LOCAL $I_ENCRYPTCOUNTG
LOCAL $V_ENCRYPTSWAP
LOCAL $AV_ENCRYPTBOX [256 ] [2 ]
LOCAL $I_ENCRYPTCOUNTA
LOCAL $I_ENCRYPTCOUNTB
LOCAL $I_ENCRYPTCOUNTC
LOCAL $I_ENCRYPTCOUNTD
LOCAL $I_ENCRYPTCOUNTE
LOCAL $V_ENCRYPTCIPHER
LOCAL $V_ENCRYPTCIPHERBY
IF $I_ENCRYPT = 1 THEN
FOR $I_ENCRYPTCOUNTF = 0 TO $I_ENCRYPTLEVEL STEP 1
$I_ENCRYPTCOUNTG = ""
$I_ENCRYPTCOUNTH = ""
$V_ENCRYPTMODIFIED = ""
FOR $I_ENCRYPTCOUNTG = 1 TO STRINGLEN ($S_ENCRYPTTEXT )
IF $I_ENCRYPTCOUNTH = STRINGLEN ($S_ENCRYPTPASSWORD ) THEN
$I_ENCRYPTCOUNTH = 1
ELSE
$I_ENCRYPTCOUNTH += 1
ENDIF
$V_ENCRYPTMODIFIED = $V_ENCRYPTMODIFIED & CHR (BITXOR (ASC (STRINGMID ($S_ENCRYPTTEXT , $I_ENCRYPTCOUNTG , 1 ) ) , ASC (STRINGMID ($S_ENCRYPTPASSWORD , $I_ENCRYPTCOUNTH , 1 ) ) , 255 ) )
NEXT
$S_ENCRYPTTEXT = $V_ENCRYPTMODIFIED
$I_ENCRYPTCOUNTA = ""
$I_ENCRYPTCOUNTB = 0
$I_ENCRYPTCOUNTC = ""
$I_ENCRYPTCOUNTD = ""
$I_ENCRYPTCOUNTE = ""
$V_ENCRYPTCIPHERBY = ""
$V_ENCRYPTCIPHER = ""
$V_ENCRYPTSWAP = ""
$AV_ENCRYPTBOX = ""
LOCAL $AV_ENCRYPTBOX [256 ] [2 ]
FOR $I_ENCRYPTCOUNTA = 0 TO 255
$AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [1 ] = ASC (STRINGMID ($S_ENCRYPTPASSWORD , MOD ($I_ENCRYPTCOUNTA , STRINGLEN ($S_ENCRYPTPASSWORD ) ) + 1 , 1 ) )
$AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [0 ] = $I_ENCRYPTCOUNTA
NEXT
FOR $I_ENCRYPTCOUNTA = 0 TO 255
$I_ENCRYPTCOUNTB = MOD (($I_ENCRYPTCOUNTB + $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [0 ] + $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [1 ] ) , 256 )
$V_ENCRYPTSWAP = $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [0 ]
$AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [0 ] = $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTB ] [0 ]
$AV_ENCRYPTBOX [$I_ENCRYPTCOUNTB ] [0 ] = $V_ENCRYPTSWAP
NEXT
FOR $I_ENCRYPTCOUNTA = 1 TO STRINGLEN ($S_ENCRYPTTEXT )
$I_ENCRYPTCOUNTC = MOD (($I_ENCRYPTCOUNTC + 1 ) , 256 )
$I_ENCRYPTCOUNTD = MOD (($I_ENCRYPTCOUNTD + $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTC ] [0 ] ) , 256 )
$I_ENCRYPTCOUNTE = $AV_ENCRYPTBOX [MOD (($AV_ENCRYPTBOX [$I_ENCRYPTCOUNTC ] [0 ] + $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTD ] [0 ] ) , 256 ) ] [0 ]
$V_ENCRYPTCIPHERBY = BITXOR (ASC (STRINGMID ($S_ENCRYPTTEXT , $I_ENCRYPTCOUNTA , 1 ) ) , $I_ENCRYPTCOUNTE )
$V_ENCRYPTCIPHER &= HEX ($V_ENCRYPTCIPHERBY , 2 )
NEXT
$S_ENCRYPTTEXT = $V_ENCRYPTCIPHER
NEXT
ELSE
FOR $I_ENCRYPTCOUNTF = 0 TO $I_ENCRYPTLEVEL STEP 1
$I_ENCRYPTCOUNTB = 0
$I_ENCRYPTCOUNTC = ""
$I_ENCRYPTCOUNTD = ""
$I_ENCRYPTCOUNTE = ""
$V_ENCRYPTCIPHERBY = ""
$V_ENCRYPTCIPHER = ""
$V_ENCRYPTSWAP = ""
$AV_ENCRYPTBOX = ""
LOCAL $AV_ENCRYPTBOX [256 ] [2 ]
FOR $I_ENCRYPTCOUNTA = 0 TO 255
$AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [1 ] = ASC (STRINGMID ($S_ENCRYPTPASSWORD , MOD ($I_ENCRYPTCOUNTA , STRINGLEN ($S_ENCRYPTPASSWORD ) ) + 1 , 1 ) )
$AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [0 ] = $I_ENCRYPTCOUNTA
NEXT
FOR $I_ENCRYPTCOUNTA = 0 TO 255
$I_ENCRYPTCOUNTB = MOD (($I_ENCRYPTCOUNTB + $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [0 ] + $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [1 ] ) , 256 )
$V_ENCRYPTSWAP = $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [0 ]
$AV_ENCRYPTBOX [$I_ENCRYPTCOUNTA ] [0 ] = $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTB ] [0 ]
$AV_ENCRYPTBOX [$I_ENCRYPTCOUNTB ] [0 ] = $V_ENCRYPTSWAP
NEXT
FOR $I_ENCRYPTCOUNTA = 1 TO STRINGLEN ($S_ENCRYPTTEXT ) STEP 2
$I_ENCRYPTCOUNTC = MOD (($I_ENCRYPTCOUNTC + 1 ) , 256 )
$I_ENCRYPTCOUNTD = MOD (($I_ENCRYPTCOUNTD + $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTC ] [0 ] ) , 256 )
$I_ENCRYPTCOUNTE = $AV_ENCRYPTBOX [MOD (($AV_ENCRYPTBOX [$I_ENCRYPTCOUNTC ] [0 ] + $AV_ENCRYPTBOX [$I_ENCRYPTCOUNTD ] [0 ] ) , 256 ) ] [0 ]
$V_ENCRYPTCIPHERBY = BITXOR (DEC (STRINGMID ($S_ENCRYPTTEXT , $I_ENCRYPTCOUNTA , 2 ) ) , $I_ENCRYPTCOUNTE )
$V_ENCRYPTCIPHER = $V_ENCRYPTCIPHER & CHR ($V_ENCRYPTCIPHERBY )
NEXT
$S_ENCRYPTTEXT = $V_ENCRYPTCIPHER
$I_ENCRYPTCOUNTG = ""
$I_ENCRYPTCOUNTH = ""
$V_ENCRYPTMODIFIED = ""
FOR $I_ENCRYPTCOUNTG = 1 TO STRINGLEN ($S_ENCRYPTTEXT )
IF $I_ENCRYPTCOUNTH = STRINGLEN ($S_ENCRYPTPASSWORD ) THEN
$I_ENCRYPTCOUNTH = 1
ELSE
$I_ENCRYPTCOUNTH += 1
ENDIF
$V_ENCRYPTMODIFIED &= CHR (BITXOR (ASC (STRINGMID ($S_ENCRYPTTEXT , $I_ENCRYPTCOUNTG , 1 ) ) , ASC (STRINGMID ($S_ENCRYPTPASSWORD , $I_ENCRYPTCOUNTH , 1 ) ) , 255 ) )
NEXT
$S_ENCRYPTTEXT = $V_ENCRYPTMODIFIED
NEXT
ENDIF
RETURN $S_ENCRYPTTEXT
ENDIF
ENDFUNC
FUNC _STRINGEXPLODE ($SSTRING , $SDELIMITER , $ILIMIT = 0 )
IF $ILIMIT > 0 THEN
$SSTRING = STRINGREPLACE ($SSTRING , $SDELIMITER , CHR (0 ) , $ILIMIT )
$SDELIMITER = CHR (0 )
ELSEIF $ILIMIT < 0 THEN
LOCAL $IINDEX = STRINGINSTR ($SSTRING , $SDELIMITER , 0 , $ILIMIT )
IF $IINDEX THEN
$SSTRING = STRINGLEFT ($SSTRING , $IINDEX - 1 )
ENDIF
ENDIF
RETURN STRINGSPLIT ($SSTRING , $SDELIMITER , 3 )
ENDFUNC
FUNC _STRINGINSERT ($S_STRING , $S_INSERTSTRING , $I_POSITION )
LOCAL $I_LENGTH , $S_START , $S_END
IF $S_STRING = "" OR (NOT ISSTRING ($S_STRING ) ) THEN
RETURN SETERROR (1 , 0 , $S_STRING )
ELSEIF $S_INSERTSTRING = "" OR (NOT ISSTRING ($S_STRING ) ) THEN
RETURN SETERROR (2 , 0 , $S_STRING )
ELSE
$I_LENGTH = STRINGLEN ($S_STRING )
IF (ABS ($I_POSITION ) > $I_LENGTH ) OR (NOT ISINT ($I_POSITION ) ) THEN
RETURN SETERROR (3 , 0 , $S_STRING )
ENDIF
ENDIF
IF $I_POSITION = 0 THEN
RETURN $S_INSERTSTRING & $S_STRING
ELSEIF $I_POSITION > 0 THEN
$S_START = STRINGLEFT ($S_STRING , $I_POSITION )
$S_END = STRINGRIGHT ($S_STRING , $I_LENGTH - $I_POSITION )
RETURN $S_START & $S_INSERTSTRING & $S_END
ELSEIF $I_POSITION < 0 THEN
$S_START = STRINGLEFT ($S_STRING , ABS ($I_LENGTH + $I_POSITION ) )
$S_END = STRINGRIGHT ($S_STRING , ABS ($I_POSITION ) )
RETURN $S_START & $S_INSERTSTRING & $S_END
ENDIF
ENDFUNC
FUNC _STRINGPROPER ($S_STRING )
LOCAL $IX = 0
LOCAL $CAPNEXT = 1
LOCAL $S_NSTR = ""
LOCAL $S_CURCHAR
FOR $IX = 1 TO STRINGLEN ($S_STRING )
$S_CURCHAR = STRINGMID ($S_STRING , $IX , 1 )
SELECT
CASE $CAPNEXT = 1
IF STRINGREGEXP ($S_CURCHAR , "[a-zA-Z.-.........]" ) THEN
$S_CURCHAR = STRINGUPPER ($S_CURCHAR )
$CAPNEXT = 0
ENDIF
CASE NOT STRINGREGEXP ($S_CURCHAR , "[a-zA-Z.-.........]" )
$CAPNEXT = 1
CASE ELSE
$S_CURCHAR = STRINGLOWER ($S_CURCHAR )
ENDSELECT
$S_NSTR &= $S_CURCHAR
NEXT
RETURN $S_NSTR
ENDFUNC
FUNC _STRINGREPEAT ($SSTRING , $IREPEATCOUNT )
LOCAL $SRESULT
SELECT
CASE NOT STRINGISINT ($IREPEATCOUNT )
SETERROR (1 )
RETURN ""
CASE STRINGLEN ($SSTRING ) < 1
SETERROR (1 )
RETURN ""
CASE $IREPEATCOUNT <= 0
SETERROR (1 )
RETURN ""
CASE ELSE
FOR $ICOUNT = 1 TO $IREPEATCOUNT
$SRESULT &= $SSTRING
NEXT
RETURN $SRESULT
ENDSELECT
ENDFUNC
FUNC _STRINGREVERSE ($S_STRING )
LOCAL $I_LEN = STRINGLEN ($S_STRING )
IF $I_LEN < 1 THEN RETURN SETERROR (1 , 0 , "" )
LOCAL $T_CHARS = DLLSTRUCTCREATE ("char[" & $I_LEN + 1 & "]" )
DLLSTRUCTSETDATA ($T_CHARS , 1 , $S_STRING )
LOCAL $A_REV = DLLCALL ("msvcrt.dll" , "ptr:cdecl" , "_strrev" , "struct*" , $T_CHARS )
IF @ERROR OR $A_REV [0 ] = 0 THEN RETURN SETERROR (2 , 0 , "" )
RETURN DLLSTRUCTGETDATA ($T_CHARS , 1 )
ENDFUNC
FUNC _STRINGTOHEX ($STRCHAR )
RETURN HEX (STRINGTOBINARY ($STRCHAR ) )
ENDFUNC
GLOBAL CONST $BS_GROUPBOX = 7
GLOBAL CONST $BS_BOTTOM = 2048
GLOBAL CONST $BS_CENTER = 768
GLOBAL CONST $BS_DEFPUSHBUTTON = 1
GLOBAL CONST $BS_LEFT = 256
GLOBAL CONST $BS_MULTILINE = 8192
GLOBAL CONST $BS_PUSHBOX = 10
GLOBAL CONST $BS_PUSHLIKE = 4096
GLOBAL CONST $BS_RIGHT = 512
GLOBAL CONST $BS_RIGHTBUTTON = 32
GLOBAL CONST $BS_TOP = 1024
GLOBAL CONST $BS_VCENTER = 3072
GLOBAL CONST $BS_FLAT = 32768
GLOBAL CONST $BS_ICON = 64
GLOBAL CONST $BS_BITMAP = 128
GLOBAL CONST $BS_NOTIFY = 16384
GLOBAL CONST $BS_SPLITBUTTON = 12
GLOBAL CONST $BS_DEFSPLITBUTTON = 13
GLOBAL CONST $BS_COMMANDLINK = 14
GLOBAL CONST $BS_DEFCOMMANDLINK = 15
GLOBAL CONST $BCSIF_GLYPH = 1
GLOBAL CONST $BCSIF_IMAGE = 2
GLOBAL CONST $BCSIF_STYLE = 4
GLOBAL CONST $BCSIF_SIZE = 8
GLOBAL CONST $BCSS_NOSPLIT = 1
GLOBAL CONST $BCSS_STRETCH = 2
GLOBAL CONST $BCSS_ALIGNLEFT = 4
GLOBAL CONST $BCSS_IMAGE = 8
GLOBAL CONST $BUTTON_IMAGELIST_ALIGN_LEFT = 0
GLOBAL CONST $BUTTON_IMAGELIST_ALIGN_RIGHT = 1
GLOBAL CONST $BUTTON_IMAGELIST_ALIGN_TOP = 2
GLOBAL CONST $BUTTON_IMAGELIST_ALIGN_BOTTOM = 3
GLOBAL CONST $BUTTON_IMAGELIST_ALIGN_CENTER = 4
GLOBAL CONST $BS_3STATE = 5
GLOBAL CONST $BS_AUTO3STATE = 6
GLOBAL CONST $BS_AUTOCHECKBOX = 3
GLOBAL CONST $BS_CHECKBOX = 2
GLOBAL CONST $BS_RADIOBUTTON = 4
GLOBAL CONST $BS_AUTORADIOBUTTON = 9
GLOBAL CONST $BS_OWNERDRAW = 11
GLOBAL CONST $GUI_SS_DEFAULT_BUTTON = 0
GLOBAL CONST $GUI_SS_DEFAULT_CHECKBOX = 0
GLOBAL CONST $GUI_SS_DEFAULT_GROUP = 0
GLOBAL CONST $GUI_SS_DEFAULT_RADIO = 0
GLOBAL CONST $BCM_FIRST = 5632
GLOBAL CONST $BCM_GETIDEALSIZE = ($BCM_FIRST + 1 )
GLOBAL CONST $BCM_GETIMAGELIST = ($BCM_FIRST + 3 )
GLOBAL CONST $BCM_GETNOTE = ($BCM_FIRST + 10 )
GLOBAL CONST $BCM_GETNOTELENGTH = ($BCM_FIRST + 11 )
GLOBAL CONST $BCM_GETSPLITINFO = ($BCM_FIRST + 8 )
GLOBAL CONST $BCM_GETTEXTMARGIN = ($BCM_FIRST + 5 )
GLOBAL CONST $BCM_SETDROPDOWNSTATE = ($BCM_FIRST + 6 )
GLOBAL CONST $BCM_SETIMAGELIST = ($BCM_FIRST + 2 )
GLOBAL CONST $BCM_SETNOTE = ($BCM_FIRST + 9 )
GLOBAL CONST $BCM_SETSHIELD = ($BCM_FIRST + 12 )
GLOBAL CONST $BCM_SETSPLITINFO = ($BCM_FIRST + 7 )
GLOBAL CONST $BCM_SETTEXTMARGIN = ($BCM_FIRST + 4 )
GLOBAL CONST $BM_CLICK = 245
GLOBAL CONST $BM_GETCHECK = 240
GLOBAL CONST $BM_GETIMAGE = 246
GLOBAL CONST $BM_GETSTATE = 242
GLOBAL CONST $BM_SETCHECK = 241
GLOBAL CONST $BM_SETDONTCLICK = 248
GLOBAL CONST $BM_SETIMAGE = 247
GLOBAL CONST $BM_SETSTATE = 243
GLOBAL CONST $BM_SETSTYLE = 244
GLOBAL CONST $BCN_FIRST = - 1250
GLOBAL CONST $BCN_DROPDOWN = ($BCN_FIRST + 2 )
GLOBAL CONST $BCN_HOTITEMCHANGE = ($BCN_FIRST + 1 )
GLOBAL CONST $BN_CLICKED = 0
GLOBAL CONST $BN_PAINT = 1
GLOBAL CONST $BN_HILITE = 2
GLOBAL CONST $BN_UNHILITE = 3
GLOBAL CONST $BN_DISABLE = 4
GLOBAL CONST $BN_DOUBLECLICKED = 5
GLOBAL CONST $BN_SETFOCUS = 6
GLOBAL CONST $BN_KILLFOCUS = 7
GLOBAL CONST $BN_PUSHED = $BN_HILITE
GLOBAL CONST $BN_UNPUSHED = $BN_UNHILITE
GLOBAL CONST $BN_DBLCLK = $BN_DOUBLECLICKED
GLOBAL CONST $BST_CHECKED = 1
GLOBAL CONST $BST_INDETERMINATE = 2
GLOBAL CONST $BST_UNCHECKED = 0
GLOBAL CONST $BST_FOCUS = 8
GLOBAL CONST $BST_PUSHED = 4
GLOBAL CONST $BST_DONTCLICK = 128
FUNC _SENDMESSAGE ($HWND , $IMSG , $WPARAM = 0 , $LPARAM = 0 , $IRETURN = 0 , $WPARAMTYPE = "wparam" , $LPARAMTYPE = "lparam" , $SRETURNTYPE = "lresult" )
LOCAL $ARESULT = DLLCALL ("user32.dll" , $SRETURNTYPE , "SendMessageW" , "hwnd" , $HWND , "uint" , $IMSG , $WPARAMTYPE , $WPARAM , $LPARAMTYPE , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $IRETURN >= 0 AND $IRETURN <= 4 THEN RETURN $ARESULT [$IRETURN ]
RETURN $ARESULT
ENDFUNC
FUNC _SENDMESSAGEA ($HWND , $IMSG , $WPARAM = 0 , $LPARAM = 0 , $IRETURN = 0 , $WPARAMTYPE = "wparam" , $LPARAMTYPE = "lparam" , $SRETURNTYPE = "lresult" )
LOCAL $ARESULT = DLLCALL ("user32.dll" , $SRETURNTYPE , "SendMessageA" , "hwnd" , $HWND , "uint" , $IMSG , $WPARAMTYPE , $WPARAM , $LPARAMTYPE , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $IRETURN >= 0 AND $IRETURN <= 4 THEN RETURN $ARESULT [$IRETURN ]
RETURN $ARESULT
ENDFUNC
GLOBAL CONST $TAGPOINT = "struct;long X;long Y;endstruct"
GLOBAL CONST $TAGRECT = "struct;long Left;long Top;long Right;long Bottom;endstruct"
GLOBAL CONST $TAGSIZE = "struct;long X;long Y;endstruct"
GLOBAL CONST $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight"
GLOBAL CONST $TAGFILETIME = "struct;dword Lo;dword Hi;endstruct"
GLOBAL CONST $TAGSYSTEMTIME = "struct;word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds;endstruct"
GLOBAL CONST $TAGTIME_ZONE_INFORMATION = "struct;long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias;endstruct"
GLOBAL CONST $TAGNMHDR = "struct;hwnd hWndFrom;uint_ptr IDFrom;INT Code;endstruct"
GLOBAL CONST $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param"
GLOBAL CONST $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;wchar szText[260]"
GLOBAL CONST $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;wchar szText[260];int Why"
GLOBAL CONST $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param"
GLOBAL CONST $TAGDTPRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;" & "word MinSecond;word MinMSecond;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;" & "word MaxMinute;word MaxSecond;word MaxMSecond;bool MinValid;bool MaxValid"
GLOBAL CONST $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TAGSYSTEMTIME
GLOBAL CONST $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TAGSYSTEMTIME & ";ptr pDisplay;wchar Display[64]"
GLOBAL CONST $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;struct;long SizeX;long SizeY;endstruct"
GLOBAL CONST $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TAGSYSTEMTIME
GLOBAL CONST $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TAGSYSTEMTIME & ";dword Flags"
GLOBAL CONST $TAGEVENTLOGRECORD = "dword Length;dword Reserved;dword RecordNumber;dword TimeGenerated;dword TimeWritten;dword EventID;" & "word EventType;word NumStrings;word EventCategory;word ReservedFlags;dword ClosingRecordNumber;dword StringOffset;" & "dword UserSidLength;dword UserSidOffset;dword DataLength;dword DataOffset"
GLOBAL CONST $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved"
GLOBAL CONST $TAGGDIPENCODERPARAM = "byte GUID[16];ulong Count;ulong Type;ptr Values"
GLOBAL CONST $TAGGDIPENCODERPARAMS = "uint Count;byte Params[1]"
GLOBAL CONST $TAGGDIPRECTF = "float X;float Y;float Width;float Height"
GLOBAL CONST $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs"
GLOBAL CONST $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc"
GLOBAL CONST $TAGGDIPIMAGECODECINFO = "byte CLSID[16];byte FormatID[16];ptr CodecName;ptr DllName;ptr FormatDesc;ptr FileExt;" & "ptr MimeType;dword Flags;dword Version;dword SigCount;dword SigSize;ptr SigPattern;ptr SigMask"
GLOBAL CONST $TAGGDIPPENCODERPARAMS = "uint Count;byte Params[1]"
GLOBAL CONST $TAGHDITEM = "uint Mask;int XY;ptr Text;handle hBMP;int TextMax;int Fmt;lparam Param;int Image;int Order;uint Type;ptr pFilter;uint State"
GLOBAL CONST $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam"
GLOBAL CONST $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT
GLOBAL CONST $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem"
GLOBAL CONST $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1"
GLOBAL CONST $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value"
GLOBAL CONST $TAGLVFINDINFO = "struct;uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction;endstruct"
GLOBAL CONST $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem;int iGroup"
GLOBAL CONST $TAGLVITEM = "struct;uint Mask;int Item;int SubItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;lparam Param;" & "int Indent;int GroupID;uint Columns;ptr pColumns;ptr piColFmt;int iGroup;endstruct"
GLOBAL CONST $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "struct;long ActionX;long ActionY;endstruct;lparam Param"
GLOBAL CONST $TAGNMLVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword dwDrawStage;handle hdc;" & $TAGRECT & ";dword_ptr dwItemSpec;uint uItemState;lparam lItemlParam;endstruct" & ";dword clrText;dword clrTextBk;int iSubItem;dword dwItemType;dword clrFace;int iIconEffect;" & "int iIconPhase;int iPartId;int iStateId;struct;long TextLeft;long TextTop;long TextRight;long TextBottom;endstruct;uint uAlign"
GLOBAL CONST $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM
GLOBAL CONST $TAGNMLVFINDITEM = $TAGNMHDR & ";int Start;" & $TAGLVFINDINFO
GLOBAL CONST $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam"
GLOBAL CONST $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags"
GLOBAL CONST $TAGNMLVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
GLOBAL CONST $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY"
GLOBAL CONST $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TAGSYSTEMTIME & ";" & $TAGRECT & ";int iOffset;int iRow;int iCol"
GLOBAL CONST $TAGMCMONTHRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short Span"
GLOBAL CONST $TAGMCRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short MinSet;short MaxSet"
GLOBAL CONST $TAGMCSELRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds"
GLOBAL CONST $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TAGSYSTEMTIME & ";int DayState;ptr pDayState"
GLOBAL CONST $TAGNMSELCHANGE = $TAGNMHDR & ";struct;word BegYear;word BegMonth;word BegDOW;word BegDay;word BegHour;word BegMinute;word BegSecond;word BegMSeconds;endstruct;" & "struct;word EndYear;word EndMonth;word EndDOW;word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds;endstruct"
GLOBAL CONST $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result;dword dwFlags"
GLOBAL CONST $TAGNMTCKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
GLOBAL CONST $TAGTVITEM = "struct;uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param;endstruct"
GLOBAL CONST $TAGTVITEMEX = "struct;" & $TAGTVITEM & ";int Integral;uint uStateEx;hwnd hwnd;int iExpandedImage;int iReserved;endstruct"
GLOBAL CONST $TAGNMTREEVIEW = $TAGNMHDR & ";uint Action;" & "struct;uint OldMask;handle OldhItem;uint OldState;uint OldStateMask;" & "ptr OldText;int OldTextMax;int OldImage;int OldSelectedImage;int OldChildren;lparam OldParam;endstruct;" & "struct;uint NewMask;handle NewhItem;uint NewState;uint NewStateMask;" & "ptr NewText;int NewTextMax;int NewImage;int NewSelectedImage;int NewChildren;lparam NewParam;endstruct;" & "struct;long PointX;long PointY;endstruct"
GLOBAL CONST $TAGNMTVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword DrawStage;handle HDC;" & $TAGRECT & ";dword_ptr ItemSpec;uint ItemState;lparam ItemParam;endstruct" & ";dword ClrText;dword ClrTextBk;int Level"
GLOBAL CONST $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM
GLOBAL CONST $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam"
GLOBAL CONST $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item"
GLOBAL CONST $TAGNMTVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
GLOBAL CONST $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo"
GLOBAL CONST $TAGTOKEN_PRIVILEGES = "dword Count;align 4;int64 LUID;dword Attributes"
GLOBAL CONST $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT
GLOBAL CONST $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData"
GLOBAL CONST $TAGMENUITEMINFO = "uint Size;uint Mask;uint Type;uint State;uint ID;handle SubMenu;handle BmpChecked;handle BmpUnchecked;" & "ulong_ptr ItemData;ptr TypeData;uint CCH;handle BmpItem"
GLOBAL CONST $TAGREBARBANDINFO = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader;" & $TAGRECT & ";uint uChevronState"
GLOBAL CONST $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak"
GLOBAL CONST $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;" & "struct;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;endstruct;" & "struct;long ActualLeft;long ActualTop;long ActualRight;long ActualBottom;endstruct"
GLOBAL CONST $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;lparam lParam"
GLOBAL CONST $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM"
GLOBAL CONST $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;" & "struct;long CLeft;long CTop;long CRight;long CBottom;endstruct;" & "struct;long BLeft;long BTop;long BRight;long BBottom;endstruct"
GLOBAL CONST $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow"
GLOBAL CONST $TAGNMTOOLBAR = $TAGNMHDR & ";int iItem;" & "struct;int iBitmap;int idCommand;byte fsState;byte fsStyle;dword_ptr dwData;int_ptr iString;endstruct" & ";int cchText;ptr pszText;" & $TAGRECT
GLOBAL CONST $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags"
GLOBAL CONST $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;align;dword_ptr Param;int_ptr String"
GLOBAL CONST $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax"
GLOBAL CONST $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider"
GLOBAL CONST $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;struct;dword Offset;dword OffsetHigh;endstruct;handle hEvent"
GLOBAL CONST $TAGOPENFILENAME = "dword StructSize;hwnd hwndOwner;handle hInstance;ptr lpstrFilter;ptr lpstrCustomFilter;" & "dword nMaxCustFilter;dword nFilterIndex;ptr lpstrFile;dword nMaxFile;ptr lpstrFileTitle;dword nMaxFileTitle;" & "ptr lpstrInitialDir;ptr lpstrTitle;dword Flags;word nFileOffset;word nFileExtension;ptr lpstrDefExt;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName;ptr pvReserved;dword dwReserved;dword FlagsEx"
GLOBAL CONST $TAGBITMAPINFO = "struct;dword Size;long Width;long Height;word Planes;word BitCount;dword Compression;dword SizeImage;" & "long XPelsPerMeter;long YPelsPerMeter;dword ClrUsed;dword ClrImportant;endstruct;dword RGBQuad"
GLOBAL CONST $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format"
GLOBAL CONST $TAGGUID = "ulong Data1;ushort Data2;ushort Data3;byte Data4[8]"
GLOBAL CONST $TAGWINDOWPLACEMENT = "uint length;uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]"
GLOBAL CONST $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags"
GLOBAL CONST $TAGSCROLLINFO = "uint cbSize;uint fMask;int nMin;int nMax;uint nPage;int nPos;int nTrackPos"
GLOBAL CONST $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]"
GLOBAL CONST $TAGLOGFONT = "long Height;long Width;long Escapement;long Orientation;long Weight;byte Italic;byte Underline;" & "byte Strikeout;byte CharSet;byte OutPrecision;byte ClipPrecision;byte Quality;byte PitchAndFamily;wchar FaceName[32]"
GLOBAL CONST $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo"
GLOBAL CONST $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID"
GLOBAL CONST $TAGSTARTUPINFO = "dword Size;ptr Reserved1;ptr Desktop;ptr Title;dword X;dword Y;dword XSize;dword YSize;dword XCountChars;" & "dword YCountChars;dword FillAttribute;dword Flags;word ShowWindow;word Reserved2;ptr Reserved3;handle StdInput;" & "handle StdOutput;handle StdError"
GLOBAL CONST $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle"
GLOBAL CONST $TAGWIN32_FIND_DATA = "dword dwFileAttributes;dword ftCreationTime[2];dword ftLastAccessTime[2];dword ftLastWriteTime[2];dword nFileSizeHigh;dword nFileSizeLow;dword dwReserved0;dword dwReserved1;wchar cFileName[260];wchar cAlternateFileName[14]"
GLOBAL CONST $TAGTEXTMETRIC = "long tmHeight;long tmAscent;long tmDescent;long tmInternalLeading;long tmExternalLeading;" & "long tmAveCharWidth;long tmMaxCharWidth;long tmWeight;long tmOverhang;long tmDigitizedAspectX;long tmDigitizedAspectY;" & "wchar tmFirstChar;wchar tmLastChar;wchar tmDefaultChar;wchar tmBreakChar;byte tmItalic;byte tmUnderlined;byte tmStruckOut;" & "byte tmPitchAndFamily;byte tmCharSet"
GLOBAL CONST $ERROR_NO_TOKEN = 1008
GLOBAL CONST $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
GLOBAL CONST $SE_AUDIT_NAME = "SeAuditPrivilege"
GLOBAL CONST $SE_BACKUP_NAME = "SeBackupPrivilege"
GLOBAL CONST $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
GLOBAL CONST $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
GLOBAL CONST $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
GLOBAL CONST $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
GLOBAL CONST $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
GLOBAL CONST $SE_DEBUG_NAME = "SeDebugPrivilege"
GLOBAL CONST $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
GLOBAL CONST $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
GLOBAL CONST $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
GLOBAL CONST $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
GLOBAL CONST $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
GLOBAL CONST $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
GLOBAL CONST $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
GLOBAL CONST $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
GLOBAL CONST $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
GLOBAL CONST $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
GLOBAL CONST $SE_RESTORE_NAME = "SeRestorePrivilege"
GLOBAL CONST $SE_SECURITY_NAME = "SeSecurityPrivilege"
GLOBAL CONST $SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
GLOBAL CONST $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
GLOBAL CONST $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
GLOBAL CONST $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
GLOBAL CONST $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
GLOBAL CONST $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
GLOBAL CONST $SE_TCB_NAME = "SeTcbPrivilege"
GLOBAL CONST $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
GLOBAL CONST $SE_UNDOCK_NAME = "SeUndockPrivilege"
GLOBAL CONST $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1
GLOBAL CONST $SE_PRIVILEGE_ENABLED = 2
GLOBAL CONST $SE_PRIVILEGE_REMOVED = 4
GLOBAL CONST $SE_PRIVILEGE_USED_FOR_ACCESS = 2147483648
GLOBAL CONST $SE_GROUP_MANDATORY = 1
GLOBAL CONST $SE_GROUP_ENABLED_BY_DEFAULT = 2
GLOBAL CONST $SE_GROUP_ENABLED = 4
GLOBAL CONST $SE_GROUP_OWNER = 8
GLOBAL CONST $SE_GROUP_USE_FOR_DENY_ONLY = 16
GLOBAL CONST $SE_GROUP_INTEGRITY = 32
GLOBAL CONST $SE_GROUP_INTEGRITY_ENABLED = 64
GLOBAL CONST $SE_GROUP_RESOURCE = 536870912
GLOBAL CONST $SE_GROUP_LOGON_ID = 3221225472
GLOBAL ENUM $TOKENPRIMARY = 1 , $TOKENIMPERSONATION
GLOBAL ENUM $SECURITYANONYMOUS = 0 , $SECURITYIDENTIFICATION , $SECURITYIMPERSONATION , $SECURITYDELEGATION
GLOBAL ENUM $TOKENUSER = 1 , $TOKENGROUPS , $TOKENPRIVILEGES , $TOKENOWNER , $TOKENPRIMARYGROUP , $TOKENDEFAULTDACL , $TOKENSOURCE , $TOKENTYPE , $TOKENIMPERSONATIONLEVEL , $TOKENSTATISTICS , $TOKENRESTRICTEDSIDS , $TOKENSESSIONID , $TOKENGROUPSANDPRIVILEGES , $TOKENSESSIONREFERENCE , $TOKENSANDBOXINERT , $TOKENAUDITPOLICY , $TOKENORIGIN , $TOKENELEVATIONTYPE , $TOKENLINKEDTOKEN , $TOKENELEVATION , $TOKENHASRESTRICTIONS , $TOKENACCESSINFORMATION , $TOKENVIRTUALIZATIONALLOWED , $TOKENVIRTUALIZATIONENABLED , $TOKENINTEGRITYLEVEL , $TOKENUIACCESS , $TOKENMANDATORYPOLICY , $TOKENLOGONSID
GLOBAL CONST $TOKEN_ASSIGN_PRIMARY = 1
GLOBAL CONST $TOKEN_DUPLICATE = 2
GLOBAL CONST $TOKEN_IMPERSONATE = 4
GLOBAL CONST $TOKEN_QUERY = 8
GLOBAL CONST $TOKEN_QUERY_SOURCE = 16
GLOBAL CONST $TOKEN_ADJUST_PRIVILEGES = 32
GLOBAL CONST $TOKEN_ADJUST_GROUPS = 64
GLOBAL CONST $TOKEN_ADJUST_DEFAULT = 128
GLOBAL CONST $TOKEN_ADJUST_SESSIONID = 256
GLOBAL CONST $TOKEN_ALL_ACCESS = 983551
GLOBAL CONST $TOKEN_READ = 131080
GLOBAL CONST $TOKEN_WRITE = 131296
GLOBAL CONST $TOKEN_EXECUTE = 131072
GLOBAL CONST $TOKEN_HAS_TRAVERSE_PRIVILEGE = 1
GLOBAL CONST $TOKEN_HAS_BACKUP_PRIVILEGE = 2
GLOBAL CONST $TOKEN_HAS_RESTORE_PRIVILEGE = 4
GLOBAL CONST $TOKEN_HAS_ADMIN_GROUP = 8
GLOBAL CONST $TOKEN_IS_RESTRICTED = 16
GLOBAL CONST $TOKEN_SESSION_NOT_REFERENCED = 32
GLOBAL CONST $TOKEN_SANDBOX_INERT = 64
GLOBAL CONST $TOKEN_HAS_IMPERSONATE_PRIVILEGE = 128
GLOBAL CONST $RIGHTS_DELETE = 65536
GLOBAL CONST $READ_CONTROL = 131072
GLOBAL CONST $WRITE_DAC = 262144
GLOBAL CONST $WRITE_OWNER = 524288
GLOBAL CONST $SYNCHRONIZE = 1048576
GLOBAL CONST $STANDARD_RIGHTS_REQUIRED = 983040
GLOBAL CONST $STANDARD_RIGHTS_READ = $READ_CONTROL
GLOBAL CONST $STANDARD_RIGHTS_WRITE = $READ_CONTROL
GLOBAL CONST $STANDARD_RIGHTS_EXECUTE = $READ_CONTROL
GLOBAL CONST $STANDARD_RIGHTS_ALL = 2031616
GLOBAL CONST $SPECIFIC_RIGHTS_ALL = 65535
GLOBAL ENUM $NOT_USED_ACCESS = 0 , $GRANT_ACCESS , $SET_ACCESS , $DENY_ACCESS , $REVOKE_ACCESS , $SET_AUDIT_SUCCESS , $SET_AUDIT_FAILURE
GLOBAL ENUM $TRUSTEE_IS_UNKNOWN = 0 , $TRUSTEE_IS_USER , $TRUSTEE_IS_GROUP , $TRUSTEE_IS_DOMAIN , $TRUSTEE_IS_ALIAS , $TRUSTEE_IS_WELL_KNOWN_GROUP , $TRUSTEE_IS_DELETED , $TRUSTEE_IS_INVALID , $TRUSTEE_IS_COMPUTER
GLOBAL CONST $LOGON_WITH_PROFILE = 1
GLOBAL CONST $LOGON_NETCREDENTIALS_ONLY = 2
GLOBAL ENUM $SIDTYPEUSER = 1 , $SIDTYPEGROUP , $SIDTYPEDOMAIN , $SIDTYPEALIAS , $SIDTYPEWELLKNOWNGROUP , $SIDTYPEDELETEDACCOUNT , $SIDTYPEINVALID , $SIDTYPEUNKNOWN , $SIDTYPECOMPUTER , $SIDTYPELABEL
GLOBAL CONST $SID_ADMINISTRATORS = "S-1-5-32-544"
GLOBAL CONST $SID_USERS = "S-1-5-32-545"
GLOBAL CONST $SID_GUESTS = "S-1-5-32-546"
GLOBAL CONST $SID_ACCOUNT_OPERATORS = "S-1-5-32-548"
GLOBAL CONST $SID_SERVER_OPERATORS = "S-1-5-32-549"
GLOBAL CONST $SID_PRINT_OPERATORS = "S-1-5-32-550"
GLOBAL CONST $SID_BACKUP_OPERATORS = "S-1-5-32-551"
GLOBAL CONST $SID_REPLICATOR = "S-1-5-32-552"
GLOBAL CONST $SID_OWNER = "S-1-3-0"
GLOBAL CONST $SID_EVERYONE = "S-1-1-0"
GLOBAL CONST $SID_NETWORK = "S-1-5-2"
GLOBAL CONST $SID_INTERACTIVE = "S-1-5-4"
GLOBAL CONST $SID_SYSTEM = "S-1-5-18"
GLOBAL CONST $SID_AUTHENTICATED_USERS = "S-1-5-11"
GLOBAL CONST $SID_SCHANNEL_AUTHENTICATION = "S-1-5-64-14"
GLOBAL CONST $SID_DIGEST_AUTHENTICATION = "S-1-5-64-21"
GLOBAL CONST $SID_NT_SERVICE = "S-1-5-80"
GLOBAL CONST $SID_UNTRUSTED_MANDATORY_LEVEL = "S-1-16-0"
GLOBAL CONST $SID_LOW_MANDATORY_LEVEL = "S-1-16-4096"
GLOBAL CONST $SID_MEDIUM_MANDATORY_LEVEL = "S-1-16-8192"
GLOBAL CONST $SID_MEDIUM_PLUS_MANDATORY_LEVEL = "S-1-16-8448"
GLOBAL CONST $SID_HIGH_MANDATORY_LEVEL = "S-1-16-12288"
GLOBAL CONST $SID_SYSTEM_MANDATORY_LEVEL = "S-1-16-16384"
GLOBAL CONST $SID_PROTECTED_PROCESS_MANDATORY_LEVEL = "S-1-16-20480"
GLOBAL CONST $SID_SECURE_PROCESS_MANDATORY_LEVEL = "S-1-16-28672"
GLOBAL CONST $SID_ALL_SERVICES = "S-1-5-80-0"
FUNC _WINAPI_GETLASTERROR ($CURERR = @ERROR , $CUREXT = @EXTENDED )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "GetLastError" )
RETURN SETERROR ($CURERR , $CUREXT , $ARESULT [0 ] )
ENDFUNC
FUNC _WINAPI_SETLASTERROR ($IERRCODE , $CURERR = @ERROR , $CUREXT = @EXTENDED )
DLLCALL ("kernel32.dll" , "none" , "SetLastError" , "dword" , $IERRCODE )
RETURN SETERROR ($CURERR , $CUREXT )
ENDFUNC
FUNC _SECURITY__ADJUSTTOKENPRIVILEGES ($HTOKEN , $FDISABLEALL , $PNEWSTATE , $IBUFFERLEN , $PPREVSTATE = 0 , $PREQUIRED = 0 )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "AdjustTokenPrivileges" , "handle" , $HTOKEN , "bool" , $FDISABLEALL , "struct*" , $PNEWSTATE , "dword" , $IBUFFERLEN , "struct*" , $PPREVSTATE , "struct*" , $PREQUIRED )
IF @ERROR THEN RETURN SETERROR (1 , @EXTENDED , FALSE )
RETURN NOT ($ACALL [0 ] = 0 )
ENDFUNC
FUNC _SECURITY__CREATEPROCESSWITHTOKEN ($HTOKEN , $ILOGONFLAGS , $SCOMMANDLINE , $ICREATIONFLAGS , $SCURDIR , $TSTARTUPINFO , $TPROCESS_INFORMATION )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "CreateProcessWithTokenW" , "handle" , $HTOKEN , "dword" , $ILOGONFLAGS , "ptr" , 0 , "wstr" , $SCOMMANDLINE , "dword" , $ICREATIONFLAGS , "struct*" , 0 , "wstr" , $SCURDIR , "struct*" , $TSTARTUPINFO , "struct*" , $TPROCESS_INFORMATION )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (1 , @EXTENDED , FALSE )
RETURN TRUE
ENDFUNC
FUNC _SECURITY__DUPLICATETOKENEX ($HEXISTINGTOKEN , $IDESIREDACCESS , $IIMPERSONATIONLEVEL , $ITOKENTYPE )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "DuplicateTokenEx" , "handle" , $HEXISTINGTOKEN , "dword" , $IDESIREDACCESS , "struct*" , 0 , "int" , $IIMPERSONATIONLEVEL , "int" , $ITOKENTYPE , "handle*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (1 , @EXTENDED , 0 )
RETURN $ACALL [6 ]
ENDFUNC
FUNC _SECURITY__GETACCOUNTSID ($SACCOUNT , $SSYSTEM = "" )
LOCAL $AACCT = _SECURITY__LOOKUPACCOUNTNAME ($SACCOUNT , $SSYSTEM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF ISARRAY ($AACCT ) THEN RETURN _SECURITY__STRINGSIDTOSID ($AACCT [0 ] )
RETURN ""
ENDFUNC
FUNC _SECURITY__GETLENGTHSID ($PSID )
IF NOT _SECURITY__ISVALIDSID ($PSID ) THEN RETURN SETERROR (1 , @EXTENDED , 0 )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "dword" , "GetLengthSid" , "struct*" , $PSID )
IF @ERROR THEN RETURN SETERROR (2 , @EXTENDED , 0 )
RETURN $ACALL [0 ]
ENDFUNC
FUNC _SECURITY__GETTOKENINFORMATION ($HTOKEN , $ICLASS )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "GetTokenInformation" , "handle" , $HTOKEN , "int" , $ICLASS , "struct*" , 0 , "dword" , 0 , "dword*" , 0 )
IF @ERROR OR NOT $ACALL [5 ] THEN RETURN SETERROR (1 , @EXTENDED , 0 )
LOCAL $ILEN = $ACALL [5 ]
LOCAL $TBUFFER = DLLSTRUCTCREATE ("byte[" & $ILEN & "]" )
$ACALL = DLLCALL ("advapi32.dll" , "bool" , "GetTokenInformation" , "handle" , $HTOKEN , "int" , $ICLASS , "struct*" , $TBUFFER , "dword" , DLLSTRUCTGETSIZE ($TBUFFER ) , "dword*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (2 , @EXTENDED , 0 )
RETURN $TBUFFER
ENDFUNC
FUNC _SECURITY__IMPERSONATESELF ($ILEVEL = $SECURITYIMPERSONATION )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "ImpersonateSelf" , "int" , $ILEVEL )
IF @ERROR THEN RETURN SETERROR (1 , @EXTENDED , FALSE )
RETURN NOT ($ACALL [0 ] = 0 )
ENDFUNC
FUNC _SECURITY__ISVALIDSID ($PSID )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "IsValidSid" , "struct*" , $PSID )
IF @ERROR THEN RETURN SETERROR (1 , @EXTENDED , FALSE )
RETURN NOT ($ACALL [0 ] = 0 )
ENDFUNC
FUNC _SECURITY__LOOKUPACCOUNTNAME ($SACCOUNT , $SSYSTEM = "" )
LOCAL $TDATA = DLLSTRUCTCREATE ("byte SID[256]" )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "LookupAccountNameW" , "wstr" , $SSYSTEM , "wstr" , $SACCOUNT , "struct*" , $TDATA , "dword*" , DLLSTRUCTGETSIZE ($TDATA ) , "wstr" , "" , "dword*" , DLLSTRUCTGETSIZE ($TDATA ) , "int*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (1 , @EXTENDED , 0 )
LOCAL $AACCT [3 ]
$AACCT [0 ] = _SECURITY__SIDTOSTRINGSID (DLLSTRUCTGETPTR ($TDATA , "SID" ) )
$AACCT [1 ] = $ACALL [5 ]
$AACCT [2 ] = $ACALL [7 ]
RETURN $AACCT
ENDFUNC
FUNC _SECURITY__LOOKUPACCOUNTSID ($VSID , $SSYSTEM = "" )
LOCAL $PSID , $AACCT [3 ]
IF ISSTRING ($VSID ) THEN
$PSID = _SECURITY__STRINGSIDTOSID ($VSID )
ELSE
$PSID = $VSID
ENDIF
IF NOT _SECURITY__ISVALIDSID ($PSID ) THEN RETURN SETERROR (1 , @EXTENDED , 0 )
LOCAL $TYPESYSTEM = "ptr"
IF $SSYSTEM THEN $TYPESYSTEM = "wstr"
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "LookupAccountSidW" , $TYPESYSTEM , $SSYSTEM , "struct*" , $PSID , "wstr" , "" , "dword*" , 65536 , "wstr" , "" , "dword*" , 65536 , "int*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (2 , @EXTENDED , 0 )
LOCAL $AACCT [3 ]
$AACCT [0 ] = $ACALL [3 ]
$AACCT [1 ] = $ACALL [5 ]
$AACCT [2 ] = $ACALL [7 ]
RETURN $AACCT
ENDFUNC
FUNC _SECURITY__LOOKUPPRIVILEGEVALUE ($SSYSTEM , $SNAME )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "LookupPrivilegeValueW" , "wstr" , $SSYSTEM , "wstr" , $SNAME , "int64*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (1 , @EXTENDED , 0 )
RETURN $ACALL [3 ]
ENDFUNC
FUNC _SECURITY__OPENPROCESSTOKEN ($HPROCESS , $IACCESS )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "OpenProcessToken" , "handle" , $HPROCESS , "dword" , $IACCESS , "handle*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (1 , @EXTENDED , 0 )
RETURN $ACALL [3 ]
ENDFUNC
FUNC _SECURITY__OPENTHREADTOKEN ($IACCESS , $HTHREAD = 0 , $FOPENASSELF = FALSE )
IF $HTHREAD = 0 THEN $HTHREAD = _WINAPI_GETCURRENTTHREAD ()
IF @ERROR THEN RETURN SETERROR (1 , @EXTENDED , 0 )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "OpenThreadToken" , "handle" , $HTHREAD , "dword" , $IACCESS , "bool" , $FOPENASSELF , "handle*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (2 , @EXTENDED , 0 )
RETURN $ACALL [4 ]
ENDFUNC
FUNC _SECURITY__OPENTHREADTOKENEX ($IACCESS , $HTHREAD = 0 , $FOPENASSELF = FALSE )
LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKEN ($IACCESS , $HTHREAD , $FOPENASSELF )
IF $HTOKEN = 0 THEN
IF _WINAPI_GETLASTERROR () <> $ERROR_NO_TOKEN THEN RETURN SETERROR (3 , _WINAPI_GETLASTERROR () , 0 )
IF NOT _SECURITY__IMPERSONATESELF () THEN RETURN SETERROR (1 , _WINAPI_GETLASTERROR () , 0 )
$HTOKEN = _SECURITY__OPENTHREADTOKEN ($IACCESS , $HTHREAD , $FOPENASSELF )
IF $HTOKEN = 0 THEN RETURN SETERROR (2 , _WINAPI_GETLASTERROR () , 0 )
ENDIF
RETURN $HTOKEN
ENDFUNC
FUNC _SECURITY__SETPRIVILEGE ($HTOKEN , $SPRIVILEGE , $FENABLE )
LOCAL $ILUID = _SECURITY__LOOKUPPRIVILEGEVALUE ("" , $SPRIVILEGE )
IF $ILUID = 0 THEN RETURN SETERROR (1 , @EXTENDED , FALSE )
LOCAL $TCURRSTATE = DLLSTRUCTCREATE ($TAGTOKEN_PRIVILEGES )
LOCAL $ICURRSTATE = DLLSTRUCTGETSIZE ($TCURRSTATE )
LOCAL $TPREVSTATE = DLLSTRUCTCREATE ($TAGTOKEN_PRIVILEGES )
LOCAL $IPREVSTATE = DLLSTRUCTGETSIZE ($TPREVSTATE )
LOCAL $TREQUIRED = DLLSTRUCTCREATE ("int Data" )
DLLSTRUCTSETDATA ($TCURRSTATE , "Count" , 1 )
DLLSTRUCTSETDATA ($TCURRSTATE , "LUID" , $ILUID )
IF NOT _SECURITY__ADJUSTTOKENPRIVILEGES ($HTOKEN , FALSE , $TCURRSTATE , $ICURRSTATE , $TPREVSTATE , $TREQUIRED ) THEN RETURN SETERROR (2 , @ERROR , FALSE )
DLLSTRUCTSETDATA ($TPREVSTATE , "Count" , 1 )
DLLSTRUCTSETDATA ($TPREVSTATE , "LUID" , $ILUID )
LOCAL $IATTRIBUTES = DLLSTRUCTGETDATA ($TPREVSTATE , "Attributes" )
IF $FENABLE THEN
$IATTRIBUTES = BITOR ($IATTRIBUTES , $SE_PRIVILEGE_ENABLED )
ELSE
$IATTRIBUTES = BITAND ($IATTRIBUTES , BITNOT ($SE_PRIVILEGE_ENABLED ) )
ENDIF
DLLSTRUCTSETDATA ($TPREVSTATE , "Attributes" , $IATTRIBUTES )
IF NOT _SECURITY__ADJUSTTOKENPRIVILEGES ($HTOKEN , FALSE , $TPREVSTATE , $IPREVSTATE , $TCURRSTATE , $TREQUIRED ) THEN RETURN SETERROR (3 , @ERROR , FALSE )
RETURN TRUE
ENDFUNC
FUNC _SECURITY__SETTOKENINFORMATION ($HTOKEN , $ITOKENINFORMATION , $VTOKENINFORMATION , $ITOKENINFORMATIONLENGTH )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "SetTokenInformation" , "handle" , $HTOKEN , "int" , $ITOKENINFORMATION , "struct*" , $VTOKENINFORMATION , "dword" , $ITOKENINFORMATIONLENGTH )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (1 , @EXTENDED , FALSE )
RETURN TRUE
ENDFUNC
FUNC _SECURITY__SIDTOSTRINGSID ($PSID )
IF NOT _SECURITY__ISVALIDSID ($PSID ) THEN RETURN SETERROR (1 , 0 , "" )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "ConvertSidToStringSidW" , "struct*" , $PSID , "ptr*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (2 , @EXTENDED , "" )
LOCAL $PSTRINGSID = $ACALL [2 ]
LOCAL $SSID = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar Text[" & _WINAPI_STRINGLENW ($PSTRINGSID ) + 1 & "]" , $PSTRINGSID ) , "Text" )
_WINAPI_LOCALFREE ($PSTRINGSID )
RETURN $SSID
ENDFUNC
FUNC _SECURITY__SIDTYPESTR ($ITYPE )
SWITCH $ITYPE
CASE $SIDTYPEUSER
RETURN "User"
CASE $SIDTYPEGROUP
RETURN "Group"
CASE $SIDTYPEDOMAIN
RETURN "Domain"
CASE $SIDTYPEALIAS
RETURN "Alias"
CASE $SIDTYPEWELLKNOWNGROUP
RETURN "Well Known Group"
CASE $SIDTYPEDELETEDACCOUNT
RETURN "Deleted Account"
CASE $SIDTYPEINVALID
RETURN "Invalid"
CASE $SIDTYPEUNKNOWN
RETURN "Unknown Type"
CASE $SIDTYPECOMPUTER
RETURN "Computer"
CASE $SIDTYPELABEL
RETURN "A mandatory integrity label SID"
CASE ELSE
RETURN "Unknown SID Type"
ENDSWITCH
ENDFUNC
FUNC _SECURITY__STRINGSIDTOSID ($SSID )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "ConvertStringSidToSidW" , "wstr" , $SSID , "ptr*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (1 , @EXTENDED , 0 )
LOCAL $PSID = $ACALL [2 ]
LOCAL $TBUFFER = DLLSTRUCTCREATE ("byte Data[" & _SECURITY__GETLENGTHSID ($PSID ) & "]" , $PSID )
LOCAL $TSID = DLLSTRUCTCREATE ("byte Data[" & DLLSTRUCTGETSIZE ($TBUFFER ) & "]" )
DLLSTRUCTSETDATA ($TSID , "Data" , DLLSTRUCTGETDATA ($TBUFFER , "Data" ) )
_WINAPI_LOCALFREE ($PSID )
RETURN $TSID
ENDFUNC
GLOBAL $__GAINPROCESS_WINAPI [64 ] [2 ] = [[0 , 0 ] ]
GLOBAL $__GAWINLIST_WINAPI [64 ] [2 ] = [[0 , 0 ] ]
GLOBAL CONST $__WINAPICONSTANT_WM_SETFONT = 48
GLOBAL CONST $__WINAPICONSTANT_FW_NORMAL = 400
GLOBAL CONST $__WINAPICONSTANT_DEFAULT_CHARSET = 1
GLOBAL CONST $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0
GLOBAL CONST $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0
GLOBAL CONST $__WINAPICONSTANT_DEFAULT_QUALITY = 0
GLOBAL CONST $__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
GLOBAL CONST $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM = 4096
GLOBAL CONST $__WINAPICONSTANT_LOGPIXELSX = 88
GLOBAL CONST $__WINAPICONSTANT_LOGPIXELSY = 90
GLOBAL CONST $HGDI_ERROR = PTR (- 1 )
GLOBAL CONST $INVALID_HANDLE_VALUE = PTR (- 1 )
GLOBAL CONST $CLR_INVALID = - 1
GLOBAL CONST $__WINAPICONSTANT_FLASHW_CAPTION = 1
GLOBAL CONST $__WINAPICONSTANT_FLASHW_TRAY = 2
GLOBAL CONST $__WINAPICONSTANT_FLASHW_TIMER = 4
GLOBAL CONST $__WINAPICONSTANT_FLASHW_TIMERNOFG = 12
GLOBAL CONST $__WINAPICONSTANT_GW_HWNDNEXT = 2
GLOBAL CONST $__WINAPICONSTANT_GW_CHILD = 5
GLOBAL CONST $__WINAPICONSTANT_DI_MASK = 1
GLOBAL CONST $__WINAPICONSTANT_DI_IMAGE = 2
GLOBAL CONST $__WINAPICONSTANT_DI_NORMAL = 3
GLOBAL CONST $__WINAPICONSTANT_DI_COMPAT = 4
GLOBAL CONST $__WINAPICONSTANT_DI_DEFAULTSIZE = 8
GLOBAL CONST $__WINAPICONSTANT_DI_NOMIRROR = 16
GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1
GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE = 4
GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER = 8
GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE = 16
GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE = 32
GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED = 134217728
GLOBAL CONST $NULL_BRUSH = 5
GLOBAL CONST $NULL_PEN = 8
GLOBAL CONST $BLACK_BRUSH = 4
GLOBAL CONST $DKGRAY_BRUSH = 3
GLOBAL CONST $DC_BRUSH = 18
GLOBAL CONST $GRAY_BRUSH = 2
GLOBAL CONST $HOLLOW_BRUSH = $NULL_BRUSH
GLOBAL CONST $LTGRAY_BRUSH = 1
GLOBAL CONST $WHITE_BRUSH = 0
GLOBAL CONST $BLACK_PEN = 7
GLOBAL CONST $DC_PEN = 19
GLOBAL CONST $WHITE_PEN = 6
GLOBAL CONST $ANSI_FIXED_FONT = 11
GLOBAL CONST $ANSI_VAR_FONT = 12
GLOBAL CONST $DEVICE_DEFAULT_FONT = 14
GLOBAL CONST $DEFAULT_GUI_FONT = 17
GLOBAL CONST $OEM_FIXED_FONT = 10
GLOBAL CONST $SYSTEM_FONT = 13
GLOBAL CONST $SYSTEM_FIXED_FONT = 16
GLOBAL CONST $DEFAULT_PALETTE = 15
GLOBAL CONST $MB_PRECOMPOSED = 1
GLOBAL CONST $MB_COMPOSITE = 2
GLOBAL CONST $MB_USEGLYPHCHARS = 4
GLOBAL CONST $ULW_ALPHA = 2
GLOBAL CONST $ULW_COLORKEY = 1
GLOBAL CONST $ULW_OPAQUE = 4
GLOBAL CONST $WH_CALLWNDPROC = 4
GLOBAL CONST $WH_CALLWNDPROCRET = 12
GLOBAL CONST $WH_CBT = 5
GLOBAL CONST $WH_DEBUG = 9
GLOBAL CONST $WH_FOREGROUNDIDLE = 11
GLOBAL CONST $WH_GETMESSAGE = 3
GLOBAL CONST $WH_JOURNALPLAYBACK = 1
GLOBAL CONST $WH_JOURNALRECORD = 0
GLOBAL CONST $WH_KEYBOARD = 2
GLOBAL CONST $WH_KEYBOARD_LL = 13
GLOBAL CONST $WH_MOUSE = 7
GLOBAL CONST $WH_MOUSE_LL = 14
GLOBAL CONST $WH_MSGFILTER = - 1
GLOBAL CONST $WH_SHELL = 10
GLOBAL CONST $WH_SYSMSGFILTER = 6
GLOBAL CONST $WPF_ASYNCWINDOWPLACEMENT = 4
GLOBAL CONST $WPF_RESTORETOMAXIMIZED = 2
GLOBAL CONST $WPF_SETMINPOSITION = 1
GLOBAL CONST $KF_EXTENDED = 256
GLOBAL CONST $KF_ALTDOWN = 8192
GLOBAL CONST $KF_UP = 32768
GLOBAL CONST $LLKHF_EXTENDED = BITSHIFT ($KF_EXTENDED , 8 )
GLOBAL CONST $LLKHF_INJECTED = 16
GLOBAL CONST $LLKHF_ALTDOWN = BITSHIFT ($KF_ALTDOWN , 8 )
GLOBAL CONST $LLKHF_UP = BITSHIFT ($KF_UP , 8 )
GLOBAL CONST $OFN_ALLOWMULTISELECT = 512
GLOBAL CONST $OFN_CREATEPROMPT = 8192
GLOBAL CONST $OFN_DONTADDTORECENT = 33554432
GLOBAL CONST $OFN_ENABLEHOOK = 32
GLOBAL CONST $OFN_ENABLEINCLUDENOTIFY = 4194304
GLOBAL CONST $OFN_ENABLESIZING = 8388608
GLOBAL CONST $OFN_ENABLETEMPLATE = 64
GLOBAL CONST $OFN_ENABLETEMPLATEHANDLE = 128
GLOBAL CONST $OFN_EXPLORER = 524288
GLOBAL CONST $OFN_EXTENSIONDIFFERENT = 1024
GLOBAL CONST $OFN_FILEMUSTEXIST = 4096
GLOBAL CONST $OFN_FORCESHOWHIDDEN = 268435456
GLOBAL CONST $OFN_HIDEREADONLY = 4
GLOBAL CONST $OFN_LONGNAMES = 2097152
GLOBAL CONST $OFN_NOCHANGEDIR = 8
GLOBAL CONST $OFN_NODEREFERENCELINKS = 1048576
GLOBAL CONST $OFN_NOLONGNAMES = 262144
GLOBAL CONST $OFN_NONETWORKBUTTON = 131072
GLOBAL CONST $OFN_NOREADONLYRETURN = 32768
GLOBAL CONST $OFN_NOTESTFILECREATE = 65536
GLOBAL CONST $OFN_NOVALIDATE = 256
GLOBAL CONST $OFN_OVERWRITEPROMPT = 2
GLOBAL CONST $OFN_PATHMUSTEXIST = 2048
GLOBAL CONST $OFN_READONLY = 1
GLOBAL CONST $OFN_SHAREAWARE = 16384
GLOBAL CONST $OFN_SHOWHELP = 16
GLOBAL CONST $OFN_EX_NOPLACESBAR = 1
GLOBAL CONST $TMPF_FIXED_PITCH = 1
GLOBAL CONST $TMPF_VECTOR = 2
GLOBAL CONST $TMPF_TRUETYPE = 4
GLOBAL CONST $TMPF_DEVICE = 8
GLOBAL CONST $DUPLICATE_CLOSE_SOURCE = 1
GLOBAL CONST $DUPLICATE_SAME_ACCESS = 2
GLOBAL CONST $TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & $TAGPOINT
GLOBAL CONST $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]"
GLOBAL CONST $TAGFLASHWINFO = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut"
GLOBAL CONST $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
GLOBAL CONST $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"
FUNC _WINAPI_ATTACHCONSOLE ($IPROCESSID = - 1 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "AttachConsole" , "dword" , $IPROCESSID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ATTACHTHREADINPUT ($IATTACH , $IATTACHTO , $FATTACH )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "AttachThreadInput" , "dword" , $IATTACH , "dword" , $IATTACHTO , "bool" , $FATTACH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_BEEP ($IFREQ = 500 , $IDURATION = 1000 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "Beep" , "dword" , $IFREQ , "dword" , $IDURATION )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_BITBLT ($HDESTDC , $IXDEST , $IYDEST , $IWIDTH , $IHEIGHT , $HSRCDC , $IXSRC , $IYSRC , $IROP )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "BitBlt" , "handle" , $HDESTDC , "int" , $IXDEST , "int" , $IYDEST , "int" , $IWIDTH , "int" , $IHEIGHT , "handle" , $HSRCDC , "int" , $IXSRC , "int" , $IYSRC , "dword" , $IROP )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CALLNEXTHOOKEX ($HHK , $ICODE , $WPARAM , $LPARAM )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "lresult" , "CallNextHookEx" , "handle" , $HHK , "int" , $ICODE , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , - 1 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CALLWINDOWPROC ($LPPREVWNDFUNC , $HWND , $MSG , $WPARAM , $LPARAM )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "lresult" , "CallWindowProc" , "ptr" , $LPPREVWNDFUNC , "hwnd" , $HWND , "uint" , $MSG , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , - 1 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CLIENTTOSCREEN ($HWND , BYREF $TPOINT )
DLLCALL ("user32.dll" , "bool" , "ClientToScreen" , "hwnd" , $HWND , "struct*" , $TPOINT )
RETURN SETERROR (@ERROR , @EXTENDED , $TPOINT )
ENDFUNC
FUNC _WINAPI_CLOSEHANDLE ($HOBJECT )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "CloseHandle" , "handle" , $HOBJECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_COMBINERGN ($HRGNDEST , $HRGNSRC1 , $HRGNSRC2 , $ICOMBINEMODE )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "CombineRgn" , "handle" , $HRGNDEST , "handle" , $HRGNSRC1 , "handle" , $HRGNSRC2 , "int" , $ICOMBINEMODE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_COMMDLGEXTENDEDERROR ()
LOCAL CONST $CDERR_DIALOGFAILURE = 65535
LOCAL CONST $CDERR_FINDRESFAILURE = 6
LOCAL CONST $CDERR_INITIALIZATION = 2
LOCAL CONST $CDERR_LOADRESFAILURE = 7
LOCAL CONST $CDERR_LOADSTRFAILURE = 5
LOCAL CONST $CDERR_LOCKRESFAILURE = 8
LOCAL CONST $CDERR_MEMALLOCFAILURE = 9
LOCAL CONST $CDERR_MEMLOCKFAILURE = 10
LOCAL CONST $CDERR_NOHINSTANCE = 4
LOCAL CONST $CDERR_NOHOOK = 11
LOCAL CONST $CDERR_NOTEMPLATE = 3
LOCAL CONST $CDERR_REGISTERMSGFAIL = 12
LOCAL CONST $CDERR_STRUCTSIZE = 1
LOCAL CONST $FNERR_BUFFERTOOSMALL = 12291
LOCAL CONST $FNERR_INVALIDFILENAME = 12290
LOCAL CONST $FNERR_SUBCLASSFAILURE = 12289
LOCAL $ARESULT = DLLCALL ("comdlg32.dll" , "dword" , "CommDlgExtendedError" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
SWITCH $ARESULT [0 ]
CASE $CDERR_DIALOGFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The dialog box could not be created." & @LF & "The common dialog box function's call to the DialogBox function failed." & @LF & "For example, this error occurs if the common dialog box call specifies an invalid window handle." )
CASE $CDERR_FINDRESFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to find a specified resource." )
CASE $CDERR_INITIALIZATION
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed during initialization." & @LF & "This error often occurs when sufficient memory is not available." )
CASE $CDERR_LOADRESFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to load a specified resource." )
CASE $CDERR_LOADSTRFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to load a specified string." )
CASE $CDERR_LOCKRESFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to lock a specified resource." )
CASE $CDERR_MEMALLOCFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function was unable to allocate memory for internal structures." )
CASE $CDERR_MEMLOCKFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function was unable to lock the memory associated with a handle." )
CASE $CDERR_NOHINSTANCE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding instance handle." )
CASE $CDERR_NOHOOK
RETURN SETERROR ($ARESULT [0 ] , 0 , "The ENABLEHOOK flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a pointer to a corresponding hook procedure." )
CASE $CDERR_NOTEMPLATE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding template." )
CASE $CDERR_REGISTERMSGFAIL
RETURN SETERROR ($ARESULT [0 ] , 0 , "The RegisterWindowMessage function returned an error code when it was called by the common dialog box function." )
CASE $CDERR_STRUCTSIZE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The lStructSize member of the initialization structure for the corresponding common dialog box is invalid" )
CASE $FNERR_BUFFERTOOSMALL
RETURN SETERROR ($ARESULT [0 ] , 0 , "The buffer pointed to by the lpstrFile member of the OPENFILENAME structure is too small for the file name specified by the user." & @LF & "The first two bytes of the lpstrFile buffer contain an integer value specifying the size, in TCHARs, required to receive the full name." )
CASE $FNERR_INVALIDFILENAME
RETURN SETERROR ($ARESULT [0 ] , 0 , "A file name is invalid." )
CASE $FNERR_SUBCLASSFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "An attempt to subclass a list box failed because sufficient memory was not available." )
ENDSWITCH
RETURN HEX ($ARESULT [0 ] )
ENDFUNC
FUNC _WINAPI_COPYICON ($HICON )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "CopyIcon" , "handle" , $HICON )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEBITMAP ($IWIDTH , $IHEIGHT , $IPLANES = 1 , $IBITSPERPEL = 1 , $PBITS = 0 )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateBitmap" , "int" , $IWIDTH , "int" , $IHEIGHT , "uint" , $IPLANES , "uint" , $IBITSPERPEL , "ptr" , $PBITS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATECOMPATIBLEBITMAP ($HDC , $IWIDTH , $IHEIGHT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateCompatibleBitmap" , "handle" , $HDC , "int" , $IWIDTH , "int" , $IHEIGHT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATECOMPATIBLEDC ($HDC )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateCompatibleDC" , "handle" , $HDC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEEVENT ($PATTRIBUTES = 0 , $FMANUALRESET = TRUE , $FINITIALSTATE = TRUE , $SNAME = "" )
LOCAL $SNAMETYPE = "wstr"
IF $SNAME = "" THEN
$SNAME = 0
$SNAMETYPE = "ptr"
ENDIF
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "CreateEventW" , "ptr" , $PATTRIBUTES , "bool" , $FMANUALRESET , "bool" , $FINITIALSTATE , $SNAMETYPE , $SNAME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEFILE ($SFILENAME , $ICREATION , $IACCESS = 4 , $ISHARE = 0 , $IATTRIBUTES = 0 , $PSECURITY = 0 )
LOCAL $IDA = 0 , $ISM = 0 , $ICD = 0 , $IFA = 0
IF BITAND ($IACCESS , 1 ) <> 0 THEN $IDA = BITOR ($IDA , $GENERIC_EXECUTE )
IF BITAND ($IACCESS , 2 ) <> 0 THEN $IDA = BITOR ($IDA , $GENERIC_READ )
IF BITAND ($IACCESS , 4 ) <> 0 THEN $IDA = BITOR ($IDA , $GENERIC_WRITE )
IF BITAND ($ISHARE , 1 ) <> 0 THEN $ISM = BITOR ($ISM , $FILE_SHARE_DELETE )
IF BITAND ($ISHARE , 2 ) <> 0 THEN $ISM = BITOR ($ISM , $FILE_SHARE_READ )
IF BITAND ($ISHARE , 4 ) <> 0 THEN $ISM = BITOR ($ISM , $FILE_SHARE_WRITE )
SWITCH $ICREATION
CASE 0
$ICD = $CREATE_NEW
CASE 1
$ICD = $CREATE_ALWAYS
CASE 2
$ICD = $OPEN_EXISTING
CASE 3
$ICD = $OPEN_ALWAYS
CASE 4
$ICD = $TRUNCATE_EXISTING
ENDSWITCH
IF BITAND ($IATTRIBUTES , 1 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_ARCHIVE )
IF BITAND ($IATTRIBUTES , 2 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_HIDDEN )
IF BITAND ($IATTRIBUTES , 4 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_READONLY )
IF BITAND ($IATTRIBUTES , 8 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_SYSTEM )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "CreateFileW" , "wstr" , $SFILENAME , "dword" , $IDA , "dword" , $ISM , "ptr" , $PSECURITY , "dword" , $ICD , "dword" , $IFA , "ptr" , 0 )
IF @ERROR OR $ARESULT [0 ] = PTR (- 1 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEFONT ($NHEIGHT , $NWIDTH , $NESCAPE = 0 , $NORIENTN = 0 , $FNWEIGHT = $__WINAPICONSTANT_FW_NORMAL , $BITALIC = FALSE , $BUNDERLINE = FALSE , $BSTRIKEOUT = FALSE , $NCHARSET = $__WINAPICONSTANT_DEFAULT_CHARSET , $NOUTPUTPREC = $__WINAPICONSTANT_OUT_DEFAULT_PRECIS , $NCLIPPREC = $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS , $NQUALITY = $__WINAPICONSTANT_DEFAULT_QUALITY , $NPITCH = 0 , $SZFACE = "Arial" )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateFontW" , "int" , $NHEIGHT , "int" , $NWIDTH , "int" , $NESCAPE , "int" , $NORIENTN , "int" , $FNWEIGHT , "dword" , $BITALIC , "dword" , $BUNDERLINE , "dword" , $BSTRIKEOUT , "dword" , $NCHARSET , "dword" , $NOUTPUTPREC , "dword" , $NCLIPPREC , "dword" , $NQUALITY , "dword" , $NPITCH , "wstr" , $SZFACE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEFONTINDIRECT ($TLOGFONT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateFontIndirectW" , "struct*" , $TLOGFONT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEPEN ($IPENSTYLE , $IWIDTH , $NCOLOR )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreatePen" , "int" , $IPENSTYLE , "int" , $IWIDTH , "dword" , $NCOLOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEPROCESS ($SAPPNAME , $SCOMMAND , $PSECURITY , $PTHREAD , $FINHERIT , $IFLAGS , $PENVIRON , $SDIR , $PSTARTUPINFO , $PPROCESS )
LOCAL $TCOMMAND = 0
LOCAL $SAPPNAMETYPE = "wstr" , $SDIRTYPE = "wstr"
IF $SAPPNAME = "" THEN
$SAPPNAMETYPE = "ptr"
$SAPPNAME = 0
ENDIF
IF $SCOMMAND <> "" THEN
$TCOMMAND = DLLSTRUCTCREATE ("wchar Text[" & 260 + 1 & "]" )
DLLSTRUCTSETDATA ($TCOMMAND , "Text" , $SCOMMAND )
ENDIF
IF $SDIR = "" THEN
$SDIRTYPE = "ptr"
$SDIR = 0
ENDIF
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "CreateProcessW" , $SAPPNAMETYPE , $SAPPNAME , "struct*" , $TCOMMAND , "ptr" , $PSECURITY , "ptr" , $PTHREAD , "bool" , $FINHERIT , "dword" , $IFLAGS , "ptr" , $PENVIRON , $SDIRTYPE , $SDIR , "ptr" , $PSTARTUPINFO , "ptr" , $PPROCESS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATERECTRGN ($ILEFTRECT , $ITOPRECT , $IRIGHTRECT , $IBOTTOMRECT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateRectRgn" , "int" , $ILEFTRECT , "int" , $ITOPRECT , "int" , $IRIGHTRECT , "int" , $IBOTTOMRECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEROUNDRECTRGN ($ILEFTRECT , $ITOPRECT , $IRIGHTRECT , $IBOTTOMRECT , $IWIDTHELLIPSE , $IHEIGHTELLIPSE )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateRoundRectRgn" , "int" , $ILEFTRECT , "int" , $ITOPRECT , "int" , $IRIGHTRECT , "int" , $IBOTTOMRECT , "int" , $IWIDTHELLIPSE , "int" , $IHEIGHTELLIPSE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATESOLIDBITMAP ($HWND , $ICOLOR , $IWIDTH , $IHEIGHT , $BRGB = 1 )
LOCAL $HDC = _WINAPI_GETDC ($HWND )
LOCAL $HDESTDC = _WINAPI_CREATECOMPATIBLEDC ($HDC )
LOCAL $HBITMAP = _WINAPI_CREATECOMPATIBLEBITMAP ($HDC , $IWIDTH , $IHEIGHT )
LOCAL $HOLD = _WINAPI_SELECTOBJECT ($HDESTDC , $HBITMAP )
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
DLLSTRUCTSETDATA ($TRECT , 1 , 0 )
DLLSTRUCTSETDATA ($TRECT , 2 , 0 )
DLLSTRUCTSETDATA ($TRECT , 3 , $IWIDTH )
DLLSTRUCTSETDATA ($TRECT , 4 , $IHEIGHT )
IF $BRGB THEN
$ICOLOR = BITOR (BITAND ($ICOLOR , 65280 ) , BITSHIFT (BITAND ($ICOLOR , 255 ) , - 16 ) , BITSHIFT (BITAND ($ICOLOR , 16711680 ) , 16 ) )
ENDIF
LOCAL $HBRUSH = _WINAPI_CREATESOLIDBRUSH ($ICOLOR )
_WINAPI_FILLRECT ($HDESTDC , $TRECT , $HBRUSH )
IF @ERROR THEN
_WINAPI_DELETEOBJECT ($HBITMAP )
$HBITMAP = 0
ENDIF
_WINAPI_DELETEOBJECT ($HBRUSH )
_WINAPI_RELEASEDC ($HWND , $HDC )
_WINAPI_SELECTOBJECT ($HDESTDC , $HOLD )
_WINAPI_DELETEDC ($HDESTDC )
IF NOT $HBITMAP THEN RETURN SETERROR (1 , 0 , 0 )
RETURN $HBITMAP
ENDFUNC
FUNC _WINAPI_CREATESOLIDBRUSH ($NCOLOR )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateSolidBrush" , "dword" , $NCOLOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEWINDOWEX ($IEXSTYLE , $SCLASS , $SNAME , $ISTYLE , $IX , $IY , $IWIDTH , $IHEIGHT , $HPARENT , $HMENU = 0 , $HINSTANCE = 0 , $PPARAM = 0 )
IF $HINSTANCE = 0 THEN $HINSTANCE = _WINAPI_GETMODULEHANDLE ("" )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "CreateWindowExW" , "dword" , $IEXSTYLE , "wstr" , $SCLASS , "wstr" , $SNAME , "dword" , $ISTYLE , "int" , $IX , "int" , $IY , "int" , $IWIDTH , "int" , $IHEIGHT , "hwnd" , $HPARENT , "handle" , $HMENU , "handle" , $HINSTANCE , "ptr" , $PPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DEFWINDOWPROC ($HWND , $IMSG , $IWPARAM , $ILPARAM )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "lresult" , "DefWindowProc" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $IWPARAM , "lparam" , $ILPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DELETEDC ($HDC )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "DeleteDC" , "handle" , $HDC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DELETEOBJECT ($HOBJECT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "DeleteObject" , "handle" , $HOBJECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DESTROYICON ($HICON )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DestroyIcon" , "handle" , $HICON )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DESTROYWINDOW ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DestroyWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWEDGE ($HDC , $PTRRECT , $NEDGETYPE , $GRFFLAGS )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawEdge" , "handle" , $HDC , "ptr" , $PTRRECT , "uint" , $NEDGETYPE , "uint" , $GRFFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWFRAMECONTROL ($HDC , $PTRRECT , $NTYPE , $NSTATE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawFrameControl" , "handle" , $HDC , "ptr" , $PTRRECT , "uint" , $NTYPE , "uint" , $NSTATE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWICON ($HDC , $IX , $IY , $HICON )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawIcon" , "handle" , $HDC , "int" , $IX , "int" , $IY , "handle" , $HICON )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWICONEX ($HDC , $IX , $IY , $HICON , $IWIDTH = 0 , $IHEIGHT = 0 , $ISTEP = 0 , $HBRUSH = 0 , $IFLAGS = 3 )
LOCAL $IOPTIONS
SWITCH $IFLAGS
CASE 1
$IOPTIONS = $__WINAPICONSTANT_DI_MASK
CASE 2
$IOPTIONS = $__WINAPICONSTANT_DI_IMAGE
CASE 3
$IOPTIONS = $__WINAPICONSTANT_DI_NORMAL
CASE 4
$IOPTIONS = $__WINAPICONSTANT_DI_COMPAT
CASE 5
$IOPTIONS = $__WINAPICONSTANT_DI_DEFAULTSIZE
CASE ELSE
$IOPTIONS = $__WINAPICONSTANT_DI_NOMIRROR
ENDSWITCH
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawIconEx" , "handle" , $HDC , "int" , $IX , "int" , $IY , "handle" , $HICON , "int" , $IWIDTH , "int" , $IHEIGHT , "uint" , $ISTEP , "handle" , $HBRUSH , "uint" , $IOPTIONS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWLINE ($HDC , $IX1 , $IY1 , $IX2 , $IY2 )
_WINAPI_MOVETO ($HDC , $IX1 , $IY1 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
_WINAPI_LINETO ($HDC , $IX2 , $IY2 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN TRUE
ENDFUNC
FUNC _WINAPI_DRAWTEXT ($HDC , $STEXT , BYREF $TRECT , $IFLAGS )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "DrawTextW" , "handle" , $HDC , "wstr" , $STEXT , "int" , - 1 , "struct*" , $TRECT , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DUPLICATEHANDLE ($HSOURCEPROCESSHANDLE , $HSOURCEHANDLE , $HTARGETPROCESSHANDLE , $IDESIREDACCESS , $FINHERITHANDLE , $IOPTIONS )
LOCAL $ACALL = DLLCALL ("kernel32.dll" , "bool" , "DuplicateHandle" , "handle" , $HSOURCEPROCESSHANDLE , "handle" , $HSOURCEHANDLE , "handle" , $HTARGETPROCESSHANDLE , "handle*" , 0 , "dword" , $IDESIREDACCESS , "bool" , $FINHERITHANDLE , "dword" , $IOPTIONS )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (1 , @EXTENDED , 0 )
RETURN $ACALL [4 ]
ENDFUNC
FUNC _WINAPI_ENABLEWINDOW ($HWND , $FENABLE = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "EnableWindow" , "hwnd" , $HWND , "bool" , $FENABLE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ENUMDISPLAYDEVICES ($SDEVICE , $IDEVNUM )
LOCAL $TNAME = 0 , $IFLAGS = 0 , $ADEVICE [5 ]
IF $SDEVICE <> "" THEN
$TNAME = DLLSTRUCTCREATE ("wchar Text[" & STRINGLEN ($SDEVICE ) + 1 & "]" )
DLLSTRUCTSETDATA ($TNAME , "Text" , $SDEVICE )
ENDIF
LOCAL $TDEVICE = DLLSTRUCTCREATE ($TAGDISPLAY_DEVICE )
LOCAL $IDEVICE = DLLSTRUCTGETSIZE ($TDEVICE )
DLLSTRUCTSETDATA ($TDEVICE , "Size" , $IDEVICE )
DLLCALL ("user32.dll" , "bool" , "EnumDisplayDevicesW" , "struct*" , $TNAME , "dword" , $IDEVNUM , "struct*" , $TDEVICE , "dword" , 1 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $IN = DLLSTRUCTGETDATA ($TDEVICE , "Flags" )
IF BITAND ($IN , $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 1 )
IF BITAND ($IN , $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 2 )
IF BITAND ($IN , $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 4 )
IF BITAND ($IN , $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 8 )
IF BITAND ($IN , $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 16 )
IF BITAND ($IN , $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 32 )
$ADEVICE [0 ] = TRUE
$ADEVICE [1 ] = DLLSTRUCTGETDATA ($TDEVICE , "Name" )
$ADEVICE [2 ] = DLLSTRUCTGETDATA ($TDEVICE , "String" )
$ADEVICE [3 ] = $IFLAGS
$ADEVICE [4 ] = DLLSTRUCTGETDATA ($TDEVICE , "ID" )
RETURN $ADEVICE
ENDFUNC
FUNC _WINAPI_ENUMWINDOWS ($FVISIBLE = TRUE , $HWND = DEFAULT )
__WINAPI_ENUMWINDOWSINIT ()
IF $HWND = DEFAULT THEN $HWND = _WINAPI_GETDESKTOPWINDOW ()
__WINAPI_ENUMWINDOWSCHILD ($HWND , $FVISIBLE )
RETURN $__GAWINLIST_WINAPI
ENDFUNC
FUNC __WINAPI_ENUMWINDOWSADD ($HWND , $SCLASS = "" )
IF $SCLASS = "" THEN $SCLASS = _WINAPI_GETCLASSNAME ($HWND )
$__GAWINLIST_WINAPI [0 ] [0 ] += 1
LOCAL $ICOUNT = $__GAWINLIST_WINAPI [0 ] [0 ]
IF $ICOUNT >= $__GAWINLIST_WINAPI [0 ] [1 ] THEN
REDIM $__GAWINLIST_WINAPI [$ICOUNT + 64 ] [2 ]
$__GAWINLIST_WINAPI [0 ] [1 ] += 64
ENDIF
$__GAWINLIST_WINAPI [$ICOUNT ] [0 ] = $HWND
$__GAWINLIST_WINAPI [$ICOUNT ] [1 ] = $SCLASS
ENDFUNC
FUNC __WINAPI_ENUMWINDOWSCHILD ($HWND , $FVISIBLE = TRUE )
$HWND = _WINAPI_GETWINDOW ($HWND , $__WINAPICONSTANT_GW_CHILD )
WHILE $HWND <> 0
IF (NOT $FVISIBLE ) OR _WINAPI_ISWINDOWVISIBLE ($HWND ) THEN
__WINAPI_ENUMWINDOWSCHILD ($HWND , $FVISIBLE )
__WINAPI_ENUMWINDOWSADD ($HWND )
ENDIF
$HWND = _WINAPI_GETWINDOW ($HWND , $__WINAPICONSTANT_GW_HWNDNEXT )
WEND
ENDFUNC
FUNC __WINAPI_ENUMWINDOWSINIT ()
REDIM $__GAWINLIST_WINAPI [64 ] [2 ]
$__GAWINLIST_WINAPI [0 ] [0 ] = 0
$__GAWINLIST_WINAPI [0 ] [1 ] = 64
ENDFUNC
FUNC _WINAPI_ENUMWINDOWSPOPUP ()
__WINAPI_ENUMWINDOWSINIT ()
LOCAL $HWND = _WINAPI_GETWINDOW (_WINAPI_GETDESKTOPWINDOW () , $__WINAPICONSTANT_GW_CHILD )
LOCAL $SCLASS
WHILE $HWND <> 0
IF _WINAPI_ISWINDOWVISIBLE ($HWND ) THEN
$SCLASS = _WINAPI_GETCLASSNAME ($HWND )
IF $SCLASS = "#32768" THEN
__WINAPI_ENUMWINDOWSADD ($HWND )
ELSEIF $SCLASS = "ToolbarWindow32" THEN
__WINAPI_ENUMWINDOWSADD ($HWND )
ELSEIF $SCLASS = "ToolTips_Class32" THEN
__WINAPI_ENUMWINDOWSADD ($HWND )
ELSEIF $SCLASS = "BaseBar" THEN
__WINAPI_ENUMWINDOWSCHILD ($HWND )
ENDIF
ENDIF
$HWND = _WINAPI_GETWINDOW ($HWND , $__WINAPICONSTANT_GW_HWNDNEXT )
WEND
RETURN $__GAWINLIST_WINAPI
ENDFUNC
FUNC _WINAPI_ENUMWINDOWSTOP ()
__WINAPI_ENUMWINDOWSINIT ()
LOCAL $HWND = _WINAPI_GETWINDOW (_WINAPI_GETDESKTOPWINDOW () , $__WINAPICONSTANT_GW_CHILD )
WHILE $HWND <> 0
IF _WINAPI_ISWINDOWVISIBLE ($HWND ) THEN __WINAPI_ENUMWINDOWSADD ($HWND )
$HWND = _WINAPI_GETWINDOW ($HWND , $__WINAPICONSTANT_GW_HWNDNEXT )
WEND
RETURN $__GAWINLIST_WINAPI
ENDFUNC
FUNC _WINAPI_EXPANDENVIRONMENTSTRINGS ($SSTRING )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "ExpandEnvironmentStringsW" , "wstr" , $SSTRING , "wstr" , "" , "dword" , 4096 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARESULT [2 ]
ENDFUNC
FUNC _WINAPI_EXTRACTICONEX ($SFILE , $IINDEX , $PLARGE , $PSMALL , $IICONS )
LOCAL $ARESULT = DLLCALL ("shell32.dll" , "uint" , "ExtractIconExW" , "wstr" , $SFILE , "int" , $IINDEX , "struct*" , $PLARGE , "struct*" , $PSMALL , "uint" , $IICONS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FATALAPPEXIT ($SMESSAGE )
DLLCALL ("kernel32.dll" , "none" , "FatalAppExitW" , "uint" , 0 , "wstr" , $SMESSAGE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED )
ENDFUNC
FUNC _WINAPI_FILLRECT ($HDC , $PTRRECT , $HBRUSH )
LOCAL $ARESULT
IF ISPTR ($HBRUSH ) THEN
$ARESULT = DLLCALL ("user32.dll" , "int" , "FillRect" , "handle" , $HDC , "struct*" , $PTRRECT , "handle" , $HBRUSH )
ELSE
$ARESULT = DLLCALL ("user32.dll" , "int" , "FillRect" , "handle" , $HDC , "struct*" , $PTRRECT , "dword_ptr" , $HBRUSH )
ENDIF
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FINDEXECUTABLE ($SFILENAME , $SDIRECTORY = "" )
LOCAL $ARESULT = DLLCALL ("shell32.dll" , "INT" , "FindExecutableW" , "wstr" , $SFILENAME , "wstr" , $SDIRECTORY , "wstr" , "" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [3 ] )
ENDFUNC
FUNC _WINAPI_FINDWINDOW ($SCLASSNAME , $SWINDOWNAME )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "FindWindowW" , "wstr" , $SCLASSNAME , "wstr" , $SWINDOWNAME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FLASHWINDOW ($HWND , $FINVERT = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "FlashWindow" , "hwnd" , $HWND , "bool" , $FINVERT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FLASHWINDOWEX ($HWND , $IFLAGS = 3 , $ICOUNT = 3 , $ITIMEOUT = 0 )
LOCAL $TFLASH = DLLSTRUCTCREATE ($TAGFLASHWINFO )
LOCAL $IFLASH = DLLSTRUCTGETSIZE ($TFLASH )
LOCAL $IMODE = 0
IF BITAND ($IFLAGS , 1 ) <> 0 THEN $IMODE = BITOR ($IMODE , $__WINAPICONSTANT_FLASHW_CAPTION )
IF BITAND ($IFLAGS , 2 ) <> 0 THEN $IMODE = BITOR ($IMODE , $__WINAPICONSTANT_FLASHW_TRAY )
IF BITAND ($IFLAGS , 4 ) <> 0 THEN $IMODE = BITOR ($IMODE , $__WINAPICONSTANT_FLASHW_TIMER )
IF BITAND ($IFLAGS , 8 ) <> 0 THEN $IMODE = BITOR ($IMODE , $__WINAPICONSTANT_FLASHW_TIMERNOFG )
DLLSTRUCTSETDATA ($TFLASH , "Size" , $IFLASH )
DLLSTRUCTSETDATA ($TFLASH , "hWnd" , $HWND )
DLLSTRUCTSETDATA ($TFLASH , "Flags" , $IMODE )
DLLSTRUCTSETDATA ($TFLASH , "Count" , $ICOUNT )
DLLSTRUCTSETDATA ($TFLASH , "Timeout" , $ITIMEOUT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "FlashWindowEx" , "struct*" , $TFLASH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FLOATTOINT ($NFLOAT )
LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" )
LOCAL $TINT = DLLSTRUCTCREATE ("int" , DLLSTRUCTGETPTR ($TFLOAT ) )
DLLSTRUCTSETDATA ($TFLOAT , 1 , $NFLOAT )
RETURN DLLSTRUCTGETDATA ($TINT , 1 )
ENDFUNC
FUNC _WINAPI_FLUSHFILEBUFFERS ($HFILE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FlushFileBuffers" , "handle" , $HFILE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FORMATMESSAGE ($IFLAGS , $PSOURCE , $IMESSAGEID , $ILANGUAGEID , BYREF $PBUFFER , $ISIZE , $VARGUMENTS )
LOCAL $SBUFFERTYPE = "struct*"
IF ISSTRING ($PBUFFER ) THEN $SBUFFERTYPE = "wstr"
LOCAL $ARESULT = DLLCALL ("Kernel32.dll" , "dword" , "FormatMessageW" , "dword" , $IFLAGS , "ptr" , $PSOURCE , "dword" , $IMESSAGEID , "dword" , $ILANGUAGEID , $SBUFFERTYPE , $PBUFFER , "dword" , $ISIZE , "ptr" , $VARGUMENTS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $SBUFFERTYPE = "wstr" THEN $PBUFFER = $ARESULT [5 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FRAMERECT ($HDC , $PTRRECT , $HBRUSH )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "FrameRect" , "handle" , $HDC , "ptr" , $PTRRECT , "handle" , $HBRUSH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FREELIBRARY ($HMODULE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FreeLibrary" , "handle" , $HMODULE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETANCESTOR ($HWND , $IFLAGS = 1 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetAncestor" , "hwnd" , $HWND , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETASYNCKEYSTATE ($IKEY )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "short" , "GetAsyncKeyState" , "int" , $IKEY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETBKMODE ($HDC )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetBkMode" , "handle" , $HDC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETCLASSNAME ($HWND )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetClassNameW" , "hwnd" , $HWND , "wstr" , "" , "int" , 4096 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [2 ] )
ENDFUNC
FUNC _WINAPI_GETCLIENTHEIGHT ($HWND )
LOCAL $TRECT = _WINAPI_GETCLIENTRECT ($HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TRECT , "Bottom" ) - DLLSTRUCTGETDATA ($TRECT , "Top" )
ENDFUNC
FUNC _WINAPI_GETCLIENTWIDTH ($HWND )
LOCAL $TRECT = _WINAPI_GETCLIENTRECT ($HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TRECT , "Right" ) - DLLSTRUCTGETDATA ($TRECT , "Left" )
ENDFUNC
FUNC _WINAPI_GETCLIENTRECT ($HWND )
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
DLLCALL ("user32.dll" , "bool" , "GetClientRect" , "hwnd" , $HWND , "struct*" , $TRECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TRECT
ENDFUNC
FUNC _WINAPI_GETCURRENTPROCESS ()
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetCurrentProcess" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETCURRENTPROCESSID ()
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "GetCurrentProcessId" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETCURRENTTHREAD ()
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetCurrentThread" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETCURRENTTHREADID ()
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "GetCurrentThreadId" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETCURSORINFO ()
LOCAL $TCURSOR = DLLSTRUCTCREATE ($TAGCURSORINFO )
LOCAL $ICURSOR = DLLSTRUCTGETSIZE ($TCURSOR )
DLLSTRUCTSETDATA ($TCURSOR , "Size" , $ICURSOR )
DLLCALL ("user32.dll" , "bool" , "GetCursorInfo" , "struct*" , $TCURSOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $ACURSOR [5 ]
$ACURSOR [0 ] = TRUE
$ACURSOR [1 ] = DLLSTRUCTGETDATA ($TCURSOR , "Flags" ) <> 0
$ACURSOR [2 ] = DLLSTRUCTGETDATA ($TCURSOR , "hCursor" )
$ACURSOR [3 ] = DLLSTRUCTGETDATA ($TCURSOR , "X" )
$ACURSOR [4 ] = DLLSTRUCTGETDATA ($TCURSOR , "Y" )
RETURN $ACURSOR
ENDFUNC
FUNC _WINAPI_GETDC ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "GetDC" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETDESKTOPWINDOW ()
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetDesktopWindow" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETDEVICECAPS ($HDC , $IINDEX )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetDeviceCaps" , "handle" , $HDC , "int" , $IINDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETDIBITS ($HDC , $HBMP , $ISTARTSCAN , $ISCANLINES , $PBITS , $PBI , $IUSAGE )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetDIBits" , "handle" , $HDC , "handle" , $HBMP , "uint" , $ISTARTSCAN , "uint" , $ISCANLINES , "ptr" , $PBITS , "ptr" , $PBI , "uint" , $IUSAGE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETDLGCTRLID ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetDlgCtrlID" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETDLGITEM ($HWND , $IITEMID )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetDlgItem" , "hwnd" , $HWND , "int" , $IITEMID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETFOCUS ()
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetFocus" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETFOREGROUNDWINDOW ()
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetForegroundWindow" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETGUIRESOURCES ($IFLAG = 0 , $HPROCESS = - 1 )
IF $HPROCESS = - 1 THEN $HPROCESS = _WINAPI_GETCURRENTPROCESS ()
LOCAL $ARESULT = DLLCALL ("user32.dll" , "dword" , "GetGuiResources" , "handle" , $HPROCESS , "dword" , $IFLAG )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETICONINFO ($HICON )
LOCAL $TINFO = DLLSTRUCTCREATE ($TAGICONINFO )
DLLCALL ("user32.dll" , "bool" , "GetIconInfo" , "handle" , $HICON , "struct*" , $TINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $AICON [6 ]
$AICON [0 ] = TRUE
$AICON [1 ] = DLLSTRUCTGETDATA ($TINFO , "Icon" ) <> 0
$AICON [2 ] = DLLSTRUCTGETDATA ($TINFO , "XHotSpot" )
$AICON [3 ] = DLLSTRUCTGETDATA ($TINFO , "YHotSpot" )
$AICON [4 ] = DLLSTRUCTGETDATA ($TINFO , "hMask" )
$AICON [5 ] = DLLSTRUCTGETDATA ($TINFO , "hColor" )
RETURN $AICON
ENDFUNC
FUNC _WINAPI_GETFILESIZEEX ($HFILE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GetFileSizeEx" , "handle" , $HFILE , "int64*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [2 ]
ENDFUNC
FUNC _WINAPI_GETLASTERRORMESSAGE ()
LOCAL $TBUFFERPTR = DLLSTRUCTCREATE ("ptr" )
LOCAL $NCOUNT = _WINAPI_FORMATMESSAGE (BITOR ($__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER , $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM ) , 0 , _WINAPI_GETLASTERROR () , 0 , $TBUFFERPTR , 0 , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , 0 , "" )
LOCAL $STEXT = ""
LOCAL $PBUFFER = DLLSTRUCTGETDATA ($TBUFFERPTR , 1 )
IF $PBUFFER THEN
IF $NCOUNT > 0 THEN
LOCAL $TBUFFER = DLLSTRUCTCREATE ("wchar[" & ($NCOUNT + 1 ) & "]" , $PBUFFER )
$STEXT = DLLSTRUCTGETDATA ($TBUFFER , 1 )
ENDIF
_WINAPI_LOCALFREE ($PBUFFER )
ENDIF
RETURN $STEXT
ENDFUNC
FUNC _WINAPI_GETLAYEREDWINDOWATTRIBUTES ($HWND , BYREF $I_TRANSCOLOR , BYREF $TRANSPARENCY , $ASCOLORREF = FALSE )
$I_TRANSCOLOR = - 1
$TRANSPARENCY = - 1
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "GetLayeredWindowAttributes" , "hwnd" , $HWND , "dword*" , $I_TRANSCOLOR , "byte*" , $TRANSPARENCY , "dword*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF NOT $ASCOLORREF THEN
$ARESULT [2 ] = INT (BINARYMID ($ARESULT [2 ] , 3 , 1 ) & BINARYMID ($ARESULT [2 ] , 2 , 1 ) & BINARYMID ($ARESULT [2 ] , 1 , 1 ) )
ENDIF
$I_TRANSCOLOR = $ARESULT [2 ]
$TRANSPARENCY = $ARESULT [3 ]
RETURN $ARESULT [4 ]
ENDFUNC
FUNC _WINAPI_GETMODULEHANDLE ($SMODULENAME )
LOCAL $SMODULENAMETYPE = "wstr"
IF $SMODULENAME = "" THEN
$SMODULENAME = 0
$SMODULENAMETYPE = "ptr"
ENDIF
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetModuleHandleW" , $SMODULENAMETYPE , $SMODULENAME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETMOUSEPOS ($FTOCLIENT = FALSE , $HWND = 0 )
LOCAL $IMODE = OPT ("MouseCoordMode" , 1 )
LOCAL $APOS = MOUSEGETPOS ()
OPT ("MouseCoordMode" , $IMODE )
LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT )
DLLSTRUCTSETDATA ($TPOINT , "X" , $APOS [0 ] )
DLLSTRUCTSETDATA ($TPOINT , "Y" , $APOS [1 ] )
IF $FTOCLIENT THEN
_WINAPI_SCREENTOCLIENT ($HWND , $TPOINT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
ENDIF
RETURN $TPOINT
ENDFUNC
FUNC _WINAPI_GETMOUSEPOSX ($FTOCLIENT = FALSE , $HWND = 0 )
LOCAL $TPOINT = _WINAPI_GETMOUSEPOS ($FTOCLIENT , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TPOINT , "X" )
ENDFUNC
FUNC _WINAPI_GETMOUSEPOSY ($FTOCLIENT = FALSE , $HWND = 0 )
LOCAL $TPOINT = _WINAPI_GETMOUSEPOS ($FTOCLIENT , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TPOINT , "Y" )
ENDFUNC
FUNC _WINAPI_GETOBJECT ($HOBJECT , $ISIZE , $POBJECT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetObjectW" , "handle" , $HOBJECT , "int" , $ISIZE , "ptr" , $POBJECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETOPENFILENAME ($STITLE = "" , $SFILTER = "All files (*.*)" , $SINITALDIR = "." , $SDEFAULTFILE = "" , $SDEFAULTEXT = "" , $IFILTERINDEX = 1 , $IFLAGS = 0 , $IFLAGSEX = 0 , $HWNDOWNER = 0 )
LOCAL $IPATHLEN = 4096
LOCAL $INULLS = 0
LOCAL $TOFN = DLLSTRUCTCREATE ($TAGOPENFILENAME )
LOCAL $AFILES [1 ] = [0 ]
LOCAL $IFLAG = $IFLAGS
LOCAL $ASFLINES = STRINGSPLIT ($SFILTER , "|" )
LOCAL $ASFILTER [$ASFLINES [0 ] * 2 + 1 ]
LOCAL $ISTART , $IFINAL , $STFILTER
$ASFILTER [0 ] = $ASFLINES [0 ] * 2
FOR $I = 1 TO $ASFLINES [0 ]
$ISTART = STRINGINSTR ($ASFLINES [$I ] , "(" , 0 , 1 )
$IFINAL = STRINGINSTR ($ASFLINES [$I ] , ")" , 0 , - 1 )
$ASFILTER [$I * 2 - 1 ] = STRINGSTRIPWS (STRINGLEFT ($ASFLINES [$I ] , $ISTART - 1 ) , 3 )
$ASFILTER [$I * 2 ] = STRINGSTRIPWS (STRINGTRIMRIGHT (STRINGTRIMLEFT ($ASFLINES [$I ] , $ISTART ) , STRINGLEN ($ASFLINES [$I ] ) - $IFINAL + 1 ) , 3 )
$STFILTER &= "wchar[" & STRINGLEN ($ASFILTER [$I * 2 - 1 ] ) + 1 & "];wchar[" & STRINGLEN ($ASFILTER [$I * 2 ] ) + 1 & "];"
NEXT
LOCAL $TTITLE = DLLSTRUCTCREATE ("wchar Title[" & STRINGLEN ($STITLE ) + 1 & "]" )
LOCAL $TINITIALDIR = DLLSTRUCTCREATE ("wchar InitDir[" & STRINGLEN ($SINITALDIR ) + 1 & "]" )
LOCAL $TFILTER = DLLSTRUCTCREATE ($STFILTER & "wchar" )
LOCAL $TPATH = DLLSTRUCTCREATE ("wchar Path[" & $IPATHLEN & "]" )
LOCAL $TEXTN = DLLSTRUCTCREATE ("wchar Extension[" & STRINGLEN ($SDEFAULTEXT ) + 1 & "]" )
FOR $I = 1 TO $ASFILTER [0 ]
DLLSTRUCTSETDATA ($TFILTER , $I , $ASFILTER [$I ] )
NEXT
DLLSTRUCTSETDATA ($TTITLE , "Title" , $STITLE )
DLLSTRUCTSETDATA ($TINITIALDIR , "InitDir" , $SINITALDIR )
DLLSTRUCTSETDATA ($TPATH , "Path" , $SDEFAULTFILE )
DLLSTRUCTSETDATA ($TEXTN , "Extension" , $SDEFAULTEXT )
DLLSTRUCTSETDATA ($TOFN , "StructSize" , DLLSTRUCTGETSIZE ($TOFN ) )
DLLSTRUCTSETDATA ($TOFN , "hwndOwner" , $HWNDOWNER )
DLLSTRUCTSETDATA ($TOFN , "lpstrFilter" , DLLSTRUCTGETPTR ($TFILTER ) )
DLLSTRUCTSETDATA ($TOFN , "nFilterIndex" , $IFILTERINDEX )
DLLSTRUCTSETDATA ($TOFN , "lpstrFile" , DLLSTRUCTGETPTR ($TPATH ) )
DLLSTRUCTSETDATA ($TOFN , "nMaxFile" , $IPATHLEN )
DLLSTRUCTSETDATA ($TOFN , "lpstrInitialDir" , DLLSTRUCTGETPTR ($TINITIALDIR ) )
DLLSTRUCTSETDATA ($TOFN , "lpstrTitle" , DLLSTRUCTGETPTR ($TTITLE ) )
DLLSTRUCTSETDATA ($TOFN , "Flags" , $IFLAG )
DLLSTRUCTSETDATA ($TOFN , "lpstrDefExt" , DLLSTRUCTGETPTR ($TEXTN ) )
DLLSTRUCTSETDATA ($TOFN , "FlagsEx" , $IFLAGSEX )
DLLCALL ("comdlg32.dll" , "bool" , "GetOpenFileNameW" , "struct*" , $TOFN )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , $AFILES )
IF BITAND ($IFLAGS , $OFN_ALLOWMULTISELECT ) = $OFN_ALLOWMULTISELECT AND BITAND ($IFLAGS , $OFN_EXPLORER ) = $OFN_EXPLORER THEN
FOR $X = 1 TO $IPATHLEN
IF DLLSTRUCTGETDATA ($TPATH , "Path" , $X ) = CHR (0 ) THEN
DLLSTRUCTSETDATA ($TPATH , "Path" , "|" , $X )
$INULLS += 1
ELSE
$INULLS = 0
ENDIF
IF $INULLS = 2 THEN EXITLOOP
NEXT
DLLSTRUCTSETDATA ($TPATH , "Path" , CHR (0 ) , $X - 1 )
$AFILES = STRINGSPLIT (DLLSTRUCTGETDATA ($TPATH , "Path" ) , "|" )
IF $AFILES [0 ] = 1 THEN RETURN __WINAPI_PARSEFILEDIALOGPATH (DLLSTRUCTGETDATA ($TPATH , "Path" ) )
RETURN STRINGSPLIT (DLLSTRUCTGETDATA ($TPATH , "Path" ) , "|" )
ELSEIF BITAND ($IFLAGS , $OFN_ALLOWMULTISELECT ) = $OFN_ALLOWMULTISELECT THEN
$AFILES = STRINGSPLIT (DLLSTRUCTGETDATA ($TPATH , "Path" ) , " " )
IF $AFILES [0 ] = 1 THEN RETURN __WINAPI_PARSEFILEDIALOGPATH (DLLSTRUCTGETDATA ($TPATH , "Path" ) )
RETURN STRINGSPLIT (STRINGREPLACE (DLLSTRUCTGETDATA ($TPATH , "Path" ) , " " , "|" ) , "|" )
ELSE
RETURN __WINAPI_PARSEFILEDIALOGPATH (DLLSTRUCTGETDATA ($TPATH , "Path" ) )
ENDIF
ENDFUNC
FUNC _WINAPI_GETOVERLAPPEDRESULT ($HFILE , $POVERLAPPED , BYREF $IBYTES , $FWAIT = FALSE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GetOverlappedResult" , "handle" , $HFILE , "ptr" , $POVERLAPPED , "dword*" , 0 , "bool" , $FWAIT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
$IBYTES = $ARESULT [3 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETPARENT ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetParent" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETPROCESSAFFINITYMASK ($HPROCESS )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GetProcessAffinityMask" , "handle" , $HPROCESS , "dword_ptr*" , 0 , "dword_ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $AMASK [3 ]
$AMASK [0 ] = TRUE
$AMASK [1 ] = $ARESULT [2 ]
$AMASK [2 ] = $ARESULT [3 ]
RETURN $AMASK
ENDFUNC
FUNC _WINAPI_GETSAVEFILENAME ($STITLE = "" , $SFILTER = "All files (*.*)" , $SINITALDIR = "." , $SDEFAULTFILE = "" , $SDEFAULTEXT = "" , $IFILTERINDEX = 1 , $IFLAGS = 0 , $IFLAGSEX = 0 , $HWNDOWNER = 0 )
LOCAL $IPATHLEN = 4096
LOCAL $TOFN = DLLSTRUCTCREATE ($TAGOPENFILENAME )
LOCAL $AFILES [1 ] = [0 ]
LOCAL $IFLAG = $IFLAGS
LOCAL $ASFLINES = STRINGSPLIT ($SFILTER , "|" )
LOCAL $ASFILTER [$ASFLINES [0 ] * 2 + 1 ]
LOCAL $ISTART , $IFINAL , $STFILTER
$ASFILTER [0 ] = $ASFLINES [0 ] * 2
FOR $I = 1 TO $ASFLINES [0 ]
$ISTART = STRINGINSTR ($ASFLINES [$I ] , "(" , 0 , 1 )
$IFINAL = STRINGINSTR ($ASFLINES [$I ] , ")" , 0 , - 1 )
$ASFILTER [$I * 2 - 1 ] = STRINGSTRIPWS (STRINGLEFT ($ASFLINES [$I ] , $ISTART - 1 ) , 3 )
$ASFILTER [$I * 2 ] = STRINGSTRIPWS (STRINGTRIMRIGHT (STRINGTRIMLEFT ($ASFLINES [$I ] , $ISTART ) , STRINGLEN ($ASFLINES [$I ] ) - $IFINAL + 1 ) , 3 )
$STFILTER &= "wchar[" & STRINGLEN ($ASFILTER [$I * 2 - 1 ] ) + 1 & "];wchar[" & STRINGLEN ($ASFILTER [$I * 2 ] ) + 1 & "];"
NEXT
LOCAL $TTITLE = DLLSTRUCTCREATE ("wchar Title[" & STRINGLEN ($STITLE ) + 1 & "]" )
LOCAL $TINITIALDIR = DLLSTRUCTCREATE ("wchar InitDir[" & STRINGLEN ($SINITALDIR ) + 1 & "]" )
LOCAL $TFILTER = DLLSTRUCTCREATE ($STFILTER & "wchar" )
LOCAL $TPATH = DLLSTRUCTCREATE ("wchar Path[" & $IPATHLEN & "]" )
LOCAL $TEXTN = DLLSTRUCTCREATE ("wchar Extension[" & STRINGLEN ($SDEFAULTEXT ) + 1 & "]" )
FOR $I = 1 TO $ASFILTER [0 ]
DLLSTRUCTSETDATA ($TFILTER , $I , $ASFILTER [$I ] )
NEXT
DLLSTRUCTSETDATA ($TTITLE , "Title" , $STITLE )
DLLSTRUCTSETDATA ($TINITIALDIR , "InitDir" , $SINITALDIR )
DLLSTRUCTSETDATA ($TPATH , "Path" , $SDEFAULTFILE )
DLLSTRUCTSETDATA ($TEXTN , "Extension" , $SDEFAULTEXT )
DLLSTRUCTSETDATA ($TOFN , "StructSize" , DLLSTRUCTGETSIZE ($TOFN ) )
DLLSTRUCTSETDATA ($TOFN , "hwndOwner" , $HWNDOWNER )
DLLSTRUCTSETDATA ($TOFN , "lpstrFilter" , DLLSTRUCTGETPTR ($TFILTER ) )
DLLSTRUCTSETDATA ($TOFN , "nFilterIndex" , $IFILTERINDEX )
DLLSTRUCTSETDATA ($TOFN , "lpstrFile" , DLLSTRUCTGETPTR ($TPATH ) )
DLLSTRUCTSETDATA ($TOFN , "nMaxFile" , $IPATHLEN )
DLLSTRUCTSETDATA ($TOFN , "lpstrInitialDir" , DLLSTRUCTGETPTR ($TINITIALDIR ) )
DLLSTRUCTSETDATA ($TOFN , "lpstrTitle" , DLLSTRUCTGETPTR ($TTITLE ) )
DLLSTRUCTSETDATA ($TOFN , "Flags" , $IFLAG )
DLLSTRUCTSETDATA ($TOFN , "lpstrDefExt" , DLLSTRUCTGETPTR ($TEXTN ) )
DLLSTRUCTSETDATA ($TOFN , "FlagsEx" , $IFLAGSEX )
DLLCALL ("comdlg32.dll" , "bool" , "GetSaveFileNameW" , "struct*" , $TOFN )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , $AFILES )
RETURN __WINAPI_PARSEFILEDIALOGPATH (DLLSTRUCTGETDATA ($TPATH , "Path" ) )
ENDFUNC
FUNC _WINAPI_GETSTOCKOBJECT ($IOBJECT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "GetStockObject" , "int" , $IOBJECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETSTDHANDLE ($ISTDHANDLE )
IF $ISTDHANDLE < 0 OR $ISTDHANDLE > 2 THEN RETURN SETERROR (2 , 0 , - 1 )
LOCAL CONST $AHANDLE [3 ] = [- 10 , - 11 , - 12 ]
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetStdHandle" , "dword" , $AHANDLE [$ISTDHANDLE ] )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , - 1 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETSYSCOLOR ($IINDEX )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "dword" , "GetSysColor" , "int" , $IINDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETSYSCOLORBRUSH ($IINDEX )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "GetSysColorBrush" , "int" , $IINDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETSYSTEMMETRICS ($IINDEX )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetSystemMetrics" , "int" , $IINDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETTEXTEXTENTPOINT32 ($HDC , $STEXT )
LOCAL $TSIZE = DLLSTRUCTCREATE ($TAGSIZE )
LOCAL $ISIZE = STRINGLEN ($STEXT )
DLLCALL ("gdi32.dll" , "bool" , "GetTextExtentPoint32W" , "handle" , $HDC , "wstr" , $STEXT , "int" , $ISIZE , "struct*" , $TSIZE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TSIZE
ENDFUNC
FUNC _WINAPI_GETTEXTMETRICS ($HDC )
LOCAL $TTEXTMETRIC = DLLSTRUCTCREATE ($TAGTEXTMETRIC )
LOCAL $RET = DLLCALL ("gdi32.dll" , "bool" , "GetTextMetricsW" , "handle" , $HDC , "struct*" , $TTEXTMETRIC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF NOT $RET [0 ] THEN RETURN SETERROR (- 1 , 0 , 0 )
RETURN $TTEXTMETRIC
ENDFUNC
FUNC _WINAPI_GETWINDOW ($HWND , $ICMD )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetWindow" , "hwnd" , $HWND , "uint" , $ICMD )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWDC ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "GetWindowDC" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWHEIGHT ($HWND )
LOCAL $TRECT = _WINAPI_GETWINDOWRECT ($HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TRECT , "Bottom" ) - DLLSTRUCTGETDATA ($TRECT , "Top" )
ENDFUNC
FUNC _WINAPI_GETWINDOWLONG ($HWND , $IINDEX )
LOCAL $SFUNCNAME = "GetWindowLongW"
IF @AUTOITX64 THEN $SFUNCNAME = "GetWindowLongPtrW"
LOCAL $ARESULT = DLLCALL ("user32.dll" , "long_ptr" , $SFUNCNAME , "hwnd" , $HWND , "int" , $IINDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWPLACEMENT ($HWND )
LOCAL $TWINDOWPLACEMENT = DLLSTRUCTCREATE ($TAGWINDOWPLACEMENT )
DLLSTRUCTSETDATA ($TWINDOWPLACEMENT , "length" , DLLSTRUCTGETSIZE ($TWINDOWPLACEMENT ) )
DLLCALL ("user32.dll" , "bool" , "GetWindowPlacement" , "hwnd" , $HWND , "struct*" , $TWINDOWPLACEMENT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TWINDOWPLACEMENT
ENDFUNC
FUNC _WINAPI_GETWINDOWRECT ($HWND )
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
DLLCALL ("user32.dll" , "bool" , "GetWindowRect" , "hwnd" , $HWND , "struct*" , $TRECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TRECT
ENDFUNC
FUNC _WINAPI_GETWINDOWRGN ($HWND , $HRGN )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetWindowRgn" , "hwnd" , $HWND , "handle" , $HRGN )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWTEXT ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetWindowTextW" , "hwnd" , $HWND , "wstr" , "" , "int" , 4096 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [2 ] )
ENDFUNC
FUNC _WINAPI_GETWINDOWTHREADPROCESSID ($HWND , BYREF $IPID )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "dword" , "GetWindowThreadProcessId" , "hwnd" , $HWND , "dword*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
$IPID = $ARESULT [2 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWWIDTH ($HWND )
LOCAL $TRECT = _WINAPI_GETWINDOWRECT ($HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TRECT , "Right" ) - DLLSTRUCTGETDATA ($TRECT , "Left" )
ENDFUNC
FUNC _WINAPI_GETXYFROMPOINT (BYREF $TPOINT , BYREF $IX , BYREF $IY )
$IX = DLLSTRUCTGETDATA ($TPOINT , "X" )
$IY = DLLSTRUCTGETDATA ($TPOINT , "Y" )
ENDFUNC
FUNC _WINAPI_GLOBALMEMORYSTATUS ()
LOCAL $TMEM = DLLSTRUCTCREATE ($TAGMEMORYSTATUSEX )
LOCAL $IMEM = DLLSTRUCTGETSIZE ($TMEM )
DLLSTRUCTSETDATA ($TMEM , 1 , $IMEM )
DLLCALL ("kernel32.dll" , "none" , "GlobalMemoryStatusEx" , "ptr" , $TMEM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $AMEM [7 ]
$AMEM [0 ] = DLLSTRUCTGETDATA ($TMEM , 2 )
$AMEM [1 ] = DLLSTRUCTGETDATA ($TMEM , 3 )
$AMEM [2 ] = DLLSTRUCTGETDATA ($TMEM , 4 )
$AMEM [3 ] = DLLSTRUCTGETDATA ($TMEM , 5 )
$AMEM [4 ] = DLLSTRUCTGETDATA ($TMEM , 6 )
$AMEM [5 ] = DLLSTRUCTGETDATA ($TMEM , 7 )
$AMEM [6 ] = DLLSTRUCTGETDATA ($TMEM , 8 )
RETURN $AMEM
ENDFUNC
FUNC _WINAPI_GUIDFROMSTRING ($SGUID )
LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID )
_WINAPI_GUIDFROMSTRINGEX ($SGUID , $TGUID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TGUID
ENDFUNC
FUNC _WINAPI_GUIDFROMSTRINGEX ($SGUID , $PGUID )
LOCAL $ARESULT = DLLCALL ("ole32.dll" , "long" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $PGUID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_HIWORD ($ILONG )
RETURN BITSHIFT ($ILONG , 16 )
ENDFUNC
FUNC _WINAPI_INPROCESS ($HWND , BYREF $HLASTWND )
IF $HWND = $HLASTWND THEN RETURN TRUE
FOR $II = $__GAINPROCESS_WINAPI [0 ] [0 ] TO 1 STEP - 1
IF $HWND = $__GAINPROCESS_WINAPI [$II ] [0 ] THEN
IF $__GAINPROCESS_WINAPI [$II ] [1 ] THEN
$HLASTWND = $HWND
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDIF
NEXT
LOCAL $IPROCESSID
_WINAPI_GETWINDOWTHREADPROCESSID ($HWND , $IPROCESSID )
LOCAL $ICOUNT = $__GAINPROCESS_WINAPI [0 ] [0 ] + 1
IF $ICOUNT >= 64 THEN $ICOUNT = 1
$__GAINPROCESS_WINAPI [0 ] [0 ] = $ICOUNT
$__GAINPROCESS_WINAPI [$ICOUNT ] [0 ] = $HWND
$__GAINPROCESS_WINAPI [$ICOUNT ] [1 ] = ($IPROCESSID = @AUTOITPID )
RETURN $__GAINPROCESS_WINAPI [$ICOUNT ] [1 ]
ENDFUNC
FUNC _WINAPI_INTTOFLOAT ($IINT )
LOCAL $TINT = DLLSTRUCTCREATE ("int" )
LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" , DLLSTRUCTGETPTR ($TINT ) )
DLLSTRUCTSETDATA ($TINT , 1 , $IINT )
RETURN DLLSTRUCTGETDATA ($TFLOAT , 1 )
ENDFUNC
FUNC _WINAPI_ISCLASSNAME ($HWND , $SCLASSNAME )
LOCAL $SSEPARATOR = OPT ("GUIDataSeparatorChar" )
LOCAL $ACLASSNAME = STRINGSPLIT ($SCLASSNAME , $SSEPARATOR )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $SCLASSCHECK = _WINAPI_GETCLASSNAME ($HWND )
FOR $X = 1 TO UBOUND ($ACLASSNAME ) - 1
IF STRINGUPPER (STRINGMID ($SCLASSCHECK , 1 , STRINGLEN ($ACLASSNAME [$X ] ) ) ) = STRINGUPPER ($ACLASSNAME [$X ] ) THEN RETURN TRUE
NEXT
RETURN FALSE
ENDFUNC
FUNC _WINAPI_ISWINDOW ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "IsWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ISWINDOWVISIBLE ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "IsWindowVisible" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_INVALIDATERECT ($HWND , $TRECT = 0 , $FERASE = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "InvalidateRect" , "hwnd" , $HWND , "struct*" , $TRECT , "bool" , $FERASE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_LINETO ($HDC , $IX , $IY )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "LineTo" , "handle" , $HDC , "int" , $IX , "int" , $IY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_LOADBITMAP ($HINSTANCE , $SBITMAP )
LOCAL $SBITMAPTYPE = "int"
IF ISSTRING ($SBITMAP ) THEN $SBITMAPTYPE = "wstr"
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "LoadBitmapW" , "handle" , $HINSTANCE , $SBITMAPTYPE , $SBITMAP )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_LOADIMAGE ($HINSTANCE , $SIMAGE , $ITYPE , $IXDESIRED , $IYDESIRED , $ILOAD )
LOCAL $ARESULT , $SIMAGETYPE = "int"
IF ISSTRING ($SIMAGE ) THEN $SIMAGETYPE = "wstr"
$ARESULT = DLLCALL ("user32.dll" , "handle" , "LoadImageW" , "handle" , $HINSTANCE , $SIMAGETYPE , $SIMAGE , "uint" , $ITYPE , "int" , $IXDESIRED , "int" , $IYDESIRED , "uint" , $ILOAD )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_LOADLIBRARY ($SFILENAME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "LoadLibraryW" , "wstr" , $SFILENAME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_LOADLIBRARYEX ($SFILENAME , $IFLAGS = 0 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "LoadLibraryExW" , "wstr" , $SFILENAME , "ptr" , 0 , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_LOADSHELL32ICON ($IICONID )
LOCAL $TICONS = DLLSTRUCTCREATE ("ptr Data" )
LOCAL $IICONS = _WINAPI_EXTRACTICONEX ("shell32.dll" , $IICONID , 0 , $TICONS , 1 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $IICONS <= 0 THEN RETURN SETERROR (1 , 0 , 0 )
RETURN DLLSTRUCTGETDATA ($TICONS , "Data" )
ENDFUNC
FUNC _WINAPI_LOADSTRING ($HINSTANCE , $ISTRINGID )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "LoadStringW" , "handle" , $HINSTANCE , "uint" , $ISTRINGID , "wstr" , "" , "int" , 4096 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [3 ] )
ENDFUNC
FUNC _WINAPI_LOCALFREE ($HMEM )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $HMEM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_LOWORD ($ILONG )
RETURN BITAND ($ILONG , 65535 )
ENDFUNC
FUNC _WINAPI_MAKELANGID ($LGIDPRIMARY , $LGIDSUB )
RETURN BITOR (BITSHIFT ($LGIDSUB , - 10 ) , $LGIDPRIMARY )
ENDFUNC
FUNC _WINAPI_MAKELCID ($LGID , $SRTID )
RETURN BITOR (BITSHIFT ($SRTID , - 16 ) , $LGID )
ENDFUNC
FUNC _WINAPI_MAKELONG ($ILO , $IHI )
RETURN BITOR (BITSHIFT ($IHI , - 16 ) , BITAND ($ILO , 65535 ) )
ENDFUNC
FUNC _WINAPI_MAKEQWORD ($LODWORD , $HIDWORD )
LOCAL $TINT64 = DLLSTRUCTCREATE ("uint64" )
LOCAL $TDWORDS = DLLSTRUCTCREATE ("dword;dword" , DLLSTRUCTGETPTR ($TINT64 ) )
DLLSTRUCTSETDATA ($TDWORDS , 1 , $LODWORD )
DLLSTRUCTSETDATA ($TDWORDS , 2 , $HIDWORD )
RETURN DLLSTRUCTGETDATA ($TINT64 , 1 )
ENDFUNC
FUNC _WINAPI_MESSAGEBEEP ($ITYPE = 1 )
LOCAL $ISOUND
SWITCH $ITYPE
CASE 1
$ISOUND = 0
CASE 2
$ISOUND = 16
CASE 3
$ISOUND = 32
CASE 4
$ISOUND = 48
CASE 5
$ISOUND = 64
CASE ELSE
$ISOUND = - 1
ENDSWITCH
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "MessageBeep" , "uint" , $ISOUND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_MSGBOX ($IFLAGS , $STITLE , $STEXT )
BLOCKINPUT (0 )
MSGBOX ($IFLAGS , $STITLE , $STEXT & " " )
ENDFUNC
FUNC _WINAPI_MOUSE_EVENT ($IFLAGS , $IX = 0 , $IY = 0 , $IDATA = 0 , $IEXTRAINFO = 0 )
DLLCALL ("user32.dll" , "none" , "mouse_event" , "dword" , $IFLAGS , "dword" , $IX , "dword" , $IY , "dword" , $IDATA , "ulong_ptr" , $IEXTRAINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED )
ENDFUNC
FUNC _WINAPI_MOVETO ($HDC , $IX , $IY )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "MoveToEx" , "handle" , $HDC , "int" , $IX , "int" , $IY , "ptr" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_MOVEWINDOW ($HWND , $IX , $IY , $IWIDTH , $IHEIGHT , $FREPAINT = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "MoveWindow" , "hwnd" , $HWND , "int" , $IX , "int" , $IY , "int" , $IWIDTH , "int" , $IHEIGHT , "bool" , $FREPAINT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_MULDIV ($INUMBER , $INUMERATOR , $IDENOMINATOR )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MulDiv" , "int" , $INUMBER , "int" , $INUMERATOR , "int" , $IDENOMINATOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , - 1 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_MULTIBYTETOWIDECHAR ($STEXT , $ICODEPAGE = 0 , $IFLAGS = 0 , $BRETSTRING = FALSE )
LOCAL $STEXTTYPE = "str"
IF NOT ISSTRING ($STEXT ) THEN $STEXTTYPE = "struct*"
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MultiByteToWideChar" , "uint" , $ICODEPAGE , "dword" , $IFLAGS , $STEXTTYPE , $STEXT , "int" , - 1 , "ptr" , 0 , "int" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $IOUT = $ARESULT [0 ]
LOCAL $TOUT = DLLSTRUCTCREATE ("wchar[" & $IOUT & "]" )
$ARESULT = DLLCALL ("kernel32.dll" , "int" , "MultiByteToWideChar" , "uint" , $ICODEPAGE , "dword" , $IFLAGS , $STEXTTYPE , $STEXT , "int" , - 1 , "struct*" , $TOUT , "int" , $IOUT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $BRETSTRING THEN RETURN DLLSTRUCTGETDATA ($TOUT , 1 )
RETURN $TOUT
ENDFUNC
FUNC _WINAPI_MULTIBYTETOWIDECHAREX ($STEXT , $PTEXT , $ICODEPAGE = 0 , $IFLAGS = 0 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MultiByteToWideChar" , "uint" , $ICODEPAGE , "dword" , $IFLAGS , "STR" , $STEXT , "int" , - 1 , "struct*" , $PTEXT , "int" , (STRINGLEN ($STEXT ) + 1 ) * 2 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_OPENPROCESS ($IACCESS , $FINHERIT , $IPROCESSID , $FDEBUGPRIV = FALSE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "OpenProcess" , "dword" , $IACCESS , "bool" , $FINHERIT , "dword" , $IPROCESSID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARESULT [0 ] THEN RETURN $ARESULT [0 ]
IF NOT $FDEBUGPRIV THEN RETURN 0
LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKENEX (BITOR ($TOKEN_ADJUST_PRIVILEGES , $TOKEN_QUERY ) )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
_SECURITY__SETPRIVILEGE ($HTOKEN , "SeDebugPrivilege" , TRUE )
LOCAL $IERROR = @ERROR
LOCAL $ILASTERROR = @EXTENDED
LOCAL $IRET = 0
IF NOT @ERROR THEN
$ARESULT = DLLCALL ("kernel32.dll" , "handle" , "OpenProcess" , "dword" , $IACCESS , "bool" , $FINHERIT , "dword" , $IPROCESSID )
$IERROR = @ERROR
$ILASTERROR = @EXTENDED
IF $ARESULT [0 ] THEN $IRET = $ARESULT [0 ]
_SECURITY__SETPRIVILEGE ($HTOKEN , "SeDebugPrivilege" , FALSE )
IF @ERROR THEN
$IERROR = @ERROR
$ILASTERROR = @EXTENDED
ENDIF
ENDIF
_WINAPI_CLOSEHANDLE ($HTOKEN )
RETURN SETERROR ($IERROR , $ILASTERROR , $IRET )
ENDFUNC
FUNC __WINAPI_PARSEFILEDIALOGPATH ($SPATH )
LOCAL $AFILES [3 ]
$AFILES [0 ] = 2
LOCAL $STEMP = STRINGMID ($SPATH , 1 , STRINGINSTR ($SPATH , "\" , 0 , - 1 ) - 1 )
$AFILES [1 ] = $STEMP
$AFILES [2 ] = STRINGMID ($SPATH , STRINGINSTR ($SPATH , "\" , 0 , - 1 ) + 1 )
RETURN $AFILES
ENDFUNC
FUNC _WINAPI_PATHFINDONPATH (CONST $SZFILE , $AEXTRAPATHS = "" , CONST $SZPATHDELIMITER = @LF )
LOCAL $IEXTRACOUNT = 0
IF ISSTRING ($AEXTRAPATHS ) THEN
IF STRINGLEN ($AEXTRAPATHS ) THEN
$AEXTRAPATHS = STRINGSPLIT ($AEXTRAPATHS , $SZPATHDELIMITER , 1 + 2 )
$IEXTRACOUNT = UBOUND ($AEXTRAPATHS , 1 )
ENDIF
ELSEIF ISARRAY ($AEXTRAPATHS ) THEN
$IEXTRACOUNT = UBOUND ($AEXTRAPATHS )
ENDIF
LOCAL $TPATHS , $TPATHPTRS
IF $IEXTRACOUNT THEN
LOCAL $SZSTRUCT = ""
FOR $PATH IN $AEXTRAPATHS
$SZSTRUCT &= "wchar[" & STRINGLEN ($PATH ) + 1 & "];"
NEXT
$TPATHS = DLLSTRUCTCREATE ($SZSTRUCT )
$TPATHPTRS = DLLSTRUCTCREATE ("ptr[" & $IEXTRACOUNT + 1 & "]" )
FOR $I = 1 TO $IEXTRACOUNT
DLLSTRUCTSETDATA ($TPATHS , $I , $AEXTRAPATHS [$I - 1 ] )
DLLSTRUCTSETDATA ($TPATHPTRS , 1 , DLLSTRUCTGETPTR ($TPATHS , $I ) , $I )
NEXT
DLLSTRUCTSETDATA ($TPATHPTRS , 1 , PTR (0 ) , $IEXTRACOUNT + 1 )
ENDIF
LOCAL $ARESULT = DLLCALL ("shlwapi.dll" , "bool" , "PathFindOnPathW" , "wstr" , $SZFILE , "struct*" , $TPATHPTRS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
IF $ARESULT [0 ] = 0 THEN RETURN SETERROR (1 , 0 , $SZFILE )
RETURN $ARESULT [1 ]
ENDFUNC
FUNC _WINAPI_POINTFROMRECT (BYREF $TRECT , $FCENTER = TRUE )
LOCAL $IX1 = DLLSTRUCTGETDATA ($TRECT , "Left" )
LOCAL $IY1 = DLLSTRUCTGETDATA ($TRECT , "Top" )
LOCAL $IX2 = DLLSTRUCTGETDATA ($TRECT , "Right" )
LOCAL $IY2 = DLLSTRUCTGETDATA ($TRECT , "Bottom" )
IF $FCENTER THEN
$IX1 = $IX1 + (($IX2 - $IX1 ) / 2 )
$IY1 = $IY1 + (($IY2 - $IY1 ) / 2 )
ENDIF
LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT )
DLLSTRUCTSETDATA ($TPOINT , "X" , $IX1 )
DLLSTRUCTSETDATA ($TPOINT , "Y" , $IY1 )
RETURN $TPOINT
ENDFUNC
FUNC _WINAPI_POSTMESSAGE ($HWND , $IMSG , $IWPARAM , $ILPARAM )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "PostMessage" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $IWPARAM , "lparam" , $ILPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_PRIMARYLANGID ($LGID )
RETURN BITAND ($LGID , 1023 )
ENDFUNC
FUNC _WINAPI_PTINRECT (BYREF $TRECT , BYREF $TPOINT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "PtInRect" , "struct*" , $TRECT , "struct" , $TPOINT )
IF @ERROR THEN RETURN SETERROR (1 , @EXTENDED , FALSE )
RETURN NOT ($ARESULT [0 ] = 0 )
ENDFUNC
FUNC _WINAPI_READFILE ($HFILE , $PBUFFER , $ITOREAD , BYREF $IREAD , $POVERLAPPED = 0 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "ReadFile" , "handle" , $HFILE , "ptr" , $PBUFFER , "dword" , $ITOREAD , "dword*" , 0 , "ptr" , $POVERLAPPED )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
$IREAD = $ARESULT [4 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_READPROCESSMEMORY ($HPROCESS , $PBASEADDRESS , $PBUFFER , $ISIZE , BYREF $IREAD )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "ReadProcessMemory" , "handle" , $HPROCESS , "ptr" , $PBASEADDRESS , "ptr" , $PBUFFER , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
$IREAD = $ARESULT [5 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_RECTISEMPTY (BYREF $TRECT )
RETURN (DLLSTRUCTGETDATA ($TRECT , "Left" ) = 0 ) AND (DLLSTRUCTGETDATA ($TRECT , "Top" ) = 0 ) AND (DLLSTRUCTGETDATA ($TRECT , "Right" ) = 0 ) AND (DLLSTRUCTGETDATA ($TRECT , "Bottom" ) = 0 )
ENDFUNC
FUNC _WINAPI_REDRAWWINDOW ($HWND , $TRECT = 0 , $HREGION = 0 , $IFLAGS = 5 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "RedrawWindow" , "hwnd" , $HWND , "struct*" , $TRECT , "handle" , $HREGION , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_REGISTERWINDOWMESSAGE ($SMESSAGE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "uint" , "RegisterWindowMessageW" , "wstr" , $SMESSAGE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_RELEASECAPTURE ()
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "ReleaseCapture" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_RELEASEDC ($HWND , $HDC )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "ReleaseDC" , "hwnd" , $HWND , "handle" , $HDC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SCREENTOCLIENT ($HWND , BYREF $TPOINT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "ScreenToClient" , "hwnd" , $HWND , "struct*" , $TPOINT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SELECTOBJECT ($HDC , $HGDIOBJ )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDC , "handle" , $HGDIOBJ )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETBKCOLOR ($HDC , $ICOLOR )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "INT" , "SetBkColor" , "handle" , $HDC , "dword" , $ICOLOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , - 1 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETBKMODE ($HDC , $IBKMODE )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "SetBkMode" , "handle" , $HDC , "int" , $IBKMODE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETCAPTURE ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "SetCapture" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETCURSOR ($HCURSOR )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "SetCursor" , "handle" , $HCURSOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETDEFAULTPRINTER ($SPRINTER )
LOCAL $ARESULT = DLLCALL ("winspool.drv" , "bool" , "SetDefaultPrinterW" , "wstr" , $SPRINTER )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETDIBITS ($HDC , $HBMP , $ISTARTSCAN , $ISCANLINES , $PBITS , $PBMI , $ICOLORUSE = 0 )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "SetDIBits" , "handle" , $HDC , "handle" , $HBMP , "uint" , $ISTARTSCAN , "uint" , $ISCANLINES , "ptr" , $PBITS , "ptr" , $PBMI , "uint" , $ICOLORUSE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETENDOFFILE ($HFILE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetEndOfFile" , "handle" , $HFILE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETEVENT ($HEVENT )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetEvent" , "handle" , $HEVENT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETFILEPOINTER ($HFILE , $IPOS , $IMETHOD = 0 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "INT" , "SetFilePointer" , "handle" , $HFILE , "long" , $IPOS , "ptr" , 0 , "long" , $IMETHOD )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , - 1 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETFOCUS ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "SetFocus" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETFONT ($HWND , $HFONT , $FREDRAW = TRUE )
_SENDMESSAGE ($HWND , $__WINAPICONSTANT_WM_SETFONT , $HFONT , $FREDRAW , 0 , "hwnd" )
ENDFUNC
FUNC _WINAPI_SETHANDLEINFORMATION ($HOBJECT , $IMASK , $IFLAGS )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetHandleInformation" , "handle" , $HOBJECT , "dword" , $IMASK , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETLAYEREDWINDOWATTRIBUTES ($HWND , $I_TRANSCOLOR , $TRANSPARENCY = 255 , $DWFLAGS = 3 , $ISCOLORREF = FALSE )
IF $DWFLAGS = DEFAULT OR $DWFLAGS = "" OR $DWFLAGS < 0 THEN $DWFLAGS = 3
IF NOT $ISCOLORREF THEN
$I_TRANSCOLOR = INT (BINARYMID ($I_TRANSCOLOR , 3 , 1 ) & BINARYMID ($I_TRANSCOLOR , 2 , 1 ) & BINARYMID ($I_TRANSCOLOR , 1 , 1 ) )
ENDIF
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetLayeredWindowAttributes" , "hwnd" , $HWND , "dword" , $I_TRANSCOLOR , "byte" , $TRANSPARENCY , "dword" , $DWFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETPARENT ($HWNDCHILD , $HWNDPARENT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "SetParent" , "hwnd" , $HWNDCHILD , "hwnd" , $HWNDPARENT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETPROCESSAFFINITYMASK ($HPROCESS , $IMASK )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetProcessAffinityMask" , "handle" , $HPROCESS , "ulong_ptr" , $IMASK )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETSYSCOLORS ($VELEMENTS , $VCOLORS )
LOCAL $ISEARRAY = ISARRAY ($VELEMENTS ) , $ISCARRAY = ISARRAY ($VCOLORS )
LOCAL $IELEMENTNUM
IF NOT $ISCARRAY AND NOT $ISEARRAY THEN
$IELEMENTNUM = 1
ELSEIF $ISCARRAY OR $ISEARRAY THEN
IF NOT $ISCARRAY OR NOT $ISEARRAY THEN RETURN SETERROR (- 1 , - 1 , FALSE )
IF UBOUND ($VELEMENTS ) <> UBOUND ($VCOLORS ) THEN RETURN SETERROR (- 1 , - 1 , FALSE )
$IELEMENTNUM = UBOUND ($VELEMENTS )
ENDIF
LOCAL $TELEMENTS = DLLSTRUCTCREATE ("int Element[" & $IELEMENTNUM & "]" )
LOCAL $TCOLORS = DLLSTRUCTCREATE ("dword NewColor[" & $IELEMENTNUM & "]" )
IF NOT $ISEARRAY THEN
DLLSTRUCTSETDATA ($TELEMENTS , "Element" , $VELEMENTS , 1 )
ELSE
FOR $X = 0 TO $IELEMENTNUM - 1
DLLSTRUCTSETDATA ($TELEMENTS , "Element" , $VELEMENTS [$X ] , $X + 1 )
NEXT
ENDIF
IF NOT $ISCARRAY THEN
DLLSTRUCTSETDATA ($TCOLORS , "NewColor" , $VCOLORS , 1 )
ELSE
FOR $X = 0 TO $IELEMENTNUM - 1
DLLSTRUCTSETDATA ($TCOLORS , "NewColor" , $VCOLORS [$X ] , $X + 1 )
NEXT
ENDIF
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetSysColors" , "int" , $IELEMENTNUM , "struct*" , $TELEMENTS , "struct*" , $TCOLORS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETTEXTCOLOR ($HDC , $ICOLOR )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "INT" , "SetTextColor" , "handle" , $HDC , "dword" , $ICOLOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , - 1 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWLONG ($HWND , $IINDEX , $IVALUE )
_WINAPI_SETLASTERROR (0 )
LOCAL $SFUNCNAME = "SetWindowLongW"
IF @AUTOITX64 THEN $SFUNCNAME = "SetWindowLongPtrW"
LOCAL $ARESULT = DLLCALL ("user32.dll" , "long_ptr" , $SFUNCNAME , "hwnd" , $HWND , "int" , $IINDEX , "long_ptr" , $IVALUE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWPLACEMENT ($HWND , $PWINDOWPLACEMENT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetWindowPlacement" , "hwnd" , $HWND , "ptr" , $PWINDOWPLACEMENT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWPOS ($HWND , $HAFTER , $IX , $IY , $ICX , $ICY , $IFLAGS )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetWindowPos" , "hwnd" , $HWND , "hwnd" , $HAFTER , "int" , $IX , "int" , $IY , "int" , $ICX , "int" , $ICY , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWRGN ($HWND , $HRGN , $BREDRAW = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "SetWindowRgn" , "hwnd" , $HWND , "handle" , $HRGN , "bool" , $BREDRAW )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWSHOOKEX ($IDHOOK , $LPFN , $HMOD , $DWTHREADID = 0 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "SetWindowsHookEx" , "int" , $IDHOOK , "ptr" , $LPFN , "handle" , $HMOD , "dword" , $DWTHREADID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWTEXT ($HWND , $STEXT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetWindowTextW" , "hwnd" , $HWND , "wstr" , $STEXT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SHOWCURSOR ($FSHOW )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "ShowCursor" , "bool" , $FSHOW )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SHOWERROR ($STEXT , $FEXIT = TRUE )
_WINAPI_MSGBOX (266256 , "Error" , $STEXT )
IF $FEXIT THEN EXIT
ENDFUNC
FUNC _WINAPI_SHOWMSG ($STEXT )
_WINAPI_MSGBOX (64 + 4096 , "Information" , $STEXT )
ENDFUNC
FUNC _WINAPI_SHOWWINDOW ($HWND , $ICMDSHOW = 5 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "ShowWindow" , "hwnd" , $HWND , "int" , $ICMDSHOW )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_STRINGFROMGUID ($PGUID )
LOCAL $ARESULT = DLLCALL ("ole32.dll" , "int" , "StringFromGUID2" , "struct*" , $PGUID , "wstr" , "" , "int" , 40 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [2 ] )
ENDFUNC
FUNC _WINAPI_STRINGLENA ($VSTRING )
LOCAL $ACALL = DLLCALL ("kernel32.dll" , "int" , "lstrlenA" , "struct*" , $VSTRING )
IF @ERROR THEN RETURN SETERROR (1 , @EXTENDED , 0 )
RETURN $ACALL [0 ]
ENDFUNC
FUNC _WINAPI_STRINGLENW ($VSTRING )
LOCAL $ACALL = DLLCALL ("kernel32.dll" , "int" , "lstrlenW" , "struct*" , $VSTRING )
IF @ERROR THEN RETURN SETERROR (1 , @EXTENDED , 0 )
RETURN $ACALL [0 ]
ENDFUNC
FUNC _WINAPI_SUBLANGID ($LGID )
RETURN BITSHIFT ($LGID , 10 )
ENDFUNC
FUNC _WINAPI_SYSTEMPARAMETERSINFO ($IACTION , $IPARAM = 0 , $VPARAM = 0 , $IWININI = 0 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SystemParametersInfoW" , "uint" , $IACTION , "uint" , $IPARAM , "ptr" , $VPARAM , "uint" , $IWININI )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_TWIPSPERPIXELX ()
LOCAL $LNGDC , $TWIPSPERPIXELX
$LNGDC = _WINAPI_GETDC (0 )
$TWIPSPERPIXELX = 1440 / _WINAPI_GETDEVICECAPS ($LNGDC , $__WINAPICONSTANT_LOGPIXELSX )
_WINAPI_RELEASEDC (0 , $LNGDC )
RETURN $TWIPSPERPIXELX
ENDFUNC
FUNC _WINAPI_TWIPSPERPIXELY ()
LOCAL $LNGDC , $TWIPSPERPIXELY
$LNGDC = _WINAPI_GETDC (0 )
$TWIPSPERPIXELY = 1440 / _WINAPI_GETDEVICECAPS ($LNGDC , $__WINAPICONSTANT_LOGPIXELSY )
_WINAPI_RELEASEDC (0 , $LNGDC )
RETURN $TWIPSPERPIXELY
ENDFUNC
FUNC _WINAPI_UNHOOKWINDOWSHOOKEX ($HHK )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "UnhookWindowsHookEx" , "handle" , $HHK )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_UPDATELAYEREDWINDOW ($HWND , $HDCDEST , $PPTDEST , $PSIZE , $HDCSRCE , $PPTSRCE , $IRGB , $PBLEND , $IFLAGS )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "UpdateLayeredWindow" , "hwnd" , $HWND , "handle" , $HDCDEST , "ptr" , $PPTDEST , "ptr" , $PSIZE , "handle" , $HDCSRCE , "ptr" , $PPTSRCE , "dword" , $IRGB , "ptr" , $PBLEND , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_UPDATEWINDOW ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "UpdateWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_WAITFORINPUTIDLE ($HPROCESS , $ITIMEOUT = - 1 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "dword" , "WaitForInputIdle" , "handle" , $HPROCESS , "dword" , $ITIMEOUT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_WAITFORMULTIPLEOBJECTS ($ICOUNT , $PHANDLES , $FWAITALL = FALSE , $ITIMEOUT = - 1 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "INT" , "WaitForMultipleObjects" , "dword" , $ICOUNT , "ptr" , $PHANDLES , "bool" , $FWAITALL , "dword" , $ITIMEOUT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , - 1 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_WAITFORSINGLEOBJECT ($HHANDLE , $ITIMEOUT = - 1 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "INT" , "WaitForSingleObject" , "handle" , $HHANDLE , "dword" , $ITIMEOUT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , - 1 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_WIDECHARTOMULTIBYTE ($PUNICODE , $ICODEPAGE = 0 , $BRETSTRING = TRUE )
LOCAL $SUNICODETYPE = "wstr"
IF NOT ISSTRING ($PUNICODE ) THEN $SUNICODETYPE = "struct*"
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "WideCharToMultiByte" , "uint" , $ICODEPAGE , "dword" , 0 , $SUNICODETYPE , $PUNICODE , "int" , - 1 , "ptr" , 0 , "int" , 0 , "ptr" , 0 , "ptr" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
LOCAL $TMULTIBYTE = DLLSTRUCTCREATE ("char[" & $ARESULT [0 ] & "]" )
$ARESULT = DLLCALL ("kernel32.dll" , "int" , "WideCharToMultiByte" , "uint" , $ICODEPAGE , "dword" , 0 , $SUNICODETYPE , $PUNICODE , "int" , - 1 , "struct*" , $TMULTIBYTE , "int" , $ARESULT [0 ] , "ptr" , 0 , "ptr" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $BRETSTRING THEN RETURN DLLSTRUCTGETDATA ($TMULTIBYTE , 1 )
RETURN $TMULTIBYTE
ENDFUNC
FUNC _WINAPI_WINDOWFROMPOINT (BYREF $TPOINT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "WindowFromPoint" , "struct" , $TPOINT )
IF @ERROR THEN RETURN SETERROR (1 , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_WRITECONSOLE ($HCONSOLE , $STEXT )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "WriteConsoleW" , "handle" , $HCONSOLE , "wstr" , $STEXT , "dword" , STRINGLEN ($STEXT ) , "dword*" , 0 , "ptr" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_WRITEFILE ($HFILE , $PBUFFER , $ITOWRITE , BYREF $IWRITTEN , $POVERLAPPED = 0 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "WriteFile" , "handle" , $HFILE , "ptr" , $PBUFFER , "dword" , $ITOWRITE , "dword*" , 0 , "ptr" , $POVERLAPPED )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
$IWRITTEN = $ARESULT [4 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_WRITEPROCESSMEMORY ($HPROCESS , $PBASEADDRESS , $PBUFFER , $ISIZE , BYREF $IWRITTEN , $SBUFFER = "ptr" )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "WriteProcessMemory" , "handle" , $HPROCESS , "ptr" , $PBASEADDRESS , $SBUFFER , $PBUFFER , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
$IWRITTEN = $ARESULT [5 ]
RETURN $ARESULT [0 ]
ENDFUNC
GLOBAL CONST $_UDF_GLOBALIDS_OFFSET = 2
GLOBAL CONST $_UDF_GLOBALID_MAX_WIN = 16
GLOBAL CONST $_UDF_STARTID = 10000
GLOBAL CONST $_UDF_GLOBALID_MAX_IDS = 55535
GLOBAL CONST $__UDFGUICONSTANT_WS_VISIBLE = 268435456
GLOBAL CONST $__UDFGUICONSTANT_WS_CHILD = 1073741824
GLOBAL $_UDF_GLOBALIDS_USED [$_UDF_GLOBALID_MAX_WIN ] [$_UDF_GLOBALID_MAX_IDS + $_UDF_GLOBALIDS_OFFSET + 1 ]
FUNC __UDF_GETNEXTGLOBALID ($HWND )
LOCAL $NCTRLID , $IUSEDINDEX = - 1 , $FALLUSED = TRUE
IF NOT WINEXISTS ($HWND ) THEN RETURN SETERROR (- 1 , - 1 , 0 )
FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN - 1
IF $_UDF_GLOBALIDS_USED [$IINDEX ] [0 ] <> 0 THEN
IF NOT WINEXISTS ($_UDF_GLOBALIDS_USED [$IINDEX ] [0 ] ) THEN
FOR $X = 0 TO UBOUND ($_UDF_GLOBALIDS_USED , 2 ) - 1
$_UDF_GLOBALIDS_USED [$IINDEX ] [$X ] = 0
NEXT
$_UDF_GLOBALIDS_USED [$IINDEX ] [1 ] = $_UDF_STARTID
$FALLUSED = FALSE
ENDIF
ENDIF
NEXT
FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN - 1
IF $_UDF_GLOBALIDS_USED [$IINDEX ] [0 ] = $HWND THEN
$IUSEDINDEX = $IINDEX
EXITLOOP
ENDIF
NEXT
IF $IUSEDINDEX = - 1 THEN
FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN - 1
IF $_UDF_GLOBALIDS_USED [$IINDEX ] [0 ] = 0 THEN
$_UDF_GLOBALIDS_USED [$IINDEX ] [0 ] = $HWND
$_UDF_GLOBALIDS_USED [$IINDEX ] [1 ] = $_UDF_STARTID
$FALLUSED = FALSE
$IUSEDINDEX = $IINDEX
EXITLOOP
ENDIF
NEXT
ENDIF
IF $IUSEDINDEX = - 1 AND $FALLUSED THEN RETURN SETERROR (16 , 0 , 0 )
IF $_UDF_GLOBALIDS_USED [$IUSEDINDEX ] [1 ] = $_UDF_STARTID + $_UDF_GLOBALID_MAX_IDS THEN
FOR $IIDINDEX = $_UDF_GLOBALIDS_OFFSET TO UBOUND ($_UDF_GLOBALIDS_USED , 2 ) - 1
IF $_UDF_GLOBALIDS_USED [$IUSEDINDEX ] [$IIDINDEX ] = 0 THEN
$NCTRLID = ($IIDINDEX - $_UDF_GLOBALIDS_OFFSET ) + 10000
$_UDF_GLOBALIDS_USED [$IUSEDINDEX ] [$IIDINDEX ] = $NCTRLID
RETURN $NCTRLID
ENDIF
NEXT
RETURN SETERROR (- 1 , $_UDF_GLOBALID_MAX_IDS , 0 )
ENDIF
$NCTRLID = $_UDF_GLOBALIDS_USED [$IUSEDINDEX ] [1 ]
$_UDF_GLOBALIDS_USED [$IUSEDINDEX ] [1 ] += 1
$_UDF_GLOBALIDS_USED [$IUSEDINDEX ] [($NCTRLID - 10000 ) + $_UDF_GLOBALIDS_OFFSET ] = $NCTRLID
RETURN $NCTRLID
ENDFUNC
FUNC __UDF_FREEGLOBALID ($HWND , $IGLOBALID )
IF $IGLOBALID - $_UDF_STARTID < 0 OR $IGLOBALID - $_UDF_STARTID > $_UDF_GLOBALID_MAX_IDS THEN RETURN SETERROR (- 1 , 0 , FALSE )
FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN - 1
IF $_UDF_GLOBALIDS_USED [$IINDEX ] [0 ] = $HWND THEN
FOR $X = $_UDF_GLOBALIDS_OFFSET TO UBOUND ($_UDF_GLOBALIDS_USED , 2 ) - 1
IF $_UDF_GLOBALIDS_USED [$IINDEX ] [$X ] = $IGLOBALID THEN
$_UDF_GLOBALIDS_USED [$IINDEX ] [$X ] = 0
RETURN TRUE
ENDIF
NEXT
RETURN SETERROR (- 3 , 0 , FALSE )
ENDIF
NEXT
RETURN SETERROR (- 2 , 0 , FALSE )
ENDFUNC
FUNC __UDF_DEBUGPRINT ($STEXT , $ILINE = @SCRIPTLINENUMBER , $ERR = @ERROR , $EXT = @EXTENDED )
CONSOLEWRITE ("!===========================================================" & @CRLF & "+======================================================" & @CRLF & "-->Line(" & STRINGFORMAT ("%04d" , $ILINE ) & "):" & @TAB & $STEXT & @CRLF & "+======================================================" & @CRLF )
RETURN SETERROR ($ERR , $EXT , 1 )
ENDFUNC
FUNC __UDF_VALIDATECLASSNAME ($HWND , $SCLASSNAMES )
__UDF_DEBUGPRINT ("This is for debugging only, set the debug variable to false before submitting" )
IF _WINAPI_ISCLASSNAME ($HWND , $SCLASSNAMES ) THEN RETURN TRUE
LOCAL $SSEPARATOR = OPT ("GUIDataSeparatorChar" )
$SCLASSNAMES = STRINGREPLACE ($SCLASSNAMES , $SSEPARATOR , "," )
__UDF_DEBUGPRINT ("Invalid Class Type(s):" & @LF & @TAB & "Expecting Type(s): " & $SCLASSNAMES & @LF & @TAB & "Received Type : " & _WINAPI_GETCLASSNAME ($HWND ) )
EXIT
ENDFUNC
GLOBAL $_GHBUTTONLASTWND
GLOBAL $DEBUG_BTN = FALSE
GLOBAL CONST $TAGBUTTON_IMAGELIST = "ptr ImageList;" & $TAGRECT & ";uint Align"
GLOBAL CONST $TAGBUTTON_SPLITINFO = "uint mask;handle himlGlyph;uint uSplitStyle;" & $TAGSIZE
GLOBAL CONST $__BUTTONCONSTANT_CLASSNAME = "Button"
GLOBAL CONST $__BUTTONCONSTANT_GWL_STYLE = 4294967280
GLOBAL CONST $__BUTTONCONSTANT_LR_LOADFROMFILE = 16
GLOBAL CONST $__BUTTONCONSTANT_LR_CREATEDIBSECTION = 8192
GLOBAL CONST $__BUTTONCONSTANT_WS_TABSTOP = 65536
GLOBAL CONST $__BUTTONCONSTANT_WM_SETFONT = 48
GLOBAL CONST $__BUTTONCONSTANT_DEFAULT_GUI_FONT = 17
FUNC _GUICTRLBUTTON_CLICK ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
_SENDMESSAGE ($HWND , $BM_CLICK )
ENDFUNC
FUNC _GUICTRLBUTTON_CREATE ($HWND , $STEXT , $IX , $IY , $IWIDTH , $IHEIGHT , $ISTYLE = - 1 , $IEXSTYLE = - 1 )
IF NOT ISHWND ($HWND ) THEN
RETURN SETERROR (1 , 0 , 0 )
ENDIF
IF NOT ISSTRING ($STEXT ) THEN
RETURN SETERROR (2 , 0 , 0 )
ENDIF
LOCAL $IFORCEDSTYLE = BITOR ($__BUTTONCONSTANT_WS_TABSTOP , $__UDFGUICONSTANT_WS_VISIBLE , $__UDFGUICONSTANT_WS_CHILD , $BS_NOTIFY )
IF $ISTYLE = - 1 THEN
$ISTYLE = $IFORCEDSTYLE
ELSE
$ISTYLE = BITOR ($ISTYLE , $IFORCEDSTYLE )
ENDIF
IF $IEXSTYLE = - 1 THEN $IEXSTYLE = 0
LOCAL $NCTRLID = __UDF_GETNEXTGLOBALID ($HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $HBUTTON = _WINAPI_CREATEWINDOWEX ($IEXSTYLE , $__BUTTONCONSTANT_CLASSNAME , $STEXT , $ISTYLE , $IX , $IY , $IWIDTH , $IHEIGHT , $HWND , $NCTRLID )
_SENDMESSAGE ($HBUTTON , $__BUTTONCONSTANT_WM_SETFONT , _WINAPI_GETSTOCKOBJECT ($__BUTTONCONSTANT_DEFAULT_GUI_FONT ) , TRUE )
RETURN $HBUTTON
ENDFUNC
FUNC _GUICTRLBUTTON_DESTROY (BYREF $HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT _WINAPI_ISCLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME ) THEN RETURN SETERROR (2 , 2 , FALSE )
LOCAL $DESTROYED = 0
IF ISHWND ($HWND ) THEN
IF _WINAPI_INPROCESS ($HWND , $_GHBUTTONLASTWND ) THEN
LOCAL $NCTRLID = _WINAPI_GETDLGCTRLID ($HWND )
LOCAL $HPARENT = _WINAPI_GETPARENT ($HWND )
$DESTROYED = _WINAPI_DESTROYWINDOW ($HWND )
LOCAL $IRET = __UDF_FREEGLOBALID ($HPARENT , $NCTRLID )
IF NOT $IRET THEN
ENDIF
ELSE
RETURN SETERROR (1 , 1 , FALSE )
ENDIF
ELSE
$DESTROYED = GUICTRLDELETE ($HWND )
ENDIF
IF $DESTROYED THEN $HWND = 0
RETURN $DESTROYED <> 0
ENDFUNC
FUNC _GUICTRLBUTTON_ENABLE ($HWND , $FENABLE = TRUE )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
IF _WINAPI_ISCLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME ) THEN RETURN _WINAPI_ENABLEWINDOW ($HWND , $FENABLE ) = $FENABLE
ENDFUNC
FUNC _GUICTRLBUTTON_GETCHECK ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
RETURN _SENDMESSAGE ($HWND , $BM_GETCHECK )
ENDFUNC
FUNC _GUICTRLBUTTON_GETFOCUS ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
IF _WINAPI_ISCLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME ) THEN RETURN _WINAPI_GETFOCUS () = $HWND
ENDFUNC
FUNC _GUICTRLBUTTON_GETIDEALSIZE ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $TSIZE = DLLSTRUCTCREATE ($TAGSIZE ) , $ASIZE [2 ]
LOCAL $IRET = _SENDMESSAGE ($HWND , $BCM_GETIDEALSIZE , 0 , $TSIZE , 0 , "wparam" , "struct*" )
IF NOT $IRET THEN RETURN SETERROR (- 1 , - 1 , $ASIZE )
$ASIZE [0 ] = DLLSTRUCTGETDATA ($TSIZE , "X" )
$ASIZE [1 ] = DLLSTRUCTGETDATA ($TSIZE , "Y" )
RETURN $ASIZE
ENDFUNC
FUNC _GUICTRLBUTTON_GETIMAGE ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $IRET = _SENDMESSAGE ($HWND , $BM_GETIMAGE , 0 , 0 , 0 , "wparam" , "lparam" , "hwnd" )
IF $IRET <> 0 THEN RETURN $IRET
$IRET = _SENDMESSAGE ($HWND , $BM_GETIMAGE , 1 , 0 , 0 , "wparam" , "lparam" , "hwnd" )
IF $IRET = 0 THEN RETURN 0
RETURN $IRET
ENDFUNC
FUNC _GUICTRLBUTTON_GETIMAGELIST ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $TBUTTON_IMAGELIST = DLLSTRUCTCREATE ($TAGBUTTON_IMAGELIST ) , $AIMAGELIST [6 ]
IF NOT _SENDMESSAGE ($HWND , $BCM_GETIMAGELIST , 0 , $TBUTTON_IMAGELIST , 0 , "wparam" , "struct*" ) THEN RETURN SETERROR (- 1 , - 1 , $AIMAGELIST )
$AIMAGELIST [0 ] = DLLSTRUCTGETDATA ($TBUTTON_IMAGELIST , "ImageList" )
$AIMAGELIST [1 ] = DLLSTRUCTGETDATA ($TBUTTON_IMAGELIST , "Left" )
$AIMAGELIST [2 ] = DLLSTRUCTGETDATA ($TBUTTON_IMAGELIST , "Right" )
$AIMAGELIST [3 ] = DLLSTRUCTGETDATA ($TBUTTON_IMAGELIST , "Top" )
$AIMAGELIST [4 ] = DLLSTRUCTGETDATA ($TBUTTON_IMAGELIST , "Bottom" )
$AIMAGELIST [5 ] = DLLSTRUCTGETDATA ($TBUTTON_IMAGELIST , "Align" )
RETURN $AIMAGELIST
ENDFUNC
FUNC _GUICTRLBUTTON_GETNOTE ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $ILEN = _GUICTRLBUTTON_GETNOTELENGTH ($HWND ) + 1
LOCAL $TNOTE = DLLSTRUCTCREATE ("wchar Note[" & $ILEN & "]" )
LOCAL $TLEN = DLLSTRUCTCREATE ("dword" )
DLLSTRUCTSETDATA ($TLEN , 1 , $ILEN )
IF NOT _SENDMESSAGE ($HWND , $BCM_GETNOTE , $TLEN , $TNOTE , 0 , "struct*" , "struct*" ) THEN RETURN SETERROR (- 1 , 0 , "" )
RETURN _WINAPI_WIDECHARTOMULTIBYTE ($TNOTE )
ENDFUNC
FUNC _GUICTRLBUTTON_GETNOTELENGTH ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
RETURN _SENDMESSAGE ($HWND , $BCM_GETNOTELENGTH )
ENDFUNC
FUNC _GUICTRLBUTTON_GETSPLITINFO ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $TSPLITINFO = DLLSTRUCTCREATE ($TAGBUTTON_SPLITINFO ) , $AINFO [4 ]
DLLSTRUCTSETDATA ($TSPLITINFO , "mask" , BITOR ($BCSIF_GLYPH , $BCSIF_IMAGE , $BCSIF_SIZE , $BCSIF_STYLE ) )
IF NOT _SENDMESSAGE ($HWND , $BCM_GETSPLITINFO , 0 , $TSPLITINFO , 0 , "wparam" , "struct*" ) THEN RETURN SETERROR (- 1 , 0 , $AINFO )
$AINFO [0 ] = DLLSTRUCTGETDATA ($TSPLITINFO , "himlGlyph" )
$AINFO [1 ] = DLLSTRUCTGETDATA ($TSPLITINFO , "uSplitStyle" )
$AINFO [2 ] = DLLSTRUCTGETDATA ($TSPLITINFO , "X" )
$AINFO [3 ] = DLLSTRUCTGETDATA ($TSPLITINFO , "Y" )
RETURN $AINFO
ENDFUNC
FUNC _GUICTRLBUTTON_GETSTATE ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
RETURN _SENDMESSAGE ($HWND , $BM_GETSTATE )
ENDFUNC
FUNC _GUICTRLBUTTON_GETTEXT ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
IF _WINAPI_ISCLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME ) THEN RETURN _WINAPI_GETWINDOWTEXT ($HWND )
RETURN ""
ENDFUNC
FUNC _GUICTRLBUTTON_GETTEXTMARGIN ($HWND )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT ) , $ARECT [4 ]
IF NOT _SENDMESSAGE ($HWND , $BCM_GETTEXTMARGIN , 0 , $TRECT , 0 , "wparam" , "struct*" ) THEN RETURN SETERROR (- 1 , - 1 , $ARECT )
$ARECT [0 ] = DLLSTRUCTGETDATA ($TRECT , "Left" )
$ARECT [1 ] = DLLSTRUCTGETDATA ($TRECT , "Top" )
$ARECT [2 ] = DLLSTRUCTGETDATA ($TRECT , "Right" )
$ARECT [3 ] = DLLSTRUCTGETDATA ($TRECT , "Bottom" )
RETURN $ARECT
ENDFUNC
FUNC _GUICTRLBUTTON_SETCHECK ($HWND , $ISTATE = $BST_CHECKED )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
_SENDMESSAGE ($HWND , $BM_SETCHECK , $ISTATE )
ENDFUNC
FUNC _GUICTRLBUTTON_SETDONTCLICK ($HWND , $FSTATE = TRUE )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
_SENDMESSAGE ($HWND , $BM_SETDONTCLICK , $FSTATE )
ENDFUNC
FUNC _GUICTRLBUTTON_SETDROPDOWNSTATE ($HWND , $FSTATE = TRUE )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
RETURN _SENDMESSAGE ($HWND , $BCM_SETDROPDOWNSTATE , $FSTATE ) <> 0
ENDFUNC
FUNC _GUICTRLBUTTON_SETFOCUS ($HWND , $FFOCUS = TRUE )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
IF _WINAPI_ISCLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME ) THEN
IF $FFOCUS THEN
RETURN _WINAPI_SETFOCUS ($HWND ) <> 0
ELSE
RETURN _WINAPI_SETFOCUS (_WINAPI_GETPARENT ($HWND ) ) <> 0
ENDIF
ENDIF
ENDFUNC
FUNC _GUICTRLBUTTON_SETIMAGE ($HWND , $SIMAGEFILE , $NICONID = - 1 , $FLARGE = FALSE )
LOCAL $HIMAGE , $HPREVIMAGE
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
IF STRINGUPPER (STRINGMID ($SIMAGEFILE , STRINGLEN ($SIMAGEFILE ) - 2 ) ) = "BMP" THEN
IF BITAND (_WINAPI_GETWINDOWLONG ($HWND , $__BUTTONCONSTANT_GWL_STYLE ) , $BS_BITMAP ) = $BS_BITMAP THEN
$HIMAGE = _WINAPI_LOADIMAGE (0 , $SIMAGEFILE , 0 , 0 , 0 , BITOR ($__BUTTONCONSTANT_LR_LOADFROMFILE , $__BUTTONCONSTANT_LR_CREATEDIBSECTION ) )
IF NOT $HIMAGE THEN RETURN SETERROR (- 1 , - 1 , FALSE )
$HPREVIMAGE = _SENDMESSAGE ($HWND , $BM_SETIMAGE , 0 , $HIMAGE )
IF $HPREVIMAGE THEN
IF NOT _WINAPI_DELETEOBJECT ($HPREVIMAGE ) THEN _WINAPI_DESTROYICON ($HPREVIMAGE )
ENDIF
_WINAPI_UPDATEWINDOW ($HWND )
RETURN TRUE
ENDIF
ELSE
IF $NICONID = - 1 THEN
$HIMAGE = _WINAPI_LOADIMAGE (0 , $SIMAGEFILE , 1 , 0 , 0 , BITOR ($__BUTTONCONSTANT_LR_LOADFROMFILE , $__BUTTONCONSTANT_LR_CREATEDIBSECTION ) )
IF NOT $HIMAGE THEN RETURN SETERROR (- 1 , - 1 , FALSE )
$HPREVIMAGE = _SENDMESSAGE ($HWND , $BM_SETIMAGE , 1 , $HIMAGE )
IF $HPREVIMAGE THEN
IF NOT _WINAPI_DELETEOBJECT ($HPREVIMAGE ) THEN _WINAPI_DESTROYICON ($HPREVIMAGE )
ENDIF
_WINAPI_UPDATEWINDOW ($HWND )
RETURN TRUE
ELSE
LOCAL $TICON = DLLSTRUCTCREATE ("handle Handle" )
LOCAL $IRET
IF $FLARGE THEN
$IRET = _WINAPI_EXTRACTICONEX ($SIMAGEFILE , $NICONID , $TICON , 0 , 1 )
ELSE
$IRET = _WINAPI_EXTRACTICONEX ($SIMAGEFILE , $NICONID , 0 , $TICON , 1 )
ENDIF
IF NOT $IRET THEN RETURN SETERROR (- 1 , - 1 , FALSE )
$HPREVIMAGE = _SENDMESSAGE ($HWND , $BM_SETIMAGE , 1 , DLLSTRUCTGETDATA ($TICON , "Handle" ) )
IF $HPREVIMAGE THEN
IF NOT _WINAPI_DELETEOBJECT ($HPREVIMAGE ) THEN _WINAPI_DESTROYICON ($HPREVIMAGE )
ENDIF
_WINAPI_UPDATEWINDOW ($HWND )
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC _GUICTRLBUTTON_SETIMAGELIST ($HWND , $HIMAGE , $NALIGN = 0 , $ILEFT = 1 , $ITOP = 1 , $IRIGHT = 1 , $IBOTTOM = 1 )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
IF $NALIGN < 0 OR $NALIGN > 4 THEN $NALIGN = 0
LOCAL $TBUTTON_IMAGELIST = DLLSTRUCTCREATE ($TAGBUTTON_IMAGELIST )
DLLSTRUCTSETDATA ($TBUTTON_IMAGELIST , "ImageList" , $HIMAGE )
DLLSTRUCTSETDATA ($TBUTTON_IMAGELIST , "Left" , $ILEFT )
DLLSTRUCTSETDATA ($TBUTTON_IMAGELIST , "Top" , $ITOP )
DLLSTRUCTSETDATA ($TBUTTON_IMAGELIST , "Right" , $IRIGHT )
DLLSTRUCTSETDATA ($TBUTTON_IMAGELIST , "Bottom" , $IBOTTOM )
DLLSTRUCTSETDATA ($TBUTTON_IMAGELIST , "Align" , $NALIGN )
LOCAL $FENABLED = _GUICTRLBUTTON_ENABLE ($HWND , FALSE )
LOCAL $IRET = _SENDMESSAGE ($HWND , $BCM_SETIMAGELIST , 0 , $TBUTTON_IMAGELIST , 0 , "wparam" , "struct*" ) <> 0
_GUICTRLBUTTON_ENABLE ($HWND )
IF NOT $FENABLED THEN _GUICTRLBUTTON_ENABLE ($HWND , FALSE )
RETURN $IRET
ENDFUNC
FUNC _GUICTRLBUTTON_SETNOTE ($HWND , $SNOTE )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $TNOTE = _WINAPI_MULTIBYTETOWIDECHAR ($SNOTE )
RETURN _SENDMESSAGE ($HWND , $BCM_SETNOTE , 0 , $TNOTE , 0 , "wparam" , "struct*" ) <> 0
ENDFUNC
FUNC _GUICTRLBUTTON_SETSHIELD ($HWND , $FREQUIRED = TRUE )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
RETURN _SENDMESSAGE ($HWND , $BCM_SETSHIELD , 0 , $FREQUIRED ) = 1
ENDFUNC
FUNC _GUICTRLBUTTON_SETSIZE ($HWND , $IWIDTH , $IHEIGHT )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
IF NOT _WINAPI_ISCLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME ) THEN RETURN SETERROR (- 1 , - 1 , FALSE )
LOCAL $HPARENT = _WINAPI_GETPARENT ($HWND )
IF NOT $HPARENT THEN RETURN SETERROR (- 1 , - 1 , FALSE )
LOCAL $APOS = WINGETPOS ($HWND )
IF NOT ISARRAY ($APOS ) THEN RETURN SETERROR (- 1 , - 1 , FALSE )
LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT )
DLLSTRUCTSETDATA ($TPOINT , "X" , $APOS [0 ] )
DLLSTRUCTSETDATA ($TPOINT , "Y" , $APOS [1 ] )
IF NOT _WINAPI_SCREENTOCLIENT ($HPARENT , $TPOINT ) THEN RETURN SETERROR (- 1 , - 1 , FALSE )
LOCAL $IRET = WINMOVE ($HWND , "" , DLLSTRUCTGETDATA ($TPOINT , "X" ) , DLLSTRUCTGETDATA ($TPOINT , "Y" ) , $IWIDTH , $IHEIGHT )
RETURN SETERROR ($IRET - 1 , $IRET - 1 , $IRET <> 0 )
ENDFUNC
FUNC _GUICTRLBUTTON_SETSPLITINFO ($HWND , $HIMLGLYPH = - 1 , $ISPLITSTYLE = $BCSS_ALIGNLEFT , $IWIDTH = 0 , $IHEIGHT = 0 )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $TSPLITINFO = DLLSTRUCTCREATE ($TAGBUTTON_SPLITINFO ) , $IMASK = 0
IF $HIMLGLYPH <> - 1 THEN
$IMASK = BITOR ($IMASK , $BCSIF_GLYPH )
DLLSTRUCTSETDATA ($TSPLITINFO , "himlGlyph" , $HIMLGLYPH )
ENDIF
$IMASK = BITOR ($IMASK , $BCSIF_STYLE )
IF BITAND ($ISPLITSTYLE , $BCSS_IMAGE ) = $BCSS_IMAGE THEN $IMASK = BITOR ($IMASK , $BCSIF_IMAGE )
DLLSTRUCTSETDATA ($TSPLITINFO , "uSplitStyle" , $ISPLITSTYLE )
IF $IWIDTH > 0 OR $IHEIGHT > 0 THEN
$IMASK = BITOR ($IMASK , $BCSIF_SIZE )
DLLSTRUCTSETDATA ($TSPLITINFO , "X" , $IWIDTH )
DLLSTRUCTSETDATA ($TSPLITINFO , "Y" , $IHEIGHT )
ENDIF
DLLSTRUCTSETDATA ($TSPLITINFO , "mask" , $IMASK )
RETURN _SENDMESSAGE ($HWND , $BCM_SETSPLITINFO , 0 , $TSPLITINFO , 0 , "wparam" , "struct*" ) <> 0
ENDFUNC
FUNC _GUICTRLBUTTON_SETSTATE ($HWND , $FHIGHLIGHTED = TRUE )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
_SENDMESSAGE ($HWND , $BM_SETSTATE , $FHIGHLIGHTED )
ENDFUNC
FUNC _GUICTRLBUTTON_SETSTYLE ($HWND , $ISTYLE )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
_SENDMESSAGE ($HWND , $BM_SETSTYLE , $ISTYLE , TRUE )
_WINAPI_UPDATEWINDOW ($HWND )
ENDFUNC
FUNC _GUICTRLBUTTON_SETTEXT ($HWND , $STEXT )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
IF _WINAPI_ISCLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME ) THEN RETURN _WINAPI_SETWINDOWTEXT ($HWND , $STEXT )
ENDFUNC
FUNC _GUICTRLBUTTON_SETTEXTMARGIN ($HWND , $ILEFT = 1 , $ITOP = 1 , $IRIGHT = 1 , $IBOTTOM = 1 )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
DLLSTRUCTSETDATA ($TRECT , "Left" , $ILEFT )
DLLSTRUCTSETDATA ($TRECT , "Top" , $ITOP )
DLLSTRUCTSETDATA ($TRECT , "Right" , $IRIGHT )
DLLSTRUCTSETDATA ($TRECT , "Bottom" , $IBOTTOM )
RETURN _SENDMESSAGE ($HWND , $BCM_SETTEXTMARGIN , 0 , $TRECT , 0 , "wparam" , "struct*" ) <> 0
ENDFUNC
FUNC _GUICTRLBUTTON_SHOW ($HWND , $FSHOW = TRUE )
IF $DEBUG_BTN THEN __UDF_VALIDATECLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
IF _WINAPI_ISCLASSNAME ($HWND , $__BUTTONCONSTANT_CLASSNAME ) THEN
IF $FSHOW THEN
RETURN _WINAPI_SHOWWINDOW ($HWND , @SW_SHOW )
ELSE
RETURN _WINAPI_SHOWWINDOW ($HWND , @SW_HIDE )
ENDIF
ENDIF
ENDFUNC
GLOBAL CONST $CB_ERR = - 1
GLOBAL CONST $CB_ERRATTRIBUTE = - 3
GLOBAL CONST $CB_ERRREQUIRED = - 4
GLOBAL CONST $CB_ERRSPACE = - 2
GLOBAL CONST $CB_OKAY = 0
GLOBAL CONST $STATE_SYSTEM_INVISIBLE = 32768
GLOBAL CONST $STATE_SYSTEM_PRESSED = 8
GLOBAL CONST $CBS_AUTOHSCROLL = 64
GLOBAL CONST $CBS_DISABLENOSCROLL = 2048
GLOBAL CONST $CBS_DROPDOWN = 2
GLOBAL CONST $CBS_DROPDOWNLIST = 3
GLOBAL CONST $CBS_HASSTRINGS = 512
GLOBAL CONST $CBS_LOWERCASE = 16384
GLOBAL CONST $CBS_NOINTEGRALHEIGHT = 1024
GLOBAL CONST $CBS_OEMCONVERT = 128
GLOBAL CONST $CBS_OWNERDRAWFIXED = 16
GLOBAL CONST $CBS_OWNERDRAWVARIABLE = 32
GLOBAL CONST $CBS_SIMPLE = 1
GLOBAL CONST $CBS_SORT = 256
GLOBAL CONST $CBS_UPPERCASE = 8192
GLOBAL CONST $CBM_FIRST = 5888
GLOBAL CONST $CB_ADDSTRING = 323
GLOBAL CONST $CB_DELETESTRING = 324
GLOBAL CONST $CB_DIR = 325
GLOBAL CONST $CB_FINDSTRING = 332
GLOBAL CONST $CB_FINDSTRINGEXACT = 344
GLOBAL CONST $CB_GETCOMBOBOXINFO = 356
GLOBAL CONST $CB_GETCOUNT = 326
GLOBAL CONST $CB_GETCUEBANNER = ($CBM_FIRST + 4 )
GLOBAL CONST $CB_GETCURSEL = 327
GLOBAL CONST $CB_GETDROPPEDCONTROLRECT = 338
GLOBAL CONST $CB_GETDROPPEDSTATE = 343
GLOBAL CONST $CB_GETDROPPEDWIDTH = 351
GLOBAL CONST $CB_GETEDITSEL = 320
GLOBAL CONST $CB_GETEXTENDEDUI = 342
GLOBAL CONST $CB_GETHORIZONTALEXTENT = 349
GLOBAL CONST $CB_GETITEMDATA = 336
GLOBAL CONST $CB_GETITEMHEIGHT = 340
GLOBAL CONST $CB_GETLBTEXT = 328
GLOBAL CONST $CB_GETLBTEXTLEN = 329
GLOBAL CONST $CB_GETLOCALE = 346
GLOBAL CONST $CB_GETMINVISIBLE = 5890
GLOBAL CONST $CB_GETTOPINDEX = 347
GLOBAL CONST $CB_INITSTORAGE = 353
GLOBAL CONST $CB_LIMITTEXT = 321
GLOBAL CONST $CB_RESETCONTENT = 331
GLOBAL CONST $CB_INSERTSTRING = 330
GLOBAL CONST $CB_SELECTSTRING = 333
GLOBAL CONST $CB_SETCUEBANNER = ($CBM_FIRST + 3 )
GLOBAL CONST $CB_SETCURSEL = 334
GLOBAL CONST $CB_SETDROPPEDWIDTH = 352
GLOBAL CONST $CB_SETEDITSEL = 322
GLOBAL CONST $CB_SETEXTENDEDUI = 341
GLOBAL CONST $CB_SETHORIZONTALEXTENT = 350
GLOBAL CONST $CB_SETITEMDATA = 337
GLOBAL CONST $CB_SETITEMHEIGHT = 339
GLOBAL CONST $CB_SETLOCALE = 345
GLOBAL CONST $CB_SETMINVISIBLE = 5889
GLOBAL CONST $CB_SETTOPINDEX = 348
GLOBAL CONST $CB_SHOWDROPDOWN = 335
GLOBAL CONST $CBN_CLOSEUP = 8
GLOBAL CONST $CBN_DBLCLK = 2
GLOBAL CONST $CBN_DROPDOWN = 7
GLOBAL CONST $CBN_EDITCHANGE = 5
GLOBAL CONST $CBN_EDITUPDATE = 6
GLOBAL CONST $CBN_ERRSPACE = (- 1 )
GLOBAL CONST $CBN_KILLFOCUS = 4
GLOBAL CONST $CBN_SELCHANGE = 1
GLOBAL CONST $CBN_SELENDCANCEL = 10
GLOBAL CONST $CBN_SELENDOK = 9
GLOBAL CONST $CBN_SETFOCUS = 3
GLOBAL CONST $CBES_EX_CASESENSITIVE = 16
GLOBAL CONST $CBES_EX_NOEDITIMAGE = 1
GLOBAL CONST $CBES_EX_NOEDITIMAGEINDENT = 2
GLOBAL CONST $CBES_EX_NOSIZELIMIT = 8
GLOBAL CONST $__COMBOBOXCONSTANT_WM_USER = 1024
GLOBAL CONST $CBEM_DELETEITEM = $CB_DELETESTRING
GLOBAL CONST $CBEM_GETCOMBOCONTROL = ($__COMBOBOXCONSTANT_WM_USER + 6 )
GLOBAL CONST $CBEM_GETEDITCONTROL = ($__COMBOBOXCONSTANT_WM_USER + 7 )
GLOBAL CONST $CBEM_GETEXSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 9 )
GLOBAL CONST $CBEM_GETEXTENDEDSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 9 )
GLOBAL CONST $CBEM_GETIMAGELIST = ($__COMBOBOXCONSTANT_WM_USER + 3 )
GLOBAL CONST $CBEM_GETITEMA = ($__COMBOBOXCONSTANT_WM_USER + 4 )
GLOBAL CONST $CBEM_GETITEMW = ($__COMBOBOXCONSTANT_WM_USER + 13 )
GLOBAL CONST $CBEM_GETUNICODEFORMAT = 8192 + 6
GLOBAL CONST $CBEM_HASEDITCHANGED = ($__COMBOBOXCONSTANT_WM_USER + 10 )
GLOBAL CONST $CBEM_INSERTITEMA = ($__COMBOBOXCONSTANT_WM_USER + 1 )
GLOBAL CONST $CBEM_INSERTITEMW = ($__COMBOBOXCONSTANT_WM_USER + 11 )
GLOBAL CONST $CBEM_SETEXSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 8 )
GLOBAL CONST $CBEM_SETEXTENDEDSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 14 )
GLOBAL CONST $CBEM_SETIMAGELIST = ($__COMBOBOXCONSTANT_WM_USER + 2 )
GLOBAL CONST $CBEM_SETITEMA = ($__COMBOBOXCONSTANT_WM_USER + 5 )
GLOBAL CONST $CBEM_SETITEMW = ($__COMBOBOXCONSTANT_WM_USER + 12 )
GLOBAL CONST $CBEM_SETUNICODEFORMAT = 8192 + 5
GLOBAL CONST $CBEM_SETWINDOWTHEME = 8192 + 11
GLOBAL CONST $CBEN_FIRST = (- 800 )
GLOBAL CONST $CBEN_LAST = (- 830 )
GLOBAL CONST $CBEN_BEGINEDIT = ($CBEN_FIRST - 4 )
GLOBAL CONST $CBEN_DELETEITEM = ($CBEN_FIRST - 2 )
GLOBAL CONST $CBEN_DRAGBEGINA = ($CBEN_FIRST - 8 )
GLOBAL CONST $CBEN_DRAGBEGINW = ($CBEN_FIRST - 9 )
GLOBAL CONST $CBEN_ENDEDITA = ($CBEN_FIRST - 5 )
GLOBAL CONST $CBEN_ENDEDITW = ($CBEN_FIRST - 6 )
GLOBAL CONST $CBEN_GETDISPINFO = ($CBEN_FIRST - 0 )
GLOBAL CONST $CBEN_GETDISPINFOA = ($CBEN_FIRST - 0 )
GLOBAL CONST $CBEN_GETDISPINFOW = ($CBEN_FIRST - 7 )
GLOBAL CONST $CBEN_INSERTITEM = ($CBEN_FIRST - 1 )
GLOBAL CONST $CBEIF_DI_SETITEM = 268435456
GLOBAL CONST $CBEIF_IMAGE = 2
GLOBAL CONST $CBEIF_INDENT = 16
GLOBAL CONST $CBEIF_LPARAM = 32
GLOBAL CONST $CBEIF_OVERLAY = 8
GLOBAL CONST $CBEIF_SELECTEDIMAGE = 4
GLOBAL CONST $CBEIF_TEXT = 1
GLOBAL CONST $__COMBOBOXCONSTANT_WS_VSCROLL = 2097152
GLOBAL CONST $GUI_SS_DEFAULT_COMBO = BITOR ($CBS_DROPDOWN , $CBS_AUTOHSCROLL , $__COMBOBOXCONSTANT_WS_VSCROLL )
#Region Header
#EndRegion Header
#Region Global Variables
GLOBAL $AGCHL_CTRLS [1 ] [1 ]
GLOBAL $IGCHL_MOUSEHELDDOWN = 0
#EndRegion Global Variables
#Region Example
#EndRegion Example
#Region Public Functions
FUNC _GUICTRLHYPERLINK_CREATE ($STEXT , $ILEFT , $ITOP , $IWIDTH = - 1 , $IHEIGHT = - 1 , $ICOLOR = 255 , $IVISITEDCOLOR = 5577355 , $IACTION = - 1 , $SACTIONURL = "" , $STOOLTIP = "" , $HWND = 0 )
LOCAL $NID = GUICTRLCREATELABEL ($STEXT , $ILEFT , $ITOP , $IWIDTH , $IHEIGHT )
IF $NID THEN
GUICTRLSETFONT ($NID , - 1 , - 1 , 4 )
GUICTRLSETCOLOR ($NID , $ICOLOR )
GUICTRLSETCURSOR ($NID , 0 )
GUICTRLSETTIP ($NID , $STOOLTIP )
ENDIF
LOCAL $IPRECOUNT = $AGCHL_CTRLS [0 ] [0 ]
$AGCHL_CTRLS [0 ] [0 ] += 1
REDIM $AGCHL_CTRLS [$AGCHL_CTRLS [0 ] [0 ] + 1 ] [5 ]
$AGCHL_CTRLS [$AGCHL_CTRLS [0 ] [0 ] ] [0 ] = $HWND
$AGCHL_CTRLS [$AGCHL_CTRLS [0 ] [0 ] ] [1 ] = $NID
$AGCHL_CTRLS [$AGCHL_CTRLS [0 ] [0 ] ] [2 ] = $IACTION
$AGCHL_CTRLS [$AGCHL_CTRLS [0 ] [0 ] ] [3 ] = $SACTIONURL
$AGCHL_CTRLS [$AGCHL_CTRLS [0 ] [0 ] ] [4 ] = $IVISITEDCOLOR
IF $IPRECOUNT = 0 THEN
ADLIBREGISTER ("__GUICtrlHyperLink_Handler" , 10 )
ENDIF
RETURN $NID
ENDFUNC
FUNC _GUICTRLHYPERLINK_DELETE ($NCTRLID )
LOCAL $ATMP [1 ] [1 ] , $IRET = 0
FOR $I = 1 TO $AGCHL_CTRLS [0 ] [0 ]
IF $AGCHL_CTRLS [$I ] [1 ] = $NCTRLID THEN
$IRET = GUICTRLDELETE ($NCTRLID )
ELSE
$ATMP [0 ] [0 ] = + 1
REDIM $ATMP [$ATMP [0 ] [0 ] + 1 ] [5 ]
$ATMP [$ATMP [0 ] [0 ] ] [0 ] = $AGCHL_CTRLS [$I ] [0 ]
$ATMP [$ATMP [0 ] [0 ] ] [1 ] = $AGCHL_CTRLS [$I ] [1 ]
$ATMP [$ATMP [0 ] [0 ] ] [2 ] = $AGCHL_CTRLS [$I ] [2 ]
$ATMP [$ATMP [0 ] [0 ] ] [3 ] = $AGCHL_CTRLS [$I ] [3 ]
$ATMP [$ATMP [0 ] [0 ] ] [4 ] = $AGCHL_CTRLS [$I ] [4 ]
ENDIF
NEXT
$AGCHL_CTRLS = $ATMP
IF $AGCHL_CTRLS [0 ] [0 ] = 0 THEN
ADLIBUNREGISTER ("__GUICtrlHyperLink_Handler" )
ENDIF
RETURN $IRET
ENDFUNC
FUNC _GUICTRLHYPERLINK_SETDATA ($NCTRLID , $IDATA , $VNEWDATA )
IF $IDATA < 1 OR $IDATA > 3 THEN
RETURN SETERROR (1 , 0 , 0 )
ENDIF
$IDATA += 1
FOR $I = 1 TO $AGCHL_CTRLS [0 ] [0 ]
IF $AGCHL_CTRLS [$I ] [1 ] = $NCTRLID THEN
$AGCHL_CTRLS [$I ] [$IDATA ] = $VNEWDATA
RETURN 1
ENDIF
NEXT
RETURN 0
ENDFUNC
#EndRegion Public Functions
#Region Internal Functions
FUNC __GUICTRLHYPERLINK_HANDLER ()
LOCAL $HWND , $ICTRLID , $SACTIONURL , $IACTION = - 1 , $IVISITEDCOLOR = 5577355
LOCAL $ACURINFO
FOR $I = 1 TO $AGCHL_CTRLS [0 ] [0 ]
$HWND = $AGCHL_CTRLS [$I ] [0 ]
$ICTRLID = $AGCHL_CTRLS [$I ] [1 ]
$IACTION = $AGCHL_CTRLS [$I ] [2 ]
$SACTIONURL = $AGCHL_CTRLS [$I ] [3 ]
$IVISITEDCOLOR = $AGCHL_CTRLS [$I ] [4 ]
IF BITAND (GUICTRLGETSTATE ($ICTRLID ) , $GUI_DISABLE ) THEN
CONTINUELOOP
ENDIF
$ACURINFO = GUIGETCURSORINFO ($HWND )
IF NOT ISARRAY ($ACURINFO ) THEN
CONTINUELOOP
ENDIF
IF $IGCHL_MOUSEHELDDOWN AND $ACURINFO [2 ] = 0 AND WINACTIVE ($HWND ) THEN
$IGCHL_MOUSEHELDDOWN = 0
EXITLOOP
ENDIF
IF $ACURINFO [4 ] = 0 AND $ACURINFO [2 ] = 1 AND WINACTIVE ($HWND ) THEN
$IGCHL_MOUSEHELDDOWN = 1
EXITLOOP
ENDIF
IF NOT $IGCHL_MOUSEHELDDOWN AND $ACURINFO [4 ] = $ICTRLID AND $ACURINFO [2 ] = 1 AND WINACTIVE ($HWND ) THEN
WHILE ISARRAY ($ACURINFO ) AND $ACURINFO [2 ] = 1
$ACURINFO = GUIGETCURSORINFO ($HWND )
IF $ACURINFO [4 ] <> $ICTRLID THEN
GUISETCURSOR (7 , 1 , $HWND )
ELSE
GUISETCURSOR (2 , 0 , $HWND )
ENDIF
SLEEP (10 )
WEND
GUISETCURSOR (2 , 0 , $HWND )
IF ISARRAY ($ACURINFO ) AND $ACURINFO [2 ] = 0 AND $ACURINFO [4 ] = $ICTRLID THEN
$SACTIONURL = STRINGREPLACE ($SACTIONURL , "@THIS@" , $ICTRLID )
IF $SACTIONURL = "" THEN
$SACTIONURL = GUICTRLREAD ($ICTRLID )
ENDIF
IF $IACTION = 1 THEN
EXECUTE ($SACTIONURL )
ELSEIF $IACTION = - 1 THEN
SHELLEXECUTE ($SACTIONURL )
ENDIF
IF @ERROR = 0 AND $IVISITEDCOLOR THEN
GUICTRLSETCOLOR ($ICTRLID , $IVISITEDCOLOR )
ENDIF
RETURN
ENDIF
EXITLOOP
ENDIF
NEXT
ENDFUNC
#EndRegion Internal Functions
$WINLDPVER = "LDWin - v" & $VER & " - Chris Hall - 2010-" & @YEAR
IF ISADMIN () = 0 THEN
MSGBOX (16 , "Exiting" , "This program requires Local Admistrator rights" )
EXIT
ENDIF
FILEINSTALL ("tcpdump.exe" , @TEMPDIR & "\" , 1 )
FILEINSTALL ("donate.ico" , @TEMPDIR & "\" , 1 )
GUISETICON ("network.ico" )
$LDWINHELP = 99999
$DONATE = ""
$GOTIT = ""
$LOG = FILEOPEN (@TEMPDIR & "\LinkData.txt" , 2 )
$WBEMFLAGRETURNIMMEDIATELY = 16
$WBEMFLAGFORWARDONLY = 32
$COLITEMS = ""
$STRCOMPUTER = "localhost"
$OUTPUT = ""
$NIC_FRIEND = ""
$HARDWARE = ""
$IDATA = ""
SPLASHTEXTON ("Please Wait" , "Enumerating Network Cards via WMI..." , 300 , 50 )
$OBJWMISERVICE = OBJGET ("winmgmts:\\" & $STRCOMPUTER & "\root\CIMV2" )
$COLITEMS = $OBJWMISERVICE.ExecQuery ("SELECT * FROM Win32_NetworkAdapter" , "WQL" , $WBEMFLAGRETURNIMMEDIATELY + $WBEMFLAGFORWARDONLY )
IF ISOBJ ($COLITEMS ) THEN
FOR $OBJITEM IN $COLITEMS
FILEWRITELINE ($LOG , "[" & $OBJITEM.NetConnectionID & "]" )
FILEWRITELINE ($LOG , "ProductName=" & $OBJITEM.ProductName )
$VALUE = $OBJITEM.NetConnectionID
IF STRINGLEN ($VALUE ) > 1 THEN $OUTPUT = $OUTPUT & $VALUE & "|"
$COLITEMS2 = $OBJWMISERVICE.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration" , "WQL" , $WBEMFLAGRETURNIMMEDIATELY + $WBEMFLAGFORWARDONLY )
FOR $OBJITEM2 IN $COLITEMS2
IF $OBJITEM.Index = $OBJITEM2.Index THEN
FILEWRITELINE ($LOG , "SettingID=" & $OBJITEM2.SettingID )
FILEWRITELINE ($LOG , "IPAddress=" & $OBJITEM2.IPAddress (0 ) )
FILEWRITELINE ($LOG , "MACAddress=" & $OBJITEM2.MACAddress )
ENDIF
NEXT
NEXT
ELSE
MSGBOX (0 , "WMI Output" , "No WMI Objects Found for class: " & "Win32_NetworkAdapterConfiguration" )
ENDIF
SPLASHOFF ()
$GUI = GUICREATE ("Link Discovery for Windows" , 550 , 423 , (@DESKTOPWIDTH - 550 ) / 2 , (@DESKTOPHEIGHT - 423 ) / 2 , $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS )
GUICTRLCREATEGROUP ("Selection " , 15 , 10 , 520 , 133 )
GUICTRLCREATELABEL ("Network Connection:" , 30 , 35 , 100 , 20 )
$NIC_FRIENDLY = GUICTRLCREATECOMBO ("" , 145 , 33 , 350 , 20 , $CBS_DROPDOWNLIST )
GUICTRLSETDATA (- 1 , $OUTPUT )
GUICTRLCREATELABEL ("Network Card:" , 30 , 62 , 100 , 20 )
GUICTRLCREATELABEL ("MAC Address:" , 30 , 89 , 100 , 20 )
GUICTRLCREATELABEL ("IP Address:" , 280 , 89 , 100 , 20 )
$GET = GUICTRLCREATEBUTTON ("Get Link Data" , 90 , 108 , 100 )
$SAVE = GUICTRLCREATEBUTTON ("Save Link Data" , 200 , 108 , 100 )
$HELP = GUICTRLCREATEBUTTON ("Help" , 310 , 108 , 100 )
$CANCEL = GUICTRLCREATEBUTTON ("Cancel" , 420 , 108 , 100 )
IF REGREAD ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System" , "EnableLUA" ) > 0 THEN
GUICTRLSETIMAGE ($GET , "imageres.dll" , - 2 , 0 )
_GUICTRLBUTTON_SETSHIELD ($GET )
ENDIF
GUICTRLCREATEGROUP ("Results " , 15 , 153 , 520 , 160 )
GUICTRLCREATELABEL ("Switch Name:" , 30 , 183 , 70 , 20 )
GUICTRLCREATELABEL ("Port Identifier:" , 30 , 213 , 70 , 20 )
GUICTRLCREATELABEL ("VLAN Identifier:" , 30 , 243 , 75 , 20 )
GUICTRLCREATELABEL ("Switch IP Address:" , 30 , 273 , 90 , 20 )
GUICTRLCREATELABEL ("Switch Model:" , 280 , 213 , 70 , 20 )
GUICTRLCREATELABEL ("Port Duplex:" , 280 , 243 , 70 , 20 )
GUICTRLCREATELABEL ("VTP Mgmt Domain:" , 280 , 273 , 95 , 20 )
GUICTRLCREATEGROUP ("Status " , 15 , 323 , 520 , 65 )
GUICTRLCREATELABEL ($WINLDPVER , 350 , 398 , 275 , 20 )
GUISETSTATE ()
WHILE 1
$AMSG = GUIGETMSG (1 )
SWITCH $AMSG [1 ]
CASE $GUI
SWITCH $AMSG [0 ]
CASE $NIC_FRIENDLY
$NIC_FRIEND = GUICTRLREAD ($NIC_FRIENDLY )
$IDATA = INIREADSECTION (@TEMPDIR & "\LinkData.txt" , $NIC_FRIEND )
$HARDWARE = $IDATA [1 ] [1 ]
$IPADDR = $IDATA [3 ] [1 ]
$MAC = $IDATA [4 ] [1 ]
GUICTRLCREATELABEL ($HARDWARE , 145 , 62 , 350 , 20 )
GUICTRLCREATELABEL ($IPADDR , 390 , 89 , 120 , 20 )
GUICTRLCREATELABEL ($MAC , 145 , 89 , 120 , 20 )
CLEARRESULTS ()
CASE $GET
IF GUICTRLREAD ($NIC_FRIENDLY ) = "" THEN
MSGBOX (64 , "Invalid Selection" , "Please select a network card using the dropdown" )
CONTINUELOOP
ENDIF
GETCDP ($NIC_FRIENDLY )
CASE $GUI_EVENT_CLOSE
ONEXIT ()
EXITLOOP
CASE $CANCEL
ONEXIT ()
EXITLOOP
CASE $SAVE
SAVEDATA ()
CASE $HELP
HELP ()
ENDSWITCH
CASE $LDWINHELP
SWITCH $AMSG [0 ]
CASE $GUI_EVENT_CLOSE
GUIDELETE ($LDWINHELP )
CASE $DONATE
SHELLEXECUTE ("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KT462HRW7XQ3J" )
CASE $GOTIT
GUIDELETE ($LDWINHELP )
ENDSWITCH
ENDSWITCH
WEND
EXIT
FUNC GETCDP ($NIC_FRIENDLY )
$SAVEFILE = FILEOPEN (@TEMPDIR & "\SaveData.txt" , 2 )
GUICTRLSETSTATE ($GET , $GUI_DISABLE )
GUICTRLSETSTATE ($SAVE , $GUI_DISABLE )
GUICTRLSETSTATE ($HELP , $GUI_DISABLE )
CLEARRESULTS ()
FILEWRITELINE ($SAVEFILE , $NIC_FRIEND )
FILEWRITELINE ($SAVEFILE , "(" & $HARDWARE & ", " & $MAC & ", " & $IPADDR & ") is connected to:" )
FILEWRITELINE ($SAVEFILE , "------------------------------------------------------" )
$ID = $IDATA [2 ] [1 ]
$TCPDMPPID = RUN (@COMSPEC & " /c " & @TEMPDIR & "\tcpdump.exe -i \Device\" & $ID & " -nn -v -s 1500 -c 1 (ether[12:2]==0x88cc or ether[20:2]==0x2000) >%temp%\Data_Out.txt" , "" , @SW_HIDE )
$SECS = 1
$STATUS1 = GUICTRLCREATELABEL ("Running ... May take up to 60 seconds between link announcements ..." , 120 , 343 , 350 , 20 )
$IBEGIN = TIMERINIT ()
DO
$MSG = GUIGETMSG ()
IF $MSG = $CANCEL THEN
PROCESSCLOSE ("tcpdump.exe" )
EXITLOOP
ENDIF
IF CEILING (TIMERDIFF ($IBEGIN ) ) = ($SECS * 1000 ) OR CEILING (TIMERDIFF ($IBEGIN ) ) > ($SECS * 1000 ) THEN
GUICTRLCREATELABEL (ROUND ($SECS , 0 ) & " Seconds elapsed" , 240 , 363 , 100 , 20 )
$SECS = $SECS + 1
ENDIF
$TCPDMPPID = PROCESSEXISTS ($TCPDMPPID )
UNTIL $TCPDMPPID = "0" OR TIMERDIFF ($IBEGIN ) > 60000
GUICTRLDELETE ($STATUS1 )
GUICTRLCREATELABEL ("" , 240 , 360 , 100 , 20 )
GUICTRLCREATELABEL ("" , 210 , 350 , 200 , 20 )
$FILE = FILEOPEN (@TEMPDIR & "\Data_Out.txt" )
$END = _FILECOUNTLINES (@TEMPDIR & "\Data_Out.txt" )
IF $END > 0 THEN
$LINE = 0
DO
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "Device-ID (0x01)" ) THEN
$SWITCHNAME = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , "'" )
$SWITCHNAME = STRINGUPPER ($SWITCHNAME [2 ] )
GUICTRLCREATELABEL ($SWITCHNAME , 140 , 183 , 370 , 20 )
FILEWRITELINE ($SAVEFILE , "Switch Name: " & $SWITCHNAME )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "Port-ID (0x03)" ) THEN
$SWITCHPORT = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , "'" )
GUICTRLCREATELABEL ($SWITCHPORT [2 ] , 140 , 213 , 120 , 20 )
FILEWRITELINE ($SAVEFILE , "Switch Port: " & $SWITCHPORT [2 ] )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "VLAN ID (0x0a)" ) THEN
$VLAN = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ":" )
$VLAN = STRINGSTRIPWS ($VLAN [3 ] , 8 )
GUICTRLCREATELABEL ($VLAN , 140 , 243 , 120 , 20 )
FILEWRITELINE ($SAVEFILE , "VLAN ID: " & $VLAN )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "Address (0x02)" ) THEN
$SWITCHIP = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ")" )
$SWITCHIP = STRINGSTRIPWS ($SWITCHIP [3 ] , 8 )
GUICTRLCREATELABEL ($SWITCHIP , 140 , 273 , 120 , 20 )
FILEWRITELINE ($SAVEFILE , "Switch IP: " & $SWITCHIP )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "Platform (0x06)" ) THEN
$SWITCHMODEL = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , "'" )
$SWITCHMODEL = STRINGUPPER ($SWITCHMODEL [2 ] )
IF STRINGINSTR ($SWITCHMODEL , "CISCO" ) THEN
$SWITCHMODEL = STRINGTRIMLEFT (STRINGUPPER ($SWITCHMODEL ) , 6 )
ENDIF
GUICTRLCREATELABEL ($SWITCHMODEL , 390 , 213 , 120 , 20 )
FILEWRITELINE ($SAVEFILE , "Switch Model: " & $SWITCHMODEL )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "Duplex (0x0b)" ) THEN
$DUPLEX = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ":" )
$DUPLEX = STRINGLOWER (STRINGSTRIPWS ($DUPLEX [3 ] , 8 ) )
$DUPLEX = _STRINGPROPER ($DUPLEX )
GUICTRLCREATELABEL ($DUPLEX , 390 , 243 , 120 , 20 )
FILEWRITELINE ($SAVEFILE , "Switch Duplex: " & $DUPLEX )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "VTP Management Domain (0x09)" ) THEN
$VTP = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , "'" )
GUICTRLCREATELABEL ($VTP [2 ] , 390 , 273 , 120 , 20 )
FILEWRITELINE ($SAVEFILE , "VTP Mgmt: " & $VTP [2 ] )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "System Name TLV (5)" ) THEN
$SWITCHNAME = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ":" )
$SWITCHNAME = STRINGSTRIPWS (STRINGUPPER ($SWITCHNAME [2 ] ) , 3 )
GUICTRLCREATELABEL ($SWITCHNAME , 140 , 183 , 370 , 20 )
FILEWRITELINE ($SAVEFILE , "Switch Name: " & $SWITCHNAME )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "Chassis ID TLV (1)" ) THEN
$SWITCHNAME = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ":" )
IF @ERROR THEN
$NEXTLINE = $LINE + 1
$SWITCHNAME = STRINGSPLIT (FILEREADLINE ($FILE , $NEXTLINE ) , ":" )
$SWITCHNAMESIZE = UBOUND ($SWITCHNAME )
IF $SWITCHNAMESIZE > 3 THEN
$SWCONCAT = ""
FOR $I = 2 TO $SWITCHNAMESIZE - 1
$SWCONCAT = ($SWCONCAT & $SWITCHNAME [$I ] & ":" )
NEXT
$SWITCHNAME = STRINGTRIMRIGHT ($SWCONCAT , 1 )
ELSE
$SWITCHNAME = $SWITCHNAME [2 ]
ENDIF
ELSE
$SWITCHNAME = $SWITCHNAME [2 ]
ENDIF
$SWITCHNAME = STRINGSTRIPWS ($SWITCHNAME , 3 )
GUICTRLCREATELABEL ("" , 140 , 183 , 180 , 20 )
GUICTRLCREATELABEL ($SWITCHNAME , 140 , 183 , 370 , 20 )
FILEWRITELINE ($SAVEFILE , "Switch Name: " & $SWITCHNAME )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "Port ID TLV (2)" ) THEN
$SWITCHPORT = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ":" )
IF @ERROR THEN
$NEXTLINE = $LINE + 1
$SWITCHPORT = STRINGSPLIT (FILEREADLINE ($FILE , $NEXTLINE ) , ":" )
$SWITCHPORT = $SWITCHPORT [2 ]
ELSE
$SWITCHPORT = $SWITCHPORT [2 ]
ENDIF
$SWITCHPORT = STRINGSTRIPWS ($SWITCHPORT , 3 )
GUICTRLCREATELABEL ($SWITCHPORT , 140 , 213 , 120 , 40 )
FILEWRITELINE ($SAVEFILE , "Switch Port: " & $SWITCHPORT )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "Port Description TLV (4)" ) THEN
$SWITCHPORT = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ":" )
$SWITCHPORT = STRINGSTRIPWS ($SWITCHPORT [2 ] , 3 )
GUICTRLCREATELABEL ("" , 140 , 213 , 120 , 20 )
GUICTRLCREATELABEL ($SWITCHPORT , 140 , 213 , 120 , 40 )
FILEWRITELINE ($SAVEFILE , "Switch Port: " & $SWITCHPORT )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "port vlan id (PVID)" ) THEN
$VLAN = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ":" )
$VLAN = STRINGSTRIPWS ($VLAN [2 ] , 3 )
GUICTRLCREATELABEL ($VLAN , 140 , 243 , 120 , 20 )
FILEWRITELINE ($SAVEFILE , "VLAN ID: " & $VLAN )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "Management Address TLV (8)" ) THEN
$SWITCHIP = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ":" )
IF @ERROR THEN
$NEXTLINE = $LINE + 1
$SWITCHIP = STRINGSPLIT (FILEREADLINE ($FILE , $NEXTLINE ) , ":" )
ELSE
$SWITCHIP = $SWITCHIP [2 ]
ENDIF
$SWITCHIP = STRINGSTRIPWS (STRINGUPPER ($SWITCHIP [2 ] ) , 3 )
GUICTRLCREATELABEL ($SWITCHIP , 140 , 273 , 120 , 20 )
FILEWRITELINE ($SAVEFILE , "Switch IP: " & $SWITCHIP )
ENDIF
IF STRINGINSTR (FILEREADLINE ($FILE , $LINE ) , "System Description TLV (6)" ) THEN
$SWITCHMODEL = STRINGSPLIT (FILEREADLINE ($FILE , $LINE ) , ":" )
IF @ERROR THEN
$NEXTLINE = $LINE + 1
$SWITCHMODEL = FILEREADLINE ($FILE , $NEXTLINE )
ELSE
$SWITCHMODEL = $SWITCHMODEL [2 ]
ENDIF
$SWITCHMODEL = STRINGSTRIPWS ($SWITCHMODEL , 3 )
GUICTRLCREATELABEL ($SWITCHMODEL , 390 , 213 , 120 , 40 )
FILEWRITELINE ($SAVEFILE , "Switch Model: " & $SWITCHMODEL )
ENDIF
$LINE = $LINE + 1
UNTIL $LINE = $END
ELSE
IF PROCESSEXISTS ("tcpdump.exe" ) THEN PROCESSCLOSE ("tcpdump.exe" )
GUICTRLCREATELABEL ("NO LINK DATA FOUND ... !" , 210 , 348 , 150 , 20 )
FILECLOSE ($SAVEFILE )
FILEDELETE (@TEMPDIR & "\SaveData.txt" )
ENDIF
FILECLOSE ($SAVEFILE )
FILECLOSE ($FILE )
FILEDELETE (@TEMPDIR & "\Data_Out.txt" )
GUICTRLSETSTATE ($GET , $GUI_ENABLE )
GUICTRLSETSTATE ($SAVE , $GUI_ENABLE )
GUICTRLSETSTATE ($HELP , $GUI_ENABLE )
ENDFUNC
FUNC CLEARRESULTS ()
GUICTRLCREATELABEL ("" , 140 , 183 , 180 , 20 )
GUICTRLCREATELABEL ("" , 140 , 213 , 120 , 20 )
GUICTRLCREATELABEL ("" , 140 , 243 , 120 , 20 )
GUICTRLCREATELABEL ("" , 140 , 273 , 120 , 20 )
GUICTRLCREATELABEL ("" , 390 , 213 , 120 , 20 )
GUICTRLCREATELABEL ("" , 390 , 243 , 120 , 20 )
GUICTRLCREATELABEL ("" , 390 , 273 , 120 , 20 )
ENDFUNC
FUNC SAVEDATA ()
IF FILEEXISTS (@TEMPDIR & "\SaveData.txt" ) = 0 THEN RETURN
$USERSAVE = FILESAVEDIALOG ("Save Link Data to" , "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" , "Text Documents (*.txt)" , 2 )
IF $USERSAVE = "" THEN RETURN
IF STRINGINSTR ($USERSAVE , ".txt" ) = 0 THEN $USERSAVE = $USERSAVE & ".txt"
FILEOPEN ($USERSAVE , 1 )
FILEWRITE ($USERSAVE , FILEREAD (@TEMPDIR & "\SaveData.txt" ) & @CRLF )
FILECLOSE ($USERSAVE )
ENDFUNC
FUNC ONEXIT ()
IF PROCESSEXISTS ("tcpdump.exe" ) THEN PROCESSCLOSE ("tcpdump.exe" )
FILECLOSE ($LOG )
FILEDELETE (@TEMPDIR & "\LinkData.txt" )
FILEDELETE (@TEMPDIR & "\tcpdump.exe" )
FILEDELETE (@TEMPDIR & "\SaveData.txt" )
FILEDELETE (@TEMPDIR & "\donate.ico" )
ENDFUNC
FUNC HELP ()
$LDWINHELP = GUICREATE ("Link Discovery for Windows : Help" , 550 , 570 , (@DESKTOPWIDTH - 550 ) / 2 , (@DESKTOPHEIGHT - 570 ) / 2 )
GUICTRLCREATEGROUP ("What is Link Discovery? " , 15 , 10 , 520 , 80 )
GUICTRLCREATELABEL ("Link discovery is the process of ascertaining information from directly connected networking devices, such as network switches, routers, etc. " & @CRLF & "This can be helpful when diagnosing suspected network connectivity issues." , 30 , 35 , 500 , 50 )
GUICTRLCREATEGROUP ("Which Methods of Link Discovery does LDWin Support? " , 15 , 100 , 520 , 90 )
GUICTRLCREATELABEL ("LDWin supports the following methods of link discovery:" , 30 , 125 , 500 , 20 )
GUICTRLCREATELABEL (" - CDP : Cisco Discovery Protocol" , 30 , 145 , 500 , 20 )
_GUICTRLHYPERLINK_CREATE ("Read more on CDP" , 240 , 145 , 130 , 15 , 255 , 255 , - 1 , "https://en.wikipedia.org/wiki/Cisco_Discovery_Protocol" , "Wikipedia: Cisco Discovery Protocol" , $LDWINHELP )
GUICTRLCREATELABEL (" - LLDP : Link Layer Discovery Protocol" , 30 , 160 , 500 , 20 )
_GUICTRLHYPERLINK_CREATE ("Read more on LLDP" , 240 , 160 , 130 , 15 , 255 , 255 , - 1 , "https://en.wikipedia.org/wiki/Link_Layer_Discovery_Protocol" , "Wikipedia: Link Layer Discovery Protocol" , $LDWINHELP )
GUICTRLCREATEGROUP ("How to use LDWin: " , 15 , 200 , 520 , 200 )
GUICTRLCREATELABEL ("1. From the 'Network Connection:' drop down, select the network adaptor over which you wish to obtain network link information" & @CRLF & @CRLF & "2. Click 'Get Link Data'" & @CRLF & @CRLF & "3. LDWin will then listen on the selected network adaptor for link protocol announcements. It may take up to 60 seconds to receive an announcement" & @CRLF & @CRLF & "4. Once an announcement has been received, the received information will be displayed in the results section" & @CRLF & @CRLF & "5. Use the 'Save Link Data' button to save the received information into a text file" , 30 , 225 , 500 , 170 )
GUICTRLCREATEGROUP ("Notes: " , 15 , 410 , 520 , 90 )
GUICTRLCREATELABEL ("As both CDP and LLDP are sent via Multicast packets, A valid TCP/IP address is not required to receive link information." & @CRLF & @CRLF & "If LDWin helped you, how about buying me a beer? Use the donate button below. THANK YOU!" , 30 , 435 , 500 , 60 )
GUICTRLCREATELABEL ("LDWin - Chris Hall - 2010-" & @YEAR , 130 , 530 , 200 , 40 )
_GUICTRLHYPERLINK_CREATE ("chall32.blogspot.com" , 300 , 530 , 130 , 15 , 255 , 255 , - 1 , "http://chall32.blogspot.com" , "What The .....? Blog" , $LDWINHELP )
$DONATE = GUICTRLCREATEBUTTON ("Donate" , 10 , 510 , 100 , 35 , $BS_ICON )
GUICTRLSETIMAGE (- 1 , @TEMPDIR & "\donate.ico" )
$GOTIT = GUICTRLCREATEBUTTON ("Got it!" , 440 , 520 , 100 )
GUISETSTATE ()
ENDFUNC
|