first commit
This commit is contained in:
commit
f696262406
500 changed files with 143551 additions and 0 deletions
0
ADB-FB-GUI/ADBGui.au3
Executable file
0
ADB-FB-GUI/ADBGui.au3
Executable file
0
ADB-FB-GUI/FastBootGui.au3
Executable file
0
ADB-FB-GUI/FastBootGui.au3
Executable file
0
ADB-FB-GUI/MainMenu.au3
Executable file
0
ADB-FB-GUI/MainMenu.au3
Executable file
BIN
ADB-FB-GUI/exec/adb/AdbWinApi.dll
Executable file
BIN
ADB-FB-GUI/exec/adb/AdbWinApi.dll
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/adb/AdbWinUsbApi.dll
Executable file
BIN
ADB-FB-GUI/exec/adb/AdbWinUsbApi.dll
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/adb/adb.exe
Executable file
BIN
ADB-FB-GUI/exec/adb/adb.exe
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/adb/fastboot.exe
Executable file
BIN
ADB-FB-GUI/exec/adb/fastboot.exe
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/driver/DPInst_x64.exe
Executable file
BIN
ADB-FB-GUI/exec/driver/DPInst_x64.exe
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/driver/DPInst_x86.exe
Executable file
BIN
ADB-FB-GUI/exec/driver/DPInst_x86.exe
Executable file
Binary file not shown.
4
ADB-FB-GUI/exec/driver/amd64/NOTICE.txt
Executable file
4
ADB-FB-GUI/exec/driver/amd64/NOTICE.txt
Executable file
|
@ -0,0 +1,4 @@
|
|||
The .dll files here are distributed by Microsoft Corporation as part of the
|
||||
Windows Driver Kit (available at
|
||||
http://www.microsoft.com/whdc/resources/downloads.mspx) and included here as
|
||||
permitted by the Microsoft Software License Terms.
|
BIN
ADB-FB-GUI/exec/driver/amd64/WUDFUpdate_01009.dll
Executable file
BIN
ADB-FB-GUI/exec/driver/amd64/WUDFUpdate_01009.dll
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/driver/amd64/WdfCoInstaller01009.dll
Executable file
BIN
ADB-FB-GUI/exec/driver/amd64/WdfCoInstaller01009.dll
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/driver/amd64/winusbcoinstaller2.dll
Executable file
BIN
ADB-FB-GUI/exec/driver/amd64/winusbcoinstaller2.dll
Executable file
Binary file not shown.
169
ADB-FB-GUI/exec/driver/android_winusb.inf
Executable file
169
ADB-FB-GUI/exec/driver/android_winusb.inf
Executable file
|
@ -0,0 +1,169 @@
|
|||
;
|
||||
; Android WinUsb driver installation.
|
||||
;
|
||||
[Version]
|
||||
Signature = "$Windows NT$"
|
||||
Class = AndroidUsbDeviceClass
|
||||
ClassGuid = {3F966BD9-FA04-4ec5-991C-D326973B5128}
|
||||
Provider = %ProviderName%
|
||||
DriverVer = 08/28/2014,11.0.0000.00000
|
||||
CatalogFile.NTx86 = androidwinusb86.cat
|
||||
CatalogFile.NTamd64 = androidwinusba64.cat
|
||||
|
||||
[ClassInstall32]
|
||||
Addreg = AndroidWinUsbClassReg
|
||||
|
||||
[AndroidWinUsbClassReg]
|
||||
HKR,,,0,%ClassName%
|
||||
HKR,,Icon,,-1
|
||||
|
||||
|
||||
[Manufacturer]
|
||||
%ProviderName% = Google, NTx86, NTamd64
|
||||
|
||||
|
||||
[Google.NTx86]
|
||||
|
||||
;Google Nexus One
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02&MI_01
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E11
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E12&MI_01
|
||||
|
||||
;Google Nexus S
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E21
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E22&MI_01
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E23
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E24&MI_01
|
||||
|
||||
;Google Nexus 7
|
||||
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E42&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E44&MI_01
|
||||
|
||||
;Google Nexus Q
|
||||
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_2C11
|
||||
|
||||
;Google Nexus (generic)
|
||||
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE4&MI_02
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE6&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE7
|
||||
|
||||
;Google Glass
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_9001
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_9001&MI_01
|
||||
|
||||
;Project Tango (generic)
|
||||
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4D00
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D02&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D04&MI_02
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D06&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D07
|
||||
|
||||
|
||||
[Google.NTamd64]
|
||||
|
||||
;Google Nexus One
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02&MI_01
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E11
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E12&MI_01
|
||||
|
||||
;Google Nexus S
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E21
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E22&MI_01
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E23
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E24&MI_01
|
||||
|
||||
;Google Nexus 7
|
||||
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E42&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E44&MI_01
|
||||
|
||||
;Google Nexus Q
|
||||
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_2C11
|
||||
|
||||
;Google Nexus (generic)
|
||||
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE4&MI_02
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE6&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE7
|
||||
|
||||
;Google Glass
|
||||
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_9001
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_9001&MI_01
|
||||
|
||||
;Project Tango (generic)
|
||||
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4D00
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D02&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D04&MI_02
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D06&MI_01
|
||||
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D07
|
||||
|
||||
|
||||
[USB_Install]
|
||||
Include = winusb.inf
|
||||
Needs = WINUSB.NT
|
||||
|
||||
[USB_Install.Services]
|
||||
Include = winusb.inf
|
||||
AddService = WinUSB,0x00000002,WinUSB_ServiceInstall
|
||||
|
||||
[WinUSB_ServiceInstall]
|
||||
DisplayName = %WinUSB_SvcDesc%
|
||||
ServiceType = 1
|
||||
StartType = 3
|
||||
ErrorControl = 1
|
||||
ServiceBinary = %12%\WinUSB.sys
|
||||
|
||||
[USB_Install.Wdf]
|
||||
KmdfService = WINUSB, WinUSB_Install
|
||||
|
||||
[WinUSB_Install]
|
||||
KmdfLibraryVersion = 1.9
|
||||
|
||||
[USB_Install.HW]
|
||||
AddReg = Dev_AddReg
|
||||
|
||||
[Dev_AddReg]
|
||||
HKR,,DeviceInterfaceGUIDs,0x10000,"{F72FE0D4-CBCB-407d-8814-9ED673D0DD6B}"
|
||||
|
||||
[USB_Install.CoInstallers]
|
||||
AddReg = CoInstallers_AddReg
|
||||
CopyFiles = CoInstallers_CopyFiles
|
||||
|
||||
[CoInstallers_AddReg]
|
||||
HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01009.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"
|
||||
|
||||
[CoInstallers_CopyFiles]
|
||||
WinUSBCoInstaller2.dll
|
||||
WdfCoInstaller01009.dll
|
||||
|
||||
[DestinationDirs]
|
||||
CoInstallers_CopyFiles=11
|
||||
|
||||
[SourceDisksNames]
|
||||
1 = %DISK_NAME%,,,\i386
|
||||
2 = %DISK_NAME%,,,\amd64
|
||||
|
||||
[SourceDisksFiles.x86]
|
||||
WinUSBCoInstaller2.dll = 1
|
||||
WdfCoInstaller01009.dll = 1
|
||||
|
||||
[SourceDisksFiles.amd64]
|
||||
WinUSBCoInstaller2.dll = 2
|
||||
WdfCoInstaller01009.dll = 2
|
||||
|
||||
[Strings]
|
||||
ProviderName = "Google, Inc."
|
||||
SingleAdbInterface = "Android ADB Interface"
|
||||
CompositeAdbInterface = "Android Composite ADB Interface"
|
||||
SingleBootLoaderInterface = "Android Bootloader Interface"
|
||||
WinUSB_SvcDesc = "Android USB Driver"
|
||||
DISK_NAME = "Android WinUsb installation disk"
|
||||
ClassName = "Android Device"
|
BIN
ADB-FB-GUI/exec/driver/androidwinusb86.cat
Executable file
BIN
ADB-FB-GUI/exec/driver/androidwinusb86.cat
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/driver/androidwinusba64.cat
Executable file
BIN
ADB-FB-GUI/exec/driver/androidwinusba64.cat
Executable file
Binary file not shown.
4
ADB-FB-GUI/exec/driver/i386/NOTICE.txt
Executable file
4
ADB-FB-GUI/exec/driver/i386/NOTICE.txt
Executable file
|
@ -0,0 +1,4 @@
|
|||
The .dll files here are distributed by Microsoft Corporation as part of the
|
||||
Windows Driver Kit (available at
|
||||
http://www.microsoft.com/whdc/resources/downloads.mspx) and included here as
|
||||
permitted by the Microsoft Software License Terms.
|
BIN
ADB-FB-GUI/exec/driver/i386/WUDFUpdate_01009.dll
Executable file
BIN
ADB-FB-GUI/exec/driver/i386/WUDFUpdate_01009.dll
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/driver/i386/WdfCoInstaller01009.dll
Executable file
BIN
ADB-FB-GUI/exec/driver/i386/WdfCoInstaller01009.dll
Executable file
Binary file not shown.
BIN
ADB-FB-GUI/exec/driver/i386/winusbcoinstaller2.dll
Executable file
BIN
ADB-FB-GUI/exec/driver/i386/winusbcoinstaller2.dll
Executable file
Binary file not shown.
118
ADB-FB-GUI/exec/install.bat
Executable file
118
ADB-FB-GUI/exec/install.bat
Executable file
|
@ -0,0 +1,118 @@
|
|||
@ECHO off
|
||||
CLS
|
||||
TITLE 15 seconds ADB Installer v1.4.3
|
||||
COLOR 17
|
||||
ECHO ###############################################################################
|
||||
ECHO # #
|
||||
ECHO # 15 seconds ADB Installer #
|
||||
ECHO # #
|
||||
ECHO # version 1.4.3 #
|
||||
ECHO # #
|
||||
ECHO # by Snoop05 - Snoop05B@gmail.com #
|
||||
ECHO # #
|
||||
ECHO # Android Debug Bridge version 1.0.32 (MM) #
|
||||
ECHO # Google USB Driver version 11.0.0000.00000 #
|
||||
ECHO # #
|
||||
ECHO # http://forum.xda-developers.com/showthread.php?t=2588979 #
|
||||
ECHO # #
|
||||
ECHO ###############################################################################
|
||||
:Q1
|
||||
ECHO(
|
||||
SET /P ANSWER=Do you want to install ADB and Fastboot? (Y/N)
|
||||
IF /i {%ANSWER%}=={y} (GOTO Q2)
|
||||
IF /i {%ANSWER%}=={yes} (GOTO Q2)
|
||||
IF /i {%ANSWER%}=={n} (GOTO DRV)
|
||||
IF /i {%ANSWER%}=={no} (GOTO DRV)
|
||||
ECHO(
|
||||
ECHO Bad answer! Use only Y/N or Yes/No
|
||||
GOTO Q1
|
||||
:Q2
|
||||
ECHO(
|
||||
SET /P ANSWER=Install ADB system-wide? (Y/N)
|
||||
IF /i {%ANSWER%}=={y} (GOTO ADB_S)
|
||||
IF /i {%ANSWER%}=={yes} (GOTO ADB_S)
|
||||
IF /i {%ANSWER%}=={n} (GOTO ADB_U)
|
||||
IF /i {%ANSWER%}=={no} (GOTO ADB_U)
|
||||
ECHO(
|
||||
ECHO Bad answer! Use only Y/N or Yes/No
|
||||
GOTO Q2
|
||||
:ADB_U
|
||||
ECHO(
|
||||
ECHO Installing ADB and Fastboot ... (current user only)
|
||||
ECHO(
|
||||
ADB kill-server > NUL 2>&1
|
||||
SET /a COUNT=0
|
||||
IF EXIST %WINDIR%\adb.exe DEL %WINDIR%\adb.exe /f /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
IF EXIST %WINDIR%\AdbWinApi.dll DEL %WINDIR%\AdbWinApi.dll /f /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
IF EXIST %WINDIR%\AdbWinUsbApi.dll DEL %WINDIR%\AdbWinUsbApi.dll /f /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
IF EXIST %WINDIR%\fastboot.exe DEL %WINDIR%\fastboot.exe /f /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
XCOPY adb\adb.exe %USERPROFILE%\adb\ /y /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log && SET /a COUNT=%COUNT%+1
|
||||
XCOPY adb\AdbWinApi.dll %USERPROFILE%\adb\ /y /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log && SET /a COUNT=%COUNT%+1
|
||||
XCOPY adb\AdbWinUsbApi.dll %USERPROFILE%\adb\ /y /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log && SET /a COUNT=%COUNT%+1
|
||||
XCOPY adb\fastboot.exe %USERPROFILE%\adb\ /y /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log && SET /a COUNT=%COUNT%+1
|
||||
ECHO %COUNT% file(s) copied.
|
||||
:PATH_U
|
||||
ECHO %PATH% > PATH.TMP
|
||||
ver > nul
|
||||
FIND "%USERPROFILE%\adb" PATH.TMP > nul 2>&1
|
||||
IF %ERRORLEVEL% LSS 1 GOTO DRV
|
||||
VER | FIND "5.1" > NUL 2>&1
|
||||
IF %ERRORLEVEL% LSS 1 xp\SETX.exe PATH "%PATH%;%USERPROFILE%\adb" 2>>%USERPROFILE%\Desktop\adb-installer.log && GOTO DRV
|
||||
SETX PATH "%PATH%;%USERPROFILE%\adb" 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
GOTO DRV
|
||||
:ADB_S
|
||||
ECHO(
|
||||
ECHO Installing ADB and Fastboot ... (system-wide)
|
||||
ECHO(
|
||||
ADB kill-server > NUL 2>&1
|
||||
SET /a COUNT=0
|
||||
IF EXIST %WINDIR%\adb.exe DEL %WINDIR%\adb.exe /f /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
IF EXIST %WINDIR%\AdbWinApi.dll DEL %WINDIR%\AdbWinApi.dll /f /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
IF EXIST %WINDIR%\AdbWinUsbApi.dll DEL %WINDIR%\AdbWinUsbApi.dll /f /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
IF EXIST %WINDIR%\fastboot.exe DEL %WINDIR%\fastboot.exe /f /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
XCOPY adb\adb.exe %SYSTEMDRIVE%\adb\ /y /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log && SET /a COUNT=%COUNT%+1
|
||||
XCOPY adb\AdbWinApi.dll %SYSTEMDRIVE%\adb\ /y /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log && SET /a COUNT=%COUNT%+1
|
||||
XCOPY adb\AdbWinUsbApi.dll %SYSTEMDRIVE%\adb\ /y /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log && SET /a COUNT=%COUNT%+1
|
||||
XCOPY adb\fastboot.exe %SYSTEMDRIVE%\adb\ /y /q 1>nul 2>>%USERPROFILE%\Desktop\adb-installer.log && SET /a COUNT=%COUNT%+1
|
||||
ECHO %COUNT% file(s) copied.
|
||||
:PATH_S
|
||||
ECHO %PATH% > PATH.TMP
|
||||
ver > nul
|
||||
FIND "%SYSTEMDRIVE%\adb" PATH.TMP > nul 2>&1
|
||||
IF %ERRORLEVEL% LSS 1 GOTO DRV
|
||||
VER | FIND "5.1" > NUL 2>&1
|
||||
IF %ERRORLEVEL% LSS 1 xp\SETX.exe PATH "%PATH%;%SYSTEMDRIVE%\adb" /m 2>>%USERPROFILE%\Desktop\adb-installer.log && GOTO DRV
|
||||
SETX PATH "%PATH%;%SYSTEMDRIVE%\adb" /m 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
:DRV
|
||||
DEL PATH.TMP
|
||||
ECHO(
|
||||
SET /P ANSWER=Do you want to install device drivers? (Y/N)
|
||||
IF /i {%ANSWER%}=={y} (GOTO DRIVER)
|
||||
IF /i {%ANSWER%}=={yes} (GOTO DRIVER)
|
||||
IF /i {%ANSWER%}=={n} (GOTO FINISH)
|
||||
IF /i {%ANSWER%}=={no} (GOTO FINISH)
|
||||
ECHO Bad answer! Use only Y/N or Yes/No
|
||||
GOTO DRV
|
||||
:DRIVER
|
||||
IF DEFINED programfiles(x86) GOTO x64
|
||||
:x86
|
||||
ECHO(
|
||||
ECHO Installing 32-bit driver ...
|
||||
ECHO Please continue driver installation ...
|
||||
PING localhost -n 1 >NUL
|
||||
START /wait driver\DPInst_x86 /f 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
GOTO FINISH
|
||||
:x64
|
||||
ECHO(
|
||||
ECHO Installing 64-bit driver ...
|
||||
ECHO Please continue driver installation ...
|
||||
PING localhost -n 1 >NUL
|
||||
START /wait driver\DPInst_x64 /f 2>>%USERPROFILE%\Desktop\adb-installer.log
|
||||
:FINISH
|
||||
ECHO(
|
||||
ECHO All done!
|
||||
CALL :LOG %USERPROFILE%\Desktop\adb-installer.log
|
||||
:LOG
|
||||
IF %~z1 == 0 DEL %USERPROFILE%\Desktop\adb-installer.log /f /q > nul 2>&1
|
||||
PING localhost -n 2 >NUL
|
||||
EXIT
|
BIN
ADB-FB-GUI/exec/xp/SETX.exe
Executable file
BIN
ADB-FB-GUI/exec/xp/SETX.exe
Executable file
Binary file not shown.
23
APPX Installer/APPX Installer.au3
Executable file
23
APPX Installer/APPX Installer.au3
Executable file
|
@ -0,0 +1,23 @@
|
|||
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
|
||||
#AutoIt3Wrapper_Res_ProductVersion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_CompanyName=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalCopyright=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalTradeMarks=Tyleo Softwares
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include "TyleoAboutMe.au3"
|
||||
|
||||
#cs
|
||||
|
||||
Tyleo Software Project Base v1
|
||||
Created With CNP and DevTools Base Folder
|
||||
|
||||
All Softwares created with this base are Free and Open Sourced.
|
||||
Join our Guilded Server ! https://www.guilded.gg/i/2DRlM7Mp
|
||||
|
||||
#ce
|
||||
|
3575
APPX Installer/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
3575
APPX Installer/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
File diff suppressed because it is too large
Load diff
259
APPX Installer/MetroGUI-UDF/MetroThemes.au3
Executable file
259
APPX Installer/MetroGUI-UDF/MetroThemes.au3
Executable file
|
@ -0,0 +1,259 @@
|
|||
#include-once
|
||||
#cs ----------------------------------------------------------------------------
|
||||
Author: BB_19
|
||||
Material Themes for MetroGUI UDF
|
||||
If you want to create your own themes, check out flatcolors.net, you can find there many random material/flat colors :)
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
;#Set Default Theme
|
||||
Global $GUIThemeColor = "0x13161C" ; GUI Background Color
|
||||
Global $FontThemeColor = "0xFFFFFF" ; Font Color
|
||||
Global $GUIBorderColor = "0x2D2D2D" ; GUI Border Color
|
||||
Global $ButtonBKColor = "0x00796b" ; Metro Button BacKground Color
|
||||
Global $ButtonTextColor = "0xFFFFFF" ; Metro Button Text Color
|
||||
Global $CB_Radio_Color = "0xFFFFFF" ;Checkbox and Radio Color (Box/Circle)
|
||||
Global $GUI_Theme_Name = "DarkTealV2" ;Theme Name (For internal usage)
|
||||
Global $CB_Radio_Hover_Color = "0xD8D8D8" ; Checkbox and Radio Hover Color (Box/Circle)
|
||||
Global $CB_Radio_CheckMark_Color = "0x1a1a1a" ; Checkbox and Radio checkmark color
|
||||
|
||||
Func _SetTheme($ThemeSelect = "DarkTeal")
|
||||
$GUI_Theme_Name = $ThemeSelect
|
||||
Switch ($ThemeSelect)
|
||||
Case "LightTeal"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTeal"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTealV2"
|
||||
$GUIThemeColor = "0x13161C"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x35635B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkRuby"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x712043"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightTeal"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x336058"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightCyan"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x0D5C63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightBlue"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x1A4F70"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnight"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x3C4D66"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlue"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlueV2"
|
||||
$GUIThemeColor = "0x040D11"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightBlue"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x244E80"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightCyan"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkCyan"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGray"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x3F5863"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGreen"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x2E7D32"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreen"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreenV2"
|
||||
$GUIThemeColor = "0x061319"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightRed"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xc62828"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGray"
|
||||
$GUIThemeColor = "0x1B2428"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x4F6772"
|
||||
$ButtonBKColor = "0x607D8B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkAmber"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xffa000"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightOrange"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xBC5E05"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkOrange"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xC76810"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPurple"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkPurple"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPink"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xE91E63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case Else
|
||||
ConsoleWrite("Metro-UDF-Error: Theme not found, using default theme." & @CRLF)
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
$GUI_Theme_Name = "DarkTealV2"
|
||||
EndSwitch
|
||||
EndFunc ;==>_SetTheme
|
495
APPX Installer/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
495
APPX Installer/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
|
@ -0,0 +1,495 @@
|
|||
;======================================
|
||||
;~ Author : binhnx
|
||||
;~ Created : 2014/10/20
|
||||
;======================================
|
||||
;~ Modified : BB_19
|
||||
;~ Last modified : 2017/10/07
|
||||
;======================================
|
||||
|
||||
#include-once
|
||||
#include <WinAPI.au3>
|
||||
#include <WinAPIShellEx.au3>
|
||||
Local $_cHvr_aData[0]
|
||||
|
||||
|
||||
Local Const $_cHvr_HDLLCOMCTL32 = _WinAPI_LoadLibrary('comctl32.dll')
|
||||
Assert($_cHvr_HDLLCOMCTL32 <> 0, 'This UDF requires comctl32.dll')
|
||||
Local Const $_cHvr_PDEFSUBCLASSPROC = _WinAPI_GetProcAddress($_cHvr_HDLLCOMCTL32, 'DefSubclassProc')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS_DLL = DllCallbackRegister('_cHvr_iProc', 'NONE', 'HWND;UINT;WPARAM;LPARAM;DWORD')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS = DllCallbackGetPtr($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
|
||||
OnAutoItExitRegister("_cHvr_Finalize")
|
||||
Local Const $_cHvr_TSUBCLASSEXE = Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86')
|
||||
Local Const $_cHvr_HEXECUTABLEHEAP = DllCall('kernel32.dll', 'HANDLE', 'HeapCreate', 'DWORD', 0x00040000, 'ULONG_PTR', 0, 'ULONG_PTR', 0)[0]
|
||||
Assert($_cHvr_HEXECUTABLEHEAP <> 0, 'Failed to create executable heap object')
|
||||
Local Const $_cHvr_PSUBCLASSEXE = _cHvr_ExecutableFromStruct(Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86'))
|
||||
|
||||
|
||||
Func _cHvr_Register($idCtrl, $fnHovOff = '', $fnHoverOn = '', $fnClick = '', $fnDblClk = '', $HoverData = 0,$ClickData = 0,$fnRightClick = '')
|
||||
Local $hWnd = GUICtrlGetHandle($idCtrl)
|
||||
If (Not (IsHWnd($hWnd))) Then Return SetError(1, 0, -1)
|
||||
Local $nIndex = _cHvr_GetNewIndex($hWnd)
|
||||
Local $aData[13]
|
||||
$aData[0] = $hWnd;Control Hwnd
|
||||
$aData[1] = $idCtrl; Control handle
|
||||
$aData[3] = $fnHovOff;Hover Off func
|
||||
$aData[4] = $HoverData;Hover Off Data
|
||||
$aData[5] = $fnHoverOn;Hover ON func
|
||||
$aData[6] = $HoverData;Hover ON Data
|
||||
$aData[7] = $fnRightClick;RClick func
|
||||
$aData[8] = $ClickData; click data
|
||||
$aData[9] = $fnClick;Click func
|
||||
$aData[10] = $ClickData; click data
|
||||
$aData[11] = $fnDblClk;DB click func
|
||||
$aData[12] = $ClickData;DB click data
|
||||
$_cHvr_aData[$nIndex] = $aData
|
||||
_WinAPI_SetWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd, $nIndex)
|
||||
Return $nIndex
|
||||
EndFunc ;==>_cHvr_Register
|
||||
|
||||
Func _cHvr_iProc($hWnd, $uMsg, $wParam, $lParam, $cIndex)
|
||||
Switch $uMsg
|
||||
Case 0x0200;Hover
|
||||
GUISetCursor(2, 1)
|
||||
_cHvr_cMove($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0201;Leftclick
|
||||
_cHvr_cDown($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0202
|
||||
_cHvr_cUp($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Return False
|
||||
Case 0x0203;Doubleclick
|
||||
_cHvr_cDblClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0204;Rightclick
|
||||
_cHvr_cRightClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x02A3;Hover leave
|
||||
_cHvr_cLeave($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0082;Deleted
|
||||
_cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
EndSwitch
|
||||
Return True
|
||||
EndFunc ;==>_cHvr_iProc
|
||||
|
||||
Func _cHvr_cDown(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_WinAPI_SetCapture($hWnd)
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndFunc ;==>_cHvr_cDown
|
||||
|
||||
Func _cHvr_cMove(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
Local $bIn = _cHvr_IsInClient($hWnd, $lParam)
|
||||
If Not $aCtrlData[2] Then
|
||||
If $bIn Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
Else
|
||||
If Not $bIn Then
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndIf
|
||||
EndIf
|
||||
ElseIf Not $aCtrlData[2] Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 5)
|
||||
Local $tTME = DllStructCreate('DWORD;DWORD;HWND;DWORD')
|
||||
DllStructSetData($tTME, 1, DllStructGetSize($tTME))
|
||||
DllStructSetData($tTME, 2, 2) ;$TME_LEAVE
|
||||
DllStructSetData($tTME, 3, $hWnd)
|
||||
DllCall('user32.dll', 'BOOL', 'TrackMouseEvent', 'STRUCT*', $tTME)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_cMove
|
||||
|
||||
Func _cHvr_cUp(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
Local $lRet = _WinAPI_DefSubclassProc($hWnd, $uMsg, $wParam, $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
_WinAPI_ReleaseCapture()
|
||||
If _cHvr_IsInClient($hWnd, $lParam) Then
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $lRet
|
||||
EndFunc ;==>_cHvr_cUp
|
||||
|
||||
Func _cHvr_cDblClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 11)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cRightClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 7)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cLeave(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndFunc ;==>_cHvr_cLeave
|
||||
|
||||
Func _cHvr_CallFunc(ByRef $aCtrlData, $iCallType)
|
||||
Call($aCtrlData[$iCallType], $aCtrlData[1], $aCtrlData[$iCallType + 1])
|
||||
EndFunc ;==>_cHvr_CallFunc
|
||||
|
||||
Func _cHvr_ArrayPush(ByRef $aStackArr, Const $vSrc1 = Default, Const $vSrc2 = Default, Const $vSrc3 = Default, Const $vSrc4 = Default, Const $vSrc5 = Default)
|
||||
While (UBound($aStackArr) < ($aStackArr[0] + @NumParams))
|
||||
ReDim $aStackArr[UBound($aStackArr) * 2]
|
||||
WEnd
|
||||
|
||||
If Not ($vSrc1 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc1
|
||||
EndIf
|
||||
If Not ($vSrc2 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc2
|
||||
EndIf
|
||||
If Not ($vSrc3 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc3
|
||||
EndIf
|
||||
If Not ($vSrc4 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc4
|
||||
EndIf
|
||||
If Not ($vSrc5 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc5
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_ArrayPush
|
||||
|
||||
Func _cHvr_IsInClient($hWnd, $lParam)
|
||||
Local $iX = BitShift(BitShift($lParam, -16), 16)
|
||||
Local $iY = BitShift($lParam, 16)
|
||||
Local $aSize = WinGetClientSize($hWnd)
|
||||
Return Not ($iX < 0 Or $iY < 0 Or $iX > $aSize[0] Or $iY > $aSize[1])
|
||||
EndFunc ;==>_cHvr_IsInClient
|
||||
|
||||
Func _cHvr_CSCP_X86() ;Create Subclass Process x86
|
||||
; $hWnd HWND size: 4 ESP+4 EBP+8
|
||||
; $uMsg UINT size: 4 ESP+8 EBP+12
|
||||
; $wParam WPARAM size: 4 ESP+12 EBP+16
|
||||
; $lParam LPARAM size: 4 ESP+16 EBP+20
|
||||
; $uIdSubclass UINT_PTR size: 4 ESP+20 EBP+24
|
||||
; $dwRefData DWORD_PTR size: 4 ESP+24 EBP+28 Total: 24
|
||||
|
||||
; NERVER FORGET ADDING align 1 OR YOU WILL SPEND HOURS TO FIND WHAT CAUSE 0xC0000005 Access Violation
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; Func ; __stdcall
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x55) ;push ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xEC) ;mov ebp, esp
|
||||
|
||||
; Save un-modified params to nv register
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+16]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x5D, 16) ;8b 5d 10
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov esi, DWORD PTR [ebp+12]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x75, 12) ;8b 75 0c
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+20]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x7D, 20) ;8b 7d 14
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x82) ;81 fe 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x2A3) ;81 fe a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;lea eax, DWORD PTR [esi-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x86, -0x200) ;8d 86 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
|
||||
; :WndProcInternal (HWND, UINT, WPARAM, LPARAM, DWORD)
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ecx, DWORD PTR [ebp+28]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x4D, 28) ;8b 4d 1c
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov edx, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x55, 8) ;8b 55 08
|
||||
$sExe &= 'BYTE;' ;push ecx
|
||||
_cHvr_ArrayPush($aOpCode, 0x51) ;51
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x52) ;52
|
||||
|
||||
; Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax, _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;' ;test eax, eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x85, 0xC0) ;85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;jz short Return
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$aOpCode[$nElemOffset[2]] = $nAddrOffset[3] - $nAddrOffset[2]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov eax, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x45, 8)
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x50) ;50
|
||||
|
||||
;Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax,COMCTL32.DefSubclassProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[3]] = $nAddrOffset[4] - $nAddrOffset[3]
|
||||
|
||||
; Restore nv-register
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;pop edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5E) ;pop esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5B) ;pop ebx
|
||||
|
||||
|
||||
; EndFunc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;WORD'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5D) ;pop ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0xC2, 24) ;ret 24
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X86
|
||||
|
||||
Func _cHvr_CSCP_X64() ;Create Subclass Process x64
|
||||
; First four INT and UINT has size = 8 instead of 4 because they are stored in RCX, RDX, R8, R9
|
||||
; $hWnd HWND size: 8 RCX RSP+8
|
||||
; $uMsg UINT size: 8 EDX RSP+16
|
||||
; $wParam WPARAM size: 8 R8 RSP+24
|
||||
; $lParam LPARAM size: 8 R9 RSP+32
|
||||
; $uIdSubclass UINT_PTR size: 8 RSP+40
|
||||
; $dwRefData DWORD_PTR size: 8 RSP+48 Total: 48
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x82) ;81 fa 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x2A3) ;81 fa a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;lea eax, DWORD PTR [rdx-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x82, -0x200) ;8d 82 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
|
||||
; :WndProcInternal (HWND rsp+8, UINT +16, WPARAM +24, LPARAM +32, DWORD +40)
|
||||
; $dwRefData = [ESP+48+48(sub rsp, 48)+8(push rdi)] = [ESP+104]
|
||||
; Save base registers:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+8], rbx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x5C, 0x24, 8) ;48 89 5c 24 08
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+16], rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x6C, 0x24, 16) ;48 89 6c 24 10
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+24], rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x74, 0x24, 24) ;48 89 74 24 18
|
||||
$sExe &= 'BYTE;' ;push rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
; Max sub-routine params = 5 (size = 5*8 = 40), + 8 bytes for return value = 48.
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;sub rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xEC, 48) ;48 83 ec 30
|
||||
; rbx, rbp, rsi now at [ESP+8+56], [ESP+16+56], [ESP+24+56]
|
||||
|
||||
; Save the parameters:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rdi, r9
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF9) ;49 8b f9
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rsi, r8
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF0) ;49 8b f0
|
||||
$sExe &= 'BYTE;BYTE;' ;mov ebx, edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xDA) ;8b da
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rbp, rcx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xE9) ;48 8b e9
|
||||
|
||||
; Prepare additional parameter for internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rax, QWORD PTR [rsp+104]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x44, 0x24, 104) ;48 8b 44 24 68
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+32], Rax]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x44, 0x24, 32) ;48 89 44 24 20
|
||||
|
||||
; Call internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;PTR;' ;mov rax, QWORD PTR _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
;movabs rax, _cHvr_iProc ;48 b8 QWORD_PTR
|
||||
$sExe &= 'BYTE;BYTE;' ;call rax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff d0
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; Restore parameters for DefSubclassProc call
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r9, rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xCF) ;4c 8b cf
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r8, rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xC6) ;4c 8b c6
|
||||
$sExe &= 'BYTE;BYTE;' ;mov edx, ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xD3) ;8b d3
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rcx, rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xCD) ;48 8b cd
|
||||
|
||||
; Restore registers value
|
||||
$aOpCode[$nElemOffset[3]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[3]
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbx, QWORD PTR [rsp+64]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x5C, 0x24, 64) ;48 8b 5c 24 40
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbp, QWORD PTR [rsp+72]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x6C, 0x24, 72) ;48 8b 6c 24 48
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rsi, QWORD PTR [rsp+80]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x74, 0x24, 80) ;48 8b 74 24 50
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;add rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xc4, 48) ;48 83 c4 30
|
||||
$sExe &= 'BYTE;' ;pop rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;5f
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[4] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[2]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[2]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$sExe &= 'BYTE;BYTE;PTR;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xE0)
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[4]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[4]
|
||||
$sExe &= 'BYTE;' ;ret 0
|
||||
_cHvr_ArrayPush($aOpCode, 0xC3)
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X64
|
||||
|
||||
Func _cHvr_PopulateOpcode(ByRef $sExe, ByRef $aOpCode)
|
||||
Local $tExe = DllStructCreate($sExe)
|
||||
Assert(@error = 0, 'DllStrucCreate Failed With Error = ' & @error)
|
||||
For $i = 1 To $aOpCode[0]
|
||||
DllStructSetData($tExe, $i, $aOpCode[$i])
|
||||
Next
|
||||
Return $tExe
|
||||
EndFunc ;==>_cHvr_PopulateOpcode
|
||||
|
||||
Func _cHvr_ExecutableFromStruct($tExe)
|
||||
Local $pExe = DllCall('kernel32.dll', 'PTR', 'HeapAlloc', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 8, 'ULONG_PTR', DllStructGetSize($tExe))[0]
|
||||
Assert($pExe <> 0, 'Allocate memory failed')
|
||||
DllCall("kernel32.dll", "none", "RtlMoveMemory", "PTR", $pExe, "PTR", DllStructGetPtr($tExe), "ULONG_PTR", DllStructGetSize($tExe))
|
||||
Assert(@error = 0, 'Failed to copy memory')
|
||||
Return $pExe
|
||||
EndFunc ;==>_cHvr_ExecutableFromStruct
|
||||
|
||||
Func _cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
_WinAPI_RemoveWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd)
|
||||
Local $aData=$_cHvr_aData[$cIndex]
|
||||
$_cHvr_aData[$cIndex] = 0
|
||||
Call( "_iControlDelete",$aData[1])
|
||||
EndFunc ;==>_cHvr_UnRegisterInternal
|
||||
|
||||
Func _cHvr_Finalize()
|
||||
DllCallbackFree($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
_WinAPI_FreeLibrary($_cHvr_HDLLCOMCTL32)
|
||||
If ($_cHvr_HEXECUTABLEHEAP <> 0) Then
|
||||
If ($_cHvr_PSUBCLASSEXE <> 0) Then
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapFree', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 0, 'PTR', $_cHvr_PSUBCLASSEXE)
|
||||
EndIf
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapDestroy', 'HANDLE', $_cHvr_HEXECUTABLEHEAP)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_Finalize
|
||||
|
||||
Func Assert($bExpression, $sMsg = '', $sScript = @ScriptName, $sScriptPath = @ScriptFullPath, $iLine = @ScriptLineNumber, $iError = @error, $iExtend = @extended)
|
||||
If (Not ($bExpression)) Then
|
||||
MsgBox(BitOR(1, 0x10), 'Assertion Error!', _
|
||||
@CRLF & 'Script' & @TAB & ': ' & $sScript _
|
||||
& @CRLF & 'Path' & @TAB & ': ' & $sScriptPath _
|
||||
& @CRLF & 'Line' & @TAB & ': ' & $iLine _
|
||||
& @CRLF & 'Error' & @TAB & ': ' & ($iError > 0x7FFF ? Hex($iError) : $iError) _
|
||||
& ($iExtend <> 0 ? ' (Extended : ' & ($iExtend > 0x7FFF ? Hex($iExtend) : $iExtend) & ')' : '') _
|
||||
& @CRLF & 'Message' & @TAB & ': ' & $sMsg _
|
||||
& @CRLF & @CRLF & 'OK: Exit Script' & @TAB & 'Cancel: Continue')
|
||||
Exit
|
||||
EndIf
|
||||
EndFunc ;==>Assert
|
||||
|
||||
Func _cHvr_GetNewIndex($hWnd)
|
||||
;Try to assign index from previously deleted control
|
||||
For $i = 0 To UBound($_cHvr_aData) - 1 Step +1
|
||||
If Not IsArray($_cHvr_aData[$i]) Then
|
||||
Return $i
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ReDim $_cHvr_aData[UBound($_cHvr_aData) + 1]
|
||||
Return UBound($_cHvr_aData) - 1
|
||||
EndFunc ;==>_cHvr_GetNewIndex
|
||||
|
||||
Func _WinAPI_GetCapture()
|
||||
Return DllCall("user32.dll", "HWND", "GetCapture")[0]
|
||||
EndFunc ;==>_WinAPI_GetCapture
|
279
APPX Installer/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
279
APPX Installer/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
|
@ -0,0 +1,279 @@
|
|||
#include-once
|
||||
|
||||
; #INDEX# ============================================================================================================
|
||||
; Title .........: _StringSize
|
||||
; AutoIt Version : v3.2.12.1 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; Remarks .......:
|
||||
; Note ..........:
|
||||
; Author(s) .....: Melba23 - thanks to trancexx for the default DC code
|
||||
; ====================================================================================================================
|
||||
|
||||
;#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
|
||||
|
||||
; #CURRENT# ==========================================================================================================
|
||||
; _StringSize: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; ====================================================================================================================
|
||||
|
||||
; #INTERNAL_USE_ONLY#=================================================================================================
|
||||
; _StringSize_Error_Close: Releases DC and deletes font object after error
|
||||
; _StringSize_DefaultFontName: Determines Windows default font
|
||||
; ====================================================================================================================
|
||||
|
||||
; #FUNCTION# =========================================================================================================
|
||||
; Name...........: _StringSize
|
||||
; Description ...: Returns size of rectangle required to display string - maximum permitted width can be chosen
|
||||
; Syntax ........: _StringSize($sText[, $iSize[, $iWeight[, $iAttrib[, $sName[, $iWidth[, $hWnd]]]]]])
|
||||
; Parameters ....: $sText - String to display
|
||||
; $iSize - [optional] Font size in points - (default = 8.5)
|
||||
; $iWeight - [optional] Font weight - (default = 400 = normal)
|
||||
; $iAttrib - [optional] Font attribute (0-Normal (default), 2-Italic, 4-Underline, 8 Strike)
|
||||
; + 1 if tabs are to be expanded before sizing
|
||||
; $sName - [optional] Font name - (default = Tahoma)
|
||||
; $iWidth - [optional] Max width for rectangle - (default = 0 => width of original string)
|
||||
; $hWnd - [optional] GUI in which string will be displayed - (default 0 => normally not required)
|
||||
; Requirement(s) : v3.2.12.1 or higher
|
||||
; Return values .: Success - Returns 4-element array: ($iWidth set // $iWidth not set)
|
||||
; |$array[0] = String reformatted with additonal @CRLF // Original string
|
||||
; |$array[1] = Height of single line in selected font // idem
|
||||
; |$array[2] = Width of rectangle required for reformatted // original string
|
||||
; |$array[3] = Height of rectangle required for reformatted // original string
|
||||
; Failure - Returns 0 and sets @error:
|
||||
; |1 - Incorrect parameter type (@extended = parameter index)
|
||||
; |2 - DLL call error - extended set as follows:
|
||||
; |1 - GetDC failure
|
||||
; |2 - SendMessage failure
|
||||
; |3 - GetDeviceCaps failure
|
||||
; |4 - CreateFont failure
|
||||
; |5 - SelectObject failure
|
||||
; |6 - GetTextExtentPoint32 failure
|
||||
; |3 - Font too large for chosen max width - a word will not fit
|
||||
; Author ........: Melba23 - thanks to trancexx for the default DC code
|
||||
; Modified ......:
|
||||
; Remarks .......: The use of the $hWnd parameter is not normally necessary - it is only required if the UDF does not
|
||||
; return correct dimensions without it.
|
||||
; Related .......:
|
||||
; Link ..........:
|
||||
; Example .......: Yes
|
||||
;=====================================================================================================================
|
||||
Func _StringSize($sText, $iSize = 8.5, $iWeight = 400, $iAttrib = 0, $sName = "", $iMaxWidth = 0, $hWnd = 0)
|
||||
|
||||
; Set parameters passed as Default
|
||||
If $iSize = Default Then $iSize = 8.5
|
||||
If $iWeight = Default Then $iWeight = 400
|
||||
If $iAttrib = Default Then $iAttrib = 0
|
||||
If $sName = "" Or $sName = Default Then $sName = _StringSize_DefaultFontName()
|
||||
|
||||
; Check parameters are correct type
|
||||
If Not IsString($sText) Then Return SetError(1, 1, 0)
|
||||
If Not IsNumber($iSize) Then Return SetError(1, 2, 0)
|
||||
If Not IsInt($iWeight) Then Return SetError(1, 3, 0)
|
||||
If Not IsInt($iAttrib) Then Return SetError(1, 4, 0)
|
||||
If Not IsString($sName) Then Return SetError(1, 5, 0)
|
||||
If Not IsNumber($iMaxWidth) Then Return SetError(1, 6, 0)
|
||||
If Not IsHwnd($hWnd) And $hWnd <> 0 Then Return SetError(1, 7, 0)
|
||||
|
||||
Local $aRet, $hDC, $hFont, $hLabel = 0, $hLabel_Handle
|
||||
|
||||
; Check for tab expansion flag
|
||||
Local $iExpTab = BitAnd($iAttrib, 1)
|
||||
; Remove possible tab expansion flag from font attribute value
|
||||
$iAttrib = BitAnd($iAttrib, BitNot(1))
|
||||
|
||||
; If GUI handle was passed
|
||||
If IsHWnd($hWnd) Then
|
||||
; Create label outside GUI borders
|
||||
$hLabel = GUICtrlCreateLabel("", -10, -10, 10, 10)
|
||||
$hLabel_Handle = GUICtrlGetHandle(-1)
|
||||
GUICtrlSetFont(-1, $iSize, $iWeight, $iAttrib, $sName)
|
||||
; Create DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hLabel_Handle)
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, 1, 0)
|
||||
EndIf
|
||||
$hDC = $aRet[0]
|
||||
$aRet = DllCall("user32.dll", "lparam", "SendMessage", "hwnd", $hLabel_Handle, "int", 0x0031, "wparam", 0, "lparam", 0) ; $WM_GetFont
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, _StringSize_Error_Close(2, $hDC), 0)
|
||||
EndIf
|
||||
$hFont = $aRet[0]
|
||||
Else
|
||||
; Get default DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hWnd)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, 1, 0)
|
||||
$hDC = $aRet[0]
|
||||
; Create required font
|
||||
$aRet = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $hDC, "int", 90) ; $LOGPIXELSY
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(3, $hDC), 0)
|
||||
Local $iInfo = $aRet[0]
|
||||
$aRet = DllCall("gdi32.dll", "handle", "CreateFontW", "int", -$iInfo * $iSize / 72, "int", 0, "int", 0, "int", 0, _
|
||||
"int", $iWeight, "dword", BitAND($iAttrib, 2), "dword", BitAND($iAttrib, 4), "dword", BitAND($iAttrib, 8), "dword", 0, "dword", 0, _
|
||||
"dword", 0, "dword", 5, "dword", 0, "wstr", $sName)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(4, $hDC), 0)
|
||||
$hFont = $aRet[0]
|
||||
EndIf
|
||||
|
||||
; Select font and store previous font
|
||||
$aRet = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hFont)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(5, $hDC, $hFont, $hLabel), 0)
|
||||
Local $hPrevFont = $aRet[0]
|
||||
|
||||
; Declare variables
|
||||
Local $avSize_Info[4], $iLine_Length, $iLine_Height = 0, $iLine_Count = 0, $iLine_Width = 0, $iWrap_Count, $iLast_Word, $sTest_Line
|
||||
; Declare and fill Size structure
|
||||
Local $tSize = DllStructCreate("int X;int Y")
|
||||
DllStructSetData($tSize, "X", 0)
|
||||
DllStructSetData($tSize, "Y", 0)
|
||||
|
||||
; Ensure EoL is @CRLF and break text into lines
|
||||
$sText = StringRegExpReplace($sText, "((?<!\x0d)\x0a|\x0d(?!\x0a))", @CRLF)
|
||||
Local $asLines = StringSplit($sText, @CRLF, 1)
|
||||
|
||||
; For each line
|
||||
For $i = 1 To $asLines[0]
|
||||
; Expand tabs if required
|
||||
If $iExpTab Then
|
||||
$asLines[$i] = StringReplace($asLines[$i], @TAB, " XXXXXXXX")
|
||||
EndIf
|
||||
; Size line
|
||||
$iLine_Length = StringLen($asLines[$i])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$i], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
If DllStructGetData($tSize, "X") > $iLine_Width Then $iLine_Width = DllStructGetData($tSize, "X")
|
||||
If DllStructGetData($tSize, "Y") > $iLine_Height Then $iLine_Height = DllStructGetData($tSize, "Y")
|
||||
Next
|
||||
|
||||
; Check if $iMaxWidth has been both set and exceeded
|
||||
If $iMaxWidth <> 0 And $iLine_Width > $iMaxWidth Then ; Wrapping required
|
||||
; For each Line
|
||||
For $j = 1 To $asLines[0]
|
||||
; Size line unwrapped
|
||||
$iLine_Length = StringLen($asLines[$j])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$j], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
; Check wrap status
|
||||
If DllStructGetData($tSize, "X") < $iMaxWidth - 4 Then
|
||||
; No wrap needed so count line and store
|
||||
$iLine_Count += 1
|
||||
$avSize_Info[0] &= $asLines[$j] & @CRLF
|
||||
Else
|
||||
; Wrap needed so zero counter for wrapped lines
|
||||
$iWrap_Count = 0
|
||||
; Build line to max width
|
||||
While 1
|
||||
; Zero line width
|
||||
$iLine_Width = 0
|
||||
; Initialise pointer for end of word
|
||||
$iLast_Word = 0
|
||||
; Add characters until EOL or maximum width reached
|
||||
For $i = 1 To StringLen($asLines[$j])
|
||||
; Is this just past a word ending?
|
||||
If StringMid($asLines[$j], $i, 1) = " " Then $iLast_Word = $i - 1
|
||||
; Increase line by one character
|
||||
$sTest_Line = StringMid($asLines[$j], 1, $i)
|
||||
; Get line length
|
||||
$iLine_Length = StringLen($sTest_Line)
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $sTest_Line, "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
$iLine_Width = DllStructGetData($tSize, "X")
|
||||
; If too long exit the loop
|
||||
If $iLine_Width >= $iMaxWidth - 4 Then ExitLoop
|
||||
Next
|
||||
; End of the line of text?
|
||||
If $i > StringLen($asLines[$j]) Then
|
||||
; Yes, so add final line to count
|
||||
$iWrap_Count += 1
|
||||
; Store line
|
||||
$avSize_Info[0] &= $sTest_Line & @CRLF
|
||||
ExitLoop
|
||||
Else
|
||||
; No, but add line just completed to count
|
||||
$iWrap_Count += 1
|
||||
; Check at least 1 word completed or return error
|
||||
If $iLast_Word = 0 Then Return SetError(3, _StringSize_Error_Close(0, $hDC, $hFont, $hLabel), 0)
|
||||
; Store line up to end of last word
|
||||
$avSize_Info[0] &= StringLeft($sTest_Line, $iLast_Word) & @CRLF
|
||||
; Strip string to point reached
|
||||
$asLines[$j] = StringTrimLeft($asLines[$j], $iLast_Word)
|
||||
; Trim leading whitespace
|
||||
$asLines[$j] = StringStripWS($asLines[$j], 1)
|
||||
; Repeat with remaining characters in line
|
||||
EndIf
|
||||
WEnd
|
||||
; Add the number of wrapped lines to the count
|
||||
$iLine_Count += $iWrap_Count
|
||||
EndIf
|
||||
Next
|
||||
; Reset any tab expansions
|
||||
If $iExpTab Then
|
||||
$avSize_Info[0] = StringRegExpReplace($avSize_Info[0], "\x20?XXXXXXXX", @TAB)
|
||||
EndIf
|
||||
; Complete return array
|
||||
$avSize_Info[1] = $iLine_Height
|
||||
$avSize_Info[2] = $iMaxWidth
|
||||
; Convert lines to pixels and add drop margin
|
||||
$avSize_Info[3] = ($iLine_Count * $iLine_Height) + 4
|
||||
Else ; No wrapping required
|
||||
; Create return array (add drop margin to height)
|
||||
Local $avSize_Info[4] = [$sText, $iLine_Height, $iLine_Width, ($asLines[0] * $iLine_Height) + 4]
|
||||
EndIf
|
||||
|
||||
; Clear up
|
||||
DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hPrevFont)
|
||||
DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $avSize_Info
|
||||
|
||||
EndFunc ;==>_StringSize
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_Error_Close
|
||||
; Description ...: Releases DC and deleted font object if required after error
|
||||
; Syntax ........: _StringSize_Error_Close ($iExtCode, $hDC, $hGUI)
|
||||
; Parameters ....: $iExtCode - code to return
|
||||
; $hDC, $hGUI - handles as set in _StringSize function
|
||||
; Return value ..: $iExtCode as passed
|
||||
; Author ........: Melba23
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_Error_Close($iExtCode, $hDC = 0, $hFont = 0, $hLabel = 0)
|
||||
|
||||
If $hFont <> 0 Then DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
If $hDC <> 0 Then DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $iExtCode
|
||||
|
||||
EndFunc ;=>_StringSize_Error_Close
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_DefaultFontName
|
||||
; Description ...: Determines Windows default font
|
||||
; Syntax ........: _StringSize_DefaultFontName()
|
||||
; Parameters ....: None
|
||||
; Return values .: Success - Returns name of system default font
|
||||
; Failure - Returns "Tahoma"
|
||||
; Author ........: Melba23, based on some original code by Larrydalooza
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_DefaultFontName()
|
||||
|
||||
; Get default system font data
|
||||
Local $tNONCLIENTMETRICS = DllStructCreate("uint;int;int;int;int;int;byte[60];int;int;byte[60];int;int;byte[60];byte[60];byte[60]")
|
||||
DLLStructSetData($tNONCLIENTMETRICS, 1, DllStructGetSize($tNONCLIENTMETRICS))
|
||||
DLLCall("user32.dll", "int", "SystemParametersInfo", "int", 41, "int", DllStructGetSize($tNONCLIENTMETRICS), "ptr", DllStructGetPtr($tNONCLIENTMETRICS), "int", 0)
|
||||
Local $tLOGFONT = DllStructCreate("long;long;long;long;long;byte;byte;byte;byte;byte;byte;byte;byte;char[32]", DLLStructGetPtr($tNONCLIENTMETRICS, 13))
|
||||
If IsString(DllStructGetData($tLOGFONT, 14)) Then
|
||||
Return DllStructGetData($tLOGFONT, 14)
|
||||
Else
|
||||
Return "Tahoma"
|
||||
EndIf
|
||||
|
||||
EndFunc ;=>_StringSize_DefaultFontName
|
80
APPX Installer/MetroGUI-UDF/_GUIDisable.au3
Executable file
80
APPX Installer/MetroGUI-UDF/_GUIDisable.au3
Executable file
|
@ -0,0 +1,80 @@
|
|||
#include-once
|
||||
|
||||
; #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
|
||||
; #INDEX# =======================================================================================================================
|
||||
; Title .........: _GUIDisable
|
||||
; AutoIt Version : v3.2.2.0 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Creates a dimming effect on the current/selected GUI.
|
||||
; Note ..........:
|
||||
; Author(s) .....: guinness
|
||||
; Remarks .......: Thanks to supersonic for the idea of adjusting the UDF when using Classic themes in Windows Vista+.
|
||||
; ===============================================================================================================================
|
||||
|
||||
; #INCLUDES# ====================================================================================================================
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <WinAPI.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
; #GLOBAL VARIABLES# ============================================================================================================
|
||||
Global Enum $__hGUIDisableHWnd, $__hGUIDisableHWndPrevious, $__iGUIDisableMax
|
||||
Global $__aGUIDisable[$__iGUIDisableMax]
|
||||
|
||||
Func _GUIDisable($hWnd, $iAnimate = Default, $iBrightness = Default, $bColor = 0x000000)
|
||||
Local Const $AW_SLIDE_IN_TOP = 0x00040004, $AW_SLIDE_OUT_TOP = 0x00050008
|
||||
|
||||
If $iAnimate = Default Then
|
||||
$iAnimate = 1
|
||||
EndIf
|
||||
If $iBrightness = Default Then
|
||||
$iBrightness = 5
|
||||
EndIf
|
||||
|
||||
If $hWnd = -1 And $__aGUIDisable[$__hGUIDisableHWnd] = 0 Then
|
||||
Local $iLabel = GUICtrlCreateLabel('', -99, -99, 1, 1)
|
||||
$hWnd = _WinAPI_GetParent(GUICtrlGetHandle($iLabel))
|
||||
If @error Then
|
||||
Return SetError(1, 0 * GUICtrlDelete($iLabel), 0)
|
||||
EndIf
|
||||
GUICtrlDelete($iLabel)
|
||||
EndIf
|
||||
|
||||
If IsHWnd($__aGUIDisable[$__hGUIDisableHWnd]) Then
|
||||
GUIDelete($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = 0
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = 0
|
||||
Else
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = $hWnd
|
||||
|
||||
Local $iLeft = 0, $iTop = 0
|
||||
Local $iStyle = GUIGetStyle($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
Local $sCurrentTheme = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes', 'CurrentTheme')
|
||||
Local $iIsClassicTheme = Number(StringInStr($sCurrentTheme, 'Basic.theme', 2) = 0 And StringInStr($sCurrentTheme, 'Ease of Access Themes', 2) > 0)
|
||||
|
||||
Local $aWinGetPos = WinGetClientSize($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = GUICreate('', $aWinGetPos[0], $aWinGetPos[1], $iLeft + 3, $iTop + 3, $WS_POPUP, $WS_EX_MDICHILD, $__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
GUISetBkColor($bColor, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
WinSetTrans($__aGUIDisable[$__hGUIDisableHWnd], '', Round($iBrightness * (255 / 100)))
|
||||
If not $iAnimate Then
|
||||
GUISetState(@SW_SHOW, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
EndIf
|
||||
GUISetState(@SW_DISABLE, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
EndIf
|
||||
Return $__aGUIDisable[$__hGUIDisableHWnd]
|
||||
EndFunc ;==>_GUIDisable
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
Func __GUIDisable_WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
|
||||
#forceref $hWnd, $iMsg, $iwParam
|
||||
Local $iHeight = _WinAPI_HiWord($ilParam)
|
||||
Local $iWidth = _WinAPI_LoWord($ilParam)
|
||||
If $hWnd = $__aGUIDisable[$__hGUIDisableHWndPrevious] Then
|
||||
Local $iWinGetPos = WinGetPos($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
If @error = 0 Then
|
||||
WinMove($__aGUIDisable[$__hGUIDisableHWnd], '', $iWinGetPos[0], $iWinGetPos[1], $iWidth, $iHeight)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $GUI_RUNDEFMSG
|
||||
EndFunc ;==>__GUIDisable_WM_SIZE
|
13
APPX Installer/Releases/.media
Executable file
13
APPX Installer/Releases/.media
Executable file
|
@ -0,0 +1,13 @@
|
|||
#cs ----------------------------------------------------------------------------
|
||||
|
||||
AutoIt Version : 3.3.14.5
|
||||
Auteur: Tyleo
|
||||
|
||||
Fonction du Script :
|
||||
Modèle de Script AutoIt.
|
||||
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
; Début du script - Ajouter votre code ci-dessous.
|
||||
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
|
||||
|
10
APPX Installer/TyleoAboutMe.au3
Executable file
10
APPX Installer/TyleoAboutMe.au3
Executable file
|
@ -0,0 +1,10 @@
|
|||
|
||||
#include <ButtonConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
Func TyleoAbout($SoftName)
|
||||
_Metro_MsgBox(8,"About / A propos",$SoftName & @CRLF & "Tyleo Softwares @ 2021" & @CRLF & " " & @CRLF & "BUILDING TOMORROW" & @CRLF & " " & @CRLF & "This Software is free and Open Source." & @CRLF & "tyleo.dev@outlook.com",400,15)
|
||||
Return True
|
||||
EndFunc
|
23
Android-ADB-F-GUI/Android-ADB-F-GUI.au3
Executable file
23
Android-ADB-F-GUI/Android-ADB-F-GUI.au3
Executable file
|
@ -0,0 +1,23 @@
|
|||
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
|
||||
#AutoIt3Wrapper_Res_ProductVersion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_CompanyName=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalCopyright=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalTradeMarks=Tyleo Softwares
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include "TyleoAboutMe.au3"
|
||||
|
||||
#cs
|
||||
|
||||
Tyleo Software Project Base v1
|
||||
Created With CNP and DevTools Base Folder
|
||||
|
||||
All Softwares created with this base are Free and Open Sourced.
|
||||
Join our Guilded Server ! https://www.guilded.gg/i/2DRlM7Mp
|
||||
|
||||
#ce
|
||||
|
3575
Android-ADB-F-GUI/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
3575
Android-ADB-F-GUI/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
File diff suppressed because it is too large
Load diff
259
Android-ADB-F-GUI/MetroGUI-UDF/MetroThemes.au3
Executable file
259
Android-ADB-F-GUI/MetroGUI-UDF/MetroThemes.au3
Executable file
|
@ -0,0 +1,259 @@
|
|||
#include-once
|
||||
#cs ----------------------------------------------------------------------------
|
||||
Author: BB_19
|
||||
Material Themes for MetroGUI UDF
|
||||
If you want to create your own themes, check out flatcolors.net, you can find there many random material/flat colors :)
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
;#Set Default Theme
|
||||
Global $GUIThemeColor = "0x13161C" ; GUI Background Color
|
||||
Global $FontThemeColor = "0xFFFFFF" ; Font Color
|
||||
Global $GUIBorderColor = "0x2D2D2D" ; GUI Border Color
|
||||
Global $ButtonBKColor = "0x00796b" ; Metro Button BacKground Color
|
||||
Global $ButtonTextColor = "0xFFFFFF" ; Metro Button Text Color
|
||||
Global $CB_Radio_Color = "0xFFFFFF" ;Checkbox and Radio Color (Box/Circle)
|
||||
Global $GUI_Theme_Name = "DarkTealV2" ;Theme Name (For internal usage)
|
||||
Global $CB_Radio_Hover_Color = "0xD8D8D8" ; Checkbox and Radio Hover Color (Box/Circle)
|
||||
Global $CB_Radio_CheckMark_Color = "0x1a1a1a" ; Checkbox and Radio checkmark color
|
||||
|
||||
Func _SetTheme($ThemeSelect = "DarkTeal")
|
||||
$GUI_Theme_Name = $ThemeSelect
|
||||
Switch ($ThemeSelect)
|
||||
Case "LightTeal"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTeal"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTealV2"
|
||||
$GUIThemeColor = "0x13161C"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x35635B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkRuby"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x712043"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightTeal"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x336058"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightCyan"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x0D5C63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightBlue"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x1A4F70"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnight"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x3C4D66"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlue"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlueV2"
|
||||
$GUIThemeColor = "0x040D11"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightBlue"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x244E80"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightCyan"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkCyan"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGray"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x3F5863"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGreen"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x2E7D32"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreen"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreenV2"
|
||||
$GUIThemeColor = "0x061319"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightRed"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xc62828"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGray"
|
||||
$GUIThemeColor = "0x1B2428"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x4F6772"
|
||||
$ButtonBKColor = "0x607D8B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkAmber"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xffa000"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightOrange"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xBC5E05"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkOrange"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xC76810"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPurple"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkPurple"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPink"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xE91E63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case Else
|
||||
ConsoleWrite("Metro-UDF-Error: Theme not found, using default theme." & @CRLF)
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
$GUI_Theme_Name = "DarkTealV2"
|
||||
EndSwitch
|
||||
EndFunc ;==>_SetTheme
|
495
Android-ADB-F-GUI/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
495
Android-ADB-F-GUI/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
|
@ -0,0 +1,495 @@
|
|||
;======================================
|
||||
;~ Author : binhnx
|
||||
;~ Created : 2014/10/20
|
||||
;======================================
|
||||
;~ Modified : BB_19
|
||||
;~ Last modified : 2017/10/07
|
||||
;======================================
|
||||
|
||||
#include-once
|
||||
#include <WinAPI.au3>
|
||||
#include <WinAPIShellEx.au3>
|
||||
Local $_cHvr_aData[0]
|
||||
|
||||
|
||||
Local Const $_cHvr_HDLLCOMCTL32 = _WinAPI_LoadLibrary('comctl32.dll')
|
||||
Assert($_cHvr_HDLLCOMCTL32 <> 0, 'This UDF requires comctl32.dll')
|
||||
Local Const $_cHvr_PDEFSUBCLASSPROC = _WinAPI_GetProcAddress($_cHvr_HDLLCOMCTL32, 'DefSubclassProc')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS_DLL = DllCallbackRegister('_cHvr_iProc', 'NONE', 'HWND;UINT;WPARAM;LPARAM;DWORD')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS = DllCallbackGetPtr($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
|
||||
OnAutoItExitRegister("_cHvr_Finalize")
|
||||
Local Const $_cHvr_TSUBCLASSEXE = Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86')
|
||||
Local Const $_cHvr_HEXECUTABLEHEAP = DllCall('kernel32.dll', 'HANDLE', 'HeapCreate', 'DWORD', 0x00040000, 'ULONG_PTR', 0, 'ULONG_PTR', 0)[0]
|
||||
Assert($_cHvr_HEXECUTABLEHEAP <> 0, 'Failed to create executable heap object')
|
||||
Local Const $_cHvr_PSUBCLASSEXE = _cHvr_ExecutableFromStruct(Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86'))
|
||||
|
||||
|
||||
Func _cHvr_Register($idCtrl, $fnHovOff = '', $fnHoverOn = '', $fnClick = '', $fnDblClk = '', $HoverData = 0,$ClickData = 0,$fnRightClick = '')
|
||||
Local $hWnd = GUICtrlGetHandle($idCtrl)
|
||||
If (Not (IsHWnd($hWnd))) Then Return SetError(1, 0, -1)
|
||||
Local $nIndex = _cHvr_GetNewIndex($hWnd)
|
||||
Local $aData[13]
|
||||
$aData[0] = $hWnd;Control Hwnd
|
||||
$aData[1] = $idCtrl; Control handle
|
||||
$aData[3] = $fnHovOff;Hover Off func
|
||||
$aData[4] = $HoverData;Hover Off Data
|
||||
$aData[5] = $fnHoverOn;Hover ON func
|
||||
$aData[6] = $HoverData;Hover ON Data
|
||||
$aData[7] = $fnRightClick;RClick func
|
||||
$aData[8] = $ClickData; click data
|
||||
$aData[9] = $fnClick;Click func
|
||||
$aData[10] = $ClickData; click data
|
||||
$aData[11] = $fnDblClk;DB click func
|
||||
$aData[12] = $ClickData;DB click data
|
||||
$_cHvr_aData[$nIndex] = $aData
|
||||
_WinAPI_SetWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd, $nIndex)
|
||||
Return $nIndex
|
||||
EndFunc ;==>_cHvr_Register
|
||||
|
||||
Func _cHvr_iProc($hWnd, $uMsg, $wParam, $lParam, $cIndex)
|
||||
Switch $uMsg
|
||||
Case 0x0200;Hover
|
||||
GUISetCursor(2, 1)
|
||||
_cHvr_cMove($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0201;Leftclick
|
||||
_cHvr_cDown($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0202
|
||||
_cHvr_cUp($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Return False
|
||||
Case 0x0203;Doubleclick
|
||||
_cHvr_cDblClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0204;Rightclick
|
||||
_cHvr_cRightClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x02A3;Hover leave
|
||||
_cHvr_cLeave($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0082;Deleted
|
||||
_cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
EndSwitch
|
||||
Return True
|
||||
EndFunc ;==>_cHvr_iProc
|
||||
|
||||
Func _cHvr_cDown(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_WinAPI_SetCapture($hWnd)
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndFunc ;==>_cHvr_cDown
|
||||
|
||||
Func _cHvr_cMove(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
Local $bIn = _cHvr_IsInClient($hWnd, $lParam)
|
||||
If Not $aCtrlData[2] Then
|
||||
If $bIn Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
Else
|
||||
If Not $bIn Then
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndIf
|
||||
EndIf
|
||||
ElseIf Not $aCtrlData[2] Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 5)
|
||||
Local $tTME = DllStructCreate('DWORD;DWORD;HWND;DWORD')
|
||||
DllStructSetData($tTME, 1, DllStructGetSize($tTME))
|
||||
DllStructSetData($tTME, 2, 2) ;$TME_LEAVE
|
||||
DllStructSetData($tTME, 3, $hWnd)
|
||||
DllCall('user32.dll', 'BOOL', 'TrackMouseEvent', 'STRUCT*', $tTME)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_cMove
|
||||
|
||||
Func _cHvr_cUp(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
Local $lRet = _WinAPI_DefSubclassProc($hWnd, $uMsg, $wParam, $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
_WinAPI_ReleaseCapture()
|
||||
If _cHvr_IsInClient($hWnd, $lParam) Then
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $lRet
|
||||
EndFunc ;==>_cHvr_cUp
|
||||
|
||||
Func _cHvr_cDblClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 11)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cRightClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 7)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cLeave(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndFunc ;==>_cHvr_cLeave
|
||||
|
||||
Func _cHvr_CallFunc(ByRef $aCtrlData, $iCallType)
|
||||
Call($aCtrlData[$iCallType], $aCtrlData[1], $aCtrlData[$iCallType + 1])
|
||||
EndFunc ;==>_cHvr_CallFunc
|
||||
|
||||
Func _cHvr_ArrayPush(ByRef $aStackArr, Const $vSrc1 = Default, Const $vSrc2 = Default, Const $vSrc3 = Default, Const $vSrc4 = Default, Const $vSrc5 = Default)
|
||||
While (UBound($aStackArr) < ($aStackArr[0] + @NumParams))
|
||||
ReDim $aStackArr[UBound($aStackArr) * 2]
|
||||
WEnd
|
||||
|
||||
If Not ($vSrc1 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc1
|
||||
EndIf
|
||||
If Not ($vSrc2 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc2
|
||||
EndIf
|
||||
If Not ($vSrc3 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc3
|
||||
EndIf
|
||||
If Not ($vSrc4 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc4
|
||||
EndIf
|
||||
If Not ($vSrc5 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc5
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_ArrayPush
|
||||
|
||||
Func _cHvr_IsInClient($hWnd, $lParam)
|
||||
Local $iX = BitShift(BitShift($lParam, -16), 16)
|
||||
Local $iY = BitShift($lParam, 16)
|
||||
Local $aSize = WinGetClientSize($hWnd)
|
||||
Return Not ($iX < 0 Or $iY < 0 Or $iX > $aSize[0] Or $iY > $aSize[1])
|
||||
EndFunc ;==>_cHvr_IsInClient
|
||||
|
||||
Func _cHvr_CSCP_X86() ;Create Subclass Process x86
|
||||
; $hWnd HWND size: 4 ESP+4 EBP+8
|
||||
; $uMsg UINT size: 4 ESP+8 EBP+12
|
||||
; $wParam WPARAM size: 4 ESP+12 EBP+16
|
||||
; $lParam LPARAM size: 4 ESP+16 EBP+20
|
||||
; $uIdSubclass UINT_PTR size: 4 ESP+20 EBP+24
|
||||
; $dwRefData DWORD_PTR size: 4 ESP+24 EBP+28 Total: 24
|
||||
|
||||
; NERVER FORGET ADDING align 1 OR YOU WILL SPEND HOURS TO FIND WHAT CAUSE 0xC0000005 Access Violation
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; Func ; __stdcall
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x55) ;push ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xEC) ;mov ebp, esp
|
||||
|
||||
; Save un-modified params to nv register
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+16]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x5D, 16) ;8b 5d 10
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov esi, DWORD PTR [ebp+12]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x75, 12) ;8b 75 0c
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+20]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x7D, 20) ;8b 7d 14
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x82) ;81 fe 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x2A3) ;81 fe a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;lea eax, DWORD PTR [esi-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x86, -0x200) ;8d 86 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
|
||||
; :WndProcInternal (HWND, UINT, WPARAM, LPARAM, DWORD)
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ecx, DWORD PTR [ebp+28]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x4D, 28) ;8b 4d 1c
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov edx, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x55, 8) ;8b 55 08
|
||||
$sExe &= 'BYTE;' ;push ecx
|
||||
_cHvr_ArrayPush($aOpCode, 0x51) ;51
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x52) ;52
|
||||
|
||||
; Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax, _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;' ;test eax, eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x85, 0xC0) ;85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;jz short Return
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$aOpCode[$nElemOffset[2]] = $nAddrOffset[3] - $nAddrOffset[2]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov eax, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x45, 8)
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x50) ;50
|
||||
|
||||
;Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax,COMCTL32.DefSubclassProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[3]] = $nAddrOffset[4] - $nAddrOffset[3]
|
||||
|
||||
; Restore nv-register
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;pop edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5E) ;pop esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5B) ;pop ebx
|
||||
|
||||
|
||||
; EndFunc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;WORD'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5D) ;pop ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0xC2, 24) ;ret 24
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X86
|
||||
|
||||
Func _cHvr_CSCP_X64() ;Create Subclass Process x64
|
||||
; First four INT and UINT has size = 8 instead of 4 because they are stored in RCX, RDX, R8, R9
|
||||
; $hWnd HWND size: 8 RCX RSP+8
|
||||
; $uMsg UINT size: 8 EDX RSP+16
|
||||
; $wParam WPARAM size: 8 R8 RSP+24
|
||||
; $lParam LPARAM size: 8 R9 RSP+32
|
||||
; $uIdSubclass UINT_PTR size: 8 RSP+40
|
||||
; $dwRefData DWORD_PTR size: 8 RSP+48 Total: 48
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x82) ;81 fa 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x2A3) ;81 fa a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;lea eax, DWORD PTR [rdx-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x82, -0x200) ;8d 82 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
|
||||
; :WndProcInternal (HWND rsp+8, UINT +16, WPARAM +24, LPARAM +32, DWORD +40)
|
||||
; $dwRefData = [ESP+48+48(sub rsp, 48)+8(push rdi)] = [ESP+104]
|
||||
; Save base registers:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+8], rbx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x5C, 0x24, 8) ;48 89 5c 24 08
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+16], rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x6C, 0x24, 16) ;48 89 6c 24 10
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+24], rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x74, 0x24, 24) ;48 89 74 24 18
|
||||
$sExe &= 'BYTE;' ;push rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
; Max sub-routine params = 5 (size = 5*8 = 40), + 8 bytes for return value = 48.
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;sub rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xEC, 48) ;48 83 ec 30
|
||||
; rbx, rbp, rsi now at [ESP+8+56], [ESP+16+56], [ESP+24+56]
|
||||
|
||||
; Save the parameters:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rdi, r9
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF9) ;49 8b f9
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rsi, r8
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF0) ;49 8b f0
|
||||
$sExe &= 'BYTE;BYTE;' ;mov ebx, edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xDA) ;8b da
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rbp, rcx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xE9) ;48 8b e9
|
||||
|
||||
; Prepare additional parameter for internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rax, QWORD PTR [rsp+104]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x44, 0x24, 104) ;48 8b 44 24 68
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+32], Rax]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x44, 0x24, 32) ;48 89 44 24 20
|
||||
|
||||
; Call internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;PTR;' ;mov rax, QWORD PTR _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
;movabs rax, _cHvr_iProc ;48 b8 QWORD_PTR
|
||||
$sExe &= 'BYTE;BYTE;' ;call rax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff d0
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; Restore parameters for DefSubclassProc call
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r9, rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xCF) ;4c 8b cf
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r8, rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xC6) ;4c 8b c6
|
||||
$sExe &= 'BYTE;BYTE;' ;mov edx, ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xD3) ;8b d3
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rcx, rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xCD) ;48 8b cd
|
||||
|
||||
; Restore registers value
|
||||
$aOpCode[$nElemOffset[3]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[3]
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbx, QWORD PTR [rsp+64]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x5C, 0x24, 64) ;48 8b 5c 24 40
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbp, QWORD PTR [rsp+72]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x6C, 0x24, 72) ;48 8b 6c 24 48
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rsi, QWORD PTR [rsp+80]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x74, 0x24, 80) ;48 8b 74 24 50
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;add rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xc4, 48) ;48 83 c4 30
|
||||
$sExe &= 'BYTE;' ;pop rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;5f
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[4] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[2]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[2]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$sExe &= 'BYTE;BYTE;PTR;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xE0)
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[4]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[4]
|
||||
$sExe &= 'BYTE;' ;ret 0
|
||||
_cHvr_ArrayPush($aOpCode, 0xC3)
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X64
|
||||
|
||||
Func _cHvr_PopulateOpcode(ByRef $sExe, ByRef $aOpCode)
|
||||
Local $tExe = DllStructCreate($sExe)
|
||||
Assert(@error = 0, 'DllStrucCreate Failed With Error = ' & @error)
|
||||
For $i = 1 To $aOpCode[0]
|
||||
DllStructSetData($tExe, $i, $aOpCode[$i])
|
||||
Next
|
||||
Return $tExe
|
||||
EndFunc ;==>_cHvr_PopulateOpcode
|
||||
|
||||
Func _cHvr_ExecutableFromStruct($tExe)
|
||||
Local $pExe = DllCall('kernel32.dll', 'PTR', 'HeapAlloc', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 8, 'ULONG_PTR', DllStructGetSize($tExe))[0]
|
||||
Assert($pExe <> 0, 'Allocate memory failed')
|
||||
DllCall("kernel32.dll", "none", "RtlMoveMemory", "PTR", $pExe, "PTR", DllStructGetPtr($tExe), "ULONG_PTR", DllStructGetSize($tExe))
|
||||
Assert(@error = 0, 'Failed to copy memory')
|
||||
Return $pExe
|
||||
EndFunc ;==>_cHvr_ExecutableFromStruct
|
||||
|
||||
Func _cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
_WinAPI_RemoveWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd)
|
||||
Local $aData=$_cHvr_aData[$cIndex]
|
||||
$_cHvr_aData[$cIndex] = 0
|
||||
Call( "_iControlDelete",$aData[1])
|
||||
EndFunc ;==>_cHvr_UnRegisterInternal
|
||||
|
||||
Func _cHvr_Finalize()
|
||||
DllCallbackFree($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
_WinAPI_FreeLibrary($_cHvr_HDLLCOMCTL32)
|
||||
If ($_cHvr_HEXECUTABLEHEAP <> 0) Then
|
||||
If ($_cHvr_PSUBCLASSEXE <> 0) Then
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapFree', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 0, 'PTR', $_cHvr_PSUBCLASSEXE)
|
||||
EndIf
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapDestroy', 'HANDLE', $_cHvr_HEXECUTABLEHEAP)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_Finalize
|
||||
|
||||
Func Assert($bExpression, $sMsg = '', $sScript = @ScriptName, $sScriptPath = @ScriptFullPath, $iLine = @ScriptLineNumber, $iError = @error, $iExtend = @extended)
|
||||
If (Not ($bExpression)) Then
|
||||
MsgBox(BitOR(1, 0x10), 'Assertion Error!', _
|
||||
@CRLF & 'Script' & @TAB & ': ' & $sScript _
|
||||
& @CRLF & 'Path' & @TAB & ': ' & $sScriptPath _
|
||||
& @CRLF & 'Line' & @TAB & ': ' & $iLine _
|
||||
& @CRLF & 'Error' & @TAB & ': ' & ($iError > 0x7FFF ? Hex($iError) : $iError) _
|
||||
& ($iExtend <> 0 ? ' (Extended : ' & ($iExtend > 0x7FFF ? Hex($iExtend) : $iExtend) & ')' : '') _
|
||||
& @CRLF & 'Message' & @TAB & ': ' & $sMsg _
|
||||
& @CRLF & @CRLF & 'OK: Exit Script' & @TAB & 'Cancel: Continue')
|
||||
Exit
|
||||
EndIf
|
||||
EndFunc ;==>Assert
|
||||
|
||||
Func _cHvr_GetNewIndex($hWnd)
|
||||
;Try to assign index from previously deleted control
|
||||
For $i = 0 To UBound($_cHvr_aData) - 1 Step +1
|
||||
If Not IsArray($_cHvr_aData[$i]) Then
|
||||
Return $i
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ReDim $_cHvr_aData[UBound($_cHvr_aData) + 1]
|
||||
Return UBound($_cHvr_aData) - 1
|
||||
EndFunc ;==>_cHvr_GetNewIndex
|
||||
|
||||
Func _WinAPI_GetCapture()
|
||||
Return DllCall("user32.dll", "HWND", "GetCapture")[0]
|
||||
EndFunc ;==>_WinAPI_GetCapture
|
279
Android-ADB-F-GUI/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
279
Android-ADB-F-GUI/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
|
@ -0,0 +1,279 @@
|
|||
#include-once
|
||||
|
||||
; #INDEX# ============================================================================================================
|
||||
; Title .........: _StringSize
|
||||
; AutoIt Version : v3.2.12.1 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; Remarks .......:
|
||||
; Note ..........:
|
||||
; Author(s) .....: Melba23 - thanks to trancexx for the default DC code
|
||||
; ====================================================================================================================
|
||||
|
||||
;#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
|
||||
|
||||
; #CURRENT# ==========================================================================================================
|
||||
; _StringSize: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; ====================================================================================================================
|
||||
|
||||
; #INTERNAL_USE_ONLY#=================================================================================================
|
||||
; _StringSize_Error_Close: Releases DC and deletes font object after error
|
||||
; _StringSize_DefaultFontName: Determines Windows default font
|
||||
; ====================================================================================================================
|
||||
|
||||
; #FUNCTION# =========================================================================================================
|
||||
; Name...........: _StringSize
|
||||
; Description ...: Returns size of rectangle required to display string - maximum permitted width can be chosen
|
||||
; Syntax ........: _StringSize($sText[, $iSize[, $iWeight[, $iAttrib[, $sName[, $iWidth[, $hWnd]]]]]])
|
||||
; Parameters ....: $sText - String to display
|
||||
; $iSize - [optional] Font size in points - (default = 8.5)
|
||||
; $iWeight - [optional] Font weight - (default = 400 = normal)
|
||||
; $iAttrib - [optional] Font attribute (0-Normal (default), 2-Italic, 4-Underline, 8 Strike)
|
||||
; + 1 if tabs are to be expanded before sizing
|
||||
; $sName - [optional] Font name - (default = Tahoma)
|
||||
; $iWidth - [optional] Max width for rectangle - (default = 0 => width of original string)
|
||||
; $hWnd - [optional] GUI in which string will be displayed - (default 0 => normally not required)
|
||||
; Requirement(s) : v3.2.12.1 or higher
|
||||
; Return values .: Success - Returns 4-element array: ($iWidth set // $iWidth not set)
|
||||
; |$array[0] = String reformatted with additonal @CRLF // Original string
|
||||
; |$array[1] = Height of single line in selected font // idem
|
||||
; |$array[2] = Width of rectangle required for reformatted // original string
|
||||
; |$array[3] = Height of rectangle required for reformatted // original string
|
||||
; Failure - Returns 0 and sets @error:
|
||||
; |1 - Incorrect parameter type (@extended = parameter index)
|
||||
; |2 - DLL call error - extended set as follows:
|
||||
; |1 - GetDC failure
|
||||
; |2 - SendMessage failure
|
||||
; |3 - GetDeviceCaps failure
|
||||
; |4 - CreateFont failure
|
||||
; |5 - SelectObject failure
|
||||
; |6 - GetTextExtentPoint32 failure
|
||||
; |3 - Font too large for chosen max width - a word will not fit
|
||||
; Author ........: Melba23 - thanks to trancexx for the default DC code
|
||||
; Modified ......:
|
||||
; Remarks .......: The use of the $hWnd parameter is not normally necessary - it is only required if the UDF does not
|
||||
; return correct dimensions without it.
|
||||
; Related .......:
|
||||
; Link ..........:
|
||||
; Example .......: Yes
|
||||
;=====================================================================================================================
|
||||
Func _StringSize($sText, $iSize = 8.5, $iWeight = 400, $iAttrib = 0, $sName = "", $iMaxWidth = 0, $hWnd = 0)
|
||||
|
||||
; Set parameters passed as Default
|
||||
If $iSize = Default Then $iSize = 8.5
|
||||
If $iWeight = Default Then $iWeight = 400
|
||||
If $iAttrib = Default Then $iAttrib = 0
|
||||
If $sName = "" Or $sName = Default Then $sName = _StringSize_DefaultFontName()
|
||||
|
||||
; Check parameters are correct type
|
||||
If Not IsString($sText) Then Return SetError(1, 1, 0)
|
||||
If Not IsNumber($iSize) Then Return SetError(1, 2, 0)
|
||||
If Not IsInt($iWeight) Then Return SetError(1, 3, 0)
|
||||
If Not IsInt($iAttrib) Then Return SetError(1, 4, 0)
|
||||
If Not IsString($sName) Then Return SetError(1, 5, 0)
|
||||
If Not IsNumber($iMaxWidth) Then Return SetError(1, 6, 0)
|
||||
If Not IsHwnd($hWnd) And $hWnd <> 0 Then Return SetError(1, 7, 0)
|
||||
|
||||
Local $aRet, $hDC, $hFont, $hLabel = 0, $hLabel_Handle
|
||||
|
||||
; Check for tab expansion flag
|
||||
Local $iExpTab = BitAnd($iAttrib, 1)
|
||||
; Remove possible tab expansion flag from font attribute value
|
||||
$iAttrib = BitAnd($iAttrib, BitNot(1))
|
||||
|
||||
; If GUI handle was passed
|
||||
If IsHWnd($hWnd) Then
|
||||
; Create label outside GUI borders
|
||||
$hLabel = GUICtrlCreateLabel("", -10, -10, 10, 10)
|
||||
$hLabel_Handle = GUICtrlGetHandle(-1)
|
||||
GUICtrlSetFont(-1, $iSize, $iWeight, $iAttrib, $sName)
|
||||
; Create DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hLabel_Handle)
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, 1, 0)
|
||||
EndIf
|
||||
$hDC = $aRet[0]
|
||||
$aRet = DllCall("user32.dll", "lparam", "SendMessage", "hwnd", $hLabel_Handle, "int", 0x0031, "wparam", 0, "lparam", 0) ; $WM_GetFont
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, _StringSize_Error_Close(2, $hDC), 0)
|
||||
EndIf
|
||||
$hFont = $aRet[0]
|
||||
Else
|
||||
; Get default DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hWnd)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, 1, 0)
|
||||
$hDC = $aRet[0]
|
||||
; Create required font
|
||||
$aRet = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $hDC, "int", 90) ; $LOGPIXELSY
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(3, $hDC), 0)
|
||||
Local $iInfo = $aRet[0]
|
||||
$aRet = DllCall("gdi32.dll", "handle", "CreateFontW", "int", -$iInfo * $iSize / 72, "int", 0, "int", 0, "int", 0, _
|
||||
"int", $iWeight, "dword", BitAND($iAttrib, 2), "dword", BitAND($iAttrib, 4), "dword", BitAND($iAttrib, 8), "dword", 0, "dword", 0, _
|
||||
"dword", 0, "dword", 5, "dword", 0, "wstr", $sName)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(4, $hDC), 0)
|
||||
$hFont = $aRet[0]
|
||||
EndIf
|
||||
|
||||
; Select font and store previous font
|
||||
$aRet = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hFont)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(5, $hDC, $hFont, $hLabel), 0)
|
||||
Local $hPrevFont = $aRet[0]
|
||||
|
||||
; Declare variables
|
||||
Local $avSize_Info[4], $iLine_Length, $iLine_Height = 0, $iLine_Count = 0, $iLine_Width = 0, $iWrap_Count, $iLast_Word, $sTest_Line
|
||||
; Declare and fill Size structure
|
||||
Local $tSize = DllStructCreate("int X;int Y")
|
||||
DllStructSetData($tSize, "X", 0)
|
||||
DllStructSetData($tSize, "Y", 0)
|
||||
|
||||
; Ensure EoL is @CRLF and break text into lines
|
||||
$sText = StringRegExpReplace($sText, "((?<!\x0d)\x0a|\x0d(?!\x0a))", @CRLF)
|
||||
Local $asLines = StringSplit($sText, @CRLF, 1)
|
||||
|
||||
; For each line
|
||||
For $i = 1 To $asLines[0]
|
||||
; Expand tabs if required
|
||||
If $iExpTab Then
|
||||
$asLines[$i] = StringReplace($asLines[$i], @TAB, " XXXXXXXX")
|
||||
EndIf
|
||||
; Size line
|
||||
$iLine_Length = StringLen($asLines[$i])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$i], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
If DllStructGetData($tSize, "X") > $iLine_Width Then $iLine_Width = DllStructGetData($tSize, "X")
|
||||
If DllStructGetData($tSize, "Y") > $iLine_Height Then $iLine_Height = DllStructGetData($tSize, "Y")
|
||||
Next
|
||||
|
||||
; Check if $iMaxWidth has been both set and exceeded
|
||||
If $iMaxWidth <> 0 And $iLine_Width > $iMaxWidth Then ; Wrapping required
|
||||
; For each Line
|
||||
For $j = 1 To $asLines[0]
|
||||
; Size line unwrapped
|
||||
$iLine_Length = StringLen($asLines[$j])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$j], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
; Check wrap status
|
||||
If DllStructGetData($tSize, "X") < $iMaxWidth - 4 Then
|
||||
; No wrap needed so count line and store
|
||||
$iLine_Count += 1
|
||||
$avSize_Info[0] &= $asLines[$j] & @CRLF
|
||||
Else
|
||||
; Wrap needed so zero counter for wrapped lines
|
||||
$iWrap_Count = 0
|
||||
; Build line to max width
|
||||
While 1
|
||||
; Zero line width
|
||||
$iLine_Width = 0
|
||||
; Initialise pointer for end of word
|
||||
$iLast_Word = 0
|
||||
; Add characters until EOL or maximum width reached
|
||||
For $i = 1 To StringLen($asLines[$j])
|
||||
; Is this just past a word ending?
|
||||
If StringMid($asLines[$j], $i, 1) = " " Then $iLast_Word = $i - 1
|
||||
; Increase line by one character
|
||||
$sTest_Line = StringMid($asLines[$j], 1, $i)
|
||||
; Get line length
|
||||
$iLine_Length = StringLen($sTest_Line)
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $sTest_Line, "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
$iLine_Width = DllStructGetData($tSize, "X")
|
||||
; If too long exit the loop
|
||||
If $iLine_Width >= $iMaxWidth - 4 Then ExitLoop
|
||||
Next
|
||||
; End of the line of text?
|
||||
If $i > StringLen($asLines[$j]) Then
|
||||
; Yes, so add final line to count
|
||||
$iWrap_Count += 1
|
||||
; Store line
|
||||
$avSize_Info[0] &= $sTest_Line & @CRLF
|
||||
ExitLoop
|
||||
Else
|
||||
; No, but add line just completed to count
|
||||
$iWrap_Count += 1
|
||||
; Check at least 1 word completed or return error
|
||||
If $iLast_Word = 0 Then Return SetError(3, _StringSize_Error_Close(0, $hDC, $hFont, $hLabel), 0)
|
||||
; Store line up to end of last word
|
||||
$avSize_Info[0] &= StringLeft($sTest_Line, $iLast_Word) & @CRLF
|
||||
; Strip string to point reached
|
||||
$asLines[$j] = StringTrimLeft($asLines[$j], $iLast_Word)
|
||||
; Trim leading whitespace
|
||||
$asLines[$j] = StringStripWS($asLines[$j], 1)
|
||||
; Repeat with remaining characters in line
|
||||
EndIf
|
||||
WEnd
|
||||
; Add the number of wrapped lines to the count
|
||||
$iLine_Count += $iWrap_Count
|
||||
EndIf
|
||||
Next
|
||||
; Reset any tab expansions
|
||||
If $iExpTab Then
|
||||
$avSize_Info[0] = StringRegExpReplace($avSize_Info[0], "\x20?XXXXXXXX", @TAB)
|
||||
EndIf
|
||||
; Complete return array
|
||||
$avSize_Info[1] = $iLine_Height
|
||||
$avSize_Info[2] = $iMaxWidth
|
||||
; Convert lines to pixels and add drop margin
|
||||
$avSize_Info[3] = ($iLine_Count * $iLine_Height) + 4
|
||||
Else ; No wrapping required
|
||||
; Create return array (add drop margin to height)
|
||||
Local $avSize_Info[4] = [$sText, $iLine_Height, $iLine_Width, ($asLines[0] * $iLine_Height) + 4]
|
||||
EndIf
|
||||
|
||||
; Clear up
|
||||
DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hPrevFont)
|
||||
DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $avSize_Info
|
||||
|
||||
EndFunc ;==>_StringSize
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_Error_Close
|
||||
; Description ...: Releases DC and deleted font object if required after error
|
||||
; Syntax ........: _StringSize_Error_Close ($iExtCode, $hDC, $hGUI)
|
||||
; Parameters ....: $iExtCode - code to return
|
||||
; $hDC, $hGUI - handles as set in _StringSize function
|
||||
; Return value ..: $iExtCode as passed
|
||||
; Author ........: Melba23
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_Error_Close($iExtCode, $hDC = 0, $hFont = 0, $hLabel = 0)
|
||||
|
||||
If $hFont <> 0 Then DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
If $hDC <> 0 Then DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $iExtCode
|
||||
|
||||
EndFunc ;=>_StringSize_Error_Close
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_DefaultFontName
|
||||
; Description ...: Determines Windows default font
|
||||
; Syntax ........: _StringSize_DefaultFontName()
|
||||
; Parameters ....: None
|
||||
; Return values .: Success - Returns name of system default font
|
||||
; Failure - Returns "Tahoma"
|
||||
; Author ........: Melba23, based on some original code by Larrydalooza
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_DefaultFontName()
|
||||
|
||||
; Get default system font data
|
||||
Local $tNONCLIENTMETRICS = DllStructCreate("uint;int;int;int;int;int;byte[60];int;int;byte[60];int;int;byte[60];byte[60];byte[60]")
|
||||
DLLStructSetData($tNONCLIENTMETRICS, 1, DllStructGetSize($tNONCLIENTMETRICS))
|
||||
DLLCall("user32.dll", "int", "SystemParametersInfo", "int", 41, "int", DllStructGetSize($tNONCLIENTMETRICS), "ptr", DllStructGetPtr($tNONCLIENTMETRICS), "int", 0)
|
||||
Local $tLOGFONT = DllStructCreate("long;long;long;long;long;byte;byte;byte;byte;byte;byte;byte;byte;char[32]", DLLStructGetPtr($tNONCLIENTMETRICS, 13))
|
||||
If IsString(DllStructGetData($tLOGFONT, 14)) Then
|
||||
Return DllStructGetData($tLOGFONT, 14)
|
||||
Else
|
||||
Return "Tahoma"
|
||||
EndIf
|
||||
|
||||
EndFunc ;=>_StringSize_DefaultFontName
|
80
Android-ADB-F-GUI/MetroGUI-UDF/_GUIDisable.au3
Executable file
80
Android-ADB-F-GUI/MetroGUI-UDF/_GUIDisable.au3
Executable file
|
@ -0,0 +1,80 @@
|
|||
#include-once
|
||||
|
||||
; #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
|
||||
; #INDEX# =======================================================================================================================
|
||||
; Title .........: _GUIDisable
|
||||
; AutoIt Version : v3.2.2.0 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Creates a dimming effect on the current/selected GUI.
|
||||
; Note ..........:
|
||||
; Author(s) .....: guinness
|
||||
; Remarks .......: Thanks to supersonic for the idea of adjusting the UDF when using Classic themes in Windows Vista+.
|
||||
; ===============================================================================================================================
|
||||
|
||||
; #INCLUDES# ====================================================================================================================
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <WinAPI.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
; #GLOBAL VARIABLES# ============================================================================================================
|
||||
Global Enum $__hGUIDisableHWnd, $__hGUIDisableHWndPrevious, $__iGUIDisableMax
|
||||
Global $__aGUIDisable[$__iGUIDisableMax]
|
||||
|
||||
Func _GUIDisable($hWnd, $iAnimate = Default, $iBrightness = Default, $bColor = 0x000000)
|
||||
Local Const $AW_SLIDE_IN_TOP = 0x00040004, $AW_SLIDE_OUT_TOP = 0x00050008
|
||||
|
||||
If $iAnimate = Default Then
|
||||
$iAnimate = 1
|
||||
EndIf
|
||||
If $iBrightness = Default Then
|
||||
$iBrightness = 5
|
||||
EndIf
|
||||
|
||||
If $hWnd = -1 And $__aGUIDisable[$__hGUIDisableHWnd] = 0 Then
|
||||
Local $iLabel = GUICtrlCreateLabel('', -99, -99, 1, 1)
|
||||
$hWnd = _WinAPI_GetParent(GUICtrlGetHandle($iLabel))
|
||||
If @error Then
|
||||
Return SetError(1, 0 * GUICtrlDelete($iLabel), 0)
|
||||
EndIf
|
||||
GUICtrlDelete($iLabel)
|
||||
EndIf
|
||||
|
||||
If IsHWnd($__aGUIDisable[$__hGUIDisableHWnd]) Then
|
||||
GUIDelete($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = 0
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = 0
|
||||
Else
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = $hWnd
|
||||
|
||||
Local $iLeft = 0, $iTop = 0
|
||||
Local $iStyle = GUIGetStyle($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
Local $sCurrentTheme = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes', 'CurrentTheme')
|
||||
Local $iIsClassicTheme = Number(StringInStr($sCurrentTheme, 'Basic.theme', 2) = 0 And StringInStr($sCurrentTheme, 'Ease of Access Themes', 2) > 0)
|
||||
|
||||
Local $aWinGetPos = WinGetClientSize($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = GUICreate('', $aWinGetPos[0], $aWinGetPos[1], $iLeft + 3, $iTop + 3, $WS_POPUP, $WS_EX_MDICHILD, $__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
GUISetBkColor($bColor, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
WinSetTrans($__aGUIDisable[$__hGUIDisableHWnd], '', Round($iBrightness * (255 / 100)))
|
||||
If not $iAnimate Then
|
||||
GUISetState(@SW_SHOW, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
EndIf
|
||||
GUISetState(@SW_DISABLE, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
EndIf
|
||||
Return $__aGUIDisable[$__hGUIDisableHWnd]
|
||||
EndFunc ;==>_GUIDisable
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
Func __GUIDisable_WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
|
||||
#forceref $hWnd, $iMsg, $iwParam
|
||||
Local $iHeight = _WinAPI_HiWord($ilParam)
|
||||
Local $iWidth = _WinAPI_LoWord($ilParam)
|
||||
If $hWnd = $__aGUIDisable[$__hGUIDisableHWndPrevious] Then
|
||||
Local $iWinGetPos = WinGetPos($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
If @error = 0 Then
|
||||
WinMove($__aGUIDisable[$__hGUIDisableHWnd], '', $iWinGetPos[0], $iWinGetPos[1], $iWidth, $iHeight)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $GUI_RUNDEFMSG
|
||||
EndFunc ;==>__GUIDisable_WM_SIZE
|
13
Android-ADB-F-GUI/Releases/.media
Executable file
13
Android-ADB-F-GUI/Releases/.media
Executable file
|
@ -0,0 +1,13 @@
|
|||
#cs ----------------------------------------------------------------------------
|
||||
|
||||
AutoIt Version : 3.3.14.5
|
||||
Auteur: Tyleo
|
||||
|
||||
Fonction du Script :
|
||||
Modèle de Script AutoIt.
|
||||
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
; Début du script - Ajouter votre code ci-dessous.
|
||||
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
|
||||
|
10
Android-ADB-F-GUI/TyleoAboutMe.au3
Executable file
10
Android-ADB-F-GUI/TyleoAboutMe.au3
Executable file
|
@ -0,0 +1,10 @@
|
|||
|
||||
#include <ButtonConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
Func TyleoAbout($SoftName)
|
||||
_Metro_MsgBox(8,"About / A propos",$SoftName & @CRLF & "Tyleo Softwares @ 2021" & @CRLF & " " & @CRLF & "BUILDING TOMORROW" & @CRLF & " " & @CRLF & "This Software is free and Open Source." & @CRLF & "tyleo.dev@outlook.com",400,15)
|
||||
Return True
|
||||
EndFunc
|
23
AntiLock/AntiLock.au3
Executable file
23
AntiLock/AntiLock.au3
Executable file
|
@ -0,0 +1,23 @@
|
|||
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
|
||||
#AutoIt3Wrapper_Res_ProductVersion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_CompanyName=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalCopyright=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalTradeMarks=Tyleo Softwares
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include "TyleoAboutMe.au3"
|
||||
|
||||
#cs
|
||||
|
||||
Tyleo Software Project Base v1
|
||||
Created With CNP and DevTools Base Folder
|
||||
|
||||
All Softwares created with this base are Free and Open Sourced.
|
||||
Join our Guilded Server ! https://www.guilded.gg/i/2DRlM7Mp
|
||||
|
||||
#ce
|
||||
|
3575
AntiLock/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
3575
AntiLock/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
File diff suppressed because it is too large
Load diff
259
AntiLock/MetroGUI-UDF/MetroThemes.au3
Executable file
259
AntiLock/MetroGUI-UDF/MetroThemes.au3
Executable file
|
@ -0,0 +1,259 @@
|
|||
#include-once
|
||||
#cs ----------------------------------------------------------------------------
|
||||
Author: BB_19
|
||||
Material Themes for MetroGUI UDF
|
||||
If you want to create your own themes, check out flatcolors.net, you can find there many random material/flat colors :)
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
;#Set Default Theme
|
||||
Global $GUIThemeColor = "0x13161C" ; GUI Background Color
|
||||
Global $FontThemeColor = "0xFFFFFF" ; Font Color
|
||||
Global $GUIBorderColor = "0x2D2D2D" ; GUI Border Color
|
||||
Global $ButtonBKColor = "0x00796b" ; Metro Button BacKground Color
|
||||
Global $ButtonTextColor = "0xFFFFFF" ; Metro Button Text Color
|
||||
Global $CB_Radio_Color = "0xFFFFFF" ;Checkbox and Radio Color (Box/Circle)
|
||||
Global $GUI_Theme_Name = "DarkTealV2" ;Theme Name (For internal usage)
|
||||
Global $CB_Radio_Hover_Color = "0xD8D8D8" ; Checkbox and Radio Hover Color (Box/Circle)
|
||||
Global $CB_Radio_CheckMark_Color = "0x1a1a1a" ; Checkbox and Radio checkmark color
|
||||
|
||||
Func _SetTheme($ThemeSelect = "DarkTeal")
|
||||
$GUI_Theme_Name = $ThemeSelect
|
||||
Switch ($ThemeSelect)
|
||||
Case "LightTeal"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTeal"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTealV2"
|
||||
$GUIThemeColor = "0x13161C"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x35635B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkRuby"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x712043"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightTeal"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x336058"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightCyan"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x0D5C63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightBlue"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x1A4F70"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnight"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x3C4D66"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlue"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlueV2"
|
||||
$GUIThemeColor = "0x040D11"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightBlue"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x244E80"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightCyan"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkCyan"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGray"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x3F5863"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGreen"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x2E7D32"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreen"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreenV2"
|
||||
$GUIThemeColor = "0x061319"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightRed"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xc62828"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGray"
|
||||
$GUIThemeColor = "0x1B2428"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x4F6772"
|
||||
$ButtonBKColor = "0x607D8B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkAmber"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xffa000"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightOrange"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xBC5E05"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkOrange"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xC76810"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPurple"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkPurple"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPink"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xE91E63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case Else
|
||||
ConsoleWrite("Metro-UDF-Error: Theme not found, using default theme." & @CRLF)
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
$GUI_Theme_Name = "DarkTealV2"
|
||||
EndSwitch
|
||||
EndFunc ;==>_SetTheme
|
495
AntiLock/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
495
AntiLock/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
|
@ -0,0 +1,495 @@
|
|||
;======================================
|
||||
;~ Author : binhnx
|
||||
;~ Created : 2014/10/20
|
||||
;======================================
|
||||
;~ Modified : BB_19
|
||||
;~ Last modified : 2017/10/07
|
||||
;======================================
|
||||
|
||||
#include-once
|
||||
#include <WinAPI.au3>
|
||||
#include <WinAPIShellEx.au3>
|
||||
Local $_cHvr_aData[0]
|
||||
|
||||
|
||||
Local Const $_cHvr_HDLLCOMCTL32 = _WinAPI_LoadLibrary('comctl32.dll')
|
||||
Assert($_cHvr_HDLLCOMCTL32 <> 0, 'This UDF requires comctl32.dll')
|
||||
Local Const $_cHvr_PDEFSUBCLASSPROC = _WinAPI_GetProcAddress($_cHvr_HDLLCOMCTL32, 'DefSubclassProc')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS_DLL = DllCallbackRegister('_cHvr_iProc', 'NONE', 'HWND;UINT;WPARAM;LPARAM;DWORD')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS = DllCallbackGetPtr($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
|
||||
OnAutoItExitRegister("_cHvr_Finalize")
|
||||
Local Const $_cHvr_TSUBCLASSEXE = Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86')
|
||||
Local Const $_cHvr_HEXECUTABLEHEAP = DllCall('kernel32.dll', 'HANDLE', 'HeapCreate', 'DWORD', 0x00040000, 'ULONG_PTR', 0, 'ULONG_PTR', 0)[0]
|
||||
Assert($_cHvr_HEXECUTABLEHEAP <> 0, 'Failed to create executable heap object')
|
||||
Local Const $_cHvr_PSUBCLASSEXE = _cHvr_ExecutableFromStruct(Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86'))
|
||||
|
||||
|
||||
Func _cHvr_Register($idCtrl, $fnHovOff = '', $fnHoverOn = '', $fnClick = '', $fnDblClk = '', $HoverData = 0,$ClickData = 0,$fnRightClick = '')
|
||||
Local $hWnd = GUICtrlGetHandle($idCtrl)
|
||||
If (Not (IsHWnd($hWnd))) Then Return SetError(1, 0, -1)
|
||||
Local $nIndex = _cHvr_GetNewIndex($hWnd)
|
||||
Local $aData[13]
|
||||
$aData[0] = $hWnd;Control Hwnd
|
||||
$aData[1] = $idCtrl; Control handle
|
||||
$aData[3] = $fnHovOff;Hover Off func
|
||||
$aData[4] = $HoverData;Hover Off Data
|
||||
$aData[5] = $fnHoverOn;Hover ON func
|
||||
$aData[6] = $HoverData;Hover ON Data
|
||||
$aData[7] = $fnRightClick;RClick func
|
||||
$aData[8] = $ClickData; click data
|
||||
$aData[9] = $fnClick;Click func
|
||||
$aData[10] = $ClickData; click data
|
||||
$aData[11] = $fnDblClk;DB click func
|
||||
$aData[12] = $ClickData;DB click data
|
||||
$_cHvr_aData[$nIndex] = $aData
|
||||
_WinAPI_SetWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd, $nIndex)
|
||||
Return $nIndex
|
||||
EndFunc ;==>_cHvr_Register
|
||||
|
||||
Func _cHvr_iProc($hWnd, $uMsg, $wParam, $lParam, $cIndex)
|
||||
Switch $uMsg
|
||||
Case 0x0200;Hover
|
||||
GUISetCursor(2, 1)
|
||||
_cHvr_cMove($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0201;Leftclick
|
||||
_cHvr_cDown($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0202
|
||||
_cHvr_cUp($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Return False
|
||||
Case 0x0203;Doubleclick
|
||||
_cHvr_cDblClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0204;Rightclick
|
||||
_cHvr_cRightClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x02A3;Hover leave
|
||||
_cHvr_cLeave($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0082;Deleted
|
||||
_cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
EndSwitch
|
||||
Return True
|
||||
EndFunc ;==>_cHvr_iProc
|
||||
|
||||
Func _cHvr_cDown(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_WinAPI_SetCapture($hWnd)
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndFunc ;==>_cHvr_cDown
|
||||
|
||||
Func _cHvr_cMove(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
Local $bIn = _cHvr_IsInClient($hWnd, $lParam)
|
||||
If Not $aCtrlData[2] Then
|
||||
If $bIn Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
Else
|
||||
If Not $bIn Then
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndIf
|
||||
EndIf
|
||||
ElseIf Not $aCtrlData[2] Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 5)
|
||||
Local $tTME = DllStructCreate('DWORD;DWORD;HWND;DWORD')
|
||||
DllStructSetData($tTME, 1, DllStructGetSize($tTME))
|
||||
DllStructSetData($tTME, 2, 2) ;$TME_LEAVE
|
||||
DllStructSetData($tTME, 3, $hWnd)
|
||||
DllCall('user32.dll', 'BOOL', 'TrackMouseEvent', 'STRUCT*', $tTME)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_cMove
|
||||
|
||||
Func _cHvr_cUp(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
Local $lRet = _WinAPI_DefSubclassProc($hWnd, $uMsg, $wParam, $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
_WinAPI_ReleaseCapture()
|
||||
If _cHvr_IsInClient($hWnd, $lParam) Then
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $lRet
|
||||
EndFunc ;==>_cHvr_cUp
|
||||
|
||||
Func _cHvr_cDblClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 11)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cRightClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 7)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cLeave(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndFunc ;==>_cHvr_cLeave
|
||||
|
||||
Func _cHvr_CallFunc(ByRef $aCtrlData, $iCallType)
|
||||
Call($aCtrlData[$iCallType], $aCtrlData[1], $aCtrlData[$iCallType + 1])
|
||||
EndFunc ;==>_cHvr_CallFunc
|
||||
|
||||
Func _cHvr_ArrayPush(ByRef $aStackArr, Const $vSrc1 = Default, Const $vSrc2 = Default, Const $vSrc3 = Default, Const $vSrc4 = Default, Const $vSrc5 = Default)
|
||||
While (UBound($aStackArr) < ($aStackArr[0] + @NumParams))
|
||||
ReDim $aStackArr[UBound($aStackArr) * 2]
|
||||
WEnd
|
||||
|
||||
If Not ($vSrc1 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc1
|
||||
EndIf
|
||||
If Not ($vSrc2 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc2
|
||||
EndIf
|
||||
If Not ($vSrc3 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc3
|
||||
EndIf
|
||||
If Not ($vSrc4 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc4
|
||||
EndIf
|
||||
If Not ($vSrc5 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc5
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_ArrayPush
|
||||
|
||||
Func _cHvr_IsInClient($hWnd, $lParam)
|
||||
Local $iX = BitShift(BitShift($lParam, -16), 16)
|
||||
Local $iY = BitShift($lParam, 16)
|
||||
Local $aSize = WinGetClientSize($hWnd)
|
||||
Return Not ($iX < 0 Or $iY < 0 Or $iX > $aSize[0] Or $iY > $aSize[1])
|
||||
EndFunc ;==>_cHvr_IsInClient
|
||||
|
||||
Func _cHvr_CSCP_X86() ;Create Subclass Process x86
|
||||
; $hWnd HWND size: 4 ESP+4 EBP+8
|
||||
; $uMsg UINT size: 4 ESP+8 EBP+12
|
||||
; $wParam WPARAM size: 4 ESP+12 EBP+16
|
||||
; $lParam LPARAM size: 4 ESP+16 EBP+20
|
||||
; $uIdSubclass UINT_PTR size: 4 ESP+20 EBP+24
|
||||
; $dwRefData DWORD_PTR size: 4 ESP+24 EBP+28 Total: 24
|
||||
|
||||
; NERVER FORGET ADDING align 1 OR YOU WILL SPEND HOURS TO FIND WHAT CAUSE 0xC0000005 Access Violation
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; Func ; __stdcall
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x55) ;push ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xEC) ;mov ebp, esp
|
||||
|
||||
; Save un-modified params to nv register
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+16]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x5D, 16) ;8b 5d 10
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov esi, DWORD PTR [ebp+12]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x75, 12) ;8b 75 0c
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+20]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x7D, 20) ;8b 7d 14
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x82) ;81 fe 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x2A3) ;81 fe a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;lea eax, DWORD PTR [esi-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x86, -0x200) ;8d 86 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
|
||||
; :WndProcInternal (HWND, UINT, WPARAM, LPARAM, DWORD)
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ecx, DWORD PTR [ebp+28]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x4D, 28) ;8b 4d 1c
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov edx, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x55, 8) ;8b 55 08
|
||||
$sExe &= 'BYTE;' ;push ecx
|
||||
_cHvr_ArrayPush($aOpCode, 0x51) ;51
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x52) ;52
|
||||
|
||||
; Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax, _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;' ;test eax, eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x85, 0xC0) ;85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;jz short Return
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$aOpCode[$nElemOffset[2]] = $nAddrOffset[3] - $nAddrOffset[2]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov eax, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x45, 8)
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x50) ;50
|
||||
|
||||
;Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax,COMCTL32.DefSubclassProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[3]] = $nAddrOffset[4] - $nAddrOffset[3]
|
||||
|
||||
; Restore nv-register
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;pop edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5E) ;pop esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5B) ;pop ebx
|
||||
|
||||
|
||||
; EndFunc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;WORD'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5D) ;pop ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0xC2, 24) ;ret 24
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X86
|
||||
|
||||
Func _cHvr_CSCP_X64() ;Create Subclass Process x64
|
||||
; First four INT and UINT has size = 8 instead of 4 because they are stored in RCX, RDX, R8, R9
|
||||
; $hWnd HWND size: 8 RCX RSP+8
|
||||
; $uMsg UINT size: 8 EDX RSP+16
|
||||
; $wParam WPARAM size: 8 R8 RSP+24
|
||||
; $lParam LPARAM size: 8 R9 RSP+32
|
||||
; $uIdSubclass UINT_PTR size: 8 RSP+40
|
||||
; $dwRefData DWORD_PTR size: 8 RSP+48 Total: 48
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x82) ;81 fa 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x2A3) ;81 fa a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;lea eax, DWORD PTR [rdx-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x82, -0x200) ;8d 82 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
|
||||
; :WndProcInternal (HWND rsp+8, UINT +16, WPARAM +24, LPARAM +32, DWORD +40)
|
||||
; $dwRefData = [ESP+48+48(sub rsp, 48)+8(push rdi)] = [ESP+104]
|
||||
; Save base registers:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+8], rbx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x5C, 0x24, 8) ;48 89 5c 24 08
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+16], rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x6C, 0x24, 16) ;48 89 6c 24 10
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+24], rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x74, 0x24, 24) ;48 89 74 24 18
|
||||
$sExe &= 'BYTE;' ;push rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
; Max sub-routine params = 5 (size = 5*8 = 40), + 8 bytes for return value = 48.
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;sub rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xEC, 48) ;48 83 ec 30
|
||||
; rbx, rbp, rsi now at [ESP+8+56], [ESP+16+56], [ESP+24+56]
|
||||
|
||||
; Save the parameters:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rdi, r9
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF9) ;49 8b f9
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rsi, r8
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF0) ;49 8b f0
|
||||
$sExe &= 'BYTE;BYTE;' ;mov ebx, edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xDA) ;8b da
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rbp, rcx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xE9) ;48 8b e9
|
||||
|
||||
; Prepare additional parameter for internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rax, QWORD PTR [rsp+104]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x44, 0x24, 104) ;48 8b 44 24 68
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+32], Rax]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x44, 0x24, 32) ;48 89 44 24 20
|
||||
|
||||
; Call internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;PTR;' ;mov rax, QWORD PTR _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
;movabs rax, _cHvr_iProc ;48 b8 QWORD_PTR
|
||||
$sExe &= 'BYTE;BYTE;' ;call rax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff d0
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; Restore parameters for DefSubclassProc call
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r9, rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xCF) ;4c 8b cf
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r8, rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xC6) ;4c 8b c6
|
||||
$sExe &= 'BYTE;BYTE;' ;mov edx, ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xD3) ;8b d3
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rcx, rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xCD) ;48 8b cd
|
||||
|
||||
; Restore registers value
|
||||
$aOpCode[$nElemOffset[3]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[3]
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbx, QWORD PTR [rsp+64]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x5C, 0x24, 64) ;48 8b 5c 24 40
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbp, QWORD PTR [rsp+72]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x6C, 0x24, 72) ;48 8b 6c 24 48
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rsi, QWORD PTR [rsp+80]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x74, 0x24, 80) ;48 8b 74 24 50
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;add rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xc4, 48) ;48 83 c4 30
|
||||
$sExe &= 'BYTE;' ;pop rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;5f
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[4] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[2]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[2]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$sExe &= 'BYTE;BYTE;PTR;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xE0)
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[4]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[4]
|
||||
$sExe &= 'BYTE;' ;ret 0
|
||||
_cHvr_ArrayPush($aOpCode, 0xC3)
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X64
|
||||
|
||||
Func _cHvr_PopulateOpcode(ByRef $sExe, ByRef $aOpCode)
|
||||
Local $tExe = DllStructCreate($sExe)
|
||||
Assert(@error = 0, 'DllStrucCreate Failed With Error = ' & @error)
|
||||
For $i = 1 To $aOpCode[0]
|
||||
DllStructSetData($tExe, $i, $aOpCode[$i])
|
||||
Next
|
||||
Return $tExe
|
||||
EndFunc ;==>_cHvr_PopulateOpcode
|
||||
|
||||
Func _cHvr_ExecutableFromStruct($tExe)
|
||||
Local $pExe = DllCall('kernel32.dll', 'PTR', 'HeapAlloc', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 8, 'ULONG_PTR', DllStructGetSize($tExe))[0]
|
||||
Assert($pExe <> 0, 'Allocate memory failed')
|
||||
DllCall("kernel32.dll", "none", "RtlMoveMemory", "PTR", $pExe, "PTR", DllStructGetPtr($tExe), "ULONG_PTR", DllStructGetSize($tExe))
|
||||
Assert(@error = 0, 'Failed to copy memory')
|
||||
Return $pExe
|
||||
EndFunc ;==>_cHvr_ExecutableFromStruct
|
||||
|
||||
Func _cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
_WinAPI_RemoveWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd)
|
||||
Local $aData=$_cHvr_aData[$cIndex]
|
||||
$_cHvr_aData[$cIndex] = 0
|
||||
Call( "_iControlDelete",$aData[1])
|
||||
EndFunc ;==>_cHvr_UnRegisterInternal
|
||||
|
||||
Func _cHvr_Finalize()
|
||||
DllCallbackFree($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
_WinAPI_FreeLibrary($_cHvr_HDLLCOMCTL32)
|
||||
If ($_cHvr_HEXECUTABLEHEAP <> 0) Then
|
||||
If ($_cHvr_PSUBCLASSEXE <> 0) Then
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapFree', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 0, 'PTR', $_cHvr_PSUBCLASSEXE)
|
||||
EndIf
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapDestroy', 'HANDLE', $_cHvr_HEXECUTABLEHEAP)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_Finalize
|
||||
|
||||
Func Assert($bExpression, $sMsg = '', $sScript = @ScriptName, $sScriptPath = @ScriptFullPath, $iLine = @ScriptLineNumber, $iError = @error, $iExtend = @extended)
|
||||
If (Not ($bExpression)) Then
|
||||
MsgBox(BitOR(1, 0x10), 'Assertion Error!', _
|
||||
@CRLF & 'Script' & @TAB & ': ' & $sScript _
|
||||
& @CRLF & 'Path' & @TAB & ': ' & $sScriptPath _
|
||||
& @CRLF & 'Line' & @TAB & ': ' & $iLine _
|
||||
& @CRLF & 'Error' & @TAB & ': ' & ($iError > 0x7FFF ? Hex($iError) : $iError) _
|
||||
& ($iExtend <> 0 ? ' (Extended : ' & ($iExtend > 0x7FFF ? Hex($iExtend) : $iExtend) & ')' : '') _
|
||||
& @CRLF & 'Message' & @TAB & ': ' & $sMsg _
|
||||
& @CRLF & @CRLF & 'OK: Exit Script' & @TAB & 'Cancel: Continue')
|
||||
Exit
|
||||
EndIf
|
||||
EndFunc ;==>Assert
|
||||
|
||||
Func _cHvr_GetNewIndex($hWnd)
|
||||
;Try to assign index from previously deleted control
|
||||
For $i = 0 To UBound($_cHvr_aData) - 1 Step +1
|
||||
If Not IsArray($_cHvr_aData[$i]) Then
|
||||
Return $i
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ReDim $_cHvr_aData[UBound($_cHvr_aData) + 1]
|
||||
Return UBound($_cHvr_aData) - 1
|
||||
EndFunc ;==>_cHvr_GetNewIndex
|
||||
|
||||
Func _WinAPI_GetCapture()
|
||||
Return DllCall("user32.dll", "HWND", "GetCapture")[0]
|
||||
EndFunc ;==>_WinAPI_GetCapture
|
279
AntiLock/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
279
AntiLock/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
|
@ -0,0 +1,279 @@
|
|||
#include-once
|
||||
|
||||
; #INDEX# ============================================================================================================
|
||||
; Title .........: _StringSize
|
||||
; AutoIt Version : v3.2.12.1 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; Remarks .......:
|
||||
; Note ..........:
|
||||
; Author(s) .....: Melba23 - thanks to trancexx for the default DC code
|
||||
; ====================================================================================================================
|
||||
|
||||
;#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
|
||||
|
||||
; #CURRENT# ==========================================================================================================
|
||||
; _StringSize: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; ====================================================================================================================
|
||||
|
||||
; #INTERNAL_USE_ONLY#=================================================================================================
|
||||
; _StringSize_Error_Close: Releases DC and deletes font object after error
|
||||
; _StringSize_DefaultFontName: Determines Windows default font
|
||||
; ====================================================================================================================
|
||||
|
||||
; #FUNCTION# =========================================================================================================
|
||||
; Name...........: _StringSize
|
||||
; Description ...: Returns size of rectangle required to display string - maximum permitted width can be chosen
|
||||
; Syntax ........: _StringSize($sText[, $iSize[, $iWeight[, $iAttrib[, $sName[, $iWidth[, $hWnd]]]]]])
|
||||
; Parameters ....: $sText - String to display
|
||||
; $iSize - [optional] Font size in points - (default = 8.5)
|
||||
; $iWeight - [optional] Font weight - (default = 400 = normal)
|
||||
; $iAttrib - [optional] Font attribute (0-Normal (default), 2-Italic, 4-Underline, 8 Strike)
|
||||
; + 1 if tabs are to be expanded before sizing
|
||||
; $sName - [optional] Font name - (default = Tahoma)
|
||||
; $iWidth - [optional] Max width for rectangle - (default = 0 => width of original string)
|
||||
; $hWnd - [optional] GUI in which string will be displayed - (default 0 => normally not required)
|
||||
; Requirement(s) : v3.2.12.1 or higher
|
||||
; Return values .: Success - Returns 4-element array: ($iWidth set // $iWidth not set)
|
||||
; |$array[0] = String reformatted with additonal @CRLF // Original string
|
||||
; |$array[1] = Height of single line in selected font // idem
|
||||
; |$array[2] = Width of rectangle required for reformatted // original string
|
||||
; |$array[3] = Height of rectangle required for reformatted // original string
|
||||
; Failure - Returns 0 and sets @error:
|
||||
; |1 - Incorrect parameter type (@extended = parameter index)
|
||||
; |2 - DLL call error - extended set as follows:
|
||||
; |1 - GetDC failure
|
||||
; |2 - SendMessage failure
|
||||
; |3 - GetDeviceCaps failure
|
||||
; |4 - CreateFont failure
|
||||
; |5 - SelectObject failure
|
||||
; |6 - GetTextExtentPoint32 failure
|
||||
; |3 - Font too large for chosen max width - a word will not fit
|
||||
; Author ........: Melba23 - thanks to trancexx for the default DC code
|
||||
; Modified ......:
|
||||
; Remarks .......: The use of the $hWnd parameter is not normally necessary - it is only required if the UDF does not
|
||||
; return correct dimensions without it.
|
||||
; Related .......:
|
||||
; Link ..........:
|
||||
; Example .......: Yes
|
||||
;=====================================================================================================================
|
||||
Func _StringSize($sText, $iSize = 8.5, $iWeight = 400, $iAttrib = 0, $sName = "", $iMaxWidth = 0, $hWnd = 0)
|
||||
|
||||
; Set parameters passed as Default
|
||||
If $iSize = Default Then $iSize = 8.5
|
||||
If $iWeight = Default Then $iWeight = 400
|
||||
If $iAttrib = Default Then $iAttrib = 0
|
||||
If $sName = "" Or $sName = Default Then $sName = _StringSize_DefaultFontName()
|
||||
|
||||
; Check parameters are correct type
|
||||
If Not IsString($sText) Then Return SetError(1, 1, 0)
|
||||
If Not IsNumber($iSize) Then Return SetError(1, 2, 0)
|
||||
If Not IsInt($iWeight) Then Return SetError(1, 3, 0)
|
||||
If Not IsInt($iAttrib) Then Return SetError(1, 4, 0)
|
||||
If Not IsString($sName) Then Return SetError(1, 5, 0)
|
||||
If Not IsNumber($iMaxWidth) Then Return SetError(1, 6, 0)
|
||||
If Not IsHwnd($hWnd) And $hWnd <> 0 Then Return SetError(1, 7, 0)
|
||||
|
||||
Local $aRet, $hDC, $hFont, $hLabel = 0, $hLabel_Handle
|
||||
|
||||
; Check for tab expansion flag
|
||||
Local $iExpTab = BitAnd($iAttrib, 1)
|
||||
; Remove possible tab expansion flag from font attribute value
|
||||
$iAttrib = BitAnd($iAttrib, BitNot(1))
|
||||
|
||||
; If GUI handle was passed
|
||||
If IsHWnd($hWnd) Then
|
||||
; Create label outside GUI borders
|
||||
$hLabel = GUICtrlCreateLabel("", -10, -10, 10, 10)
|
||||
$hLabel_Handle = GUICtrlGetHandle(-1)
|
||||
GUICtrlSetFont(-1, $iSize, $iWeight, $iAttrib, $sName)
|
||||
; Create DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hLabel_Handle)
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, 1, 0)
|
||||
EndIf
|
||||
$hDC = $aRet[0]
|
||||
$aRet = DllCall("user32.dll", "lparam", "SendMessage", "hwnd", $hLabel_Handle, "int", 0x0031, "wparam", 0, "lparam", 0) ; $WM_GetFont
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, _StringSize_Error_Close(2, $hDC), 0)
|
||||
EndIf
|
||||
$hFont = $aRet[0]
|
||||
Else
|
||||
; Get default DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hWnd)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, 1, 0)
|
||||
$hDC = $aRet[0]
|
||||
; Create required font
|
||||
$aRet = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $hDC, "int", 90) ; $LOGPIXELSY
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(3, $hDC), 0)
|
||||
Local $iInfo = $aRet[0]
|
||||
$aRet = DllCall("gdi32.dll", "handle", "CreateFontW", "int", -$iInfo * $iSize / 72, "int", 0, "int", 0, "int", 0, _
|
||||
"int", $iWeight, "dword", BitAND($iAttrib, 2), "dword", BitAND($iAttrib, 4), "dword", BitAND($iAttrib, 8), "dword", 0, "dword", 0, _
|
||||
"dword", 0, "dword", 5, "dword", 0, "wstr", $sName)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(4, $hDC), 0)
|
||||
$hFont = $aRet[0]
|
||||
EndIf
|
||||
|
||||
; Select font and store previous font
|
||||
$aRet = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hFont)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(5, $hDC, $hFont, $hLabel), 0)
|
||||
Local $hPrevFont = $aRet[0]
|
||||
|
||||
; Declare variables
|
||||
Local $avSize_Info[4], $iLine_Length, $iLine_Height = 0, $iLine_Count = 0, $iLine_Width = 0, $iWrap_Count, $iLast_Word, $sTest_Line
|
||||
; Declare and fill Size structure
|
||||
Local $tSize = DllStructCreate("int X;int Y")
|
||||
DllStructSetData($tSize, "X", 0)
|
||||
DllStructSetData($tSize, "Y", 0)
|
||||
|
||||
; Ensure EoL is @CRLF and break text into lines
|
||||
$sText = StringRegExpReplace($sText, "((?<!\x0d)\x0a|\x0d(?!\x0a))", @CRLF)
|
||||
Local $asLines = StringSplit($sText, @CRLF, 1)
|
||||
|
||||
; For each line
|
||||
For $i = 1 To $asLines[0]
|
||||
; Expand tabs if required
|
||||
If $iExpTab Then
|
||||
$asLines[$i] = StringReplace($asLines[$i], @TAB, " XXXXXXXX")
|
||||
EndIf
|
||||
; Size line
|
||||
$iLine_Length = StringLen($asLines[$i])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$i], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
If DllStructGetData($tSize, "X") > $iLine_Width Then $iLine_Width = DllStructGetData($tSize, "X")
|
||||
If DllStructGetData($tSize, "Y") > $iLine_Height Then $iLine_Height = DllStructGetData($tSize, "Y")
|
||||
Next
|
||||
|
||||
; Check if $iMaxWidth has been both set and exceeded
|
||||
If $iMaxWidth <> 0 And $iLine_Width > $iMaxWidth Then ; Wrapping required
|
||||
; For each Line
|
||||
For $j = 1 To $asLines[0]
|
||||
; Size line unwrapped
|
||||
$iLine_Length = StringLen($asLines[$j])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$j], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
; Check wrap status
|
||||
If DllStructGetData($tSize, "X") < $iMaxWidth - 4 Then
|
||||
; No wrap needed so count line and store
|
||||
$iLine_Count += 1
|
||||
$avSize_Info[0] &= $asLines[$j] & @CRLF
|
||||
Else
|
||||
; Wrap needed so zero counter for wrapped lines
|
||||
$iWrap_Count = 0
|
||||
; Build line to max width
|
||||
While 1
|
||||
; Zero line width
|
||||
$iLine_Width = 0
|
||||
; Initialise pointer for end of word
|
||||
$iLast_Word = 0
|
||||
; Add characters until EOL or maximum width reached
|
||||
For $i = 1 To StringLen($asLines[$j])
|
||||
; Is this just past a word ending?
|
||||
If StringMid($asLines[$j], $i, 1) = " " Then $iLast_Word = $i - 1
|
||||
; Increase line by one character
|
||||
$sTest_Line = StringMid($asLines[$j], 1, $i)
|
||||
; Get line length
|
||||
$iLine_Length = StringLen($sTest_Line)
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $sTest_Line, "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
$iLine_Width = DllStructGetData($tSize, "X")
|
||||
; If too long exit the loop
|
||||
If $iLine_Width >= $iMaxWidth - 4 Then ExitLoop
|
||||
Next
|
||||
; End of the line of text?
|
||||
If $i > StringLen($asLines[$j]) Then
|
||||
; Yes, so add final line to count
|
||||
$iWrap_Count += 1
|
||||
; Store line
|
||||
$avSize_Info[0] &= $sTest_Line & @CRLF
|
||||
ExitLoop
|
||||
Else
|
||||
; No, but add line just completed to count
|
||||
$iWrap_Count += 1
|
||||
; Check at least 1 word completed or return error
|
||||
If $iLast_Word = 0 Then Return SetError(3, _StringSize_Error_Close(0, $hDC, $hFont, $hLabel), 0)
|
||||
; Store line up to end of last word
|
||||
$avSize_Info[0] &= StringLeft($sTest_Line, $iLast_Word) & @CRLF
|
||||
; Strip string to point reached
|
||||
$asLines[$j] = StringTrimLeft($asLines[$j], $iLast_Word)
|
||||
; Trim leading whitespace
|
||||
$asLines[$j] = StringStripWS($asLines[$j], 1)
|
||||
; Repeat with remaining characters in line
|
||||
EndIf
|
||||
WEnd
|
||||
; Add the number of wrapped lines to the count
|
||||
$iLine_Count += $iWrap_Count
|
||||
EndIf
|
||||
Next
|
||||
; Reset any tab expansions
|
||||
If $iExpTab Then
|
||||
$avSize_Info[0] = StringRegExpReplace($avSize_Info[0], "\x20?XXXXXXXX", @TAB)
|
||||
EndIf
|
||||
; Complete return array
|
||||
$avSize_Info[1] = $iLine_Height
|
||||
$avSize_Info[2] = $iMaxWidth
|
||||
; Convert lines to pixels and add drop margin
|
||||
$avSize_Info[3] = ($iLine_Count * $iLine_Height) + 4
|
||||
Else ; No wrapping required
|
||||
; Create return array (add drop margin to height)
|
||||
Local $avSize_Info[4] = [$sText, $iLine_Height, $iLine_Width, ($asLines[0] * $iLine_Height) + 4]
|
||||
EndIf
|
||||
|
||||
; Clear up
|
||||
DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hPrevFont)
|
||||
DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $avSize_Info
|
||||
|
||||
EndFunc ;==>_StringSize
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_Error_Close
|
||||
; Description ...: Releases DC and deleted font object if required after error
|
||||
; Syntax ........: _StringSize_Error_Close ($iExtCode, $hDC, $hGUI)
|
||||
; Parameters ....: $iExtCode - code to return
|
||||
; $hDC, $hGUI - handles as set in _StringSize function
|
||||
; Return value ..: $iExtCode as passed
|
||||
; Author ........: Melba23
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_Error_Close($iExtCode, $hDC = 0, $hFont = 0, $hLabel = 0)
|
||||
|
||||
If $hFont <> 0 Then DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
If $hDC <> 0 Then DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $iExtCode
|
||||
|
||||
EndFunc ;=>_StringSize_Error_Close
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_DefaultFontName
|
||||
; Description ...: Determines Windows default font
|
||||
; Syntax ........: _StringSize_DefaultFontName()
|
||||
; Parameters ....: None
|
||||
; Return values .: Success - Returns name of system default font
|
||||
; Failure - Returns "Tahoma"
|
||||
; Author ........: Melba23, based on some original code by Larrydalooza
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_DefaultFontName()
|
||||
|
||||
; Get default system font data
|
||||
Local $tNONCLIENTMETRICS = DllStructCreate("uint;int;int;int;int;int;byte[60];int;int;byte[60];int;int;byte[60];byte[60];byte[60]")
|
||||
DLLStructSetData($tNONCLIENTMETRICS, 1, DllStructGetSize($tNONCLIENTMETRICS))
|
||||
DLLCall("user32.dll", "int", "SystemParametersInfo", "int", 41, "int", DllStructGetSize($tNONCLIENTMETRICS), "ptr", DllStructGetPtr($tNONCLIENTMETRICS), "int", 0)
|
||||
Local $tLOGFONT = DllStructCreate("long;long;long;long;long;byte;byte;byte;byte;byte;byte;byte;byte;char[32]", DLLStructGetPtr($tNONCLIENTMETRICS, 13))
|
||||
If IsString(DllStructGetData($tLOGFONT, 14)) Then
|
||||
Return DllStructGetData($tLOGFONT, 14)
|
||||
Else
|
||||
Return "Tahoma"
|
||||
EndIf
|
||||
|
||||
EndFunc ;=>_StringSize_DefaultFontName
|
80
AntiLock/MetroGUI-UDF/_GUIDisable.au3
Executable file
80
AntiLock/MetroGUI-UDF/_GUIDisable.au3
Executable file
|
@ -0,0 +1,80 @@
|
|||
#include-once
|
||||
|
||||
; #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
|
||||
; #INDEX# =======================================================================================================================
|
||||
; Title .........: _GUIDisable
|
||||
; AutoIt Version : v3.2.2.0 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Creates a dimming effect on the current/selected GUI.
|
||||
; Note ..........:
|
||||
; Author(s) .....: guinness
|
||||
; Remarks .......: Thanks to supersonic for the idea of adjusting the UDF when using Classic themes in Windows Vista+.
|
||||
; ===============================================================================================================================
|
||||
|
||||
; #INCLUDES# ====================================================================================================================
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <WinAPI.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
; #GLOBAL VARIABLES# ============================================================================================================
|
||||
Global Enum $__hGUIDisableHWnd, $__hGUIDisableHWndPrevious, $__iGUIDisableMax
|
||||
Global $__aGUIDisable[$__iGUIDisableMax]
|
||||
|
||||
Func _GUIDisable($hWnd, $iAnimate = Default, $iBrightness = Default, $bColor = 0x000000)
|
||||
Local Const $AW_SLIDE_IN_TOP = 0x00040004, $AW_SLIDE_OUT_TOP = 0x00050008
|
||||
|
||||
If $iAnimate = Default Then
|
||||
$iAnimate = 1
|
||||
EndIf
|
||||
If $iBrightness = Default Then
|
||||
$iBrightness = 5
|
||||
EndIf
|
||||
|
||||
If $hWnd = -1 And $__aGUIDisable[$__hGUIDisableHWnd] = 0 Then
|
||||
Local $iLabel = GUICtrlCreateLabel('', -99, -99, 1, 1)
|
||||
$hWnd = _WinAPI_GetParent(GUICtrlGetHandle($iLabel))
|
||||
If @error Then
|
||||
Return SetError(1, 0 * GUICtrlDelete($iLabel), 0)
|
||||
EndIf
|
||||
GUICtrlDelete($iLabel)
|
||||
EndIf
|
||||
|
||||
If IsHWnd($__aGUIDisable[$__hGUIDisableHWnd]) Then
|
||||
GUIDelete($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = 0
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = 0
|
||||
Else
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = $hWnd
|
||||
|
||||
Local $iLeft = 0, $iTop = 0
|
||||
Local $iStyle = GUIGetStyle($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
Local $sCurrentTheme = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes', 'CurrentTheme')
|
||||
Local $iIsClassicTheme = Number(StringInStr($sCurrentTheme, 'Basic.theme', 2) = 0 And StringInStr($sCurrentTheme, 'Ease of Access Themes', 2) > 0)
|
||||
|
||||
Local $aWinGetPos = WinGetClientSize($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = GUICreate('', $aWinGetPos[0], $aWinGetPos[1], $iLeft + 3, $iTop + 3, $WS_POPUP, $WS_EX_MDICHILD, $__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
GUISetBkColor($bColor, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
WinSetTrans($__aGUIDisable[$__hGUIDisableHWnd], '', Round($iBrightness * (255 / 100)))
|
||||
If not $iAnimate Then
|
||||
GUISetState(@SW_SHOW, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
EndIf
|
||||
GUISetState(@SW_DISABLE, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
EndIf
|
||||
Return $__aGUIDisable[$__hGUIDisableHWnd]
|
||||
EndFunc ;==>_GUIDisable
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
Func __GUIDisable_WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
|
||||
#forceref $hWnd, $iMsg, $iwParam
|
||||
Local $iHeight = _WinAPI_HiWord($ilParam)
|
||||
Local $iWidth = _WinAPI_LoWord($ilParam)
|
||||
If $hWnd = $__aGUIDisable[$__hGUIDisableHWndPrevious] Then
|
||||
Local $iWinGetPos = WinGetPos($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
If @error = 0 Then
|
||||
WinMove($__aGUIDisable[$__hGUIDisableHWnd], '', $iWinGetPos[0], $iWinGetPos[1], $iWidth, $iHeight)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $GUI_RUNDEFMSG
|
||||
EndFunc ;==>__GUIDisable_WM_SIZE
|
13
AntiLock/Releases/.media
Executable file
13
AntiLock/Releases/.media
Executable file
|
@ -0,0 +1,13 @@
|
|||
#cs ----------------------------------------------------------------------------
|
||||
|
||||
AutoIt Version : 3.3.14.5
|
||||
Auteur: Tyleo
|
||||
|
||||
Fonction du Script :
|
||||
Modèle de Script AutoIt.
|
||||
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
; Début du script - Ajouter votre code ci-dessous.
|
||||
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
|
||||
|
10
AntiLock/TyleoAboutMe.au3
Executable file
10
AntiLock/TyleoAboutMe.au3
Executable file
|
@ -0,0 +1,10 @@
|
|||
|
||||
#include <ButtonConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
Func TyleoAbout($SoftName)
|
||||
_Metro_MsgBox(8,"About / A propos",$SoftName & @CRLF & "Tyleo Softwares @ 2021" & @CRLF & " " & @CRLF & "BUILDING TOMORROW" & @CRLF & " " & @CRLF & "This Software is free and Open Source." & @CRLF & "tyleo.dev@outlook.com",400,15)
|
||||
Return True
|
||||
EndFunc
|
208
AutoLogon Manager/AutoLogon Manager.au3
Executable file
208
AutoLogon Manager/AutoLogon Manager.au3
Executable file
|
@ -0,0 +1,208 @@
|
|||
#RequireAdmin
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Icon=AutoLogon Manager.ico
|
||||
#AutoIt3Wrapper_Outfile_x64=..\..\Logiciels\AutoLogon Manager.exe
|
||||
#AutoIt3Wrapper_Res_Comment=Autologon Manager
|
||||
#AutoIt3Wrapper_Res_Description=Autologon Manager
|
||||
#AutoIt3Wrapper_Res_Fileversion=1.0.4.12
|
||||
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
|
||||
#AutoIt3Wrapper_Res_ProductName=Autologon Manager
|
||||
#AutoIt3Wrapper_Res_ProductVersion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_CompanyName=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalCopyright=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalTradeMarks=Tyleo Softwares
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include "TyleoAboutMe.au3"
|
||||
|
||||
$CurrentVer = FileGetVersion(@AutoItExe)
|
||||
|
||||
$ProgName = "Autologon Manager " & $CurrentVer
|
||||
|
||||
#cs
|
||||
|
||||
Tyleo Software Project Base v1
|
||||
Created With CNP and DevTools Base Folder
|
||||
|
||||
All Softwares created with this base are Free and Open Sourced.
|
||||
Join our Guilded Server ! https://www.guilded.gg/i/2DRlM7Mp
|
||||
|
||||
#ce
|
||||
|
||||
$NoticeConfirm = _Metro_MsgBox(4,"NOTICE - TYLEO SOFTWARES FOR ADMIN'S","WARNING - THIS SOFTWARE CAN CREATE AND MANAGE AUTOMATIC LOGON. THE USE OF THIS SOFTWARE IS AT YOUR OWN RISK. WE STRONGLY DONT RECOMMEND TO CONFIGURE AN AUTOLOGON ON AN ADMINISTRATOR ACCOUNT, AND EVEN MORE DOMAIN ADMIN ACCOUNT. THIS SOFTWARE ARE PROVIDED WITH THE AS-IS BASIS. SELECT YES/OUI IF YOU UNDERSTAND THE RISK.")
|
||||
|
||||
if $NoticeConfirm = "No" Then
|
||||
Exit(0)
|
||||
EndIf
|
||||
|
||||
$Win_Logon = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
|
||||
|
||||
$Win_AutoUser = "DefaultUserName"
|
||||
$Win_AutoPass = "DefaultPassword"
|
||||
$Win_AutoDomain = "DefaultDomainName"
|
||||
|
||||
$Win_AutologonActivation = "AutoAdminLogon"
|
||||
|
||||
$Win_Enabled = "1"
|
||||
$Win_Disabled = "0"
|
||||
|
||||
|
||||
|
||||
#include <ButtonConstants.au3>
|
||||
#include <EditConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <StaticConstants.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
#Region ### START Koda GUI section ### Form=
|
||||
Global $Form1 = GUICreate("Autologon Manager " & $CurrentVer, 483, 163, 236, 242)
|
||||
GUISetFont(14, 400, 0, "Segoe UI")
|
||||
Global $Label1 = GUICtrlCreateLabel("Username", 8, 8, 94, 29)
|
||||
Global $Label2 = GUICtrlCreateLabel("Password", 8, 48, 94, 29)
|
||||
Global $Label3 = GUICtrlCreateLabel("Domain", 8, 88, 94, 29)
|
||||
Global $AutoUser = GUICtrlCreateInput("", 104, 8, 273, 28)
|
||||
GUICtrlSetFont(-1, 11, 400, 0, "Segoe UI Light")
|
||||
Global $AutoPass = GUICtrlCreateInput("", 104, 48, 273, 28)
|
||||
GUICtrlSetFont(-1, 11, 400, 0, "Segoe UI Light")
|
||||
Global $AutoDomain = GUICtrlCreateInput("", 104, 88, 273, 28)
|
||||
GUICtrlSetFont(-1, 11, 400, 0, "Segoe UI Light")
|
||||
Global $OneClear = GUICtrlCreateButton("🧹", 384, 8, 25, 25)
|
||||
GUICtrlSetTip(-1,"Clear Input")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
Global $OneRead = GUICtrlCreateButton("🔽", 416, 8, 25, 25)
|
||||
GUICtrlSetTip(-1,"Get Active Value")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
Global $OneRemove = GUICtrlCreateButton("❌", 448, 8, 25, 25)
|
||||
GUICtrlSetTip(-1,"Remove Key")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
Global $TwoClear = GUICtrlCreateButton("🧹", 384, 48, 25, 25)
|
||||
GUICtrlSetTip(-1,"Clear Input")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
Global $TwoRead = GUICtrlCreateButton("🔽", 416, 48, 25, 25)
|
||||
GUICtrlSetTip(-1,"Get Active Value")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
Global $TwoRemove = GUICtrlCreateButton("❌", 448, 48, 25, 25)
|
||||
GUICtrlSetTip(-1,"Remove Key")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
Global $ThreeClear = GUICtrlCreateButton("🧹", 384, 88, 25, 25)
|
||||
GUICtrlSetTip(-1,"Clear Input")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
Global $ThreeRead = GUICtrlCreateButton("🔽", 416, 88, 25, 25)
|
||||
GUICtrlSetTip(-1,"Get Active Value")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
Global $ThreeRemove = GUICtrlCreateButton("❌", 448, 88, 25, 25)
|
||||
GUICtrlSetTip(-1,"Remove Key")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
|
||||
Global $AutologonState = GUICtrlCreateButton("STATE : OFF", 380, 120, 90, 33)
|
||||
GUICtrlSetTip(-1,"Cancel and Exit")
|
||||
GUICtrlSetFont(-1, 8,900)
|
||||
GUICtrlSetBkColor(-1,0xCC0000)
|
||||
GUICtrlSetColor(-1,0xFFFFFF)
|
||||
|
||||
Global $ApplyEnable = GUICtrlCreateButton("APPLY && ENABLE", 252, 120, 120, 33)
|
||||
GUICtrlSetTip(-1,"Save Configuration and Enable Autologon")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
GUICtrlSetFont(-1, 8,900)
|
||||
Global $AutologonDisable = GUICtrlCreateButton("DISABLE", 8, 120, 120, 33)
|
||||
GUICtrlSetTip(-1,"Disable Autologon")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
GUICtrlSetFont(-1, 8,900)
|
||||
Global $Exit = GUICtrlCreateButton("CANCEL", 130, 120, 120, 33)
|
||||
GUICtrlSetTip(-1,"Cancel and Exit")
|
||||
GUICtrlSetCursor(-1,0)
|
||||
GUICtrlSetFont(-1, 8,900)
|
||||
GUISetState(@SW_SHOW)
|
||||
#EndRegion ### END Koda GUI section ###
|
||||
AutologonStateCheck()
|
||||
|
||||
$OneReg = RegRead($Win_Logon,$Win_AutoUser)
|
||||
GUICtrlSetData($AutoUser,$OneReg)
|
||||
$TwoReg = RegRead($Win_Logon,$Win_AutoPass)
|
||||
GUICtrlSetData($AutoPass,$TwoReg)
|
||||
$ThreeReg = RegRead($Win_Logon,$Win_AutoDomain)
|
||||
GUICtrlSetData($AutoDomain,$ThreeReg)
|
||||
|
||||
|
||||
While 1
|
||||
$nMsg = GUIGetMsg()
|
||||
AutologonStateCheck()
|
||||
Switch $nMsg
|
||||
Case $GUI_EVENT_CLOSE, $Exit
|
||||
Exit
|
||||
|
||||
Case $OneClear
|
||||
GUICtrlSetData($AutoUser,"")
|
||||
|
||||
Case $TwoClear
|
||||
GUICtrlSetData($AutoPass,"")
|
||||
|
||||
Case $ThreeClear
|
||||
GUICtrlSetData($AutoDomain,"")
|
||||
|
||||
Case $OneRead
|
||||
$OneReg = RegRead($Win_Logon,$Win_AutoUser)
|
||||
GUICtrlSetData($AutoUser,$OneReg)
|
||||
|
||||
Case $TwoRead
|
||||
$TwoReg = RegRead($Win_Logon,$Win_AutoPass)
|
||||
GUICtrlSetData($AutoPass,$TwoReg)
|
||||
|
||||
Case $ThreeRead
|
||||
$ThreeReg = RegRead($Win_Logon,$Win_AutoDomain)
|
||||
GUICtrlSetData($AutoDomain,$ThreeReg)
|
||||
|
||||
Case $OneRemove
|
||||
RegDelete($Win_Logon,$Win_AutoUser)
|
||||
MsgBox(0,"Removed","Key " & $Win_Logon & "\" & $Win_AutoUser & " Removed.", 2)
|
||||
GUICtrlSetData($AutoUser,"")
|
||||
|
||||
Case $TwoRemove
|
||||
RegDelete($Win_Logon,$Win_AutoPass)
|
||||
MsgBox(0,"Removed","Key " & $Win_Logon & "\" & $Win_AutoPass & " Removed.", 2)
|
||||
GUICtrlSetData($AutoPass,"")
|
||||
|
||||
Case $ThreeRemove
|
||||
RegDelete($Win_Logon,$Win_AutoDomain)
|
||||
MsgBox(0,"Removed","Key " & $Win_Logon & "\" & $Win_AutoDomain & " Removed.", 2)
|
||||
GUICtrlSetData($AutoDomain,"")
|
||||
|
||||
Case $AutologonDisable
|
||||
RegWrite($Win_Logon,$Win_AutologonActivation,"REG_SZ","0")
|
||||
|
||||
Case $ApplyEnable
|
||||
$Apply_AutoUser = GUICtrlRead($AutoUser)
|
||||
$Apply_AutoPass = GUICtrlRead($AutoPass)
|
||||
$Apply_AutoDomain = GUICtrlRead($AutoDomain)
|
||||
if $Apply_AutoUser = "" Then
|
||||
MsgBox(0+16,"No Username Provided","No username provided. You cannot apply Automatic Logon without username.",3)
|
||||
Else
|
||||
RegWrite($Win_Logon,$Win_AutologonActivation,"REG_SZ","1")
|
||||
RegWrite($Win_Logon,$Win_AutoUser,"REG_SZ",$Apply_AutoUser)
|
||||
RegWrite($Win_Logon,$Win_AutoPass,"REG_SZ",$Apply_AutoPass)
|
||||
RegWrite($Win_Logon,$Win_AutoDomain,"REG_SZ",$Apply_AutoDomain)
|
||||
AutologonStateCheck()
|
||||
$RebootAsk = MsgBox(4,"Success","Autologon Applied and Activated." & @CRLF & "Start a try ? (Reboot after 5 seconds)")
|
||||
; ConsoleWrite($RebootAsk)
|
||||
if $RebootAsk = "6" Then
|
||||
Run("shutdown -r -t 5")
|
||||
Exit(0)
|
||||
EndIf
|
||||
EndIf
|
||||
|
||||
EndSwitch
|
||||
WEnd
|
||||
|
||||
Func AutologonStateCheck()
|
||||
$ALState = RegRead($Win_Logon,$Win_AutologonActivation)
|
||||
if $ALState = "1" Then
|
||||
GUICtrlSetData($AutologonState,"STATE : ON")
|
||||
GUICtrlSetBkColor($AutologonState,0x09A600)
|
||||
Else
|
||||
GUICtrlSetData($AutologonState,"STATE : OFF")
|
||||
GUICtrlSetBkColor($AutologonState,0xD50000)
|
||||
EndIf
|
||||
Sleep(40)
|
||||
Return True
|
||||
EndFunc
|
BIN
AutoLogon Manager/AutoLogon Manager.ico
Executable file
BIN
AutoLogon Manager/AutoLogon Manager.ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 110 KiB |
3575
AutoLogon Manager/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
3575
AutoLogon Manager/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
File diff suppressed because it is too large
Load diff
259
AutoLogon Manager/MetroGUI-UDF/MetroThemes.au3
Executable file
259
AutoLogon Manager/MetroGUI-UDF/MetroThemes.au3
Executable file
|
@ -0,0 +1,259 @@
|
|||
#include-once
|
||||
#cs ----------------------------------------------------------------------------
|
||||
Author: BB_19
|
||||
Material Themes for MetroGUI UDF
|
||||
If you want to create your own themes, check out flatcolors.net, you can find there many random material/flat colors :)
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
;#Set Default Theme
|
||||
Global $GUIThemeColor = "0x13161C" ; GUI Background Color
|
||||
Global $FontThemeColor = "0xFFFFFF" ; Font Color
|
||||
Global $GUIBorderColor = "0x2D2D2D" ; GUI Border Color
|
||||
Global $ButtonBKColor = "0x00796b" ; Metro Button BacKground Color
|
||||
Global $ButtonTextColor = "0xFFFFFF" ; Metro Button Text Color
|
||||
Global $CB_Radio_Color = "0xFFFFFF" ;Checkbox and Radio Color (Box/Circle)
|
||||
Global $GUI_Theme_Name = "DarkTealV2" ;Theme Name (For internal usage)
|
||||
Global $CB_Radio_Hover_Color = "0xD8D8D8" ; Checkbox and Radio Hover Color (Box/Circle)
|
||||
Global $CB_Radio_CheckMark_Color = "0x1a1a1a" ; Checkbox and Radio checkmark color
|
||||
|
||||
Func _SetTheme($ThemeSelect = "DarkTeal")
|
||||
$GUI_Theme_Name = $ThemeSelect
|
||||
Switch ($ThemeSelect)
|
||||
Case "LightTeal"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTeal"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTealV2"
|
||||
$GUIThemeColor = "0x13161C"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x35635B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkRuby"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x712043"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightTeal"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x336058"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightCyan"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x0D5C63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightBlue"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x1A4F70"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnight"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x3C4D66"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlue"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlueV2"
|
||||
$GUIThemeColor = "0x040D11"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightBlue"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x244E80"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightCyan"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkCyan"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGray"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x3F5863"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGreen"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x2E7D32"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreen"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreenV2"
|
||||
$GUIThemeColor = "0x061319"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightRed"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xc62828"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGray"
|
||||
$GUIThemeColor = "0x1B2428"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x4F6772"
|
||||
$ButtonBKColor = "0x607D8B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkAmber"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xffa000"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightOrange"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xBC5E05"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkOrange"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xC76810"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPurple"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkPurple"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPink"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xE91E63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case Else
|
||||
ConsoleWrite("Metro-UDF-Error: Theme not found, using default theme." & @CRLF)
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
$GUI_Theme_Name = "DarkTealV2"
|
||||
EndSwitch
|
||||
EndFunc ;==>_SetTheme
|
495
AutoLogon Manager/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
495
AutoLogon Manager/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
|
@ -0,0 +1,495 @@
|
|||
;======================================
|
||||
;~ Author : binhnx
|
||||
;~ Created : 2014/10/20
|
||||
;======================================
|
||||
;~ Modified : BB_19
|
||||
;~ Last modified : 2017/10/07
|
||||
;======================================
|
||||
|
||||
#include-once
|
||||
#include <WinAPI.au3>
|
||||
#include <WinAPIShellEx.au3>
|
||||
Local $_cHvr_aData[0]
|
||||
|
||||
|
||||
Local Const $_cHvr_HDLLCOMCTL32 = _WinAPI_LoadLibrary('comctl32.dll')
|
||||
Assert($_cHvr_HDLLCOMCTL32 <> 0, 'This UDF requires comctl32.dll')
|
||||
Local Const $_cHvr_PDEFSUBCLASSPROC = _WinAPI_GetProcAddress($_cHvr_HDLLCOMCTL32, 'DefSubclassProc')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS_DLL = DllCallbackRegister('_cHvr_iProc', 'NONE', 'HWND;UINT;WPARAM;LPARAM;DWORD')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS = DllCallbackGetPtr($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
|
||||
OnAutoItExitRegister("_cHvr_Finalize")
|
||||
Local Const $_cHvr_TSUBCLASSEXE = Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86')
|
||||
Local Const $_cHvr_HEXECUTABLEHEAP = DllCall('kernel32.dll', 'HANDLE', 'HeapCreate', 'DWORD', 0x00040000, 'ULONG_PTR', 0, 'ULONG_PTR', 0)[0]
|
||||
Assert($_cHvr_HEXECUTABLEHEAP <> 0, 'Failed to create executable heap object')
|
||||
Local Const $_cHvr_PSUBCLASSEXE = _cHvr_ExecutableFromStruct(Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86'))
|
||||
|
||||
|
||||
Func _cHvr_Register($idCtrl, $fnHovOff = '', $fnHoverOn = '', $fnClick = '', $fnDblClk = '', $HoverData = 0,$ClickData = 0,$fnRightClick = '')
|
||||
Local $hWnd = GUICtrlGetHandle($idCtrl)
|
||||
If (Not (IsHWnd($hWnd))) Then Return SetError(1, 0, -1)
|
||||
Local $nIndex = _cHvr_GetNewIndex($hWnd)
|
||||
Local $aData[13]
|
||||
$aData[0] = $hWnd;Control Hwnd
|
||||
$aData[1] = $idCtrl; Control handle
|
||||
$aData[3] = $fnHovOff;Hover Off func
|
||||
$aData[4] = $HoverData;Hover Off Data
|
||||
$aData[5] = $fnHoverOn;Hover ON func
|
||||
$aData[6] = $HoverData;Hover ON Data
|
||||
$aData[7] = $fnRightClick;RClick func
|
||||
$aData[8] = $ClickData; click data
|
||||
$aData[9] = $fnClick;Click func
|
||||
$aData[10] = $ClickData; click data
|
||||
$aData[11] = $fnDblClk;DB click func
|
||||
$aData[12] = $ClickData;DB click data
|
||||
$_cHvr_aData[$nIndex] = $aData
|
||||
_WinAPI_SetWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd, $nIndex)
|
||||
Return $nIndex
|
||||
EndFunc ;==>_cHvr_Register
|
||||
|
||||
Func _cHvr_iProc($hWnd, $uMsg, $wParam, $lParam, $cIndex)
|
||||
Switch $uMsg
|
||||
Case 0x0200;Hover
|
||||
GUISetCursor(2, 1)
|
||||
_cHvr_cMove($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0201;Leftclick
|
||||
_cHvr_cDown($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0202
|
||||
_cHvr_cUp($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Return False
|
||||
Case 0x0203;Doubleclick
|
||||
_cHvr_cDblClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0204;Rightclick
|
||||
_cHvr_cRightClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x02A3;Hover leave
|
||||
_cHvr_cLeave($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0082;Deleted
|
||||
_cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
EndSwitch
|
||||
Return True
|
||||
EndFunc ;==>_cHvr_iProc
|
||||
|
||||
Func _cHvr_cDown(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_WinAPI_SetCapture($hWnd)
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndFunc ;==>_cHvr_cDown
|
||||
|
||||
Func _cHvr_cMove(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
Local $bIn = _cHvr_IsInClient($hWnd, $lParam)
|
||||
If Not $aCtrlData[2] Then
|
||||
If $bIn Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
Else
|
||||
If Not $bIn Then
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndIf
|
||||
EndIf
|
||||
ElseIf Not $aCtrlData[2] Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 5)
|
||||
Local $tTME = DllStructCreate('DWORD;DWORD;HWND;DWORD')
|
||||
DllStructSetData($tTME, 1, DllStructGetSize($tTME))
|
||||
DllStructSetData($tTME, 2, 2) ;$TME_LEAVE
|
||||
DllStructSetData($tTME, 3, $hWnd)
|
||||
DllCall('user32.dll', 'BOOL', 'TrackMouseEvent', 'STRUCT*', $tTME)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_cMove
|
||||
|
||||
Func _cHvr_cUp(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
Local $lRet = _WinAPI_DefSubclassProc($hWnd, $uMsg, $wParam, $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
_WinAPI_ReleaseCapture()
|
||||
If _cHvr_IsInClient($hWnd, $lParam) Then
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $lRet
|
||||
EndFunc ;==>_cHvr_cUp
|
||||
|
||||
Func _cHvr_cDblClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 11)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cRightClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 7)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cLeave(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndFunc ;==>_cHvr_cLeave
|
||||
|
||||
Func _cHvr_CallFunc(ByRef $aCtrlData, $iCallType)
|
||||
Call($aCtrlData[$iCallType], $aCtrlData[1], $aCtrlData[$iCallType + 1])
|
||||
EndFunc ;==>_cHvr_CallFunc
|
||||
|
||||
Func _cHvr_ArrayPush(ByRef $aStackArr, Const $vSrc1 = Default, Const $vSrc2 = Default, Const $vSrc3 = Default, Const $vSrc4 = Default, Const $vSrc5 = Default)
|
||||
While (UBound($aStackArr) < ($aStackArr[0] + @NumParams))
|
||||
ReDim $aStackArr[UBound($aStackArr) * 2]
|
||||
WEnd
|
||||
|
||||
If Not ($vSrc1 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc1
|
||||
EndIf
|
||||
If Not ($vSrc2 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc2
|
||||
EndIf
|
||||
If Not ($vSrc3 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc3
|
||||
EndIf
|
||||
If Not ($vSrc4 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc4
|
||||
EndIf
|
||||
If Not ($vSrc5 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc5
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_ArrayPush
|
||||
|
||||
Func _cHvr_IsInClient($hWnd, $lParam)
|
||||
Local $iX = BitShift(BitShift($lParam, -16), 16)
|
||||
Local $iY = BitShift($lParam, 16)
|
||||
Local $aSize = WinGetClientSize($hWnd)
|
||||
Return Not ($iX < 0 Or $iY < 0 Or $iX > $aSize[0] Or $iY > $aSize[1])
|
||||
EndFunc ;==>_cHvr_IsInClient
|
||||
|
||||
Func _cHvr_CSCP_X86() ;Create Subclass Process x86
|
||||
; $hWnd HWND size: 4 ESP+4 EBP+8
|
||||
; $uMsg UINT size: 4 ESP+8 EBP+12
|
||||
; $wParam WPARAM size: 4 ESP+12 EBP+16
|
||||
; $lParam LPARAM size: 4 ESP+16 EBP+20
|
||||
; $uIdSubclass UINT_PTR size: 4 ESP+20 EBP+24
|
||||
; $dwRefData DWORD_PTR size: 4 ESP+24 EBP+28 Total: 24
|
||||
|
||||
; NERVER FORGET ADDING align 1 OR YOU WILL SPEND HOURS TO FIND WHAT CAUSE 0xC0000005 Access Violation
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; Func ; __stdcall
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x55) ;push ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xEC) ;mov ebp, esp
|
||||
|
||||
; Save un-modified params to nv register
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+16]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x5D, 16) ;8b 5d 10
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov esi, DWORD PTR [ebp+12]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x75, 12) ;8b 75 0c
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+20]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x7D, 20) ;8b 7d 14
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x82) ;81 fe 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x2A3) ;81 fe a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;lea eax, DWORD PTR [esi-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x86, -0x200) ;8d 86 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
|
||||
; :WndProcInternal (HWND, UINT, WPARAM, LPARAM, DWORD)
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ecx, DWORD PTR [ebp+28]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x4D, 28) ;8b 4d 1c
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov edx, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x55, 8) ;8b 55 08
|
||||
$sExe &= 'BYTE;' ;push ecx
|
||||
_cHvr_ArrayPush($aOpCode, 0x51) ;51
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x52) ;52
|
||||
|
||||
; Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax, _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;' ;test eax, eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x85, 0xC0) ;85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;jz short Return
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$aOpCode[$nElemOffset[2]] = $nAddrOffset[3] - $nAddrOffset[2]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov eax, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x45, 8)
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x50) ;50
|
||||
|
||||
;Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax,COMCTL32.DefSubclassProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[3]] = $nAddrOffset[4] - $nAddrOffset[3]
|
||||
|
||||
; Restore nv-register
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;pop edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5E) ;pop esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5B) ;pop ebx
|
||||
|
||||
|
||||
; EndFunc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;WORD'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5D) ;pop ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0xC2, 24) ;ret 24
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X86
|
||||
|
||||
Func _cHvr_CSCP_X64() ;Create Subclass Process x64
|
||||
; First four INT and UINT has size = 8 instead of 4 because they are stored in RCX, RDX, R8, R9
|
||||
; $hWnd HWND size: 8 RCX RSP+8
|
||||
; $uMsg UINT size: 8 EDX RSP+16
|
||||
; $wParam WPARAM size: 8 R8 RSP+24
|
||||
; $lParam LPARAM size: 8 R9 RSP+32
|
||||
; $uIdSubclass UINT_PTR size: 8 RSP+40
|
||||
; $dwRefData DWORD_PTR size: 8 RSP+48 Total: 48
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x82) ;81 fa 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x2A3) ;81 fa a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;lea eax, DWORD PTR [rdx-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x82, -0x200) ;8d 82 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
|
||||
; :WndProcInternal (HWND rsp+8, UINT +16, WPARAM +24, LPARAM +32, DWORD +40)
|
||||
; $dwRefData = [ESP+48+48(sub rsp, 48)+8(push rdi)] = [ESP+104]
|
||||
; Save base registers:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+8], rbx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x5C, 0x24, 8) ;48 89 5c 24 08
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+16], rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x6C, 0x24, 16) ;48 89 6c 24 10
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+24], rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x74, 0x24, 24) ;48 89 74 24 18
|
||||
$sExe &= 'BYTE;' ;push rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
; Max sub-routine params = 5 (size = 5*8 = 40), + 8 bytes for return value = 48.
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;sub rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xEC, 48) ;48 83 ec 30
|
||||
; rbx, rbp, rsi now at [ESP+8+56], [ESP+16+56], [ESP+24+56]
|
||||
|
||||
; Save the parameters:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rdi, r9
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF9) ;49 8b f9
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rsi, r8
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF0) ;49 8b f0
|
||||
$sExe &= 'BYTE;BYTE;' ;mov ebx, edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xDA) ;8b da
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rbp, rcx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xE9) ;48 8b e9
|
||||
|
||||
; Prepare additional parameter for internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rax, QWORD PTR [rsp+104]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x44, 0x24, 104) ;48 8b 44 24 68
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+32], Rax]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x44, 0x24, 32) ;48 89 44 24 20
|
||||
|
||||
; Call internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;PTR;' ;mov rax, QWORD PTR _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
;movabs rax, _cHvr_iProc ;48 b8 QWORD_PTR
|
||||
$sExe &= 'BYTE;BYTE;' ;call rax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff d0
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; Restore parameters for DefSubclassProc call
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r9, rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xCF) ;4c 8b cf
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r8, rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xC6) ;4c 8b c6
|
||||
$sExe &= 'BYTE;BYTE;' ;mov edx, ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xD3) ;8b d3
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rcx, rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xCD) ;48 8b cd
|
||||
|
||||
; Restore registers value
|
||||
$aOpCode[$nElemOffset[3]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[3]
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbx, QWORD PTR [rsp+64]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x5C, 0x24, 64) ;48 8b 5c 24 40
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbp, QWORD PTR [rsp+72]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x6C, 0x24, 72) ;48 8b 6c 24 48
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rsi, QWORD PTR [rsp+80]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x74, 0x24, 80) ;48 8b 74 24 50
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;add rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xc4, 48) ;48 83 c4 30
|
||||
$sExe &= 'BYTE;' ;pop rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;5f
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[4] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[2]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[2]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$sExe &= 'BYTE;BYTE;PTR;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xE0)
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[4]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[4]
|
||||
$sExe &= 'BYTE;' ;ret 0
|
||||
_cHvr_ArrayPush($aOpCode, 0xC3)
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X64
|
||||
|
||||
Func _cHvr_PopulateOpcode(ByRef $sExe, ByRef $aOpCode)
|
||||
Local $tExe = DllStructCreate($sExe)
|
||||
Assert(@error = 0, 'DllStrucCreate Failed With Error = ' & @error)
|
||||
For $i = 1 To $aOpCode[0]
|
||||
DllStructSetData($tExe, $i, $aOpCode[$i])
|
||||
Next
|
||||
Return $tExe
|
||||
EndFunc ;==>_cHvr_PopulateOpcode
|
||||
|
||||
Func _cHvr_ExecutableFromStruct($tExe)
|
||||
Local $pExe = DllCall('kernel32.dll', 'PTR', 'HeapAlloc', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 8, 'ULONG_PTR', DllStructGetSize($tExe))[0]
|
||||
Assert($pExe <> 0, 'Allocate memory failed')
|
||||
DllCall("kernel32.dll", "none", "RtlMoveMemory", "PTR", $pExe, "PTR", DllStructGetPtr($tExe), "ULONG_PTR", DllStructGetSize($tExe))
|
||||
Assert(@error = 0, 'Failed to copy memory')
|
||||
Return $pExe
|
||||
EndFunc ;==>_cHvr_ExecutableFromStruct
|
||||
|
||||
Func _cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
_WinAPI_RemoveWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd)
|
||||
Local $aData=$_cHvr_aData[$cIndex]
|
||||
$_cHvr_aData[$cIndex] = 0
|
||||
Call( "_iControlDelete",$aData[1])
|
||||
EndFunc ;==>_cHvr_UnRegisterInternal
|
||||
|
||||
Func _cHvr_Finalize()
|
||||
DllCallbackFree($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
_WinAPI_FreeLibrary($_cHvr_HDLLCOMCTL32)
|
||||
If ($_cHvr_HEXECUTABLEHEAP <> 0) Then
|
||||
If ($_cHvr_PSUBCLASSEXE <> 0) Then
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapFree', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 0, 'PTR', $_cHvr_PSUBCLASSEXE)
|
||||
EndIf
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapDestroy', 'HANDLE', $_cHvr_HEXECUTABLEHEAP)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_Finalize
|
||||
|
||||
Func Assert($bExpression, $sMsg = '', $sScript = @ScriptName, $sScriptPath = @ScriptFullPath, $iLine = @ScriptLineNumber, $iError = @error, $iExtend = @extended)
|
||||
If (Not ($bExpression)) Then
|
||||
MsgBox(BitOR(1, 0x10), 'Assertion Error!', _
|
||||
@CRLF & 'Script' & @TAB & ': ' & $sScript _
|
||||
& @CRLF & 'Path' & @TAB & ': ' & $sScriptPath _
|
||||
& @CRLF & 'Line' & @TAB & ': ' & $iLine _
|
||||
& @CRLF & 'Error' & @TAB & ': ' & ($iError > 0x7FFF ? Hex($iError) : $iError) _
|
||||
& ($iExtend <> 0 ? ' (Extended : ' & ($iExtend > 0x7FFF ? Hex($iExtend) : $iExtend) & ')' : '') _
|
||||
& @CRLF & 'Message' & @TAB & ': ' & $sMsg _
|
||||
& @CRLF & @CRLF & 'OK: Exit Script' & @TAB & 'Cancel: Continue')
|
||||
Exit
|
||||
EndIf
|
||||
EndFunc ;==>Assert
|
||||
|
||||
Func _cHvr_GetNewIndex($hWnd)
|
||||
;Try to assign index from previously deleted control
|
||||
For $i = 0 To UBound($_cHvr_aData) - 1 Step +1
|
||||
If Not IsArray($_cHvr_aData[$i]) Then
|
||||
Return $i
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ReDim $_cHvr_aData[UBound($_cHvr_aData) + 1]
|
||||
Return UBound($_cHvr_aData) - 1
|
||||
EndFunc ;==>_cHvr_GetNewIndex
|
||||
|
||||
Func _WinAPI_GetCapture()
|
||||
Return DllCall("user32.dll", "HWND", "GetCapture")[0]
|
||||
EndFunc ;==>_WinAPI_GetCapture
|
279
AutoLogon Manager/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
279
AutoLogon Manager/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
|
@ -0,0 +1,279 @@
|
|||
#include-once
|
||||
|
||||
; #INDEX# ============================================================================================================
|
||||
; Title .........: _StringSize
|
||||
; AutoIt Version : v3.2.12.1 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; Remarks .......:
|
||||
; Note ..........:
|
||||
; Author(s) .....: Melba23 - thanks to trancexx for the default DC code
|
||||
; ====================================================================================================================
|
||||
|
||||
;#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
|
||||
|
||||
; #CURRENT# ==========================================================================================================
|
||||
; _StringSize: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; ====================================================================================================================
|
||||
|
||||
; #INTERNAL_USE_ONLY#=================================================================================================
|
||||
; _StringSize_Error_Close: Releases DC and deletes font object after error
|
||||
; _StringSize_DefaultFontName: Determines Windows default font
|
||||
; ====================================================================================================================
|
||||
|
||||
; #FUNCTION# =========================================================================================================
|
||||
; Name...........: _StringSize
|
||||
; Description ...: Returns size of rectangle required to display string - maximum permitted width can be chosen
|
||||
; Syntax ........: _StringSize($sText[, $iSize[, $iWeight[, $iAttrib[, $sName[, $iWidth[, $hWnd]]]]]])
|
||||
; Parameters ....: $sText - String to display
|
||||
; $iSize - [optional] Font size in points - (default = 8.5)
|
||||
; $iWeight - [optional] Font weight - (default = 400 = normal)
|
||||
; $iAttrib - [optional] Font attribute (0-Normal (default), 2-Italic, 4-Underline, 8 Strike)
|
||||
; + 1 if tabs are to be expanded before sizing
|
||||
; $sName - [optional] Font name - (default = Tahoma)
|
||||
; $iWidth - [optional] Max width for rectangle - (default = 0 => width of original string)
|
||||
; $hWnd - [optional] GUI in which string will be displayed - (default 0 => normally not required)
|
||||
; Requirement(s) : v3.2.12.1 or higher
|
||||
; Return values .: Success - Returns 4-element array: ($iWidth set // $iWidth not set)
|
||||
; |$array[0] = String reformatted with additonal @CRLF // Original string
|
||||
; |$array[1] = Height of single line in selected font // idem
|
||||
; |$array[2] = Width of rectangle required for reformatted // original string
|
||||
; |$array[3] = Height of rectangle required for reformatted // original string
|
||||
; Failure - Returns 0 and sets @error:
|
||||
; |1 - Incorrect parameter type (@extended = parameter index)
|
||||
; |2 - DLL call error - extended set as follows:
|
||||
; |1 - GetDC failure
|
||||
; |2 - SendMessage failure
|
||||
; |3 - GetDeviceCaps failure
|
||||
; |4 - CreateFont failure
|
||||
; |5 - SelectObject failure
|
||||
; |6 - GetTextExtentPoint32 failure
|
||||
; |3 - Font too large for chosen max width - a word will not fit
|
||||
; Author ........: Melba23 - thanks to trancexx for the default DC code
|
||||
; Modified ......:
|
||||
; Remarks .......: The use of the $hWnd parameter is not normally necessary - it is only required if the UDF does not
|
||||
; return correct dimensions without it.
|
||||
; Related .......:
|
||||
; Link ..........:
|
||||
; Example .......: Yes
|
||||
;=====================================================================================================================
|
||||
Func _StringSize($sText, $iSize = 8.5, $iWeight = 400, $iAttrib = 0, $sName = "", $iMaxWidth = 0, $hWnd = 0)
|
||||
|
||||
; Set parameters passed as Default
|
||||
If $iSize = Default Then $iSize = 8.5
|
||||
If $iWeight = Default Then $iWeight = 400
|
||||
If $iAttrib = Default Then $iAttrib = 0
|
||||
If $sName = "" Or $sName = Default Then $sName = _StringSize_DefaultFontName()
|
||||
|
||||
; Check parameters are correct type
|
||||
If Not IsString($sText) Then Return SetError(1, 1, 0)
|
||||
If Not IsNumber($iSize) Then Return SetError(1, 2, 0)
|
||||
If Not IsInt($iWeight) Then Return SetError(1, 3, 0)
|
||||
If Not IsInt($iAttrib) Then Return SetError(1, 4, 0)
|
||||
If Not IsString($sName) Then Return SetError(1, 5, 0)
|
||||
If Not IsNumber($iMaxWidth) Then Return SetError(1, 6, 0)
|
||||
If Not IsHwnd($hWnd) And $hWnd <> 0 Then Return SetError(1, 7, 0)
|
||||
|
||||
Local $aRet, $hDC, $hFont, $hLabel = 0, $hLabel_Handle
|
||||
|
||||
; Check for tab expansion flag
|
||||
Local $iExpTab = BitAnd($iAttrib, 1)
|
||||
; Remove possible tab expansion flag from font attribute value
|
||||
$iAttrib = BitAnd($iAttrib, BitNot(1))
|
||||
|
||||
; If GUI handle was passed
|
||||
If IsHWnd($hWnd) Then
|
||||
; Create label outside GUI borders
|
||||
$hLabel = GUICtrlCreateLabel("", -10, -10, 10, 10)
|
||||
$hLabel_Handle = GUICtrlGetHandle(-1)
|
||||
GUICtrlSetFont(-1, $iSize, $iWeight, $iAttrib, $sName)
|
||||
; Create DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hLabel_Handle)
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, 1, 0)
|
||||
EndIf
|
||||
$hDC = $aRet[0]
|
||||
$aRet = DllCall("user32.dll", "lparam", "SendMessage", "hwnd", $hLabel_Handle, "int", 0x0031, "wparam", 0, "lparam", 0) ; $WM_GetFont
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, _StringSize_Error_Close(2, $hDC), 0)
|
||||
EndIf
|
||||
$hFont = $aRet[0]
|
||||
Else
|
||||
; Get default DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hWnd)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, 1, 0)
|
||||
$hDC = $aRet[0]
|
||||
; Create required font
|
||||
$aRet = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $hDC, "int", 90) ; $LOGPIXELSY
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(3, $hDC), 0)
|
||||
Local $iInfo = $aRet[0]
|
||||
$aRet = DllCall("gdi32.dll", "handle", "CreateFontW", "int", -$iInfo * $iSize / 72, "int", 0, "int", 0, "int", 0, _
|
||||
"int", $iWeight, "dword", BitAND($iAttrib, 2), "dword", BitAND($iAttrib, 4), "dword", BitAND($iAttrib, 8), "dword", 0, "dword", 0, _
|
||||
"dword", 0, "dword", 5, "dword", 0, "wstr", $sName)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(4, $hDC), 0)
|
||||
$hFont = $aRet[0]
|
||||
EndIf
|
||||
|
||||
; Select font and store previous font
|
||||
$aRet = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hFont)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(5, $hDC, $hFont, $hLabel), 0)
|
||||
Local $hPrevFont = $aRet[0]
|
||||
|
||||
; Declare variables
|
||||
Local $avSize_Info[4], $iLine_Length, $iLine_Height = 0, $iLine_Count = 0, $iLine_Width = 0, $iWrap_Count, $iLast_Word, $sTest_Line
|
||||
; Declare and fill Size structure
|
||||
Local $tSize = DllStructCreate("int X;int Y")
|
||||
DllStructSetData($tSize, "X", 0)
|
||||
DllStructSetData($tSize, "Y", 0)
|
||||
|
||||
; Ensure EoL is @CRLF and break text into lines
|
||||
$sText = StringRegExpReplace($sText, "((?<!\x0d)\x0a|\x0d(?!\x0a))", @CRLF)
|
||||
Local $asLines = StringSplit($sText, @CRLF, 1)
|
||||
|
||||
; For each line
|
||||
For $i = 1 To $asLines[0]
|
||||
; Expand tabs if required
|
||||
If $iExpTab Then
|
||||
$asLines[$i] = StringReplace($asLines[$i], @TAB, " XXXXXXXX")
|
||||
EndIf
|
||||
; Size line
|
||||
$iLine_Length = StringLen($asLines[$i])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$i], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
If DllStructGetData($tSize, "X") > $iLine_Width Then $iLine_Width = DllStructGetData($tSize, "X")
|
||||
If DllStructGetData($tSize, "Y") > $iLine_Height Then $iLine_Height = DllStructGetData($tSize, "Y")
|
||||
Next
|
||||
|
||||
; Check if $iMaxWidth has been both set and exceeded
|
||||
If $iMaxWidth <> 0 And $iLine_Width > $iMaxWidth Then ; Wrapping required
|
||||
; For each Line
|
||||
For $j = 1 To $asLines[0]
|
||||
; Size line unwrapped
|
||||
$iLine_Length = StringLen($asLines[$j])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$j], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
; Check wrap status
|
||||
If DllStructGetData($tSize, "X") < $iMaxWidth - 4 Then
|
||||
; No wrap needed so count line and store
|
||||
$iLine_Count += 1
|
||||
$avSize_Info[0] &= $asLines[$j] & @CRLF
|
||||
Else
|
||||
; Wrap needed so zero counter for wrapped lines
|
||||
$iWrap_Count = 0
|
||||
; Build line to max width
|
||||
While 1
|
||||
; Zero line width
|
||||
$iLine_Width = 0
|
||||
; Initialise pointer for end of word
|
||||
$iLast_Word = 0
|
||||
; Add characters until EOL or maximum width reached
|
||||
For $i = 1 To StringLen($asLines[$j])
|
||||
; Is this just past a word ending?
|
||||
If StringMid($asLines[$j], $i, 1) = " " Then $iLast_Word = $i - 1
|
||||
; Increase line by one character
|
||||
$sTest_Line = StringMid($asLines[$j], 1, $i)
|
||||
; Get line length
|
||||
$iLine_Length = StringLen($sTest_Line)
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $sTest_Line, "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
$iLine_Width = DllStructGetData($tSize, "X")
|
||||
; If too long exit the loop
|
||||
If $iLine_Width >= $iMaxWidth - 4 Then ExitLoop
|
||||
Next
|
||||
; End of the line of text?
|
||||
If $i > StringLen($asLines[$j]) Then
|
||||
; Yes, so add final line to count
|
||||
$iWrap_Count += 1
|
||||
; Store line
|
||||
$avSize_Info[0] &= $sTest_Line & @CRLF
|
||||
ExitLoop
|
||||
Else
|
||||
; No, but add line just completed to count
|
||||
$iWrap_Count += 1
|
||||
; Check at least 1 word completed or return error
|
||||
If $iLast_Word = 0 Then Return SetError(3, _StringSize_Error_Close(0, $hDC, $hFont, $hLabel), 0)
|
||||
; Store line up to end of last word
|
||||
$avSize_Info[0] &= StringLeft($sTest_Line, $iLast_Word) & @CRLF
|
||||
; Strip string to point reached
|
||||
$asLines[$j] = StringTrimLeft($asLines[$j], $iLast_Word)
|
||||
; Trim leading whitespace
|
||||
$asLines[$j] = StringStripWS($asLines[$j], 1)
|
||||
; Repeat with remaining characters in line
|
||||
EndIf
|
||||
WEnd
|
||||
; Add the number of wrapped lines to the count
|
||||
$iLine_Count += $iWrap_Count
|
||||
EndIf
|
||||
Next
|
||||
; Reset any tab expansions
|
||||
If $iExpTab Then
|
||||
$avSize_Info[0] = StringRegExpReplace($avSize_Info[0], "\x20?XXXXXXXX", @TAB)
|
||||
EndIf
|
||||
; Complete return array
|
||||
$avSize_Info[1] = $iLine_Height
|
||||
$avSize_Info[2] = $iMaxWidth
|
||||
; Convert lines to pixels and add drop margin
|
||||
$avSize_Info[3] = ($iLine_Count * $iLine_Height) + 4
|
||||
Else ; No wrapping required
|
||||
; Create return array (add drop margin to height)
|
||||
Local $avSize_Info[4] = [$sText, $iLine_Height, $iLine_Width, ($asLines[0] * $iLine_Height) + 4]
|
||||
EndIf
|
||||
|
||||
; Clear up
|
||||
DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hPrevFont)
|
||||
DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $avSize_Info
|
||||
|
||||
EndFunc ;==>_StringSize
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_Error_Close
|
||||
; Description ...: Releases DC and deleted font object if required after error
|
||||
; Syntax ........: _StringSize_Error_Close ($iExtCode, $hDC, $hGUI)
|
||||
; Parameters ....: $iExtCode - code to return
|
||||
; $hDC, $hGUI - handles as set in _StringSize function
|
||||
; Return value ..: $iExtCode as passed
|
||||
; Author ........: Melba23
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_Error_Close($iExtCode, $hDC = 0, $hFont = 0, $hLabel = 0)
|
||||
|
||||
If $hFont <> 0 Then DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
If $hDC <> 0 Then DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $iExtCode
|
||||
|
||||
EndFunc ;=>_StringSize_Error_Close
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_DefaultFontName
|
||||
; Description ...: Determines Windows default font
|
||||
; Syntax ........: _StringSize_DefaultFontName()
|
||||
; Parameters ....: None
|
||||
; Return values .: Success - Returns name of system default font
|
||||
; Failure - Returns "Tahoma"
|
||||
; Author ........: Melba23, based on some original code by Larrydalooza
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_DefaultFontName()
|
||||
|
||||
; Get default system font data
|
||||
Local $tNONCLIENTMETRICS = DllStructCreate("uint;int;int;int;int;int;byte[60];int;int;byte[60];int;int;byte[60];byte[60];byte[60]")
|
||||
DLLStructSetData($tNONCLIENTMETRICS, 1, DllStructGetSize($tNONCLIENTMETRICS))
|
||||
DLLCall("user32.dll", "int", "SystemParametersInfo", "int", 41, "int", DllStructGetSize($tNONCLIENTMETRICS), "ptr", DllStructGetPtr($tNONCLIENTMETRICS), "int", 0)
|
||||
Local $tLOGFONT = DllStructCreate("long;long;long;long;long;byte;byte;byte;byte;byte;byte;byte;byte;char[32]", DLLStructGetPtr($tNONCLIENTMETRICS, 13))
|
||||
If IsString(DllStructGetData($tLOGFONT, 14)) Then
|
||||
Return DllStructGetData($tLOGFONT, 14)
|
||||
Else
|
||||
Return "Tahoma"
|
||||
EndIf
|
||||
|
||||
EndFunc ;=>_StringSize_DefaultFontName
|
80
AutoLogon Manager/MetroGUI-UDF/_GUIDisable.au3
Executable file
80
AutoLogon Manager/MetroGUI-UDF/_GUIDisable.au3
Executable file
|
@ -0,0 +1,80 @@
|
|||
#include-once
|
||||
|
||||
; #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
|
||||
; #INDEX# =======================================================================================================================
|
||||
; Title .........: _GUIDisable
|
||||
; AutoIt Version : v3.2.2.0 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Creates a dimming effect on the current/selected GUI.
|
||||
; Note ..........:
|
||||
; Author(s) .....: guinness
|
||||
; Remarks .......: Thanks to supersonic for the idea of adjusting the UDF when using Classic themes in Windows Vista+.
|
||||
; ===============================================================================================================================
|
||||
|
||||
; #INCLUDES# ====================================================================================================================
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <WinAPI.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
; #GLOBAL VARIABLES# ============================================================================================================
|
||||
Global Enum $__hGUIDisableHWnd, $__hGUIDisableHWndPrevious, $__iGUIDisableMax
|
||||
Global $__aGUIDisable[$__iGUIDisableMax]
|
||||
|
||||
Func _GUIDisable($hWnd, $iAnimate = Default, $iBrightness = Default, $bColor = 0x000000)
|
||||
Local Const $AW_SLIDE_IN_TOP = 0x00040004, $AW_SLIDE_OUT_TOP = 0x00050008
|
||||
|
||||
If $iAnimate = Default Then
|
||||
$iAnimate = 1
|
||||
EndIf
|
||||
If $iBrightness = Default Then
|
||||
$iBrightness = 5
|
||||
EndIf
|
||||
|
||||
If $hWnd = -1 And $__aGUIDisable[$__hGUIDisableHWnd] = 0 Then
|
||||
Local $iLabel = GUICtrlCreateLabel('', -99, -99, 1, 1)
|
||||
$hWnd = _WinAPI_GetParent(GUICtrlGetHandle($iLabel))
|
||||
If @error Then
|
||||
Return SetError(1, 0 * GUICtrlDelete($iLabel), 0)
|
||||
EndIf
|
||||
GUICtrlDelete($iLabel)
|
||||
EndIf
|
||||
|
||||
If IsHWnd($__aGUIDisable[$__hGUIDisableHWnd]) Then
|
||||
GUIDelete($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = 0
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = 0
|
||||
Else
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = $hWnd
|
||||
|
||||
Local $iLeft = 0, $iTop = 0
|
||||
Local $iStyle = GUIGetStyle($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
Local $sCurrentTheme = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes', 'CurrentTheme')
|
||||
Local $iIsClassicTheme = Number(StringInStr($sCurrentTheme, 'Basic.theme', 2) = 0 And StringInStr($sCurrentTheme, 'Ease of Access Themes', 2) > 0)
|
||||
|
||||
Local $aWinGetPos = WinGetClientSize($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = GUICreate('', $aWinGetPos[0], $aWinGetPos[1], $iLeft + 3, $iTop + 3, $WS_POPUP, $WS_EX_MDICHILD, $__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
GUISetBkColor($bColor, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
WinSetTrans($__aGUIDisable[$__hGUIDisableHWnd], '', Round($iBrightness * (255 / 100)))
|
||||
If not $iAnimate Then
|
||||
GUISetState(@SW_SHOW, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
EndIf
|
||||
GUISetState(@SW_DISABLE, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
EndIf
|
||||
Return $__aGUIDisable[$__hGUIDisableHWnd]
|
||||
EndFunc ;==>_GUIDisable
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
Func __GUIDisable_WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
|
||||
#forceref $hWnd, $iMsg, $iwParam
|
||||
Local $iHeight = _WinAPI_HiWord($ilParam)
|
||||
Local $iWidth = _WinAPI_LoWord($ilParam)
|
||||
If $hWnd = $__aGUIDisable[$__hGUIDisableHWndPrevious] Then
|
||||
Local $iWinGetPos = WinGetPos($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
If @error = 0 Then
|
||||
WinMove($__aGUIDisable[$__hGUIDisableHWnd], '', $iWinGetPos[0], $iWinGetPos[1], $iWidth, $iHeight)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $GUI_RUNDEFMSG
|
||||
EndFunc ;==>__GUIDisable_WM_SIZE
|
13
AutoLogon Manager/Releases/.media
Executable file
13
AutoLogon Manager/Releases/.media
Executable file
|
@ -0,0 +1,13 @@
|
|||
#cs ----------------------------------------------------------------------------
|
||||
|
||||
AutoIt Version : 3.3.14.5
|
||||
Auteur: Tyleo
|
||||
|
||||
Fonction du Script :
|
||||
Modèle de Script AutoIt.
|
||||
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
; Début du script - Ajouter votre code ci-dessous.
|
||||
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
|
||||
|
BIN
AutoLogon Manager/Releases/AutoLogon Manager.exe
Executable file
BIN
AutoLogon Manager/Releases/AutoLogon Manager.exe
Executable file
Binary file not shown.
10
AutoLogon Manager/TyleoAboutMe.au3
Executable file
10
AutoLogon Manager/TyleoAboutMe.au3
Executable file
|
@ -0,0 +1,10 @@
|
|||
|
||||
#include <ButtonConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
Func TyleoAbout($SoftName)
|
||||
_Metro_MsgBox(8,"About / A propos",$SoftName & @CRLF & "Tyleo Softwares @ 2021" & @CRLF & " " & @CRLF & "BUILDING TOMORROW" & @CRLF & " " & @CRLF & "This Software is free and Open Source." & @CRLF & "tyleo.dev@outlook.com",400,15)
|
||||
Return True
|
||||
EndFunc
|
43
AutomatedClockSync/AutomatedClockSync NoWait.au3
Executable file
43
AutomatedClockSync/AutomatedClockSync NoWait.au3
Executable file
|
@ -0,0 +1,43 @@
|
|||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Icon=Sans titre (1).ico
|
||||
#AutoIt3Wrapper_Outfile=..\..\Logiciels\AutomatedClockSync_NW_32-LE.exe
|
||||
#AutoIt3Wrapper_Outfile_x64=..\..\Logiciels\AutomatedClockSync_NW_64.exe
|
||||
#AutoIt3Wrapper_Compile_Both=y
|
||||
#AutoIt3Wrapper_Res_Comment=ACS - Automated Clock Syncer NoWait
|
||||
#AutoIt3Wrapper_Res_Description=ACS - Automated Clock Syncer NoWait
|
||||
#AutoIt3Wrapper_Res_Fileversion=1.0.0.3
|
||||
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
|
||||
#AutoIt3Wrapper_Res_ProductName=ACS
|
||||
#AutoIt3Wrapper_Res_ProductVersion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_CompanyName=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalCopyright=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalTradeMarks=Tyleo Softwares
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#NoTrayIcon
|
||||
#RequireAdmin
|
||||
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include "Extensions.au3"
|
||||
|
||||
GetSoftDetails(@AutoItExe,"DEV")
|
||||
|
||||
; Integrated : NTP_GetTime()
|
||||
; Integrated : System_SetTime()
|
||||
|
||||
|
||||
#cs
|
||||
|
||||
Tyleo Software Project Base v1
|
||||
Created With CNP and DevTools Base Folder
|
||||
|
||||
All Softwares created with this base are Free and Open Sourced.
|
||||
Join our Guilded Server ! https://www.guilded.gg/i/2DRlM7Mp
|
||||
|
||||
#ce
|
||||
|
||||
ResyncTime()
|
||||
|
||||
Func ResyncTime()
|
||||
RunWait("net start w32time", "", @SW_HIDE)
|
||||
RunWait("w32tm /resync", "", @SW_HIDE)
|
||||
EndFunc
|
57
AutomatedClockSync/AutomatedClockSync.au3
Executable file
57
AutomatedClockSync/AutomatedClockSync.au3
Executable file
|
@ -0,0 +1,57 @@
|
|||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Icon=Sans titre (1).ico
|
||||
#AutoIt3Wrapper_Outfile=..\..\Logiciels\AutomatedClockSync_32-LE.exe
|
||||
#AutoIt3Wrapper_Outfile_x64=..\..\Logiciels\AutomatedClockSync_64.exe
|
||||
#AutoIt3Wrapper_Compile_Both=y
|
||||
#AutoIt3Wrapper_Res_Comment=ACS - Automated Clock Syncer
|
||||
#AutoIt3Wrapper_Res_Description=ACS - Automated Clock Syncer
|
||||
#AutoIt3Wrapper_Res_Fileversion=1.0.0.5
|
||||
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
|
||||
#AutoIt3Wrapper_Res_ProductName=ACS
|
||||
#AutoIt3Wrapper_Res_ProductVersion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_CompanyName=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalCopyright=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalTradeMarks=Tyleo Softwares
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#RequireAdmin
|
||||
|
||||
Opt("TrayMenuMode", 3)
|
||||
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include "Extensions.au3"
|
||||
|
||||
GetSoftDetails(@AutoItExe,"DEV")
|
||||
|
||||
; Integrated : NTP_GetTime()
|
||||
; Integrated : System_SetTime()
|
||||
|
||||
|
||||
#cs
|
||||
|
||||
Tyleo Software Project Base v1
|
||||
Created With CNP and DevTools Base Folder
|
||||
|
||||
All Softwares created with this base are Free and Open Sourced.
|
||||
Join our Guilded Server ! https://www.guilded.gg/i/2DRlM7Mp
|
||||
|
||||
#ce
|
||||
|
||||
ResyncTime()
|
||||
|
||||
Global $TrayMenu_Resync = TrayCreateItem("Resync Now")
|
||||
Global $TrayMenu_Exit = TrayCreateItem("Exit")
|
||||
|
||||
While 1
|
||||
$nMSG =GUIGetMsg()
|
||||
Switch $nMSG
|
||||
Case $TrayMenu_Resync
|
||||
ResyncTime()
|
||||
Case $TrayMenu_Exit
|
||||
Exit(0)
|
||||
EndSwitch
|
||||
WEnd
|
||||
|
||||
Func ResyncTime()
|
||||
RunWait("net start w32time", "", @SW_HIDE)
|
||||
RunWait("w32tm /resync", "", @SW_HIDE)
|
||||
EndFunc
|
34
AutomatedClockSync/Extensions.au3
Executable file
34
AutomatedClockSync/Extensions.au3
Executable file
|
@ -0,0 +1,34 @@
|
|||
|
||||
#include <ButtonConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
; Color Accent
|
||||
$theMWTitleBarColor = Hex(RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM", "AccentColor"))
|
||||
$theMWTitleBarColor = StringRight($theMWTitleBarColor, 6)
|
||||
$theMWTitleBarColor = "0x" & StringRight($theMWTitleBarColor, 2) & StringMid($theMWTitleBarColor, 3, 2) & StringLeft($theMWTitleBarColor, 2)
|
||||
|
||||
$CurrentAccent = $theMWTitleBarColor
|
||||
|
||||
; Software Base Details
|
||||
Func GetSoftDetails($Exe,$Stage)
|
||||
Global $CurrentVersion,$CurrentName,$CurrentBaseVersion
|
||||
$CurrentVersion = FileGetVersion($Exe,$FV_FILEVERSION)
|
||||
$CurrentBaseVersion = FileGetVersion($Exe,$FV_PRODUCTVERSION)
|
||||
$CurrentName = FileGetVersion($Exe,$FV_PRODUCTNAME)
|
||||
if $Stage = "BETA" Then
|
||||
$CurrentVersion = $CurrentVersion & "-beta"
|
||||
Elseif $Stage = "RELEASE" or $Stage = "STABLE" Then
|
||||
$CurrentVersion = $CurrentVersion & "-rel"
|
||||
Else
|
||||
$CurrentVersion = $CurrentVersion & "-dev"
|
||||
EndIf
|
||||
Return True
|
||||
EndFunc
|
||||
|
||||
; About Us
|
||||
Func TyleoAbout($SoftName)
|
||||
_Metro_MsgBox(8,"About / A propos",$SoftName & @CRLF & "Tyleo Softwares @ 2021" & @CRLF & " " & @CRLF & "BUILDING TOMORROW" & @CRLF & " " & @CRLF & "This Software is free and Open Source." & @CRLF & "tyleo.dev@outlook.com",400,15)
|
||||
Return True
|
||||
EndFunc
|
3575
AutomatedClockSync/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
3575
AutomatedClockSync/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
File diff suppressed because it is too large
Load diff
259
AutomatedClockSync/MetroGUI-UDF/MetroThemes.au3
Executable file
259
AutomatedClockSync/MetroGUI-UDF/MetroThemes.au3
Executable file
|
@ -0,0 +1,259 @@
|
|||
#include-once
|
||||
#cs ----------------------------------------------------------------------------
|
||||
Author: BB_19
|
||||
Material Themes for MetroGUI UDF
|
||||
If you want to create your own themes, check out flatcolors.net, you can find there many random material/flat colors :)
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
;#Set Default Theme
|
||||
Global $GUIThemeColor = "0x13161C" ; GUI Background Color
|
||||
Global $FontThemeColor = "0xFFFFFF" ; Font Color
|
||||
Global $GUIBorderColor = "0x2D2D2D" ; GUI Border Color
|
||||
Global $ButtonBKColor = "0x00796b" ; Metro Button BacKground Color
|
||||
Global $ButtonTextColor = "0xFFFFFF" ; Metro Button Text Color
|
||||
Global $CB_Radio_Color = "0xFFFFFF" ;Checkbox and Radio Color (Box/Circle)
|
||||
Global $GUI_Theme_Name = "DarkTealV2" ;Theme Name (For internal usage)
|
||||
Global $CB_Radio_Hover_Color = "0xD8D8D8" ; Checkbox and Radio Hover Color (Box/Circle)
|
||||
Global $CB_Radio_CheckMark_Color = "0x1a1a1a" ; Checkbox and Radio checkmark color
|
||||
|
||||
Func _SetTheme($ThemeSelect = "DarkTeal")
|
||||
$GUI_Theme_Name = $ThemeSelect
|
||||
Switch ($ThemeSelect)
|
||||
Case "LightTeal"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTeal"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTealV2"
|
||||
$GUIThemeColor = "0x13161C"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x35635B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkRuby"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x712043"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightTeal"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x336058"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightCyan"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x0D5C63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightBlue"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x1A4F70"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnight"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x3C4D66"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlue"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlueV2"
|
||||
$GUIThemeColor = "0x040D11"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightBlue"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x244E80"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightCyan"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkCyan"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGray"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x3F5863"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGreen"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x2E7D32"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreen"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreenV2"
|
||||
$GUIThemeColor = "0x061319"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightRed"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xc62828"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGray"
|
||||
$GUIThemeColor = "0x1B2428"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x4F6772"
|
||||
$ButtonBKColor = "0x607D8B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkAmber"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xffa000"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightOrange"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xBC5E05"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkOrange"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xC76810"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPurple"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkPurple"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPink"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xE91E63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case Else
|
||||
ConsoleWrite("Metro-UDF-Error: Theme not found, using default theme." & @CRLF)
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
$GUI_Theme_Name = "DarkTealV2"
|
||||
EndSwitch
|
||||
EndFunc ;==>_SetTheme
|
495
AutomatedClockSync/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
495
AutomatedClockSync/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
|
@ -0,0 +1,495 @@
|
|||
;======================================
|
||||
;~ Author : binhnx
|
||||
;~ Created : 2014/10/20
|
||||
;======================================
|
||||
;~ Modified : BB_19
|
||||
;~ Last modified : 2017/10/07
|
||||
;======================================
|
||||
|
||||
#include-once
|
||||
#include <WinAPI.au3>
|
||||
#include <WinAPIShellEx.au3>
|
||||
Local $_cHvr_aData[0]
|
||||
|
||||
|
||||
Local Const $_cHvr_HDLLCOMCTL32 = _WinAPI_LoadLibrary('comctl32.dll')
|
||||
Assert($_cHvr_HDLLCOMCTL32 <> 0, 'This UDF requires comctl32.dll')
|
||||
Local Const $_cHvr_PDEFSUBCLASSPROC = _WinAPI_GetProcAddress($_cHvr_HDLLCOMCTL32, 'DefSubclassProc')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS_DLL = DllCallbackRegister('_cHvr_iProc', 'NONE', 'HWND;UINT;WPARAM;LPARAM;DWORD')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS = DllCallbackGetPtr($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
|
||||
OnAutoItExitRegister("_cHvr_Finalize")
|
||||
Local Const $_cHvr_TSUBCLASSEXE = Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86')
|
||||
Local Const $_cHvr_HEXECUTABLEHEAP = DllCall('kernel32.dll', 'HANDLE', 'HeapCreate', 'DWORD', 0x00040000, 'ULONG_PTR', 0, 'ULONG_PTR', 0)[0]
|
||||
Assert($_cHvr_HEXECUTABLEHEAP <> 0, 'Failed to create executable heap object')
|
||||
Local Const $_cHvr_PSUBCLASSEXE = _cHvr_ExecutableFromStruct(Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86'))
|
||||
|
||||
|
||||
Func _cHvr_Register($idCtrl, $fnHovOff = '', $fnHoverOn = '', $fnClick = '', $fnDblClk = '', $HoverData = 0,$ClickData = 0,$fnRightClick = '')
|
||||
Local $hWnd = GUICtrlGetHandle($idCtrl)
|
||||
If (Not (IsHWnd($hWnd))) Then Return SetError(1, 0, -1)
|
||||
Local $nIndex = _cHvr_GetNewIndex($hWnd)
|
||||
Local $aData[13]
|
||||
$aData[0] = $hWnd;Control Hwnd
|
||||
$aData[1] = $idCtrl; Control handle
|
||||
$aData[3] = $fnHovOff;Hover Off func
|
||||
$aData[4] = $HoverData;Hover Off Data
|
||||
$aData[5] = $fnHoverOn;Hover ON func
|
||||
$aData[6] = $HoverData;Hover ON Data
|
||||
$aData[7] = $fnRightClick;RClick func
|
||||
$aData[8] = $ClickData; click data
|
||||
$aData[9] = $fnClick;Click func
|
||||
$aData[10] = $ClickData; click data
|
||||
$aData[11] = $fnDblClk;DB click func
|
||||
$aData[12] = $ClickData;DB click data
|
||||
$_cHvr_aData[$nIndex] = $aData
|
||||
_WinAPI_SetWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd, $nIndex)
|
||||
Return $nIndex
|
||||
EndFunc ;==>_cHvr_Register
|
||||
|
||||
Func _cHvr_iProc($hWnd, $uMsg, $wParam, $lParam, $cIndex)
|
||||
Switch $uMsg
|
||||
Case 0x0200;Hover
|
||||
GUISetCursor(2, 1)
|
||||
_cHvr_cMove($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0201;Leftclick
|
||||
_cHvr_cDown($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0202
|
||||
_cHvr_cUp($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Return False
|
||||
Case 0x0203;Doubleclick
|
||||
_cHvr_cDblClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0204;Rightclick
|
||||
_cHvr_cRightClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x02A3;Hover leave
|
||||
_cHvr_cLeave($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0082;Deleted
|
||||
_cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
EndSwitch
|
||||
Return True
|
||||
EndFunc ;==>_cHvr_iProc
|
||||
|
||||
Func _cHvr_cDown(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_WinAPI_SetCapture($hWnd)
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndFunc ;==>_cHvr_cDown
|
||||
|
||||
Func _cHvr_cMove(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
Local $bIn = _cHvr_IsInClient($hWnd, $lParam)
|
||||
If Not $aCtrlData[2] Then
|
||||
If $bIn Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
Else
|
||||
If Not $bIn Then
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndIf
|
||||
EndIf
|
||||
ElseIf Not $aCtrlData[2] Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 5)
|
||||
Local $tTME = DllStructCreate('DWORD;DWORD;HWND;DWORD')
|
||||
DllStructSetData($tTME, 1, DllStructGetSize($tTME))
|
||||
DllStructSetData($tTME, 2, 2) ;$TME_LEAVE
|
||||
DllStructSetData($tTME, 3, $hWnd)
|
||||
DllCall('user32.dll', 'BOOL', 'TrackMouseEvent', 'STRUCT*', $tTME)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_cMove
|
||||
|
||||
Func _cHvr_cUp(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
Local $lRet = _WinAPI_DefSubclassProc($hWnd, $uMsg, $wParam, $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
_WinAPI_ReleaseCapture()
|
||||
If _cHvr_IsInClient($hWnd, $lParam) Then
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $lRet
|
||||
EndFunc ;==>_cHvr_cUp
|
||||
|
||||
Func _cHvr_cDblClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 11)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cRightClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 7)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cLeave(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndFunc ;==>_cHvr_cLeave
|
||||
|
||||
Func _cHvr_CallFunc(ByRef $aCtrlData, $iCallType)
|
||||
Call($aCtrlData[$iCallType], $aCtrlData[1], $aCtrlData[$iCallType + 1])
|
||||
EndFunc ;==>_cHvr_CallFunc
|
||||
|
||||
Func _cHvr_ArrayPush(ByRef $aStackArr, Const $vSrc1 = Default, Const $vSrc2 = Default, Const $vSrc3 = Default, Const $vSrc4 = Default, Const $vSrc5 = Default)
|
||||
While (UBound($aStackArr) < ($aStackArr[0] + @NumParams))
|
||||
ReDim $aStackArr[UBound($aStackArr) * 2]
|
||||
WEnd
|
||||
|
||||
If Not ($vSrc1 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc1
|
||||
EndIf
|
||||
If Not ($vSrc2 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc2
|
||||
EndIf
|
||||
If Not ($vSrc3 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc3
|
||||
EndIf
|
||||
If Not ($vSrc4 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc4
|
||||
EndIf
|
||||
If Not ($vSrc5 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc5
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_ArrayPush
|
||||
|
||||
Func _cHvr_IsInClient($hWnd, $lParam)
|
||||
Local $iX = BitShift(BitShift($lParam, -16), 16)
|
||||
Local $iY = BitShift($lParam, 16)
|
||||
Local $aSize = WinGetClientSize($hWnd)
|
||||
Return Not ($iX < 0 Or $iY < 0 Or $iX > $aSize[0] Or $iY > $aSize[1])
|
||||
EndFunc ;==>_cHvr_IsInClient
|
||||
|
||||
Func _cHvr_CSCP_X86() ;Create Subclass Process x86
|
||||
; $hWnd HWND size: 4 ESP+4 EBP+8
|
||||
; $uMsg UINT size: 4 ESP+8 EBP+12
|
||||
; $wParam WPARAM size: 4 ESP+12 EBP+16
|
||||
; $lParam LPARAM size: 4 ESP+16 EBP+20
|
||||
; $uIdSubclass UINT_PTR size: 4 ESP+20 EBP+24
|
||||
; $dwRefData DWORD_PTR size: 4 ESP+24 EBP+28 Total: 24
|
||||
|
||||
; NERVER FORGET ADDING align 1 OR YOU WILL SPEND HOURS TO FIND WHAT CAUSE 0xC0000005 Access Violation
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; Func ; __stdcall
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x55) ;push ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xEC) ;mov ebp, esp
|
||||
|
||||
; Save un-modified params to nv register
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+16]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x5D, 16) ;8b 5d 10
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov esi, DWORD PTR [ebp+12]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x75, 12) ;8b 75 0c
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+20]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x7D, 20) ;8b 7d 14
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x82) ;81 fe 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x2A3) ;81 fe a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;lea eax, DWORD PTR [esi-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x86, -0x200) ;8d 86 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
|
||||
; :WndProcInternal (HWND, UINT, WPARAM, LPARAM, DWORD)
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ecx, DWORD PTR [ebp+28]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x4D, 28) ;8b 4d 1c
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov edx, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x55, 8) ;8b 55 08
|
||||
$sExe &= 'BYTE;' ;push ecx
|
||||
_cHvr_ArrayPush($aOpCode, 0x51) ;51
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x52) ;52
|
||||
|
||||
; Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax, _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;' ;test eax, eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x85, 0xC0) ;85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;jz short Return
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$aOpCode[$nElemOffset[2]] = $nAddrOffset[3] - $nAddrOffset[2]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov eax, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x45, 8)
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x50) ;50
|
||||
|
||||
;Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax,COMCTL32.DefSubclassProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[3]] = $nAddrOffset[4] - $nAddrOffset[3]
|
||||
|
||||
; Restore nv-register
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;pop edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5E) ;pop esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5B) ;pop ebx
|
||||
|
||||
|
||||
; EndFunc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;WORD'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5D) ;pop ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0xC2, 24) ;ret 24
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X86
|
||||
|
||||
Func _cHvr_CSCP_X64() ;Create Subclass Process x64
|
||||
; First four INT and UINT has size = 8 instead of 4 because they are stored in RCX, RDX, R8, R9
|
||||
; $hWnd HWND size: 8 RCX RSP+8
|
||||
; $uMsg UINT size: 8 EDX RSP+16
|
||||
; $wParam WPARAM size: 8 R8 RSP+24
|
||||
; $lParam LPARAM size: 8 R9 RSP+32
|
||||
; $uIdSubclass UINT_PTR size: 8 RSP+40
|
||||
; $dwRefData DWORD_PTR size: 8 RSP+48 Total: 48
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x82) ;81 fa 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x2A3) ;81 fa a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;lea eax, DWORD PTR [rdx-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x82, -0x200) ;8d 82 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
|
||||
; :WndProcInternal (HWND rsp+8, UINT +16, WPARAM +24, LPARAM +32, DWORD +40)
|
||||
; $dwRefData = [ESP+48+48(sub rsp, 48)+8(push rdi)] = [ESP+104]
|
||||
; Save base registers:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+8], rbx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x5C, 0x24, 8) ;48 89 5c 24 08
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+16], rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x6C, 0x24, 16) ;48 89 6c 24 10
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+24], rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x74, 0x24, 24) ;48 89 74 24 18
|
||||
$sExe &= 'BYTE;' ;push rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
; Max sub-routine params = 5 (size = 5*8 = 40), + 8 bytes for return value = 48.
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;sub rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xEC, 48) ;48 83 ec 30
|
||||
; rbx, rbp, rsi now at [ESP+8+56], [ESP+16+56], [ESP+24+56]
|
||||
|
||||
; Save the parameters:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rdi, r9
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF9) ;49 8b f9
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rsi, r8
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF0) ;49 8b f0
|
||||
$sExe &= 'BYTE;BYTE;' ;mov ebx, edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xDA) ;8b da
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rbp, rcx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xE9) ;48 8b e9
|
||||
|
||||
; Prepare additional parameter for internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rax, QWORD PTR [rsp+104]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x44, 0x24, 104) ;48 8b 44 24 68
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+32], Rax]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x44, 0x24, 32) ;48 89 44 24 20
|
||||
|
||||
; Call internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;PTR;' ;mov rax, QWORD PTR _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
;movabs rax, _cHvr_iProc ;48 b8 QWORD_PTR
|
||||
$sExe &= 'BYTE;BYTE;' ;call rax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff d0
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; Restore parameters for DefSubclassProc call
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r9, rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xCF) ;4c 8b cf
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r8, rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xC6) ;4c 8b c6
|
||||
$sExe &= 'BYTE;BYTE;' ;mov edx, ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xD3) ;8b d3
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rcx, rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xCD) ;48 8b cd
|
||||
|
||||
; Restore registers value
|
||||
$aOpCode[$nElemOffset[3]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[3]
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbx, QWORD PTR [rsp+64]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x5C, 0x24, 64) ;48 8b 5c 24 40
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbp, QWORD PTR [rsp+72]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x6C, 0x24, 72) ;48 8b 6c 24 48
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rsi, QWORD PTR [rsp+80]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x74, 0x24, 80) ;48 8b 74 24 50
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;add rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xc4, 48) ;48 83 c4 30
|
||||
$sExe &= 'BYTE;' ;pop rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;5f
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[4] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[2]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[2]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$sExe &= 'BYTE;BYTE;PTR;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xE0)
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[4]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[4]
|
||||
$sExe &= 'BYTE;' ;ret 0
|
||||
_cHvr_ArrayPush($aOpCode, 0xC3)
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X64
|
||||
|
||||
Func _cHvr_PopulateOpcode(ByRef $sExe, ByRef $aOpCode)
|
||||
Local $tExe = DllStructCreate($sExe)
|
||||
Assert(@error = 0, 'DllStrucCreate Failed With Error = ' & @error)
|
||||
For $i = 1 To $aOpCode[0]
|
||||
DllStructSetData($tExe, $i, $aOpCode[$i])
|
||||
Next
|
||||
Return $tExe
|
||||
EndFunc ;==>_cHvr_PopulateOpcode
|
||||
|
||||
Func _cHvr_ExecutableFromStruct($tExe)
|
||||
Local $pExe = DllCall('kernel32.dll', 'PTR', 'HeapAlloc', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 8, 'ULONG_PTR', DllStructGetSize($tExe))[0]
|
||||
Assert($pExe <> 0, 'Allocate memory failed')
|
||||
DllCall("kernel32.dll", "none", "RtlMoveMemory", "PTR", $pExe, "PTR", DllStructGetPtr($tExe), "ULONG_PTR", DllStructGetSize($tExe))
|
||||
Assert(@error = 0, 'Failed to copy memory')
|
||||
Return $pExe
|
||||
EndFunc ;==>_cHvr_ExecutableFromStruct
|
||||
|
||||
Func _cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
_WinAPI_RemoveWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd)
|
||||
Local $aData=$_cHvr_aData[$cIndex]
|
||||
$_cHvr_aData[$cIndex] = 0
|
||||
Call( "_iControlDelete",$aData[1])
|
||||
EndFunc ;==>_cHvr_UnRegisterInternal
|
||||
|
||||
Func _cHvr_Finalize()
|
||||
DllCallbackFree($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
_WinAPI_FreeLibrary($_cHvr_HDLLCOMCTL32)
|
||||
If ($_cHvr_HEXECUTABLEHEAP <> 0) Then
|
||||
If ($_cHvr_PSUBCLASSEXE <> 0) Then
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapFree', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 0, 'PTR', $_cHvr_PSUBCLASSEXE)
|
||||
EndIf
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapDestroy', 'HANDLE', $_cHvr_HEXECUTABLEHEAP)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_Finalize
|
||||
|
||||
Func Assert($bExpression, $sMsg = '', $sScript = @ScriptName, $sScriptPath = @ScriptFullPath, $iLine = @ScriptLineNumber, $iError = @error, $iExtend = @extended)
|
||||
If (Not ($bExpression)) Then
|
||||
MsgBox(BitOR(1, 0x10), 'Assertion Error!', _
|
||||
@CRLF & 'Script' & @TAB & ': ' & $sScript _
|
||||
& @CRLF & 'Path' & @TAB & ': ' & $sScriptPath _
|
||||
& @CRLF & 'Line' & @TAB & ': ' & $iLine _
|
||||
& @CRLF & 'Error' & @TAB & ': ' & ($iError > 0x7FFF ? Hex($iError) : $iError) _
|
||||
& ($iExtend <> 0 ? ' (Extended : ' & ($iExtend > 0x7FFF ? Hex($iExtend) : $iExtend) & ')' : '') _
|
||||
& @CRLF & 'Message' & @TAB & ': ' & $sMsg _
|
||||
& @CRLF & @CRLF & 'OK: Exit Script' & @TAB & 'Cancel: Continue')
|
||||
Exit
|
||||
EndIf
|
||||
EndFunc ;==>Assert
|
||||
|
||||
Func _cHvr_GetNewIndex($hWnd)
|
||||
;Try to assign index from previously deleted control
|
||||
For $i = 0 To UBound($_cHvr_aData) - 1 Step +1
|
||||
If Not IsArray($_cHvr_aData[$i]) Then
|
||||
Return $i
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ReDim $_cHvr_aData[UBound($_cHvr_aData) + 1]
|
||||
Return UBound($_cHvr_aData) - 1
|
||||
EndFunc ;==>_cHvr_GetNewIndex
|
||||
|
||||
Func _WinAPI_GetCapture()
|
||||
Return DllCall("user32.dll", "HWND", "GetCapture")[0]
|
||||
EndFunc ;==>_WinAPI_GetCapture
|
279
AutomatedClockSync/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
279
AutomatedClockSync/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
|
@ -0,0 +1,279 @@
|
|||
#include-once
|
||||
|
||||
; #INDEX# ============================================================================================================
|
||||
; Title .........: _StringSize
|
||||
; AutoIt Version : v3.2.12.1 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; Remarks .......:
|
||||
; Note ..........:
|
||||
; Author(s) .....: Melba23 - thanks to trancexx for the default DC code
|
||||
; ====================================================================================================================
|
||||
|
||||
;#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
|
||||
|
||||
; #CURRENT# ==========================================================================================================
|
||||
; _StringSize: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; ====================================================================================================================
|
||||
|
||||
; #INTERNAL_USE_ONLY#=================================================================================================
|
||||
; _StringSize_Error_Close: Releases DC and deletes font object after error
|
||||
; _StringSize_DefaultFontName: Determines Windows default font
|
||||
; ====================================================================================================================
|
||||
|
||||
; #FUNCTION# =========================================================================================================
|
||||
; Name...........: _StringSize
|
||||
; Description ...: Returns size of rectangle required to display string - maximum permitted width can be chosen
|
||||
; Syntax ........: _StringSize($sText[, $iSize[, $iWeight[, $iAttrib[, $sName[, $iWidth[, $hWnd]]]]]])
|
||||
; Parameters ....: $sText - String to display
|
||||
; $iSize - [optional] Font size in points - (default = 8.5)
|
||||
; $iWeight - [optional] Font weight - (default = 400 = normal)
|
||||
; $iAttrib - [optional] Font attribute (0-Normal (default), 2-Italic, 4-Underline, 8 Strike)
|
||||
; + 1 if tabs are to be expanded before sizing
|
||||
; $sName - [optional] Font name - (default = Tahoma)
|
||||
; $iWidth - [optional] Max width for rectangle - (default = 0 => width of original string)
|
||||
; $hWnd - [optional] GUI in which string will be displayed - (default 0 => normally not required)
|
||||
; Requirement(s) : v3.2.12.1 or higher
|
||||
; Return values .: Success - Returns 4-element array: ($iWidth set // $iWidth not set)
|
||||
; |$array[0] = String reformatted with additonal @CRLF // Original string
|
||||
; |$array[1] = Height of single line in selected font // idem
|
||||
; |$array[2] = Width of rectangle required for reformatted // original string
|
||||
; |$array[3] = Height of rectangle required for reformatted // original string
|
||||
; Failure - Returns 0 and sets @error:
|
||||
; |1 - Incorrect parameter type (@extended = parameter index)
|
||||
; |2 - DLL call error - extended set as follows:
|
||||
; |1 - GetDC failure
|
||||
; |2 - SendMessage failure
|
||||
; |3 - GetDeviceCaps failure
|
||||
; |4 - CreateFont failure
|
||||
; |5 - SelectObject failure
|
||||
; |6 - GetTextExtentPoint32 failure
|
||||
; |3 - Font too large for chosen max width - a word will not fit
|
||||
; Author ........: Melba23 - thanks to trancexx for the default DC code
|
||||
; Modified ......:
|
||||
; Remarks .......: The use of the $hWnd parameter is not normally necessary - it is only required if the UDF does not
|
||||
; return correct dimensions without it.
|
||||
; Related .......:
|
||||
; Link ..........:
|
||||
; Example .......: Yes
|
||||
;=====================================================================================================================
|
||||
Func _StringSize($sText, $iSize = 8.5, $iWeight = 400, $iAttrib = 0, $sName = "", $iMaxWidth = 0, $hWnd = 0)
|
||||
|
||||
; Set parameters passed as Default
|
||||
If $iSize = Default Then $iSize = 8.5
|
||||
If $iWeight = Default Then $iWeight = 400
|
||||
If $iAttrib = Default Then $iAttrib = 0
|
||||
If $sName = "" Or $sName = Default Then $sName = _StringSize_DefaultFontName()
|
||||
|
||||
; Check parameters are correct type
|
||||
If Not IsString($sText) Then Return SetError(1, 1, 0)
|
||||
If Not IsNumber($iSize) Then Return SetError(1, 2, 0)
|
||||
If Not IsInt($iWeight) Then Return SetError(1, 3, 0)
|
||||
If Not IsInt($iAttrib) Then Return SetError(1, 4, 0)
|
||||
If Not IsString($sName) Then Return SetError(1, 5, 0)
|
||||
If Not IsNumber($iMaxWidth) Then Return SetError(1, 6, 0)
|
||||
If Not IsHwnd($hWnd) And $hWnd <> 0 Then Return SetError(1, 7, 0)
|
||||
|
||||
Local $aRet, $hDC, $hFont, $hLabel = 0, $hLabel_Handle
|
||||
|
||||
; Check for tab expansion flag
|
||||
Local $iExpTab = BitAnd($iAttrib, 1)
|
||||
; Remove possible tab expansion flag from font attribute value
|
||||
$iAttrib = BitAnd($iAttrib, BitNot(1))
|
||||
|
||||
; If GUI handle was passed
|
||||
If IsHWnd($hWnd) Then
|
||||
; Create label outside GUI borders
|
||||
$hLabel = GUICtrlCreateLabel("", -10, -10, 10, 10)
|
||||
$hLabel_Handle = GUICtrlGetHandle(-1)
|
||||
GUICtrlSetFont(-1, $iSize, $iWeight, $iAttrib, $sName)
|
||||
; Create DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hLabel_Handle)
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, 1, 0)
|
||||
EndIf
|
||||
$hDC = $aRet[0]
|
||||
$aRet = DllCall("user32.dll", "lparam", "SendMessage", "hwnd", $hLabel_Handle, "int", 0x0031, "wparam", 0, "lparam", 0) ; $WM_GetFont
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, _StringSize_Error_Close(2, $hDC), 0)
|
||||
EndIf
|
||||
$hFont = $aRet[0]
|
||||
Else
|
||||
; Get default DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hWnd)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, 1, 0)
|
||||
$hDC = $aRet[0]
|
||||
; Create required font
|
||||
$aRet = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $hDC, "int", 90) ; $LOGPIXELSY
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(3, $hDC), 0)
|
||||
Local $iInfo = $aRet[0]
|
||||
$aRet = DllCall("gdi32.dll", "handle", "CreateFontW", "int", -$iInfo * $iSize / 72, "int", 0, "int", 0, "int", 0, _
|
||||
"int", $iWeight, "dword", BitAND($iAttrib, 2), "dword", BitAND($iAttrib, 4), "dword", BitAND($iAttrib, 8), "dword", 0, "dword", 0, _
|
||||
"dword", 0, "dword", 5, "dword", 0, "wstr", $sName)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(4, $hDC), 0)
|
||||
$hFont = $aRet[0]
|
||||
EndIf
|
||||
|
||||
; Select font and store previous font
|
||||
$aRet = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hFont)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(5, $hDC, $hFont, $hLabel), 0)
|
||||
Local $hPrevFont = $aRet[0]
|
||||
|
||||
; Declare variables
|
||||
Local $avSize_Info[4], $iLine_Length, $iLine_Height = 0, $iLine_Count = 0, $iLine_Width = 0, $iWrap_Count, $iLast_Word, $sTest_Line
|
||||
; Declare and fill Size structure
|
||||
Local $tSize = DllStructCreate("int X;int Y")
|
||||
DllStructSetData($tSize, "X", 0)
|
||||
DllStructSetData($tSize, "Y", 0)
|
||||
|
||||
; Ensure EoL is @CRLF and break text into lines
|
||||
$sText = StringRegExpReplace($sText, "((?<!\x0d)\x0a|\x0d(?!\x0a))", @CRLF)
|
||||
Local $asLines = StringSplit($sText, @CRLF, 1)
|
||||
|
||||
; For each line
|
||||
For $i = 1 To $asLines[0]
|
||||
; Expand tabs if required
|
||||
If $iExpTab Then
|
||||
$asLines[$i] = StringReplace($asLines[$i], @TAB, " XXXXXXXX")
|
||||
EndIf
|
||||
; Size line
|
||||
$iLine_Length = StringLen($asLines[$i])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$i], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
If DllStructGetData($tSize, "X") > $iLine_Width Then $iLine_Width = DllStructGetData($tSize, "X")
|
||||
If DllStructGetData($tSize, "Y") > $iLine_Height Then $iLine_Height = DllStructGetData($tSize, "Y")
|
||||
Next
|
||||
|
||||
; Check if $iMaxWidth has been both set and exceeded
|
||||
If $iMaxWidth <> 0 And $iLine_Width > $iMaxWidth Then ; Wrapping required
|
||||
; For each Line
|
||||
For $j = 1 To $asLines[0]
|
||||
; Size line unwrapped
|
||||
$iLine_Length = StringLen($asLines[$j])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$j], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
; Check wrap status
|
||||
If DllStructGetData($tSize, "X") < $iMaxWidth - 4 Then
|
||||
; No wrap needed so count line and store
|
||||
$iLine_Count += 1
|
||||
$avSize_Info[0] &= $asLines[$j] & @CRLF
|
||||
Else
|
||||
; Wrap needed so zero counter for wrapped lines
|
||||
$iWrap_Count = 0
|
||||
; Build line to max width
|
||||
While 1
|
||||
; Zero line width
|
||||
$iLine_Width = 0
|
||||
; Initialise pointer for end of word
|
||||
$iLast_Word = 0
|
||||
; Add characters until EOL or maximum width reached
|
||||
For $i = 1 To StringLen($asLines[$j])
|
||||
; Is this just past a word ending?
|
||||
If StringMid($asLines[$j], $i, 1) = " " Then $iLast_Word = $i - 1
|
||||
; Increase line by one character
|
||||
$sTest_Line = StringMid($asLines[$j], 1, $i)
|
||||
; Get line length
|
||||
$iLine_Length = StringLen($sTest_Line)
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $sTest_Line, "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
$iLine_Width = DllStructGetData($tSize, "X")
|
||||
; If too long exit the loop
|
||||
If $iLine_Width >= $iMaxWidth - 4 Then ExitLoop
|
||||
Next
|
||||
; End of the line of text?
|
||||
If $i > StringLen($asLines[$j]) Then
|
||||
; Yes, so add final line to count
|
||||
$iWrap_Count += 1
|
||||
; Store line
|
||||
$avSize_Info[0] &= $sTest_Line & @CRLF
|
||||
ExitLoop
|
||||
Else
|
||||
; No, but add line just completed to count
|
||||
$iWrap_Count += 1
|
||||
; Check at least 1 word completed or return error
|
||||
If $iLast_Word = 0 Then Return SetError(3, _StringSize_Error_Close(0, $hDC, $hFont, $hLabel), 0)
|
||||
; Store line up to end of last word
|
||||
$avSize_Info[0] &= StringLeft($sTest_Line, $iLast_Word) & @CRLF
|
||||
; Strip string to point reached
|
||||
$asLines[$j] = StringTrimLeft($asLines[$j], $iLast_Word)
|
||||
; Trim leading whitespace
|
||||
$asLines[$j] = StringStripWS($asLines[$j], 1)
|
||||
; Repeat with remaining characters in line
|
||||
EndIf
|
||||
WEnd
|
||||
; Add the number of wrapped lines to the count
|
||||
$iLine_Count += $iWrap_Count
|
||||
EndIf
|
||||
Next
|
||||
; Reset any tab expansions
|
||||
If $iExpTab Then
|
||||
$avSize_Info[0] = StringRegExpReplace($avSize_Info[0], "\x20?XXXXXXXX", @TAB)
|
||||
EndIf
|
||||
; Complete return array
|
||||
$avSize_Info[1] = $iLine_Height
|
||||
$avSize_Info[2] = $iMaxWidth
|
||||
; Convert lines to pixels and add drop margin
|
||||
$avSize_Info[3] = ($iLine_Count * $iLine_Height) + 4
|
||||
Else ; No wrapping required
|
||||
; Create return array (add drop margin to height)
|
||||
Local $avSize_Info[4] = [$sText, $iLine_Height, $iLine_Width, ($asLines[0] * $iLine_Height) + 4]
|
||||
EndIf
|
||||
|
||||
; Clear up
|
||||
DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hPrevFont)
|
||||
DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $avSize_Info
|
||||
|
||||
EndFunc ;==>_StringSize
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_Error_Close
|
||||
; Description ...: Releases DC and deleted font object if required after error
|
||||
; Syntax ........: _StringSize_Error_Close ($iExtCode, $hDC, $hGUI)
|
||||
; Parameters ....: $iExtCode - code to return
|
||||
; $hDC, $hGUI - handles as set in _StringSize function
|
||||
; Return value ..: $iExtCode as passed
|
||||
; Author ........: Melba23
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_Error_Close($iExtCode, $hDC = 0, $hFont = 0, $hLabel = 0)
|
||||
|
||||
If $hFont <> 0 Then DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
If $hDC <> 0 Then DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $iExtCode
|
||||
|
||||
EndFunc ;=>_StringSize_Error_Close
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_DefaultFontName
|
||||
; Description ...: Determines Windows default font
|
||||
; Syntax ........: _StringSize_DefaultFontName()
|
||||
; Parameters ....: None
|
||||
; Return values .: Success - Returns name of system default font
|
||||
; Failure - Returns "Tahoma"
|
||||
; Author ........: Melba23, based on some original code by Larrydalooza
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_DefaultFontName()
|
||||
|
||||
; Get default system font data
|
||||
Local $tNONCLIENTMETRICS = DllStructCreate("uint;int;int;int;int;int;byte[60];int;int;byte[60];int;int;byte[60];byte[60];byte[60]")
|
||||
DLLStructSetData($tNONCLIENTMETRICS, 1, DllStructGetSize($tNONCLIENTMETRICS))
|
||||
DLLCall("user32.dll", "int", "SystemParametersInfo", "int", 41, "int", DllStructGetSize($tNONCLIENTMETRICS), "ptr", DllStructGetPtr($tNONCLIENTMETRICS), "int", 0)
|
||||
Local $tLOGFONT = DllStructCreate("long;long;long;long;long;byte;byte;byte;byte;byte;byte;byte;byte;char[32]", DLLStructGetPtr($tNONCLIENTMETRICS, 13))
|
||||
If IsString(DllStructGetData($tLOGFONT, 14)) Then
|
||||
Return DllStructGetData($tLOGFONT, 14)
|
||||
Else
|
||||
Return "Tahoma"
|
||||
EndIf
|
||||
|
||||
EndFunc ;=>_StringSize_DefaultFontName
|
80
AutomatedClockSync/MetroGUI-UDF/_GUIDisable.au3
Executable file
80
AutomatedClockSync/MetroGUI-UDF/_GUIDisable.au3
Executable file
|
@ -0,0 +1,80 @@
|
|||
#include-once
|
||||
|
||||
; #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
|
||||
; #INDEX# =======================================================================================================================
|
||||
; Title .........: _GUIDisable
|
||||
; AutoIt Version : v3.2.2.0 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Creates a dimming effect on the current/selected GUI.
|
||||
; Note ..........:
|
||||
; Author(s) .....: guinness
|
||||
; Remarks .......: Thanks to supersonic for the idea of adjusting the UDF when using Classic themes in Windows Vista+.
|
||||
; ===============================================================================================================================
|
||||
|
||||
; #INCLUDES# ====================================================================================================================
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <WinAPI.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
; #GLOBAL VARIABLES# ============================================================================================================
|
||||
Global Enum $__hGUIDisableHWnd, $__hGUIDisableHWndPrevious, $__iGUIDisableMax
|
||||
Global $__aGUIDisable[$__iGUIDisableMax]
|
||||
|
||||
Func _GUIDisable($hWnd, $iAnimate = Default, $iBrightness = Default, $bColor = 0x000000)
|
||||
Local Const $AW_SLIDE_IN_TOP = 0x00040004, $AW_SLIDE_OUT_TOP = 0x00050008
|
||||
|
||||
If $iAnimate = Default Then
|
||||
$iAnimate = 1
|
||||
EndIf
|
||||
If $iBrightness = Default Then
|
||||
$iBrightness = 5
|
||||
EndIf
|
||||
|
||||
If $hWnd = -1 And $__aGUIDisable[$__hGUIDisableHWnd] = 0 Then
|
||||
Local $iLabel = GUICtrlCreateLabel('', -99, -99, 1, 1)
|
||||
$hWnd = _WinAPI_GetParent(GUICtrlGetHandle($iLabel))
|
||||
If @error Then
|
||||
Return SetError(1, 0 * GUICtrlDelete($iLabel), 0)
|
||||
EndIf
|
||||
GUICtrlDelete($iLabel)
|
||||
EndIf
|
||||
|
||||
If IsHWnd($__aGUIDisable[$__hGUIDisableHWnd]) Then
|
||||
GUIDelete($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = 0
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = 0
|
||||
Else
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = $hWnd
|
||||
|
||||
Local $iLeft = 0, $iTop = 0
|
||||
Local $iStyle = GUIGetStyle($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
Local $sCurrentTheme = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes', 'CurrentTheme')
|
||||
Local $iIsClassicTheme = Number(StringInStr($sCurrentTheme, 'Basic.theme', 2) = 0 And StringInStr($sCurrentTheme, 'Ease of Access Themes', 2) > 0)
|
||||
|
||||
Local $aWinGetPos = WinGetClientSize($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = GUICreate('', $aWinGetPos[0], $aWinGetPos[1], $iLeft + 3, $iTop + 3, $WS_POPUP, $WS_EX_MDICHILD, $__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
GUISetBkColor($bColor, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
WinSetTrans($__aGUIDisable[$__hGUIDisableHWnd], '', Round($iBrightness * (255 / 100)))
|
||||
If not $iAnimate Then
|
||||
GUISetState(@SW_SHOW, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
EndIf
|
||||
GUISetState(@SW_DISABLE, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
EndIf
|
||||
Return $__aGUIDisable[$__hGUIDisableHWnd]
|
||||
EndFunc ;==>_GUIDisable
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
Func __GUIDisable_WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
|
||||
#forceref $hWnd, $iMsg, $iwParam
|
||||
Local $iHeight = _WinAPI_HiWord($ilParam)
|
||||
Local $iWidth = _WinAPI_LoWord($ilParam)
|
||||
If $hWnd = $__aGUIDisable[$__hGUIDisableHWndPrevious] Then
|
||||
Local $iWinGetPos = WinGetPos($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
If @error = 0 Then
|
||||
WinMove($__aGUIDisable[$__hGUIDisableHWnd], '', $iWinGetPos[0], $iWinGetPos[1], $iWidth, $iHeight)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $GUI_RUNDEFMSG
|
||||
EndFunc ;==>__GUIDisable_WM_SIZE
|
229
AutomatedClockSync/Projet.kxf
Executable file
229
AutomatedClockSync/Projet.kxf
Executable file
|
@ -0,0 +1,229 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<object type="TAForm" name="Form1">
|
||||
<properties>
|
||||
<property name="Left" vt="Int16">192</property>
|
||||
<property name="Top" vt="Int16">154</property>
|
||||
<property name="Width" vt="Int16">633</property>
|
||||
<property name="Height" vt="Int16">292</property>
|
||||
<property name="Caption" vt="String">Form1</property>
|
||||
<property name="Color" vt="Ident">clBtnFace</property>
|
||||
<property name="Font.Charset" vt="Ident">DEFAULT_CHARSET</property>
|
||||
<property name="Font.Color" vt="Ident">clWindowText</property>
|
||||
<property name="Font.Height" vt="Int8">-13</property>
|
||||
<property name="Font.Name" vt="String">Segoe UI</property>
|
||||
<property name="Font.Style" vt="Set"/>
|
||||
<property name="Menu" vt="Ident">Menu1</property>
|
||||
<property name="OldCreateOrder" vt="False">False</property>
|
||||
<property name="Visible" vt="True">True</property>
|
||||
<property name="Style" vt="Int32">-1798701056</property>
|
||||
<property name="ExStyle" vt="Int16">256</property>
|
||||
<property name="Version" vt="String">1.04</property>
|
||||
<property name="FormOptOnEvent" vt="False">False</property>
|
||||
<property name="FormOptExpVars" vt="False">False</property>
|
||||
<property name="FormOptPopulate" vt="False">False</property>
|
||||
<property name="FormOptVarsForSet" vt="False">False</property>
|
||||
<property name="FormOptIndentChar" vt="Int8">-1</property>
|
||||
<property name="FormOptIndentCount" vt="Int8">1</property>
|
||||
<property name="FormOptIndentInit" vt="Int8">0</property>
|
||||
<property name="FormOptVarScope" vt="Int8">1</property>
|
||||
<property name="Resizing" vt="Set"/>
|
||||
<property name="PixelsPerInch" vt="Int8">96</property>
|
||||
<property name="TextHeight" vt="Int8">15</property>
|
||||
</properties>
|
||||
<components>
|
||||
<object type="TAMenu" name="Menu1">
|
||||
<properties>
|
||||
<property name="Left" vt="Int16">586</property>
|
||||
<property name="Top" vt="Int8">56</property>
|
||||
<property name="Width" vt="Int8">28</property>
|
||||
<property name="Height" vt="Int8">28</property>
|
||||
<property name="Associate" vt="Ident">Owner</property>
|
||||
<property name="WrappedName" vt="String">MainMenu1</property>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TALabel" name="Label2">
|
||||
<properties>
|
||||
<property name="Left" vt="Int8">5</property>
|
||||
<property name="Top" vt="Int8">9</property>
|
||||
<property name="Width" vt="Int8">70</property>
|
||||
<property name="Height" vt="Int8">23</property>
|
||||
<property name="Caption" vt="String">Utilisateur</property>
|
||||
<property name="Font.Charset" vt="Ident">DEFAULT_CHARSET</property>
|
||||
<property name="Font.Color" vt="Ident">clWindowText</property>
|
||||
<property name="Font.Height" vt="Int8">-16</property>
|
||||
<property name="Font.Name" vt="String">Segoe UI</property>
|
||||
<property name="Font.Style" vt="Set"/>
|
||||
<property name="ParentFont" vt="False">False</property>
|
||||
<property name="TabOrder" vt="Int8">0</property>
|
||||
<property name="HaveVariable" vt="False">False</property>
|
||||
<property name="CtrlStyle" vt="Int32">1342308608</property>
|
||||
<property name="CtrlExStyle" vt="Int8">0</property>
|
||||
<property name="Resizing" vt="Set"/>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TALabel" name="Label3">
|
||||
<properties>
|
||||
<property name="Left" vt="Int8">5</property>
|
||||
<property name="Top" vt="Int8">32</property>
|
||||
<property name="Width" vt="Int8">41</property>
|
||||
<property name="Height" vt="Int8">23</property>
|
||||
<property name="Caption" vt="String">Poste</property>
|
||||
<property name="Font.Charset" vt="Ident">DEFAULT_CHARSET</property>
|
||||
<property name="Font.Color" vt="Ident">clWindowText</property>
|
||||
<property name="Font.Height" vt="Int8">-16</property>
|
||||
<property name="Font.Name" vt="String">Segoe UI</property>
|
||||
<property name="Font.Style" vt="Set"/>
|
||||
<property name="ParentFont" vt="False">False</property>
|
||||
<property name="TabOrder" vt="Int8">1</property>
|
||||
<property name="HaveVariable" vt="False">False</property>
|
||||
<property name="CtrlStyle" vt="Int32">1342308608</property>
|
||||
<property name="CtrlExStyle" vt="Int8">0</property>
|
||||
<property name="Resizing" vt="Set"/>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TALabel" name="Label4">
|
||||
<properties>
|
||||
<property name="Left" vt="Int16">258</property>
|
||||
<property name="Top" vt="Int8">66</property>
|
||||
<property name="Width" vt="Int8">100</property>
|
||||
<property name="Height" vt="Int8">19</property>
|
||||
<property name="Caption" vt="String">Descriptif Rapide</property>
|
||||
<property name="TabOrder" vt="Int8">2</property>
|
||||
<property name="HaveVariable" vt="False">False</property>
|
||||
<property name="CtrlStyle" vt="Int32">1342308609</property>
|
||||
<property name="CtrlExStyle" vt="Int8">0</property>
|
||||
<property name="Resizing" vt="Set"/>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TAInput" name="Input1">
|
||||
<properties>
|
||||
<property name="Left" vt="Int8">81</property>
|
||||
<property name="Top" vt="Int8">7</property>
|
||||
<property name="Width" vt="Int16">418</property>
|
||||
<property name="Height" vt="Int8">23</property>
|
||||
<property name="TabOrder" vt="Int8">3</property>
|
||||
<property name="Text" vt="String">Input1</property>
|
||||
<property name="CtrlStyle" vt="Int32">1342374016</property>
|
||||
<property name="CtrlExStyle" vt="Int16">512</property>
|
||||
<property name="Resizing" vt="Set">DockHeight</property>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TAInput" name="Input2">
|
||||
<properties>
|
||||
<property name="Left" vt="Int16">500</property>
|
||||
<property name="Top" vt="Int8">7</property>
|
||||
<property name="Width" vt="Int8">109</property>
|
||||
<property name="Height" vt="Int8">23</property>
|
||||
<property name="TabOrder" vt="Int8">4</property>
|
||||
<property name="Text" vt="String">Input1</property>
|
||||
<property name="CtrlStyle" vt="Int32">1342374016</property>
|
||||
<property name="CtrlExStyle" vt="Int16">512</property>
|
||||
<property name="Resizing" vt="Set">DockHeight</property>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TAInput" name="Input3">
|
||||
<properties>
|
||||
<property name="Left" vt="Int8">50</property>
|
||||
<property name="Top" vt="Int8">32</property>
|
||||
<property name="Width" vt="Int16">294</property>
|
||||
<property name="Height" vt="Int8">23</property>
|
||||
<property name="TabOrder" vt="Int8">5</property>
|
||||
<property name="Text" vt="String">Input3</property>
|
||||
<property name="CtrlStyle" vt="Int32">1342374016</property>
|
||||
<property name="CtrlExStyle" vt="Int16">512</property>
|
||||
<property name="Resizing" vt="Set">DockHeight</property>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TAEdit" name="Edit1">
|
||||
<properties>
|
||||
<property name="Left" vt="Int8">1</property>
|
||||
<property name="Top" vt="Int8">86</property>
|
||||
<property name="Width" vt="Int16">615</property>
|
||||
<property name="Height" vt="Int16">146</property>
|
||||
<property name="Lines.Strings" vt="List">
|
||||
<list>
|
||||
<li vt="String">Edit1</li>
|
||||
</list>
|
||||
</property>
|
||||
<property name="TabOrder" vt="Int8">6</property>
|
||||
<property name="CtrlStyle" vt="Int32">1345523908</property>
|
||||
<property name="CtrlExStyle" vt="Int16">512</property>
|
||||
<property name="Resizing" vt="Set"/>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TAInput" name="Input4">
|
||||
<properties>
|
||||
<property name="Left" vt="Int16">372</property>
|
||||
<property name="Top" vt="Int8">33</property>
|
||||
<property name="Width" vt="Int16">239</property>
|
||||
<property name="Height" vt="Int8">23</property>
|
||||
<property name="TabOrder" vt="Int8">7</property>
|
||||
<property name="Text" vt="String">Input3</property>
|
||||
<property name="CtrlStyle" vt="Int32">1342374016</property>
|
||||
<property name="CtrlExStyle" vt="Int16">512</property>
|
||||
<property name="Resizing" vt="Set">DockHeight</property>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TALabel" name="Label1">
|
||||
<properties>
|
||||
<property name="Left" vt="Int16">346</property>
|
||||
<property name="Top" vt="Int8">34</property>
|
||||
<property name="Width" vt="Int8">25</property>
|
||||
<property name="Height" vt="Int8">23</property>
|
||||
<property name="Caption" vt="String">Tel.</property>
|
||||
<property name="Font.Charset" vt="Ident">DEFAULT_CHARSET</property>
|
||||
<property name="Font.Color" vt="Ident">clWindowText</property>
|
||||
<property name="Font.Height" vt="Int8">-16</property>
|
||||
<property name="Font.Name" vt="String">Segoe UI</property>
|
||||
<property name="Font.Style" vt="Set"/>
|
||||
<property name="ParentFont" vt="False">False</property>
|
||||
<property name="TabOrder" vt="Int8">8</property>
|
||||
<property name="HaveVariable" vt="False">False</property>
|
||||
<property name="CtrlStyle" vt="Int32">1342308608</property>
|
||||
<property name="CtrlExStyle" vt="Int8">0</property>
|
||||
<property name="Resizing" vt="Set"/>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
<object type="TMainMenu" name="MainMenu1">
|
||||
<properties/>
|
||||
<components>
|
||||
<object type="TAMenuItem" name="MenuItem2">
|
||||
<properties>
|
||||
<property name="Caption" vt="String">MenuItem2</property>
|
||||
</properties>
|
||||
<components>
|
||||
<object type="TAMenuItem" name="MenuItem4">
|
||||
<properties>
|
||||
<property name="Caption" vt="String">MenuItem4</property>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
</components>
|
||||
</object>
|
||||
<object type="TAMenuItem" name="MenuItem1">
|
||||
<properties>
|
||||
<property name="Caption" vt="String">MenuItem1</property>
|
||||
</properties>
|
||||
<components>
|
||||
<object type="TAMenuItem" name="MenuItem3">
|
||||
<properties>
|
||||
<property name="Caption" vt="String">MenuItem3</property>
|
||||
</properties>
|
||||
<components/>
|
||||
</object>
|
||||
</components>
|
||||
</object>
|
||||
</components>
|
||||
</object>
|
||||
</components>
|
||||
</object>
|
1
AutomatedClockSync/README.md
Executable file
1
AutomatedClockSync/README.md
Executable file
|
@ -0,0 +1 @@
|
|||
Logiciel Tyleo Créé avec CNP
|
13
AutomatedClockSync/Releases/.media
Executable file
13
AutomatedClockSync/Releases/.media
Executable file
|
@ -0,0 +1,13 @@
|
|||
#cs ----------------------------------------------------------------------------
|
||||
|
||||
AutoIt Version : 3.3.14.5
|
||||
Auteur: Tyleo
|
||||
|
||||
Fonction du Script :
|
||||
Modèle de Script AutoIt.
|
||||
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
; Début du script - Ajouter votre code ci-dessous.
|
||||
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
|
||||
|
BIN
AutomatedClockSync/Sans titre (1).ico
Executable file
BIN
AutomatedClockSync/Sans titre (1).ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 116 KiB |
2
AutomatedClockSync/TimeSync Failed.log
Executable file
2
AutomatedClockSync/TimeSync Failed.log
Executable file
|
@ -0,0 +1,2 @@
|
|||
2021/12/26 09:54:31
|
||||
UDPRecv failed - @error = -2
|
23
Autostart Manager/Autostart Manager.au3
Executable file
23
Autostart Manager/Autostart Manager.au3
Executable file
|
@ -0,0 +1,23 @@
|
|||
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
|
||||
#AutoIt3Wrapper_Res_ProductVersion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_CompanyName=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalCopyright=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalTradeMarks=Tyleo Softwares
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include "TyleoAboutMe.au3"
|
||||
|
||||
#cs
|
||||
|
||||
Tyleo Software Project Base v1
|
||||
Created With CNP and DevTools Base Folder
|
||||
|
||||
All Softwares created with this base are Free and Open Sourced.
|
||||
Join our Guilded Server ! https://www.guilded.gg/i/2DRlM7Mp
|
||||
|
||||
#ce
|
||||
|
3575
Autostart Manager/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
3575
Autostart Manager/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
File diff suppressed because it is too large
Load diff
259
Autostart Manager/MetroGUI-UDF/MetroThemes.au3
Executable file
259
Autostart Manager/MetroGUI-UDF/MetroThemes.au3
Executable file
|
@ -0,0 +1,259 @@
|
|||
#include-once
|
||||
#cs ----------------------------------------------------------------------------
|
||||
Author: BB_19
|
||||
Material Themes for MetroGUI UDF
|
||||
If you want to create your own themes, check out flatcolors.net, you can find there many random material/flat colors :)
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
;#Set Default Theme
|
||||
Global $GUIThemeColor = "0x13161C" ; GUI Background Color
|
||||
Global $FontThemeColor = "0xFFFFFF" ; Font Color
|
||||
Global $GUIBorderColor = "0x2D2D2D" ; GUI Border Color
|
||||
Global $ButtonBKColor = "0x00796b" ; Metro Button BacKground Color
|
||||
Global $ButtonTextColor = "0xFFFFFF" ; Metro Button Text Color
|
||||
Global $CB_Radio_Color = "0xFFFFFF" ;Checkbox and Radio Color (Box/Circle)
|
||||
Global $GUI_Theme_Name = "DarkTealV2" ;Theme Name (For internal usage)
|
||||
Global $CB_Radio_Hover_Color = "0xD8D8D8" ; Checkbox and Radio Hover Color (Box/Circle)
|
||||
Global $CB_Radio_CheckMark_Color = "0x1a1a1a" ; Checkbox and Radio checkmark color
|
||||
|
||||
Func _SetTheme($ThemeSelect = "DarkTeal")
|
||||
$GUI_Theme_Name = $ThemeSelect
|
||||
Switch ($ThemeSelect)
|
||||
Case "LightTeal"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTeal"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTealV2"
|
||||
$GUIThemeColor = "0x13161C"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x35635B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkRuby"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x712043"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightTeal"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x336058"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightCyan"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x0D5C63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightBlue"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x1A4F70"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnight"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x3C4D66"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlue"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlueV2"
|
||||
$GUIThemeColor = "0x040D11"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightBlue"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x244E80"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightCyan"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkCyan"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGray"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x3F5863"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGreen"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x2E7D32"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreen"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreenV2"
|
||||
$GUIThemeColor = "0x061319"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightRed"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xc62828"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGray"
|
||||
$GUIThemeColor = "0x1B2428"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x4F6772"
|
||||
$ButtonBKColor = "0x607D8B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkAmber"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xffa000"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightOrange"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xBC5E05"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkOrange"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xC76810"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPurple"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkPurple"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPink"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xE91E63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case Else
|
||||
ConsoleWrite("Metro-UDF-Error: Theme not found, using default theme." & @CRLF)
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
$GUI_Theme_Name = "DarkTealV2"
|
||||
EndSwitch
|
||||
EndFunc ;==>_SetTheme
|
495
Autostart Manager/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
495
Autostart Manager/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
|
@ -0,0 +1,495 @@
|
|||
;======================================
|
||||
;~ Author : binhnx
|
||||
;~ Created : 2014/10/20
|
||||
;======================================
|
||||
;~ Modified : BB_19
|
||||
;~ Last modified : 2017/10/07
|
||||
;======================================
|
||||
|
||||
#include-once
|
||||
#include <WinAPI.au3>
|
||||
#include <WinAPIShellEx.au3>
|
||||
Local $_cHvr_aData[0]
|
||||
|
||||
|
||||
Local Const $_cHvr_HDLLCOMCTL32 = _WinAPI_LoadLibrary('comctl32.dll')
|
||||
Assert($_cHvr_HDLLCOMCTL32 <> 0, 'This UDF requires comctl32.dll')
|
||||
Local Const $_cHvr_PDEFSUBCLASSPROC = _WinAPI_GetProcAddress($_cHvr_HDLLCOMCTL32, 'DefSubclassProc')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS_DLL = DllCallbackRegister('_cHvr_iProc', 'NONE', 'HWND;UINT;WPARAM;LPARAM;DWORD')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS = DllCallbackGetPtr($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
|
||||
OnAutoItExitRegister("_cHvr_Finalize")
|
||||
Local Const $_cHvr_TSUBCLASSEXE = Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86')
|
||||
Local Const $_cHvr_HEXECUTABLEHEAP = DllCall('kernel32.dll', 'HANDLE', 'HeapCreate', 'DWORD', 0x00040000, 'ULONG_PTR', 0, 'ULONG_PTR', 0)[0]
|
||||
Assert($_cHvr_HEXECUTABLEHEAP <> 0, 'Failed to create executable heap object')
|
||||
Local Const $_cHvr_PSUBCLASSEXE = _cHvr_ExecutableFromStruct(Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86'))
|
||||
|
||||
|
||||
Func _cHvr_Register($idCtrl, $fnHovOff = '', $fnHoverOn = '', $fnClick = '', $fnDblClk = '', $HoverData = 0,$ClickData = 0,$fnRightClick = '')
|
||||
Local $hWnd = GUICtrlGetHandle($idCtrl)
|
||||
If (Not (IsHWnd($hWnd))) Then Return SetError(1, 0, -1)
|
||||
Local $nIndex = _cHvr_GetNewIndex($hWnd)
|
||||
Local $aData[13]
|
||||
$aData[0] = $hWnd;Control Hwnd
|
||||
$aData[1] = $idCtrl; Control handle
|
||||
$aData[3] = $fnHovOff;Hover Off func
|
||||
$aData[4] = $HoverData;Hover Off Data
|
||||
$aData[5] = $fnHoverOn;Hover ON func
|
||||
$aData[6] = $HoverData;Hover ON Data
|
||||
$aData[7] = $fnRightClick;RClick func
|
||||
$aData[8] = $ClickData; click data
|
||||
$aData[9] = $fnClick;Click func
|
||||
$aData[10] = $ClickData; click data
|
||||
$aData[11] = $fnDblClk;DB click func
|
||||
$aData[12] = $ClickData;DB click data
|
||||
$_cHvr_aData[$nIndex] = $aData
|
||||
_WinAPI_SetWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd, $nIndex)
|
||||
Return $nIndex
|
||||
EndFunc ;==>_cHvr_Register
|
||||
|
||||
Func _cHvr_iProc($hWnd, $uMsg, $wParam, $lParam, $cIndex)
|
||||
Switch $uMsg
|
||||
Case 0x0200;Hover
|
||||
GUISetCursor(2, 1)
|
||||
_cHvr_cMove($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0201;Leftclick
|
||||
_cHvr_cDown($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0202
|
||||
_cHvr_cUp($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Return False
|
||||
Case 0x0203;Doubleclick
|
||||
_cHvr_cDblClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0204;Rightclick
|
||||
_cHvr_cRightClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x02A3;Hover leave
|
||||
_cHvr_cLeave($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0082;Deleted
|
||||
_cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
EndSwitch
|
||||
Return True
|
||||
EndFunc ;==>_cHvr_iProc
|
||||
|
||||
Func _cHvr_cDown(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_WinAPI_SetCapture($hWnd)
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndFunc ;==>_cHvr_cDown
|
||||
|
||||
Func _cHvr_cMove(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
Local $bIn = _cHvr_IsInClient($hWnd, $lParam)
|
||||
If Not $aCtrlData[2] Then
|
||||
If $bIn Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
Else
|
||||
If Not $bIn Then
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndIf
|
||||
EndIf
|
||||
ElseIf Not $aCtrlData[2] Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 5)
|
||||
Local $tTME = DllStructCreate('DWORD;DWORD;HWND;DWORD')
|
||||
DllStructSetData($tTME, 1, DllStructGetSize($tTME))
|
||||
DllStructSetData($tTME, 2, 2) ;$TME_LEAVE
|
||||
DllStructSetData($tTME, 3, $hWnd)
|
||||
DllCall('user32.dll', 'BOOL', 'TrackMouseEvent', 'STRUCT*', $tTME)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_cMove
|
||||
|
||||
Func _cHvr_cUp(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
Local $lRet = _WinAPI_DefSubclassProc($hWnd, $uMsg, $wParam, $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
_WinAPI_ReleaseCapture()
|
||||
If _cHvr_IsInClient($hWnd, $lParam) Then
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $lRet
|
||||
EndFunc ;==>_cHvr_cUp
|
||||
|
||||
Func _cHvr_cDblClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 11)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cRightClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 7)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cLeave(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndFunc ;==>_cHvr_cLeave
|
||||
|
||||
Func _cHvr_CallFunc(ByRef $aCtrlData, $iCallType)
|
||||
Call($aCtrlData[$iCallType], $aCtrlData[1], $aCtrlData[$iCallType + 1])
|
||||
EndFunc ;==>_cHvr_CallFunc
|
||||
|
||||
Func _cHvr_ArrayPush(ByRef $aStackArr, Const $vSrc1 = Default, Const $vSrc2 = Default, Const $vSrc3 = Default, Const $vSrc4 = Default, Const $vSrc5 = Default)
|
||||
While (UBound($aStackArr) < ($aStackArr[0] + @NumParams))
|
||||
ReDim $aStackArr[UBound($aStackArr) * 2]
|
||||
WEnd
|
||||
|
||||
If Not ($vSrc1 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc1
|
||||
EndIf
|
||||
If Not ($vSrc2 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc2
|
||||
EndIf
|
||||
If Not ($vSrc3 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc3
|
||||
EndIf
|
||||
If Not ($vSrc4 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc4
|
||||
EndIf
|
||||
If Not ($vSrc5 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc5
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_ArrayPush
|
||||
|
||||
Func _cHvr_IsInClient($hWnd, $lParam)
|
||||
Local $iX = BitShift(BitShift($lParam, -16), 16)
|
||||
Local $iY = BitShift($lParam, 16)
|
||||
Local $aSize = WinGetClientSize($hWnd)
|
||||
Return Not ($iX < 0 Or $iY < 0 Or $iX > $aSize[0] Or $iY > $aSize[1])
|
||||
EndFunc ;==>_cHvr_IsInClient
|
||||
|
||||
Func _cHvr_CSCP_X86() ;Create Subclass Process x86
|
||||
; $hWnd HWND size: 4 ESP+4 EBP+8
|
||||
; $uMsg UINT size: 4 ESP+8 EBP+12
|
||||
; $wParam WPARAM size: 4 ESP+12 EBP+16
|
||||
; $lParam LPARAM size: 4 ESP+16 EBP+20
|
||||
; $uIdSubclass UINT_PTR size: 4 ESP+20 EBP+24
|
||||
; $dwRefData DWORD_PTR size: 4 ESP+24 EBP+28 Total: 24
|
||||
|
||||
; NERVER FORGET ADDING align 1 OR YOU WILL SPEND HOURS TO FIND WHAT CAUSE 0xC0000005 Access Violation
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; Func ; __stdcall
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x55) ;push ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xEC) ;mov ebp, esp
|
||||
|
||||
; Save un-modified params to nv register
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+16]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x5D, 16) ;8b 5d 10
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov esi, DWORD PTR [ebp+12]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x75, 12) ;8b 75 0c
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+20]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x7D, 20) ;8b 7d 14
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x82) ;81 fe 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x2A3) ;81 fe a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;lea eax, DWORD PTR [esi-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x86, -0x200) ;8d 86 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
|
||||
; :WndProcInternal (HWND, UINT, WPARAM, LPARAM, DWORD)
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ecx, DWORD PTR [ebp+28]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x4D, 28) ;8b 4d 1c
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov edx, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x55, 8) ;8b 55 08
|
||||
$sExe &= 'BYTE;' ;push ecx
|
||||
_cHvr_ArrayPush($aOpCode, 0x51) ;51
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x52) ;52
|
||||
|
||||
; Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax, _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;' ;test eax, eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x85, 0xC0) ;85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;jz short Return
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$aOpCode[$nElemOffset[2]] = $nAddrOffset[3] - $nAddrOffset[2]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov eax, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x45, 8)
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x50) ;50
|
||||
|
||||
;Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax,COMCTL32.DefSubclassProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[3]] = $nAddrOffset[4] - $nAddrOffset[3]
|
||||
|
||||
; Restore nv-register
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;pop edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5E) ;pop esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5B) ;pop ebx
|
||||
|
||||
|
||||
; EndFunc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;WORD'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5D) ;pop ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0xC2, 24) ;ret 24
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X86
|
||||
|
||||
Func _cHvr_CSCP_X64() ;Create Subclass Process x64
|
||||
; First four INT and UINT has size = 8 instead of 4 because they are stored in RCX, RDX, R8, R9
|
||||
; $hWnd HWND size: 8 RCX RSP+8
|
||||
; $uMsg UINT size: 8 EDX RSP+16
|
||||
; $wParam WPARAM size: 8 R8 RSP+24
|
||||
; $lParam LPARAM size: 8 R9 RSP+32
|
||||
; $uIdSubclass UINT_PTR size: 8 RSP+40
|
||||
; $dwRefData DWORD_PTR size: 8 RSP+48 Total: 48
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x82) ;81 fa 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x2A3) ;81 fa a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;lea eax, DWORD PTR [rdx-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x82, -0x200) ;8d 82 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
|
||||
; :WndProcInternal (HWND rsp+8, UINT +16, WPARAM +24, LPARAM +32, DWORD +40)
|
||||
; $dwRefData = [ESP+48+48(sub rsp, 48)+8(push rdi)] = [ESP+104]
|
||||
; Save base registers:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+8], rbx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x5C, 0x24, 8) ;48 89 5c 24 08
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+16], rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x6C, 0x24, 16) ;48 89 6c 24 10
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+24], rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x74, 0x24, 24) ;48 89 74 24 18
|
||||
$sExe &= 'BYTE;' ;push rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
; Max sub-routine params = 5 (size = 5*8 = 40), + 8 bytes for return value = 48.
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;sub rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xEC, 48) ;48 83 ec 30
|
||||
; rbx, rbp, rsi now at [ESP+8+56], [ESP+16+56], [ESP+24+56]
|
||||
|
||||
; Save the parameters:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rdi, r9
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF9) ;49 8b f9
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rsi, r8
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF0) ;49 8b f0
|
||||
$sExe &= 'BYTE;BYTE;' ;mov ebx, edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xDA) ;8b da
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rbp, rcx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xE9) ;48 8b e9
|
||||
|
||||
; Prepare additional parameter for internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rax, QWORD PTR [rsp+104]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x44, 0x24, 104) ;48 8b 44 24 68
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+32], Rax]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x44, 0x24, 32) ;48 89 44 24 20
|
||||
|
||||
; Call internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;PTR;' ;mov rax, QWORD PTR _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
;movabs rax, _cHvr_iProc ;48 b8 QWORD_PTR
|
||||
$sExe &= 'BYTE;BYTE;' ;call rax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff d0
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; Restore parameters for DefSubclassProc call
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r9, rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xCF) ;4c 8b cf
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r8, rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xC6) ;4c 8b c6
|
||||
$sExe &= 'BYTE;BYTE;' ;mov edx, ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xD3) ;8b d3
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rcx, rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xCD) ;48 8b cd
|
||||
|
||||
; Restore registers value
|
||||
$aOpCode[$nElemOffset[3]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[3]
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbx, QWORD PTR [rsp+64]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x5C, 0x24, 64) ;48 8b 5c 24 40
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbp, QWORD PTR [rsp+72]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x6C, 0x24, 72) ;48 8b 6c 24 48
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rsi, QWORD PTR [rsp+80]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x74, 0x24, 80) ;48 8b 74 24 50
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;add rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xc4, 48) ;48 83 c4 30
|
||||
$sExe &= 'BYTE;' ;pop rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;5f
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[4] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[2]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[2]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$sExe &= 'BYTE;BYTE;PTR;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xE0)
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[4]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[4]
|
||||
$sExe &= 'BYTE;' ;ret 0
|
||||
_cHvr_ArrayPush($aOpCode, 0xC3)
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X64
|
||||
|
||||
Func _cHvr_PopulateOpcode(ByRef $sExe, ByRef $aOpCode)
|
||||
Local $tExe = DllStructCreate($sExe)
|
||||
Assert(@error = 0, 'DllStrucCreate Failed With Error = ' & @error)
|
||||
For $i = 1 To $aOpCode[0]
|
||||
DllStructSetData($tExe, $i, $aOpCode[$i])
|
||||
Next
|
||||
Return $tExe
|
||||
EndFunc ;==>_cHvr_PopulateOpcode
|
||||
|
||||
Func _cHvr_ExecutableFromStruct($tExe)
|
||||
Local $pExe = DllCall('kernel32.dll', 'PTR', 'HeapAlloc', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 8, 'ULONG_PTR', DllStructGetSize($tExe))[0]
|
||||
Assert($pExe <> 0, 'Allocate memory failed')
|
||||
DllCall("kernel32.dll", "none", "RtlMoveMemory", "PTR", $pExe, "PTR", DllStructGetPtr($tExe), "ULONG_PTR", DllStructGetSize($tExe))
|
||||
Assert(@error = 0, 'Failed to copy memory')
|
||||
Return $pExe
|
||||
EndFunc ;==>_cHvr_ExecutableFromStruct
|
||||
|
||||
Func _cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
_WinAPI_RemoveWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd)
|
||||
Local $aData=$_cHvr_aData[$cIndex]
|
||||
$_cHvr_aData[$cIndex] = 0
|
||||
Call( "_iControlDelete",$aData[1])
|
||||
EndFunc ;==>_cHvr_UnRegisterInternal
|
||||
|
||||
Func _cHvr_Finalize()
|
||||
DllCallbackFree($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
_WinAPI_FreeLibrary($_cHvr_HDLLCOMCTL32)
|
||||
If ($_cHvr_HEXECUTABLEHEAP <> 0) Then
|
||||
If ($_cHvr_PSUBCLASSEXE <> 0) Then
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapFree', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 0, 'PTR', $_cHvr_PSUBCLASSEXE)
|
||||
EndIf
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapDestroy', 'HANDLE', $_cHvr_HEXECUTABLEHEAP)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_Finalize
|
||||
|
||||
Func Assert($bExpression, $sMsg = '', $sScript = @ScriptName, $sScriptPath = @ScriptFullPath, $iLine = @ScriptLineNumber, $iError = @error, $iExtend = @extended)
|
||||
If (Not ($bExpression)) Then
|
||||
MsgBox(BitOR(1, 0x10), 'Assertion Error!', _
|
||||
@CRLF & 'Script' & @TAB & ': ' & $sScript _
|
||||
& @CRLF & 'Path' & @TAB & ': ' & $sScriptPath _
|
||||
& @CRLF & 'Line' & @TAB & ': ' & $iLine _
|
||||
& @CRLF & 'Error' & @TAB & ': ' & ($iError > 0x7FFF ? Hex($iError) : $iError) _
|
||||
& ($iExtend <> 0 ? ' (Extended : ' & ($iExtend > 0x7FFF ? Hex($iExtend) : $iExtend) & ')' : '') _
|
||||
& @CRLF & 'Message' & @TAB & ': ' & $sMsg _
|
||||
& @CRLF & @CRLF & 'OK: Exit Script' & @TAB & 'Cancel: Continue')
|
||||
Exit
|
||||
EndIf
|
||||
EndFunc ;==>Assert
|
||||
|
||||
Func _cHvr_GetNewIndex($hWnd)
|
||||
;Try to assign index from previously deleted control
|
||||
For $i = 0 To UBound($_cHvr_aData) - 1 Step +1
|
||||
If Not IsArray($_cHvr_aData[$i]) Then
|
||||
Return $i
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ReDim $_cHvr_aData[UBound($_cHvr_aData) + 1]
|
||||
Return UBound($_cHvr_aData) - 1
|
||||
EndFunc ;==>_cHvr_GetNewIndex
|
||||
|
||||
Func _WinAPI_GetCapture()
|
||||
Return DllCall("user32.dll", "HWND", "GetCapture")[0]
|
||||
EndFunc ;==>_WinAPI_GetCapture
|
279
Autostart Manager/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
279
Autostart Manager/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
|
@ -0,0 +1,279 @@
|
|||
#include-once
|
||||
|
||||
; #INDEX# ============================================================================================================
|
||||
; Title .........: _StringSize
|
||||
; AutoIt Version : v3.2.12.1 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; Remarks .......:
|
||||
; Note ..........:
|
||||
; Author(s) .....: Melba23 - thanks to trancexx for the default DC code
|
||||
; ====================================================================================================================
|
||||
|
||||
;#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
|
||||
|
||||
; #CURRENT# ==========================================================================================================
|
||||
; _StringSize: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; ====================================================================================================================
|
||||
|
||||
; #INTERNAL_USE_ONLY#=================================================================================================
|
||||
; _StringSize_Error_Close: Releases DC and deletes font object after error
|
||||
; _StringSize_DefaultFontName: Determines Windows default font
|
||||
; ====================================================================================================================
|
||||
|
||||
; #FUNCTION# =========================================================================================================
|
||||
; Name...........: _StringSize
|
||||
; Description ...: Returns size of rectangle required to display string - maximum permitted width can be chosen
|
||||
; Syntax ........: _StringSize($sText[, $iSize[, $iWeight[, $iAttrib[, $sName[, $iWidth[, $hWnd]]]]]])
|
||||
; Parameters ....: $sText - String to display
|
||||
; $iSize - [optional] Font size in points - (default = 8.5)
|
||||
; $iWeight - [optional] Font weight - (default = 400 = normal)
|
||||
; $iAttrib - [optional] Font attribute (0-Normal (default), 2-Italic, 4-Underline, 8 Strike)
|
||||
; + 1 if tabs are to be expanded before sizing
|
||||
; $sName - [optional] Font name - (default = Tahoma)
|
||||
; $iWidth - [optional] Max width for rectangle - (default = 0 => width of original string)
|
||||
; $hWnd - [optional] GUI in which string will be displayed - (default 0 => normally not required)
|
||||
; Requirement(s) : v3.2.12.1 or higher
|
||||
; Return values .: Success - Returns 4-element array: ($iWidth set // $iWidth not set)
|
||||
; |$array[0] = String reformatted with additonal @CRLF // Original string
|
||||
; |$array[1] = Height of single line in selected font // idem
|
||||
; |$array[2] = Width of rectangle required for reformatted // original string
|
||||
; |$array[3] = Height of rectangle required for reformatted // original string
|
||||
; Failure - Returns 0 and sets @error:
|
||||
; |1 - Incorrect parameter type (@extended = parameter index)
|
||||
; |2 - DLL call error - extended set as follows:
|
||||
; |1 - GetDC failure
|
||||
; |2 - SendMessage failure
|
||||
; |3 - GetDeviceCaps failure
|
||||
; |4 - CreateFont failure
|
||||
; |5 - SelectObject failure
|
||||
; |6 - GetTextExtentPoint32 failure
|
||||
; |3 - Font too large for chosen max width - a word will not fit
|
||||
; Author ........: Melba23 - thanks to trancexx for the default DC code
|
||||
; Modified ......:
|
||||
; Remarks .......: The use of the $hWnd parameter is not normally necessary - it is only required if the UDF does not
|
||||
; return correct dimensions without it.
|
||||
; Related .......:
|
||||
; Link ..........:
|
||||
; Example .......: Yes
|
||||
;=====================================================================================================================
|
||||
Func _StringSize($sText, $iSize = 8.5, $iWeight = 400, $iAttrib = 0, $sName = "", $iMaxWidth = 0, $hWnd = 0)
|
||||
|
||||
; Set parameters passed as Default
|
||||
If $iSize = Default Then $iSize = 8.5
|
||||
If $iWeight = Default Then $iWeight = 400
|
||||
If $iAttrib = Default Then $iAttrib = 0
|
||||
If $sName = "" Or $sName = Default Then $sName = _StringSize_DefaultFontName()
|
||||
|
||||
; Check parameters are correct type
|
||||
If Not IsString($sText) Then Return SetError(1, 1, 0)
|
||||
If Not IsNumber($iSize) Then Return SetError(1, 2, 0)
|
||||
If Not IsInt($iWeight) Then Return SetError(1, 3, 0)
|
||||
If Not IsInt($iAttrib) Then Return SetError(1, 4, 0)
|
||||
If Not IsString($sName) Then Return SetError(1, 5, 0)
|
||||
If Not IsNumber($iMaxWidth) Then Return SetError(1, 6, 0)
|
||||
If Not IsHwnd($hWnd) And $hWnd <> 0 Then Return SetError(1, 7, 0)
|
||||
|
||||
Local $aRet, $hDC, $hFont, $hLabel = 0, $hLabel_Handle
|
||||
|
||||
; Check for tab expansion flag
|
||||
Local $iExpTab = BitAnd($iAttrib, 1)
|
||||
; Remove possible tab expansion flag from font attribute value
|
||||
$iAttrib = BitAnd($iAttrib, BitNot(1))
|
||||
|
||||
; If GUI handle was passed
|
||||
If IsHWnd($hWnd) Then
|
||||
; Create label outside GUI borders
|
||||
$hLabel = GUICtrlCreateLabel("", -10, -10, 10, 10)
|
||||
$hLabel_Handle = GUICtrlGetHandle(-1)
|
||||
GUICtrlSetFont(-1, $iSize, $iWeight, $iAttrib, $sName)
|
||||
; Create DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hLabel_Handle)
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, 1, 0)
|
||||
EndIf
|
||||
$hDC = $aRet[0]
|
||||
$aRet = DllCall("user32.dll", "lparam", "SendMessage", "hwnd", $hLabel_Handle, "int", 0x0031, "wparam", 0, "lparam", 0) ; $WM_GetFont
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, _StringSize_Error_Close(2, $hDC), 0)
|
||||
EndIf
|
||||
$hFont = $aRet[0]
|
||||
Else
|
||||
; Get default DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hWnd)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, 1, 0)
|
||||
$hDC = $aRet[0]
|
||||
; Create required font
|
||||
$aRet = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $hDC, "int", 90) ; $LOGPIXELSY
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(3, $hDC), 0)
|
||||
Local $iInfo = $aRet[0]
|
||||
$aRet = DllCall("gdi32.dll", "handle", "CreateFontW", "int", -$iInfo * $iSize / 72, "int", 0, "int", 0, "int", 0, _
|
||||
"int", $iWeight, "dword", BitAND($iAttrib, 2), "dword", BitAND($iAttrib, 4), "dword", BitAND($iAttrib, 8), "dword", 0, "dword", 0, _
|
||||
"dword", 0, "dword", 5, "dword", 0, "wstr", $sName)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(4, $hDC), 0)
|
||||
$hFont = $aRet[0]
|
||||
EndIf
|
||||
|
||||
; Select font and store previous font
|
||||
$aRet = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hFont)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(5, $hDC, $hFont, $hLabel), 0)
|
||||
Local $hPrevFont = $aRet[0]
|
||||
|
||||
; Declare variables
|
||||
Local $avSize_Info[4], $iLine_Length, $iLine_Height = 0, $iLine_Count = 0, $iLine_Width = 0, $iWrap_Count, $iLast_Word, $sTest_Line
|
||||
; Declare and fill Size structure
|
||||
Local $tSize = DllStructCreate("int X;int Y")
|
||||
DllStructSetData($tSize, "X", 0)
|
||||
DllStructSetData($tSize, "Y", 0)
|
||||
|
||||
; Ensure EoL is @CRLF and break text into lines
|
||||
$sText = StringRegExpReplace($sText, "((?<!\x0d)\x0a|\x0d(?!\x0a))", @CRLF)
|
||||
Local $asLines = StringSplit($sText, @CRLF, 1)
|
||||
|
||||
; For each line
|
||||
For $i = 1 To $asLines[0]
|
||||
; Expand tabs if required
|
||||
If $iExpTab Then
|
||||
$asLines[$i] = StringReplace($asLines[$i], @TAB, " XXXXXXXX")
|
||||
EndIf
|
||||
; Size line
|
||||
$iLine_Length = StringLen($asLines[$i])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$i], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
If DllStructGetData($tSize, "X") > $iLine_Width Then $iLine_Width = DllStructGetData($tSize, "X")
|
||||
If DllStructGetData($tSize, "Y") > $iLine_Height Then $iLine_Height = DllStructGetData($tSize, "Y")
|
||||
Next
|
||||
|
||||
; Check if $iMaxWidth has been both set and exceeded
|
||||
If $iMaxWidth <> 0 And $iLine_Width > $iMaxWidth Then ; Wrapping required
|
||||
; For each Line
|
||||
For $j = 1 To $asLines[0]
|
||||
; Size line unwrapped
|
||||
$iLine_Length = StringLen($asLines[$j])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$j], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
; Check wrap status
|
||||
If DllStructGetData($tSize, "X") < $iMaxWidth - 4 Then
|
||||
; No wrap needed so count line and store
|
||||
$iLine_Count += 1
|
||||
$avSize_Info[0] &= $asLines[$j] & @CRLF
|
||||
Else
|
||||
; Wrap needed so zero counter for wrapped lines
|
||||
$iWrap_Count = 0
|
||||
; Build line to max width
|
||||
While 1
|
||||
; Zero line width
|
||||
$iLine_Width = 0
|
||||
; Initialise pointer for end of word
|
||||
$iLast_Word = 0
|
||||
; Add characters until EOL or maximum width reached
|
||||
For $i = 1 To StringLen($asLines[$j])
|
||||
; Is this just past a word ending?
|
||||
If StringMid($asLines[$j], $i, 1) = " " Then $iLast_Word = $i - 1
|
||||
; Increase line by one character
|
||||
$sTest_Line = StringMid($asLines[$j], 1, $i)
|
||||
; Get line length
|
||||
$iLine_Length = StringLen($sTest_Line)
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $sTest_Line, "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
$iLine_Width = DllStructGetData($tSize, "X")
|
||||
; If too long exit the loop
|
||||
If $iLine_Width >= $iMaxWidth - 4 Then ExitLoop
|
||||
Next
|
||||
; End of the line of text?
|
||||
If $i > StringLen($asLines[$j]) Then
|
||||
; Yes, so add final line to count
|
||||
$iWrap_Count += 1
|
||||
; Store line
|
||||
$avSize_Info[0] &= $sTest_Line & @CRLF
|
||||
ExitLoop
|
||||
Else
|
||||
; No, but add line just completed to count
|
||||
$iWrap_Count += 1
|
||||
; Check at least 1 word completed or return error
|
||||
If $iLast_Word = 0 Then Return SetError(3, _StringSize_Error_Close(0, $hDC, $hFont, $hLabel), 0)
|
||||
; Store line up to end of last word
|
||||
$avSize_Info[0] &= StringLeft($sTest_Line, $iLast_Word) & @CRLF
|
||||
; Strip string to point reached
|
||||
$asLines[$j] = StringTrimLeft($asLines[$j], $iLast_Word)
|
||||
; Trim leading whitespace
|
||||
$asLines[$j] = StringStripWS($asLines[$j], 1)
|
||||
; Repeat with remaining characters in line
|
||||
EndIf
|
||||
WEnd
|
||||
; Add the number of wrapped lines to the count
|
||||
$iLine_Count += $iWrap_Count
|
||||
EndIf
|
||||
Next
|
||||
; Reset any tab expansions
|
||||
If $iExpTab Then
|
||||
$avSize_Info[0] = StringRegExpReplace($avSize_Info[0], "\x20?XXXXXXXX", @TAB)
|
||||
EndIf
|
||||
; Complete return array
|
||||
$avSize_Info[1] = $iLine_Height
|
||||
$avSize_Info[2] = $iMaxWidth
|
||||
; Convert lines to pixels and add drop margin
|
||||
$avSize_Info[3] = ($iLine_Count * $iLine_Height) + 4
|
||||
Else ; No wrapping required
|
||||
; Create return array (add drop margin to height)
|
||||
Local $avSize_Info[4] = [$sText, $iLine_Height, $iLine_Width, ($asLines[0] * $iLine_Height) + 4]
|
||||
EndIf
|
||||
|
||||
; Clear up
|
||||
DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hPrevFont)
|
||||
DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $avSize_Info
|
||||
|
||||
EndFunc ;==>_StringSize
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_Error_Close
|
||||
; Description ...: Releases DC and deleted font object if required after error
|
||||
; Syntax ........: _StringSize_Error_Close ($iExtCode, $hDC, $hGUI)
|
||||
; Parameters ....: $iExtCode - code to return
|
||||
; $hDC, $hGUI - handles as set in _StringSize function
|
||||
; Return value ..: $iExtCode as passed
|
||||
; Author ........: Melba23
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_Error_Close($iExtCode, $hDC = 0, $hFont = 0, $hLabel = 0)
|
||||
|
||||
If $hFont <> 0 Then DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
If $hDC <> 0 Then DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $iExtCode
|
||||
|
||||
EndFunc ;=>_StringSize_Error_Close
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_DefaultFontName
|
||||
; Description ...: Determines Windows default font
|
||||
; Syntax ........: _StringSize_DefaultFontName()
|
||||
; Parameters ....: None
|
||||
; Return values .: Success - Returns name of system default font
|
||||
; Failure - Returns "Tahoma"
|
||||
; Author ........: Melba23, based on some original code by Larrydalooza
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_DefaultFontName()
|
||||
|
||||
; Get default system font data
|
||||
Local $tNONCLIENTMETRICS = DllStructCreate("uint;int;int;int;int;int;byte[60];int;int;byte[60];int;int;byte[60];byte[60];byte[60]")
|
||||
DLLStructSetData($tNONCLIENTMETRICS, 1, DllStructGetSize($tNONCLIENTMETRICS))
|
||||
DLLCall("user32.dll", "int", "SystemParametersInfo", "int", 41, "int", DllStructGetSize($tNONCLIENTMETRICS), "ptr", DllStructGetPtr($tNONCLIENTMETRICS), "int", 0)
|
||||
Local $tLOGFONT = DllStructCreate("long;long;long;long;long;byte;byte;byte;byte;byte;byte;byte;byte;char[32]", DLLStructGetPtr($tNONCLIENTMETRICS, 13))
|
||||
If IsString(DllStructGetData($tLOGFONT, 14)) Then
|
||||
Return DllStructGetData($tLOGFONT, 14)
|
||||
Else
|
||||
Return "Tahoma"
|
||||
EndIf
|
||||
|
||||
EndFunc ;=>_StringSize_DefaultFontName
|
80
Autostart Manager/MetroGUI-UDF/_GUIDisable.au3
Executable file
80
Autostart Manager/MetroGUI-UDF/_GUIDisable.au3
Executable file
|
@ -0,0 +1,80 @@
|
|||
#include-once
|
||||
|
||||
; #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
|
||||
; #INDEX# =======================================================================================================================
|
||||
; Title .........: _GUIDisable
|
||||
; AutoIt Version : v3.2.2.0 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Creates a dimming effect on the current/selected GUI.
|
||||
; Note ..........:
|
||||
; Author(s) .....: guinness
|
||||
; Remarks .......: Thanks to supersonic for the idea of adjusting the UDF when using Classic themes in Windows Vista+.
|
||||
; ===============================================================================================================================
|
||||
|
||||
; #INCLUDES# ====================================================================================================================
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <WinAPI.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
; #GLOBAL VARIABLES# ============================================================================================================
|
||||
Global Enum $__hGUIDisableHWnd, $__hGUIDisableHWndPrevious, $__iGUIDisableMax
|
||||
Global $__aGUIDisable[$__iGUIDisableMax]
|
||||
|
||||
Func _GUIDisable($hWnd, $iAnimate = Default, $iBrightness = Default, $bColor = 0x000000)
|
||||
Local Const $AW_SLIDE_IN_TOP = 0x00040004, $AW_SLIDE_OUT_TOP = 0x00050008
|
||||
|
||||
If $iAnimate = Default Then
|
||||
$iAnimate = 1
|
||||
EndIf
|
||||
If $iBrightness = Default Then
|
||||
$iBrightness = 5
|
||||
EndIf
|
||||
|
||||
If $hWnd = -1 And $__aGUIDisable[$__hGUIDisableHWnd] = 0 Then
|
||||
Local $iLabel = GUICtrlCreateLabel('', -99, -99, 1, 1)
|
||||
$hWnd = _WinAPI_GetParent(GUICtrlGetHandle($iLabel))
|
||||
If @error Then
|
||||
Return SetError(1, 0 * GUICtrlDelete($iLabel), 0)
|
||||
EndIf
|
||||
GUICtrlDelete($iLabel)
|
||||
EndIf
|
||||
|
||||
If IsHWnd($__aGUIDisable[$__hGUIDisableHWnd]) Then
|
||||
GUIDelete($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = 0
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = 0
|
||||
Else
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = $hWnd
|
||||
|
||||
Local $iLeft = 0, $iTop = 0
|
||||
Local $iStyle = GUIGetStyle($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
Local $sCurrentTheme = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes', 'CurrentTheme')
|
||||
Local $iIsClassicTheme = Number(StringInStr($sCurrentTheme, 'Basic.theme', 2) = 0 And StringInStr($sCurrentTheme, 'Ease of Access Themes', 2) > 0)
|
||||
|
||||
Local $aWinGetPos = WinGetClientSize($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = GUICreate('', $aWinGetPos[0], $aWinGetPos[1], $iLeft + 3, $iTop + 3, $WS_POPUP, $WS_EX_MDICHILD, $__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
GUISetBkColor($bColor, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
WinSetTrans($__aGUIDisable[$__hGUIDisableHWnd], '', Round($iBrightness * (255 / 100)))
|
||||
If not $iAnimate Then
|
||||
GUISetState(@SW_SHOW, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
EndIf
|
||||
GUISetState(@SW_DISABLE, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
EndIf
|
||||
Return $__aGUIDisable[$__hGUIDisableHWnd]
|
||||
EndFunc ;==>_GUIDisable
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
Func __GUIDisable_WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
|
||||
#forceref $hWnd, $iMsg, $iwParam
|
||||
Local $iHeight = _WinAPI_HiWord($ilParam)
|
||||
Local $iWidth = _WinAPI_LoWord($ilParam)
|
||||
If $hWnd = $__aGUIDisable[$__hGUIDisableHWndPrevious] Then
|
||||
Local $iWinGetPos = WinGetPos($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
If @error = 0 Then
|
||||
WinMove($__aGUIDisable[$__hGUIDisableHWnd], '', $iWinGetPos[0], $iWinGetPos[1], $iWidth, $iHeight)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $GUI_RUNDEFMSG
|
||||
EndFunc ;==>__GUIDisable_WM_SIZE
|
13
Autostart Manager/Releases/.media
Executable file
13
Autostart Manager/Releases/.media
Executable file
|
@ -0,0 +1,13 @@
|
|||
#cs ----------------------------------------------------------------------------
|
||||
|
||||
AutoIt Version : 3.3.14.5
|
||||
Auteur: Tyleo
|
||||
|
||||
Fonction du Script :
|
||||
Modèle de Script AutoIt.
|
||||
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
; Début du script - Ajouter votre code ci-dessous.
|
||||
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
|
||||
|
10
Autostart Manager/TyleoAboutMe.au3
Executable file
10
Autostart Manager/TyleoAboutMe.au3
Executable file
|
@ -0,0 +1,10 @@
|
|||
|
||||
#include <ButtonConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
Func TyleoAbout($SoftName)
|
||||
_Metro_MsgBox(8,"About / A propos",$SoftName & @CRLF & "Tyleo Softwares @ 2021" & @CRLF & " " & @CRLF & "BUILDING TOMORROW" & @CRLF & " " & @CRLF & "This Software is free and Open Source." & @CRLF & "tyleo.dev@outlook.com",400,15)
|
||||
Return True
|
||||
EndFunc
|
BIN
CNP.Exe
Executable file
BIN
CNP.Exe
Executable file
Binary file not shown.
BIN
CNP_32.Exe
Executable file
BIN
CNP_32.Exe
Executable file
Binary file not shown.
2
ChocoSetup/ChocoPackages.ini
Executable file
2
ChocoSetup/ChocoPackages.ini
Executable file
|
@ -0,0 +1,2 @@
|
|||
[Packages]
|
||||
PACKAGES=
|
17
ChocoSetup/ChocolateyCustom.au3
Executable file
17
ChocoSetup/ChocolateyCustom.au3
Executable file
|
@ -0,0 +1,17 @@
|
|||
#RequireAdmin
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Icon=SETUP_CUST.ico
|
||||
#AutoIt3Wrapper_Outfile_x64=Releases\ChocolateyCustom.exe
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
if not FileExists(@ScriptDir & "\ChocoPackages.ini") Then
|
||||
IniWrite(@ScriptDir & "\ChocoPackages.ini","Packages","PACKAGES","")
|
||||
Exit(1)
|
||||
EndIf
|
||||
|
||||
$packages = IniRead(@ScriptDir & "\ChocoPackages.ini","Packages","PACKAGES","424242")
|
||||
|
||||
if $packages = "424242" Then
|
||||
Exit(1)
|
||||
EndIf
|
||||
Run("choco feature enable -n=allowGlobalConfirmation")
|
||||
Run("choco install " & $packages)
|
13
ChocoSetup/ChocolateySetup.au3
Executable file
13
ChocoSetup/ChocolateySetup.au3
Executable file
|
@ -0,0 +1,13 @@
|
|||
#RequireAdmin
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Icon=SETUP.ico
|
||||
#AutoIt3Wrapper_Outfile_x64=Releases\ChocoSetup.Exe
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
$ChocoGlobal = "choco feature enable -n=allowGlobalConfirmation"
|
||||
$ChocoCMD = "Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))"
|
||||
Run("powershell" & " " & $ChocoCMD)
|
||||
Run("cmd" & " /c " & $ChocoGlobal)
|
||||
|
||||
If FileExists(@ScriptDir & "\ChocolateyCustom.exe") Then
|
||||
Run(@ScriptDir & "\ChocolateyCustom.exe")
|
||||
EndIf
|
BIN
ChocoSetup/ChocolateySetup.exe
Executable file
BIN
ChocoSetup/ChocolateySetup.exe
Executable file
Binary file not shown.
2
ChocoSetup/Releases/ChocoPackages.ini
Executable file
2
ChocoSetup/Releases/ChocoPackages.ini
Executable file
|
@ -0,0 +1,2 @@
|
|||
[Packages]
|
||||
PACKAGES=youtube-dl ffmpeg axel wget curl git
|
BIN
ChocoSetup/Releases/ChocoSetup.Exe
Executable file
BIN
ChocoSetup/Releases/ChocoSetup.Exe
Executable file
Binary file not shown.
BIN
ChocoSetup/Releases/ChocolateyCustom.exe
Executable file
BIN
ChocoSetup/Releases/ChocolateyCustom.exe
Executable file
Binary file not shown.
BIN
ChocoSetup/SETUP.ico
Executable file
BIN
ChocoSetup/SETUP.ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 115 KiB |
BIN
ChocoSetup/SETUP_CUST.ico
Executable file
BIN
ChocoSetup/SETUP_CUST.ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 116 KiB |
23
Chrome InApp/Chrome InApp.au3
Executable file
23
Chrome InApp/Chrome InApp.au3
Executable file
|
@ -0,0 +1,23 @@
|
|||
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
|
||||
#AutoIt3Wrapper_Res_ProductVersion=1.0.0.0
|
||||
#AutoIt3Wrapper_Res_CompanyName=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalCopyright=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalTradeMarks=Tyleo Softwares
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include "TyleoAboutMe.au3"
|
||||
|
||||
#cs
|
||||
|
||||
Tyleo Software Project Base v1
|
||||
Created With CNP and DevTools Base Folder
|
||||
|
||||
All Softwares created with this base are Free and Open Sourced.
|
||||
Join our Guilded Server ! https://www.guilded.gg/i/2DRlM7Mp
|
||||
|
||||
#ce
|
||||
|
3575
Chrome InApp/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
3575
Chrome InApp/MetroGUI-UDF/MetroGUI_UDF.au3
Executable file
File diff suppressed because it is too large
Load diff
259
Chrome InApp/MetroGUI-UDF/MetroThemes.au3
Executable file
259
Chrome InApp/MetroGUI-UDF/MetroThemes.au3
Executable file
|
@ -0,0 +1,259 @@
|
|||
#include-once
|
||||
#cs ----------------------------------------------------------------------------
|
||||
Author: BB_19
|
||||
Material Themes for MetroGUI UDF
|
||||
If you want to create your own themes, check out flatcolors.net, you can find there many random material/flat colors :)
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
;#Set Default Theme
|
||||
Global $GUIThemeColor = "0x13161C" ; GUI Background Color
|
||||
Global $FontThemeColor = "0xFFFFFF" ; Font Color
|
||||
Global $GUIBorderColor = "0x2D2D2D" ; GUI Border Color
|
||||
Global $ButtonBKColor = "0x00796b" ; Metro Button BacKground Color
|
||||
Global $ButtonTextColor = "0xFFFFFF" ; Metro Button Text Color
|
||||
Global $CB_Radio_Color = "0xFFFFFF" ;Checkbox and Radio Color (Box/Circle)
|
||||
Global $GUI_Theme_Name = "DarkTealV2" ;Theme Name (For internal usage)
|
||||
Global $CB_Radio_Hover_Color = "0xD8D8D8" ; Checkbox and Radio Hover Color (Box/Circle)
|
||||
Global $CB_Radio_CheckMark_Color = "0x1a1a1a" ; Checkbox and Radio checkmark color
|
||||
|
||||
Func _SetTheme($ThemeSelect = "DarkTeal")
|
||||
$GUI_Theme_Name = $ThemeSelect
|
||||
Switch ($ThemeSelect)
|
||||
Case "LightTeal"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTeal"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkTealV2"
|
||||
$GUIThemeColor = "0x13161C"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x35635B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkRuby"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x712043"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightTeal"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x336058"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightCyan"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x0D5C63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnightBlue"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x1A4F70"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkMidnight"
|
||||
$GUIThemeColor = "0x0A0D16"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x3C4D66"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlue"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkBlueV2"
|
||||
$GUIThemeColor = "0x040D11"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x303030"
|
||||
$ButtonBKColor = "0x1E648C"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightBlue"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x244E80"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightCyan"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkCyan"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00838f"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGray"
|
||||
$GUIThemeColor = "0xcccccc"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x3F5863"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightGreen"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x2E7D32"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreen"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGreenV2"
|
||||
$GUIThemeColor = "0x061319"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x242B47"
|
||||
$ButtonBKColor = "0x5E8763"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightRed"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xc62828"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkGray"
|
||||
$GUIThemeColor = "0x1B2428"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x4F6772"
|
||||
$ButtonBKColor = "0x607D8B"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkAmber"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xffa000"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightOrange"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xBC5E05"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkOrange"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0xC76810"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPurple"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "DarkPurple"
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x512DA8"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case "LightPink"
|
||||
$GUIThemeColor = "0xD7D7D7"
|
||||
$FontThemeColor = "0x000000"
|
||||
$GUIBorderColor = "0xD8D8D8"
|
||||
$ButtonBKColor = "0xE91E63"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xE8E8E8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
Case Else
|
||||
ConsoleWrite("Metro-UDF-Error: Theme not found, using default theme." & @CRLF)
|
||||
$GUIThemeColor = "0x191919"
|
||||
$FontThemeColor = "0xFFFFFF"
|
||||
$GUIBorderColor = "0x2D2D2D"
|
||||
$ButtonBKColor = "0x00796b"
|
||||
$ButtonTextColor = "0xFFFFFF"
|
||||
$CB_Radio_Color = "0xFFFFFF"
|
||||
$CB_Radio_Hover_Color = "0xD8D8D8"
|
||||
$CB_Radio_CheckMark_Color = "0x1a1a1a"
|
||||
$GUI_Theme_Name = "DarkTealV2"
|
||||
EndSwitch
|
||||
EndFunc ;==>_SetTheme
|
495
Chrome InApp/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
495
Chrome InApp/MetroGUI-UDF/MetroUDF-Required/SSCtrlHover.au3
Executable file
|
@ -0,0 +1,495 @@
|
|||
;======================================
|
||||
;~ Author : binhnx
|
||||
;~ Created : 2014/10/20
|
||||
;======================================
|
||||
;~ Modified : BB_19
|
||||
;~ Last modified : 2017/10/07
|
||||
;======================================
|
||||
|
||||
#include-once
|
||||
#include <WinAPI.au3>
|
||||
#include <WinAPIShellEx.au3>
|
||||
Local $_cHvr_aData[0]
|
||||
|
||||
|
||||
Local Const $_cHvr_HDLLCOMCTL32 = _WinAPI_LoadLibrary('comctl32.dll')
|
||||
Assert($_cHvr_HDLLCOMCTL32 <> 0, 'This UDF requires comctl32.dll')
|
||||
Local Const $_cHvr_PDEFSUBCLASSPROC = _WinAPI_GetProcAddress($_cHvr_HDLLCOMCTL32, 'DefSubclassProc')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS_DLL = DllCallbackRegister('_cHvr_iProc', 'NONE', 'HWND;UINT;WPARAM;LPARAM;DWORD')
|
||||
Local Const $_cHvr_PINTERNALSUBCLASS = DllCallbackGetPtr($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
|
||||
OnAutoItExitRegister("_cHvr_Finalize")
|
||||
Local Const $_cHvr_TSUBCLASSEXE = Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86')
|
||||
Local Const $_cHvr_HEXECUTABLEHEAP = DllCall('kernel32.dll', 'HANDLE', 'HeapCreate', 'DWORD', 0x00040000, 'ULONG_PTR', 0, 'ULONG_PTR', 0)[0]
|
||||
Assert($_cHvr_HEXECUTABLEHEAP <> 0, 'Failed to create executable heap object')
|
||||
Local Const $_cHvr_PSUBCLASSEXE = _cHvr_ExecutableFromStruct(Call(@AutoItX64 ? '_cHvr_CSCP_X64' : '_cHvr_CSCP_X86'))
|
||||
|
||||
|
||||
Func _cHvr_Register($idCtrl, $fnHovOff = '', $fnHoverOn = '', $fnClick = '', $fnDblClk = '', $HoverData = 0,$ClickData = 0,$fnRightClick = '')
|
||||
Local $hWnd = GUICtrlGetHandle($idCtrl)
|
||||
If (Not (IsHWnd($hWnd))) Then Return SetError(1, 0, -1)
|
||||
Local $nIndex = _cHvr_GetNewIndex($hWnd)
|
||||
Local $aData[13]
|
||||
$aData[0] = $hWnd;Control Hwnd
|
||||
$aData[1] = $idCtrl; Control handle
|
||||
$aData[3] = $fnHovOff;Hover Off func
|
||||
$aData[4] = $HoverData;Hover Off Data
|
||||
$aData[5] = $fnHoverOn;Hover ON func
|
||||
$aData[6] = $HoverData;Hover ON Data
|
||||
$aData[7] = $fnRightClick;RClick func
|
||||
$aData[8] = $ClickData; click data
|
||||
$aData[9] = $fnClick;Click func
|
||||
$aData[10] = $ClickData; click data
|
||||
$aData[11] = $fnDblClk;DB click func
|
||||
$aData[12] = $ClickData;DB click data
|
||||
$_cHvr_aData[$nIndex] = $aData
|
||||
_WinAPI_SetWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd, $nIndex)
|
||||
Return $nIndex
|
||||
EndFunc ;==>_cHvr_Register
|
||||
|
||||
Func _cHvr_iProc($hWnd, $uMsg, $wParam, $lParam, $cIndex)
|
||||
Switch $uMsg
|
||||
Case 0x0200;Hover
|
||||
GUISetCursor(2, 1)
|
||||
_cHvr_cMove($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0201;Leftclick
|
||||
_cHvr_cDown($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0202
|
||||
_cHvr_cUp($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Return False
|
||||
Case 0x0203;Doubleclick
|
||||
_cHvr_cDblClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0204;Rightclick
|
||||
_cHvr_cRightClk($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x02A3;Hover leave
|
||||
_cHvr_cLeave($_cHvr_aData[$cIndex], $hWnd, $uMsg, $wParam, $lParam)
|
||||
Case 0x0082;Deleted
|
||||
_cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
EndSwitch
|
||||
Return True
|
||||
EndFunc ;==>_cHvr_iProc
|
||||
|
||||
Func _cHvr_cDown(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_WinAPI_SetCapture($hWnd)
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndFunc ;==>_cHvr_cDown
|
||||
|
||||
Func _cHvr_cMove(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
Local $bIn = _cHvr_IsInClient($hWnd, $lParam)
|
||||
If Not $aCtrlData[2] Then
|
||||
If $bIn Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
Else
|
||||
If Not $bIn Then
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndIf
|
||||
EndIf
|
||||
ElseIf Not $aCtrlData[2] Then
|
||||
$aCtrlData[2] = 1
|
||||
_cHvr_CallFunc($aCtrlData, 5)
|
||||
Local $tTME = DllStructCreate('DWORD;DWORD;HWND;DWORD')
|
||||
DllStructSetData($tTME, 1, DllStructGetSize($tTME))
|
||||
DllStructSetData($tTME, 2, 2) ;$TME_LEAVE
|
||||
DllStructSetData($tTME, 3, $hWnd)
|
||||
DllCall('user32.dll', 'BOOL', 'TrackMouseEvent', 'STRUCT*', $tTME)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_cMove
|
||||
|
||||
Func _cHvr_cUp(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
Local $lRet = _WinAPI_DefSubclassProc($hWnd, $uMsg, $wParam, $lParam)
|
||||
If (_WinAPI_GetCapture() = $hWnd) Then
|
||||
_WinAPI_ReleaseCapture()
|
||||
If _cHvr_IsInClient($hWnd, $lParam) Then
|
||||
_cHvr_CallFunc($aCtrlData, 9)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $lRet
|
||||
EndFunc ;==>_cHvr_cUp
|
||||
|
||||
Func _cHvr_cDblClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 11)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cRightClk(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
_cHvr_CallFunc($aCtrlData, 7)
|
||||
EndFunc ;==>_cHvr_cDblClk
|
||||
|
||||
Func _cHvr_cLeave(ByRef $aCtrlData, $hWnd, $uMsg, ByRef $wParam, ByRef $lParam)
|
||||
$aCtrlData[2] = 0
|
||||
_cHvr_CallFunc($aCtrlData, 3)
|
||||
EndFunc ;==>_cHvr_cLeave
|
||||
|
||||
Func _cHvr_CallFunc(ByRef $aCtrlData, $iCallType)
|
||||
Call($aCtrlData[$iCallType], $aCtrlData[1], $aCtrlData[$iCallType + 1])
|
||||
EndFunc ;==>_cHvr_CallFunc
|
||||
|
||||
Func _cHvr_ArrayPush(ByRef $aStackArr, Const $vSrc1 = Default, Const $vSrc2 = Default, Const $vSrc3 = Default, Const $vSrc4 = Default, Const $vSrc5 = Default)
|
||||
While (UBound($aStackArr) < ($aStackArr[0] + @NumParams))
|
||||
ReDim $aStackArr[UBound($aStackArr) * 2]
|
||||
WEnd
|
||||
|
||||
If Not ($vSrc1 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc1
|
||||
EndIf
|
||||
If Not ($vSrc2 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc2
|
||||
EndIf
|
||||
If Not ($vSrc3 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc3
|
||||
EndIf
|
||||
If Not ($vSrc4 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc4
|
||||
EndIf
|
||||
If Not ($vSrc5 = Default) Then
|
||||
$aStackArr[0] += 1
|
||||
$aStackArr[$aStackArr[0]] = $vSrc5
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_ArrayPush
|
||||
|
||||
Func _cHvr_IsInClient($hWnd, $lParam)
|
||||
Local $iX = BitShift(BitShift($lParam, -16), 16)
|
||||
Local $iY = BitShift($lParam, 16)
|
||||
Local $aSize = WinGetClientSize($hWnd)
|
||||
Return Not ($iX < 0 Or $iY < 0 Or $iX > $aSize[0] Or $iY > $aSize[1])
|
||||
EndFunc ;==>_cHvr_IsInClient
|
||||
|
||||
Func _cHvr_CSCP_X86() ;Create Subclass Process x86
|
||||
; $hWnd HWND size: 4 ESP+4 EBP+8
|
||||
; $uMsg UINT size: 4 ESP+8 EBP+12
|
||||
; $wParam WPARAM size: 4 ESP+12 EBP+16
|
||||
; $lParam LPARAM size: 4 ESP+16 EBP+20
|
||||
; $uIdSubclass UINT_PTR size: 4 ESP+20 EBP+24
|
||||
; $dwRefData DWORD_PTR size: 4 ESP+24 EBP+28 Total: 24
|
||||
|
||||
; NERVER FORGET ADDING align 1 OR YOU WILL SPEND HOURS TO FIND WHAT CAUSE 0xC0000005 Access Violation
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; Func ; __stdcall
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x55) ;push ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xEC) ;mov ebp, esp
|
||||
|
||||
; Save un-modified params to nv register
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+16]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x5D, 16) ;8b 5d 10
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov esi, DWORD PTR [ebp+12]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x75, 12) ;8b 75 0c
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ebx, DWORD PTR [ebp+20]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x7D, 20) ;8b 7d 14
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x82) ;81 fe 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp esi, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFE, 0x2A3) ;81 fe a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;lea eax, DWORD PTR [esi-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x86, -0x200) ;8d 86 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
|
||||
; :WndProcInternal (HWND, UINT, WPARAM, LPARAM, DWORD)
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov ecx, DWORD PTR [ebp+28]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x4D, 28) ;8b 4d 1c
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov edx, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x55, 8) ;8b 55 08
|
||||
$sExe &= 'BYTE;' ;push ecx
|
||||
_cHvr_ArrayPush($aOpCode, 0x51) ;51
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x52) ;52
|
||||
|
||||
; Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax, _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;' ;test eax, eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x85, 0xC0) ;85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;jz short Return
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$aOpCode[$nElemOffset[2]] = $nAddrOffset[3] - $nAddrOffset[2]
|
||||
|
||||
; Prepare stack
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov eax, DWORD PTR [ebp+8]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0x45, 8)
|
||||
$sExe &= 'BYTE;' ;push edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
$sExe &= 'BYTE;' ;push ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x53) ;53
|
||||
$sExe &= 'BYTE;' ;push esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x56) ;56
|
||||
$sExe &= 'BYTE;' ;push eax
|
||||
_cHvr_ArrayPush($aOpCode, 0x50) ;50
|
||||
|
||||
;Call
|
||||
$sExe &= 'BYTE;PTR;' ;mov eax,COMCTL32.DefSubclassProc
|
||||
_cHvr_ArrayPush($aOpCode, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;' ;call near eax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff 75 8
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[3]] = $nAddrOffset[4] - $nAddrOffset[3]
|
||||
|
||||
; Restore nv-register
|
||||
$sExe &= 'BYTE;BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;pop edi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5E) ;pop esi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5B) ;pop ebx
|
||||
|
||||
|
||||
; EndFunc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;WORD'
|
||||
_cHvr_ArrayPush($aOpCode, 0x5D) ;pop ebp
|
||||
_cHvr_ArrayPush($aOpCode, 0xC2, 24) ;ret 24
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X86
|
||||
|
||||
Func _cHvr_CSCP_X64() ;Create Subclass Process x64
|
||||
; First four INT and UINT has size = 8 instead of 4 because they are stored in RCX, RDX, R8, R9
|
||||
; $hWnd HWND size: 8 RCX RSP+8
|
||||
; $uMsg UINT size: 8 EDX RSP+16
|
||||
; $wParam WPARAM size: 8 R8 RSP+24
|
||||
; $lParam LPARAM size: 8 R9 RSP+32
|
||||
; $uIdSubclass UINT_PTR size: 8 RSP+40
|
||||
; $dwRefData DWORD_PTR size: 8 RSP+48 Total: 48
|
||||
Local $sExe = 'align 1;'
|
||||
Local $aOpCode[100]
|
||||
$aOpCode[0] = 0
|
||||
Local $nAddrOffset[5]
|
||||
Local $nElemOffset[5]
|
||||
|
||||
; If ($uMsg = 0x0082) Then Goto WndProcInternal ;WM_NCDESTROY
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x82
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x82) ;81 fa 82 00 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[0] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[0] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg = 0x02A3) Then Goto WndProcInternal ;WM_MOUSELEAVE
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x81, 0xFA, 0x2A3) ;81 fa a3 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0) ;74 BYTE_OFFSET
|
||||
$nAddrOffset[1] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[1] = $aOpCode[0]
|
||||
|
||||
; ElseIf ($uMsg < 0x200 Or $uMsg > 0x203) Then Goto DefaultWndProc
|
||||
$sExe &= 'BYTE;BYTE;DWORD;' ;lea eax, DWORD PTR [rdx-0x200]
|
||||
_cHvr_ArrayPush($aOpCode, 0x8D, 0x82, -0x200) ;8d 82 00 02 00 00
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp eax, 3
|
||||
_cHvr_ArrayPush($aOpCode, 0x83, 0xF8, 3) ;83 f8 03
|
||||
$sExe &= 'BYTE;BYTE;' ;ja short DefaultWndProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x77, 0) ;77 BYTE_OFFSET
|
||||
$nAddrOffset[2] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[2] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[0]] = $nAddrOffset[2] - $nAddrOffset[0]
|
||||
$aOpCode[$nElemOffset[1]] = $nAddrOffset[2] - $nAddrOffset[1]
|
||||
|
||||
|
||||
; :WndProcInternal (HWND rsp+8, UINT +16, WPARAM +24, LPARAM +32, DWORD +40)
|
||||
; $dwRefData = [ESP+48+48(sub rsp, 48)+8(push rdi)] = [ESP+104]
|
||||
; Save base registers:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+8], rbx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x5C, 0x24, 8) ;48 89 5c 24 08
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+16], rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x6C, 0x24, 16) ;48 89 6c 24 10
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+24], rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x74, 0x24, 24) ;48 89 74 24 18
|
||||
$sExe &= 'BYTE;' ;push rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x57) ;57
|
||||
; Max sub-routine params = 5 (size = 5*8 = 40), + 8 bytes for return value = 48.
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;sub rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xEC, 48) ;48 83 ec 30
|
||||
; rbx, rbp, rsi now at [ESP+8+56], [ESP+16+56], [ESP+24+56]
|
||||
|
||||
; Save the parameters:
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rdi, r9
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF9) ;49 8b f9
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rsi, r8
|
||||
_cHvr_ArrayPush($aOpCode, 0x49, 0x8B, 0xF0) ;49 8b f0
|
||||
$sExe &= 'BYTE;BYTE;' ;mov ebx, edx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xDA) ;8b da
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rbp, rcx
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xE9) ;48 8b e9
|
||||
|
||||
; Prepare additional parameter for internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rax, QWORD PTR [rsp+104]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x44, 0x24, 104) ;48 8b 44 24 68
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov QWORD PTR [rsp+32], Rax]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x89, 0x44, 0x24, 32) ;48 89 44 24 20
|
||||
|
||||
; Call internal WndProc
|
||||
$sExe &= 'BYTE;BYTE;PTR;' ;mov rax, QWORD PTR _cHvr_iProc
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PINTERNALSUBCLASS)
|
||||
;movabs rax, _cHvr_iProc ;48 b8 QWORD_PTR
|
||||
$sExe &= 'BYTE;BYTE;' ;call rax
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xD0) ;ff d0
|
||||
|
||||
; If (WndProcInternal() = 0) Then Return
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[3] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[3] = $aOpCode[0]
|
||||
|
||||
; Restore parameters for DefSubclassProc call
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r9, rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xCF) ;4c 8b cf
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov r8, rsi
|
||||
_cHvr_ArrayPush($aOpCode, 0x4C, 0x8B, 0xC6) ;4c 8b c6
|
||||
$sExe &= 'BYTE;BYTE;' ;mov edx, ebx
|
||||
_cHvr_ArrayPush($aOpCode, 0x8B, 0xD3) ;8b d3
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;mov rcx, rbp
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0xCD) ;48 8b cd
|
||||
|
||||
; Restore registers value
|
||||
$aOpCode[$nElemOffset[3]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[3]
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbx, QWORD PTR [rsp+64]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x5C, 0x24, 64) ;48 8b 5c 24 40
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rbp, QWORD PTR [rsp+72]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x6C, 0x24, 72) ;48 8b 6c 24 48
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;BYTE;' ;mov rsi, QWORD PTR [rsp+80]
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x8B, 0x74, 0x24, 80) ;48 8b 74 24 50
|
||||
$sExe &= 'BYTE;BYTE;BYTE;BYTE;' ;add rsp, 48
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x83, 0xc4, 48) ;48 83 c4 30
|
||||
$sExe &= 'BYTE;' ;pop rdi
|
||||
_cHvr_ArrayPush($aOpCode, 0x5F) ;5f
|
||||
$sExe &= 'BYTE;BYTE;BYTE;' ;cmp edx, 0x2A3
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0x85, 0xC0) ;48 85 c0
|
||||
$sExe &= 'BYTE;BYTE;' ;je short WndProcInternal
|
||||
_cHvr_ArrayPush($aOpCode, 0x74, 0)
|
||||
$nAddrOffset[4] = DllStructGetSize(DllStructCreate($sExe))
|
||||
$nElemOffset[4] = $aOpCode[0]
|
||||
$aOpCode[$nElemOffset[2]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[2]
|
||||
|
||||
; :DefaultWndProc (HWND, UINT, WPARAM, LPARAM)
|
||||
$sExe &= 'BYTE;BYTE;PTR;'
|
||||
_cHvr_ArrayPush($aOpCode, 0x48, 0xB8, $_cHvr_PDEFSUBCLASSPROC)
|
||||
$sExe &= 'BYTE;BYTE;'
|
||||
_cHvr_ArrayPush($aOpCode, 0xFF, 0xE0)
|
||||
|
||||
; :Return
|
||||
$aOpCode[$nElemOffset[4]] = DllStructGetSize(DllStructCreate($sExe)) - $nAddrOffset[4]
|
||||
$sExe &= 'BYTE;' ;ret 0
|
||||
_cHvr_ArrayPush($aOpCode, 0xC3)
|
||||
|
||||
Return _cHvr_PopulateOpcode($sExe, $aOpCode)
|
||||
EndFunc ;==>_cHvr_CSCP_X64
|
||||
|
||||
Func _cHvr_PopulateOpcode(ByRef $sExe, ByRef $aOpCode)
|
||||
Local $tExe = DllStructCreate($sExe)
|
||||
Assert(@error = 0, 'DllStrucCreate Failed With Error = ' & @error)
|
||||
For $i = 1 To $aOpCode[0]
|
||||
DllStructSetData($tExe, $i, $aOpCode[$i])
|
||||
Next
|
||||
Return $tExe
|
||||
EndFunc ;==>_cHvr_PopulateOpcode
|
||||
|
||||
Func _cHvr_ExecutableFromStruct($tExe)
|
||||
Local $pExe = DllCall('kernel32.dll', 'PTR', 'HeapAlloc', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 8, 'ULONG_PTR', DllStructGetSize($tExe))[0]
|
||||
Assert($pExe <> 0, 'Allocate memory failed')
|
||||
DllCall("kernel32.dll", "none", "RtlMoveMemory", "PTR", $pExe, "PTR", DllStructGetPtr($tExe), "ULONG_PTR", DllStructGetSize($tExe))
|
||||
Assert(@error = 0, 'Failed to copy memory')
|
||||
Return $pExe
|
||||
EndFunc ;==>_cHvr_ExecutableFromStruct
|
||||
|
||||
Func _cHvr_UnRegisterInternal($cIndex, $hWnd)
|
||||
_WinAPI_RemoveWindowSubclass($hWnd, $_cHvr_PSUBCLASSEXE, $hWnd)
|
||||
Local $aData=$_cHvr_aData[$cIndex]
|
||||
$_cHvr_aData[$cIndex] = 0
|
||||
Call( "_iControlDelete",$aData[1])
|
||||
EndFunc ;==>_cHvr_UnRegisterInternal
|
||||
|
||||
Func _cHvr_Finalize()
|
||||
DllCallbackFree($_cHvr_PINTERNALSUBCLASS_DLL)
|
||||
_WinAPI_FreeLibrary($_cHvr_HDLLCOMCTL32)
|
||||
If ($_cHvr_HEXECUTABLEHEAP <> 0) Then
|
||||
If ($_cHvr_PSUBCLASSEXE <> 0) Then
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapFree', 'HANDLE', $_cHvr_HEXECUTABLEHEAP, 'DWORD', 0, 'PTR', $_cHvr_PSUBCLASSEXE)
|
||||
EndIf
|
||||
DllCall('kernel32.dll', 'BOOL', 'HeapDestroy', 'HANDLE', $_cHvr_HEXECUTABLEHEAP)
|
||||
EndIf
|
||||
EndFunc ;==>_cHvr_Finalize
|
||||
|
||||
Func Assert($bExpression, $sMsg = '', $sScript = @ScriptName, $sScriptPath = @ScriptFullPath, $iLine = @ScriptLineNumber, $iError = @error, $iExtend = @extended)
|
||||
If (Not ($bExpression)) Then
|
||||
MsgBox(BitOR(1, 0x10), 'Assertion Error!', _
|
||||
@CRLF & 'Script' & @TAB & ': ' & $sScript _
|
||||
& @CRLF & 'Path' & @TAB & ': ' & $sScriptPath _
|
||||
& @CRLF & 'Line' & @TAB & ': ' & $iLine _
|
||||
& @CRLF & 'Error' & @TAB & ': ' & ($iError > 0x7FFF ? Hex($iError) : $iError) _
|
||||
& ($iExtend <> 0 ? ' (Extended : ' & ($iExtend > 0x7FFF ? Hex($iExtend) : $iExtend) & ')' : '') _
|
||||
& @CRLF & 'Message' & @TAB & ': ' & $sMsg _
|
||||
& @CRLF & @CRLF & 'OK: Exit Script' & @TAB & 'Cancel: Continue')
|
||||
Exit
|
||||
EndIf
|
||||
EndFunc ;==>Assert
|
||||
|
||||
Func _cHvr_GetNewIndex($hWnd)
|
||||
;Try to assign index from previously deleted control
|
||||
For $i = 0 To UBound($_cHvr_aData) - 1 Step +1
|
||||
If Not IsArray($_cHvr_aData[$i]) Then
|
||||
Return $i
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ReDim $_cHvr_aData[UBound($_cHvr_aData) + 1]
|
||||
Return UBound($_cHvr_aData) - 1
|
||||
EndFunc ;==>_cHvr_GetNewIndex
|
||||
|
||||
Func _WinAPI_GetCapture()
|
||||
Return DllCall("user32.dll", "HWND", "GetCapture")[0]
|
||||
EndFunc ;==>_WinAPI_GetCapture
|
279
Chrome InApp/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
279
Chrome InApp/MetroGUI-UDF/MetroUDF-Required/StringSize.au3
Executable file
|
@ -0,0 +1,279 @@
|
|||
#include-once
|
||||
|
||||
; #INDEX# ============================================================================================================
|
||||
; Title .........: _StringSize
|
||||
; AutoIt Version : v3.2.12.1 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; Remarks .......:
|
||||
; Note ..........:
|
||||
; Author(s) .....: Melba23 - thanks to trancexx for the default DC code
|
||||
; ====================================================================================================================
|
||||
|
||||
;#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
|
||||
|
||||
; #CURRENT# ==========================================================================================================
|
||||
; _StringSize: Returns size of rectangle required to display string - maximum width can be chosen
|
||||
; ====================================================================================================================
|
||||
|
||||
; #INTERNAL_USE_ONLY#=================================================================================================
|
||||
; _StringSize_Error_Close: Releases DC and deletes font object after error
|
||||
; _StringSize_DefaultFontName: Determines Windows default font
|
||||
; ====================================================================================================================
|
||||
|
||||
; #FUNCTION# =========================================================================================================
|
||||
; Name...........: _StringSize
|
||||
; Description ...: Returns size of rectangle required to display string - maximum permitted width can be chosen
|
||||
; Syntax ........: _StringSize($sText[, $iSize[, $iWeight[, $iAttrib[, $sName[, $iWidth[, $hWnd]]]]]])
|
||||
; Parameters ....: $sText - String to display
|
||||
; $iSize - [optional] Font size in points - (default = 8.5)
|
||||
; $iWeight - [optional] Font weight - (default = 400 = normal)
|
||||
; $iAttrib - [optional] Font attribute (0-Normal (default), 2-Italic, 4-Underline, 8 Strike)
|
||||
; + 1 if tabs are to be expanded before sizing
|
||||
; $sName - [optional] Font name - (default = Tahoma)
|
||||
; $iWidth - [optional] Max width for rectangle - (default = 0 => width of original string)
|
||||
; $hWnd - [optional] GUI in which string will be displayed - (default 0 => normally not required)
|
||||
; Requirement(s) : v3.2.12.1 or higher
|
||||
; Return values .: Success - Returns 4-element array: ($iWidth set // $iWidth not set)
|
||||
; |$array[0] = String reformatted with additonal @CRLF // Original string
|
||||
; |$array[1] = Height of single line in selected font // idem
|
||||
; |$array[2] = Width of rectangle required for reformatted // original string
|
||||
; |$array[3] = Height of rectangle required for reformatted // original string
|
||||
; Failure - Returns 0 and sets @error:
|
||||
; |1 - Incorrect parameter type (@extended = parameter index)
|
||||
; |2 - DLL call error - extended set as follows:
|
||||
; |1 - GetDC failure
|
||||
; |2 - SendMessage failure
|
||||
; |3 - GetDeviceCaps failure
|
||||
; |4 - CreateFont failure
|
||||
; |5 - SelectObject failure
|
||||
; |6 - GetTextExtentPoint32 failure
|
||||
; |3 - Font too large for chosen max width - a word will not fit
|
||||
; Author ........: Melba23 - thanks to trancexx for the default DC code
|
||||
; Modified ......:
|
||||
; Remarks .......: The use of the $hWnd parameter is not normally necessary - it is only required if the UDF does not
|
||||
; return correct dimensions without it.
|
||||
; Related .......:
|
||||
; Link ..........:
|
||||
; Example .......: Yes
|
||||
;=====================================================================================================================
|
||||
Func _StringSize($sText, $iSize = 8.5, $iWeight = 400, $iAttrib = 0, $sName = "", $iMaxWidth = 0, $hWnd = 0)
|
||||
|
||||
; Set parameters passed as Default
|
||||
If $iSize = Default Then $iSize = 8.5
|
||||
If $iWeight = Default Then $iWeight = 400
|
||||
If $iAttrib = Default Then $iAttrib = 0
|
||||
If $sName = "" Or $sName = Default Then $sName = _StringSize_DefaultFontName()
|
||||
|
||||
; Check parameters are correct type
|
||||
If Not IsString($sText) Then Return SetError(1, 1, 0)
|
||||
If Not IsNumber($iSize) Then Return SetError(1, 2, 0)
|
||||
If Not IsInt($iWeight) Then Return SetError(1, 3, 0)
|
||||
If Not IsInt($iAttrib) Then Return SetError(1, 4, 0)
|
||||
If Not IsString($sName) Then Return SetError(1, 5, 0)
|
||||
If Not IsNumber($iMaxWidth) Then Return SetError(1, 6, 0)
|
||||
If Not IsHwnd($hWnd) And $hWnd <> 0 Then Return SetError(1, 7, 0)
|
||||
|
||||
Local $aRet, $hDC, $hFont, $hLabel = 0, $hLabel_Handle
|
||||
|
||||
; Check for tab expansion flag
|
||||
Local $iExpTab = BitAnd($iAttrib, 1)
|
||||
; Remove possible tab expansion flag from font attribute value
|
||||
$iAttrib = BitAnd($iAttrib, BitNot(1))
|
||||
|
||||
; If GUI handle was passed
|
||||
If IsHWnd($hWnd) Then
|
||||
; Create label outside GUI borders
|
||||
$hLabel = GUICtrlCreateLabel("", -10, -10, 10, 10)
|
||||
$hLabel_Handle = GUICtrlGetHandle(-1)
|
||||
GUICtrlSetFont(-1, $iSize, $iWeight, $iAttrib, $sName)
|
||||
; Create DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hLabel_Handle)
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, 1, 0)
|
||||
EndIf
|
||||
$hDC = $aRet[0]
|
||||
$aRet = DllCall("user32.dll", "lparam", "SendMessage", "hwnd", $hLabel_Handle, "int", 0x0031, "wparam", 0, "lparam", 0) ; $WM_GetFont
|
||||
If @error Or $aRet[0] = 0 Then
|
||||
GUICtrlDelete($hLabel)
|
||||
Return SetError(2, _StringSize_Error_Close(2, $hDC), 0)
|
||||
EndIf
|
||||
$hFont = $aRet[0]
|
||||
Else
|
||||
; Get default DC
|
||||
$aRet = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hWnd)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, 1, 0)
|
||||
$hDC = $aRet[0]
|
||||
; Create required font
|
||||
$aRet = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $hDC, "int", 90) ; $LOGPIXELSY
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(3, $hDC), 0)
|
||||
Local $iInfo = $aRet[0]
|
||||
$aRet = DllCall("gdi32.dll", "handle", "CreateFontW", "int", -$iInfo * $iSize / 72, "int", 0, "int", 0, "int", 0, _
|
||||
"int", $iWeight, "dword", BitAND($iAttrib, 2), "dword", BitAND($iAttrib, 4), "dword", BitAND($iAttrib, 8), "dword", 0, "dword", 0, _
|
||||
"dword", 0, "dword", 5, "dword", 0, "wstr", $sName)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(4, $hDC), 0)
|
||||
$hFont = $aRet[0]
|
||||
EndIf
|
||||
|
||||
; Select font and store previous font
|
||||
$aRet = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hFont)
|
||||
If @error Or $aRet[0] = 0 Then Return SetError(2, _StringSize_Error_Close(5, $hDC, $hFont, $hLabel), 0)
|
||||
Local $hPrevFont = $aRet[0]
|
||||
|
||||
; Declare variables
|
||||
Local $avSize_Info[4], $iLine_Length, $iLine_Height = 0, $iLine_Count = 0, $iLine_Width = 0, $iWrap_Count, $iLast_Word, $sTest_Line
|
||||
; Declare and fill Size structure
|
||||
Local $tSize = DllStructCreate("int X;int Y")
|
||||
DllStructSetData($tSize, "X", 0)
|
||||
DllStructSetData($tSize, "Y", 0)
|
||||
|
||||
; Ensure EoL is @CRLF and break text into lines
|
||||
$sText = StringRegExpReplace($sText, "((?<!\x0d)\x0a|\x0d(?!\x0a))", @CRLF)
|
||||
Local $asLines = StringSplit($sText, @CRLF, 1)
|
||||
|
||||
; For each line
|
||||
For $i = 1 To $asLines[0]
|
||||
; Expand tabs if required
|
||||
If $iExpTab Then
|
||||
$asLines[$i] = StringReplace($asLines[$i], @TAB, " XXXXXXXX")
|
||||
EndIf
|
||||
; Size line
|
||||
$iLine_Length = StringLen($asLines[$i])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$i], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
If DllStructGetData($tSize, "X") > $iLine_Width Then $iLine_Width = DllStructGetData($tSize, "X")
|
||||
If DllStructGetData($tSize, "Y") > $iLine_Height Then $iLine_Height = DllStructGetData($tSize, "Y")
|
||||
Next
|
||||
|
||||
; Check if $iMaxWidth has been both set and exceeded
|
||||
If $iMaxWidth <> 0 And $iLine_Width > $iMaxWidth Then ; Wrapping required
|
||||
; For each Line
|
||||
For $j = 1 To $asLines[0]
|
||||
; Size line unwrapped
|
||||
$iLine_Length = StringLen($asLines[$j])
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $asLines[$j], "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
; Check wrap status
|
||||
If DllStructGetData($tSize, "X") < $iMaxWidth - 4 Then
|
||||
; No wrap needed so count line and store
|
||||
$iLine_Count += 1
|
||||
$avSize_Info[0] &= $asLines[$j] & @CRLF
|
||||
Else
|
||||
; Wrap needed so zero counter for wrapped lines
|
||||
$iWrap_Count = 0
|
||||
; Build line to max width
|
||||
While 1
|
||||
; Zero line width
|
||||
$iLine_Width = 0
|
||||
; Initialise pointer for end of word
|
||||
$iLast_Word = 0
|
||||
; Add characters until EOL or maximum width reached
|
||||
For $i = 1 To StringLen($asLines[$j])
|
||||
; Is this just past a word ending?
|
||||
If StringMid($asLines[$j], $i, 1) = " " Then $iLast_Word = $i - 1
|
||||
; Increase line by one character
|
||||
$sTest_Line = StringMid($asLines[$j], 1, $i)
|
||||
; Get line length
|
||||
$iLine_Length = StringLen($sTest_Line)
|
||||
DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $hDC, "wstr", $sTest_Line, "int", $iLine_Length, "ptr", DllStructGetPtr($tSize))
|
||||
If @error Then Return SetError(2, _StringSize_Error_Close(6, $hDC, $hFont, $hLabel), 0)
|
||||
$iLine_Width = DllStructGetData($tSize, "X")
|
||||
; If too long exit the loop
|
||||
If $iLine_Width >= $iMaxWidth - 4 Then ExitLoop
|
||||
Next
|
||||
; End of the line of text?
|
||||
If $i > StringLen($asLines[$j]) Then
|
||||
; Yes, so add final line to count
|
||||
$iWrap_Count += 1
|
||||
; Store line
|
||||
$avSize_Info[0] &= $sTest_Line & @CRLF
|
||||
ExitLoop
|
||||
Else
|
||||
; No, but add line just completed to count
|
||||
$iWrap_Count += 1
|
||||
; Check at least 1 word completed or return error
|
||||
If $iLast_Word = 0 Then Return SetError(3, _StringSize_Error_Close(0, $hDC, $hFont, $hLabel), 0)
|
||||
; Store line up to end of last word
|
||||
$avSize_Info[0] &= StringLeft($sTest_Line, $iLast_Word) & @CRLF
|
||||
; Strip string to point reached
|
||||
$asLines[$j] = StringTrimLeft($asLines[$j], $iLast_Word)
|
||||
; Trim leading whitespace
|
||||
$asLines[$j] = StringStripWS($asLines[$j], 1)
|
||||
; Repeat with remaining characters in line
|
||||
EndIf
|
||||
WEnd
|
||||
; Add the number of wrapped lines to the count
|
||||
$iLine_Count += $iWrap_Count
|
||||
EndIf
|
||||
Next
|
||||
; Reset any tab expansions
|
||||
If $iExpTab Then
|
||||
$avSize_Info[0] = StringRegExpReplace($avSize_Info[0], "\x20?XXXXXXXX", @TAB)
|
||||
EndIf
|
||||
; Complete return array
|
||||
$avSize_Info[1] = $iLine_Height
|
||||
$avSize_Info[2] = $iMaxWidth
|
||||
; Convert lines to pixels and add drop margin
|
||||
$avSize_Info[3] = ($iLine_Count * $iLine_Height) + 4
|
||||
Else ; No wrapping required
|
||||
; Create return array (add drop margin to height)
|
||||
Local $avSize_Info[4] = [$sText, $iLine_Height, $iLine_Width, ($asLines[0] * $iLine_Height) + 4]
|
||||
EndIf
|
||||
|
||||
; Clear up
|
||||
DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hDC, "handle", $hPrevFont)
|
||||
DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $avSize_Info
|
||||
|
||||
EndFunc ;==>_StringSize
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_Error_Close
|
||||
; Description ...: Releases DC and deleted font object if required after error
|
||||
; Syntax ........: _StringSize_Error_Close ($iExtCode, $hDC, $hGUI)
|
||||
; Parameters ....: $iExtCode - code to return
|
||||
; $hDC, $hGUI - handles as set in _StringSize function
|
||||
; Return value ..: $iExtCode as passed
|
||||
; Author ........: Melba23
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_Error_Close($iExtCode, $hDC = 0, $hFont = 0, $hLabel = 0)
|
||||
|
||||
If $hFont <> 0 Then DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hFont)
|
||||
If $hDC <> 0 Then DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $hDC)
|
||||
If $hLabel Then GUICtrlDelete($hLabel)
|
||||
|
||||
Return $iExtCode
|
||||
|
||||
EndFunc ;=>_StringSize_Error_Close
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
; Name...........: _StringSize_DefaultFontName
|
||||
; Description ...: Determines Windows default font
|
||||
; Syntax ........: _StringSize_DefaultFontName()
|
||||
; Parameters ....: None
|
||||
; Return values .: Success - Returns name of system default font
|
||||
; Failure - Returns "Tahoma"
|
||||
; Author ........: Melba23, based on some original code by Larrydalooza
|
||||
; Modified.......:
|
||||
; Remarks .......: This function is used internally by _StringSize
|
||||
; ===============================================================================================================================
|
||||
Func _StringSize_DefaultFontName()
|
||||
|
||||
; Get default system font data
|
||||
Local $tNONCLIENTMETRICS = DllStructCreate("uint;int;int;int;int;int;byte[60];int;int;byte[60];int;int;byte[60];byte[60];byte[60]")
|
||||
DLLStructSetData($tNONCLIENTMETRICS, 1, DllStructGetSize($tNONCLIENTMETRICS))
|
||||
DLLCall("user32.dll", "int", "SystemParametersInfo", "int", 41, "int", DllStructGetSize($tNONCLIENTMETRICS), "ptr", DllStructGetPtr($tNONCLIENTMETRICS), "int", 0)
|
||||
Local $tLOGFONT = DllStructCreate("long;long;long;long;long;byte;byte;byte;byte;byte;byte;byte;byte;char[32]", DLLStructGetPtr($tNONCLIENTMETRICS, 13))
|
||||
If IsString(DllStructGetData($tLOGFONT, 14)) Then
|
||||
Return DllStructGetData($tLOGFONT, 14)
|
||||
Else
|
||||
Return "Tahoma"
|
||||
EndIf
|
||||
|
||||
EndFunc ;=>_StringSize_DefaultFontName
|
80
Chrome InApp/MetroGUI-UDF/_GUIDisable.au3
Executable file
80
Chrome InApp/MetroGUI-UDF/_GUIDisable.au3
Executable file
|
@ -0,0 +1,80 @@
|
|||
#include-once
|
||||
|
||||
; #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
|
||||
; #INDEX# =======================================================================================================================
|
||||
; Title .........: _GUIDisable
|
||||
; AutoIt Version : v3.2.2.0 or higher
|
||||
; Language ......: English
|
||||
; Description ...: Creates a dimming effect on the current/selected GUI.
|
||||
; Note ..........:
|
||||
; Author(s) .....: guinness
|
||||
; Remarks .......: Thanks to supersonic for the idea of adjusting the UDF when using Classic themes in Windows Vista+.
|
||||
; ===============================================================================================================================
|
||||
|
||||
; #INCLUDES# ====================================================================================================================
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <WinAPI.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
; #GLOBAL VARIABLES# ============================================================================================================
|
||||
Global Enum $__hGUIDisableHWnd, $__hGUIDisableHWndPrevious, $__iGUIDisableMax
|
||||
Global $__aGUIDisable[$__iGUIDisableMax]
|
||||
|
||||
Func _GUIDisable($hWnd, $iAnimate = Default, $iBrightness = Default, $bColor = 0x000000)
|
||||
Local Const $AW_SLIDE_IN_TOP = 0x00040004, $AW_SLIDE_OUT_TOP = 0x00050008
|
||||
|
||||
If $iAnimate = Default Then
|
||||
$iAnimate = 1
|
||||
EndIf
|
||||
If $iBrightness = Default Then
|
||||
$iBrightness = 5
|
||||
EndIf
|
||||
|
||||
If $hWnd = -1 And $__aGUIDisable[$__hGUIDisableHWnd] = 0 Then
|
||||
Local $iLabel = GUICtrlCreateLabel('', -99, -99, 1, 1)
|
||||
$hWnd = _WinAPI_GetParent(GUICtrlGetHandle($iLabel))
|
||||
If @error Then
|
||||
Return SetError(1, 0 * GUICtrlDelete($iLabel), 0)
|
||||
EndIf
|
||||
GUICtrlDelete($iLabel)
|
||||
EndIf
|
||||
|
||||
If IsHWnd($__aGUIDisable[$__hGUIDisableHWnd]) Then
|
||||
GUIDelete($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = 0
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = 0
|
||||
Else
|
||||
$__aGUIDisable[$__hGUIDisableHWndPrevious] = $hWnd
|
||||
|
||||
Local $iLeft = 0, $iTop = 0
|
||||
Local $iStyle = GUIGetStyle($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
Local $sCurrentTheme = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes', 'CurrentTheme')
|
||||
Local $iIsClassicTheme = Number(StringInStr($sCurrentTheme, 'Basic.theme', 2) = 0 And StringInStr($sCurrentTheme, 'Ease of Access Themes', 2) > 0)
|
||||
|
||||
Local $aWinGetPos = WinGetClientSize($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
$__aGUIDisable[$__hGUIDisableHWnd] = GUICreate('', $aWinGetPos[0], $aWinGetPos[1], $iLeft + 3, $iTop + 3, $WS_POPUP, $WS_EX_MDICHILD, $__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
GUISetBkColor($bColor, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
WinSetTrans($__aGUIDisable[$__hGUIDisableHWnd], '', Round($iBrightness * (255 / 100)))
|
||||
If not $iAnimate Then
|
||||
GUISetState(@SW_SHOW, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
EndIf
|
||||
GUISetState(@SW_DISABLE, $__aGUIDisable[$__hGUIDisableHWnd])
|
||||
GUISwitch($__aGUIDisable[$__hGUIDisableHWndPrevious])
|
||||
EndIf
|
||||
Return $__aGUIDisable[$__hGUIDisableHWnd]
|
||||
EndFunc ;==>_GUIDisable
|
||||
|
||||
; #INTERNAL_USE_ONLY#============================================================================================================
|
||||
Func __GUIDisable_WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
|
||||
#forceref $hWnd, $iMsg, $iwParam
|
||||
Local $iHeight = _WinAPI_HiWord($ilParam)
|
||||
Local $iWidth = _WinAPI_LoWord($ilParam)
|
||||
If $hWnd = $__aGUIDisable[$__hGUIDisableHWndPrevious] Then
|
||||
Local $iWinGetPos = WinGetPos($__aGUIDisable[$__hGUIDisableHWnd])
|
||||
If @error = 0 Then
|
||||
WinMove($__aGUIDisable[$__hGUIDisableHWnd], '', $iWinGetPos[0], $iWinGetPos[1], $iWidth, $iHeight)
|
||||
EndIf
|
||||
EndIf
|
||||
Return $GUI_RUNDEFMSG
|
||||
EndFunc ;==>__GUIDisable_WM_SIZE
|
13
Chrome InApp/Releases/.media
Executable file
13
Chrome InApp/Releases/.media
Executable file
|
@ -0,0 +1,13 @@
|
|||
#cs ----------------------------------------------------------------------------
|
||||
|
||||
AutoIt Version : 3.3.14.5
|
||||
Auteur: Tyleo
|
||||
|
||||
Fonction du Script :
|
||||
Modèle de Script AutoIt.
|
||||
|
||||
#ce ----------------------------------------------------------------------------
|
||||
|
||||
; Début du script - Ajouter votre code ci-dessous.
|
||||
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
|
||||
|
10
Chrome InApp/TyleoAboutMe.au3
Executable file
10
Chrome InApp/TyleoAboutMe.au3
Executable file
|
@ -0,0 +1,10 @@
|
|||
|
||||
#include <ButtonConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include "MetroGUI-UDF\MetroGUI_UDF.au3"
|
||||
#include <WindowsConstants.au3>
|
||||
|
||||
Func TyleoAbout($SoftName)
|
||||
_Metro_MsgBox(8,"About / A propos",$SoftName & @CRLF & "Tyleo Softwares @ 2021" & @CRLF & " " & @CRLF & "BUILDING TOMORROW" & @CRLF & " " & @CRLF & "This Software is free and Open Source." & @CRLF & "tyleo.dev@outlook.com",400,15)
|
||||
Return True
|
||||
EndFunc
|
BIN
Color Picker/Aslinks Ico.ico
Executable file
BIN
Color Picker/Aslinks Ico.ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 112 KiB |
1
Color Picker/Color Base (AutoIT Version)/MintGreen-0x2FE19A.aucolor
Executable file
1
Color Picker/Color Base (AutoIT Version)/MintGreen-0x2FE19A.aucolor
Executable file
|
@ -0,0 +1 @@
|
|||
0x2FE19A
|
386
Color Picker/ColorPicker For AutoIT Coder.au3
Executable file
386
Color Picker/ColorPicker For AutoIT Coder.au3
Executable file
|
@ -0,0 +1,386 @@
|
|||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Icon=Aslinks Ico.ico
|
||||
#AutoIt3Wrapper_Outfile=..\..\Logiciels\HEXColorPicker_Unified_x32-x86.exe
|
||||
#AutoIt3Wrapper_Outfile_x64=..\..\Logiciels\HEXColorPicker_Unified_x64.exe
|
||||
#AutoIt3Wrapper_Compile_Both=y
|
||||
#AutoIt3Wrapper_Res_Comment=HEX Color Picker Unified
|
||||
#AutoIt3Wrapper_Res_Description=HEX Color Picker Unified
|
||||
#AutoIt3Wrapper_Res_Fileversion=2.0.4.3
|
||||
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
|
||||
#AutoIt3Wrapper_Res_ProductName=HEX Color Picker Unified
|
||||
#AutoIt3Wrapper_Res_ProductVersion=2.0.4.0
|
||||
#AutoIt3Wrapper_Res_CompanyName=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalCopyright=Tyleo Softwares
|
||||
#AutoIt3Wrapper_Res_LegalTradeMarks=Tyleo Softwares
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#include <ButtonConstants.au3>
|
||||
#include <EditConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <File.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
#include <Misc.au3>
|
||||
#include "TyleoAboutMe.au3"
|
||||
|
||||
; Fixed Color Vars
|
||||
$FullWhite = "FFFFFF"
|
||||
$FullBlack = "000000"
|
||||
$MatrixGreen = "0DFF06"
|
||||
$MatrixDarkBlue = "040033"
|
||||
$DiscordDark = "2C2F33"
|
||||
$Ice = "4ACBE1"
|
||||
$GoogleGreen = "34A853"
|
||||
$GoogleDark = "202124"
|
||||
$GoogleBlue = "4285F4"
|
||||
$GoogleRed = "EA4335"
|
||||
$GoogleYellow = "FBBC05"
|
||||
$Sand = "E3CCBA"
|
||||
$Buttercup = "e49326"
|
||||
$MicrosoftYellow = "FEF000"
|
||||
$BrightPink = "FF06FF"
|
||||
$Espresso = "784018"
|
||||
$DiscordGray = "99AAB5"
|
||||
$DiscordBluev1 = "5865F2"
|
||||
$DiscordBluev2 = "404EED"
|
||||
$FacebookClassic = "4267B2"
|
||||
$FacebookBlue = "1877F2"
|
||||
$Mint = "ACCCAC"
|
||||
$MaterialBlue = "0080FF"
|
||||
$Win11Blue = "0067B8"
|
||||
$Magenta = "C219BF"
|
||||
|
||||
$AltColor1 = "CC0000"
|
||||
$AltColor2 = "9400EC"
|
||||
|
||||
$CodeName = "ASLINKS"
|
||||
$CurrentVer = FileGetVersion(@AutoItExe) & " " & $CodeName
|
||||
|
||||
$Prog = "Color Picker for AutoIT " & $CurrentVer
|
||||
|
||||
#Region ### START Koda GUI section ### Form=
|
||||
Global $GUI = GUICreate($Prog, 460, 125, 295, 325)
|
||||
Global $PickColor = GUICtrlCreateButton("Pick Color", 8, 55, 209, 41)
|
||||
GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
|
||||
GUICtrlSetColor(-1,0x000000)
|
||||
GUICtrlSetBkColor(-1,0xFFFFFF)
|
||||
Global $HEX = GUICtrlCreateInput("", 8, 8, 209, 41, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$WS_EX_WINDOWEDGE))
|
||||
GUICtrlSetFont(-1, 20, 400, 0, "Segoe UI")
|
||||
GUICtrlSetColor(-1,0x000000)
|
||||
GUICtrlSetBkColor(-1,0xFFFFFF)
|
||||
Global $GUI_Menu_File = GUICtrlCreateMenu("File")
|
||||
Global $GUI_Menu_File_Save = GUICtrlCreateMenuItem("Save Color to Base",$GUI_Menu_File)
|
||||
Global $GUI_Menu_File_OpenBase = GUICtrlCreateMenuItem("Open Color Base",$GUI_Menu_File)
|
||||
Global $GUI_Menu_File_Refresh = GUICtrlCreateMenuItem("Refresh Color List",$GUI_Menu_File)
|
||||
GUICtrlCreateMenuItem("",$GUI_Menu_File)
|
||||
Global $GUI_Menu_File_Remove = GUICtrlCreateMenuItem("Delete this color",$GUI_Menu_File)
|
||||
|
||||
Global $GUI_Menu_Color = GUICtrlCreateMenu("Color")
|
||||
Global $GUI_Menu_Color_ExportNoAutoIT = GUICtrlCreateMenuItem("Copy Non AutoIT Color Code (Without '0x')",$GUI_Menu_Color)
|
||||
|
||||
Global $GUI_Menu_Options = GUICtrlCreateMenu("Options")
|
||||
Global $GUI_Menu_Options_EditCfg = GUICtrlCreateMenuItem("Edit Color Base Location",$GUI_Menu_Options)
|
||||
|
||||
Global $GUI_Menu_About = GUICtrlCreateMenu("About")
|
||||
Global $GUI_Menu_About_Dev = GUICtrlCreateMenuItem("Developers",$GUI_Menu_About)
|
||||
Global $GUI_Menu_About_Ver = GUICtrlCreateMenuItem("Color Picker " & $CurrentVer,$GUI_Menu_About)
|
||||
GUICtrlSetState($GUI_Menu_About_Ver,$GUI_DISABLE)
|
||||
|
||||
; Color Fixed Set
|
||||
Global $CFS_1 = GUICtrlCreateButton("", 380, 7, 15, 15)
|
||||
DefineBkFromHex(-1, $GoogleDark)
|
||||
GUICtrlSetTip(-1, "Google Dark")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_2 = GUICtrlCreateButton("", 395, 7, 15, 15)
|
||||
DefineBkFromHex(-1, $GoogleGreen)
|
||||
GUICtrlSetTip(-1, "Google Green")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_3 = GUICtrlCreateButton("", 410, 7, 15, 15)
|
||||
DefineBkFromHex(-1, $GoogleRed)
|
||||
GUICtrlSetTip(-1, "Google Red")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_4 = GUICtrlCreateButton("", 425, 7, 15, 15)
|
||||
DefineBkFromHex(-1, $GoogleYellow)
|
||||
GUICtrlSetTip(-1, "Google Yellow")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_5 = GUICtrlCreateButton("", 440, 7, 15, 15)
|
||||
DefineBkFromHex(-1, $FacebookBlue)
|
||||
GUICtrlSetTip(-1, "Facebook Blue")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_6 = GUICtrlCreateButton("", 380, 25, 15, 15)
|
||||
DefineBkFromHex(-1, $FacebookClassic)
|
||||
GUICtrlSetTip(-1, "Facebook Classic Blue")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_7 = GUICtrlCreateButton("", 395, 25, 15, 15)
|
||||
DefineBkFromHex(-1, $DiscordBluev1)
|
||||
GUICtrlSetTip(-1, "Discord Blue v1")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_8 = GUICtrlCreateButton("", 410, 25, 15, 15)
|
||||
DefineBkFromHex(-1, $DiscordBluev2)
|
||||
GUICtrlSetTip(-1, "Discord Blue v2")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_9 = GUICtrlCreateButton("", 425, 25, 15, 15)
|
||||
DefineBkFromHex(-1, $DiscordDark)
|
||||
GUICtrlSetTip(-1, "Discord Dark")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_10 = GUICtrlCreateButton("", 440, 25, 15, 15)
|
||||
DefineBkFromHex(-1, $DiscordGray)
|
||||
GUICtrlSetTip(-1, "Discord Gray")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_11 = GUICtrlCreateButton("", 380, 25 + 18, 15, 15)
|
||||
DefineBkFromHex(-1, $Buttercup)
|
||||
GUICtrlSetTip(-1, "Buttercup")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_12 = GUICtrlCreateButton("", 395, 25 + 18, 15, 15)
|
||||
DefineBkFromHex(-1, $Ice)
|
||||
GUICtrlSetTip(-1, "Ice")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_13 = GUICtrlCreateButton("", 410, 25 + 18, 15, 15)
|
||||
DefineBkFromHex(-1, $MaterialBlue)
|
||||
GUICtrlSetTip(-1, "Material Blue")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_14 = GUICtrlCreateButton("", 425, 25 + 18, 15, 15)
|
||||
DefineBkFromHex(-1, $Win11Blue)
|
||||
GUICtrlSetTip(-1, "Windows 11 Blue")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_15 = GUICtrlCreateButton("", 440, 25 + 18, 15, 15)
|
||||
DefineBkFromHex(-1, $MatrixGreen)
|
||||
GUICtrlSetTip(-1, "MATRIX Green")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_16 = GUICtrlCreateButton("", 380, 25 + 36, 15, 15)
|
||||
DefineBkFromHex(-1, $MatrixDarkBlue)
|
||||
GUICtrlSetTip(-1, "MATRIX Dark Blue")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_17 = GUICtrlCreateButton("", 395, 25 + 36, 15, 15)
|
||||
DefineBkFromHex(-1, $Espresso)
|
||||
GUICtrlSetTip(-1, "Espresso What Else")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_18 = GUICtrlCreateButton("", 410, 25 + 36, 15, 15)
|
||||
DefineBkFromHex(-1, $Sand)
|
||||
GUICtrlSetTip(-1, "Sand")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_19 = GUICtrlCreateButton("", 425, 25 + 36, 15, 15)
|
||||
DefineBkFromHex(-1, $Mint)
|
||||
GUICtrlSetTip(-1, "Mint")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_20 = GUICtrlCreateButton("", 440, 25 + 36, 15, 15)
|
||||
DefineBkFromHex(-1, $Magenta)
|
||||
GUICtrlSetTip(-1, "Magenta")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_21 = GUICtrlCreateButton("", 380, 25 + 54, 15, 15)
|
||||
DefineBkFromHex(-1, $BrightPink)
|
||||
GUICtrlSetTip(-1, "Bright Pink")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_22 = GUICtrlCreateButton("", 395, 25 + 54, 15, 15)
|
||||
DefineBkFromHex(-1, $AltColor1)
|
||||
GUICtrlSetTip(-1, "Dev Choice #1")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_23 = GUICtrlCreateButton("", 410, 25 + 54, 15, 15)
|
||||
DefineBkFromHex(-1, $AltColor2)
|
||||
GUICtrlSetTip(-1, "Dev Choice #2")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_24 = GUICtrlCreateButton("", 425, 25 + 54, 15, 15)
|
||||
DefineBkFromHex(-1, $FullBlack)
|
||||
GUICtrlSetTip(-1, "Perfect Black (PitchBlack)")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
Global $CFS_25 = GUICtrlCreateButton("", 440, 25 + 54, 15, 15)
|
||||
DefineBkFromHex(-1, $FullWhite)
|
||||
GUICtrlSetTip(-1, "Perfect White (FluxWhite)")
|
||||
GUICtrlSetCursor(-1, 0)
|
||||
|
||||
; File List
|
||||
Global $GUI_ColorBase_List = GUICtrlCreateList("0x000000",220,8,155,97, -1, $WS_EX_WINDOWEDGE)
|
||||
GUICtrlSetFont(-1,8,900,"","Segoe UI")
|
||||
GUICtrlSetData($GUI_ColorBase_List,"0xFFFFFF")
|
||||
;
|
||||
|
||||
GUISetState(@SW_SHOW)
|
||||
#EndRegion ### END Koda GUI section ###
|
||||
|
||||
if Not FileExists(@ScriptDir & "\ColorsLocation_AutoIT.ini") Then
|
||||
IniWrite(@ScriptDir & "\ColorsLocation_AutoIT.ini","Colors Location","Dir",@ScriptDir & "\Color Base (AutoIT Version)")
|
||||
EndIf
|
||||
|
||||
$ColorBase = IniRead(@ScriptDir & "\ColorsLocation_AutoIT.ini","Colors Location","Dir",@ScriptDir & "\Color Base (AutoIT Version)")
|
||||
|
||||
if Not FileExists($ColorBase) Then
|
||||
DirCreate($ColorBase)
|
||||
EndIf
|
||||
|
||||
ColorBaseRefresh()
|
||||
|
||||
$NextLiveColor = GUICtrlRead($HEX)
|
||||
if StringInStr($NextLiveColor,"0x","",1) Then
|
||||
GUICtrlSetColor($HEX,$NextLiveColor)
|
||||
GUISetBkColor($NextLiveColor)
|
||||
EndIf
|
||||
|
||||
While 1
|
||||
$nMsg = GUIGetMsg()
|
||||
LiveColor()
|
||||
Switch $nMsg
|
||||
Case $GUI_EVENT_CLOSE
|
||||
Exit
|
||||
|
||||
Case $CFS_1
|
||||
GUICtrlSetData($HEX, "0x" & $GoogleDark)
|
||||
Case $CFS_2
|
||||
GUICtrlSetData($HEX, "0x" & $GoogleGreen)
|
||||
Case $CFS_3
|
||||
GUICtrlSetData($HEX, "0x" & $GoogleRed)
|
||||
Case $CFS_4
|
||||
GUICtrlSetData($HEX, "0x" & $GoogleYellow)
|
||||
Case $CFS_5
|
||||
GUICtrlSetData($HEX, "0x" & $FacebookBlue)
|
||||
Case $CFS_6
|
||||
GUICtrlSetData($HEX, "0x" & $FacebookClassic)
|
||||
Case $CFS_7
|
||||
GUICtrlSetData($HEX, "0x" & $DiscordBluev1)
|
||||
Case $CFS_8
|
||||
GUICtrlSetData($HEX, "0x" & $DiscordBluev2)
|
||||
Case $CFS_9
|
||||
GUICtrlSetData($HEX, "0x" & $DiscordDark)
|
||||
Case $CFS_10
|
||||
GUICtrlSetData($HEX, "0x" & $DiscordGray)
|
||||
Case $CFS_11
|
||||
GUICtrlSetData($HEX, "0x" & $Buttercup)
|
||||
Case $CFS_12
|
||||
GUICtrlSetData($HEX, "0x" & $Ice)
|
||||
Case $CFS_13
|
||||
GUICtrlSetData($HEX, "0x" & $MaterialBlue)
|
||||
Case $CFS_14
|
||||
GUICtrlSetData($HEX, "0x" & $Win11Blue)
|
||||
Case $CFS_15
|
||||
GUICtrlSetData($HEX, "0x" & $MatrixGreen)
|
||||
Case $CFS_16
|
||||
GUICtrlSetData($HEX, "0x" & $MatrixDarkBlue)
|
||||
Case $CFS_17
|
||||
GUICtrlSetData($HEX, "0x" & $Espresso)
|
||||
Case $CFS_18
|
||||
GUICtrlSetData($HEX, "0x" & $Sand)
|
||||
Case $CFS_19
|
||||
GUICtrlSetData($HEX, "0x" & $Mint)
|
||||
Case $CFS_20
|
||||
GUICtrlSetData($HEX, "0x" & $Magenta)
|
||||
Case $CFS_21
|
||||
GUICtrlSetData($HEX, "0x" & $BrightPink)
|
||||
Case $CFS_22
|
||||
GUICtrlSetData($HEX, "0x" & $AltColor1)
|
||||
Case $CFS_23
|
||||
GUICtrlSetData($HEX, "0x" & $AltColor2)
|
||||
Case $CFS_24
|
||||
GUICtrlSetData($HEX, "0x" & $FullBlack)
|
||||
Case $CFS_25
|
||||
GUICtrlSetData($HEX, "0x" & $FullWhite)
|
||||
|
||||
Case $GUI_Menu_Options_EditCfg
|
||||
$nLocation = FileSelectFolder("Select a new location for your Color Base",$ColorBase)
|
||||
if $nLocation = "" Then
|
||||
ColorBaseRefresh()
|
||||
Else
|
||||
IniWrite(@ScriptDir & "\ColorsLocation_AutoIT.ini","Colors Location","Dir",$nLocation)
|
||||
$ColorBase = $nLocation
|
||||
ColorBaseRefresh()
|
||||
EndIf
|
||||
|
||||
Case $GUI_Menu_File_Remove
|
||||
$tFile = GUICtrlRead($GUI_ColorBase_List)
|
||||
if $tFile = "" Then
|
||||
; Nothing
|
||||
Else
|
||||
$confirm = InputBox("Confirmation Dialog","Please confirm the deletion of this color" & @CRLF & "Target : " & $tFile & @CRLF & "Enter 'YES' to confirm and enter !","","","",150)
|
||||
if $confirm = "YES" Then
|
||||
FileDelete($ColorBase & "\" & $tFile)
|
||||
ColorBaseRefresh()
|
||||
EndIf
|
||||
EndIf
|
||||
|
||||
Case $GUI_Menu_File_Refresh
|
||||
ColorBaseRefresh()
|
||||
|
||||
Case $GUI_Menu_About_Dev
|
||||
TyleoAbout($Prog & " Unified Edition")
|
||||
|
||||
Case $GUI_Menu_Color_ExportNoAutoIT
|
||||
$NoITClip = GUICtrlRead($HEX)
|
||||
$NoITClip = StringTrimLeft($NoITClip,2)
|
||||
ClipPut($NoITClip)
|
||||
|
||||
Case $PickColor
|
||||
$hColor = _ChooseColor(2)
|
||||
if $hColor = "-1" Then
|
||||
; Nothing
|
||||
Else
|
||||
GUISetBkColor($hColor)
|
||||
GUICtrlSetBkColor($HEX,$hColor)
|
||||
GUICtrlSetBkColor($GUI_ColorBase_List,$hColor)
|
||||
GUICtrlSetBkColor($PickColor,$hColor)
|
||||
GUICtrlSetData($HEX,$hColor)
|
||||
ClipPut($hColor)
|
||||
EndIf
|
||||
|
||||
Case $GUI_ColorBase_List
|
||||
$iFileColor = GUICtrlRead($GUI_ColorBase_List)
|
||||
$oFileOpen = FileOpen($ColorBase & "\" & $iFileColor & ".aucolor")
|
||||
$iColor = FileRead($oFileOpen)
|
||||
FileClose($oFileOpen)
|
||||
GUISetBkColor($iColor)
|
||||
GUICtrlSetBkColor($HEX,$iColor)
|
||||
GUICtrlSetColor($HEX,0xFFFFFF)
|
||||
GUICtrlSetBkColor($GUI_ColorBase_List,$iColor)
|
||||
GUICtrlSetBkColor($PickColor,$iColor)
|
||||
GUICtrlSetData($HEX,$iColor)
|
||||
ClipPut($iColor)
|
||||
|
||||
|
||||
Case $GUI_Menu_File_Save
|
||||
$sName = InputBox("Color Human Readable Name","Enter the name of your color, You can" & @CRLF & "Choose anything.","","","",140)
|
||||
|
||||
$sColor = GUICtrlRead($HEX)
|
||||
if $sName = "" Then
|
||||
$sFileName = $sColor & ".aucolor"
|
||||
Else
|
||||
$sFileName = $sName & "-" & $sColor & ".aucolor"
|
||||
EndIf
|
||||
$sFileOpen = FileOpen($ColorBase & "\" & $sFileName,2)
|
||||
FileWrite($sFileOpen,$sColor)
|
||||
FileClose($sFileOpen)
|
||||
ColorBaseRefresh()
|
||||
|
||||
|
||||
Case $GUI_Menu_File_OpenBase
|
||||
ShellExecute($ColorBase)
|
||||
|
||||
EndSwitch
|
||||
WEnd
|
||||
|
||||
Func ColorBaseRefresh()
|
||||
GUICtrlSetData($GUI_ColorBase_List,"")
|
||||
$cColorFiles = _FileListToArray($ColorBase,"*.aucolor",$FLTA_FILES,False)
|
||||
_ArrayDelete($cColorFiles, 0)
|
||||
_ArrayTrim($cColorFiles,8,1)
|
||||
$cFiles = _ArrayToString($cColorFiles)
|
||||
GUICtrlSetData($GUI_ColorBase_List,$cFiles)
|
||||
$cCheck = GUICtrlRead($GUI_ColorBase_List)
|
||||
if $cCheck = "-1" Then
|
||||
GUICtrlSetData($GUI_ColorBase_List,"")
|
||||
EndIf
|
||||
EndFunc
|
||||
|
||||
Func LiveColor()
|
||||
$LiveColor = GUICtrlRead($HEX)
|
||||
if $LiveColor = $NextLiveColor Then
|
||||
; Nothing
|
||||
Else
|
||||
$NextLiveColor = GUICtrlRead($HEX)
|
||||
if StringInStr($NextLiveColor,"0x","",1) Then
|
||||
GUICtrlSetBkColor($HEX,$NextLiveColor)
|
||||
GUICtrlSetBkColor($GUI_ColorBase_List,$NextLiveColor)
|
||||
GUICtrlSetBkColor($PickColor,$NextLiveColor)
|
||||
GUISetBkColor($NextLiveColor)
|
||||
EndIf
|
||||
EndIf
|
||||
EndFunc
|
||||
|
||||
Func DefineBkFromHex($Target, $ColorCode)
|
||||
$ColorCode = "0x" & $ColorCode
|
||||
GUICtrlSetBkColor($Target, $ColorCode)
|
||||
EndFunc
|
BIN
Color Picker/ColorPicker For AutoIT Coder_Icon.ico
Executable file
BIN
Color Picker/ColorPicker For AutoIT Coder_Icon.ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 113 KiB |
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue