Unoptimised but working verison of AsusFanControl with a fan curve.

This commit is contained in:
Darren Ohonba - Evans
2024-05-18 06:56:04 +01:00
parent 5a17ba223f
commit 79bc42e24d
11 changed files with 644 additions and 51 deletions

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
<assemblyIdentity name="AsusFanControlGUI.application" version="1.0.0.0" publicKeyToken="e7646ab91e1988e9" language="neutral" processorArchitecture="amd64" xmlns="urn:schemas-microsoft-com:asm.v1" />
<description asmv2:publisher="AsusFanControlGUI" asmv2:product="AsusFanControlGUI" xmlns="urn:schemas-microsoft-com:asm.v1" />
<deployment install="true" mapFileExtensions="true" />
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
<framework targetVersion="4.7.2" profile="Full" supportedRuntime="4.0.30319" />
</compatibleFrameworks>
<dependency>
<dependentAssembly dependencyType="install" codebase="Application Files\AsusFanControlGUI_1_0_0_0\AsusFanControlGUI.exe.manifest" size="8333">
<assemblyIdentity name="AsusFanControlGUI.exe" version="1.0.0.0" publicKeyToken="e7646ab91e1988e9" language="neutral" processorArchitecture="amd64" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>VkRZQnzKQEa58EWCSMCnhF2twvcxNIaA5jlw/pXOw4M=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<publisherIdentity name="CN=LAPTOP-IU9A729Q\bow33" issuerKeyHash="90950ef02f6e8d1570e9ff66e946b3506c84f0f1" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>IlEmX+XiACqQR57sLOnsM6L/3C5obRyg3qA4sDiB7YY=</DigestValue></Reference></SignedInfo><SignatureValue>o8YpfToFaricuRaoJMNZw1bu1yrysCHRjbgMf7CA5/0VQMXpwkIJJYvbgNry32OFDh+gUZRgo0qOa9TAsjuMqGXeNQ6Vt3zsi5IMRCDVRSxHyPQkO/6C5qCVwwZiWOCMN9Fl+8pI7PwddulgffSIu8kUgIHwBlPOkRYkQwFHuSI=</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="86ed8138b038a0dea01c6d682edcffa233ece92cec9e47902a00e2e55f265122" Description="" Url=""><as:assemblyIdentity name="AsusFanControlGUI.application" version="1.0.0.0" publicKeyToken="e7646ab91e1988e9" language="neutral" processorArchitecture="amd64" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=LAPTOP-IU9A729Q\bow33</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>pse2i08O+Tm2DU9lNWKb8jxz8D3uiNRp0At8cJy+9bY=</DigestValue></Reference></SignedInfo><SignatureValue>oQSz0KTHddVr48+OepgcQXcfLZ496ypQdRFAyWvx+ms1tUi57UgOUggILmnUq0ltplFYnaUt6j4g78CIKPTiWCQy7T/WExnmHz84ywoStLHbk6uvLtYQzHyiDnf/E8CgdMGko+uwyNhNOSSjjY67vSvTnNUBNgRrr56JR7fDl4w=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIB7TCCAVagAwIBAgIQWy5fl7XivKNF8WyXgF7H9DANBgkqhkiG9w0BAQsFADA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwHhcNMjQwNTE4MDUzMTIxWhcNMjUwNTE4MTEzMTIxWjA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTCsbYMtjp8EJIT1iSFHvlgKJ2LtUK2BCNRh5XDjWnNoRzZx15tOIhMu+lIpBrFy3Ndyl/dAB+VZjZdCbf4UW/aam+pgvR3fo86L+RvEwwu+xx7STvNRvdb09QnzA+iWXpG0wh+bROLxpPG14mjAfl0tHDFSwNdrbvMdymrTUKZAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAY6EwQVMqSprcsUwrU+DB5jz0aYLWX6iD0Cuq2r+SPbAXaEkPzUOypV155rwOGMeh0jZKF4Jc5EgiYh1njyxQHee4T16pi0uoQ7fQHQQ+MnfoO/wHrG2/yoi6fHbpgMQKz3dQ1UfZkoV2QZgHu9xJAMdAg9QmIJYDsjvZWChIYPw=</X509Certificate></X509Data></KeyInfo></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="AsusFanControlGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<userSettings>
<AsusFanControlGUI.Properties.Settings>
<setting name="fanSpeed" serializeAs="String">
<value>90</value>
</setting>
<setting name="turnOffControlOnExit" serializeAs="String">
<value>True</value>
</setting>
<setting name="forbidUnsafeSettings" serializeAs="String">
<value>True</value>
</setting>
</AsusFanControlGUI.Properties.Settings>
</userSettings>
</configuration>

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
<asmv1:assemblyIdentity name="AsusFanControlGUI.exe" version="1.0.0.0" publicKeyToken="e7646ab91e1988e9" language="neutral" processorArchitecture="amd64" type="win32" />
<description asmv2:iconFile="propeller.ico" xmlns="urn:schemas-microsoft-com:asm.v1" />
<application />
<entryPoint>
<assemblyIdentity name="AsusFanControlGUI" version="1.0.0.0" language="neutral" processorArchitecture="amd64" />
<commandLine file="AsusFanControlGUI.exe" parameters="" />
</entryPoint>
<trustInfo>
<security>
<applicationRequestMinimum>
<PermissionSet Unrestricted="true" ID="Custom" SameSite="site" />
<defaultAssemblyRequest permissionSetReference="Custom" />
</applicationRequestMinimum>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!--
UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentOS>
<osVersionInfo>
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />
</osVersionInfo>
</dependentOS>
</dependency>
<dependency>
<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
<assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="4.0.30319.0" />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="AsusFanControl.exe" size="7680">
<assemblyIdentity name="AsusFanControl" version="1.0.0.0" language="neutral" processorArchitecture="amd64" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>FqD0p9nxsDK7WrtWEpMKmKxGkVZOX7mhBSS6lLiRHv4=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="AsusFanControlGUI.exe" size="33760">
<assemblyIdentity name="AsusFanControlGUI" version="1.0.0.0" language="neutral" processorArchitecture="amd64" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>shphuvPjl0LqLcE6eGOcOhm27GlVvrWTzu7aZv0u2No=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<file name="AsusFanControlGUI.exe.config" size="1211">
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>xzkEIINUne4CANLFpsrdbpDMwHsfvt56VutYVsDnnFA=</dsig:DigestValue>
</hash>
</file>
<file name="propeller.ico" size="4286">
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>AGoE/lNX3bWI7MYm49XrYQ1clZaPz8GSZmIatT5AySI=</dsig:DigestValue>
</hash>
</file>
<publisherIdentity name="CN=LAPTOP-IU9A729Q\bow33" issuerKeyHash="90950ef02f6e8d1570e9ff66e946b3506c84f0f1" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>58vzrrWfF/f/ZzVtfc8J+Ik/tBmhZ/LslB3BaqZzp5o=</DigestValue></Reference></SignedInfo><SignatureValue>gBGqEmUWJ8hV8Se0gquUg48FAlug3VPGbQdos/GbbV8BfxzSUl2W9s28ZgDdZ3e3WHnRkNXvWK9JgU+wdVFqOgdgPJiY4cf3gMFYDCzLef6yHXlR4mTCEY6d+R8A8jlVYjkTkBRsAmJ3HMewQStpInf7Ica0HeEMJAjkHZE+S6c=</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="9aa773a66ac11d94ecf267a119b43f89f809cf7d6d3567fff7179fb5aef3cbe7" Description="" Url=""><as:assemblyIdentity name="AsusFanControlGUI.exe" version="1.0.0.0" publicKeyToken="e7646ab91e1988e9" language="neutral" processorArchitecture="amd64" type="win32" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=LAPTOP-IU9A729Q\bow33</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>SQjkLc0bSvtTDP63aP0aWLpD3Mi9Mv4JyxTtM8rSOo4=</DigestValue></Reference></SignedInfo><SignatureValue>u1eQvSEGiTnIFmdhQqXG9V+AKxUTrpupAIs5WCywE29Bc5VyH7NAWa2G1UHsRROSqhwj/ObXfk5NIWEU6QV7UoOtmu70o2ZRi/HcGmMM6fxWBGbeB31hk4SVC74pkgj7ty1W0xN+IeLS1sGnu2dS4q0VGfuAON5fcDCgG0yq8W8=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIB7TCCAVagAwIBAgIQWy5fl7XivKNF8WyXgF7H9DANBgkqhkiG9w0BAQsFADA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwHhcNMjQwNTE4MDUzMTIxWhcNMjUwNTE4MTEzMTIxWjA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTCsbYMtjp8EJIT1iSFHvlgKJ2LtUK2BCNRh5XDjWnNoRzZx15tOIhMu+lIpBrFy3Ndyl/dAB+VZjZdCbf4UW/aam+pgvR3fo86L+RvEwwu+xx7STvNRvdb09QnzA+iWXpG0wh+bROLxpPG14mjAfl0tHDFSwNdrbvMdymrTUKZAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAY6EwQVMqSprcsUwrU+DB5jz0aYLWX6iD0Cuq2r+SPbAXaEkPzUOypV155rwOGMeh0jZKF4Jc5EgiYh1njyxQHee4T16pi0uoQ7fQHQQ+MnfoO/wHrG2/yoi6fHbpgMQKz3dQ1UfZkoV2QZgHu9xJAMdAg9QmIJYDsjvZWChIYPw=</X509Certificate></X509Data></KeyInfo></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
<assemblyIdentity name="AsusFanControlGUI.application" version="1.0.0.0" publicKeyToken="e7646ab91e1988e9" language="neutral" processorArchitecture="amd64" xmlns="urn:schemas-microsoft-com:asm.v1" />
<description asmv2:publisher="AsusFanControlGUI" asmv2:product="AsusFanControlGUI" xmlns="urn:schemas-microsoft-com:asm.v1" />
<deployment install="true" mapFileExtensions="true" />
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
<framework targetVersion="4.7.2" profile="Full" supportedRuntime="4.0.30319" />
</compatibleFrameworks>
<dependency>
<dependentAssembly dependencyType="install" codebase="Application Files\AsusFanControlGUI_1_0_0_0\AsusFanControlGUI.exe.manifest" size="8333">
<assemblyIdentity name="AsusFanControlGUI.exe" version="1.0.0.0" publicKeyToken="e7646ab91e1988e9" language="neutral" processorArchitecture="amd64" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>VkRZQnzKQEa58EWCSMCnhF2twvcxNIaA5jlw/pXOw4M=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<publisherIdentity name="CN=LAPTOP-IU9A729Q\bow33" issuerKeyHash="90950ef02f6e8d1570e9ff66e946b3506c84f0f1" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>IlEmX+XiACqQR57sLOnsM6L/3C5obRyg3qA4sDiB7YY=</DigestValue></Reference></SignedInfo><SignatureValue>o8YpfToFaricuRaoJMNZw1bu1yrysCHRjbgMf7CA5/0VQMXpwkIJJYvbgNry32OFDh+gUZRgo0qOa9TAsjuMqGXeNQ6Vt3zsi5IMRCDVRSxHyPQkO/6C5qCVwwZiWOCMN9Fl+8pI7PwddulgffSIu8kUgIHwBlPOkRYkQwFHuSI=</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="86ed8138b038a0dea01c6d682edcffa233ece92cec9e47902a00e2e55f265122" Description="" Url=""><as:assemblyIdentity name="AsusFanControlGUI.application" version="1.0.0.0" publicKeyToken="e7646ab91e1988e9" language="neutral" processorArchitecture="amd64" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=LAPTOP-IU9A729Q\bow33</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>pse2i08O+Tm2DU9lNWKb8jxz8D3uiNRp0At8cJy+9bY=</DigestValue></Reference></SignedInfo><SignatureValue>oQSz0KTHddVr48+OepgcQXcfLZ496ypQdRFAyWvx+ms1tUi57UgOUggILmnUq0ltplFYnaUt6j4g78CIKPTiWCQy7T/WExnmHz84ywoStLHbk6uvLtYQzHyiDnf/E8CgdMGko+uwyNhNOSSjjY67vSvTnNUBNgRrr56JR7fDl4w=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIB7TCCAVagAwIBAgIQWy5fl7XivKNF8WyXgF7H9DANBgkqhkiG9w0BAQsFADA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwHhcNMjQwNTE4MDUzMTIxWhcNMjUwNTE4MTEzMTIxWjA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTCsbYMtjp8EJIT1iSFHvlgKJ2LtUK2BCNRh5XDjWnNoRzZx15tOIhMu+lIpBrFy3Ndyl/dAB+VZjZdCbf4UW/aam+pgvR3fo86L+RvEwwu+xx7STvNRvdb09QnzA+iWXpG0wh+bROLxpPG14mjAfl0tHDFSwNdrbvMdymrTUKZAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAY6EwQVMqSprcsUwrU+DB5jz0aYLWX6iD0Cuq2r+SPbAXaEkPzUOypV155rwOGMeh0jZKF4Jc5EgiYh1njyxQHee4T16pi0uoQ7fQHQQ+MnfoO/wHrG2/yoi6fHbpgMQKz3dQ1UfZkoV2QZgHu9xJAMdAg9QmIJYDsjvZWChIYPw=</X509Certificate></X509Data></KeyInfo></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>

