alpha
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
using Hardcodet.Wpf.TaskbarNotification;
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern.Controls;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Windows;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Windows.Shell;
|
||||
using Ookii.Dialogs.Wpf;
|
||||
using System.Diagnostics;
|
||||
using Ink_Canvas.Windows;
|
||||
using Lierda.WPFHelper;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Principal;
|
||||
using Windows.Data.Xml.Dom;
|
||||
using Windows.UI.Notifications;
|
||||
using Ink_Canvas.Properties;
|
||||
using Ink_Canvas.Resources.ICCConfiguration;
|
||||
|
||||
namespace Ink_Canvas {
|
||||
|
||||
public partial class App : Application {
|
||||
|
||||
[DllImport("UIAccessDLL_x86.dll", EntryPoint = "PrepareUIAccess", CallingConvention = CallingConvention.Cdecl)]
|
||||
public static extern Int32 PrepareUIAccessX86();
|
||||
|
||||
[DllImport("UIAccessDLL_x64.dll", EntryPoint = "PrepareUIAccess", CallingConvention = CallingConvention.Cdecl)]
|
||||
public static extern Int32 PrepareUIAccessX64();
|
||||
|
||||
System.Threading.Mutex mutex;
|
||||
|
||||
public static string[] StartArgs = null;
|
||||
public static string RootPath = Environment.GetEnvironmentVariable("APPDATA") + "\\Ink Canvas\\";
|
||||
public static ICCConfiguration SettingsV2 = new ICCConfiguration();
|
||||
|
||||
public App() {
|
||||
this.Startup += new StartupEventHandler(App_Startup);
|
||||
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
|
||||
}
|
||||
|
||||
private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
|
||||
{
|
||||
Ink_Canvas.MainWindow.ShowNewMessage("抱歉,出现未预期的异常,可能导致 InkCanvasForClass 运行不稳定。\n建议保存墨迹后重启应用。");
|
||||
LogHelper.NewLog(e.Exception.ToString());
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private TaskbarIcon _taskbar;
|
||||
private MainWindow mainWin = null;
|
||||
|
||||
void App_Startup(object sender, StartupEventArgs e) {
|
||||
|
||||
var identity = WindowsIdentity.GetCurrent();
|
||||
var principal = new WindowsPrincipal(identity);
|
||||
if (Environment.Is64BitProcess && principal.IsInRole(WindowsBuiltInRole.Administrator)) {
|
||||
//Trace.WriteLine(PrepareUIAccessX64());
|
||||
} else if (principal.IsInRole(WindowsBuiltInRole.Administrator)) {
|
||||
//PrepareUIAccessX86();
|
||||
}
|
||||
|
||||
RootPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
|
||||
|
||||
SettingsV2 = ConfigurationHelper.ReadConfiguration();
|
||||
|
||||
LogHelper.NewLog(string.Format("Ink Canvas Starting (Version: {0})", Assembly.GetExecutingAssembly().GetName().Version.ToString()));
|
||||
|
||||
bool ret;
|
||||
mutex = new System.Threading.Mutex(true, "InkCanvasForClass", out ret);
|
||||
|
||||
if (!ret && !(e.Args.Contains("-m")||e.Args.Contains("--multiple"))) //-m multiple
|
||||
{
|
||||
LogHelper.NewLog("Detected existing instance");
|
||||
|
||||
if (TaskDialog.OSSupportsTaskDialogs) {
|
||||
using (TaskDialog dialog = new TaskDialog())
|
||||
{
|
||||
dialog.WindowTitle = "InkCanvasForClass";
|
||||
dialog.MainIcon = TaskDialogIcon.Warning;
|
||||
dialog.MainInstruction = "已有一个实例正在运行";
|
||||
dialog.Content = "这意味着 InkCanvasForClass 正在运行,而您又运行了主程序一遍。如果频繁出现该弹窗且ICC无法正常启动时,请尝试 “以多开模式启动”。";
|
||||
TaskDialogButton customButton = new TaskDialogButton("以多开模式启动");
|
||||
customButton.Default = false;
|
||||
dialog.ButtonClicked += (object s, TaskDialogItemClickedEventArgs _e) => {
|
||||
if (_e.Item == customButton)
|
||||
{
|
||||
Process.Start(System.Windows.Forms.Application.ExecutablePath, "-m");
|
||||
}
|
||||
};
|
||||
TaskDialogButton okButton = new TaskDialogButton(ButtonType.Ok);
|
||||
okButton.Default = true;
|
||||
dialog.Buttons.Add(customButton);
|
||||
dialog.Buttons.Add(okButton);
|
||||
TaskDialogButton button = dialog.ShowDialog();
|
||||
}
|
||||
}
|
||||
|
||||
LogHelper.NewLog("Ink Canvas automatically closed");
|
||||
Environment.Exit(0);
|
||||
}
|
||||
|
||||
|
||||
var isUsingWindowChrome = false;
|
||||
try {
|
||||
if (File.Exists(App.RootPath + "Settings.json")) {
|
||||
try {
|
||||
string text = File.ReadAllText(App.RootPath + "Settings.json");
|
||||
var obj = JObject.Parse(text);
|
||||
isUsingWindowChrome = (bool)obj.SelectToken("startup.enableWindowChromeRendering");
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
LogHelper.WriteLogToFile(ex.ToString(), LogHelper.LogType.Error);
|
||||
}
|
||||
|
||||
mainWin = new MainWindow();
|
||||
mainWin.Show();
|
||||
|
||||
//var setW = new SettingsWindow();
|
||||
//setW.Show();
|
||||
|
||||
_taskbar = (TaskbarIcon)FindResource("TaskbarTrayIcon");
|
||||
|
||||
LierdaCracker cracker = new LierdaCracker();
|
||||
cracker.Cracker();
|
||||
|
||||
StartArgs = e.Args;
|
||||
}
|
||||
|
||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (System.Windows.Forms.SystemInformation.MouseWheelScrollLines == -1)
|
||||
e.Handled = false;
|
||||
else
|
||||
try
|
||||
{
|
||||
ScrollViewerEx SenderScrollViewer = (ScrollViewerEx)sender;
|
||||
SenderScrollViewer.ScrollToVerticalOffset(SenderScrollViewer.VerticalOffset - e.Delta * 10 * System.Windows.Forms.SystemInformation.MouseWheelScrollLines / (double)120);
|
||||
e.Handled = true;
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user