This commit is contained in:
Louis Lam 2022-10-07 00:16:07 +08:00
parent 4a7e96f9ea
commit da778f05ac

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
@ -23,6 +24,7 @@ namespace UptimeKuma {
public class UptimeKumaApplicationContext : ApplicationContext public class UptimeKumaApplicationContext : ApplicationContext
{ {
private NotifyIcon trayIcon; private NotifyIcon trayIcon;
private Process process;
public UptimeKumaApplicationContext() public UptimeKumaApplicationContext()
{ {
@ -31,19 +33,41 @@ namespace UptimeKuma {
trayIcon.Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location); trayIcon.Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location);
trayIcon.ContextMenu = new ContextMenu(new MenuItem[] { trayIcon.ContextMenu = new ContextMenu(new MenuItem[] {
new MenuItem("Open", Open),
new MenuItem("Check for Update", CheckForUpdate), new MenuItem("Check for Update", CheckForUpdate),
new MenuItem("About", About), new MenuItem("About", About),
new MenuItem("Exit", Exit), new MenuItem("Exit", Exit),
}); });
trayIcon.Visible = true; trayIcon.Visible = true;
var startInfo = new ProcessStartInfo();
startInfo.FileName = "node/node.exe";
startInfo.Arguments = "server/server.js";
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.WorkingDirectory = "core";
process = new Process();
process.StartInfo = startInfo;
process.EnableRaisingEvents = true;
try {
process.Start();
Open(null, null);
} catch (Exception e) {
MessageBox.Show("Startup failed: " + e.Message, "Uptime Kuma Error");
throw;
}
} }
void Exit(object sender, EventArgs e) void Open(object sender, EventArgs e) {
{ Process.Start("http://localhost:3001");
// Hide tray icon, otherwise it will remain shown until user mouses over it }
trayIcon.Visible = false;
Application.Exit(); void CheckForUpdate(object sender, EventArgs e) {
} }
void About(object sender, EventArgs e) void About(object sender, EventArgs e)
@ -51,8 +75,12 @@ namespace UptimeKuma {
MessageBox.Show("Uptime Kuma v1.0.0" + Environment.NewLine + "© 2022 Louis Lam", "Info"); MessageBox.Show("Uptime Kuma v1.0.0" + Environment.NewLine + "© 2022 Louis Lam", "Info");
} }
void CheckForUpdate(object sneder, EventArgs e) { void Exit(object sender, EventArgs e)
{
// Hide tray icon, otherwise it will remain shown until user mouses over it
trayIcon.Visible = false;
process.Close();
Application.Exit();
} }
} }
} }