View File

@@ -12,6 +12,22 @@
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>C:\Users\bow33\Documents\GitHub\AsusFanControlEnhanced\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>1</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@@ -55,6 +71,18 @@
<PropertyGroup> <PropertyGroup>
<ApplicationIcon>propeller.ico</ApplicationIcon> <ApplicationIcon>propeller.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>3896F9A71C1385218E0E436CCCE1201230675364</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>AsusFanControlGUI_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
@@ -89,6 +117,7 @@
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
</Compile> </Compile>
<None Include="AsusFanControlGUI_TemporaryKey.pfx" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator> <Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput> <LastGenOutput>Settings.Designer.cs</LastGenOutput>
@@ -111,5 +140,17 @@
<ItemGroup> <ItemGroup>
<Content Include="propeller.ico" /> <Content Include="propeller.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>

View File

@@ -35,7 +35,6 @@
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button(); this.button1 = new System.Windows.Forms.Button();
this.labelRPM = new System.Windows.Forms.Label(); this.labelRPM = new System.Windows.Forms.Label();
this.checkBoxTurnOn = new System.Windows.Forms.CheckBox();
this.labelCPUTemp = new System.Windows.Forms.Label(); this.labelCPUTemp = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
@@ -44,16 +43,24 @@
this.toolStripMenuItemTurnOffControlOnExit = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemTurnOffControlOnExit = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemForbidUnsafeSettings = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemForbidUnsafeSettings = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemCheckForUpdates = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemCheckForUpdates = new System.Windows.Forms.ToolStripMenuItem();
this.label5 = new System.Windows.Forms.Label();
this.pictureBoxFanCurve = new System.Windows.Forms.PictureBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.fanControl = new System.Windows.Forms.RadioButton();
this.fanCurveControl = new System.Windows.Forms.RadioButton();
((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).BeginInit();
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxFanCurve)).BeginInit();
this.groupBox1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// trackBarFanSpeed // trackBarFanSpeed
// //
this.trackBarFanSpeed.Location = new System.Drawing.Point(12, 62); this.trackBarFanSpeed.Location = new System.Drawing.Point(17, 54);
this.trackBarFanSpeed.Margin = new System.Windows.Forms.Padding(4);
this.trackBarFanSpeed.Maximum = 100; this.trackBarFanSpeed.Maximum = 100;
this.trackBarFanSpeed.Name = "trackBarFanSpeed"; this.trackBarFanSpeed.Name = "trackBarFanSpeed";
this.trackBarFanSpeed.Size = new System.Drawing.Size(300, 45); this.trackBarFanSpeed.Size = new System.Drawing.Size(400, 56);
this.trackBarFanSpeed.TabIndex = 0; this.trackBarFanSpeed.TabIndex = 0;
this.trackBarFanSpeed.Value = 100; this.trackBarFanSpeed.Value = 100;
this.trackBarFanSpeed.KeyUp += new System.Windows.Forms.KeyEventHandler(this.trackBarFanSpeed_KeyUp); this.trackBarFanSpeed.KeyUp += new System.Windows.Forms.KeyEventHandler(this.trackBarFanSpeed_KeyUp);
@@ -62,35 +69,39 @@
// label1 // label1
// //
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 110); this.label1.Location = new System.Drawing.Point(13, 401);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(73, 13); this.label1.Size = new System.Drawing.Size(88, 16);
this.label1.TabIndex = 1; this.label1.TabIndex = 1;
this.label1.Text = "Current value:"; this.label1.Text = "Current value:";
// //
// labelValue // labelValue
// //
this.labelValue.AutoSize = true; this.labelValue.AutoSize = true;
this.labelValue.Location = new System.Drawing.Point(91, 110); this.labelValue.Location = new System.Drawing.Point(118, 401);
this.labelValue.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelValue.Name = "labelValue"; this.labelValue.Name = "labelValue";
this.labelValue.Size = new System.Drawing.Size(10, 13); this.labelValue.Size = new System.Drawing.Size(11, 16);
this.labelValue.TabIndex = 2; this.labelValue.TabIndex = 2;
this.labelValue.Text = "-"; this.labelValue.Text = "-";
// //
// label2 // label2
// //
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(40, 139); this.label2.Location = new System.Drawing.Point(50, 437);
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(71, 13); this.label2.Size = new System.Drawing.Size(85, 16);
this.label2.TabIndex = 3; this.label2.TabIndex = 3;
this.label2.Text = "Current RPM:"; this.label2.Text = "Current RPM:";
// //
// button1 // button1
// //
this.button1.Location = new System.Drawing.Point(12, 134); this.button1.Location = new System.Drawing.Point(13, 431);
this.button1.Margin = new System.Windows.Forms.Padding(4);
this.button1.Name = "button1"; this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(22, 23); this.button1.Size = new System.Drawing.Size(29, 28);
this.button1.TabIndex = 4; this.button1.TabIndex = 4;
this.button1.Text = "↻"; this.button1.Text = "↻";
this.button1.UseVisualStyleBackColor = true; this.button1.UseVisualStyleBackColor = true;
@@ -99,37 +110,29 @@
// labelRPM // labelRPM
// //
this.labelRPM.AutoSize = true; this.labelRPM.AutoSize = true;
this.labelRPM.Location = new System.Drawing.Point(117, 139); this.labelRPM.Location = new System.Drawing.Point(153, 437);
this.labelRPM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelRPM.Name = "labelRPM"; this.labelRPM.Name = "labelRPM";
this.labelRPM.Size = new System.Drawing.Size(10, 13); this.labelRPM.Size = new System.Drawing.Size(11, 16);
this.labelRPM.TabIndex = 5; this.labelRPM.TabIndex = 5;
this.labelRPM.Text = "-"; this.labelRPM.Text = "-";
// //
// checkBoxTurnOn
//
this.checkBoxTurnOn.AutoSize = true;
this.checkBoxTurnOn.Location = new System.Drawing.Point(12, 37);
this.checkBoxTurnOn.Name = "checkBoxTurnOn";
this.checkBoxTurnOn.Size = new System.Drawing.Size(116, 17);
this.checkBoxTurnOn.TabIndex = 6;
this.checkBoxTurnOn.Text = "Turn on fan control";
this.checkBoxTurnOn.UseVisualStyleBackColor = true;
this.checkBoxTurnOn.CheckedChanged += new System.EventHandler(this.checkBoxTurnOn_CheckedChanged);
//
// labelCPUTemp // labelCPUTemp
// //
this.labelCPUTemp.AutoSize = true; this.labelCPUTemp.AutoSize = true;
this.labelCPUTemp.Location = new System.Drawing.Point(141, 168); this.labelCPUTemp.Location = new System.Drawing.Point(185, 473);
this.labelCPUTemp.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelCPUTemp.Name = "labelCPUTemp"; this.labelCPUTemp.Name = "labelCPUTemp";
this.labelCPUTemp.Size = new System.Drawing.Size(10, 13); this.labelCPUTemp.Size = new System.Drawing.Size(11, 16);
this.labelCPUTemp.TabIndex = 9; this.labelCPUTemp.TabIndex = 9;
this.labelCPUTemp.Text = "-"; this.labelCPUTemp.Text = "-";
// //
// button2 // button2
// //
this.button2.Location = new System.Drawing.Point(12, 163); this.button2.Location = new System.Drawing.Point(13, 467);
this.button2.Margin = new System.Windows.Forms.Padding(4);
this.button2.Name = "button2"; this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(22, 23); this.button2.Size = new System.Drawing.Size(29, 28);
this.button2.TabIndex = 8; this.button2.TabIndex = 8;
this.button2.Text = "↻"; this.button2.Text = "↻";
this.button2.UseVisualStyleBackColor = true; this.button2.UseVisualStyleBackColor = true;
@@ -138,20 +141,22 @@
// label4 // label4
// //
this.label4.AutoSize = true; this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(40, 168); this.label4.Location = new System.Drawing.Point(50, 473);
this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label4.Name = "label4"; this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(95, 13); this.label4.Size = new System.Drawing.Size(116, 16);
this.label4.TabIndex = 7; this.label4.TabIndex = 7;
this.label4.Text = "Current CPU temp:"; this.label4.Text = "Current CPU temp:";
// //
// menuStrip1 // menuStrip1
// //
this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem1, this.toolStripMenuItem1,
this.toolStripMenuItemCheckForUpdates}); this.toolStripMenuItemCheckForUpdates});
this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(324, 24); this.menuStrip1.Size = new System.Drawing.Size(510, 28);
this.menuStrip1.TabIndex = 10; this.menuStrip1.TabIndex = 10;
this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.Text = "menuStrip1";
// //
@@ -161,14 +166,14 @@
this.toolStripMenuItemTurnOffControlOnExit, this.toolStripMenuItemTurnOffControlOnExit,
this.toolStripMenuItemForbidUnsafeSettings}); this.toolStripMenuItemForbidUnsafeSettings});
this.toolStripMenuItem1.Name = "toolStripMenuItem1"; this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(72, 20); this.toolStripMenuItem1.Size = new System.Drawing.Size(89, 24);
this.toolStripMenuItem1.Text = "Advanced"; this.toolStripMenuItem1.Text = "Advanced";
// //
// toolStripMenuItemTurnOffControlOnExit // toolStripMenuItemTurnOffControlOnExit
// //
this.toolStripMenuItemTurnOffControlOnExit.CheckOnClick = true; this.toolStripMenuItemTurnOffControlOnExit.CheckOnClick = true;
this.toolStripMenuItemTurnOffControlOnExit.Name = "toolStripMenuItemTurnOffControlOnExit"; this.toolStripMenuItemTurnOffControlOnExit.Name = "toolStripMenuItemTurnOffControlOnExit";
this.toolStripMenuItemTurnOffControlOnExit.Size = new System.Drawing.Size(196, 22); this.toolStripMenuItemTurnOffControlOnExit.Size = new System.Drawing.Size(244, 26);
this.toolStripMenuItemTurnOffControlOnExit.Text = "Turn off control on exit"; this.toolStripMenuItemTurnOffControlOnExit.Text = "Turn off control on exit";
this.toolStripMenuItemTurnOffControlOnExit.CheckedChanged += new System.EventHandler(this.toolStripMenuItemTurnOffControlOnExit_CheckedChanged); this.toolStripMenuItemTurnOffControlOnExit.CheckedChanged += new System.EventHandler(this.toolStripMenuItemTurnOffControlOnExit_CheckedChanged);
// //
@@ -176,40 +181,103 @@
// //
this.toolStripMenuItemForbidUnsafeSettings.CheckOnClick = true; this.toolStripMenuItemForbidUnsafeSettings.CheckOnClick = true;
this.toolStripMenuItemForbidUnsafeSettings.Name = "toolStripMenuItemForbidUnsafeSettings"; this.toolStripMenuItemForbidUnsafeSettings.Name = "toolStripMenuItemForbidUnsafeSettings";
this.toolStripMenuItemForbidUnsafeSettings.Size = new System.Drawing.Size(196, 22); this.toolStripMenuItemForbidUnsafeSettings.Size = new System.Drawing.Size(244, 26);
this.toolStripMenuItemForbidUnsafeSettings.Text = "Forbid unsafe settings"; this.toolStripMenuItemForbidUnsafeSettings.Text = "Forbid unsafe settings";
this.toolStripMenuItemForbidUnsafeSettings.CheckedChanged += new System.EventHandler(this.toolStripMenuItemForbidUnsafeSettings_CheckedChanged); this.toolStripMenuItemForbidUnsafeSettings.CheckedChanged += new System.EventHandler(this.toolStripMenuItemForbidUnsafeSettings_CheckedChanged);
// //
// toolStripMenuItemCheckForUpdates // toolStripMenuItemCheckForUpdates
// //
this.toolStripMenuItemCheckForUpdates.Name = "toolStripMenuItemCheckForUpdates"; this.toolStripMenuItemCheckForUpdates.Name = "toolStripMenuItemCheckForUpdates";
this.toolStripMenuItemCheckForUpdates.Size = new System.Drawing.Size(115, 20); this.toolStripMenuItemCheckForUpdates.Size = new System.Drawing.Size(142, 24);
this.toolStripMenuItemCheckForUpdates.Text = "Check for updates"; this.toolStripMenuItemCheckForUpdates.Text = "Check for updates";
this.toolStripMenuItemCheckForUpdates.Click += new System.EventHandler(this.toolStripMenuItemCheckForUpdates_Click); this.toolStripMenuItemCheckForUpdates.Click += new System.EventHandler(this.toolStripMenuItemCheckForUpdates_Click);
// //
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(341, 28);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(76, 16);
this.label5.TabIndex = 13;
this.label5.Text = "PWM value";
//
// pictureBoxFanCurve
//
this.pictureBoxFanCurve.Location = new System.Drawing.Point(13, 184);
this.pictureBoxFanCurve.Name = "pictureBoxFanCurve";
this.pictureBoxFanCurve.Size = new System.Drawing.Size(477, 203);
this.pictureBoxFanCurve.TabIndex = 0;
this.pictureBoxFanCurve.TabStop = false;
this.pictureBoxFanCurve.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBoxFanCurve_Paint);
this.pictureBoxFanCurve.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseClick);
this.pictureBoxFanCurve.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseDoubleClick);
this.pictureBoxFanCurve.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseDown);
this.pictureBoxFanCurve.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseMove);
this.pictureBoxFanCurve.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseUp);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.fanControl);
this.groupBox1.Controls.Add(this.fanCurveControl);
this.groupBox1.Controls.Add(this.trackBarFanSpeed);
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Location = new System.Drawing.Point(12, 32);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(486, 146);
this.groupBox1.TabIndex = 14;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "groupBox1";
//
// fanControl
//
this.fanControl.AutoSize = true;
this.fanControl.Location = new System.Drawing.Point(20, 27);
this.fanControl.Name = "fanControl";
this.fanControl.Size = new System.Drawing.Size(137, 20);
this.fanControl.TabIndex = 15;
this.fanControl.Text = "Turn on fan control";
this.fanControl.UseVisualStyleBackColor = true;
this.fanControl.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged);
//
// fanCurveControl
//
this.fanCurveControl.AutoSize = true;
this.fanCurveControl.Location = new System.Drawing.Point(20, 108);
this.fanCurveControl.Name = "fanCurveControl";
this.fanCurveControl.Size = new System.Drawing.Size(130, 20);
this.fanCurveControl.TabIndex = 14;
this.fanCurveControl.Text = "Turn on fan curve";
this.fanCurveControl.UseVisualStyleBackColor = true;
this.fanCurveControl.CheckedChanged += new System.EventHandler(this.fanCurve_CheckedChanged);
//
// Form1 // Form1
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(324, 198); this.ClientSize = new System.Drawing.Size(510, 523);
this.Controls.Add(this.pictureBoxFanCurve);
this.Controls.Add(this.labelCPUTemp); this.Controls.Add(this.labelCPUTemp);
this.Controls.Add(this.button2); this.Controls.Add(this.button2);
this.Controls.Add(this.label4); this.Controls.Add(this.label4);
this.Controls.Add(this.checkBoxTurnOn);
this.Controls.Add(this.labelRPM); this.Controls.Add(this.labelRPM);
this.Controls.Add(this.button1); this.Controls.Add(this.button1);
this.Controls.Add(this.label2); this.Controls.Add(this.label2);
this.Controls.Add(this.labelValue); this.Controls.Add(this.labelValue);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.trackBarFanSpeed);
this.Controls.Add(this.menuStrip1); this.Controls.Add(this.menuStrip1);
this.Controls.Add(this.groupBox1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1; this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "Form1"; this.Name = "Form1";
this.Text = "Asus Fan Control"; this.Text = "Asus Fan Control";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).EndInit();
this.menuStrip1.ResumeLayout(false); this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout(); this.menuStrip1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxFanCurve)).EndInit();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@@ -223,7 +291,6 @@
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label labelRPM; private System.Windows.Forms.Label labelRPM;
private System.Windows.Forms.CheckBox checkBoxTurnOn;
private System.Windows.Forms.Label labelCPUTemp; private System.Windows.Forms.Label labelCPUTemp;
private System.Windows.Forms.Button button2; private System.Windows.Forms.Button button2;
private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label4;
@@ -232,6 +299,11 @@
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemTurnOffControlOnExit; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemTurnOffControlOnExit;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemForbidUnsafeSettings; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemForbidUnsafeSettings;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemCheckForUpdates; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemCheckForUpdates;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.PictureBox pictureBoxFanCurve;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.RadioButton fanCurveControl;
private System.Windows.Forms.RadioButton fanControl;
} }
} }

