public void StopIdle() { try { LblGameName.Visible = false; PbxApp.Image = null; PbxApp.Visible = false; LvwGamesState.Visible = false; BtnPause.Visible = false; BtnSkip.Visible = false; LblCurrentStatus.Text = localization.strings.not_ingame; LblHoursPlayed.Visible = false; PbxIdleStatus.Image = null; // Stop the card drop check timer TmrCardDropCheck.Enabled = false; // Stop the statistics timer TmrStatistics.Stop(); TmrStatistics.Enabled = false; // Hide the status bar SstFooter.Visible = false; // Resize the form var graphics = CreateGraphics(); var scale = graphics.DpiY * 1.9583; Height = Convert.ToInt32(scale); // Kill the idling process foreach (var badge in AllBadges.Where(b => b.InIdle)) { badge.StopIdle(); } } catch (Exception ex) { Logger.Exception(ex, "frmMain -> StopIdle"); } }
private void StartIdle() { // Kill all existing processes before starting any new ones // This prevents rogue processes from interfering with idling time and slowing card drops try { String username = WindowsIdentity.GetCurrent().Name; foreach (var process in Process.GetProcessesByName("steam-idle")) { ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ProcessID = " + process.Id); ManagementObjectCollection processList = searcher.Get(); foreach (ManagementObject obj in processList) { string[] argList = new string[] { string.Empty, string.Empty }; int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList)); if (returnVal == 0) { if (argList[1] + "\\" + argList[0] == username) { process.Kill(); } } } } } catch (Exception) { } // Check if user is authenticated and if any badge left to idle // There should be check for IsCookieReady, but property is set in timer tick, so it could take some time to be set. if (string.IsNullOrWhiteSpace(Settings.Default.sessionid) || !IsSteamReady) { ResetClientStatus(); } else { if (ReloadCount != 0) { return; } if (CanIdleBadges.Any()) { statistics.SetRemainingCards((uint)CardsRemaining); TmrStatistics.Enabled = true; TmrStatistics.Start(); if (Settings.Default.OnlyOneGameIdle) { StartSoloIdle(CanIdleBadges.First()); } else { if (Settings.Default.OneThenMany) { var multi = CanIdleBadges.Where(b => b.HoursPlayed >= 2); if (multi.Count() >= 1) { StartSoloIdle(multi.First()); } else { StartMultipleIdle(); } } else { var multi = CanIdleBadges.Where(b => b.HoursPlayed < 2); if (multi.Count() >= 2) { StartMultipleIdle(); } else { StartSoloIdle(CanIdleBadges.First()); } } } } else { IdleComplete(); } UpdateStateInfo(); } }