#NoTrayIcon $sversionnumber = "2.1.0.0" 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 $dt_drivetype = 1 Global Const $dt_ssdstatus = 2 Global Const $dt_bustype = 3 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 $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 $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 $idi_shield = 32518 Global Const $idi_error = $idi_hand Global Const $idi_information = $idi_asterisk Global Const $idi_warning = $idi_exclamation 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 $sd_forcehung = 16 Global Const $sd_standby = 32 Global Const $sd_hibernate = 64 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 $ubound_dimensions = 0 Global Const $ubound_rows = 1 Global Const $ubound_columns = 2 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_little_endian = 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 $reg_qword = 11 Global Const $reg_qword_little_endian = 11 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 $keyword_default = 1 Global Const $keyword_null = 2 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 $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 $fc_nooverwrite = 0 Global Const $fc_overwrite = 1 Global Const $fc_createpath = 8 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_createpath = 8 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 $fo_utf8_full = 16384 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 $file_share_readwrite = BitOR($file_share_read, $file_share_write) Global Const $file_share_any = BitOR($file_share_read, $file_share_write, $file_share_delete) Global Const $generic_all = 268435456 Global Const $generic_execute = 536870912 Global Const $generic_write = 1073741824 Global Const $generic_read = -2147483648 Global Const $generic_readwrite = BitOR($generic_read, $generic_write) Global Const $frta_nocount = 0 Global Const $frta_count = 1 Global Const $frta_intarrays = 2 Global Const $frta_entiresplit = 4 Global Const $flta_filesfolders = 0 Global Const $flta_files = 1 Global Const $flta_folders = 2 Global Const $fltar_filesfolders = 0 Global Const $fltar_files = 1 Global Const $fltar_folders = 2 Global Const $fltar_nohidden = 4 Global Const $fltar_nosystem = 8 Global Const $fltar_nolink = 16 Global Const $fltar_norecur = 0 Global Const $fltar_recur = 1 Global Const $fltar_nosort = 0 Global Const $fltar_sort = 1 Global Const $fltar_fastsort = 2 Global Const $fltar_nopath = 0 Global Const $fltar_relpath = 1 Global Const $fltar_fullpath = 2 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_canceltrycontinue = 6 Global Const $mb_help = 16384 Global Const $mb_iconstop = 16 Global Const $mb_iconerror = 16 Global Const $mb_iconhand = 16 Global Const $mb_iconquestion = 32 Global Const $mb_iconexclamation = 48 Global Const $mb_iconwarning = 48 Global Const $mb_iconinformation = 64 Global Const $mb_iconasterisk = 64 Global Const $mb_usericon = 128 Global Const $mb_defbutton1 = 0 Global Const $mb_defbutton2 = 256 Global Const $mb_defbutton3 = 512 Global Const $mb_defbutton4 = 768 Global Const $mb_applmodal = 0 Global Const $mb_systemmodal = 4096 Global Const $mb_taskmodal = 8192 Global Const $mb_default_desktop_only = 131072 Global Const $mb_right = 524288 Global Const $mb_rtlreading = 1048576 Global Const $mb_setforeground = 65536 Global Const $mb_topmost = 262144 Global Const $mb_service_notification = 2097152 Global Const $mb_rightjustified = $mb_right 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 $idclose = 8 Global Const $idhelp = 9 Global Const $idtryagain = 10 Global Const $idcontinue = 11 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_query_limited_information = 4096 Global Const $process_suspend_resume = 2048 Global Const $process_all_access = 2035711 Global Const $str_nocasesense = 0 Global Const $str_casesense = 1 Global Const $str_nocasesensebasic = 2 Global Const $str_stripleading = 1 Global Const $str_striptrailing = 2 Global Const $str_stripspaces = 4 Global Const $str_stripall = 8 Global Const $str_chrsplit = 0 Global Const $str_entiresplit = 1 Global Const $str_nocount = 2 Global Const $str_regexpmatch = 0 Global Const $str_regexparraymatch = 1 Global Const $str_regexparrayfullmatch = 2 Global Const $str_regexparrayglobalmatch = 3 Global Const $str_regexparrayglobalfullmatch = 4 Global Const $str_endisstart = 0 Global Const $str_endnotstart = 1 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 $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 $tray_iconstate_show = 1 Global Const $tray_iconstate_hide = 2 Global Const $tray_iconstate_flash = 4 Global Const $tray_iconstate_stopflash = 8 Global Const $tray_iconstate_reset = 16 Global Const $fw_dontcare = 0 Global Const $fw_thin = 100 Global Const $fw_extralight = 200 Global Const $fw_ultralight = 200 Global Const $fw_light = 300 Global Const $fw_normal = 400 Global Const $fw_regular = 400 Global Const $fw_medium = 500 Global Const $fw_semibold = 600 Global Const $fw_demibold = 600 Global Const $fw_bold = 700 Global Const $fw_extrabold = 800 Global Const $fw_ultrabold = 800 Global Const $fw_heavy = 900 Global Const $fw_black = 900 Global Const $cf_effects = 256 Global Const $cf_printerfonts = 2 Global Const $cf_screenfonts = 1 Global Const $cf_noscriptsel = 8388608 Global Const $cf_inittologfontstruct = 64 Global Const $logpixelsx = 88 Global Const $logpixelsy = 90 Global Const $ansi_charset = 0 Global Const $arabic_charset = 178 Global Const $baltic_charset = 186 Global Const $chinesebig5_charset = 136 Global Const $default_charset = 1 Global Const $easteurope_charset = 238 Global Const $gb2312_charset = 134 Global Const $greek_charset = 161 Global Const $hangeul_charset = 129 Global Const $hebrew_charset = 177 Global Const $johab_charset = 130 Global Const $mac_charset = 77 Global Const $oem_charset = 255 Global Const $russian_charset = 204 Global Const $shiftjis_charset = 128 Global Const $symbol_charset = 2 Global Const $thai_charset = 222 Global Const $turkish_charset = 162 Global Const $vietnamese_charset = 163 Global Const $out_character_precis = 2 Global Const $out_default_precis = 0 Global Const $out_device_precis = 5 Global Const $out_outline_precis = 8 Global Const $out_ps_only_precis = 10 Global Const $out_raster_precis = 6 Global Const $out_string_precis = 1 Global Const $out_stroke_precis = 3 Global Const $out_tt_only_precis = 7 Global Const $out_tt_precis = 4 Global Const $clip_character_precis = 1 Global Const $clip_default_precis = 0 Global Const $clip_dfa_disable = 48 Global Const $clip_embedded = 128 Global Const $clip_lh_angles = 16 Global Const $clip_mask = 15 Global Const $clip_dfa_override = 64 Global Const $clip_stroke_precis = 2 Global Const $clip_tt_always = 32 Global Const $antialiased_quality = 4 Global Const $default_quality = 0 Global Const $draft_quality = 1 Global Const $nonantialiased_quality = 3 Global Const $proof_quality = 2 Global Const $cleartype_quality = 5 Global Const $default_pitch = 0 Global Const $fixed_pitch = 1 Global Const $variable_pitch = 2 Global Const $ff_decorative = 80 Global Const $ff_dontcare = 0 Global Const $ff_modern = 48 Global Const $ff_roman = 16 Global Const $ff_script = 64 Global Const $ff_swiss = 32 Global Const $fs_regular = 0 Global Const $fs_bold = 1 Global Const $fs_italic = 2 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 $taggdip_effectparams_blur = "float Radius; bool ExpandEdge" Global Const $taggdip_effectparams_brightnesscontrast = "int BrightnessLevel; int ContrastLevel" Global Const $taggdip_effectparams_colorbalance = "int CyanRed; int MagentaGreen; int YellowBlue" Global Const $taggdip_effectparams_colorcurve = "int Adjustment; int Channel; int AdjustValue" Global Const $taggdip_effectparams_colorlut = "byte LutB[256]; byte LutG[256]; byte LutR[256]; byte LutA[256]" Global Const $taggdip_effectparams_huesaturationlightness = "int HueLevel; int SaturationLevel; int LightnessLevel" Global Const $taggdip_effectparams_levels = "int Highlight; int Midtone; int Shadow" Global Const $taggdip_effectparams_redeyecorrection = "uint NumberOfAreas; ptr Areas" Global Const $taggdip_effectparams_sharpen = "float Radius; float Amount" Global Const $taggdip_effectparams_tint = "int Hue; int Amount" Global Const $taggdipbitmapdata = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved" Global Const $taggdipcolormatrix = "float m[25]" Global Const $taggdipencoderparam = "struct;byte GUID[16];ulong NumberOfValues;ulong Type;ptr Values;endstruct" Global Const $taggdipencoderparams = "uint Count;" & $taggdipencoderparam Global Const $taggdiprectf = "struct;float X;float Y;float Width;float Height;endstruct" 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 $tagnmtvitemchange = $tagnmhdr & ";uint Changed;handle hItem;uint StateNew;uint StateOld;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" & ((@OSVersion = "WIN_XP") ? "" : ";" & $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;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 $tagbitmapinfoheader = "struct;dword biSize;long biWidth;long biHeight;word biPlanes;word biBitCount;" & "dword biCompression;dword biSizeImage;long biXPelsPerMeter;long biYPelsPerMeter;dword biClrUsed;dword biClrImportant;endstruct" Global Const $tagbitmapinfo = $tagbitmapinfoheader & ";dword biRGBQuad[1]" Global Const $tagblendfunction = "byte Op;byte Flags;byte Alpha;byte Format" Global Const $tagguid = "struct;ulong Data1;ushort Data2;ushort Data3;byte Data4[8];endstruct" 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 = "struct;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];endstruct" 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" Func _winapi_getlasterror($ierror = @error, $iextended = @extended) Local $aresult = DllCall("kernel32.dll", "dword", "GetLastError") Return SetError($ierror, $iextended, $aresult[0]) EndFunc Func _winapi_setlasterror($ierrorcode, $ierror = @error, $iextended = @extended) DllCall("kernel32.dll", "none", "SetLastError", "dword", $ierrorcode) Return SetError($ierror, $iextended, NULL ) EndFunc Global Const $__miscconstant_cc_anycolor = 256 Global Const $__miscconstant_cc_fullopen = 2 Global Const $__miscconstant_cc_rgbinit = 1 Global Const $tagchoosecolor = "dword Size;hwnd hWndOwnder;handle hInstance;dword rgbResult;ptr CustColors;dword Flags;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName" Global Const $tagchoosefont = "dword Size;hwnd hWndOwner;handle hDC;ptr LogFont;int PointSize;dword Flags;dword rgbColors;lparam CustData;" & "ptr fnHook;ptr TemplateName;handle hInstance;ptr szStyle;word FontType;int SizeMin;int SizeMax" Func _choosecolor($ireturntype = 0, $icolorref = 0, $ireftype = 0, $hwndownder = 0) Local $tagcustcolors = "dword[16]" Local $tchoose = DllStructCreate($tagchoosecolor) Local $tcc = DllStructCreate($tagcustcolors) If $ireftype = 1 Then $icolorref = Int($icolorref) ElseIf $ireftype = 2 Then $icolorref = Hex(String($icolorref), 6) $icolorref = "0x" & StringMid($icolorref, 5, 2) & StringMid($icolorref, 3, 2) & StringMid($icolorref, 1, 2) EndIf DllStructSetData($tchoose, "Size", DllStructGetSize($tchoose)) DllStructSetData($tchoose, "hWndOwnder", $hwndownder) DllStructSetData($tchoose, "rgbResult", $icolorref) DllStructSetData($tchoose, "CustColors", DllStructGetPtr($tcc)) DllStructSetData($tchoose, "Flags", BitOR($__miscconstant_cc_anycolor, $__miscconstant_cc_fullopen, $__miscconstant_cc_rgbinit)) Local $aresult = DllCall("comdlg32.dll", "bool", "ChooseColor", "struct*", $tchoose) If @error Then Return SetError(@error, @extended, -1) If $aresult[0] = 0 Then Return SetError(-3, -3, -1) Local $scolor_picked = DllStructGetData($tchoose, "rgbResult") If $ireturntype = 1 Then Return "0x" & Hex(String($scolor_picked), 6) ElseIf $ireturntype = 2 Then $scolor_picked = Hex(String($scolor_picked), 6) Return "0x" & StringMid($scolor_picked, 5, 2) & StringMid($scolor_picked, 3, 2) & StringMid($scolor_picked, 1, 2) ElseIf $ireturntype = 0 Then Return $scolor_picked Else Return SetError(-4, -4, -1) EndIf EndFunc Func _choosefont($sfontname = "Courier New", $ipointsize = 10, $ifontcolorref = 0, $ifontweight = 0, $bitalic = False, $bunderline = False, $bstrikethru = False, $hwndowner = 0) Local $iitalic = 0, $iunderline = 0, $istrikeout = 0 Local $hdc = __misc_getdc(0) Local $iheight = Round(($ipointsize * __misc_getdevicecaps($hdc, $logpixelsx)) / 72, 0) __misc_releasedc(0, $hdc) Local $tchoosefont = DllStructCreate($tagchoosefont) Local $tlogfont = DllStructCreate($taglogfont) DllStructSetData($tchoosefont, "Size", DllStructGetSize($tchoosefont)) DllStructSetData($tchoosefont, "hWndOwner", $hwndowner) DllStructSetData($tchoosefont, "LogFont", DllStructGetPtr($tlogfont)) DllStructSetData($tchoosefont, "PointSize", $ipointsize) DllStructSetData($tchoosefont, "Flags", BitOR($cf_screenfonts, $cf_printerfonts, $cf_effects, $cf_inittologfontstruct, $cf_noscriptsel)) DllStructSetData($tchoosefont, "rgbColors", $ifontcolorref) DllStructSetData($tchoosefont, "FontType", 0) DllStructSetData($tlogfont, "Height", $iheight) DllStructSetData($tlogfont, "Weight", $ifontweight) DllStructSetData($tlogfont, "Italic", $bitalic) DllStructSetData($tlogfont, "Underline", $bunderline) DllStructSetData($tlogfont, "Strikeout", $bstrikethru) DllStructSetData($tlogfont, "FaceName", $sfontname) Local $aresult = DllCall("comdlg32.dll", "bool", "ChooseFontW", "struct*", $tchoosefont) If @error Then Return SetError(@error, @extended, -1) If $aresult[0] = 0 Then Return SetError(-3, -3, -1) Local $sfacename = DllStructGetData($tlogfont, "FaceName") If StringLen($sfacename) = 0 AND StringLen($sfontname) > 0 Then $sfacename = $sfontname If DllStructGetData($tlogfont, "Italic") Then $iitalic = 2 If DllStructGetData($tlogfont, "Underline") Then $iunderline = 4 If DllStructGetData($tlogfont, "Strikeout") Then $istrikeout = 8 Local $iattributes = BitOR($iitalic, $iunderline, $istrikeout) Local $isize = DllStructGetData($tchoosefont, "PointSize") / 10 Local $icolorref = DllStructGetData($tchoosefont, "rgbColors") Local $iweight = DllStructGetData($tlogfont, "Weight") Local $scolor_picked = Hex(String($icolorref), 6) Return StringSplit($iattributes & "," & $sfacename & "," & $isize & "," & $iweight & "," & $icolorref & "," & "0x" & $scolor_picked & "," & "0x" & StringMid($scolor_picked, 5, 2) & StringMid($scolor_picked, 3, 2) & StringMid($scolor_picked, 1, 2), ",") EndFunc Func _clipputfile($sfile, $sseparator = "|") Local Const $gmem_moveable = 2, $cf_hdrop = 15 $sfile &= $sseparator & $sseparator Local $nglobmemsize = 2 * (StringLen($sfile) + 20) Local $aresult = DllCall("user32.dll", "bool", "OpenClipboard", "hwnd", 0) If @error OR $aresult[0] = 0 Then Return SetError(1, _winapi_getlasterror(), False) Local $ierror = 0, $ilasterror = 0 $aresult = DllCall("user32.dll", "bool", "EmptyClipboard") If @error OR NOT $aresult[0] Then $ierror = 2 $ilasterror = _winapi_getlasterror() Else $aresult = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", $gmem_moveable, "ulong_ptr", $nglobmemsize) If @error OR NOT $aresult[0] Then $ierror = 3 $ilasterror = _winapi_getlasterror() Else Local $hglobal = $aresult[0] $aresult = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $hglobal) If @error OR NOT $aresult[0] Then $ierror = 4 $ilasterror = _winapi_getlasterror() Else Local $hlock = $aresult[0] Local $tdropfiles = DllStructCreate("dword pFiles;" & $tagpoint & ";bool fNC;bool fWide;wchar[" & StringLen($sfile) + 1 & "]", $hlock) If @error Then Return SetError(5, 6, False) Local $tstruct = DllStructCreate("dword;long;long;bool;bool") DllStructSetData($tdropfiles, "pFiles", DllStructGetSize($tstruct)) DllStructSetData($tdropfiles, "X", 0) DllStructSetData($tdropfiles, "Y", 0) DllStructSetData($tdropfiles, "fNC", 0) DllStructSetData($tdropfiles, "fWide", 1) DllStructSetData($tdropfiles, 6, $sfile) For $i = 1 To StringLen($sfile) If DllStructGetData($tdropfiles, 6, $i) = $sseparator Then DllStructSetData($tdropfiles, 6, Chr(0), $i) Next $aresult = DllCall("user32.dll", "handle", "SetClipboardData", "uint", $cf_hdrop, "handle", $hglobal) If @error OR NOT $aresult[0] Then $ierror = 6 $ilasterror = _winapi_getlasterror() EndIf $aresult = DllCall("kernel32.dll", "bool", "GlobalUnlock", "handle", $hglobal) If (@error OR NOT $aresult[0]) AND NOT $ierror AND _winapi_getlasterror() Then $ierror = 8 $ilasterror = _winapi_getlasterror() EndIf EndIf $aresult = DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $hglobal) If (@error OR $aresult[0]) AND NOT $ierror Then $ierror = 9 $ilasterror = _winapi_getlasterror() EndIf EndIf EndIf $aresult = DllCall("user32.dll", "bool", "CloseClipboard") If (@error OR NOT $aresult[0]) AND NOT $ierror Then Return SetError(7, _winapi_getlasterror(), False) If $ierror Then Return SetError($ierror, $ilasterror, False) Return True EndFunc Func _mousetrap($ileft = 0, $itop = 0, $iright = 0, $ibottom = 0) Local $areturn = 0 If $ileft = Default Then $ileft = 0 If $itop = Default Then $itop = 0 If $iright = Default Then $iright = 0 If $ibottom = Default Then $ibottom = 0 If @NumParams = 0 Then $areturn = DllCall("user32.dll", "bool", "ClipCursor", "ptr", 0) If @error OR NOT $areturn[0] Then Return SetError(1, _winapi_getlasterror(), False) Else If @NumParams = 2 Then $iright = $ileft + 1 $ibottom = $itop + 1 EndIf Local $trect = DllStructCreate($tagrect) DllStructSetData($trect, "Left", $ileft) DllStructSetData($trect, "Top", $itop) DllStructSetData($trect, "Right", $iright) DllStructSetData($trect, "Bottom", $ibottom) $areturn = DllCall("user32.dll", "bool", "ClipCursor", "struct*", $trect) If @error OR NOT $areturn[0] Then Return SetError(2, _winapi_getlasterror(), False) EndIf Return True EndFunc Func _singleton($soccurencename, $iflag = 0) Local Const $error_already_exists = 183 Local Const $security_descriptor_revision = 1 Local $tsecurityattributes = 0 If BitAND($iflag, 2) Then Local $tsecuritydescriptor = DllStructCreate("byte;byte;word;ptr[4]") Local $aret = DllCall("advapi32.dll", "bool", "InitializeSecurityDescriptor", "struct*", $tsecuritydescriptor, "dword", $security_descriptor_revision) If @error Then Return SetError(@error, @extended, 0) If $aret[0] Then $aret = DllCall("advapi32.dll", "bool", "SetSecurityDescriptorDacl", "struct*", $tsecuritydescriptor, "bool", 1, "ptr", 0, "bool", 0) If @error Then Return SetError(@error, @extended, 0) If $aret[0] Then $tsecurityattributes = DllStructCreate($tagsecurity_attributes) DllStructSetData($tsecurityattributes, 1, DllStructGetSize($tsecurityattributes)) DllStructSetData($tsecurityattributes, 2, DllStructGetPtr($tsecuritydescriptor)) DllStructSetData($tsecurityattributes, 3, 0) EndIf EndIf EndIf Local $ahandle = DllCall("kernel32.dll", "handle", "CreateMutexW", "struct*", $tsecurityattributes, "bool", 1, "wstr", $soccurencename) If @error Then Return SetError(@error, @extended, 0) Local $alasterror = DllCall("kernel32.dll", "dword", "GetLastError") If @error Then Return SetError(@error, @extended, 0) If $alasterror[0] = $error_already_exists Then If BitAND($iflag, 1) Then DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $ahandle[0]) If @error Then Return SetError(@error, @extended, 0) Return SetError($alasterror[0], $alasterror[0], 0) Else Exit -1 EndIf EndIf Return $ahandle[0] EndFunc Func _ispressed($shexkey, $vdll = "user32.dll") Local $a_r = DllCall($vdll, "short", "GetAsyncKeyState", "int", "0x" & $shexkey) If @error Then Return SetError(@error, @extended, False) Return BitAND($a_r[0], 32768) <> 0 EndFunc Func _versioncompare($sversion1, $sversion2) If $sversion1 = $sversion2 Then Return 0 Local $aversion1 = StringSplit($sversion1, ".,"), $aversion2 = StringSplit($sversion2, ".,") If UBound($aversion1) <> UBound($aversion2) OR UBound($aversion1) = 0 Then If $sversion1 > $sversion2 Then Return SetExtended(1, 1) ElseIf $sversion1 < $sversion2 Then Return SetExtended(1, -1) EndIf Else For $i = 1 To UBound($aversion1) - 1 If StringIsDigit($aversion1[$i]) AND StringIsDigit($aversion2[$i]) Then If Number($aversion1[$i]) > Number($aversion2[$i]) Then Return SetExtended(2, 1) ElseIf Number($aversion1[$i]) < Number($aversion2[$i]) Then Return SetExtended(2, -1) EndIf Else If $aversion1[$i] > $aversion2[$i] Then Return SetExtended(1, 1) ElseIf $aversion1[$i] < $aversion2[$i] Then Return SetExtended(1, -1) EndIf EndIf Next EndIf Return SetError(2, 0, 0) EndFunc Func __misc_getdc($hwnd) Local $aresult = DllCall("User32.dll", "handle", "GetDC", "hwnd", $hwnd) If @error OR NOT $aresult[0] Then Return SetError(1, _winapi_getlasterror(), 0) Return $aresult[0] EndFunc Func __misc_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 __misc_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] <> 0 EndFunc 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_symbolic_link_name = "SeCreateSymbolicLinkPrivilege" 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_inc_working_set_name = "SeIncreaseWorkingSetPrivilege" 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_relabel_name = "SeRelabelPrivilege" 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_time_zone_name = "SeTimeZonePrivilege" Global Const $se_trusted_credman_access_name = "SeTrustedCredManAccessPrivilege" 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 $access_system_security = 16777216 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 _security__adjusttokenprivileges($htoken, $bdisableall, $pnewstate, $ibufferlen, $pprevstate = 0, $prequired = 0) Local $acall = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $htoken, "bool", $bdisableall, "struct*", $pnewstate, "dword", $ibufferlen, "struct*", $pprevstate, "struct*", $prequired) If @error Then Return SetError(@error, @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(@error, @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(@error, @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(@error + 10, @extended, 0) Local $acall = DllCall("advapi32.dll", "dword", "GetLengthSid", "struct*", $psid) If @error Then Return SetError(@error, @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(@error + 10, @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(@error, @extended, 0) Return $tbuffer EndFunc Func _security__impersonateself($ilevel = $securityimpersonation) Local $acall = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $ilevel) If @error Then Return SetError(@error, @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(@error, @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(@error, @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(@error + 10, @extended, 0) Local $stypesystem = "ptr" If $ssystem Then $stypesystem = "wstr" Local $acall = DllCall("advapi32.dll", "bool", "LookupAccountSidW", $stypesystem, $ssystem, "struct*", $psid, "wstr", "", "dword*", 65536, "wstr", "", "dword*", 65536, "int*", 0) If @error OR NOT $acall[0] Then Return SetError(@error, @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(@error, @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(@error, @extended, 0) Return $acall[3] EndFunc Func _security__openthreadtoken($iaccess, $hthread = 0, $bopenasself = False) If $hthread = 0 Then Local $aresult = DllCall("kernel32.dll", "handle", "GetCurrentThread") If @error Then Return SetError(@error + 10, @extended, 0) $hthread = $aresult[0] EndIf Local $acall = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $hthread, "dword", $iaccess, "bool", $bopenasself, "handle*", 0) If @error OR NOT $acall[0] Then Return SetError(@error, @extended, 0) Return $acall[4] EndFunc Func _security__openthreadtokenex($iaccess, $hthread = 0, $bopenasself = False) Local $htoken = _security__openthreadtoken($iaccess, $hthread, $bopenasself) If $htoken = 0 Then Local Const $error_no_token = 1008 If _winapi_getlasterror() <> $error_no_token Then Return SetError(20, _winapi_getlasterror(), 0) If NOT _security__impersonateself() Then Return SetError(@error + 10, _winapi_getlasterror(), 0) $htoken = _security__openthreadtoken($iaccess, $hthread, $bopenasself) If $htoken = 0 Then Return SetError(@error, _winapi_getlasterror(), 0) EndIf Return $htoken EndFunc Func _security__setprivilege($htoken, $sprivilege, $benable) Local $iluid = _security__lookupprivilegevalue("", $sprivilege) If $iluid = 0 Then Return SetError(@error + 10, @extended, False) Local Const $tagtoken_privileges = "dword Count;align 4;int64 LUID;dword Attributes" 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 $benable 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(@error, @extended, False) Return True EndFunc Func _security__sidtostringsid($psid) If NOT _security__isvalidsid($psid) Then Return SetError(@error + 10, 0, "") Local $acall = DllCall("advapi32.dll", "bool", "ConvertSidToStringSidW", "struct*", $psid, "ptr*", 0) If @error OR NOT $acall[0] Then Return SetError(@error, @extended, "") Local $pstringsid = $acall[2] Local $alen = DllCall("kernel32.dll", "int", "lstrlenW", "struct*", $pstringsid) Local $ssid = DllStructGetData(DllStructCreate("wchar Text[" & $alen[0] + 1 & "]", $pstringsid), "Text") DllCall("kernel32.dll", "handle", "LocalFree", "handle", $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(@error, @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")) DllCall("kernel32.dll", "handle", "LocalFree", "handle", $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 Const $hgdi_error = Ptr(-1) Global Const $invalid_handle_value = Ptr(-1) Global Const $clr_invalid = -1 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 $ulw_ex_noresize = 8 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 $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 $gw_enabledpopup = 6 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 $image_bitmap = 0 Global Const $image_icon = 1 Global Const $image_cursor = 2 Global Const $image_enhmetafile = 3 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 $load_ignore_code_authz_level = 16 Global Const $load_library_as_datafile_exclusive = 64 Global Const $load_library_as_image_resource = 32 Global Const $load_library_search_application_dir = 512 Global Const $load_library_search_default_dirs = 4096 Global Const $load_library_search_dll_load_dir = 256 Global Const $load_library_search_system32 = 2048 Global Const $load_library_search_user_dirs = 1024 Global Const $s_ok = 0 Global Const $e_abort = -2147467260 Global Const $e_accessdenied = -2147024891 Global Const $e_fail = -2147467259 Global Const $e_handle = -2147024890 Global Const $e_invalidarg = -2147024809 Global Const $e_nointerface = -2147467262 Global Const $e_notimpl = -2147467263 Global Const $e_outofmemory = -2147024882 Global Const $e_pointer = -2147467261 Global Const $e_unexpected = -2147418113 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 $obm_trtype = 32732 Global Const $obm_lfarrowi = 32734 Global Const $obm_rgarrowi = 32735 Global Const $obm_dnarrowi = 32736 Global Const $obm_uparrowi = 32737 Global Const $obm_combo = 32738 Global Const $obm_mnarrow = 32739 Global Const $obm_lfarrowd = 32740 Global Const $obm_rgarrowd = 32741 Global Const $obm_dnarrowd = 32742 Global Const $obm_uparrowd = 32743 Global Const $obm_restored = 32744 Global Const $obm_zoomd = 32745 Global Const $obm_reduced = 32746 Global Const $obm_restore = 32747 Global Const $obm_zoom = 32748 Global Const $obm_reduce = 32749 Global Const $obm_lfarrow = 32750 Global Const $obm_rgarrow = 32751 Global Const $obm_dnarrow = 32752 Global Const $obm_uparrow = 32753 Global Const $obm_close = 32754 Global Const $obm_old_restore = 32755 Global Const $obm_old_zoom = 32756 Global Const $obm_old_reduce = 32757 Global Const $obm_btncorners = 32758 Global Const $obm_checkboxes = 32759 Global Const $obm_check = 32760 Global Const $obm_btsize = 32761 Global Const $obm_old_lfarrow = 32762 Global Const $obm_old_rgarrow = 32763 Global Const $obm_old_dnarrow = 32764 Global Const $obm_old_uparrow = 32765 Global Const $obm_size = 32766 Global Const $obm_old_close = 32767 Global Const $oic_sample = 32512 Global Const $oic_hand = 32513 Global Const $oic_ques = 32514 Global Const $oic_bang = 32515 Global Const $oic_note = 32516 Global Const $oic_winlogo = 32517 Global Const $oic_warning = $oic_bang Global Const $oic_error = $oic_hand Global Const $oic_information = $oic_note Global $__g_ainprocess_winapi[64][2] = [[0, 0]] Global $__g_awinlist_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_logpixelsx = 88 Global Const $__winapiconstant_logpixelsy = 90 Global Const $tagcursorinfo = "dword Size;dword Flags;handle hCursor;" & $tagpoint Global Const $tagdisplay_device = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]" Global Const $tagflashwinfo = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut" Global Const $tagiconinfo = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor" Global Const $tagmemorystatusex = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual" Func _winapi_attachconsole($ipid = -1) Local $aresult = DllCall("kernel32.dll", "bool", "AttachConsole", "dword", $ipid) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_attachthreadinput($iattach, $iattachto, $battach) Local $aresult = DllCall("user32.dll", "bool", "AttachThreadInput", "dword", $iattach, "dword", $iattachto, "bool", $battach) 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($pprevwndfunc, $hwnd, $imsg, $wparam, $lparam) Local $aresult = DllCall("user32.dll", "lresult", "CallWindowProc", "ptr", $pprevwndfunc, "hwnd", $hwnd, "uint", $imsg, "wparam", $wparam, "lparam", $lparam) If @error Then Return SetError(@error, @extended, -1) Return $aresult[0] EndFunc Func _winapi_clienttoscreen($hwnd, ByRef $tpoint) Local $aret = DllCall("user32.dll", "bool", "ClientToScreen", "hwnd", $hwnd, "struct*", $tpoint) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @extended, 0) Return $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 NOT @error Then 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 EndIf Return SetError(@error, @extended, "0x" & 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, $bmanualreset = True, $binitialstate = True, $sname = "") Local $snametype = "wstr" If $sname = "" Then $sname = 0 $snametype = "ptr" EndIf Local $aresult = DllCall("kernel32.dll", "handle", "CreateEventW", "ptr", $pattributes, "bool", $bmanualreset, "bool", $binitialstate, $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] = $invalid_handle_value) Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_createfont($iheight, $iwidth, $iescape = 0, $iorientn = 0, $iweight = $__winapiconstant_fw_normal, $bitalic = False, $bunderline = False, $bstrikeout = False, $icharset = $__winapiconstant_default_charset, $ioutputprec = $__winapiconstant_out_default_precis, $iclipprec = $__winapiconstant_clip_default_precis, $iquality = $__winapiconstant_default_quality, $ipitch = 0, $sface = "Arial") Local $aresult = DllCall("gdi32.dll", "handle", "CreateFontW", "int", $iheight, "int", $iwidth, "int", $iescape, "int", $iorientn, "int", $iweight, "dword", $bitalic, "dword", $bunderline, "dword", $bstrikeout, "dword", $icharset, "dword", $ioutputprec, "dword", $iclipprec, "dword", $iquality, "dword", $ipitch, "wstr", $sface) 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, "INT", $ncolor) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_createprocess($sappname, $scommand, $psecurity, $pthread, $binherit, $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", $binherit, "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) If NOT _winapi_fillrect($hdestdc, $trect, $hbrush) 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", "INT", $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, $prect, $iedgetype, $iflags) Local $aresult = DllCall("user32.dll", "bool", "DrawEdge", "handle", $hdc, "ptr", $prect, "uint", $iedgetype, "uint", $iflags) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_drawframecontrol($hdc, $prect, $itype, $istate) Local $aresult = DllCall("user32.dll", "bool", "DrawFrameControl", "handle", $hdc, "ptr", $prect, "uint", $itype, "uint", $istate) 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 = $di_mask Case 2 $ioptions = $di_image Case 3 $ioptions = $di_normal Case 4 $ioptions = $di_compat Case 5 $ioptions = $di_defaultsize Case Else $ioptions = $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 + 10, @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, $binherithandle, $ioptions) Local $aresult = DllCall("kernel32.dll", "bool", "DuplicateHandle", "handle", $hsourceprocesshandle, "handle", $hsourcehandle, "handle", $htargetprocesshandle, "handle*", 0, "dword", $idesiredaccess, "bool", $binherithandle, "dword", $ioptions) If @error OR NOT $aresult[0] Then Return SetError(@error, @extended, 0) Return $aresult[4] EndFunc Func _winapi_enablewindow($hwnd, $benable = True) Local $aresult = DllCall("user32.dll", "bool", "EnableWindow", "hwnd", $hwnd, "bool", $benable) 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) Local $aret = DllCall("user32.dll", "bool", "EnumDisplayDevicesW", "struct*", $tname, "dword", $idevnum, "struct*", $tdevice, "dword", 1) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @extended, 0) Local $in = DllStructGetData($tdevice, "Flags") If BitAND($in, $display_device_attached_to_desktop) <> 0 Then $iflags = BitOR($iflags, 1) If BitAND($in, $display_device_primary_device) <> 0 Then $iflags = BitOR($iflags, 2) If BitAND($in, $display_device_mirroring_driver) <> 0 Then $iflags = BitOR($iflags, 4) If BitAND($in, $display_device_vga_compatible) <> 0 Then $iflags = BitOR($iflags, 8) If BitAND($in, $display_device_removable) <> 0 Then $iflags = BitOR($iflags, 16) If BitAND($in, $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($bvisible = True, $hwnd = Default) __winapi_enumwindowsinit() If $hwnd = Default Then $hwnd = _winapi_getdesktopwindow() __winapi_enumwindowschild($hwnd, $bvisible) Return $__g_awinlist_winapi EndFunc Func __winapi_enumwindowsadd($hwnd, $sclass = "") If $sclass = "" Then $sclass = _winapi_getclassname($hwnd) $__g_awinlist_winapi[0][0] += 1 Local $icount = $__g_awinlist_winapi[0][0] If $icount >= $__g_awinlist_winapi[0][1] Then ReDim $__g_awinlist_winapi[$icount + 64][2] $__g_awinlist_winapi[0][1] += 64 EndIf $__g_awinlist_winapi[$icount][0] = $hwnd $__g_awinlist_winapi[$icount][1] = $sclass EndFunc Func __winapi_enumwindowschild($hwnd, $bvisible = True) $hwnd = _winapi_getwindow($hwnd, $gw_child) While $hwnd <> 0 If (NOT $bvisible) OR _winapi_iswindowvisible($hwnd) Then __winapi_enumwindowsadd($hwnd) __winapi_enumwindowschild($hwnd, $bvisible) EndIf $hwnd = _winapi_getwindow($hwnd, $gw_hwndnext) WEnd EndFunc Func __winapi_enumwindowsinit() ReDim $__g_awinlist_winapi[64][2] $__g_awinlist_winapi[0][0] = 0 $__g_awinlist_winapi[0][1] = 64 EndFunc Func _winapi_enumwindowspopup() __winapi_enumwindowsinit() Local $hwnd = _winapi_getwindow(_winapi_getdesktopwindow(), $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, $gw_hwndnext) WEnd Return $__g_awinlist_winapi EndFunc Func _winapi_enumwindowstop() __winapi_enumwindowsinit() Local $hwnd = _winapi_getwindow(_winapi_getdesktopwindow(), $gw_child) While $hwnd <> 0 If _winapi_iswindowvisible($hwnd) Then __winapi_enumwindowsadd($hwnd) $hwnd = _winapi_getwindow($hwnd, $gw_hwndnext) WEnd Return $__g_awinlist_winapi EndFunc Func _winapi_expandenvironmentstrings($sstring) Local $aresult = DllCall("kernel32.dll", "dword", "ExpandEnvironmentStringsW", "wstr", $sstring, "wstr", "", "dword", 4096) If @error OR NOT $aresult[0] Then Return SetError(@error + 10, @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, $prect, $hbrush) Local $aresult If IsPtr($hbrush) Then $aresult = DllCall("user32.dll", "int", "FillRect", "handle", $hdc, "struct*", $prect, "handle", $hbrush) Else $aresult = DllCall("user32.dll", "int", "FillRect", "handle", $hdc, "struct*", $prect, "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, "") If $aresult[0] <= 32 Then Return SetError(10, $aresult[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, $binvert = True) Local $aresult = DllCall("user32.dll", "bool", "FlashWindow", "hwnd", $hwnd, "bool", $binvert) 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, $flashw_caption) If BitAND($iflags, 2) <> 0 Then $imode = BitOR($imode, $flashw_tray) If BitAND($iflags, 4) <> 0 Then $imode = BitOR($imode, $flashw_timer) If BitAND($iflags, 8) <> 0 Then $imode = BitOR($imode, $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 OR NOT $aresult[0] Then Return SetError(@error + 10, @extended, 0) If $sbuffertype = "wstr" Then $pbuffer = $aresult[5] Return $aresult[0] EndFunc Func _winapi_framerect($hdc, $prect, $hbrush) Local $aresult = DllCall("user32.dll", "int", "FrameRect", "handle", $hdc, "ptr", $prect, "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 OR NOT $aresult[0] Then Return SetError(@error, @extended, "") 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) Local $aret = DllCall("user32.dll", "bool", "GetClientRect", "hwnd", $hwnd, "struct*", $trect) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @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) Local $aret = DllCall("user32.dll", "bool", "GetCursorInfo", "struct*", $tcursor) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @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_getfilesizeex($hfile) Local $aresult = DllCall("kernel32.dll", "bool", "GetFileSizeEx", "handle", $hfile, "int64*", 0) If @error OR NOT $aresult[0] Then Return SetError(@error, @extended, -1) Return $aresult[2] 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) Local $aret = DllCall("user32.dll", "bool", "GetIconInfo", "handle", $hicon, "struct*", $tinfo) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @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_getlasterrormessage() Local $ilasterror = _winapi_getlasterror() Local $tbufferptr = DllStructCreate("ptr") Local $ncount = _winapi_formatmessage(BitOR($format_message_allocate_buffer, $format_message_from_system), 0, $ilasterror, 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 $itranscolor, ByRef $itransparency, $bcolorref = False) $itranscolor = -1 $itransparency = -1 Local $aresult = DllCall("user32.dll", "bool", "GetLayeredWindowAttributes", "hwnd", $hwnd, "INT*", $itranscolor, "byte*", $itransparency, "dword*", 0) If @error OR NOT $aresult[0] Then Return SetError(@error, @extended, 0) If NOT $bcolorref Then $aresult[2] = Int(BinaryMid($aresult[2], 3, 1) & BinaryMid($aresult[2], 2, 1) & BinaryMid($aresult[2], 1, 1)) EndIf $itranscolor = $aresult[2] $itransparency = $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($btoclient = 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 $btoclient AND NOT _winapi_screentoclient($hwnd, $tpoint) Then Return SetError(@error + 20, @extended, 0) Return $tpoint EndFunc Func _winapi_getmouseposx($btoclient = False, $hwnd = 0) Local $tpoint = _winapi_getmousepos($btoclient, $hwnd) If @error Then Return SetError(@error, @extended, 0) Return DllStructGetData($tpoint, "X") EndFunc Func _winapi_getmouseposy($btoclient = False, $hwnd = 0) Local $tpoint = _winapi_getmousepos($btoclient, $hwnd) If @error Then Return SetError(@error, @extended, 0) Return DllStructGetData($tpoint, "Y") EndFunc Func _winapi_getobject($hobject, $isize, $pobject) Local $aresult = DllCall("gdi32.dll", "int", "GetObjectW", "handle", $hobject, "int", $isize, "ptr", $pobject) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_getopenfilename($stitle = "", $sfilter = "All files (*.*)", $sinitaldir = ".", $sdefaultfile = "", $sdefaultext = "", $ifilterindex = 1, $iflags = 0, $iflagsex = 0, $hwndowner = 0) Local $ipathlen = 4096 Local $inulls = 0 Local $tofn = DllStructCreate($tagopenfilename) Local $afiles[1] = [0] Local $iflag = $iflags Local $asflines = StringSplit($sfilter, "|") Local $asfilter[$asflines[0] * 2 + 1] Local $istart, $ifinal, $tagfilter $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), $str_stripleading + $str_striptrailing) $asfilter[$i * 2] = StringStripWS(StringTrimRight(StringTrimLeft($asflines[$i], $istart), StringLen($asflines[$i]) - $ifinal + 1), $str_stripleading + $str_striptrailing) $tagfilter &= "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($tagfilter & "wchar") Local $tpath = DllStructCreate("wchar Path[" & $ipathlen & "]") Local $textn = DllStructCreate("wchar Extension[" & StringLen($sdefaultext) + 1 & "]") For $i = 1 To $asfilter[0] DllStructSetData($tfilter, $i, $asfilter[$i]) Next DllStructSetData($ttitle, "Title", $stitle) DllStructSetData($tinitialdir, "InitDir", $sinitaldir) DllStructSetData($tpath, "Path", $sdefaultfile) DllStructSetData($textn, "Extension", $sdefaultext) DllStructSetData($tofn, "StructSize", DllStructGetSize($tofn)) DllStructSetData($tofn, "hwndOwner", $hwndowner) DllStructSetData($tofn, "lpstrFilter", DllStructGetPtr($tfilter)) DllStructSetData($tofn, "nFilterIndex", $ifilterindex) DllStructSetData($tofn, "lpstrFile", DllStructGetPtr($tpath)) DllStructSetData($tofn, "nMaxFile", $ipathlen) DllStructSetData($tofn, "lpstrInitialDir", DllStructGetPtr($tinitialdir)) DllStructSetData($tofn, "lpstrTitle", DllStructGetPtr($ttitle)) DllStructSetData($tofn, "Flags", $iflag) DllStructSetData($tofn, "lpstrDefExt", DllStructGetPtr($textn)) DllStructSetData($tofn, "FlagsEx", $iflagsex) Local $ares = DllCall("comdlg32.dll", "bool", "GetOpenFileNameW", "struct*", $tofn) If @error OR NOT $ares[0] Then Return SetError(@error + 10, @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, $bwait = False) Local $aresult = DllCall("kernel32.dll", "bool", "GetOverlappedResult", "handle", $hfile, "ptr", $poverlapped, "dword*", 0, "bool", $bwait) If @error OR NOT $aresult[0] 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_getprocaddress($hmodule, $vname) Local $stype = "str" If IsNumber($vname) Then $stype = "word" Local $aresult = DllCall("kernel32.dll", "ptr", "GetProcAddress", "handle", $hmodule, $stype, $vname) If @error OR NOT $aresult[0] 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 OR NOT $aresult[0] Then Return SetError(@error + 10, @extended, 0) Local $amask[3] $amask[0] = True $amask[1] = $aresult[2] $amask[2] = $aresult[3] Return $amask EndFunc Func _winapi_getsavefilename($stitle = "", $sfilter = "All files (*.*)", $sinitaldir = ".", $sdefaultfile = "", $sdefaultext = "", $ifilterindex = 1, $iflags = 0, $iflagsex = 0, $hwndowner = 0) Local $ipathlen = 4096 Local $tofn = DllStructCreate($tagopenfilename) Local $afiles[1] = [0] Local $iflag = $iflags Local $asflines = StringSplit($sfilter, "|") Local $asfilter[$asflines[0] * 2 + 1] Local $istart, $ifinal, $tagfilter $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), $str_stripleading + $str_striptrailing) $asfilter[$i * 2] = StringStripWS(StringTrimRight(StringTrimLeft($asflines[$i], $istart), StringLen($asflines[$i]) - $ifinal + 1), $str_stripleading + $str_striptrailing) $tagfilter &= "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($tagfilter & "wchar") Local $tpath = DllStructCreate("wchar Path[" & $ipathlen & "]") Local $textn = DllStructCreate("wchar Extension[" & StringLen($sdefaultext) + 1 & "]") For $i = 1 To $asfilter[0] DllStructSetData($tfilter, $i, $asfilter[$i]) Next DllStructSetData($ttitle, "Title", $stitle) DllStructSetData($tinitialdir, "InitDir", $sinitaldir) DllStructSetData($tpath, "Path", $sdefaultfile) DllStructSetData($textn, "Extension", $sdefaultext) DllStructSetData($tofn, "StructSize", DllStructGetSize($tofn)) DllStructSetData($tofn, "hwndOwner", $hwndowner) DllStructSetData($tofn, "lpstrFilter", DllStructGetPtr($tfilter)) DllStructSetData($tofn, "nFilterIndex", $ifilterindex) DllStructSetData($tofn, "lpstrFile", DllStructGetPtr($tpath)) DllStructSetData($tofn, "nMaxFile", $ipathlen) DllStructSetData($tofn, "lpstrInitialDir", DllStructGetPtr($tinitialdir)) DllStructSetData($tofn, "lpstrTitle", DllStructGetPtr($ttitle)) DllStructSetData($tofn, "Flags", $iflag) DllStructSetData($tofn, "lpstrDefExt", DllStructGetPtr($textn)) DllStructSetData($tofn, "FlagsEx", $iflagsex) Local $ares = DllCall("comdlg32.dll", "bool", "GetSaveFileNameW", "struct*", $tofn) If @error OR NOT $ares[0] Then Return SetError(@error + 10, @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", "INT", "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) Local $aret = DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hdc, "wstr", $stext, "int", $isize, "struct*", $tsize) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @extended, 0) Return $tsize EndFunc Func _winapi_gettextmetrics($hdc) Local $ttextmetric = DllStructCreate($tagtextmetric) Local $aret = DllCall("gdi32.dll", "bool", "GetTextMetricsW", "handle", $hdc, "struct*", $ttextmetric) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @extended, 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 OR NOT $aresult[0] Then Return SetError(@error + 10, @extended, 0) Return $aresult[0] EndFunc Func _winapi_getwindowplacement($hwnd) Local $twindowplacement = DllStructCreate($tagwindowplacement) DllStructSetData($twindowplacement, "length", DllStructGetSize($twindowplacement)) Local $aret = DllCall("user32.dll", "bool", "GetWindowPlacement", "hwnd", $hwnd, "struct*", $twindowplacement) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @extended, 0) Return $twindowplacement EndFunc Func _winapi_getwindowrect($hwnd) Local $trect = DllStructCreate($tagrect) Local $aret = DllCall("user32.dll", "bool", "GetWindowRect", "hwnd", $hwnd, "struct*", $trect) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @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 OR NOT $aresult[0] Then Return SetError(@error + 10, @extended, "") Return SetExtended($aresult[0], $aresult[2]) EndFunc Func _winapi_getwindowthreadprocessid($hwnd, ByRef $ipid) Local $aresult = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $hwnd, "dword*", 0) If @error Then Return SetError(@error, @extended, 0) $ipid = $aresult[2] Return $aresult[0] EndFunc Func _winapi_getwindowwidth($hwnd) Local $trect = _winapi_getwindowrect($hwnd) If @error Then Return SetError(@error, @extended, 0) Return DllStructGetData($trect, "Right") - DllStructGetData($trect, "Left") EndFunc Func _winapi_getxyfrompoint(ByRef $tpoint, ByRef $ix, ByRef $iy) $ix = DllStructGetData($tpoint, "X") $iy = DllStructGetData($tpoint, "Y") EndFunc Func _winapi_globalmemorystatus() Local $tmem = DllStructCreate($tagmemorystatusex) DllStructSetData($tmem, 1, DllStructGetSize($tmem)) Local $aret = DllCall("kernel32.dll", "bool", "GlobalMemoryStatusEx", "struct*", $tmem) If @error OR NOT $aret[0] Then Return SetError(@error + 10, @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 + 10, @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 = $__g_ainprocess_winapi[0][0] To 1 Step -1 If $hwnd = $__g_ainprocess_winapi[$ii][0] Then If $__g_ainprocess_winapi[$ii][1] Then $hlastwnd = $hwnd Return True Else Return False EndIf EndIf Next Local $ipid _winapi_getwindowthreadprocessid($hwnd, $ipid) Local $icount = $__g_ainprocess_winapi[0][0] + 1 If $icount >= 64 Then $icount = 1 $__g_ainprocess_winapi[0][0] = $icount $__g_ainprocess_winapi[$icount][0] = $hwnd $__g_ainprocess_winapi[$icount][1] = ($ipid = @AutoItPID) Return $__g_ainprocess_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, $berase = True) Local $aresult = DllCall("user32.dll", "bool", "InvalidateRect", "hwnd", $hwnd, "struct*", $trect, "bool", $berase) 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(10, 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 OR NOT $aresult[0] Then Return SetError(@error + 10, @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($iprimary, $isub) Return BitOR(BitShift($isub, -10), $iprimary) EndFunc Func _winapi_makelcid($ilgid, $isrtid) Return BitOR(BitShift($isrtid, -16), $ilgid) EndFunc Func _winapi_makelong($ilo, $ihi) Return BitOR(BitShift($ihi, -16), BitAND($ilo, 65535)) EndFunc Func _winapi_makeqword($ilodword, $ihidword) Local $tint64 = DllStructCreate("uint64") Local $tdwords = DllStructCreate("dword;dword", DllStructGetPtr($tint64)) DllStructSetData($tdwords, 1, $ilodword) DllStructSetData($tdwords, 2, $ihidword) 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, $brepaint = True) Local $aresult = DllCall("user32.dll", "bool", "MoveWindow", "hwnd", $hwnd, "int", $ix, "int", $iy, "int", $iwidth, "int", $iheight, "bool", $brepaint) 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 OR NOT $aresult[0] Then Return SetError(@error + 10, @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 OR NOT $aresult[0] Then Return SetError(@error + 20, @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, $binherit, $ipid, $bdebugpriv = False) Local $aresult = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $iaccess, "bool", $binherit, "dword", $ipid) If @error Then Return SetError(@error, @extended, 0) If $aresult[0] Then Return $aresult[0] If NOT $bdebugpriv Then Return SetError(100, 0, 0) Local $htoken = _security__openthreadtokenex(BitOR($token_adjust_privileges, $token_query)) If @error Then Return SetError(@error + 10, @extended, 0) _security__setprivilege($htoken, "SeDebugPrivilege", True) Local $ierror = @error Local $iextended = @extended Local $iret = 0 If NOT @error Then $aresult = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $iaccess, "bool", $binherit, "dword", $ipid) $ierror = @error $iextended = @extended If $aresult[0] Then $iret = $aresult[0] _security__setprivilege($htoken, "SeDebugPrivilege", False) If @error Then $ierror = @error + 20 $iextended = @extended EndIf Else $ierror = @error + 30 EndIf _winapi_closehandle($htoken) Return SetError($ierror, $iextended, $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 $sfile, $aextrapaths = "", Const $spathdelimiter = @LF) Local $iextracount = 0 If IsString($aextrapaths) Then If StringLen($aextrapaths) Then $aextrapaths = StringSplit($aextrapaths, $spathdelimiter, $str_entiresplit + $str_nocount) $iextracount = UBound($aextrapaths, $ubound_rows) EndIf ElseIf IsArray($aextrapaths) Then $iextracount = UBound($aextrapaths) EndIf Local $tpaths, $tpathptrs If $iextracount Then Local $tagstruct = "" For $path In $aextrapaths $tagstruct &= "wchar[" & StringLen($path) + 1 & "];" Next $tpaths = DllStructCreate($tagstruct) $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", $sfile, "struct*", $tpathptrs) If @error OR NOT $aresult[0] Then Return SetError(@error + 10, @extended, $sfile) Return $aresult[1] EndFunc Func _winapi_pointfromrect(ByRef $trect, $bcenter = True) Local $ix1 = DllStructGetData($trect, "Left") Local $iy1 = DllStructGetData($trect, "Top") Local $ix2 = DllStructGetData($trect, "Right") Local $iy2 = DllStructGetData($trect, "Bottom") If $bcenter 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($ilgid) Return BitAND($ilgid, 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(@error, @extended, False) Return $aresult[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, "INT", $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, "INT", $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, $bredraw = True) _sendmessage($hwnd, $__winapiconstant_wm_setfont, $hfont, $bredraw, 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, $itranscolor, $itransgui = 255, $iflags = 3, $bcolorref = False) If $iflags = Default OR $iflags = "" OR $iflags < 0 Then $iflags = 3 If NOT $bcolorref Then $itranscolor = Int(BinaryMid($itranscolor, 3, 1) & BinaryMid($itranscolor, 2, 1) & BinaryMid($itranscolor, 1, 1)) EndIf Local $aresult = DllCall("user32.dll", "bool", "SetLayeredWindowAttributes", "hwnd", $hwnd, "INT", $itranscolor, "byte", $itransgui, "dword", $iflags) 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 $bisearray = IsArray($velements), $biscarray = IsArray($vcolors) Local $ielementnum If NOT $biscarray AND NOT $bisearray Then $ielementnum = 1 ElseIf $biscarray OR $bisearray Then If NOT $biscarray OR NOT $bisearray 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("INT NewColor[" & $ielementnum & "]") If NOT $bisearray Then DllStructSetData($telements, "Element", $velements, 1) Else For $x = 0 To $ielementnum - 1 DllStructSetData($telements, "Element", $velements[$x], $x + 1) Next EndIf If NOT $biscarray 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, "INT", $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, $pfn, $hmod, $ithreadid = 0) Local $aresult = DllCall("user32.dll", "handle", "SetWindowsHookEx", "int", $idhook, "ptr", $pfn, "handle", $hmod, "dword", $ithreadid) 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($bshow) Local $aresult = DllCall("user32.dll", "int", "ShowCursor", "bool", $bshow) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_showerror($stext, $bexit = True) _winapi_msgbox($mb_systemmodal, "Error", $stext) If $bexit Then Exit EndFunc Func _winapi_showmsg($stext) _winapi_msgbox($mb_systemmodal, "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 OR NOT $aresult[0] Then Return SetError(@error, @extended, "") Return SetExtended($aresult[0], $aresult[2]) EndFunc Func _winapi_stringlena(Const ByRef $tstring) Local $aresult = DllCall("kernel32.dll", "int", "lstrlenA", "struct*", $tstring) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_stringlenw(Const ByRef $tstring) Local $aresult = DllCall("kernel32.dll", "int", "lstrlenW", "struct*", $tstring) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_sublangid($ilgid) Return BitShift($ilgid, 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 $hdc, $itwipsperpixelx $hdc = _winapi_getdc(0) $itwipsperpixelx = 1440 / _winapi_getdevicecaps($hdc, $__winapiconstant_logpixelsx) _winapi_releasedc(0, $hdc) Return $itwipsperpixelx EndFunc Func _winapi_twipsperpixely() Local $hdc, $itwipsperpixely $hdc = _winapi_getdc(0) $itwipsperpixely = 1440 / _winapi_getdevicecaps($hdc, $__winapiconstant_logpixelsy) _winapi_releasedc(0, $hdc) Return $itwipsperpixely 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, $bwaitall = False, $itimeout = -1) Local $aresult = DllCall("kernel32.dll", "INT", "WaitForMultipleObjects", "dword", $icount, "ptr", $phandles, "bool", $bwaitall, "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 OR NOT $aresult[0] Then Return SetError(@error + 20, @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 OR NOT $aresult[0] Then Return SetError(@error + 10, @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(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_writeconsole($hconsole, $stext) Local $aresult = DllCall("kernel32.dll", "bool", "WriteConsoleW", "handle", $hconsole, "wstr", $stext, "dword", StringLen($stext), "dword*", 0, "ptr", 0) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_writefile($hfile, $pbuffer, $itowrite, ByRef $iwritten, $poverlapped = 0) Local $aresult = DllCall("kernel32.dll", "bool", "WriteFile", "handle", $hfile, "ptr", $pbuffer, "dword", $itowrite, "dword*", 0, "ptr", $poverlapped) If @error Then Return SetError(@error, @extended, False) $iwritten = $aresult[4] Return $aresult[0] EndFunc Func _winapi_writeprocessmemory($hprocess, $pbaseaddress, $pbuffer, $isize, ByRef $iwritten, $sbuffer = "ptr") Local $aresult = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", $hprocess, "ptr", $pbaseaddress, $sbuffer, $pbuffer, "ulong_ptr", $isize, "ulong_ptr*", 0) If @error Then Return SetError(@error, @extended, False) $iwritten = $aresult[5] Return $aresult[0] EndFunc Global Const $sini = @ScriptDir & "\config.ini" Global Const $sappname = "Windowed Borderless Gaming" Global Const $sfriendlyname = "WindowedBorderlessGaming" AutoItWinSetTitle("winborderlessgaming") Global Const $bs_groupbox = 7 Global Const $bs_bottom = 2048 Global Const $bs_center = 768 Global Const $bs_defpushbutton = 1 Global Const $bs_left = 256 Global Const $bs_multiline = 8192 Global Const $bs_pushbox = 10 Global Const $bs_pushlike = 4096 Global Const $bs_right = 512 Global Const $bs_rightbutton = 32 Global Const $bs_top = 1024 Global Const $bs_vcenter = 3072 Global Const $bs_flat = 32768 Global Const $bs_icon = 64 Global Const $bs_bitmap = 128 Global Const $bs_notify = 16384 Global Const $bs_splitbutton = 12 Global Const $bs_defsplitbutton = 13 Global Const $bs_commandlink = 14 Global Const $bs_defcommandlink = 15 Global Const $bcsif_glyph = 1 Global Const $bcsif_image = 2 Global Const $bcsif_style = 4 Global Const $bcsif_size = 8 Global Const $bcss_nosplit = 1 Global Const $bcss_stretch = 2 Global Const $bcss_alignleft = 4 Global Const $bcss_image = 8 Global Const $button_imagelist_align_left = 0 Global Const $button_imagelist_align_right = 1 Global Const $button_imagelist_align_top = 2 Global Const $button_imagelist_align_bottom = 3 Global Const $button_imagelist_align_center = 4 Global Const $bs_3state = 5 Global Const $bs_auto3state = 6 Global Const $bs_autocheckbox = 3 Global Const $bs_checkbox = 2 Global Const $bs_radiobutton = 4 Global Const $bs_autoradiobutton = 9 Global Const $bs_ownerdraw = 11 Global Const $gui_ss_default_button = 0 Global Const $gui_ss_default_checkbox = 0 Global Const $gui_ss_default_group = 0 Global Const $gui_ss_default_radio = 0 Global Const $bcm_first = 5632 Global Const $bcm_getidealsize = ($bcm_first + 1) Global Const $bcm_getimagelist = ($bcm_first + 3) Global Const $bcm_getnote = ($bcm_first + 10) Global Const $bcm_getnotelength = ($bcm_first + 11) Global Const $bcm_getsplitinfo = ($bcm_first + 8) Global Const $bcm_gettextmargin = ($bcm_first + 5) Global Const $bcm_setdropdownstate = ($bcm_first + 6) Global Const $bcm_setimagelist = ($bcm_first + 2) Global Const $bcm_setnote = ($bcm_first + 9) Global Const $bcm_setshield = ($bcm_first + 12) Global Const $bcm_setsplitinfo = ($bcm_first + 7) Global Const $bcm_settextmargin = ($bcm_first + 4) Global Const $bm_click = 245 Global Const $bm_getcheck = 240 Global Const $bm_getimage = 246 Global Const $bm_getstate = 242 Global Const $bm_setcheck = 241 Global Const $bm_setdontclick = 248 Global Const $bm_setimage = 247 Global Const $bm_setstate = 243 Global Const $bm_setstyle = 244 Global Const $bcn_first = -1250 Global Const $bcn_dropdown = ($bcn_first + 2) Global Const $bcn_hotitemchange = ($bcn_first + 1) Global Const $bn_clicked = 0 Global Const $bn_paint = 1 Global Const $bn_hilite = 2 Global Const $bn_unhilite = 3 Global Const $bn_disable = 4 Global Const $bn_doubleclicked = 5 Global Const $bn_setfocus = 6 Global Const $bn_killfocus = 7 Global Const $bn_pushed = $bn_hilite Global Const $bn_unpushed = $bn_unhilite Global Const $bn_dblclk = $bn_doubleclicked Global Const $bst_checked = 1 Global Const $bst_indeterminate = 2 Global Const $bst_unchecked = 0 Global Const $bst_focus = 8 Global Const $bst_pushed = 4 Global Const $bst_dontclick = 128 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 $gui_ss_default_combo = 2097218 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 $gui_ss_default_edit = 3150016 Global Const $gui_ss_default_input = 128 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 $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 Global Const $wc_animate = "SysAnimate32" Global Const $wc_button = "Button" Global Const $wc_combobox = "ComboBox" Global Const $wc_comboboxex = "ComboBoxEx32" Global Const $wc_datetimepick = "SysDateTimePick32" Global Const $wc_edit = "Edit" Global Const $wc_header = "SysHeader32" Global Const $wc_hotkey = "msctls_hotkey32" Global Const $wc_ipaddress = "SysIPAddress32" Global Const $wc_link = "SysLink" Global Const $wc_listbox = "ListBox" Global Const $wc_listview = "SysListView32" Global Const $wc_monthcal = "SysMonthCal32" Global Const $wc_nativefontctl = "NativeFontCtl" Global Const $wc_pagescroller = "SysPager" Global Const $wc_progress = "msctls_progress32" Global Const $wc_rebar = "ReBarWindow32" Global Const $wc_scrollbar = "ScrollBar" Global Const $wc_static = "Static" Global Const $wc_statusbar = "msctls_statusbar32" Global Const $wc_tabcontrol = "SysTabControl32" Global Const $wc_toolbar = "ToolbarWindow32" Global Const $wc_tooltips = "tooltips_class32" Global Const $wc_trackbar = "msctls_trackbar32" Global Const $wc_treeview = "SysTreeView32" Global Const $wc_updown = "msctls_updown32" Global Const $ws_overlapped = 0 Global Const $ws_tiled = $ws_overlapped 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 = $ws_sizebox 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 = BitOR($ws_caption, $ws_maximizebox, $ws_minimizebox, $ws_overlapped, $ws_sysmenu, $ws_thickframe) Global Const $ws_tiledwindow = $ws_overlappedwindow 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_iconic = $ws_minimize Global Const $ws_child = 1073741824 Global Const $ws_childwindow = $ws_child Global Const $ws_popup = -2147483648 Global Const $ws_popupwindow = -2138570752 Global Const $ds_3dlook = 4 Global Const $ds_absalign = 1 Global Const $ds_center = 2048 Global Const $ds_centermouse = 4096 Global Const $ds_contexthelp = 8192 Global Const $ds_control = 1024 Global Const $ds_fixedsys = 8 Global Const $ds_localedit = 32 Global Const $ds_modalframe = 128 Global Const $ds_nofailcreate = 16 Global Const $ds_noidlemsg = 256 Global Const $ds_setfont = 64 Global Const $ds_setforeground = 512 Global Const $ds_shellfont = BitOR($ds_fixedsys, $ds_setfont) Global Const $ds_sysmodal = 2 Global Const $ws_ex_acceptfiles = 16 Global Const $ws_ex_appwindow = 262144 Global Const $ws_ex_composited = 33554432 Global Const $ws_ex_controlparent = 65536 Global Const $ws_ex_clientedge = 512 Global Const $ws_ex_contexthelp = 1024 Global Const $ws_ex_dlgmodalframe = 1 Global Const $ws_ex_layered = 524288 Global Const $ws_ex_layoutrtl = 4194304 Global Const $ws_ex_left = 0 Global Const $ws_ex_leftscrollbar = 16384 Global Const $ws_ex_ltrreading = 0 Global Const $ws_ex_mdichild = 64 Global Const $ws_ex_noactivate = 134217728 Global Const $ws_ex_noinheritlayout = 1048576 Global Const $ws_ex_noparentnotify = 4 Global Const $ws_ex_right = 4096 Global Const $ws_ex_rightscrollbar = 0 Global Const $ws_ex_rtlreading = 8192 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_overlappedwindow = BitOR($ws_ex_clientedge, $ws_ex_windowedge) Global Const $ws_ex_palettewindow = BitOR($ws_ex_toolwindow, $ws_ex_topmost, $ws_ex_windowedge) Global Const $wm_null = 0 Global Const $wm_create = 1 Global Const $wm_destroy = 2 Global Const $wm_move = 3 Global Const $wm_sizewait = 4 Global Const $wm_size = 5 Global Const $wm_activate = 6 Global Const $wm_setfocus = 7 Global Const $wm_killfocus = 8 Global Const $wm_setvisible = 9 Global Const $wm_enable = 10 Global Const $wm_setredraw = 11 Global Const $wm_settext = 12 Global Const $wm_gettext = 13 Global Const $wm_gettextlength = 14 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_systemerror = 23 Global Const $wm_showwindow = 24 Global Const $wm_ctlcolor = 25 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_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_logoff = 37 Global Const $wm_painticon = 38 Global Const $wm_iconerasebkgnd = 39 Global Const $wm_nextdlgctl = 40 Global Const $wm_alttabactive = 41 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_filesyschange = 52 Global Const $wm_isactiveicon = 53 Global Const $wm_queryparkicon = 54 Global Const $wm_querydragicon = 55 Global Const $wm_winhelp = 56 Global Const $wm_compareitem = 57 Global Const $wm_fullscreen = 58 Global Const $wm_clientshutdown = 59 Global Const $wm_ddemlevent = 60 Global Const $wm_getobject = 61 Global Const $wm_calcscroll = 63 Global Const $wm_testing = 64 Global Const $wm_compacting = 65 Global Const $wm_otherwindowcreated = 66 Global Const $wm_otherwindowdestroyed = 67 Global Const $wm_commnotify = 68 Global Const $wm_mediastatuschange = 69 Global Const $wm_windowposchanging = 70 Global Const $wm_windowposchanged = 71 Global Const $wm_power = 72 Global Const $wm_copyglobaldata = 73 Global Const $wm_copydata = 74 Global Const $wm_canceljournal = 75 Global Const $wm_logonnotify = 76 Global Const $wm_keyf1 = 77 Global Const $wm_notify = 78 Global Const $wm_access_window = 79 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_qm_activate = 96 Global Const $wm_hook_do_callback = 97 Global Const $wm_syscopydata = 98 Global Const $wm_finaldestroy = 112 Global Const $wm_measureitem_clientdata = 113 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_synctask = 137 Global Const $wm_kludgeminrect = 139 Global Const $wm_lpkdrawswitchwnd = 140 Global Const $wm_uahdestroywindow = 144 Global Const $wm_uahdrawmenu = 145 Global Const $wm_uahdrawmenuitem = 146 Global Const $wm_uahinitmenu = 147 Global Const $wm_uahmeasuremenuitem = 148 Global Const $wm_uahncpaintmenupopup = 149 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_ncuahdrawcaption = 174 Global Const $wm_ncuahdrawframe = 175 Global Const $wm_input_device_change = 254 Global Const $wm_input = 255 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_yomichar = 264 Global Const $wm_keylast = 265 Global Const $wm_unichar = 265 Global Const $wm_convertrequest = 266 Global Const $wm_convertresult = 267 Global Const $wm_im_info = 268 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_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_systimer = 280 Global Const $wm_gesture = 281 Global Const $wm_gesturenotify = 282 Global Const $wm_gestureinput = 283 Global Const $wm_gesturenotified = 284 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_lbtrackpoint = 305 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 $mn_gethmenu = 481 Global Const $wm_parentnotify = 528 Global Const $wm_entermenuloop = 529 Global Const $wm_exitmenuloop = 530 Global Const $wm_nextmenu = 531 Global Const $wm_sizing = 532 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_dropobject = 554 Global Const $wm_querydropobject = 555 Global Const $wm_begindrag = 556 Global Const $wm_dragloop = 557 Global Const $wm_dragselect = 558 Global Const $wm_dragmove = 559 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_touch = 576 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_system = 647 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_sysmenu = 787 Global Const $wm_hookmsg = 788 Global Const $wm_exitprocess = 789 Global Const $wm_wakethread = 790 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_uahinit = 795 Global Const $wm_desktopnotify = 796 Global Const $wm_clipboardupdate = 797 Global Const $wm_dwmcompositionchanged = 798 Global Const $wm_dwmncrenderingchanged = 799 Global Const $wm_dwmcolorizationcolorchanged = 800 Global Const $wm_dwmwindowmaximizedchange = 801 Global Const $wm_dwmexileframe = 802 Global Const $wm_dwmsendiconicthumbnail = 803 Global Const $wm_magnification_started = 804 Global Const $wm_magnification_ended = 805 Global Const $wm_dwmsendiconiclivepreviewbitmap = 806 Global Const $wm_dwmthumbnailsizechanged = 807 Global Const $wm_magnification_output = 808 Global Const $wm_measurecontrol = 816 Global Const $wm_getactiontext = 817 Global Const $wm_forwardkeydown = 819 Global Const $wm_forwardkeyup = 820 Global Const $wm_gettitlebarinfoex = 831 Global Const $wm_notifywow = 832 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_dde_initiate = 992 Global Const $wm_dde_terminate = 993 Global Const $wm_dde_advise = 994 Global Const $wm_dde_unadvise = 995 Global Const $wm_dde_ack = 996 Global Const $wm_dde_data = 997 Global Const $wm_dde_request = 998 Global Const $wm_dde_poke = 999 Global Const $wm_dde_execute = 1000 Global Const $wm_dbnotification = 1021 Global Const $wm_netconnect = 1022 Global Const $wm_hibernate = 1023 Global Const $wm_user = 1024 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 $ps_userstyle = 7 Global Const $ps_alternate = 8 Global Const $ps_endcap_round = 0 Global Const $ps_endcap_square = 256 Global Const $ps_endcap_flat = 512 Global Const $ps_join_bevel = 4096 Global Const $ps_join_miter = 8192 Global Const $ps_join_round = 0 Global Const $ps_geometric = 65536 Global Const $ps_cosmetic = 0 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_preventpinning = 8192 Global Const $startf_runfullscreen = 32 Global Const $startf_titleisappid = 4096 Global Const $startf_titleislinkname = 2048 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) Func _gs_settingsgui() Local $label1, $hsection, $label10, $hfriendly, $hprocess, $label11, $label12, $hstyle, $hidentifier, $label2, $hidentifierdel, $label7, $hwidth, $label8, $hheight, $label13, $label14, $hposx, $label15, $hposy, $hsave, $happly, $hmanagemouse, $hmousewindow, $hmousehide, $hdelete, $a, $s, $i, $nmsg If _singleton("GS_WindowedBorderlessGaming", 1) = 0 Then WinActivate("[TITLE:Game Settings - " & $sappname & "; CLASS:AutoIt v3 GUI;]") Exit (0) EndIf Opt("GUICloseOnESC", 0) Local $hwnd = GUICreate("Game Settings - Windowed Borderless Gaming", 420, 517) GUISetFont(10, 400, 0, "MS Sans Serif") GUICtrlCreateGroup("General", 5, 5, 410, 217) $label1 = GUICtrlCreateLabel("Game:", 10, 25, 82, 25, $ss_centerimage) $hsection = GUICtrlCreateCombo("", 120, 26, 265, 25, BitOR($gui_ss_default_combo, $cbs_simple, $ws_hscroll, 256)) $label10 = GUICtrlCreateLabel("Friendly Name:", 10, 60, 106, 25, $ss_centerimage) $hfriendly = GUICtrlCreateInput("", 120, 60, 265, 24) $hprocess = GUICtrlCreateInput("", 120, 90, 265, 24, BitOR($gui_ss_default_input, $es_center)) GUICtrlSetState($hprocess, $gui_disable) GUICtrlSetTip($hprocess, "The process this window belongs too.") $label11 = GUICtrlCreateLabel("Process:", 10, 90, 58, 25, $ss_centerimage) GUICtrlSetTip($label11, "The process this window belongs too.") $label12 = GUICtrlCreateLabel("Style:", 10, 120, 58, 25, $ss_centerimage) GUICtrlSetTip($label12, "The style the window should have before changing it.") $hstyle = GUICtrlCreateInput("", 120, 120, 265, 24, BitOR($gui_ss_default_input, $es_center)) GUICtrlSetState($hstyle, $gui_disable) GUICtrlSetTip($hstyle, "The style the window should have before changing it.") $hidentifier = GUICtrlCreateInput("", 120, 150, 265, 24, BitOR($gui_ss_default_input, $es_center)) GUICtrlSetState($hidentifier, $gui_disable) GUICtrlSetTip($hidentifier, "The style the window should have before changing it.") $label2 = GUICtrlCreateLabel("Identifier:", 10, 150, 74, 25, $ss_centerimage) GUICtrlSetTip($label2, "The style the window should have before changing it.") $hidentifierdel = GUICtrlCreateButton("Remove title from identifier", 120, 180, 265, 25) GUICtrlSetTip($hidentifierdel, "Can not be undone!") GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup("Size && Offset", 5, 232, 410, 89) $label7 = GUICtrlCreateLabel("Resolution:", 10, 252, 90, 25, $ss_centerimage) $hwidth = GUICtrlCreateInput("", 120, 252, 57, 24, BitOR($gui_ss_default_input, $es_center, $es_number)) GUICtrlSetTip($hwidth, "Width") $label8 = GUICtrlCreateLabel("X", 178, 252, 25, 25, BitOR($ss_center, $ss_centerimage)) $hheight = GUICtrlCreateInput("", 208, 252, 57, 24, BitOR($gui_ss_default_input, $es_center, $es_number)) GUICtrlSetTip($hheight, "Height") $label13 = GUICtrlCreateLabel("Offset:", 10, 282, 58, 25, $ss_centerimage) $label14 = GUICtrlCreateLabel("X:", 90, 282, 25, 25, BitOR($ss_center, $ss_centerimage)) GUICtrlSetFont($label14, 10, 800, 0, "MS Sans Serif") GUICtrlSetTip($label14, "Horizontal") $hposx = GUICtrlCreateInput("", 120, 282, 57, 24, BitOR($gui_ss_default_input, $es_center)) GUICtrlSetTip($hposx, "Horizontal") $label15 = GUICtrlCreateLabel("Y:", 178, 282, 25, 25, BitOR($ss_center, $ss_centerimage)) GUICtrlSetFont($label15, 10, 800, 0, "MS Sans Serif") GUICtrlSetTip($label15, "Vertical") $hposy = GUICtrlCreateInput("", 208, 282, 57, 24, BitOR($gui_ss_default_input, $es_center)) GUICtrlSetTip($hposy, "Vertical") GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup("Mouse options", 5, 329, 410, 105) $hmanagemouse = GUICtrlCreateCheckbox("Manage mouse", 10, 349, 129, 25) GUIStartGroup() $hmousewindow = GUICtrlCreateRadio("Lock to game window", 10, 374, 201, 25) GUICtrlSetState($hmousewindow, $gui_checked) GUICtrlSetFont($hmousewindow, 10, 400, 0, "MS Sans Serif") GUICtrlSetState($hmousewindow, $gui_disable) $hmousehide = GUICtrlCreateRadio("Lock to hide", 10, 399, 145, 25) GUICtrlSetFont($hmousehide, 10, 400, 0, "MS Sans Serif") GUICtrlSetState($hmousehide, $gui_disable) GUIStartGroup() GUICtrlCreateGroup("", -99, -99, 1, 1) $hsave = GUICtrlCreateButton("&Ok", 5, 456, 125, 25) GUICtrlSetTip($hsave, "Close window.") $hdelete = GUICtrlCreateButton("&Delete", 145, 456, 125, 25) GUICtrlSetTip($hdelete, "Stop managing this game.") $happly = GUICtrlCreateButton("&Apply", 290, 456, 125, 25) GUICtrlSetTip($happly, "If the window exists then these settings will be aplied now.") Local $agamelist = _gs_getgames($hsection) Local $sactivegame = _gs_getcurrentsection($hsection, $agamelist) GUICtrlSetData($hfriendly, GUICtrlRead($hsection)) GUICtrlSetData($hprocess, IniRead($sini, $sactivegame, "Process", "ERROR")) GUICtrlSetData($hstyle, IniRead($sini, $sactivegame, "Style", "ERROR")) GUICtrlSetData($hidentifier, $sactivegame) GUICtrlSetData($hwidth, IniRead($sini, $sactivegame, "Width", "")) GUICtrlSetData($hheight, IniRead($sini, $sactivegame, "Height", "")) GUICtrlSetData($hposx, IniRead($sini, $sactivegame, "PosX", 0)) GUICtrlSetData($hposy, IniRead($sini, $sactivegame, "PosY", 0)) If IniRead($sini, $sactivegame, "MouseLock", "never") = "never" Then GUICtrlSetState($hmanagemouse, 4) GUICtrlSetState($hmousewindow, 128 + 1) GUICtrlSetState($hmousehide, 128 + 4) ElseIf IniRead($sini, $sactivegame, "MouseLock", "never") = "window" Then GUICtrlSetState($hmanagemouse, 1) GUICtrlSetState($hmousewindow, 64 + 1) GUICtrlSetState($hmousehide, 64 + 4) ElseIf IniRead($sini, $sactivegame, "MouseLock", "never") = "hidden" Then GUICtrlSetState($hmanagemouse, 1) GUICtrlSetState($hmousewindow, 64 + 4) GUICtrlSetState($hmousehide, 64 + 1) EndIf GUISetState(@SW_SHOW) WinSetOnTop($hwnd, "", 1) While 1 $nmsg = GUIGetMsg() Switch $nmsg Case $gui_event_close ControlClick($hwnd, "", $hsave, "primary") Case $hsection $sactivegame = _gs_getcurrentsection($hsection, $agamelist) GUICtrlSetData($hfriendly, GUICtrlRead($hsection)) GUICtrlSetData($hprocess, IniRead($sini, $sactivegame, "Process", "ERROR")) GUICtrlSetData($hstyle, IniRead($sini, $sactivegame, "Style", "ERROR")) GUICtrlSetData($hidentifier, $sactivegame) GUICtrlSetData($hwidth, IniRead($sini, $sactivegame, "Width", "")) GUICtrlSetData($hheight, IniRead($sini, $sactivegame, "Height", "")) GUICtrlSetData($hposx, IniRead($sini, $sactivegame, "PosX", 0)) GUICtrlSetData($hposy, IniRead($sini, $sactivegame, "PosY", 0)) If IniRead($sini, $sactivegame, "MouseLock", "never") = "never" Then GUICtrlSetState($hmanagemouse, 4) GUICtrlSetState($hmousewindow, 128 + 1) GUICtrlSetState($hmousehide, 128 + 4) ElseIf IniRead($sini, $sactivegame, "MouseLock", "never") = "window" Then GUICtrlSetState($hmanagemouse, 1) GUICtrlSetState($hmousewindow, 64 + 1) GUICtrlSetState($hmousehide, 64 + 4) ElseIf IniRead($sini, $sactivegame, "MouseLock", "never") = "hidden" Then GUICtrlSetState($hmanagemouse, 1) GUICtrlSetState($hmousewindow, 64 + 4) GUICtrlSetState($hmousehide, 64 + 1) EndIf Case $hfriendly IniWrite($sini, $sactivegame, "friendlyname", "") $s = _gs_getuniquefriendlyname(GUICtrlRead($hfriendly)) IniWrite($sini, $sactivegame, "friendlyname", $s) IniWrite($sini, "Global_Config", "LastUsed", $s) GUICtrlSetData($hsection, "") $agamelist = _gs_getgames($hsection) Case $hidentifierdel If MsgBox(4 + 32, $sappname, "This action can not be undone, continue?", 0, $hwnd) = 6 Then GUICtrlSetData($hidentifier, StringRegExpReplace(GUICtrlRead($hidentifier), "(?i)(Title\:.*;Class)", "Class")) $a = IniReadSection($sini, $sactivegame) IniDelete($sini, $sactivegame) IniWriteSection($sini, GUICtrlRead($hidentifier), $a) IniWrite($sini, "Global_Config", "LastUsed", GUICtrlRead($hsection)) GUICtrlSetData($hsection, "") $agamelist = _gs_getgames($hsection) $sactivegame = _gs_getcurrentsection($hsection, $agamelist) EndIf Case $hwidth If GUICtrlRead($hwidth) <> "" AND GUICtrlRead($hheight) <> "" Then IniWrite($sini, $sactivegame, "Width", GUICtrlRead($hwidth)) IniWrite($sini, $sactivegame, "Height", GUICtrlRead($hheight)) ElseIf GUICtrlRead($hwidth) = "" Then IniDelete($sini, $sactivegame, "Width") IniDelete($sini, $sactivegame, "Height") GUICtrlSetData($hheight, "") EndIf Case $hheight If GUICtrlRead($hwidth) <> "" AND GUICtrlRead($hheight) <> "" Then IniWrite($sini, $sactivegame, "Width", GUICtrlRead($hwidth)) IniWrite($sini, $sactivegame, "Height", GUICtrlRead($hheight)) ElseIf GUICtrlRead($hheight) = "" Then IniDelete($sini, $sactivegame, "Width") IniDelete($sini, $sactivegame, "Height") GUICtrlSetData($hwidth, "") EndIf Case $hposx GUICtrlSetData($hposx, Number(StringRegExpReplace(GUICtrlRead($hposx), "[^0-9\-]", ""))) $i = GUICtrlRead($hposx) If $i = 0 OR $i = "" Then IniDelete($sini, $sactivegame, "PosX") If $i <> 0 AND $i <> "" Then IniWrite($sini, $sactivegame, "PosX", $i) Case $hposy GUICtrlSetData($hposy, Number(StringRegExpReplace(GUICtrlRead($hposy), "[^0-9\-]", ""))) $i = GUICtrlRead($hposy) If $i = 0 OR $i = "" Then IniDelete($sini, $sactivegame, "PosY") If $i <> 0 AND $i <> "" Then IniWrite($sini, $sactivegame, "PosY", $i) Case $hsave IniWrite($sini, "Global_Config", "LastUsed", GUICtrlRead($hsection)) Exit Case $hmanagemouse If GUICtrlRead($hmanagemouse) = 4 Then GUICtrlSetState($hmousewindow, 128) GUICtrlSetState($hmousehide, 128) IniDelete($sini, $sactivegame, "MouseLock") Else GUICtrlSetState($hmousewindow, 64) GUICtrlSetState($hmousehide, 64) If GUICtrlRead($hmousewindow) = 1 Then IniWrite($sini, $sactivegame, "MouseLock", "window") If GUICtrlRead($hmousehide) = 1 Then IniWrite($sini, $sactivegame, "MouseLock", "hidden") EndIf Case $hmousewindow If GUICtrlRead($hmousewindow) = 1 Then IniWrite($sini, $sactivegame, "MouseLock", "window") If GUICtrlRead($hmousehide) = 1 Then IniWrite($sini, $sactivegame, "MouseLock", "hidden") Case $hmousehide If GUICtrlRead($hmousewindow) = 1 Then IniWrite($sini, $sactivegame, "MouseLock", "window") If GUICtrlRead($hmousehide) = 1 Then IniWrite($sini, $sactivegame, "MouseLock", "hidden") Case $hdelete If MsgBox(4 + 32, $sappname, "Stop managing this game's borderless settings?", 0, $hwnd) = 6 Then IniDelete($sini, $sactivegame) IniDelete($sini, "Global_Config", "LastUsed") $agamelist = _gs_getgames($hsection) $sactivegame = _gs_getcurrentsection($hsection, $agamelist) GUICtrlSetData($hfriendly, GUICtrlRead($hsection)) GUICtrlSetData($hprocess, IniRead($sini, $sactivegame, "Process", "ERROR")) GUICtrlSetData($hstyle, IniRead($sini, $sactivegame, "Style", "ERROR")) GUICtrlSetData($hidentifier, $sactivegame) GUICtrlSetData($hwidth, IniRead($sini, $sactivegame, "Width", "")) GUICtrlSetData($hheight, IniRead($sini, $sactivegame, "Height", "")) GUICtrlSetData($hposx, IniRead($sini, $sactivegame, "PosX", 0)) GUICtrlSetData($hposy, IniRead($sini, $sactivegame, "PosY", 0)) If IniRead($sini, $sactivegame, "MouseLock", "never") = "never" Then GUICtrlSetState($hmanagemouse, 4) GUICtrlSetState($hmousewindow, 128 + 1) GUICtrlSetState($hmousehide, 128 + 4) ElseIf IniRead($sini, $sactivegame, "MouseLock", "never") = "window" Then GUICtrlSetState($hmanagemouse, 1) GUICtrlSetState($hmousewindow, 64 + 1) GUICtrlSetState($hmousehide, 64 + 4) ElseIf IniRead($sini, $sactivegame, "MouseLock", "never") = "hidden" Then GUICtrlSetState($hmanagemouse, 1) GUICtrlSetState($hmousewindow, 64 + 4) GUICtrlSetState($hmousehide, 64 + 1) EndIf EndIf Case $happly _gs_apply($sactivegame) WinActivate($hwnd) EndSwitch WEnd EndFunc Func _gs_apply($ssection) Local $hwnd = WinGetHandle("[" & $ssection & "]") If NOT WinExists($hwnd) Then Return 1 WinActivate($hwnd) _winapi_setwindowlong($hwnd, -16, -2147483648 + 268435456 + 131072) WinSetState($hwnd, "", @SW_MINIMIZE) WinActivate($hwnd) Local $asize[4] = [IniRead($sini, $ssection, "Width", ""), IniRead($sini, $ssection, "Height", ""), IniRead($sini, $ssection, "PosX", 0), IniRead($sini, $ssection, "PosY", 0)] If $asize[0] = "" OR $asize[1] = "" Then WinMove($hwnd, "", $asize[2], $asize[3]) Else WinMove($hwnd, "", $asize[2], $asize[3], $asize[0], $asize[1]) EndIf EndFunc Func _gs_getcurrentsection($hcontrol, $asections) Local $i, $s $s = GUICtrlRead($hcontrol) For $i = 1 To UBound($asections) - 1 If $s = $asections[$i][1] Then Return $asections[$i][0] Next EndFunc Func _gs_getgames($hcontrol) Local $areturn, $i, $inumber, $s Local $asections = IniReadSectionNames($sini) If @error Then Return SetError(1, 0, 0) Dim $areturn[UBound($asections)][2] For $i = 1 To UBound($asections) - 1 If $asections[$i] = "Global_Config" Then ContinueLoop $areturn[$i][0] = $asections[$i] $areturn[$i][1] = IniRead($sini, $asections[$i], "friendlyname", "ERRORR") If $areturn[$i][1] = "ERRORR" Then $areturn[$i][1] = _gs_getuniquefriendlyname(StringRegExpReplace($asections[$i], "(Title\:)|(\;*Class\:.{1,})", "")) IniWrite($sini, $areturn[$i][0], "friendlyname", $areturn[$i][1]) EndIf $s &= $areturn[$i][1] & "|" Next GUICtrlSetData($hcontrol, "") GUICtrlSetData($hcontrol, $s, IniRead($sini, "Global_Config", "LastUsed", $areturn[UBound($areturn) - 1][1])) Return $areturn EndFunc Func _gs_getuniquefriendlyname($s) $s = StringRegExpReplace($s, "(\[)|(\])", "") Local $asections = IniReadSectionNames($sini) If @error Then Return SetError(1, 0, 0) $asections[0] = "" For $i = 0 To UBound($asections) - 1 $asections[$i] = IniRead($sini, $asections[$i], "friendlyname", "") Next For $i = 0 To UBound($asections) - 1 If $s = $asections[$i] Then ExitLoop If $i = UBound($asections) - 1 Then Return $s Next If $s <> "" Then $s &= " " For $inumber = 1 To 99999 For $i = 0 To UBound($asections) - 1 If $s & StringFormat("%03i", $inumber) = $asections[$i] Then ExitLoop If $i = UBound($asections) - 1 Then Return $s & StringFormat("%03i", $inumber) Next Next EndFunc Func _inidelete($sini, $ssection, $skey = "") If $skey = "" Then $skey = Default $ssection = StringReplace($ssection, "[", "[") $ssection = StringReplace($ssection, "]", "]") Return IniDelete($sini, $ssection, $skey) EndFunc Func _iniread($sini, $ssection, $skey, $sdefault) $ssection = StringReplace($ssection, "[", "[") $ssection = StringReplace($ssection, "]", "]") Return IniRead($sini, $ssection, $skey, $sdefault) EndFunc Func _inireadsectionnames($sini) Local $areturn[2], $a, $i $areturn[0] = @error $areturn[1] = @extended $a = IniReadSectionNames($sini) For $i = 1 To UBound($a) - 1 If $a[$i] = "Global_Config" Then $a[$i] = "" $a[$i] = StringReplace($a[$i], "[", "[") $a[$i] = StringReplace($a[$i], "]", "]") Next Return SetError($areturn[0], $areturn[1], $a) EndFunc Func _inireadsection($sini, $ssection) Local $a[3] $ssection = StringReplace($ssection, "[", "[") $ssection = StringReplace($ssection, "]", "]") $a[2] = IniReadSection($sini, $ssection) $a[0] = @error $a[1] = @extended Return SetError($a[0], $a[1], $a[2]) EndFunc Func _iniwrite($sini, $ssection, $skey, $s) $ssection = StringReplace($ssection, "[", "[") $ssection = StringReplace($ssection, "]", "]") Return IniWrite($sini, $ssection, $skey, $s) EndFunc Func _ispressedfriendlyname($shexkey = -1, $sfriendlyname = -1) Local $i Local $ahexkeys = __ispressedfriendlynamearrays("hex") Local $afriendly = __ispressedfriendlynamearrays("friendly") Select Case $shexkey <> -1 For $i = 0 To UBound($ahexkeys) - 1 If $ahexkeys[$i] == $shexkey Then Return $afriendly[$i] Next Return SetError(1, 0, 0) Case $sfriendlyname <> -1 For $i = 0 To UBound($afriendly) - 1 If $afriendly[$i] == $sfriendlyname Then Return $ahexkeys[$i] Next Return SetError(1, 0, 0) EndSelect Return SetError(2, 0, 0) EndFunc Func _ispressedfriendlyuserinput() Local $a[2], $i Local $dll = DllOpen("user32.dll") Local $ahexkeys = __ispressedfriendlynamearrays("hex") While 1 For $i = 0 To UBound($ahexkeys) - 1 If _ispressed($ahexkeys[$i]) Then $a[0] = $ahexkeys[$i] ExitLoop EndIf Next If $a[0] <> "" Then ExitLoop Sleep(5) WEnd Local $itimerinit = TimerInit() While TimerDiff($itimerinit) < 800 For $i = 0 To UBound($ahexkeys) - 1 If _ispressed($ahexkeys[$i]) AND $ahexkeys[$i] <> $a[0] Then $a[1] = $ahexkeys[$i] ExitLoop EndIf Next If $a[1] <> "" Then ExitLoop Sleep(5) WEnd If $a[1] = "" Then ReDim $a[1] DllClose($dll) Return $a EndFunc Func __ispressedfriendlynamearrays($stype, $saction = "press") Local $areturn Select Case $stype = "hex" Dim $areturn[103] = ["08", "09", "0D", "11", "12", "13", "14", "1B", "20", "21", "22", "23", "24", "25", "26", "27", "28", "2C", "2D", "2E", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "90", "91", "A0", "A1", "A2", "A3", "BA", "BB", "BC", "BD", "BE", "BF", "C0", "DB", "DC", "DD"] Case $stype = "friendly" Dim $areturn[103] = ["Backspace", "TAB", "ENTER", "CTRL", "ALT", "PAUSE", "CAPS LOCK", "ESC", "SPACEBAR", "PAGE UP", "PAGE DOWN", "END", "HOME", "LEFT ARROW", "UP ARROW", "RIGHT ARROW", "DOWN ARROW", "PRINT SCREEN", "INS", "DEL", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Left Windows key", "Right Windows key", "NUMPAD 0", "NUMPAD 1", "NUMPAD 2", "NUMPAD 3", "NUMPAD 4", "NUMPAD 5", "NUMPAD 6", "NUMPAD 7", "NUMPAD 8", "NUMPAD 9", "NUMPAD *", "NUMPAD +", "Separator", "NUMPAD -", "NUMPAD .", "NUMPAD /", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "NUM LOCK", "SCROLL LOCK", "Left SHIFT", "Right SHIFT", "Left CONTROL", "Right CONTROL", ";", "=", ",", "-", ".", "/", "`", "[", "\", "]"] Case $stype = "send" AND $saction = "press" Dim $areturn[103] = ["{BACKSPACE}", "{TAB}", "{ENTER}", "{LCTRL}", "{ALT}", "{PAUSE}", "{CAPSLOCK off}", "{ESC}", "{SPACE}", "{PGUP}", "{PGDN}", "{END}", "{HOME}", "{LEFT}", "{UP}", "{RIGHT}", "{DOWN}", "{PRINTSCREEN}", "{INS}", "{DEL}", "{0}", "{1}", "{2}", "{3}", "{4}", "{5}", "{6}", "{7}", "{8}", "{9}", "{a}", "{b}", "{c}", "{d}", "{e}", "{f}", "{g}", "{h}", "{i}", "{j}", "{k}", "{l}", "{m}", "{n}", "{o}", "{p}", "{q}", "{r}", "{s}", "{t}", "{u}", "{v}", "{w}", "{x}", "{y}", "{z}", "{LWIN}", "{RWIN}", "{NUMPAD0}", "{NUMPAD1}", "{NUMPAD2}", "{NUMPAD3}", "{NUMPAD4}", "{NUMPAD5}", "{NUMPAD6}", "{NUMPAD7}", "{NUMPAD8}", "{NUMPAD9}", "{NUMPADMULT}", "{NUMPADADD}", "{|}", "{NUMPADSUB}", "{NUMPADDOT}", "{NUMPADDIV}", "{F1}", "{F2}", "{F3}", "{F4}", "{F5}", "{F6}", "{F7}", "{F8}", "{F9}", "{F10}", "{F11}", "{F12}", "{NUMLOCK on}", "{SCROLLLOCK toggle}", "{LSHIFT}", "{LSHIFT}", "{LCTRL}", "{RCTRL}", "{;}", "{=}", "{,}", "{-}", "{.}", "{/}", "{`}", "{[}", "{\}", "{]}"] Case $stype = "send" AND $saction = "down" Dim $areturn[103] = ["{BACKSPACE down}", "{TAB down}", "{ENTER down}", "{LCTRL down}", "{ALTDOWN}", "{PAUSE down}", "{CAPSLOCK down}", "{ESC down}", "{SPACE down}", "{PGUP down}", "{PGDN down}", "{END down}", "{HOME down}", "{LEFT down}", "{UP down}", "{RIGHT down}", "{DOWN down}", "{PRINTSCREEN down}", "{INS down}", "{DEL down}", "{0 down}", "{1 down}", "{2 down}", "{3 down}", "{4 down}", "{5 down}", "{6 down}", "{7 down}", "{8 down}", "{9 down}", "{a down}", "{b down}", "{c down}", "{d down}", "{e down}", "{f down}", "{g down}", "{h down}", "{i down}", "{j down}", "{k down}", "{l down}", "{m down}", "{n down}", "{o down}", "{p down}", "{q down}", "{r down}", "{s down}", "{t down}", "{u down}", "{v down}", "{w down}", "{x down}", "{y down}", "{z down}", "{LWINDOWN}", "{RWINDOWN}", "{NUMPAD0 down}", "{NUMPAD1 down}", "{NUMPAD2 down}", "{NUMPAD3 down}", "{NUMPAD4 down}", "{NUMPAD5 down}", "{NUMPAD6 down}", "{NUMPAD7 down}", "{NUMPAD8 down}", "{NUMPAD9 down}", "{NUMPADMULT down}", "{NUMPADADD down}", "{| down}", "{NUMPADSUB down}", "{NUMPADDOT down}", "{NUMPADDIV down}", "{F1 down}", "{F2 down}", "{F3 down}", "{F4 down}", "{F5 down}", "{F6 down}", "{F7 down}", "{F8 down}", "{F9 down}", "{F10 down}", "{F11 down}", "{F12 down}", "{NUMLOCK down}", "{SCROLLLOCK down}", "{LSHIFT down}", "{LSHIFT down}", "{LCTRL down}", "{RCTRL down}", "{; down}", "{= down}", "{, down}", "{- down}", "{. down}", "{/ down}", "{` down}", "{[ down}", "{\ down}", "{] down}"] Case $stype = "send" AND $saction = "up" Dim $areturn[103] = ["{BACKSPACE up}", "{TAB up}", "{ENTER up}", "{LCTRL up}", "{ALTUP}", "{PAUSE up}", "{CAPSLOCK up}", "{ESC up}", "{SPACE up}", "{PGUP up}", "{PGDN up}", "{END up}", "{HOME up}", "{LEFT up}", "{UP up}", "{RIGHT up}", "{DOWN up}", "{PRINTSCREEN up}", "{INS up}", "{DEL up}", "{0 up}", "{1 up}", "{2 up}", "{3 up}", "{4 up}", "{5 up}", "{6 up}", "{7 up}", "{8 up}", "{9 up}", "{a up}", "{b up}", "{c up}", "{d up}", "{e up}", "{f up}", "{g up}", "{h up}", "{i up}", "{j up}", "{k up}", "{l up}", "{m up}", "{n up}", "{o up}", "{p up}", "{q up}", "{r up}", "{s up}", "{t up}", "{u up}", "{v up}", "{w up}", "{x up}", "{y up}", "{z up}", "{LWINUP}", "{RWINUP}", "{NUMPAD0 up}", "{NUMPAD1 up}", "{NUMPAD2 up}", "{NUMPAD3 up}", "{NUMPAD4 up}", "{NUMPAD5 up}", "{NUMPAD6 up}", "{NUMPAD7 up}", "{NUMPAD8 up}", "{NUMPAD9 up}", "{NUMPADMULT up}", "{NUMPADADD up}", "{| up}", "{NUMPADSUB up}", "{NUMPADDOT up}", "{NUMPADDIV up}", "{F1 up}", "{F2 up}", "{F3 up}", "{F4 up}", "{F5 up}", "{F6 up}", "{F7 up}", "{F8 up}", "{F9 up}", "{F10 up}", "{F11 up}", "{F12 up}", "{NUMLOCK up}", "{SCROLLLOCK up}", "{LSHIFT up}", "{LSHIFT up}", "{LCTRL up}", "{RCTRL up}", "{; up}", "{= up}", "{, up}", "{- up}", "{. up}", "{/ up}", "{` up}", "{[ up}", "{\ up}", "{] up}"] Case Else Return SetError(1, 0, 0) EndSelect Return $areturn EndFunc Func _globalsettingsgui() TraySetState(2) _singleton($sfriendlyname & "GlobalSettings") Local $i, $s, $a Opt("GUICloseOnESC", 0) Local $hwnd = GUICreate("Settings - Windowed Borderless Gaming", 420, 520) GUISetFont(10, 400, 0, "MS Sans Serif") GUICtrlCreateGroup("Add Window", 5, 5, 410, 185) GUICtrlCreateLabel("Keybind:", 10, 25, 82, 25, $ss_centerimage) Local $ikeybind1_addwindow = IniRead($sini, "Global_Config", "KeyBind1_AddWindow", 72) $s = _ispressedfriendlyname($ikeybind1_addwindow) Local $hkeybind1_addwindow = GUICtrlCreateButton("", 121, 25, 131, 25) GUICtrlSetData(-1, $s) Local $hautosetresolution = GUICtrlCreateCheckbox("Automatically set resolution in the game's settings", 10, 50, 321, 25) If IniRead($sini, "Global_Config", "AutoSetResolution", "never") = "always" Then GUICtrlSetState(-1, $gui_checked) GUICtrlCreateLabel("Resolution:", 10, 75, 90, 25, $ss_centerimage) Local $hdefaultdesktopwidth = GUICtrlCreateInput(IniRead($sini, "Global_Config", "DefaultDeskTopWidth", @DesktopWidth), 120, 75, 57, 24, BitOR($gui_ss_default_input, $es_center, $es_number)) GUICtrlSetTip(-1, "Width") GUICtrlCreateLabel("X", 178, 75, 25, 25, BitOR($ss_center, $ss_centerimage)) Local $hdefaultdesktopheight = GUICtrlCreateInput(IniRead($sini, "Global_Config", "DefaultDeskTopHeight", @DesktopHeight), 208, 75, 57, 24, BitOR($gui_ss_default_input, $es_center, $es_number)) GUICtrlSetTip(-1, "Height") Local $hautosetoffset = GUICtrlCreateCheckbox("Automatically set offset in the game's settings", 10, 106, 321, 25) If IniRead($sini, "Global_Config", "AutoSetOffset", "never") = "always" Then GUICtrlSetState(-1, $gui_checked) GUICtrlCreateLabel("Offset:", 10, 131, 58, 25, $ss_centerimage) Local $hdefaultposx = GUICtrlCreateInput(IniRead($sini, "Global_Config", "DefaultPosX", 0), 120, 131, 57, 24, BitOR($gui_ss_default_input, $es_center)) GUICtrlSetTip(-1, "Horizontal") GUICtrlCreateLabel("Y:", 178, 131, 25, 25, BitOR($ss_center, $ss_centerimage)) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") GUICtrlSetTip(-1, "Vertical") Local $hdefaultposy = GUICtrlCreateInput(IniRead($sini, "Global_Config", "DefaultPosY", 0), 208, 131, 57, 24, BitOR($gui_ss_default_input, $es_center)) GUICtrlSetTip(-1, "Vertical") GUICtrlCreateLabel("X:", 90, 131, 25, 25, BitOR($ss_center, $ss_centerimage)) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") GUICtrlSetTip(-1, "Horizontal") Local $haddwindow_confirmationcheckbox1 = GUICtrlCreateCheckbox("Ask for confirmation before adding a window", 10, 155, 321, 25) If IniRead($sini, "Global_Config", "AddWindow_Confirmation", "never") = "always" Then GUICtrlSetState(-1, $gui_checked) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup("Force key", 5, 208, 410, 137) Local $hforceborderlesskeyenabled = GUICtrlCreateCheckbox("Enable a keybind to re-trigger borderless mode", 10, 228, 321, 25) If IniRead($sini, "Global_Config", "ForceBorderlessKeyEnabled", "always") = "always" Then GUICtrlSetState(-1, $gui_checked) GUICtrlCreateLabel("Keybind:", 10, 253, 66, 25, $ss_centerimage) Local $ikeybind1_forceborderless = IniRead($sini, "Global_Config", "KeyBind1_ForceBorderless", 73) $s = _ispressedfriendlyname($ikeybind1_forceborderless) Local $hkeybind1_forceborderless = GUICtrlCreateButton("", 89, 253, 131, 25) GUICtrlSetData(-1, $s) GUICtrlCreateLabel("+", 226, 253, 30, 25, BitOR($ss_center, $ss_centerimage)) GUICtrlSetFont(-1, 13, 400, 0, "MS Sans Serif") Local $ikeybind2_forceborderless = IniRead($sini, "Global_Config", "KeyBind2_ForceBorderless", $ikeybind1_forceborderless) $s = _ispressedfriendlyname($ikeybind2_forceborderless) Local $hkeybind2_forceborderless = GUICtrlCreateButton("", 265, 253, 131, 25) GUICtrlSetData(-1, $s) GUIStartGroup() Local $hforcekeychecktitlealways = GUICtrlCreateRadio("Check for window name, class and process", 10, 288, 305, 25) If IniRead($sini, "Global_Config", "ForceKeyCheckTitle", "always") = "always" Then GUICtrlSetState(-1, $gui_checked) Local $hforcekeychecktitlenever = GUICtrlCreateRadio("Check for window class and process", 10, 313, 313, 25) If IniRead($sini, "Global_Config", "ForceKeyCheckTitle", "always") = "never" Then GUICtrlSetState(-1, $gui_checked) GUIStartGroup() GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup("Auto monitoring", 5, 360, 410, 105) GUICtrlCreateLabel("How to recognise a window to make borderless", 10, 380, 386, 25, $ss_centerimage) GUIStartGroup() Local $hforcetriggerchecktitlealways = GUICtrlCreateRadio("By window title, class and process name", 10, 405, 290, 25) If IniRead($sini, "Global_Config", "ForceTriggerCheckTitle", "always") = "always" Then GUICtrlSetState(-1, $gui_checked) Local $hforcetriggerchecktitlenever = GUICtrlCreateRadio("By window class and process name", 10, 430, 290, 25) If IniRead($sini, "Global_Config", "ForceTriggerCheckTitle", "always") = "never" Then GUICtrlSetState(-1, $gui_checked) GUIStartGroup() GUICtrlCreateGroup("", -99, -99, 1, 1) Local $hsave = GUICtrlCreateButton("&Save and close", 5, 480, 125, 25) Local $hcancel = GUICtrlCreateButton("&Cancel", 290, 480, 125, 25) GUISetState(@SW_SHOW) WinSetOnTop($hwnd, "", 1) While 1 Local $nmsg = GUIGetMsg() Switch $nmsg Case $gui_event_close Exit Case $hkeybind1_addwindow _keyinputbtn($ikeybind1_addwindow, $hkeybind1_addwindow) Case $hautosetresolution Case $hdefaultdesktopwidth Case $hdefaultdesktopheight Case $hautosetoffset Case $hdefaultposx GUICtrlSetData($hdefaultposx, StringRegExpReplace(GUICtrlRead($hdefaultposx), "[^\-0-9]", "")) If GUICtrlRead($hdefaultposx) = "" Then GUICtrlSetData($hdefaultposx, 0) Case $hdefaultposy GUICtrlSetData($hdefaultposy, StringRegExpReplace(GUICtrlRead($hdefaultposy), "[^\-0-9]", "")) If GUICtrlRead($hdefaultposy) = "" Then GUICtrlSetData($hdefaultposy, 0) Case $haddwindow_confirmationcheckbox1 Case $hforceborderlesskeyenabled Case $hkeybind1_forceborderless _keyinputbtn($ikeybind1_forceborderless, $hkeybind1_forceborderless) $ikeybind2_forceborderless = $ikeybind1_forceborderless GUICtrlSetData($hkeybind2_forceborderless, GUICtrlRead($hkeybind1_forceborderless)) Case $hkeybind2_forceborderless _keyinputbtn($ikeybind2_forceborderless, $hkeybind2_forceborderless) Case $hforcekeychecktitlealways Case $hforcekeychecktitlenever Case $hforcetriggerchecktitlealways Case $hforcetriggerchecktitlenever Case $hsave Local $acontrols[15] = [$ikeybind1_addwindow, $hautosetresolution, $hdefaultdesktopwidth, $hdefaultdesktopheight, $hautosetoffset, $hdefaultposx, $hdefaultposy, $haddwindow_confirmationcheckbox1, $hforceborderlesskeyenabled, $ikeybind1_forceborderless, $ikeybind2_forceborderless, $hforcekeychecktitlealways, $hforcekeychecktitlenever, $hforcetriggerchecktitlealways, $hforcetriggerchecktitlenever] _saveglobalsettings($acontrols) Case $hcancel Exit EndSwitch WEnd EndFunc Func _keyinputbtn(ByRef $ibtn, ByRef $hbtn) Local $a, $i, $s Local $hwnd = GUICreate("", 415, 128, -1, -1, -2147483648, 128) GUISetBkColor(0) GUICtrlCreateLabel("Click a button on your keyboard", 0, 0, 415, 128, BitOR($ss_center, $ss_centerimage)) GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 16777215) GUISetState(@SW_SHOW) WinSetOnTop($hwnd, "", 1) $a = _ispressedfriendlyuserinput() $ibtn = $a[UBound($a) - 1] For $i = 0 To UBound($a) - 1 GUICtrlSetData($hbtn, _ispressedfriendlyname($a[$i])) Next GUIDelete($hwnd) EndFunc Func _saveglobalsettings($acontrols) IniWrite($sini, "Global_Config", "KeyBind1_AddWindow", $acontrols[0]) If GUICtrlRead($acontrols[2]) > 0 AND GUICtrlRead($acontrols[3]) > 0 Then If GUICtrlRead($acontrols[1]) = $gui_checked Then IniWrite($sini, "Global_Config", "AutoSetResolution", "always") If GUICtrlRead($acontrols[1]) = $gui_unchecked Then IniWrite($sini, "Global_Config", "AutoSetResolution", "never") Else IniWrite($sini, "Global_Config", "AutoSetResolution", "never") EndIf IniWrite($sini, "Global_Config", "DefaultDeskTopWidth", GUICtrlRead($acontrols[2])) IniWrite($sini, "Global_Config", "DefaultDeskTopHeight", GUICtrlRead($acontrols[3])) If GUICtrlRead($acontrols[5]) <> 0 OR GUICtrlRead($acontrols[6]) <> 0 Then If GUICtrlRead($acontrols[4]) = $gui_checked Then IniWrite($sini, "Global_Config", "AutoSetOffset", "always") If GUICtrlRead($acontrols[4]) = $gui_unchecked Then IniWrite($sini, "Global_Config", "AutoSetOffset", "never") Else IniWrite($sini, "Global_Config", "AutoSetOffset", "never") EndIf IniWrite($sini, "Global_Config", "DefaultPosX", GUICtrlRead($acontrols[5])) IniWrite($sini, "Global_Config", "DefaultPosY", GUICtrlRead($acontrols[6])) If GUICtrlRead($acontrols[7]) = $gui_checked Then IniWrite($sini, "Global_Config", "AddWindow_Confirmation", "always") If GUICtrlRead($acontrols[7]) = $gui_unchecked Then IniWrite($sini, "Global_Config", "AddWindow_Confirmation", "never") If GUICtrlRead($acontrols[8]) = $gui_checked Then IniWrite($sini, "Global_Config", "ForceBorderlessKeyEnabled", "always") If GUICtrlRead($acontrols[8]) = $gui_unchecked Then IniWrite($sini, "Global_Config", "ForceBorderlessKeyEnabled", "never") IniWrite($sini, "Global_Config", "KeyBind1_ForceBorderless", $acontrols[9]) IniWrite($sini, "Global_Config", "KeyBind2_ForceBorderless", $acontrols[10]) If GUICtrlRead($acontrols[11]) = $gui_checked Then IniWrite($sini, "Global_Config", "ForceKeyCheckTitle", "always") If GUICtrlRead($acontrols[12]) = $gui_checked Then IniWrite($sini, "Global_Config", "ForceKeyCheckTitle", "never") If GUICtrlRead($acontrols[13]) = $gui_checked Then IniWrite($sini, "Global_Config", "ForceTriggerCheckTitle", "always") If GUICtrlRead($acontrols[14]) = $gui_checked Then IniWrite($sini, "Global_Config", "ForceTriggerCheckTitle", "never") Exit EndFunc Func _mouselock($ssection, $hwnd, $istate) Local $a If NOT WinExists($hwnd) Then Return SetError(1, 0, 0) Local $s = IniRead($sini, $ssection, "MouseLock", "never") If $s = "never" AND $istate = 2 Then $istate = -1 _mousetrap() MouseMove(@DesktopWidth, @DesktopHeight, 0) ElseIf $s = "window" Then $a = WinGetPos($hwnd) If @error Then Return $istate $istate = 2 _mousetrap($a[0], $a[1], $a[0] + $a[2], $a[1] + $a[3]) ElseIf $s = "hidden" Then $a = WinGetPos($hwnd) If @error Then Return $istate $istate = 2 _mousetrap(($a[0] + $a[2]) / 2, ($a[1] + $a[3]) - 1, ($a[0] + $a[2]) / 2, $a[1] + $a[3] - 1) EndIf Return $istate EndFunc Func _processgetname($ipid) Local $aprocesslist = ProcessList(), $ierror = 1, $sprocessname = "" For $i = 1 To $aprocesslist[0][0] If $aprocesslist[$i][1] = $ipid Then $ierror = 0 $sprocessname = $aprocesslist[$i][0] ExitLoop EndIf Next Return SetError($ierror, 0, $sprocessname) EndFunc Func _processgetpriority($vprocess) Local $ierror = 0, $iextended = 0, $ireturn = -1 Local $ipid = ProcessExists($vprocess) If NOT $ipid 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", $ipid) If @error Then $ierror = @error + 10 $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 If NOT FileExists($sini) Then IniWrite($sini, "Global_Config", "AutoSetResolution", "never") IniWrite($sini, "Global_Config", "DefaultDeskTopWidth", @DesktopWidth) IniWrite($sini, "Global_Config", "DefaultDeskTopHeight", @DesktopHeight) IniWrite($sini, "Global_Config", "AutoSetOffset", "never") IniWrite($sini, "Global_Config", "DefaultPosX", 0) IniWrite($sini, "Global_Config", "DefaultPosY", 0) IniWrite($sini, "Global_Config", "KeyBind1_AddWindow", 72) IniWrite($sini, "Global_Config", "KeyBind1_ForceBorderless", 73) IniWrite($sini, "Global_Config", "KeyBind2_ForceBorderless", 73) IniWrite($sini, "Global_Config", "ForceKeyCheckTitle", "always") IniWrite($sini, "Global_Config", "ForceTriggerCheckTitle", "always") IniWrite($sini, "Global_Config", "AddWindow_Confirmation", "never") EndIf If $cmdline[0] > 0 Then If $cmdline[1] = "-GameSettings" Then _gs_settingsgui() Exit ElseIf $cmdline[1] = "-GlobalSettings" Then _globalsettingsgui() EndIf Else _masterloop() EndIf Opt("MustDeclareVars", 1) Func _masterloop() Local $dll = DllOpen("user32.dll") TraySetState(2) Local $i, $msg, $hwnd, $ssection, $holdhwnd, $hdxwnd, $idxwnddeclared, $imouselock = 1 _singleton($sfriendlyname) Opt("TrayMenuMode", 1 + 2) Opt("TrayAutoPause", 0) TraySetToolTip($sappname) Local $hlog = TrayCreateItem("Add window ( " & _ispressedfriendlyname(IniRead($sini, "Global_Config", "KeyBind1_AddWindow", 72)) & " )") Local $hgs = TrayCreateItem("Open game settings") TrayCreateItem("") Local $hglobalsettings = TrayCreateItem("Open global settings") Local $hconf = TrayCreateItem("Open config file") TrayCreateItem("") If FileExists(@ScriptDir & "\DXWnd\dxwnd.exe") Then $idxwnddeclared = 1 $hdxwnd = TrayCreateItem("Run DXWnd") TrayCreateItem("") EndIf Local $hcheckupdates = TrayCreateItem("Check for updates") Local $hreadmanual = TrayCreateItem("Read manual") Local $hstartup = TrayCreateItem("Run at startup") If _startupget() Then TrayItemSetState($hstartup, $tray_checked) Local $hhelp = TrayCreateItem("Get help on the forum") Local $hauthor = TrayCreateItem("App by GameplayCrush") TrayCreateItem("") Local $hexit = TrayCreateItem("Exit") $i = TimerInit() TraySetState(1) TraySetToolTip($sappname) TrayTip($sappname, "click tray icon for options", 10) While 1 $msg = TrayGetMsg() If $msg = $hexit Then Exit If $msg = $hlog Then _logwindow() $holdhwnd = "" EndIf If $msg = $hstartup Then _startupset($hstartup) If $msg = $hcheckupdates Then ShellExecute("http://westechsolutions.net/sites/WindowedBorderlessGaming/updates?v=" & $sversionnumber) If $msg = $hreadmanual Then ShellExecute("http://westechsolutions.net/sites/WindowedBorderlessGaming/manual") If $msg = $hhelp Then If ProcessExists("Steam.exe") Then ShellExecute("steam://url/GroupSteamIDPage/5177732") Else ShellExecute("http://steamcommunity.com/groups/WindowedBorderlessGaming/discussions") EndIf EndIf If $msg = $hauthor Then If ProcessExists("Steam.exe") Then ShellExecute("steam://url/SteamIDPage/76561198027421333") Else ShellExecute("http://steamcommunity.com/id/GameplayCRUSH/") EndIf EndIf If $msg = $hgs AND @Compiled Then Run('"' & @ScriptFullPath & '" "-GameSettings"', @ScriptDir) If $msg = $hglobalsettings AND @Compiled Then RunWait('"' & @ScriptFullPath & '" "-GlobalSettings"', @ScriptDir) TrayItemSetText($hlog, "Add window ( " & _ispressedfriendlyname(IniRead($sini, "Global_Config", "KeyBind1_AddWindow", 72)) & " )") EndIf If $msg = $hconf Then If FileExists($sini) Then ShellExecute($sini) EndIf If IniRead($sini, "Global_Config", "ForceBorderlessKeyEnabled", "always") = "always" Then If _ispressed(IniRead($sini, "Global_Config", "KeyBind1_ForceBorderless", 73), $dll) AND _ispressed(IniRead($sini, "Global_Config", "KeyBind2_ForceBorderless", IniRead($sini, "Global_Config", "KeyBind1_ForceBorderless", 73))) Then _winforceborderless() EndIf If $idxwnddeclared = 1 Then If $msg = $hdxwnd Then If FileExists(@ScriptDir & "\DXWnd\dxwnd.exe") Then Run('"' & @ScriptDir & "\DXWnd\dxwnd.exe" & '"', @ScriptDir & "\DXWnd") EndIf EndIf If TimerDiff($i) > 1000 Then $i = TimerInit() $hwnd = WinGetHandle("[ACTIVE]") If $hwnd <> $holdhwnd Then $holdhwnd = $hwnd $ssection = StringReplace("Title:" & WinGetTitle($hwnd) & ";Class:" & _winapi_getclassname($hwnd), "[", "[") $ssection = StringReplace($ssection, "]", "]") If IniRead($sini, $ssection, "Process", "Error") = "Error" AND IniRead($sini, "Global_Config", "ForceTriggerCheckTitle", "always") = "never" Then $ssection = StringReplace("Class:" & _winapi_getclassname($hwnd), "[", "[") $ssection = StringReplace($ssection, "]", "]") EndIf $imouselock = _mouselock($ssection, $hwnd, $imouselock) If _processgetname(WinGetProcess($hwnd)) <> IniRead($sini, $ssection, "Process", "0") Then ContinueLoop If _winapi_getwindowlong($hwnd, -16) <> IniRead($sini, $ssection, "Style", "ERROR") Then ContinueLoop _winsetborderless($hwnd, IniRead($sini, $ssection, "PosX", 0), IniRead($sini, $ssection, "PosY", 0), IniRead($sini, $ssection, "Width", ""), IniRead($sini, $ssection, "Height", ""), $ssection) EndIf EndIf WEnd EndFunc Func _winforceborderless() Local $i = IniRead($sini, "Global_Config", "KeyBind1_ForceBorderless", 73) While _ispressed($i) Sleep(500) WEnd Dim $i Local $hwnd = WinGetHandle("[ACTIVE]") Local $ssection = StringReplace("Title:" & WinGetTitle($hwnd) & ";Class:" & _winapi_getclassname($hwnd), "[", "[") $ssection = StringReplace($ssection, "]", "]") If IniRead($sini, $ssection, "Process", "Error") = "Error" AND IniRead($sini, "Global_Config", "ForceKeyCheckTitle", "always") = "never" Then $ssection = StringReplace("Class:" & _winapi_getclassname($hwnd), "[", "[") $ssection = StringReplace($ssection, "]", "]") EndIf If _processgetname(WinGetProcess($hwnd)) <> IniRead($sini, $ssection, "Process", "0") Then Return 0 _winsetborderless($hwnd, IniRead($sini, $ssection, "PosX", 0), IniRead($sini, $ssection, "PosY", 0), IniRead($sini, $ssection, "Width", ""), IniRead($sini, $ssection, "Height", ""), $ssection) EndFunc Func _startupget() Local $foo = Run(@ComSpec & " /c Schtasks /Query /fo list", @SystemDir, @SW_HIDE, $stderr_child + $stdout_child) Local $s While 1 $s &= StdoutRead($foo) If @error Then ExitLoop WEnd If StringInStr($s, "WindowedBorderlessGaming-" & @UserName) Then Return 1 Return 0 EndFunc Func _startupset($h) If _startupget() Then RunWait(@ComSpec & ' "/c" "schtasks" "/delete" "/tn" "WindowedBorderlessGaming-' & @UserName & '" "/f"', @SystemDir, @SW_HIDE) Else RunWait(@ComSpec & ' "/c" "schtasks" "/create" "/tn" "WindowedBorderlessGaming-' & @UserName & '" "/tr" "' & FileGetShortName(@ScriptFullPath) & '" "/sc" "ONLOGON" "/ru" "' & @UserName & '" "/it" "/rl" "HIGHEST"', @SystemDir, @SW_HIDE) EndIf If _startupget() Then TrayItemSetState($h, $tray_checked) Else TrayItemSetState($h, $tray_unchecked) EndIf EndFunc Func _logwindow() Local $dll = DllOpen("user32.dll"), $ikey = IniRead($sini, "Global_Config", "KeyBind1_AddWindow", 72) TrayTip("Press " & _ispressedfriendlyname($ikey) & " to add the active window", "", 10) Local $i = TimerInit() While 1 If TimerDiff($i) > 15000 Then TrayTip($sappname, "No window added", 10) Return EndIf If _ispressed($ikey, $dll) Then ExitLoop Sleep(50) WEnd DllClose($dll) If IniRead($sini, "Global_Config", "AddWindow_Confirmation", "never") = "always" Then $i = WinGetHandle("[ACTIVE]") If MsgBox(4 + 32 + 262144, "Windowed Borderless Gaming", "The window that will be added is: " & WinGetTitle($i) & @CRLF & "Is this the correct window?") <> 6 Then Return WinActivate($i) EndIf _wingetinfo() EndFunc Func _wingetinfo() Local $hwnd = WinGetHandle("[ACTIVE]") Local $sprocess = _processgetname(WinGetProcess($hwnd)) Local $istyle = _winapi_getwindowlong($hwnd, -16) Local $stitle = WinGetTitle($hwnd) Local $sclass = _winapi_getclassname($hwnd) If StringRegExp($sclass, "(?i)(AutoIt)") Then Return Local $ssection = "Title:" & $stitle & ";Class:" & $sclass $ssection = StringReplace($ssection, "[", "[") $ssection = StringReplace($ssection, "]", "]") IniWrite($sini, $ssection, "Process", $sprocess) IniWrite($sini, $ssection, "Style", $istyle) IniWrite($sini, "Global_Config", "LastUsed", _gs_getuniquefriendlyname($stitle)) IniWrite($sini, $ssection, "friendlyname", _gs_getuniquefriendlyname($stitle)) If IniRead($sini, "Global_Config", "AutoSetResolution", "never") = "always" Then IniWrite($sini, $ssection, "Width", IniRead($sini, "Global_Config", "DefaultDeskTopWidth", @DesktopWidth)) IniWrite($sini, $ssection, "Height", IniRead($sini, "Global_Config", "DefaultDeskTopHeight", @DesktopHeight)) EndIf If IniRead($sini, "Global_Config", "AutoSetOffset", "never") = "always" Then If IniRead($sini, "Global_Config", "DefaultPosX", 0) <> 0 Then IniWrite($sini, $ssection, "PosX", IniRead($sini, "Global_Config", "DefaultPosX", 0)) If IniRead($sini, "Global_Config", "DefaultPosY", 0) <> 0 Then IniWrite($sini, $ssection, "PosY", IniRead($sini, "Global_Config", "DefaultPosY", 0)) EndIf Local $a[4] = [0, 0, "", ""] If IniRead($sini, "Global_Config", "AutoSetResolution", "never") = "always" Then $a[2] = IniRead($sini, "Global_Config", "DefaultDeskTopWidth", @DesktopWidth) $a[3] = IniRead($sini, "Global_Config", "DefaultDeskTopHeight", @DesktopHeight) EndIf If IniRead($sini, "Global_Config", "AutoSetOffset", "never") = "always" Then $a[0] = IniRead($sini, "Global_Config", "DefaultPosX", 0) $a[1] = IniRead($sini, "Global_Config", "DefaultPosY", 0) EndIf _winsetborderless($hwnd, $a[0], $a[1], $a[2], $a[3], $ssection) If _winapi_getwindowlong($hwnd, -16) <> IniRead($sini, $ssection, "Style", "ERROR") Then TrayTip($sappname, 'Window "' & $stitle & '" added', 10) Return 1 Else _inidelete($sini, $ssection) TrayTip($sappname, 'Window "' & $stitle & '" could not be added ', 10) Return 0 EndIf EndFunc Func _winsetborderless($hwnd, $x, $y, $iwidth, $iheight, $ssection) If NOT WinExists($hwnd) Then Return SetError(1, 0, 0) BlockInput(1) WinMove($hwnd, "", Number($x), Number($y)) _winapi_setwindowlong($hwnd, -16, -2147483648 + 268435456 + 131072) If IniRead($sini, $ssection, "Redraw", "always") = "always" Then WinSetState($hwnd, "", @SW_MINIMIZE) Sleep(100) WinActivate($hwnd) If $iheight = "" OR $iwidth = "" Then WinMove($hwnd, "", Number($x), Number($y)) Else WinMove($hwnd, "", Number($x), Number($y), $iwidth, $iheight) EndIf BlockInput(0) EndFunc