Dex2jar Ver.I

Dex2jar Ver.I

<Window x:Class="Dex2jar_Ver.I.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="Dex2jar Ver.I" Height="350" Width="515">
    <Grid>
        <TextBox Height="18" HorizontalAlignment="Left" Margin="6,10,0,0" Name="dex2jarPath" VerticalAlignment="Top" Width="393" />
        <Button Content="dex2jar-2.0" Height="18" HorizontalAlignment="Left" Margin="405,10,0,0" x:Name="Dex2jatPathButton" VerticalAlignment="Top" Width="88" Click="Dex2jarPath" />
        <TextBox Height="18" HorizontalAlignment="Left" Margin="6,30,0,0" Name="inputPath" VerticalAlignment="Top" Width="393" />
        <Button Content="Input" Height="18" HorizontalAlignment="Left" Margin="405,30,0,0" x:Name="InputPathButton" VerticalAlignment="Top" Width="88" Click="InputPath" />
        <TextBox Height="18" HorizontalAlignment="Left" Margin="6,50,0,0" Name="outputPath" VerticalAlignment="Top" Width="393" />
        <Button Content="Output" Height="18" HorizontalAlignment="Left" Margin="405,50,0,0" x:Name="OutputPathButton" VerticalAlignment="Top" Width="88" Click="OutputPath" />
        <Button Content="StartConvert" Height="18" HorizontalAlignment="Left" Margin="405,70,0,0" x:Name="StartConvertButton" VerticalAlignment="Top" Width="88" Click="StartConvert" />
        <TextBox HorizontalAlignment="Left" Height="216" Margin="10,93,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="483" Name="Result"/>
    </Grid>
</Window>
using System.Windows;
using Microsoft.WindowsAPICodePack.Dialogs;
using System.IO;
using System.Xml;
using System.Diagnostics;

namespace Dex2jar_Ver.I
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        private string Config() => "Dex2jarVer.IConfig.xml";
        public MainWindow()
        {
            InitializeComponent();
            dex2jarPath.Text = "";
            inputPath.Text = "";
            outputPath.Text = "";
            if(File.Exists(Config()))
            {
                XmlDocument config = new XmlDocument();
                config.Load(Config());
                dex2jarPath.Text= ((XmlElement)config.SelectNodes(xpath: @"//Dex2jarPath")[i: 0]).InnerText;
            }
        }
        private void Dex2jarPath(object sender, RoutedEventArgs e)
        {
            var dialog = new CommonOpenFileDialog
            {
                IsFolderPicker = true
            };
            if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
            {
                dex2jarPath.Text = dialog.FileName;
                if (File.Exists(Config()))
                {
                    XmlDocument config = new XmlDocument();
                    config.Load(Config());
                    ((XmlElement)config.SelectNodes(xpath: @"//Dex2jarPath")[i: 0]).InnerText = inputPath.Text;
                }
                else
                {

                    XmlDocument config1 = new XmlDocument();
                    XmlNode node = config1.CreateXmlDeclaration("1.0", "utf-8", "");
                    config1.AppendChild(node);
                    XmlNode root = config1.CreateElement(Config());
                    config1.AppendChild(root);
                    config1.Save(Config());

                    XmlDocument config2 = new XmlDocument();
                    config2.Load(Config());
                    XmlNode newNode = config2.CreateNode(nodeTypeString: "element", name: "Dex2jarPath", namespaceURI: "");
                    newNode.InnerText = dex2jarPath.Text;
                    config2.DocumentElement.AppendChild(newChild: newNode);
                    config2.Save(filename: Config());
                }
            }
        }

        private void InputPath(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog
            {
                DefaultExt = "*.dex",
                Filter = "(*.dex)|*.dex"
            };
            if (openFileDialog.ShowDialog() == true)
            {
                inputPath.Text = openFileDialog.FileName;
                var sp = inputPath.Text.Split('\\');
                outputPath.Text = "";
                for (short i=0;i<sp.Length-1;++i)
                {
                    outputPath.Text += sp[i];
                    outputPath.Text += "\\";
                }
                outputPath.Text += "classes-dex2jar.jar";
            }
        }

        private void OutputPath(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.SaveFileDialog saveFileDialog = new Microsoft.Win32.SaveFileDialog
            {
                DefaultExt = "*.jar",
                Filter = "(*.jar)|*.jar"
            };
            if (saveFileDialog.ShowDialog() == true)
            {
                outputPath.Text = saveFileDialog.FileName;
            }
        }

        private void StartConvert(object sender, RoutedEventArgs e)
        {
            if (dex2jarPath.Text != "" && inputPath.Text != "" && outputPath.Text != "")
            {
                Process cmdProcess = new Process();
                cmdProcess.StartInfo.FileName = "cmd.exe";
                cmdProcess.StartInfo.UseShellExecute = false;
                cmdProcess.StartInfo.RedirectStandardInput = true;
                cmdProcess.StartInfo.RedirectStandardOutput = true;
                cmdProcess.StartInfo.RedirectStandardError = true;
                cmdProcess.StartInfo.CreateNoWindow = true;
                cmdProcess.Start();
                cmdProcess.StandardInput.WriteLine($"\"{dex2jarPath.Text}\\d2j-dex2jar.bat\" \"{inputPath.Text}\" &exit");
                cmdProcess.StandardInput.AutoFlush = true;
                string output = cmdProcess.StandardOutput.ReadToEnd();
                cmdProcess.WaitForExit();
                cmdProcess.Close();
                if(File.Exists(outputPath.Text))
                {
                    File.Delete(outputPath.Text);
                }
                File.Move("classes-dex2jar.jar", outputPath.Text);
                Result.Text = $"{output}dex2jar {inputPath.Text} -> {outputPath.Text}\nDone.\n";
            }
        }
    }
}

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注