re-added autostart

This commit is contained in:
WeeXnes 2022-11-28 17:14:52 +01:00
parent 36f6d03a01
commit db8125de84
10 changed files with 136 additions and 9 deletions

View file

@ -36,6 +36,10 @@ namespace WeeXnes
Convert.ToBoolean(SettingsView.Data.settingsFile.GetValue( Convert.ToBoolean(SettingsView.Data.settingsFile.GetValue(
SaveSettingsHandler.Data.KeyManager.Section, SaveSettingsHandler.Data.KeyManager.Section,
SaveSettingsHandler.Data.KeyManager.CensorKeys)); SaveSettingsHandler.Data.KeyManager.CensorKeys));
SettingsView.Data.Autostart.Value =
Convert.ToBoolean(SettingsView.Data.settingsFile.GetValue(
SaveSettingsHandler.Data.General.Section,
SaveSettingsHandler.Data.General.Autostart));
} }

View file

@ -6,7 +6,7 @@ namespace WeeXnes.Core
{ {
public class Information public class Information
{ {
public const string Version = "4.0.0"; public const string Version = "4.0.1";
public const string EncryptionHash = "8zf5#RdyQ]$4x4_"; public const string EncryptionHash = "8zf5#RdyQ]$4x4_";
public const string ApiUrl = "https://api.github.com/repos/weexnes/weexnessuite/releases/latest"; public const string ApiUrl = "https://api.github.com/repos/weexnes/weexnessuite/releases/latest";
} }

View file

@ -6,12 +6,16 @@ namespace WeeXnes.Core
{ {
public class HandleLaunchArguments public class HandleLaunchArguments
{ {
public static class Data
{
public static bool Autostart = false;
}
private const int ATTACH_PARENT_PROCESS = -1; private const int ATTACH_PARENT_PROCESS = -1;
[DllImport("kernel32.dll")] [DllImport("kernel32.dll")]
private static extern bool AttachConsole(int dwProcessId); private static extern bool AttachConsole(int dwProcessId);
public static void arg_autostart() public static void arg_autostart()
{ {
Data.Autostart = true;
} }
public static void arg_debugMode() public static void arg_debugMode()
{ {

View file

@ -9,6 +9,11 @@ namespace WeeXnes.Core
public static class Data public static class Data
{ {
//Layout-Names for INIFiles //Layout-Names for INIFiles
public static class General
{
public const string Section = "GENERAL";
public const string Autostart = "Autostart";
}
public static class KeyManager public static class KeyManager
{ {
public const string Section = "KEY_MANAGER"; public const string Section = "KEY_MANAGER";
@ -38,6 +43,14 @@ namespace WeeXnes.Core
KeyManagerView.Data.censorKeys.Value.ToString() KeyManagerView.Data.censorKeys.Value.ToString()
); );
}; };
SettingsView.Data.Autostart.ValueChanged += () =>
{
SettingsView.Data.settingsFile.SetValue(
Data.General.Section,
Data.General.Autostart,
SettingsView.Data.Autostart.Value.ToString()
);
};
} }
} }
} }

View file

@ -26,7 +26,7 @@
Grid.Row="0" Grid.Row="0"
Title="WeeXnes Suite" Title="WeeXnes Suite"
ForceShutdown="False" ForceShutdown="False"
MinimizeToTray="False" MinimizeToTray="True"
ShowHelp="False" ShowHelp="False"
ShowClose="True" ShowClose="True"
ShowMaximize="True" ShowMaximize="True"
@ -35,12 +35,16 @@
<ui:TitleBar.Tray> <ui:TitleBar.Tray>
<ui:NotifyIcon Icon="/Images/wicon.png"> <ui:NotifyIcon Icon="/Images/wicon.png">
<!--
<ui:NotifyIcon.Menu> <ui:NotifyIcon.Menu>
<ContextMenu> <ContextMenu>
<MenuItem
Header="Start RPC"
Click="ContextStartRpc_OnClick"/>
<MenuItem
Header="Stop RPC"
Click="ContextStopRpc_OnClick"/>
</ContextMenu> </ContextMenu>
</ui:NotifyIcon.Menu> </ui:NotifyIcon.Menu>
-->
</ui:NotifyIcon> </ui:NotifyIcon>
</ui:TitleBar.Tray> </ui:TitleBar.Tray>
@ -60,6 +64,7 @@
Content="Home" Content="Home"
Icon="Home24" Icon="Home24"
PageTag="home" PageTag="home"
Name="ButtonHome"
PageType="{x:Type home:HomeView}"/> PageType="{x:Type home:HomeView}"/>
<ui:NavigationItem <ui:NavigationItem
Content="Keys" Content="Keys"
@ -69,9 +74,10 @@
<ui:NavigationItem <ui:NavigationItem
Content="RPC" Content="RPC"
Icon="XboxController24" Icon="XboxController24"
Name="RPCBtn" Name="ButtonRpc"
PageTag="RPC" PageTag="RPC"
PageType="{x:Type discordrpc:DiscordRPCView}"/> PageType="{x:Type discordrpc:DiscordRPCView}"
Loaded="RPCBtn_OnLoaded"/>
</ui:NavigationStore.Items> </ui:NavigationStore.Items>
<ui:NavigationStore.Footer> <ui:NavigationStore.Footer>
<ui:NavigationItem <ui:NavigationItem
@ -84,7 +90,8 @@
<Frame <Frame
x:Name="MainFrame" x:Name="MainFrame"
Grid.Column="1" Grid.Column="1"
Margin="8,0,0,0" /> Margin="8,0,0,0"
/>
</Grid> </Grid>
</Grid> </Grid>

View file

@ -9,8 +9,10 @@ using System.Windows.Forms;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using WeeXnes.Core; using WeeXnes.Core;
using WeeXnes.Views.DiscordRPC;
using Wpf.Ui.Mvvm.Services; using Wpf.Ui.Mvvm.Services;
using Button = System.Windows.Controls.Button; using Button = System.Windows.Controls.Button;
using ButtonBase = System.Windows.Controls.Primitives.ButtonBase;
using MessageBox = System.Windows.MessageBox; using MessageBox = System.Windows.MessageBox;
namespace WeeXnes namespace WeeXnes
@ -26,6 +28,27 @@ namespace WeeXnes
} }
private void RPCBtn_OnLoaded(object sender, RoutedEventArgs e)
{
if (HandleLaunchArguments.Data.Autostart)
{
ButtonRpc.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
MainFrame.Source = new Uri("/Views/DiscordRPC/RunRPCView.xaml",UriKind.Relative);
WindowState = WindowState.Minimized;
}
}
private void ContextStartRpc_OnClick(object sender, RoutedEventArgs e)
{
ButtonRpc.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
MainFrame.Source = new Uri("/Views/DiscordRPC/RunRPCView.xaml",UriKind.Relative);
}
private void ContextStopRpc_OnClick(object sender, RoutedEventArgs e)
{
ButtonHome.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
}
} }
} }

View file

@ -6,6 +6,7 @@
xmlns:local="clr-namespace:WeeXnes.Views.DiscordRPC" xmlns:local="clr-namespace:WeeXnes.Views.DiscordRPC"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
mc:Ignorable="d" mc:Ignorable="d"
Tag="RPCView"
Title="DiscordRPCView" Height="Auto" Width="Auto"> Title="DiscordRPCView" Height="Auto" Width="Auto">
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>

View file

@ -36,6 +36,11 @@
Name="CheckboxCensorKeys" Name="CheckboxCensorKeys"
Checked="CheckboxCensorKeys_OnChecked" Checked="CheckboxCensorKeys_OnChecked"
Unchecked="CheckboxCensorKeys_OnUnchecked"/> Unchecked="CheckboxCensorKeys_OnUnchecked"/>
<TextBlock Text="Discord Rich Presence"
HorizontalAlignment="Center"
Foreground="White"/>
<CheckBox Content="Autostart RPC"
Name="CheckboxAutostartRpc"/>
</StackPanel> </StackPanel>
</ScrollViewer> </ScrollViewer>
</Grid> </Grid>

View file

@ -18,6 +18,7 @@ namespace WeeXnes.Views.Settings
{ {
public static INIFile settingsFile = new INIFile(Global.AppDataPath + "\\" + Global.SettingsFile, true); public static INIFile settingsFile = new INIFile(Global.AppDataPath + "\\" + Global.SettingsFile, true);
public static GithubApiResponse updateResponse = null; public static GithubApiResponse updateResponse = null;
public static UpdateVar<bool> Autostart = new UpdateVar<bool>();
} }
public SettingsView() public SettingsView()
{ {
@ -28,6 +29,9 @@ namespace WeeXnes.Views.Settings
private void LoadSettingsToGui() private void LoadSettingsToGui()
{ {
CheckboxCensorKeys.IsChecked = KeyManagerView.Data.censorKeys.Value; CheckboxCensorKeys.IsChecked = KeyManagerView.Data.censorKeys.Value;
CheckboxAutostartRpc.IsChecked = Data.Autostart.Value;
SetCheckboxAutostartRpc();
} }
private void CheckboxCensorKeys_OnChecked(object sender, RoutedEventArgs e) private void CheckboxCensorKeys_OnChecked(object sender, RoutedEventArgs e)
{ {
@ -99,5 +103,71 @@ namespace WeeXnes.Views.Settings
Console.WriteLine(ex); Console.WriteLine(ex);
} }
} }
void SetCheckboxAutostartRpc()
{
CheckboxAutostartRpc.Checked += CheckboxAutostartRpc_OnChecked;
CheckboxAutostartRpc.Unchecked += CheckboxAutostartRpc_OnUnchecked;
}
void UnsetCheckboxAutostartRpc()
{
CheckboxAutostartRpc.Checked -= CheckboxAutostartRpc_OnChecked;
CheckboxAutostartRpc.Unchecked -= CheckboxAutostartRpc_OnUnchecked;
}
void SwitchAutostartRpc(bool enable)
{
UnsetCheckboxAutostartRpc();
if (enable)
{
bool proc_suc;
try
{
Process uacpromp = Process.Start("WeeXnes_UAC.exe", "-EnableAutostart");
uacpromp.WaitForExit();
proc_suc = true;
}
catch (Exception ex)
{
Console.WriteLine(ex);
proc_suc = false;
}
Data.Autostart.Value = proc_suc;
CheckboxAutostartRpc.IsChecked = proc_suc;
}
else
{
bool proc_suc;
try
{
Process uacpromp = Process.Start("WeeXnes_UAC.exe", "-DisableAutostart");
uacpromp.WaitForExit();
proc_suc = true;
}
catch (Exception ex)
{
Console.WriteLine(ex);
proc_suc = false;
}
Data.Autostart.Value = !proc_suc;
CheckboxAutostartRpc.IsChecked = !proc_suc;
}
SetCheckboxAutostartRpc();
}
private void CheckboxAutostartRpc_OnChecked(object sender, RoutedEventArgs e)
{
SwitchAutostartRpc(true);
}
private void CheckboxAutostartRpc_OnUnchecked(object sender, RoutedEventArgs e)
{
SwitchAutostartRpc(false);
}
} }
} }

View file

@ -4,7 +4,7 @@
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<Version>4.0.0</Version> <Version>4.0.1</Version>
<ProjectGuid>{4B33CEE7-C74D-43B9-B99A-8B273D5195BC}</ProjectGuid> <ProjectGuid>{4B33CEE7-C74D-43B9-B99A-8B273D5195BC}</ProjectGuid>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<RootNamespace>WeeXnes</RootNamespace> <RootNamespace>WeeXnes</RootNamespace>