Repository navigation
Expand file tree
/
Copy pathProgram.cs
More file actions
130 lines (100 loc) · 2.97 KB
/
Copy pathProgram.cs
File metadata and controls
130 lines (100 loc) · 2.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using System;
using System.Drawing;
using System.Globalization;
using System.Windows.Forms;
using Microsoft.SqlServer.MessageBox;
using ReClassNET.Core;
using ReClassNET.DataExchange.ReClass;
using ReClassNET.Forms;
using ReClassNET.Logger;
using ReClassNET.Memory;
using ReClassNET.Native;
using ReClassNET.UI;
using ReClassNET.Util;
namespace ReClassNET
{
static class Program
{
public static CommandLineArgs CommandLineArgs { get; private set; }
public static Settings Settings { get; private set; }
public static ILogger Logger { get; private set; }
public static Random GlobalRandom { get; } = new Random();
public static RemoteProcess RemoteProcess { get; private set; }
public static CoreFunctionsManager CoreFunctions => RemoteProcess.CoreFunctions;
public static MainForm MainForm { get; private set; }
public static bool DesignMode { get; private set; } = true;
public static FontEx MonoSpaceFont { get; private set; }
[STAThread]
static void Main(string[] args)
{
DesignMode = false; // The designer doesn't call Main()
CommandLineArgs = new CommandLineArgs(args);
if (CommandLineArgs[Constants.CommandLineOptions.FileExtRegister] != null)
{
NativeMethods.RegisterExtension(ReClassNetFile.FileExtension, ReClassNetFile.FileExtensionId, PathUtil.ExecutablePath, Constants.ApplicationName);
return;
}
if (CommandLineArgs[Constants.CommandLineOptions.FileExtUnregister] != null)
{
NativeMethods.UnregisterExtension(ReClassNetFile.FileExtension, ReClassNetFile.FileExtensionId);
return;
}
try
{
DpiUtil.ConfigureProcess();
}
catch
{
}
MonoSpaceFont = new FontEx
{
Font = new Font("Courier New", DpiUtil.ScaleIntX(13), GraphicsUnit.Pixel),
Width = DpiUtil.ScaleIntX(8),
Height = DpiUtil.ScaleIntY(16)
};
NativeMethods.EnableDebugPrivileges();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
Settings = Settings.Load();
Logger = new GuiLogger();
#if DEBUG
using (var coreFunctions = new CoreFunctionsManager())
{
RemoteProcess = new RemoteProcess(coreFunctions);
MainForm = new MainForm();
Application.Run(MainForm);
RemoteProcess.Dispose();
}
#else
try
{
using (var coreFunctions = new CoreFunctionsManager())
{
RemoteProcess = new RemoteProcess(coreFunctions);
MainForm = new MainForm();
Application.Run(MainForm);
RemoteProcess.Dispose();
}
}
catch (Exception ex)
{
ShowException(ex);
}
#endif
Settings.Save(Settings);
}
/// <summary>Shows the exception in a special form.</summary>
/// <param name="ex">The exception.</param>
public static void ShowException(Exception ex)
{
ex.HelpLink = Constants.HelpUrl;
var msg = new ExceptionMessageBox(ex)
{
ShowToolBar = true,
Symbol = ExceptionMessageBoxSymbol.Error
};
msg.Show(null);
}
}
}