This commit is contained in:
JustArchi 2017-02-05 13:52:00 +01:00
parent 8fe30f7442
commit 2af76f746d
4 changed files with 75 additions and 1 deletions

View file

@ -138,6 +138,7 @@
<Compile Include="Logging.cs" />
<Compile Include="InMemoryServerListProvider.cs" />
<Compile Include="MobileAuthenticator.cs" />
<Compile Include="OS.cs" />
<Compile Include="Runtime.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />

69
ArchiSteamFarm/OS.cs Normal file
View file

@ -0,0 +1,69 @@
/*
_ _ _ ____ _ _____
/ \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
/ _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
/ ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
/_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
Copyright 2015-2017 Łukasz "JustArchi" Domeradzki
Contact: JustArchi@JustArchi.net
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
using System;
using System.Runtime.InteropServices;
using ArchiSteamFarm.Localization;
namespace ArchiSteamFarm {
internal static class OS {
private static readonly PlatformID PlatformID = Environment.OSVersion.Platform;
internal static void Init() {
switch (PlatformID) {
case PlatformID.Win32NT:
case PlatformID.Win32S:
case PlatformID.Win32Windows:
case PlatformID.WinCE:
KeepWindowsSystemActive();
break;
}
}
private static void KeepWindowsSystemActive() {
// This function calls unmanaged API in order to tell Windows OS that it should not enter sleep state while the program is running
// If user wishes to enter sleep mode, then he should use ShutdownOnFarmingFinished or manage ASF process with third-party tool or script
// More info: https://msdn.microsoft.com/library/windows/desktop/aa373208(v=vs.85).aspx
EExecutionState result = SetThreadExecutionState(EExecutionState.Continuous | EExecutionState.AwayModeRequired | EExecutionState.SystemRequired);
// SetThreadExecutionState() returns NULL on failure, which is mapped to 0 (EExecutionState.Error) in our case
if (result == EExecutionState.Error) {
ASF.ArchiLogger.LogGenericError(string.Format(Strings.WarningFailedWithError, result));
}
}
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern EExecutionState SetThreadExecutionState(EExecutionState executionState);
[Flags]
private enum EExecutionState : uint {
Error = 0,
SystemRequired = 0x00000001,
// DisplayRequired = 0x00000002,
// UserPresent = 0x00000004,
AwayModeRequired = 0x00000040,
Continuous = 0x80000000
}
}
}

View file

@ -266,8 +266,9 @@ namespace ArchiSteamFarm {
}
ArchiWebHandler.Init();
WebBrowser.Init();
OS.Init();
WCF.Init();
WebBrowser.Init();
WebBrowser = new WebBrowser(ASF.ArchiLogger);
}

View file

@ -148,6 +148,9 @@
<Compile Include="..\ArchiSteamFarm\MobileAuthenticator.cs">
<Link>MobileAuthenticator.cs</Link>
</Compile>
<Compile Include="..\ArchiSteamFarm\OS.cs">
<Link>OS.cs</Link>
</Compile>
<Compile Include="..\ArchiSteamFarm\Runtime.cs">
<Link>Runtime.cs</Link>
</Compile>