123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- using Microsoft.Win32;
- using System;
- using System.Diagnostics;
- using System.IO;
- using System.Reflection;
- using System.Threading;
- using System.Windows;
- namespace FastGithub.UI
- {
- class Program
- {
- private const string MUTEX_NAME = "Global\\FastGithub.UI";
- private const string MAIN_WINDOWS = "MainWindow.xaml";
- private const string FASTGITHUB_PATH = "fastgithub.exe";
- [STAThread]
- static void Main(string[] args)
- {
- AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;
- using var mutex = new Mutex(true, MUTEX_NAME, out var isFirstInstance);
- if (isFirstInstance == false)
- {
- return;
- }
- StartFastGithub();
- SetWebBrowserDPI();
- SetWebBrowserVersion();
- var app = new Application();
- app.StartupUri = new Uri(MAIN_WINDOWS, UriKind.Relative);
- app.Run();
- }
- /// <summary>
- /// 程序集加载失败时
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="args"></param>
- /// <returns></returns>
- private static Assembly? OnAssemblyResolve(object sender, ResolveEventArgs args)
- {
- var name = new AssemblyName(args.Name).Name;
- if (name.EndsWith(".resources"))
- {
- return default;
- }
- var stream = Application.GetResourceStream(new Uri($"Resource/{name}.dll", UriKind.Relative)).Stream;
- var buffer = new byte[stream.Length];
- stream.Read(buffer, 0, buffer.Length);
- return Assembly.Load(buffer);
- }
- /// <summary>
- /// 设置浏览器版本
- /// </summary>
- private static void SetWebBrowserVersion()
- {
- const string subKey = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
- var registryKey = Registry.CurrentUser.OpenSubKey(subKey, true);
- if (registryKey == null)
- {
- registryKey = Registry.CurrentUser.CreateSubKey(subKey);
- }
- var name = $"{Process.GetCurrentProcess().ProcessName}.exe";
- using var webBrowser = new System.Windows.Forms.WebBrowser();
- var value = int.Parse($"{webBrowser.Version.Major}000");
- registryKey.SetValue(name, value, RegistryValueKind.DWord);
- }
- /// <summary>
- /// 设置浏览器DPI
- /// </summary>
- private static void SetWebBrowserDPI()
- {
- const string subKey = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_96DPI_PIXEL";
- var registryKey = Registry.CurrentUser.OpenSubKey(subKey, true);
- if (registryKey == null)
- {
- registryKey = Registry.CurrentUser.CreateSubKey(subKey);
- }
- var name = $"{Process.GetCurrentProcess().ProcessName}.exe";
- registryKey.SetValue(name, 1, RegistryValueKind.DWord);
- }
- /// <summary>
- /// 启动fastgithub
- /// </summary>
- /// <returns></returns>
- private static void StartFastGithub()
- {
- if (File.Exists(FASTGITHUB_PATH) == false)
- {
- return;
- }
- var startInfo = new ProcessStartInfo
- {
- FileName = FASTGITHUB_PATH,
- Arguments = $"ParentProcessId={Process.GetCurrentProcess().Id} UdpLoggerPort={UdpLogger.Port}",
- UseShellExecute = false,
- CreateNoWindow = true
- };
- Process.Start(startInfo);
- }
- }
- }
|