Fix custom integration autoclosing not working

This commit is contained in:
pizzaboxer 2024-08-30 00:51:58 +01:00
parent 9fd4c367fb
commit 719fbb898e
No known key found for this signature in database
GPG Key ID: 59D4A1DBAD0F2BA8
4 changed files with 26 additions and 45 deletions

View File

@ -2528,15 +2528,6 @@ namespace Bloxstrap.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to e.g. C:\Windows\System32\cmd.exe.
/// </summary>
public static string Menu_Integrations_Custom_AppLocation_Placeholder {
get {
return ResourceManager.GetString("Menu.Integrations.Custom.AppLocation.Placeholder", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Auto close when Roblox closes. /// Looks up a localized string similar to Auto close when Roblox closes.
/// </summary> /// </summary>
@ -2565,7 +2556,7 @@ namespace Bloxstrap.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to e.g. /k echo Roblox is running!. /// Looks up a localized string similar to Roblox is running!.
/// </summary> /// </summary>
public static string Menu_Integrations_Custom_LaunchArgs_Placeholder { public static string Menu_Integrations_Custom_LaunchArgs_Placeholder {
get { get {

View File

@ -727,9 +727,6 @@ Selecting 'No' will ignore this warning and continue installation.</value>
<data name="Menu.Integrations.Custom.AppLocation" xml:space="preserve"> <data name="Menu.Integrations.Custom.AppLocation" xml:space="preserve">
<value>Application Location</value> <value>Application Location</value>
</data> </data>
<data name="Menu.Integrations.Custom.AppLocation.Placeholder" xml:space="preserve">
<value>e.g. C:\Windows\System32\cmd.exe</value>
</data>
<data name="Menu.Integrations.Custom.AutoClose" xml:space="preserve"> <data name="Menu.Integrations.Custom.AutoClose" xml:space="preserve">
<value>Auto close when Roblox closes</value> <value>Auto close when Roblox closes</value>
</data> </data>
@ -740,7 +737,7 @@ Selecting 'No' will ignore this warning and continue installation.</value>
<value>Launch Arguments</value> <value>Launch Arguments</value>
</data> </data>
<data name="Menu.Integrations.Custom.LaunchArgs.Placeholder" xml:space="preserve"> <data name="Menu.Integrations.Custom.LaunchArgs.Placeholder" xml:space="preserve">
<value>e.g. /k echo Roblox is running!</value> <value>Roblox is running!</value>
</data> </data>
<data name="Menu.Integrations.Custom.NewIntegration" xml:space="preserve"> <data name="Menu.Integrations.Custom.NewIntegration" xml:space="preserve">
<value>New Integration</value> <value>New Integration</value>

View File

@ -95,11 +95,11 @@
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<ui:TextBox Grid.Column="0" Margin="0,0,0,0" PlaceholderText="{x:Static resources:Strings.Menu_Integrations_Custom_AppLocation_Placeholder}" Text="{Binding SelectedCustomIntegration.Location}" /> <ui:TextBox Grid.Column="0" Margin="0,0,0,0" PlaceholderText="C:\Windows\System32\cmd.exe" Text="{Binding SelectedCustomIntegration.Location}" />
<ui:Button Grid.Column="1" Margin="8,0,0,0" Height="34" Icon="Folder24" Content="{x:Static resources:Strings.Common_Browse}" Command="{Binding BrowseIntegrationLocationCommand}" /> <ui:Button Grid.Column="1" Margin="8,0,0,0" Height="34" Icon="Folder24" Content="{x:Static resources:Strings.Common_Browse}" Command="{Binding BrowseIntegrationLocationCommand}" />
</Grid> </Grid>
<TextBlock Margin="0,8,0,0" Text="{x:Static resources:Strings.Menu_Integrations_Custom_LaunchArgs}" Foreground="{DynamicResource TextFillColorSecondaryBrush}" /> <TextBlock Margin="0,8,0,0" Text="{x:Static resources:Strings.Menu_Integrations_Custom_LaunchArgs}" Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
<ui:TextBox Margin="0,4,0,0" PlaceholderText="{x:Static resources:Strings.Menu_Integrations_Custom_LaunchArgs_Placeholder}" Text="{Binding SelectedCustomIntegration.LaunchArgs}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" /> <ui:TextBox Margin="0,4,0,0" PlaceholderText="{Binding Source='/k echo {0}', Converter={StaticResource StringFormatConverter}, ConverterParameter={x:Static resources:Strings.Menu_Integrations_Custom_LaunchArgs_Placeholder}}" Text="{Binding SelectedCustomIntegration.LaunchArgs}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" />
<CheckBox Margin="0,8,0,0" Content="{x:Static resources:Strings.Menu_Integrations_Custom_AutoClose}" IsChecked="{Binding SelectedCustomIntegration.AutoClose}" /> <CheckBox Margin="0,8,0,0" Content="{x:Static resources:Strings.Menu_Integrations_Custom_AutoClose}" IsChecked="{Binding SelectedCustomIntegration.AutoClose}" />
</StackPanel> </StackPanel>
<TextBlock Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Text="{x:Static resources:Strings.Menu_Integrations_Custom_NoneSelected}" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"> <TextBlock Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Text="{x:Static resources:Strings.Menu_Integrations_Custom_NoneSelected}" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center">

View File

@ -1,6 +1,4 @@
using Bloxstrap.Integrations; using Bloxstrap.Integrations;
using System.CodeDom;
using System.Security.Permissions;
namespace Bloxstrap namespace Bloxstrap
{ {
@ -54,7 +52,7 @@ namespace Bloxstrap
if (split.Length >= 2) if (split.Length >= 2)
{ {
foreach (string strPid in split[0].Split(';')) foreach (string strPid in split[1].Split(','))
{ {
if (int.TryParse(strPid, out int pid) && pid != 0) if (int.TryParse(strPid, out int pid) && pid != 0)
_autoclosePids.Add(pid); _autoclosePids.Add(pid);
@ -86,38 +84,33 @@ namespace Bloxstrap
_notifyIcon = new(this); _notifyIcon = new(this);
} }
public void KillRobloxProcess() => KillProcess(_gameClientPid); public void KillRobloxProcess() => CloseProcess(_gameClientPid, true);
public void KillProcess(int pid) public void CloseProcess(int pid, bool force = false)
{
const string LOG_IDENT = "Watcher::CloseProcess";
try
{ {
using var process = Process.GetProcessById(pid); using var process = Process.GetProcessById(pid);
App.Logger.WriteLine("Watcher::KillProcess", $"Killing process '{process.ProcessName}' (PID {process.Id})"); App.Logger.WriteLine(LOG_IDENT, $"Killing process '{process.ProcessName}' (pid={pid}, force={force})");
if (process.HasExited) if (process.HasExited)
{ {
App.Logger.WriteLine("Watcher::KillProcess", $"PID {process.Id} has already exited"); App.Logger.WriteLine(LOG_IDENT, $"PID {pid} has already exited");
return; return;
} }
if (force)
process.Kill(); process.Kill();
process.Close(); else
}
public void CloseProcess(int pid)
{
using var process = Process.GetProcessById(pid);
App.Logger.WriteLine("Watcher::CloseProcess", $"Closing process '{process.ProcessName}' (PID {process.Id})");
if (process.HasExited)
{
App.Logger.WriteLine("Watcher::CloseProcess", $"PID {process.Id} has already exited");
return;
}
process.CloseMainWindow(); process.CloseMainWindow();
process.Close(); }
catch (Exception ex)
{
App.Logger.WriteLine(LOG_IDENT, $"PID {pid} could not be closed");
App.Logger.WriteException(LOG_IDENT, ex);
}
} }
public async Task Run() public async Task Run()