Add WinUI and core source
build-winui / winui (push) Has been cancelled

This commit is contained in:
QWQLwToo
2026-06-26 13:27:13 +08:00
parent f59190251d
commit 7ecc6a8923
262 changed files with 137492 additions and 0 deletions
@@ -0,0 +1,76 @@
using System.Runtime.InteropServices.WindowsRuntime;
using Microsoft.Win32;
using Windows.ApplicationModel;
using YMhut.Box.Core.App;
namespace YMhut.Box.WinUI.Services;
public sealed class WindowsStartupService : IStartupService
{
private const string RunKeyPath = @"Software\Microsoft\Windows\CurrentVersion\Run";
private const string ValueName = "YMhut Box";
private const string StartupTaskId = "YMhutBoxStartupTask";
public bool IsEnabled()
{
if (TryGetPackagedStartupTask(out var startupTask))
{
return startupTask.State == StartupTaskState.Enabled;
}
using var key = Registry.CurrentUser.OpenSubKey(RunKeyPath, false);
return key?.GetValue(ValueName) is string value && value.Contains("YMhutBox", StringComparison.OrdinalIgnoreCase);
}
public void SetEnabled(bool enabled)
{
if (TryGetPackagedStartupTask(out var startupTask))
{
try
{
if (enabled)
{
if (startupTask.State != StartupTaskState.Enabled)
{
_ = startupTask.RequestEnableAsync().AsTask().GetAwaiter().GetResult();
}
}
else if (startupTask.State == StartupTaskState.Enabled)
{
startupTask.Disable();
}
}
catch
{
}
return;
}
using var key = Registry.CurrentUser.OpenSubKey(RunKeyPath, true) ?? Registry.CurrentUser.CreateSubKey(RunKeyPath, true);
if (enabled)
{
var exe = InstallLayoutPaths.ResolveInstalledExecutablePath();
key.SetValue(ValueName, $"\"{exe}\"");
}
else
{
key.DeleteValue(ValueName, false);
}
}
private static bool TryGetPackagedStartupTask(out StartupTask startupTask)
{
startupTask = null!;
try
{
_ = Package.Current;
startupTask = StartupTask.GetAsync(StartupTaskId).AsTask().GetAwaiter().GetResult();
return startupTask is not null;
}
catch
{
return false;
}
}
}