优化代码

This commit is contained in:
2025-07-28 14:40:44 +08:00
parent f38313ff2c
commit f03733da04
66 changed files with 1333 additions and 1294 deletions
@@ -36,7 +36,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
try
{
_plugin = plugin;
LogHelper.WriteLogToFile("开始创建启动台按钮", LogHelper.LogType.Info);
LogHelper.WriteLogToFile("开始创建启动台按钮");
// 创建SimpleStackPanel
_panel = new SimpleStackPanel
@@ -49,7 +49,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
Background = Brushes.Transparent
};
LogHelper.WriteLogToFile("创建SimpleStackPanel完成", LogHelper.LogType.Info);
LogHelper.WriteLogToFile("创建SimpleStackPanel完成");
// 添加图标
var image = CreateIconImage();
@@ -77,7 +77,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
// 设置工具提示
_panel.ToolTip = "启动台";
LogHelper.WriteLogToFile("启动台按钮创建完成", LogHelper.LogType.Info);
LogHelper.WriteLogToFile("启动台按钮创建完成");
}
catch (Exception ex)
{
@@ -112,8 +112,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
// 保存配置
_plugin.SaveConfig();
LogHelper.WriteLogToFile($"通过右键菜单切换启动台按钮位置为: {_plugin.Config.ButtonPosition}",
LogHelper.LogType.Info);
LogHelper.WriteLogToFile($"通过右键菜单切换启动台按钮位置为: {_plugin.Config.ButtonPosition}");
};
menu.Items.Add(positionMenuItem);
@@ -133,7 +132,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
if (method != null)
{
method.Invoke(mainWindow, null);
LogHelper.WriteLogToFile("已打开插件设置窗口", LogHelper.LogType.Info);
LogHelper.WriteLogToFile("已打开插件设置窗口");
}
}
catch (Exception ex)
@@ -218,7 +217,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
{
// 提供反馈
_panel.Background = new SolidColorBrush(Color.FromArgb(40, 0, 0, 0));
LogHelper.WriteLogToFile("启动台按钮鼠标按下", LogHelper.LogType.Info);
LogHelper.WriteLogToFile("启动台按钮鼠标按下");
}
catch (Exception ex)
{
@@ -241,7 +240,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
// 恢复背景
_panel.Background = Brushes.Transparent;
LogHelper.WriteLogToFile("启动台按钮鼠标抬起,准备显示启动台窗口", LogHelper.LogType.Info);
LogHelper.WriteLogToFile("启动台按钮鼠标抬起,准备显示启动台窗口");
// 获取按钮在屏幕上的位置
Point buttonPosition = _panel.PointToScreen(new Point(_panel.ActualWidth / 2, 0));
@@ -1,12 +1,15 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Microsoft.Win32;
using Newtonsoft.Json;
namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
{
@@ -75,13 +78,13 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
/// <summary>
/// 图标缓存
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[JsonIgnore]
private ImageSource _iconCache;
/// <summary>
/// 获取应用程序图标
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[JsonIgnore]
public ImageSource Icon
{
get
@@ -241,28 +244,28 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
}
// 检查文件是否存在
if (!System.IO.File.Exists(Path) && !Path.Contains(":\\"))
if (!File.Exists(Path) && !Path.Contains(":\\"))
{
// 可能是系统命令,如explorer.exe
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = Path,
UseShellExecute = true
};
System.Diagnostics.Process.Start(psi);
Process.Start(psi);
}
else
{
// 使用Process.Start启动应用程序
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = Path,
UseShellExecute = true
};
System.Diagnostics.Process.Start(psi);
Process.Start(psi);
}
LogHelper.WriteLogToFile($"已启动应用程序: {Path}", LogHelper.LogType.Info);
LogHelper.WriteLogToFile($"已启动应用程序: {Path}");
}
catch (Exception ex)
{
@@ -315,15 +318,15 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
}
}
[System.Runtime.InteropServices.DllImport("Shell32.dll", EntryPoint = "ExtractIconEx")]
[DllImport("Shell32.dll", EntryPoint = "ExtractIconEx")]
private static extern int ExtractIconEx(
[System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPStr)] string lpszFile,
[MarshalAs(UnmanagedType.LPStr)] string lpszFile,
int nIconIndex,
out IntPtr phiconLarge,
out IntPtr phiconSmall,
int nIcons);
[System.Runtime.InteropServices.DllImport("User32.dll")]
[DllImport("User32.dll")]
private static extern int DestroyIcon(IntPtr hIcon);
}
}
@@ -1,9 +1,10 @@
using Microsoft.Win32;
using System;
using System.ComponentModel;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using Ink_Canvas.Windows;
using Microsoft.Win32;
namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
{
@@ -77,7 +78,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
// 保存配置
_plugin.SaveConfig();
LogHelper.WriteLogToFile($"启动台按钮位置已更改为: {_plugin.Config.ButtonPosition}", LogHelper.LogType.Info);
LogHelper.WriteLogToFile($"启动台按钮位置已更改为: {_plugin.Config.ButtonPosition}");
}
catch (Exception ex)
{
@@ -283,9 +284,9 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
pathTextBox.Text = dialog.FileName;
// 如果选择的是.exe文件,自动获取文件名填入名称字段
if (System.IO.Path.GetExtension(dialog.FileName).ToLower() == ".exe")
if (Path.GetExtension(dialog.FileName).ToLower() == ".exe")
{
string fileName = System.IO.Path.GetFileNameWithoutExtension(dialog.FileName);
string fileName = Path.GetFileNameWithoutExtension(dialog.FileName);
// 只有在名称字段为空或者是新建项目时才自动填入
if (string.IsNullOrWhiteSpace(nameTextBox.Text) || isNew)
{
@@ -1,10 +1,16 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Threading;
namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
{
@@ -21,7 +27,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
/// <summary>
/// 是否处于固定模式
/// </summary>
private bool _isFixMode = false;
private bool _isFixMode;
/// <summary>
/// 应用项按钮列表
@@ -51,11 +57,11 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
LoadLauncherItems();
// 添加鼠标按下事件(用于拖动窗口)
this.MouseDown += (s, e) =>
MouseDown += (s, e) =>
{
if (e.ChangedButton == MouseButton.Left && e.ButtonState == MouseButtonState.Pressed)
{
this.DragMove();
DragMove();
}
};
@@ -145,18 +151,18 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
string appPath = item.Path;
string appName = item.Name;
LogHelper.WriteLogToFile($"点击启动应用: {appName}, 路径: {appPath}", LogHelper.LogType.Info);
LogHelper.WriteLogToFile($"点击启动应用: {appName}, 路径: {appPath}");
// 首先标记窗口正在关闭
IsClosing = true;
// 创建一个应用启动任务
var launchTask = new System.Threading.Tasks.Task(() =>
var launchTask = new Task(() =>
{
try
{
// 等待一段时间,确保窗口关闭流程已经开始
System.Threading.Thread.Sleep(200);
Thread.Sleep(200);
// 使用UI线程启动应用
Application.Current.Dispatcher.Invoke(() =>
@@ -164,18 +170,18 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
try
{
// 检查应用路径是否存在
if (System.IO.File.Exists(appPath) || !appPath.Contains(":\\"))
if (File.Exists(appPath) || !appPath.Contains(":\\"))
{
// 创建进程启动信息
var psi = new System.Diagnostics.ProcessStartInfo
var psi = new ProcessStartInfo
{
FileName = appPath,
UseShellExecute = true,
};
// 启动应用程序
var process = System.Diagnostics.Process.Start(psi);
LogHelper.WriteLogToFile($"应用程序 {appName} 已启动", LogHelper.LogType.Info);
var process = Process.Start(psi);
LogHelper.WriteLogToFile($"应用程序 {appName} 已启动");
}
else
{
@@ -205,7 +211,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
// 启动应用程序任务
launchTask.Start();
}), System.Windows.Threading.DispatcherPriority.Background);
}), DispatcherPriority.Background);
}
catch (Exception ex)
{
@@ -406,7 +412,7 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
{
LogHelper.WriteLogToFile($"延迟关闭窗口时出错: {ex.Message}", LogHelper.LogType.Error);
}
}), System.Windows.Threading.DispatcherPriority.Background);
}), DispatcherPriority.Background);
}
}
catch (Exception ex)
@@ -418,12 +424,12 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn.SuperLauncher
/// <summary>
/// 窗口是否正在关闭
/// </summary>
private bool IsClosing { get; set; } = false;
private bool IsClosing { get; set; }
/// <summary>
/// 重写OnClosing方法,标记窗口正在关闭
/// </summary>
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
protected override void OnClosing(CancelEventArgs e)
{
IsClosing = true;
base.OnClosing(e);