iMonitor desktop application using dotnet 4.8
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.3 KiB

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;
}
}
}