From 758cc6be4bb28013a2fa5850f773f3efd8570e61 Mon Sep 17 00:00:00 2001 From: Steve Jordi Date: Wed, 30 Sep 2026 17:07:32 +0200 Subject: [PATCH] First Release - Cleaned up useless actions - Removed fake clicks to focus only on Mouse UP events - Gracefully terminate threads when stoping or leaving the application --- BatteryHealth.dproj | 2380 +++++++++++++++++++++---------------------- README.md | 69 +- main.dfm | 29 +- main.pas | 298 +++--- 4 files changed, 1421 insertions(+), 1355 deletions(-) diff --git a/BatteryHealth.dproj b/BatteryHealth.dproj index 6dc0466..4004a84 100644 --- a/BatteryHealth.dproj +++ b/BatteryHealth.dproj @@ -1,1191 +1,1189 @@ - - - {6B5250F9-78DF-4722-87AB-697436D5E3AC} - 20.4 - VCL - True - Debug - Win64 - BatteryHealth - 2097155 - Application - BatteryHealth.dpr - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - true - Cfg_2 - true - true - - - true - Cfg_2 - true - true - - - true - Cfg_2 - true - true - - - .\$(Platform)\$(Config) - .\$(Platform)\$(Config) - false - false - false - false - false - System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) - $(BDS)\bin\delphi_PROJECTICON.ico - $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png - $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png - BatteryHealth - true - true - 1033 - CompanyName=TiltSoft;FileDescription=Battery Health;FileVersion=1.0.0.0;InternalName=batteryhealth;LegalCopyright=(C)2026-present TiltSoft;LegalTrademarks=;OriginalFilename=;ProgramID=com.tiltsoft.batteryhealth;ProductName=Battery Health;ProductVersion=1.0.0.0;Comments= - - - VCLTMSFNCMapsPkg;vclwinx;DataSnapServer;FMXTMSFNCUIPackPkg;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;VCLTMSFNCWebSocketPkg;FMXTMSFNCAppToolsPkg;IndyProtocols;VCLTMSFNCDashboardPackPkg;vclx;Skia.Package.RTL;VCLTMSFNCBloxPkg;dbxcds;vcledge;VCLTMSFNCGanttChartPkg;aurelius;frControlsLibrary37;FrameStandPackage_11_1;FmxTeeUI;DBXFirebirdDriver;FireDACSqliteDriver;DbxClientDriver;TMSScripter_IDE;soapmidas;TeeUI;dbexpress;inet;vcltouch;FireDACDBXDriver;fmxdae;tmsbcl;CustomIPTransport;FireDACMSSQLDriver;VCLTMSFNCCloudPackPkg;FMXfrCoreLibrary37;IndySystem;VCLTMSFNCBloxToolBarsPkg;frx37;TMSFNCCorePkg;ibxbindings;GalaxyTab4;VCLTMSFNCChartPkg;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;TMSAIStudioPkg;TMSScripter_VCL;bindcompdbx;rtl;FireDACMySQLDriver;remotedb;DBXSqliteDriver;FMXTMSFNCChartPkg;frxe37;DBXSybaseASEDriver;FMXTMSFNCBloxToolBarsPkg;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;VCLTMSFNCUIPackPkg;xmlrtl;ibxpress;dsnap;xdata;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;FMXTMSFNCWebSocketPkg;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTMSFNCMapsPkg;DatasnapConnectorsFreePascal;LGWatchR;FMXTMSFNCCorePkg;TMSScripter_Memo;FMXTMSFNCChartGridAdapterPkg;frxDB37;emshosting;sparkle;FireDACCommonDriver;frCoreLibrary37;sphinx;IndyIPClient;FMXTMSFNCCloudPackPkg;bindcompvclwinx;emsedge;bindcompfmx;inetdb;ibmonitor;FireDACASADriver;Tee;vclactnband;FMXTMSFNCWXPackPkg;TMSMQTTPkg;fmxFireDAC;TMSScripter;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;fmxase;FMXfrx37;DBXOdbcDriver;VCLTMSFNCWXPackPkg;dbrtl;FireDACOracleDriver;Skia.Package.FMX;VCLTMSFNCAppToolsPkg;CodeSiteExpressPkg;TeeDB;frLocalizationLibrary37;FireDACMSAccDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXTMSFNCGanttChartPkg;VCLTMSFNCChartGridAdapterPkg;FMXfrxDB37;FireDACTDataDriver;Skia.Package.VCL;vcldb;FMXTMSFNCDashboardPackPkg;bindcomp;inetstn;IndyCore;RESTBackendComponents;TMSMQTTPkgDE;dmvcframeworkDT;FireDACADSDriver;RESTComponents;TMSAIStudioPkgExtensions;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;TMSScripter_Legacy;FMXTMSFNCRESTClientEditorPkg;frGraphicsLibrary37;TMSFNCPushNotificationsPkg;DBXDb2Driver;FMXTMSFNCBloxPkg;VCLTMSFNCRESTClientEditorPkg;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;FMXfrLocalizationLibrary37;dmvcframeworkRT;tethering;bindcompvcl;CloudService;DBXSybaseASADriver;VCLTMSFNCCorePkg;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - Debug - true - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - 1033 - $(BDS)\bin\default_app.manifest - $(ProjectName).Artwork\Windows\AppIcon.ico - $(ProjectName).Artwork\Windows\AppIcon.icns - $(ProjectName).Artwork\Windows\Uwp_44.png - $(ProjectName).Artwork\Windows\Uwp_150.png - - - VCLTMSFNCMapsPkg;vclwinx;DataSnapServer;FMXTMSFNCUIPackPkg;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;VCLTMSFNCWebSocketPkg;FMXTMSFNCAppToolsPkg;IndyProtocols;VCLTMSFNCDashboardPackPkg;vclx;VCLTMSFNCBloxPkg;dbxcds;vcledge;VCLTMSFNCGanttChartPkg;aurelius;FrameStandPackage_11_1;FmxTeeUI;DBXFirebirdDriver;FireDACSqliteDriver;DbxClientDriver;TMSScripter_IDE;soapmidas;TeeUI;dbexpress;inet;vcltouch;FireDACDBXDriver;fmxdae;tmsbcl;CustomIPTransport;FireDACMSSQLDriver;VCLTMSFNCCloudPackPkg;IndySystem;VCLTMSFNCBloxToolBarsPkg;TMSFNCCorePkg;ibxbindings;VCLTMSFNCChartPkg;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;TMSAIStudioPkg;TMSScripter_VCL;bindcompdbx;rtl;FireDACMySQLDriver;remotedb;DBXSqliteDriver;FMXTMSFNCChartPkg;DBXSybaseASEDriver;FMXTMSFNCBloxToolBarsPkg;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;VCLTMSFNCUIPackPkg;xmlrtl;ibxpress;dsnap;xdata;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;FMXTMSFNCWebSocketPkg;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTMSFNCMapsPkg;DatasnapConnectorsFreePascal;FMXTMSFNCCorePkg;TMSScripter_Memo;FMXTMSFNCChartGridAdapterPkg;emshosting;sparkle;FireDACCommonDriver;sphinx;IndyIPClient;FMXTMSFNCCloudPackPkg;bindcompvclwinx;emsedge;bindcompfmx;inetdb;ibmonitor;FireDACASADriver;Tee;vclactnband;FMXTMSFNCWXPackPkg;TMSMQTTPkg;fmxFireDAC;TMSScripter;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;fmxase;DBXOdbcDriver;VCLTMSFNCWXPackPkg;dbrtl;FireDACOracleDriver;VCLTMSFNCAppToolsPkg;TeeDB;FireDACMSAccDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXTMSFNCGanttChartPkg;VCLTMSFNCChartGridAdapterPkg;FireDACTDataDriver;Skia.Package.VCL;vcldb;FMXTMSFNCDashboardPackPkg;bindcomp;inetstn;IndyCore;RESTBackendComponents;TMSMQTTPkgDE;dmvcframeworkDT;FireDACADSDriver;RESTComponents;TMSAIStudioPkgExtensions;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;TMSScripter_Legacy;FMXTMSFNCRESTClientEditorPkg;TMSFNCPushNotificationsPkg;DBXDb2Driver;FMXTMSFNCBloxPkg;VCLTMSFNCRESTClientEditorPkg;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;dmvcframeworkRT;tethering;bindcompvcl;CloudService;DBXSybaseASADriver;VCLTMSFNCCorePkg;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - Debug - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - $(BDS)\bin\default_app.manifest - $(ProjectName).Artwork\Windows\AppIcon.ico - $(ProjectName).Artwork\Windows\AppIcon.icns - $(ProjectName).Artwork\Windows\Uwp_44.png - none - $(ProjectName).Artwork\Windows\Uwp_150.png - - - VCLTMSFNCMapsPkg;vclwinx;DataSnapServer;FMXTMSFNCUIPackPkg;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;VCLTMSFNCWebSocketPkg;FMXTMSFNCAppToolsPkg;IndyProtocols;VCLTMSFNCDashboardPackPkg;vclx;VCLTMSFNCBloxPkg;dbxcds;vcledge;VCLTMSFNCGanttChartPkg;aurelius;FmxTeeUI;DBXFirebirdDriver;FireDACSqliteDriver;DbxClientDriver;TMSScripter_IDE;soapmidas;TeeUI;dbexpress;inet;vcltouch;FireDACDBXDriver;fmxdae;tmsbcl;CustomIPTransport;FireDACMSSQLDriver;VCLTMSFNCCloudPackPkg;IndySystem;TMSFNCCorePkg;ibxbindings;VCLTMSFNCChartPkg;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;TMSScripter_VCL;bindcompdbx;rtl;FireDACMySQLDriver;remotedb;DBXSqliteDriver;FMXTMSFNCChartPkg;DBXSybaseASEDriver;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;VCLTMSFNCUIPackPkg;xmlrtl;ibxpress;dsnap;xdata;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;FMXTMSFNCWebSocketPkg;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTMSFNCMapsPkg;DatasnapConnectorsFreePascal;FMXTMSFNCCorePkg;TMSScripter_Memo;emshosting;sparkle;FireDACCommonDriver;sphinx;IndyIPClient;FMXTMSFNCCloudPackPkg;bindcompvclwinx;emsedge;bindcompfmx;inetdb;ibmonitor;FireDACASADriver;Tee;vclactnband;FMXTMSFNCWXPackPkg;fmxFireDAC;TMSScripter;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;fmxase;DBXOdbcDriver;VCLTMSFNCWXPackPkg;dbrtl;FireDACOracleDriver;VCLTMSFNCAppToolsPkg;TeeDB;FireDACMSAccDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXTMSFNCGanttChartPkg;FireDACTDataDriver;Skia.Package.VCL;vcldb;FMXTMSFNCDashboardPackPkg;bindcomp;inetstn;IndyCore;RESTBackendComponents;FireDACADSDriver;RESTComponents;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;TMSScripter_Legacy;TMSFNCPushNotificationsPkg;DBXDb2Driver;FMXTMSFNCBloxPkg;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;tethering;bindcompvcl;CloudService;DBXSybaseASADriver;VCLTMSFNCCorePkg;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - Debug - true - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - 1033 - $(BDS)\bin\default_app.manifest - $(ProjectName).Artwork\Windows\AppIcon.ico - $(ProjectName).Artwork\Windows\AppIcon.icns - $(ProjectName).Artwork\Windows\Uwp_44.png - $(ProjectName).Artwork\Windows\Uwp_150.png - - - DEBUG;$(DCC_Define) - true - false - true - true - true - true - true - - - false - PerMonitorV2 - true - 1033 - - - PerMonitorV2 - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - - - PerMonitorV2 - - - false - RELEASE;$(DCC_Define) - 0 - 0 - - - PerMonitorV2 - - - PerMonitorV2 - - - PerMonitorV2 - - - - MainSource - - -
frmMain
- dfm -
- - Base - - - Cfg_1 - Base - - - Cfg_2 - Base - -
- - Delphi.Personality.12 - Application - - - - BatteryHealth.dpr - - - File c:\radstudio\AddOns\TMS\TMS Setup\.tmssetup\build\bpl\Win32\TMSWEBCorePkgDE370.bpl not found - File c:\radstudio\AddOns\TMS\TMS Setup\.tmssetup\build\bpl\Win32\TMSWEBCorePkgLib370.bpl not found - File c:\radstudio\AddOns\TMS\TMS Setup\.tmssetup\build\bpl\Win32\TMSWEBCorePkg370.bpl not found - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - - - - - - BatteryHealth.exe - true - - - - - 1 - - - Contents\MacOS - 1 - - - 0 - - - - - res\xml - 1 - - - res\xml - 1 - - - - - library\lib\armeabi - 1 - - - library\lib\armeabi - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - library\lib\mips - 1 - - - library\lib\mips - 1 - - - - - library\lib\armeabi-v7a - 1 - - - library\lib\arm64-v8a - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - res\drawable - 1 - - - res\drawable - 1 - - - - - res\drawable-anydpi-v21 - 1 - - - res\drawable-anydpi-v21 - 1 - - - - - res\values - 1 - - - res\values - 1 - - - - - res\values-v21 - 1 - - - res\values-v21 - 1 - - - - - res\values-v31 - 1 - - - res\values-v31 - 1 - - - - - res\values-v35 - 1 - - - res\values-v35 - 1 - - - - - res\drawable-anydpi-v26 - 1 - - - res\drawable-anydpi-v26 - 1 - - - - - res\drawable - 1 - - - res\drawable - 1 - - - - - res\drawable - 1 - - - res\drawable - 1 - - - - - res\drawable - 1 - - - res\drawable - 1 - - - - - res\drawable-anydpi-v33 - 1 - - - res\drawable-anydpi-v33 - 1 - - - - - res\values - 1 - - - res\values - 1 - - - - - res\values-night-v21 - 1 - - - res\values-night-v21 - 1 - - - - - res\drawable - 1 - - - res\drawable - 1 - - - - - res\drawable-xxhdpi - 1 - - - res\drawable-xxhdpi - 1 - - - - - res\drawable-xxxhdpi - 1 - - - res\drawable-xxxhdpi - 1 - - - - - res\drawable-ldpi - 1 - - - res\drawable-ldpi - 1 - - - - - res\drawable-mdpi - 1 - - - res\drawable-mdpi - 1 - - - - - res\drawable-hdpi - 1 - - - res\drawable-hdpi - 1 - - - - - res\drawable-xhdpi - 1 - - - res\drawable-xhdpi - 1 - - - - - res\drawable-mdpi - 1 - - - res\drawable-mdpi - 1 - - - - - res\drawable-hdpi - 1 - - - res\drawable-hdpi - 1 - - - - - res\drawable-xhdpi - 1 - - - res\drawable-xhdpi - 1 - - - - - res\drawable-xxhdpi - 1 - - - res\drawable-xxhdpi - 1 - - - - - res\drawable-xxxhdpi - 1 - - - res\drawable-xxxhdpi - 1 - - - - - res\drawable-small - 1 - - - res\drawable-small - 1 - - - - - res\drawable-normal - 1 - - - res\drawable-normal - 1 - - - - - res\drawable-large - 1 - - - res\drawable-large - 1 - - - - - res\drawable-xlarge - 1 - - - res\drawable-xlarge - 1 - - - - - res\values - 1 - - - res\values - 1 - - - - - res\drawable-anydpi-v24 - 1 - - - res\drawable-anydpi-v24 - 1 - - - - - res\drawable - 1 - - - res\drawable - 1 - - - - - res\drawable-night-anydpi-v21 - 1 - - - res\drawable-night-anydpi-v21 - 1 - - - - - res\drawable-anydpi-v31 - 1 - - - res\drawable-anydpi-v31 - 1 - - - - - res\drawable-night-anydpi-v31 - 1 - - - res\drawable-night-anydpi-v31 - 1 - - - - - 1 - - - Contents\MacOS - 1 - - - 0 - - - - - Contents\MacOS - 1 - .framework - - - Contents\MacOS - 1 - .framework - - - Contents\MacOS - 1 - .framework - - - 0 - - - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - 0 - .dll;.bpl - - - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - 0 - .bpl - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - Contents\Resources\StartUp\ - 0 - - - Contents\Resources\StartUp\ - 0 - - - Contents\Resources\StartUp\ - 0 - - - 0 - - - - - 1 - - - 1 - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - ..\ - 1 - - - ..\ - 1 - - - ..\ - 1 - - - - - Contents - 1 - - - Contents - 1 - - - Contents - 1 - - - - - Contents\Resources - 1 - - - Contents\Resources - 1 - - - Contents\Resources - 1 - - - - - library\lib\armeabi-v7a - 1 - - - library\lib\arm64-v8a - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - Contents\MacOS - 1 - - - Contents\MacOS - 1 - - - Contents\MacOS - 1 - - - 0 - - - - - library\lib\armeabi-v7a - 1 - - - - - 1 - - - 1 - - - 1 - - - 1 - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - ..\ - 1 - - - ..\ - 1 - - - ..\ - 1 - - - - - 1 - - - 1 - - - 1 - - - - - ..\$(PROJECTNAME).launchscreen - 64 - - - ..\$(PROJECTNAME).launchscreen - 64 - - - - - 1 - - - 1 - - - 1 - - - - - Assets - 1 - - - Assets - 1 - - - Assets - 1 - - - - - Assets - 1 - - - Assets - 1 - - - Assets - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - - - - - - - - - - - - - - True - True - True - - - 12 - - - - -
+ + + {6B5250F9-78DF-4722-87AB-697436D5E3AC} + 20.5 + VCL + True + Release + Win64 + BatteryHealth + 2097155 + Application + BatteryHealth.dpr + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + false + false + false + false + false + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + $(BDS)\bin\delphi_PROJECTICON.ico + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + BatteryHealth + true + true + 1033 + CompanyName=TiltSoft;FileDescription=Battery Health;FileVersion=1.0.0.0;InternalName=batteryhealth;LegalCopyright=(C)2026-present TiltSoft;LegalTrademarks=;OriginalFilename=;ProgramID=com.tiltsoft.batteryhealth;ProductName=Battery Health;ProductVersion=1.0.0.0;Comments= + + + VCLTMSFNCMapsPkg;vclwinx;DataSnapServer;FMXTMSFNCUIPackPkg;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;VCLTMSFNCWebSocketPkg;FMXTMSFNCAppToolsPkg;IndyProtocols;VCLTMSFNCDashboardPackPkg;vclx;Skia.Package.RTL;VCLTMSFNCBloxPkg;dbxcds;vcledge;VCLTMSFNCGanttChartPkg;aurelius;frControlsLibrary37;FrameStandPackage_11_1;FmxTeeUI;DBXFirebirdDriver;FireDACSqliteDriver;DbxClientDriver;TMSScripter_IDE;soapmidas;TeeUI;dbexpress;inet;vcltouch;FireDACDBXDriver;fmxdae;tmsbcl;CustomIPTransport;FireDACMSSQLDriver;VCLTMSFNCCloudPackPkg;FMXfrCoreLibrary37;IndySystem;VCLTMSFNCBloxToolBarsPkg;frx37;TMSFNCCorePkg;ibxbindings;GalaxyTab4;VCLTMSFNCChartPkg;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;TMSAIStudioPkg;TMSScripter_VCL;bindcompdbx;rtl;FireDACMySQLDriver;remotedb;DBXSqliteDriver;FMXTMSFNCChartPkg;frxe37;DBXSybaseASEDriver;FMXTMSFNCBloxToolBarsPkg;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;VCLTMSFNCUIPackPkg;xmlrtl;ibxpress;dsnap;xdata;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;FMXTMSFNCWebSocketPkg;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTMSFNCMapsPkg;DatasnapConnectorsFreePascal;LGWatchR;FMXTMSFNCCorePkg;TMSScripter_Memo;FMXTMSFNCChartGridAdapterPkg;frxDB37;emshosting;sparkle;FireDACCommonDriver;frCoreLibrary37;sphinx;IndyIPClient;FMXTMSFNCCloudPackPkg;bindcompvclwinx;emsedge;bindcompfmx;inetdb;ibmonitor;FireDACASADriver;Tee;vclactnband;FMXTMSFNCWXPackPkg;TMSMQTTPkg;fmxFireDAC;TMSScripter;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;fmxase;FMXfrx37;DBXOdbcDriver;VCLTMSFNCWXPackPkg;dbrtl;FireDACOracleDriver;Skia.Package.FMX;VCLTMSFNCAppToolsPkg;CodeSiteExpressPkg;TeeDB;frLocalizationLibrary37;FireDACMSAccDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXTMSFNCGanttChartPkg;VCLTMSFNCChartGridAdapterPkg;FMXfrxDB37;FireDACTDataDriver;Skia.Package.VCL;vcldb;FMXTMSFNCDashboardPackPkg;bindcomp;inetstn;IndyCore;RESTBackendComponents;TMSMQTTPkgDE;dmvcframeworkDT;FireDACADSDriver;RESTComponents;TMSAIStudioPkgExtensions;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;TMSScripter_Legacy;FMXTMSFNCRESTClientEditorPkg;frGraphicsLibrary37;TMSFNCPushNotificationsPkg;DBXDb2Driver;FMXTMSFNCBloxPkg;VCLTMSFNCRESTClientEditorPkg;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;FMXfrLocalizationLibrary37;dmvcframeworkRT;tethering;bindcompvcl;CloudService;DBXSybaseASADriver;VCLTMSFNCCorePkg;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + $(ProjectName).Artwork\Windows\AppIcon.ico + $(ProjectName).Artwork\Windows\AppIcon.icns + $(ProjectName).Artwork\Windows\Uwp_44.png + $(ProjectName).Artwork\Windows\Uwp_150.png + + + VCLTMSFNCMapsPkg;vclwinx;DataSnapServer;FMXTMSFNCUIPackPkg;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;VCLTMSFNCWebSocketPkg;FMXTMSFNCAppToolsPkg;IndyProtocols;VCLTMSFNCDashboardPackPkg;vclx;VCLTMSFNCBloxPkg;dbxcds;vcledge;VCLTMSFNCGanttChartPkg;aurelius;FrameStandPackage_11_1;FmxTeeUI;DBXFirebirdDriver;FireDACSqliteDriver;DbxClientDriver;TMSScripter_IDE;soapmidas;TeeUI;dbexpress;inet;vcltouch;FireDACDBXDriver;fmxdae;tmsbcl;CustomIPTransport;FireDACMSSQLDriver;VCLTMSFNCCloudPackPkg;IndySystem;VCLTMSFNCBloxToolBarsPkg;TMSFNCCorePkg;ibxbindings;VCLTMSFNCChartPkg;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;TMSAIStudioPkg;TMSScripter_VCL;bindcompdbx;rtl;FireDACMySQLDriver;remotedb;DBXSqliteDriver;FMXTMSFNCChartPkg;DBXSybaseASEDriver;FMXTMSFNCBloxToolBarsPkg;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;VCLTMSFNCUIPackPkg;xmlrtl;ibxpress;dsnap;xdata;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;FMXTMSFNCWebSocketPkg;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTMSFNCMapsPkg;DatasnapConnectorsFreePascal;FMXTMSFNCCorePkg;TMSScripter_Memo;FMXTMSFNCChartGridAdapterPkg;emshosting;sparkle;FireDACCommonDriver;sphinx;IndyIPClient;FMXTMSFNCCloudPackPkg;bindcompvclwinx;emsedge;bindcompfmx;inetdb;ibmonitor;FireDACASADriver;Tee;vclactnband;FMXTMSFNCWXPackPkg;TMSMQTTPkg;fmxFireDAC;TMSScripter;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;fmxase;DBXOdbcDriver;VCLTMSFNCWXPackPkg;dbrtl;FireDACOracleDriver;VCLTMSFNCAppToolsPkg;TeeDB;FireDACMSAccDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXTMSFNCGanttChartPkg;VCLTMSFNCChartGridAdapterPkg;FireDACTDataDriver;Skia.Package.VCL;vcldb;FMXTMSFNCDashboardPackPkg;bindcomp;inetstn;IndyCore;RESTBackendComponents;TMSMQTTPkgDE;dmvcframeworkDT;FireDACADSDriver;RESTComponents;TMSAIStudioPkgExtensions;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;TMSScripter_Legacy;FMXTMSFNCRESTClientEditorPkg;TMSFNCPushNotificationsPkg;DBXDb2Driver;FMXTMSFNCBloxPkg;VCLTMSFNCRESTClientEditorPkg;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;dmvcframeworkRT;tethering;bindcompvcl;CloudService;DBXSybaseASADriver;VCLTMSFNCCorePkg;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + CompanyName=TiltSoft;FileDescription=Battery Health;FileVersion=1.0.0.0;InternalName=batteryhealth;LegalCopyright=(C) 2026-present by TiltSoft;LegalTrademarks=;OriginalFilename=;ProgramID=com.tiltsoft.batteryhealth;ProductName=BatteryHealth;ProductVersion=1.0.0.0;Comments= + $(BDS)\bin\default_app.manifest + $(ProjectName).Artwork\Windows\AppIcon.ico + $(ProjectName).Artwork\Windows\AppIcon.icns + $(ProjectName).Artwork\Windows\Uwp_44.png + none + $(ProjectName).Artwork\Windows\Uwp_150.png + + + VCLTMSFNCMapsPkg;vclwinx;DataSnapServer;FMXTMSFNCUIPackPkg;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;VCLTMSFNCWebSocketPkg;FMXTMSFNCAppToolsPkg;IndyProtocols;VCLTMSFNCDashboardPackPkg;vclx;VCLTMSFNCBloxPkg;dbxcds;vcledge;VCLTMSFNCGanttChartPkg;aurelius;FmxTeeUI;DBXFirebirdDriver;FireDACSqliteDriver;DbxClientDriver;TMSScripter_IDE;soapmidas;TeeUI;dbexpress;inet;vcltouch;FireDACDBXDriver;fmxdae;tmsbcl;CustomIPTransport;FireDACMSSQLDriver;VCLTMSFNCCloudPackPkg;IndySystem;TMSFNCCorePkg;ibxbindings;VCLTMSFNCChartPkg;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;TMSScripter_VCL;bindcompdbx;rtl;FireDACMySQLDriver;remotedb;DBXSqliteDriver;FMXTMSFNCChartPkg;DBXSybaseASEDriver;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;VCLTMSFNCUIPackPkg;xmlrtl;ibxpress;dsnap;xdata;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;FMXTMSFNCWebSocketPkg;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTMSFNCMapsPkg;DatasnapConnectorsFreePascal;FMXTMSFNCCorePkg;TMSScripter_Memo;emshosting;sparkle;FireDACCommonDriver;sphinx;IndyIPClient;FMXTMSFNCCloudPackPkg;bindcompvclwinx;emsedge;bindcompfmx;inetdb;ibmonitor;FireDACASADriver;Tee;vclactnband;FMXTMSFNCWXPackPkg;fmxFireDAC;TMSScripter;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;fmxase;DBXOdbcDriver;VCLTMSFNCWXPackPkg;dbrtl;FireDACOracleDriver;VCLTMSFNCAppToolsPkg;TeeDB;FireDACMSAccDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXTMSFNCGanttChartPkg;FireDACTDataDriver;Skia.Package.VCL;vcldb;FMXTMSFNCDashboardPackPkg;bindcomp;inetstn;IndyCore;RESTBackendComponents;FireDACADSDriver;RESTComponents;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;TMSScripter_Legacy;TMSFNCPushNotificationsPkg;DBXDb2Driver;FMXTMSFNCBloxPkg;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;tethering;bindcompvcl;CloudService;DBXSybaseASADriver;VCLTMSFNCCorePkg;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + $(ProjectName).Artwork\Windows\AppIcon.ico + $(ProjectName).Artwork\Windows\AppIcon.icns + $(ProjectName).Artwork\Windows\Uwp_44.png + $(ProjectName).Artwork\Windows\Uwp_150.png + + + DEBUG;$(DCC_Define) + true + false + true + true + true + true + true + + + false + PerMonitorV2 + true + 1033 + + + PerMonitorV2 + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + $(ProjectName).Artwork\Windows\AppIcon.ico + + + PerMonitorV2 + + + false + RELEASE;$(DCC_Define) + 0 + 0 + + + PerMonitorV2 + + + PerMonitorV2 + + + PerMonitorV2 + + + + MainSource + + +
frmMain
+ dfm +
+ + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + +
+ + Delphi.Personality.12 + Application + + + + BatteryHealth.dpr + + + Embarcadero C++Builder Office 2000 Servers Package + Embarcadero C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + + + BatteryHealth.exe + true + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v21 + 1 + + + res\drawable-anydpi-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values-v31 + 1 + + + res\values-v31 + 1 + + + + + res\values-v35 + 1 + + + res\values-v35 + 1 + + + + + res\drawable-anydpi-v26 + 1 + + + res\drawable-anydpi-v26 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v33 + 1 + + + res\drawable-anydpi-v33 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-night-v21 + 1 + + + res\values-night-v21 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable-anydpi-v24 + 1 + + + res\drawable-anydpi-v24 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-night-anydpi-v21 + 1 + + + res\drawable-night-anydpi-v21 + 1 + + + + + res\drawable-anydpi-v31 + 1 + + + res\drawable-anydpi-v31 + 1 + + + + + res\drawable-night-anydpi-v31 + 1 + + + res\drawable-night-anydpi-v31 + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + Contents + 1 + + + Contents + 1 + + + Contents + 1 + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + Assets + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + + + + + + + + + + + + + + True + True + True + + + 12 + + + + +
diff --git a/README.md b/README.md index 26a1d28..6f314c4 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,43 @@ -# TiltTeamPresence - -Simulates a fake activity on your computer by moving the mouse back and forth by 2 pixels to keep the session active. - -Fake "battery health measurement" app that actually moves the mouse 2 pixels in each directions, back and forth. -This is to simulate an activity from the user so that apps like Teams don't switch the Green status to Orange one (present but inactive). - -It uses a thread so the user still can click the Stop button to regain control. - -Use it at your own risks and responsabilities. - -2029-09-29 -Initial push - -2029-09-29 -Requires to add a click at 0:0 each 1 minute as moving the mouse is not enough for Teams - -procedure ClickAt(X, Y: Integer); -begin - // Move cursor to specific screen coordinates - SetCursorPos(X, Y); - - // Simulate mouse button press and release - mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); - mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); -end; +# TiltTeamPresence + +##What it does + +This Windows application simulates a fake activity on your computer by sending fake Mouse UP signals to Windows to keep the Teams session active. + + +This delphi application sends three MOUSE UP signals at the current position, every minute making Teams think you're active. +This helps make you always appear with a green icon in Teams. + +It has not been tested with other solutions, but it should have the same effect on them since Windows is handling the activity. + + +## Warning +Use it accordingly to your company's policy. + + +## Disclaimer +In no way could Tiltsoft or anybody related to it may be responsible for any damage, harm or any kind of loss. +This software is provided as-is with no responsabilities or guarantees whatsoever. + +## The name +To make the app less suspicious, it has been named BatterHealth so the users can prentend they are monitoring the battery helath of their computer. + +## Info for developers +The app has been written with Delphi 13.n but should work with most lower versions. +It uses only default VCL components. + +The app uses a thread in order not to steal the resources and also lets the user still click the Stop button to regain control and stop the fake activity. + + +## License +Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA 4.0) + +If you use this code you have to follow the following: +* BY (Attribution): You must give credit to this original. +* NC (Non-Commercial): You never can use it or sell it for commercial advantages or monetary compensation. + There is a permanent ban on monetization of parts or full source code. +* SA (ShareAlike): If you modify or fork it, you must share your modified version under this exact same license—ensuring your forks stay free forever. + +## Copyrights +(C) TiltSoft - 2026 to presenty
+https://www.tiltsoft.com diff --git a/main.dfm b/main.dfm index f741c62..d55ad55 100644 --- a/main.dfm +++ b/main.dfm @@ -10,6 +10,7 @@ object frmMain: TfrmMain Font.Height = -12 Font.Name = 'Segoe UI' Font.Style = [] + OnClose = FormClose OnCreate = FormCreate TextHeight = 15 object lblStatus: TLabel @@ -19,6 +20,21 @@ object frmMain: TfrmMain Height = 15 AutoSize = False end + object progressBar: TProgressBar + Left = 8 + Top = 39 + Width = 273 + Height = 20 + Enabled = False + ParentShowHint = False + Position = 87 + MarqueeInterval = 0 + BarColor = clLime + Step = 1 + State = pbsPaused + ShowHint = False + TabOrder = 1 + end object btnStart: TButton Left = 8 Top = 8 @@ -28,17 +44,4 @@ object frmMain: TfrmMain TabOrder = 0 OnClick = btnStartClick end - object progressBar: TProgressBar - Left = 8 - Top = 39 - Width = 273 - Height = 17 - Enabled = False - Position = 87 - MarqueeInterval = 0 - BarColor = clLime - Step = 1 - State = pbsPaused - TabOrder = 1 - end end diff --git a/main.pas b/main.pas index f0addea..3674b44 100644 --- a/main.pas +++ b/main.pas @@ -1,125 +1,173 @@ -unit main; - -interface - -uses - Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, - Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls, System.Threading; - -type - TfrmMain = class(TForm) - btnStart: TButton; - progressBar: TProgressBar; - lblStatus: TLabel; - procedure FormCreate(Sender: TObject); - procedure btnStartClick(Sender: TObject); - - private - { Private declarations } - FMyTask : ITask ; - currentPos : TPoint ; - counter : Integer ; - procedure startTask ; - procedure stopTask ; - - public - { Public declarations } - end; - -var - frmMain : TfrmMain ; - direction : Boolean ; - runIt : Boolean ; - -implementation - -{$R *.dfm} - - - - -procedure TfrmMain.FormCreate(Sender: TObject); -begin - direction := False ; - runIt := False ; - currentPos := Point( mouse.CursorPos.X , mouse.CursorPos.Y ) ; - counter := 0 ; -end; - - - -procedure TfrmMain.btnStartClick(Sender: TObject); -begin - runIt := NOT runIt ; - if runIt then - begin - btnStart.Caption := 'Stop Monitoring' ; - startTask ; - end - else - begin - btnStart.Caption := 'Start Monitoring' ; - stopTask ; - end; -end; - - -procedure TfrmMain.startTask; -begin - lblStatus.Caption := 'Measuring' ; - // Create and start the background task - FMyTask := TTask.Run( - procedure - begin - // Check if the Stop button was clicked - if TTask.CurrentTask.Status = TTaskStatus.Canceled then - Exit; // Gracefully exit the thread loop - - - // Simulate work (e.g., 500ms step) - while runIt do - begin - - Sleep(1000); - - // 2. Safely update the UI progress - TThread.Queue(nil, - procedure - begin - direction := Not direction ; - counter := counter + 1 ; - if counter >= 60 then - begin - counter := 0 ; - // Move cursor to specific screen coordinates - currentPos := Point( mouse.CursorPos.X , mouse.CursorPos.Y ) ; - mouse.CursorPos := Point( 1, 1 ) ; - // Simulate mouse button press and release - mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 1, 1, 0); - Sleep(150); - mouse_event(MOUSEEVENTF_LEFTUP, 0, 1, 1, 0); - Sleep(50); - mouse_event(MOUSEEVENTF_LEFTUP, 0, 1, 1, 0); - // Get back to position - mouse.CursorPos := currentPos ; - end; - - if direction then - mouse.CursorPos := Point( mouse.CursorPos.X + 2, mouse.CursorPos.Y + 2 ) - else - mouse.CursorPos := Point( mouse.CursorPos.X - 2, mouse.CursorPos.Y - 2 ) - end); - end; - end); -end; - -procedure TfrmMain.stopTask; -begin - if (FMyTask <> nil ) then - begin - lblStatus.Caption := '' ; - FMyTask.Cancel ; - end; -end; - -end. +(************************************************* + * MAIN * + * * + * This delphi application sends three MOUSE UP * + * signals at the current position, every minute * + * making Teams think you're active. * + * This helps make you always appear with a * + * green icon in Teams. * + * * + * Use it accordingly to your company's policy. * + * * + * In no way could Tiltsoft or anybody related * + * to it may be responsible for any damage, harm * + * or loss. This software is provided as-is with * + * no responsability or guarantee whatsoever. * + * * + * (C) TiltSoft - 2026 to present * + *************************************************) +unit main; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls, System.Threading, + System.Types ; + +type + TfrmMain = class(TForm) + btnStart : TButton ; + progressBar : TProgressBar ; + lblStatus : TLabel ; + procedure FormCreate(Sender: TObject) ; + procedure btnStartClick(Sender: TObject) ; + procedure FormClose(Sender: TObject; var Action: TCloseAction) ; + + private + { Private declarations } + FMyTask : ITask ; + currentPos : TPoint ; + counter : Integer ; + procedure startTask ; + procedure stopTask ; + + public + { Public declarations } + end; + +var + frmMain : TfrmMain ; + runIt : Boolean ; + +implementation + +{$R *.dfm} + + +(************************************************* + * FORMCREATE * + * * + * Initialise the variables. * + *************************************************) +procedure TfrmMain.FormCreate(Sender: TObject); +begin + runIt := False ; + currentPos := Point( mouse.CursorPos.X , mouse.CursorPos.Y ) ; + counter := 0 ; +end; + + +(************************************************* + * FORMCLOSE * + * * + * Stop any thread and close gracefully. * + *************************************************) +procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction); +begin + btnStart.Caption := '- Cleaning -' ; + stopTask ; + Sleep(500) ; + Application.Terminate ; +end; + + +(************************************************* + * BUTTONSTARTCLICK * + * * + * Start the fake activity by launching the * + * main thread that sends the clicks. * + * It changes the button caption to match the * + * fake "battery monitoring" action. * + *************************************************) +procedure TfrmMain.btnStartClick(Sender: TObject); +begin + runIt := NOT runIt ; + if runIt then + begin + btnStart.Caption := 'Stop Monitoring' ; + startTask ; + end + else + begin + btnStart.Caption := 'Start Monitoring' ; + stopTask ; + end; +end; + + +(************************************************* + * STARTTASK * + * * + * This starts a background thread that tricks * + * Windows into thinking you're releasing the * + * mouse UP button thrice, sending an activity * + * message to your computer and Teams monitoring * + *************************************************) +procedure TfrmMain.startTask; +begin + lblStatus.Caption := 'Measuring' ; + // Create and start the background task + FMyTask := TTask.Run( + procedure + begin + + // Check if the Stop button was clicked + if TTask.CurrentTask.Status = TTaskStatus.Canceled then + Exit; // Gracefully exit the thread loop + + + // Simulate work (e.g., 500ms step) + while runIt do + begin + + Sleep(1000); + + // Safely update the UI progress + TThread.Queue(nil, + procedure + begin + counter := counter + 1 ; + if counter >= 60 then + begin + counter := 0 ; + mouse_event(MOUSEEVENTF_LEFTUP, 0, mouse.CursorPos.X, mouse.CursorPos.Y, 0); + Sleep(150); + mouse_event(MOUSEEVENTF_LEFTUP, 0, mouse.CursorPos.X, mouse.CursorPos.Y, 0); + Sleep(50); + mouse_event(MOUSEEVENTF_LEFTUP, 0, mouse.CursorPos.X, mouse.CursorPos.Y, 0); + end + end) + end + end) ; +end; + + +(************************************************* + * STOPTASK * + * * + * Stops the thread if running in background. * + * This will stop sending fake mouse activity * + * events to Windows. + *************************************************) +procedure TfrmMain.stopTask; +begin + if (FMyTask <> nil ) then + begin + runIt := False ; + lblStatus.Caption := '' ; + FMyTask.Cancel ; + end; +end; + +end.