// Start/stop specific process public static void StartProcess(frmAutoClicker.OperationType taskType, string appPath, string profile, bool isShowWindow, bool isSaveProcessed, string description) { switch (taskType) { case frmAutoClicker.OperationType.STARTAUTO: Log("//========================RUN AUTO TASKS=======================//"); break; case frmAutoClicker.OperationType.STARTMANUAL: Log("//=======================RUN MANUAL TASKS======================//"); break; case frmAutoClicker.OperationType.CreateProfiles: Log("//=======================CREATE PROFILES=======================//"); break; case frmAutoClicker.OperationType.CreateAccounts: Log("//=======================CREATE ACCOUNTS=======================//"); break; } Log("-----------------------" + DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss") + "-----------------------"); if (!string.IsNullOrEmpty(description)) { Log(description); } var process = new Process(); if (isShowWindow) { process.StartInfo = new ProcessStartInfo(appPath, profile); } else { process.StartInfo = new ProcessStartInfo(appPath, profile) { UseShellExecute = false, // CreateNoWindow only works, if shell is not used CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden }; } process.Start(); if (isSaveProcessed) { SaveProcessIds(taskType, process.Id); } }
public static void SaveProcessIds(frmAutoClicker.OperationType taskType, int id) { var c = ";"; var ids = ""; switch (taskType) { case frmAutoClicker.OperationType.STARTAUTO: ids = Properties.Settings.Default.AutoProcesses; if (!string.IsNullOrEmpty(ids)) { Properties.Settings.Default.AutoProcesses = ids + c + id; } else { Properties.Settings.Default.AutoProcesses = id.ToString(); } break; case frmAutoClicker.OperationType.STARTMANUAL: ids = Properties.Settings.Default.ManualProcesses; if (!string.IsNullOrEmpty(ids)) { Properties.Settings.Default.ManualProcesses = ids + c + id; } else { Properties.Settings.Default.ManualProcesses = id.ToString(); } break; case frmAutoClicker.OperationType.CreateProfiles: ids = Properties.Settings.Default.CreateProfilesProcesses; if (!string.IsNullOrEmpty(ids)) { Properties.Settings.Default.CreateProfilesProcesses = ids + c + id; } else { Properties.Settings.Default.CreateProfilesProcesses = id.ToString(); } break; case frmAutoClicker.OperationType.CreateAccounts: ids = Properties.Settings.Default.CreateAccountsProcesses; if (!string.IsNullOrEmpty(ids)) { Properties.Settings.Default.CreateAccountsProcesses = ids + c + id; } else { Properties.Settings.Default.CreateAccountsProcesses = id.ToString(); } break; } Properties.Settings.Default.Save(); var tw = new StreamWriter(frmAutoClicker.processIdsFilePath); tw.WriteLine(ids + c + id); tw.Close(); }
public static void StopProcessByBatFile(string appPath, frmAutoClicker.OperationType taskType, string browser) { var pro = Process.GetProcessesByName(browser == "yandex" ? "browser" : browser).FirstOrDefault(); if (pro == null || pro.HasExited) { return; } if (!File.Exists(appPath)) { return; } switch (browser) { case "chrome": browser = "Google Chrome"; break; case "brave": browser = browser.ToUpperInvariant(); break; case "msedge": browser = "Miscrosoft Edge"; break; case "browser": browser = "Coc Coc"; break; case "yandex": browser = browser.ToUpperInvariant(); break; } switch (taskType) { case frmAutoClicker.OperationType.STARTAUTO: Log("//=====================KILL AUTO PROCESSES=====================//"); break; case frmAutoClicker.OperationType.STARTMANUAL: Log("//====================KILL MANUAL PROCESSES====================//"); break; case frmAutoClicker.OperationType.CreateProfiles: case frmAutoClicker.OperationType.CreateAccounts: Log("//=======================KILL PROCESSES========================//"); break; } Log("-----------------------" + DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss") + "-----------------------"); Log("Kill processes of " + browser); var process = new Process { StartInfo = new ProcessStartInfo(appPath, "") { UseShellExecute = false, // CreateNoWindow only works, if shell is not used CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden } }; process.Start(); process.WaitForExit(1000 * 10); }
public static void StopProcess(frmAutoClicker.OperationType taskType, string browserName, bool isDeleted, bool isStopped) { try { var processIds = Properties.Settings.Default.AutoProcesses.Split(';'); switch (taskType) { case frmAutoClicker.OperationType.STARTAUTO: if (isStopped) { Properties.Settings.Default.AutoProcesses = string.Empty; } break; case frmAutoClicker.OperationType.STARTMANUAL: processIds = Properties.Settings.Default.ManualProcesses.Split(';'); if (isStopped) { Properties.Settings.Default.ManualProcesses = string.Empty; } break; case frmAutoClicker.OperationType.CreateProfiles: processIds = Properties.Settings.Default.CreateProfilesProcesses.Split(';'); if (isStopped) { Properties.Settings.Default.CreateProfilesProcesses = string.Empty; } break; case frmAutoClicker.OperationType.CreateAccounts: processIds = Properties.Settings.Default.CreateAccountsProcesses.Split(';'); if (isStopped) { Properties.Settings.Default.CreateAccountsProcesses = string.Empty; } break; } Properties.Settings.Default.Save(); foreach (var id in processIds) { if (string.IsNullOrEmpty(id)) { continue; } var pId = 0; int.TryParse(id, out pId); if (pId == 0) { continue; } var process = new Process(); if (!string.IsNullOrEmpty(browserName)) { process = Process.GetProcesses().Where(p => p.Id == pId && p.ProcessName == browserName).FirstOrDefault(); } else { process = Process.GetProcessesByName(browserName).Where(p => p.Id == pId).FirstOrDefault(); } if (process == null || process.HasExited) { continue; } process.Kill(); switch (taskType) { case frmAutoClicker.OperationType.STARTAUTO: Log("//=====================KILL AUTO PROCESSES=====================//"); break; case frmAutoClicker.OperationType.STARTMANUAL: Log("//====================KILL MANUAL PROCESSES====================//"); break; case frmAutoClicker.OperationType.CreateProfiles: Log("//========================KILL PROCESSES=======================//"); break; case frmAutoClicker.OperationType.CreateAccounts: Log("//========================KILL PROCESSES=======================//"); break; } Log("-----------------------" + DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss") + "-----------------------"); Log("Kill process name: " + process.ProcessName); Log("Kill process id: " + pId); } if (isDeleted && File.Exists(frmAutoClicker.processIdsFilePath)) { File.Delete(frmAutoClicker.processIdsFilePath); } } catch (Exception ex) { Log("//====================ERROR KILL PROCESSES=====================//"); Log("-----------------------" + DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss") + "-----------------------"); Log("There's error when stopping processes!" + Environment.NewLine + ex.Message); Log("Stack trace:" + Environment.NewLine + ex.StackTrace); } }