示例#1
0
        void Begin()
        {
            var parameter = new ConfuserParameter();
            parameter.Project = host.Project.ToCrProj();
            parameter.Logger.BeginAssembly += Logger_BeginAssembly;
            parameter.Logger.EndAssembly += Logger_EndAssembly;
            parameter.Logger.Phase += Logger_Phase;
            parameter.Logger.Log += Logger_Log;
            parameter.Logger.Progress += Logger_Progress;
            parameter.Logger.Fault += Logger_Fault;
            parameter.Logger.End += Logger_End;

            cr = new Confuser.Core.Confuser();
            thread = cr.ConfuseAsync(parameter);
            host.EnabledNavigation = false;
            btn.IsEnabled = true;

            p = 0;
            Action check = null;
            check = new Action(() =>
            {
                progress.Value = p;
                if (p != -1)
                    Dispatcher.BeginInvoke(check, System.Windows.Threading.DispatcherPriority.Background);
            });
            check();
        }
示例#2
0
        void Begin()
        {
            var parameter = new ConfuserParameter();

            parameter.Project = host.Project.ToCrProj();
            parameter.Logger.BeginAssembly += Logger_BeginAssembly;
            parameter.Logger.EndAssembly   += Logger_EndAssembly;
            parameter.Logger.Phase         += Logger_Phase;
            parameter.Logger.Log           += Logger_Log;
            parameter.Logger.Progress      += Logger_Progress;
            parameter.Logger.Fault         += Logger_Fault;
            parameter.Logger.End           += Logger_End;

            cr     = new Confuser.Core.Confuser();
            thread = cr.ConfuseAsync(parameter);
            host.EnabledNavigation = false;
            btn.IsEnabled          = true;

            p = 0;
            Action check = null;

            check = new Action(() =>
            {
                progress.Value = p;
                if (p != -1)
                {
                    Dispatcher.BeginInvoke(check, System.Windows.Threading.DispatcherPriority.Background);
                }
            });
            check();
        }
示例#3
0
        private void DoConfuse(object sender, RoutedEventArgs e)
        {
            if ((string)doConfuse.Content == "Cancel")
            {
                confuser.Abort();
                return;
            }

            var param = new Core.ConfuserParameter();

            param.SourceAssembly     = path;
            param.DestinationPath    = output.Text;
            param.ReferencesPath     = System.IO.Path.GetDirectoryName(path);
            param.Confusions         = ldConfusions.Values.ToArray();
            param.Packers            = ldPackers.Values.ToArray();
            param.DefaultPreset      = Core.Preset.None;
            param.StrongNameKeyPath  = sn.Text;
            param.Marker             = marker;
            param.Logger.BeginPhase += new EventHandler <Core.PhaseEventArgs>((sender1, e1) =>
            {
                this.Dispatcher.Invoke(new Action(delegate
                {
                    Monitor.Enter(this);
                    Border phase = Helper.FindChild <Border>(progress, "phase" + e1.Phase);
                    log          = Helper.FindChild <TextBox>(phase, null);
                    if (pBar != null)
                    {
                        pBar.Value = 1;
                    }
                    pBar = Helper.FindChild <ProgressBar>(phase, null);
                    if (pBar != null)
                    {
                        pBar.Value = 0;
                    }
                    Storyboard sb = this.Resources["showPhase"] as Storyboard;
                    Storyboard.SetTarget(sb.Children[0], phase);
                    Storyboard.SetTarget(sb.Children[1], phase);
                    sb.Completed += delegate
                    {
                        Monitor.Exit(this);
                        progress.ScrollTo(e1.Phase / 5.0);
                    };
                    sb.Begin();
                }), null);
                lock (this) { }
                Thread.Sleep(150);
            });
            param.Logger.Logging += new EventHandler <Core.LogEventArgs>((sender1, e1) =>
            {
                this.Dispatcher.Invoke(new Action(delegate
                {
                    if (log != null)
                    {
                        log.AppendText(e1.Message + Environment.NewLine);
                        log.ScrollToEnd();
                    }
                }), null);
            });
            param.Logger.Progressing += new EventHandler <Core.ProgressEventArgs>((sender1, e1) =>
            {
                value = e1.Progress;
            });
            param.Logger.Fault += new EventHandler <Core.ExceptionEventArgs>((sender1, e1) =>
            {
                this.Dispatcher.Invoke(new Action(delegate
                {
                    Monitor.Enter(this);
                    Border result = Helper.FindChild <Border>(progress, "result");
                    Helper.FindChild <UIElement>(result, "resultFail").Visibility = Visibility.Visible;
                    Helper.FindChild <UIElement>(result, "resultOk").Visibility   = Visibility.Hidden;
                    Helper.FindChild <TextBox>(result, null).Text = string.Format("Failed!\nException details : \n" + e1.Exception.ToString());
                    Storyboard sb = this.Resources["showPhase"] as Storyboard;
                    Storyboard.SetTarget(sb, result);
                    sb.Completed += delegate
                    {
                        Monitor.Exit(this);
                        progress.ScrollToEnd();
                    };
                    sb.Begin();
                    value             = -1;
                    doConfuse.Content = "Confuse!";
                    CONFUSED();
                }), null);
                lock (this) { }
            });
            param.Logger.End += new EventHandler <Core.LogEventArgs>((sender1, e1) =>
            {
                this.Dispatcher.Invoke(new Action(delegate
                {
                    Monitor.Enter(this);
                    if (pBar != null)
                    {
                        pBar.Value = 1;
                    }
                    Border result = Helper.FindChild <Border>(progress, "result");
                    Helper.FindChild <UIElement>(result, "resultOk").Visibility   = Visibility.Visible;
                    Helper.FindChild <UIElement>(result, "resultFail").Visibility = Visibility.Hidden;
                    Helper.FindChild <TextBox>(result, null).Text = string.Format("Succeeded!\n" + e1.Message.ToString());
                    Storyboard sb = this.Resources["showPhase"] as Storyboard;
                    Storyboard.SetTarget(sb, result);
                    sb.Completed += delegate
                    {
                        Monitor.Exit(this);
                        progress.ScrollToEnd();
                    };
                    sb.Begin();
                    value             = -1;
                    doConfuse.Content = "Confuse!";
                    CONFUSED();
                }), null);
                lock (this) { }
            });
            var cr = new Core.Confuser();

            progress.ScrollToBeginning();
            (this.Resources["resetProgress"] as Storyboard).Begin();
            Helper.FindChild <TextBox>(phase1, null).Text = "";
            Helper.FindChild <TextBox>(phase2, null).Text = "";
            Helper.FindChild <TextBox>(phase3, null).Text = "";
            Helper.FindChild <TextBox>(phase4, null).Text = "";
            (this.Resources["showProgress"] as Storyboard).Begin();
            Dispatcher.Invoke(new Action(delegate { Thread.Sleep(100); }), DispatcherPriority.Render);
            MoniterValue();
            CONFUSING();
            doConfuse.Content = "Cancel";
            confuser          = cr.ConfuseAsync(param);
        }