|
|
@ -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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|