View File

@@ -14,6 +14,7 @@ namespace AsusFanControlGUI
{ {
public partial class Form1 : Form public partial class Form1 : Form
{ {
private System.Windows.Forms.Timer timer;
AsusControl asusControl = new AsusControl(); AsusControl asusControl = new AsusControl();
int fanSpeed = 0; int fanSpeed = 0;
@@ -24,7 +25,25 @@ namespace AsusFanControlGUI
toolStripMenuItemTurnOffControlOnExit.Checked = Properties.Settings.Default.turnOffControlOnExit; toolStripMenuItemTurnOffControlOnExit.Checked = Properties.Settings.Default.turnOffControlOnExit;
toolStripMenuItemForbidUnsafeSettings.Checked = Properties.Settings.Default.forbidUnsafeSettings; toolStripMenuItemForbidUnsafeSettings.Checked = Properties.Settings.Default.forbidUnsafeSettings;
trackBarFanSpeed.Value = Properties.Settings.Default.fanSpeed; //trackBarFanSpeed.Value = Properties.Settings.Default.fanSpeed;
}
private void Form1_Load(object sender, EventArgs e)
{
// Create and start the timer
timer = new System.Windows.Forms.Timer();
timer.Interval = 1000; // 1000 milliseconds = 1 second
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
// Update fan speeds
labelRPM.Text = string.Join(" ", asusControl.GetFanSpeeds());
// Update CPU temperature
labelCPUTemp.Text = $"{asusControl.Thermal_Read_Cpu_Temperature()}";
} }
private void OnProcessExit(object sender, EventArgs e) private void OnProcessExit(object sender, EventArgs e)
@@ -50,13 +69,12 @@ namespace AsusFanControlGUI
System.Diagnostics.Process.Start("https://github.com/Karmel0x/AsusFanControl/releases"); System.Diagnostics.Process.Start("https://github.com/Karmel0x/AsusFanControl/releases");
} }
private void setFanSpeed() private void setFanSpeed(int value, bool isTurnedOn)
{ {
var value = trackBarFanSpeed.Value;
Properties.Settings.Default.fanSpeed = value; Properties.Settings.Default.fanSpeed = value;
Properties.Settings.Default.Save(); Properties.Settings.Default.Save();
if (!checkBoxTurnOn.Checked) if (!isTurnedOn)
value = 0; value = 0;
if (value == 0) if (value == 0)
@@ -68,15 +86,9 @@ namespace AsusFanControlGUI
return; return;
fanSpeed = value; fanSpeed = value;
asusControl.SetFanSpeeds(value); asusControl.SetFanSpeeds(value);
} }
private void checkBoxTurnOn_CheckedChanged(object sender, EventArgs e)
{
setFanSpeed();
}
private void trackBarFanSpeed_MouseCaptureChanged(object sender, EventArgs e) private void trackBarFanSpeed_MouseCaptureChanged(object sender, EventArgs e)
{ {
if (Properties.Settings.Default.forbidUnsafeSettings) if (Properties.Settings.Default.forbidUnsafeSettings)
@@ -87,7 +99,7 @@ namespace AsusFanControlGUI
trackBarFanSpeed.Value = 99; trackBarFanSpeed.Value = 99;
} }
setFanSpeed(); setFanSpeed(trackBarFanSpeed.Value, fanControl.Checked);
} }
private void trackBarFanSpeed_KeyUp(object sender, KeyEventArgs e) private void trackBarFanSpeed_KeyUp(object sender, KeyEventArgs e)
@@ -107,5 +119,320 @@ namespace AsusFanControlGUI
{ {
labelCPUTemp.Text = $"{asusControl.Thermal_Read_Cpu_Temperature()}"; labelCPUTemp.Text = $"{asusControl.Thermal_Read_Cpu_Temperature()}";
} }
// My Code:
private Point maxPoint;
private Point minPoint;
private void pictureBoxFanCurve_Paint(object sender, PaintEventArgs e)
{
// Draw the fan curve graph
Graphics g = e.Graphics;
// Set up the graph dimensions
int padding = 20;
int graphWidth = pictureBoxFanCurve.Width - 2 * padding;
int graphHeight = pictureBoxFanCurve.Height - 2 * padding;
// Draw the temperature axis and labels
int tempMin = 30;
int tempMax = 100;
int tempInterval = 10;
g.DrawLine(Pens.Black, padding, pictureBoxFanCurve.Height - padding, pictureBoxFanCurve.Width - padding, pictureBoxFanCurve.Height - padding);
for (int temp = tempMin; temp <= tempMax; temp += tempInterval)
{
int x = padding + (temp - tempMin) * graphWidth / (tempMax - tempMin);
g.DrawLine(Pens.Black, x, pictureBoxFanCurve.Height - padding - 5, x, pictureBoxFanCurve.Height - padding + 5);
g.DrawString(temp.ToString(), DefaultFont, Brushes.Black, x - 10, pictureBoxFanCurve.Height - padding + 10);
} }
g.DrawString("Temperature (°C)", DefaultFont, Brushes.Black, pictureBoxFanCurve.Width / 2 - 40, pictureBoxFanCurve.Height - padding + 20);
// Draw the fan speed axis and labels
int speedMin = 0;
int speedMax = 100;
int speedInterval = 20;
g.DrawLine(Pens.Black, padding, padding, padding, pictureBoxFanCurve.Height - padding);
for (int speed = speedMin; speed <= speedMax; speed += speedInterval)
{
int y = pictureBoxFanCurve.Height - padding - speed * graphHeight / speedMax;
g.DrawLine(Pens.Black, padding - 5, y, padding + 5, y);
g.DrawString(speed.ToString(), DefaultFont, Brushes.Black, 5, y - 10);
}
g.DrawString("Fan Speed (%)", DefaultFont, Brushes.Black, padding - 10, padding - 20, new StringFormat(StringFormatFlags.DirectionVertical));
// Draw the fan curve points
foreach (Point point in fanCurvePoints.Values)
{
int x = padding + (point.X - tempMin) * graphWidth / (tempMax - tempMin);
int y = pictureBoxFanCurve.Height - padding - point.Y * graphHeight / speedMax;
g.FillEllipse(Brushes.Green, x - 3, y - 3, 12, 12);
}
// Draw the maximum and minimum temperature points
int maxX = padding + (maxPoint.X - tempMin) * graphWidth / (tempMax - tempMin);
int maxY = pictureBoxFanCurve.Height - padding - maxPoint.Y * graphHeight / speedMax;
g.FillEllipse(Brushes.Red, maxX - 5, maxY - 5, 10, 10);
int minX = padding + (minPoint.X - tempMin) * graphWidth / (tempMax - tempMin);
int minY = pictureBoxFanCurve.Height - padding - minPoint.Y * graphHeight / speedMax;
g.FillEllipse(Brushes.Yellow, minX - 5, minY - 5, 10, 10);
// Draw lines connecting the fan curve points
if (fanCurvePoints.Count >= 2)
{
Point[] graphPoints = fanCurvePoints.Values
.OrderBy(p => p.X)
.Select(p => new Point(
padding + (p.X - tempMin) * graphWidth / (tempMax - tempMin),
pictureBoxFanCurve.Height - padding - p.Y * graphHeight / speedMax
))
.ToArray();
using (Pen thickPen = new Pen(Color.Black, 3))
{
g.DrawLines(Pens.Black, graphPoints);
}
}
}
private void pictureBoxFanCurve_MouseDoubleClick(object sender, MouseEventArgs e)
{
// Set up the graph dimensions
int padding = 20;
int graphWidth = pictureBoxFanCurve.Width - 2 * padding;
int graphHeight = pictureBoxFanCurve.Height - 2 * padding;
// Define the temperature and fan speed ranges
int tempMin = 30;
int tempMax = 100;
int speedMin = 0;
int speedMax = 100;
// Convert the mouse coordinates to graph coordinates
int temperature = tempMin + (e.X - padding) * (tempMax - tempMin) / graphWidth;
int fanSpeed = speedMax - (e.Y - padding) * speedMax / graphHeight;
// Check if a point with the same y-axis already exists
if (fanCurvePoints.Values.Any(p => p.Y == fanSpeed))
{
return; // Do not add the new point
}
if (fanCurvePoints.Count >= 15)
{
MessageBox.Show("Maximum number of points reached.");
return;
}
// Generate a unique ID for the new point
int newID = fanCurvePoints.Count > 0 ? fanCurvePoints.Keys.Max() + 1 : 1;
// Add a new point to the fan curve
Point newPoint = new Point(temperature, fanSpeed);
fanCurvePoints[newID] = newPoint;
pictureBoxFanCurve.Invalidate(); // Redraw the graph
}
private int selectedPointId = 0;
private (int temperature, int fanSpeed) mousePosition(Point e)
{
// Set up the graph dimensions
int padding = 20;
int graphWidth = pictureBoxFanCurve.Width - 2 * padding;
int graphHeight = pictureBoxFanCurve.Height - 2 * padding;
// Define the temperature and fan speed ranges
int tempMin = 30;
int tempMax = 100;
int speedMin = 0;
int speedMax = 100;
// Convert the mouse coordinates to graph coordinates
int temperature = tempMin + (e.X - padding) * (tempMax - tempMin) / graphWidth;
int fanSpeed = speedMax - (e.Y - padding) * speedMax / graphHeight;
return (temperature, fanSpeed);
}
private void pictureBoxFanCurve_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
(int temperature, int fanSpeed) = mousePosition(e.Location);
var nearestPoints = fanCurvePoints
.OrderBy(p => Distance(p.Value, new Point(temperature, fanSpeed)));
var reachablePoint = nearestPoints
.FirstOrDefault(p => Distance(p.Value, new Point(temperature, fanSpeed)) <= 20);
if (reachablePoint.Value != Point.Empty)
{
fanCurvePoints.Remove(reachablePoint.Key);
Console.WriteLine($"Point ID: {reachablePoint.Key} deleted.");
pictureBoxFanCurve.Invalidate();
}
}
}
private void pictureBoxFanCurve_MouseDown(object sender, MouseEventArgs e)
{
Console.Write("MouseDown: ");
if (e.Button == MouseButtons.Left)
{
Console.WriteLine(e.Button);
// Get mouse position
(int temperature, int fanSpeed) = mousePosition(e.Location);
var nearestPoints = fanCurvePoints
.OrderBy(p => Distance(p.Value, new Point(temperature, fanSpeed)));
var reachablePoint = nearestPoints
.FirstOrDefault(p => Distance(p.Value, new Point(temperature, fanSpeed)) <= 20);
if (reachablePoint.Value != Point.Empty)
{
selectedPointId = reachablePoint.Key;
Console.WriteLine($"Distance: {Distance(reachablePoint.Value, new Point(temperature, fanSpeed))}");
}
else
{
selectedPointId = 0;
}
}
}
private void pictureBoxFanCurve_MouseMove(object sender, MouseEventArgs e)
{
if (selectedPointId != 0)
{
// Console.Write("MouseMove, Key: ");
// Get mouse location on grid
(int temperature, int fanSpeed) = mousePosition(e.Location);
fanCurvePoints[selectedPointId] = new Point(temperature, fanSpeed);
pictureBoxFanCurve.Invalidate(); // Redraw the graph
}
}
private void pictureBoxFanCurve_MouseUp(object sender, MouseEventArgs e)
{
selectedPointId = 0;
// fanCurvePoints.ToList().ForEach(point => Console.Write($"ID: {point.Key}, X: {point.Value.X}, Y: {point.Value.Y}"));
// Console.WriteLine();
}
private double Distance(Point p1, Point p2)
{
int dx = p1.X - p2.X;
int dy = p1.Y - p2.Y;
return Math.Sqrt(dx * dx + dy * dy);
}
private Dictionary<int, Point> fanCurvePoints = new Dictionary<int, Point>();
private Timer fanCurveTimer; // Declare the timer as a class-level variable
bool isControlYeilded = false;
private void fanCurve_CheckedChanged(object sender, EventArgs e)
{
if (fanCurveControl.Checked)
{
// Start a timer to read the temperature and update the fan speed every 3 seconds
fanCurveTimer = new Timer();
fanCurveTimer.Interval = 1000; // 3 seconds
fanCurveTimer.Tick += (s, args) =>
{
// Read the current temperature
ulong currentTemp = asusControl.Thermal_Read_Cpu_Temperature(); // Implement the ReadTemperature method to get the current temperature
// Find the fan curve points that bracket the current temperature
KeyValuePair<int, Point> lowerPoint = fanCurvePoints.OrderByDescending(p => p.Value.X).FirstOrDefault(p => (ulong)p.Value.X <= currentTemp);
KeyValuePair<int, Point> upperPoint = fanCurvePoints.OrderBy(p => p.Value.X).FirstOrDefault(p => (ulong)p.Value.X >= currentTemp);
// Calculate the fan speed based on linear interpolation between the bracket points
int fanSpeed;
// Check if the current temperature is within the range of the fan curve points
if ((ulong)lowerPoint.Key == 0 || (ulong)upperPoint.Key == 0)
{
// Temperature is outside the range, yield control to the system
if (!isControlYeilded)
{
asusControl.SetFanSpeeds(0);
isControlYeilded = true;
}
}
else if (lowerPoint.Value.X == upperPoint.Value.X)
{
isControlYeilded = false;
fanSpeed = lowerPoint.Value.Y;
}
else
{
isControlYeilded = false;
double ratio = (currentTemp - (ulong)lowerPoint.Value.X) / (double)(upperPoint.Value.X - lowerPoint.Value.X);
fanSpeed = (int)(lowerPoint.Value.Y + (upperPoint.Value.Y - lowerPoint.Value.Y) * ratio);
// Apply hysteresis to prevent rapid fan speed changes
int hysteresis = 2; // Adjust the hysteresis value as needed
if (fanSpeed > lastFanSpeed + hysteresis || fanSpeed < lastFanSpeed - hysteresis)
{
// Update the fan speed
fanSpeed = Math.Max(1, Math.Min(100, fanSpeed));
setFanSpeed(fanSpeed, true); // Implement the SetFanSpeed method to control the fan speed
lastFanSpeed = fanSpeed;
}
}
};
fanCurveTimer.Start();
}
else
{
// Stop the timer when the fan curve is unchecked
if (fanCurveTimer != null)
{
fanCurveTimer.Stop();
fanCurveTimer.Dispose();
fanCurveTimer = null;
}
}
}
// Keep track of the last fan speed to apply hysteresis
private int lastFanSpeed = 0;
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if (fanControl.Checked)
{
setFanSpeed(trackBarFanSpeed.Value, fanCurveControl.Checked);
}
}
}
} }

BIN
setup.exe Normal file

Binary file not shown.