• Could not attach to a Hearthstone process.


    配置的加载

    // Hearthbuddy.Windows.ConfigurationWindow
    // Token: 0x060001DB RID: 475 RVA: 0x00088A3C File Offset: 0x00086C3C
    public ConfigurationWindow()
    {
        this.InitializeComponent();
        if (!CommandLine.Arguments.Exists("config"))
        {
            Configuration.Instance.Name = "Default";
            return;
        }
        string text = CommandLine.Arguments.Single("config");
        if (new Regex("^[a-zA-Z0-9_]*$").IsMatch(text))
        {
            Configuration.Instance.Name = text;
            this.bool_0 = true;
            return;
        }
        Configuration.Instance.Name = "Default";
    }
    // Hearthbuddy.Windows.ConfigurationWindow
    // Token: 0x060001DD RID: 477 RVA: 0x00088B90 File Offset: 0x00086D90
    private void button_0_Click(object sender, RoutedEventArgs e)
    {
        string text = this.comboBox_0.Text;
        if (string.IsNullOrEmpty(text))
        {
            MessageBox.Show("Please select or enter a valid configuration to use.", "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
            return;
        }
        if (!new Regex("^[a-zA-Z0-9_\-]*$").IsMatch(text))
        {
            MessageBox.Show("The configuration name is invalid. Please use only alphanumeric, the underscore, or a dash characters (a-z, A-Z, 0-9, _, -).", "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
            return;
        }
        this.method_0(text);
    }

    string_0是"Default"

    // Hearthbuddy.Windows.ConfigurationWindow
    // Token: 0x060001DC RID: 476 RVA: 0x00088ABC File Offset: 0x00086CBC
    private void method_0(string string_0)
    {
        if (!GlobalSettings.Instance.Configurations.Contains(string_0))
        {
            GlobalSettings.Instance.Configurations.Add(string_0);
        }
        GlobalSettings.Instance.LastUsedConfiguration = string_0;
        Configuration.Instance.Name = string_0;
        try
        {
            base.Visibility = Visibility.Hidden;
            LoginWindow loginWindow = new LoginWindow();
            int num = 0;
            while (loginWindow.NeedsToShow)
            {
                Application.Current.MainWindow = loginWindow;
                loginWindow.ShowDialog();
                if (Application.Current.MainWindow == null || num > 5)
                {
                    if (num > 5)
                    {
                        MessageBox.Show("Hearthbuddy has tried to login too many times. Please wait a short while and try again. Hearthbuddy will now close.", "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
                    }
                    Environment.Exit(0);
                }
                num++;
            }
            base.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
            Environment.Exit(0);
        }
    }
    // Hearthbuddy.Windows.MainWindow
    // Token: 0x060001FF RID: 511 RVA: 0x00089530 File Offset: 0x00087730
    private void method_1(object sender, RoutedEventArgs e)
    {
        try
        {
            base.Title = "Hearthbuddy-20190818-005(https://github.com/ChuckHearthBuddy/SilverFish)";
            base.SetBinding(Window.LeftProperty, new Binding("WindowX")
            {
                Source = MainSettings.Instance,
                Mode = BindingMode.TwoWay
            });
            base.SetBinding(Window.TopProperty, new Binding("WindowY")
            {
                Source = MainSettings.Instance,
                Mode = BindingMode.TwoWay
            });
            base.SetBinding(FrameworkElement.WidthProperty, new Binding("WindowWidth")
            {
                Source = MainSettings.Instance,
                Mode = BindingMode.TwoWay
            });
            base.SetBinding(FrameworkElement.HeightProperty, new Binding("WindowHeight")
            {
                Source = MainSettings.Instance,
                Mode = BindingMode.TwoWay
            });
            MainSettings.Instance.LoadRowDefinitions(this.rowDefinition_0, this.rowDefinition_1, this.rowDefinition_2);
            this.method_3();
            this.textBox_0.Text = Logger.FileName;
            this.method_17();
            this.method_18();
            this.method_19();
            this.method_20();
        }
        catch (Exception exception)
        {
            MainWindow.ilog_0.Error("[Ui] An exception occurred.", exception);
        }
    }
    // Hearthbuddy.Windows.MainWindow
    // Token: 0x06000201 RID: 513 RVA: 0x00003C51 File Offset: 0x00001E51
    private void method_3()
    {
        ThreadPool.QueueUserWorkItem(new WaitCallback(this.method_21));
    }
    // Hearthbuddy.Windows.MainWindow
    // Token: 0x06000231 RID: 561 RVA: 0x0008AC34 File Offset: 0x00088E34
    [CompilerGenerated]
    private void method_21(object object_0)
    {
        try
        {
            base.Dispatcher.Invoke(new Action(this.method_22));
            string text;
            if (this.process_0 == null)
            {
                base.Dispatcher.BeginInvoke(new Action(base.Close), Array.Empty<object>());
            }
            else if (!TritonHs.smethod_0(this.process_0, new TritonHs.Delegate6(Class12.smethod_4), out text))
            {
                MainWindow.ilog_0.Error(text);
                System.Windows.MessageBox.Show(text, "Error", MessageBoxButton.OK, MessageBoxImage.Hand);
                base.Dispatcher.BeginInvoke(new Action(base.Close), Array.Empty<object>());
            }
            else
            {
                TritonHs.Memory.ProcessExited += MainWindow.Class25.ChuckInstance9.method_1;
                TritonHs.Memory.Executor.FrameDropWaitTime = 15000u;
                TritonHs.Memory.Executor.ExecuteWaitTime = 15000;
                TritonHs.Memory.DisableCache();
                TritonHs.Memory.ClearCache();
                int version;
                int clientChangelist;
                using (TritonHs.AcquireFrame())
                {
                    version = Triton.Game.Mapping.Version.version;
                    clientChangelist = Triton.Game.Mapping.Version.clientChangelist;
                }
                if ((long)version != (long)((ulong)Class247.UInt32_1) && (long)clientChangelist != (long)((ulong)Class247.UInt32_2))
                {
                    MainWindow.ilog_0.InfoFormat("Hearthstone client version ({0}, {1})", version, clientChangelist);
                    new Coroutine(new Func<Task>(MainWindow.Class25.ChuckInstance9.method_2));
                    Configuration.Instance.AddSettings(MainSettings.Instance);
                    Configuration.Instance.AddSettings(DevSettings.Instance);
                    Configuration.Instance.SaveAll();
                    base.Dispatcher.Invoke(new Action(this.method_23));
                    BotManager.PreStart += this.method_11;
                    BotManager.PostStop += this.method_10;
                    BotManager.Load();
                    base.Dispatcher.Invoke(new Action(this.method_24));
                    this.comboBox_0.Dispatcher.BeginInvoke(new Action(this.method_25), Array.Empty<object>());
                    BotManager.OnBotChanged += this.method_6;
                    RoutineManager.Load();
                    base.Dispatcher.Invoke(new Action(this.method_26));
                    this.comboBox_1.Dispatcher.BeginInvoke(new Action(this.method_27), Array.Empty<object>());
                    RoutineManager.OnRoutineChanged += this.method_7;
                    PluginManager.Load();
                    foreach (IPlugin plugin in PluginManager.Plugins)
                    {
                        if (MainSettings.Instance.EnabledPlugins.Contains(plugin.Name))
                        {
                            using (TritonHs.AcquireFrame())
                            {
                                PluginManager.Enable(plugin);
                            }
                            Thread.Sleep(20);
                        }
                        else
                        {
                            using (TritonHs.AcquireFrame())
                            {
                                PluginManager.Disable(plugin);
                            }
                            Thread.Sleep(20);
                        }
                    }
                    this.listBox_0.Dispatcher.Invoke<IEnumerable>(new Func<IEnumerable>(this.method_28), DispatcherPriority.Normal);
                    base.Dispatcher.Invoke(new Action(this.method_29));
                    PluginManager.PluginEnabled += this.method_5;
                    PluginManager.PluginDisabled += this.method_4;
                    MainWindow.ilog_0.ErrorFormat("{0}Please read the following guide before using this program:{0}https://github.com/ChuckHearthBuddy/SilverFish/blob/master/ReadMe.md", Environment.NewLine);
                    base.Dispatcher.Invoke(new Action(this.method_30));
                    base.Dispatcher.Invoke(new Action(this.method_31));
                    this.stopwatch_0.Restart();
                    RoutineManager.OnRoutineChanged += this.method_7;
                    BotManager.OnBotChanged += this.method_6;
                    TritonHs.IsBotFullyLoaded = true;
                    Hotkeys.Register("BotManager.StartStop", Keys.S, ModifierKeys.Alt | ModifierKeys.Shift, new Action<Hotkey>(MainWindow.Class25.ChuckInstance9.method_3));
                    if (CommandLine.Arguments.Exists("autostart"))
                    {
                        BotManager.Start();
                    }
                }
                else
                {
                    text = string.Format("This client version ({0}, {1}) is unsupported. Hearthbuddy currently supports client version ({2}, {3}). Please check the forums for more information: https://www.thebuddyforum.com/hearthbuddy-forum/", new object[]
                    {
                        version,
                        clientChangelist,
                        Class247.UInt32_1,
                        Class247.UInt32_2
                    });
                    MainWindow.ilog_0.ErrorFormat(text, Array.Empty<object>());
                    System.Windows.MessageBox.Show(text, "Error", MessageBoxButton.OK, MessageBoxImage.Hand);
                    base.Dispatcher.BeginInvoke(new Action(base.Close), Array.Empty<object>());
                }
            }
        }
        catch (Exception exception)
        {
            MainWindow.ilog_0.Error("[OnStartup] A top-level exception has been caught.", exception);
        }
    }
    // Hearthbuddy.Windows.MainWindow
    // Token: 0x06000232 RID: 562 RVA: 0x0008B13C File Offset: 0x0008933C
    [CompilerGenerated]
    private void method_22()
    {
        if (!Class9.smethod_4(out this.mutex_0, out this.process_0))
        {
            MainWindow.ilog_0.Error("Could not attach to a Hearthstone process. Please make sure an available Hearthstone process is running.");
            MessageBox.Show(string.Format("Could not attach to a Hearthstone process. Please make sure an available Hearthstone process is running.{0}{0}Hearthbuddy will now close.", Environment.NewLine), "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
            return;
        }
        this.dispatcherTimer_0 = new DispatcherTimer(TimeSpan.FromSeconds(1.0), DispatcherPriority.Normal, new EventHandler(this.method_9), base.Dispatcher);
        this.dispatcherTimer_0.Start();
    }
    // ns3.Class9
    // Token: 0x06000116 RID: 278 RVA: 0x00003359 File Offset: 0x00001559
    internal static bool smethod_4(out Mutex mutex_0, out Process process_0)
    {
        if (!Class9.smethod_5(out mutex_0, out process_0))
        {
            return false;
        }
        Path.Combine(Path.GetDirectoryName(process_0.MainModule.FileName), "Hearthstone_Data", "Mono");
        return true;
    }
    // ns3.Class9
    // Token: 0x06000117 RID: 279 RVA: 0x00086200 File Offset: 0x00084400
    internal static bool smethod_5(out Mutex mutex_0, out Process process_0)
    {
        mutex_0 = null;
        process_0 = null;
        Arguments arguments = CommandLine.Arguments;
        if (arguments.Exists("pid"))
        {
            try
            {
                int num = int.Parse(arguments.Single("pid"));
                process_0 = Process.GetProcessById(num);
                if (!Class9.smethod_6(process_0))
                {
                    Class9.ilog_0.Error("Invalid PID specifier passed to the command line: " + arguments.Single("pid") + ". This process is not a Hearthstone client.");
                    return false;
                }
                bool flag;
                mutex_0 = Class9.smethod_1(num, out flag);
                if (!flag)
                {
                    mutex_0 = null;
                    process_0 = null;
                    Class9.ilog_0.Error("Invalid PID specifier passed to the command line: " + arguments.Single("pid") + ". This process has already been attached to.");
                    return false;
                }
                return true;
            }
            catch
            {
                Class9.ilog_0.Error("Invalid PID specifier passed to the command line: " + arguments.Single("pid"));
                return false;
            }
        }
        bool result;
        if (arguments.Exists("pname"))
        {
            try
            {
                string processName = arguments.Single("pname");
                process_0 = Process.GetProcessesByName(processName).FirstOrDefault<Process>();
                if (process_0 != null && Class9.smethod_6(process_0))
                {
                    bool flag2;
                    mutex_0 = Class9.smethod_1(process_0.Id, out flag2);
                    if (!flag2)
                    {
                        mutex_0 = null;
                        process_0 = null;
                        Class9.ilog_0.Error("Invalid PNAME specifier passed to the command line: " + arguments.Single("pname") + ". This process has already been attached to.");
                        result = false;
                    }
                    else
                    {
                        result = true;
                    }
                }
                else
                {
                    Class9.ilog_0.Error("Invalid PNAME specifier passed to the command line: " + arguments.Single("pname") + ". This process is not a Hearthstone client.");
                    result = false;
                }
            }
            catch
            {
                Class9.ilog_0.Error("Invalid PNAME specifier passed to the command line: " + arguments.Single("pname"));
                result = false;
            }
        }
        else
        {
            List<Process> list = Class9.smethod_7().ToList<Process>();
            if (list.Count == 0)
            {
                return false;
            }
            if (!arguments.Exists("noautoattach") && list.Count == 1)
            {
                bool flag3;
                mutex_0 = Class9.smethod_1(list[0].Id, out flag3);
                if (flag3)
                {
                    process_0 = list[0];
                    return true;
                }
                mutex_0.Dispose();
            }
            Dictionary<Process, string> dictionary = new Dictionary<Process, string>();
            foreach (Process process in list)
            {
                bool flag4;
                mutex_0 = Class9.smethod_1(process.Id, out flag4);
                if (flag4 && mutex_0 != null)
                {
                    using (ExternalProcessMemory externalProcessMemory = new ExternalProcessMemory(process, false, false, false))
                    {
                        dictionary.Add(process, Class9.smethod_0(externalProcessMemory));
                        mutex_0.ReleaseMutex();
                        mutex_0.Dispose();
                    }
                }
            }
            ProcessSelectorWindow processSelectorWindow = new ProcessSelectorWindow(dictionary)
            {
                Topmost = true
            };
            if (processSelectorWindow.ShowDialog() == true)
            {
                process_0 = processSelectorWindow.Selected;
                bool flag5;
                mutex_0 = Class9.smethod_1(process_0.Id, out flag5);
                return true;
            }
            return false;
        }
        return result;
    }
    // ns3.Class9
    // Token: 0x06000112 RID: 274 RVA: 0x00003352 File Offset: 0x00001552
    private static string smethod_0(ExternalProcessMemory externalProcessMemory_0)
    {
        return "(Hearthstone)";
    }
    // ns3.Class9
    // Token: 0x06000113 RID: 275 RVA: 0x0008608C File Offset: 0x0008428C
    private static Mutex smethod_1(int int_0, out bool bool_0)
    {
        return new Mutex(true, "Local\" + (Environment.MachineName.GetHashCode() ^ int_0.GetHashCode() ^ TimeZone.CurrentTimeZone.StandardName.GetHashCode() ^ "Blizz_HS_BuddyTeam".GetHashCode() + 25), ref bool_0);
    }
  • 相关阅读:
    【luogu】 P1433 吃奶酪
    【noip 2016】 组合数问题(problem)
    【清北学堂】 死亡(death)
    【noip 2004】 合并果子
    微信小程序:每个邮箱仅能申请一个小程序
    Babel-polyfill 的作用
    react.js中模拟事件总线,子组件调用父组件时,发挥作用
    多行文本溢出显示省略号(…) text-overflow: ellipsis ------------- webkit-line-clamp 多行文字溢出...
    es6-class
    ES6--promise
  • 原文地址:https://www.cnblogs.com/chucklu/p/11302412.html
Copyright © 2020-2023  润新知