码迷,mamicode.com
首页 > 其他好文 > 详细

Could not attach to a Hearthstone process.

时间:2019-08-05 13:36:33      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:enabled   html   cli   empty   selected   color   from   task   text   

namespace Hearthbuddy.Windows
{
    // Token: 0x02000041 RID: 65
    public class MainWindow : Window, IComponentConnector

[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.");
                System.Windows.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();
        }

 

[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.InfoFormat("{0}Please read the following guide before using this program:{0}https://www.thebuddyforum.com/hearthbuddy-forum/210230-hearthbuddy-bm-release-thread.html", 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 ex)
            {
                MainWindow.ilog_0.Error("[OnStartup] A top-level exception has been caught.", ex);
            }
        }

 

 

 

    private void method_3()
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(this.method_21));
        }

 

 

private void method_1(object sender, RoutedEventArgs e)
        {
            try
            {
                base.Title = "Hearthbuddy-20190802-002(仅供研究)";
                base.SetBinding(Window.LeftProperty, new System.Windows.Data.Binding("WindowX")
                {
                    Source = MainSettings.Instance,
                    Mode = BindingMode.TwoWay
                });
                base.SetBinding(Window.TopProperty, new System.Windows.Data.Binding("WindowY")
                {
                    Source = MainSettings.Instance,
                    Mode = BindingMode.TwoWay
                });
                base.SetBinding(FrameworkElement.WidthProperty, new System.Windows.Data.Binding("WindowWidth")
                {
                    Source = MainSettings.Instance,
                    Mode = BindingMode.TwoWay
                });
                base.SetBinding(FrameworkElement.HeightProperty, new System.Windows.Data.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 = Triton.Common.LogUtilities.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);
            }
        }

 

 

namespace ns3
{
    // Token: 0x02000020 RID: 32
    internal class Class9

    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;
        }

        // Token: 0x06000117 RID: 279 RVA: 0x00086190 File Offset: 0x00084390
        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;
        }

 

Could not attach to a Hearthstone process.

标签:enabled   html   cli   empty   selected   color   from   task   text   

原文地址:https://www.cnblogs.com/chucklu/p/11302412.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!