using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; using _4ELogger; namespace iMonitorApp { // Token: 0x0200001D RID: 29 internal static class Program { // Token: 0x060000DF RID: 223 RVA: 0x0000A094 File Offset: 0x00008294 [STAThread] private static void Main() { Debug.Listeners.Add(new TextWriterTraceListener(Console.Out)); Debug.AutoFlush = true; bool flag = Program.PriorProcess() != null; if (flag) { MessageBox.Show("Another instance of the app is already running."); Program.SetForegroundWindow(Program.PriorProcess().MainWindowHandle); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.ThreadException += Program.Application_ThreadException; AppDomain.CurrentDomain.UnhandledException += Program.CurrentDomain_UnhandledException; Application.Run(new ParentForm()); } } // Token: 0x060000E0 RID: 224 RVA: 0x0000A110 File Offset: 0x00008310 private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { Exception ex = (Exception)e.ExceptionObject; Logger.Log(string.Concat(new string[] { "CurrentDomain_Unhandled: Terminating: ", e.IsTerminating.ToString(), "Exception:", ex.Message, ex.StackTrace }), "iMonitorApp", "iMonitor"); } // Token: 0x060000E1 RID: 225 RVA: 0x0000A178 File Offset: 0x00008378 private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { Logger.Log(e.Exception.Message + e.Exception.StackTrace, "iMonitorApp", "iMonitor"); } // Token: 0x060000E2 RID: 226 [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); // Token: 0x060000E3 RID: 227 RVA: 0x0000A1A8 File Offset: 0x000083A8 public static Process PriorProcess() { Process currentProcess = Process.GetCurrentProcess(); Process[] processesByName = Process.GetProcessesByName(currentProcess.ProcessName); foreach (Process process in processesByName) { bool flag = process.Id != currentProcess.Id && process.MainModule.FileName == currentProcess.MainModule.FileName; if (flag) { return process; } } return null; } } }