} //end checkServerStatus private void processChecker_DoWork(object sender, DoWorkEventArgs e) { var revertResolution = (User32.DevMode)e.Argument; while (true) { lock (this._lockObject) { for (var i = HookedProcIds.Count - 1; i >= 0; i--) { try { var runningProcess = Process.GetProcessById(HookedProcIds[i]); } catch (Exception) { WindowStyling.Listeners.Remove(HookedProcIds[i]); HookedProcIds.RemoveAt(i); } } if (HookedProcIds.Count == 0) { e.Cancel = true; WindowStyling.ChangeDisplaySettings(revertResolution); return; } } } } //end processChecker_DoWork
private void Launch() { var settings = Helpers.LoadSettings(); if (settings.ClientDirectory == string.Empty || settings.ClientBin == string.Empty) { MessageBox.Show(@"You must select your lineage directory under settings before continuing.", @"Cannot continue!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var binFile = Path.GetFileNameWithoutExtension(settings.ClientBin); var selectedServer = this._servers[this.cmbServer.SelectedItem.ToString()]; var ip = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(IPAddress.Parse(selectedServer.Ip).GetAddressBytes(), 0)); var revertResolution = new User32.DevMode(); if (settings.Resize) { revertResolution = WindowStyling.ChangeDisplaySettings(settings.Resolution.Width, settings.Resolution.Height, 16); } else if (settings.Windowed) { revertResolution = WindowStyling.ChangeDisplayColour(16); } Lineage.Run(settings, settings.ClientBin, ip, (ushort)selectedServer.Port); var hookedProcId = -1; if (settings.Windowed) { lock (this._lockObject) hookedProcId = WindowStyling.SetWindowed(binFile, HookedProcIds); } if (settings.Centred) { var windowSize = Screen.PrimaryScreen.WorkingArea; hookedProcId = WindowStyling.SetCentred(binFile, windowSize.Width, windowSize.Height, hookedProcId); } if (hookedProcId != -1) { lock (this._lockObject) HookedProcIds.Add(hookedProcId); } if (!this.processChecker.IsBusy) { this.processChecker.RunWorkerAsync(revertResolution); } }
public static User32.DevMode ChangeDisplaySettings(User32.DevMode mode) { return(WindowStyling.ChangeDisplaySettings(mode.dmPelsWidth, mode.dmPelsHeight, mode.dmBitsPerPel)); }
public static User32.DevMode ChangeDisplayColour(int bitCount) { return(WindowStyling.ChangeDisplaySettings(-1, -1, bitCount)); }