Laden...

Forenbeiträge von anideath Ingesamt 6 Beiträge

03.08.2017 - 20:16 Uhr

@anideath
Nach einem kompletten durchscrollen, werde ich dir nur den Tipp geben aufzuräumen.
Du hast zu viel Redundanz, du den immer gleichen Code.
Du kannst locker 50-60% sparen, wenn du deinen Code mit einer Methode zum starten deines Process zusammen packst.
Hier würden 2-3 Parameter reichen und fertig.
Ich mache mir deshalb auch keine Mühe den Rest des Codes zu lesen.

T-Virus

Das hatte ich auch irgendwie vor in einer Methode zu speichern. Checke es aber noch nicht so ganz wie ich die dann im button_clicked event aufrufe. Das soll rein aber die Variable InstallPathStable ändert sich halt wenn andere radioboxen aktiviert sind.

                    System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
                    string InstallPathStable = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\Opera Software", "Last Stable Install Path", null);
                    string test = InstallPathStable + @"launcher.exe";
                    pProcess.StartInfo.FileName = test;
                    var s1 = @"""";
                    var s2 = "/" + comboBox1.SelectedItem;
                    var cbox = comboBox1.SelectedItem;
                    string arg = "--user-data-dir=";
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                    string pdir = appdata + "" + "\\Opera Software\\Opera Stable\\Profile";




                    pProcess.StartInfo.Arguments = arg + "" + s1 + "" + pdir + "" + s2 + "" + s1;
                    pProcess.StartInfo.UseShellExecute = false;
                    pProcess.StartInfo.RedirectStandardOutput = true;
                    pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    pProcess.StartInfo.CreateNoWindow = true;
                    pProcess.Start();
                    string output = pProcess.StandardOutput.ReadToEnd();
                    pProcess.WaitForExit();

Wüsste noch nicht wie ich das Umsetzen kann da ich noch nicht mit Methoden gearbeitet habe. Aber ich Probieren mal weiter. Eventuell kriege ich ja noch den ein oder anderen Tipp xD

03.08.2017 - 20:05 Uhr

Sorry, hatte ein wenig vorschnell gehandelt und nicht richtig nachgeschaut. Habs geändert 😃

03.08.2017 - 19:43 Uhr

Moinsen,

ich bin noch blutiger Anfänger was C# und allgemein proggen angeht. Ich hab jetzt mein erstes Programm geschrieben, was genau das tut was ich gerne möchte aber der Code sieht in meinen Augen komisch aus und ständig brauchte ich die ganzen Variablen wieder. Ich habe mir alles selber beigebracht ohne Bücher sondern einfach nur durch die Dokumentation und Stackoverflow. Gibt es Möglichkeiten einigen Code in Methoden zu speichern ? Was kann man sonst noch so verbessern und was habe ich richtig bzw falsch gemacht in Bezug auf Ressourcen, Speed usw (auch wenn das prog eh nix verbraucht).

Naja hier ist der Code, würde mich freuen wenn man jemand drüber schaut 😃

using Microsoft.Win32;
using System;
using System.IO;
using System.Windows.Forms;


namespace OperaProfileLauncher
{
    public partial class OperaProfileLauncher : Form
    {
        public OperaProfileLauncher()
        {
            InitializeComponent();
            
            this.comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

        }

        private void Form1_Load(object sender, EventArgs e)
        {

            string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            string pdir = appdata + "" + "\\Opera Software\\Opera Stable\\Profile";
            string maindir = appdata + "" + "\\Opera Software\\Opera Stable";
            bool exists = System.IO.Directory.Exists(pdir);

            if (exists)
            {

                string[] files = Directory.GetFiles(pdir);
                string[] dirs = Directory.GetDirectories(pdir);

                foreach (string item2 in dirs)
                {
                    FileInfo f = new FileInfo(item2);

                    comboBox1.Items.Add(f.Name);

                }

                foreach (string item in files)
                {
                    FileInfo f = new FileInfo(item);

                    comboBox1.Items.Add(f.Name);

                }
            }

            else
            {
                System.IO.Directory.CreateDirectory(pdir);
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedItem == null)
            {
                MessageBox.Show("Nichts ausgewählt");
            }
            else
            {
                if (rbStable.Checked == true)
                {


                    System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
                    string InstallPathStable = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\Opera Software", "Last Stable Install Path", null);
                    string test = InstallPathStable + @"launcher.exe";
                    pProcess.StartInfo.FileName = test;
                    var s1 = @"""";
                    var s2 = "/" + comboBox1.SelectedItem;
                    var cbox = comboBox1.SelectedItem;
                    string arg = "--user-data-dir=";
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                    string pdir = appdata + "" + "\\Opera Software\\Opera Stable\\Profile";




                    pProcess.StartInfo.Arguments = arg + "" + s1 + "" + pdir + "" + s2 + "" + s1;
                    pProcess.StartInfo.UseShellExecute = false;
                    pProcess.StartInfo.RedirectStandardOutput = true;
                    pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    pProcess.StartInfo.CreateNoWindow = true;
                    pProcess.Start();
                    string output = pProcess.StandardOutput.ReadToEnd();
                    pProcess.WaitForExit();
                }

                if (rbBeta.Checked == true)
                {

                    System.Diagnostics.Process pProcess = new System.Diagnostics.Process();

                    string InstallPathBeta = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\Opera Software", "Last beta Install Path", null);

                    string test = InstallPathBeta + @"launcher.exe";
                    pProcess.StartInfo.FileName = test;
                    var s1 = @"""";
                    var s2 = "/" + comboBox1.SelectedItem;
                    var cbox = comboBox1.SelectedItem;
                    string arg = "--user-data-dir=";
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

                    string pdirBeta = appdata + "" + "\\Opera Software\\Opera Next\\Profile\\";




                    pProcess.StartInfo.Arguments = arg + "" + s1 + "" + pdirBeta + "" + s2 + "" + s1;
                    pProcess.StartInfo.UseShellExecute = false;
                    pProcess.StartInfo.RedirectStandardOutput = true;
                    pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    pProcess.StartInfo.CreateNoWindow = true;
                    pProcess.Start();
                    string output = pProcess.StandardOutput.ReadToEnd();
                    pProcess.WaitForExit();
                }

                if (rbDev.Checked == true)
                {

                    System.Diagnostics.Process pProcess = new System.Diagnostics.Process();

                    string InstallPathDev = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\Opera Software", "Last developer Install Path", null);
                    string test = InstallPathDev + @"launcher.exe";
                    pProcess.StartInfo.FileName = test;
                    var s1 = @"""";
                    var s2 = "/" + comboBox1.SelectedItem;
                    var cbox = comboBox1.SelectedItem;
                    string arg = "--user-data-dir=";
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

                    string pdirDev = appdata + "" + "\\Opera Software\\Opera Developer\\Profile\\";



                    pProcess.StartInfo.Arguments = arg + "" + s1 + "" + pdirDev + "" + s2 + "" + s1;
                    pProcess.StartInfo.UseShellExecute = false;
                    pProcess.StartInfo.RedirectStandardOutput = true;
                    pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    pProcess.StartInfo.CreateNoWindow = true;
                    pProcess.Start();
                    string output = pProcess.StandardOutput.ReadToEnd();
                    pProcess.WaitForExit();
                }
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedItem == null)
            {
                MessageBox.Show("Nichts");
            }
            else
            {
                if (rbStable.Checked == true)
                {
                    string folder = comboBox1.Text;
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                    string pathStable = appdata + "" + "\\Opera Software\\Opera Stable\\Profile\\" + folder;
                   

                    string newpathStable = appdata + "" + "\\Opera Software\\Opera Stable\\Backup\\" + folder;


                    string path = pathStable;
                    string[] dirs = Directory.GetDirectories(path, "*.*", SearchOption.AllDirectories);
                    string newpath = newpathStable;
                    try
                    {
                        Directory.CreateDirectory(newpath);
                    }
                    catch (IOException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }

                    for (int j = 0; j < dirs.Length; j++)
                    {
                        try
                        {
                            Directory.CreateDirectory(dirs[j].Replace(path, newpath));
                        }
                        catch (IOException ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }

                    string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
                    for (int j = 0; j < files.Length; j++)
                    {
                        try
                        {
                            File.Copy(files[j], files[j].Replace(path, newpath), true);
                           
                        }
                        catch (IOException ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }

                if (rbBeta.Checked == true)
                {
                    string folder = comboBox1.Text;
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                    string pathBeta = appdata + "" + "\\Opera Software\\Opera Next\\Profile\\" + folder;
                    //     var s1 = @"""";

                    string newpathBeta = appdata + "" + "\\Opera Software\\Opera Next\\Backup\\" + folder;

                    string path = pathBeta;
                    string[] dirs = Directory.GetDirectories(path, "*.*", SearchOption.AllDirectories);
                    string newpath = newpathBeta;
                    try
                    {
                        Directory.CreateDirectory(newpath);
                    }
                    catch (IOException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    for (int j = 0; j < dirs.Length; j++)
                    {
                        try
                        {
                            Directory.CreateDirectory(dirs[j].Replace(path, newpath));
                        }
                        catch (IOException ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }

                    string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
                    for (int j = 0; j < files.Length; j++)
                    {
                        try
                        {
                            File.Copy(files[j], files[j].Replace(path, newpath), true);
                        
                        }
                        catch (IOException ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }

                if (rbDev.Checked == true)
                {
                    string folder = comboBox1.Text;
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

                    string pathDeveloper = appdata + "" + "\\Opera Software\\Opera Developer\\Profile\\" + folder;
                    //    var s1 = @"""";


                    string newpathDeveloper = appdata + "" + "\\Opera Software\\Opera Developer\\Backup\\" + folder;

                    string path = pathDeveloper;
                    string[] dirs = Directory.GetDirectories(path, "*.*", SearchOption.AllDirectories);
                    string newpath = newpathDeveloper;
                    try
                    {
                        Directory.CreateDirectory(newpath);
                    }
                    catch (IOException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    for (int j = 0; j < dirs.Length; j++)
                    {
                        try
                        {
                            Directory.CreateDirectory(dirs[j].Replace(path, newpath));
                        }
                        catch (IOException ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }

                    string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
                    for (int j = 0; j < files.Length; j++)
                    {
                        try
                        {
                            File.Copy(files[j], files[j].Replace(path, newpath), true);

                        }
                        catch (IOException ex)
                        {
                            Console.WriteLine(ex.Message);
                        }

                    }
                }
            }
        }
            

                   

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {


        }
        
        private void button2_Click_1(object sender, EventArgs e)
        {



        }

        private void button2_Click_2(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(textBox1.Text))
            {
                MessageBox.Show("Bitte Namen angeben.");
            }
            else
            {
                if (rbStable.Checked == true)
                {
                    string folder = textBox1.Text;
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                    string pdir = appdata + "" + "\\Opera Software\\Opera Stable\\Profile\\";


                    string pdir2 = pdir + folder;



                    if (Directory.Exists(pdir2))
                    {
                        MessageBox.Show("Profil schon Vorhanden.");

                    }
                    else
                    {
                        comboBox1.Items.Add(textBox1.Text);
                        DirectoryInfo di = Directory.CreateDirectory(pdir2);
                        comboBox1.SelectedIndex = comboBox1.FindStringExact(textBox1.Text);

                   

                        if (comboBox1.Items.Contains(comboBox1.Items))
                        {

                            string[] files = Directory.GetFiles(pdir);
                            string[] dirs = Directory.GetDirectories(pdir);
                            foreach (string item2 in dirs)
                            {
                                FileInfo f = new FileInfo(item2);

                                comboBox1.Items.Add(f.Name);

                            }

                            foreach (string item in files)
                            {
                                FileInfo f = new FileInfo(item);

                                comboBox1.Items.Add(f.Name);

                            }
                        }
                    }
                }

                if (rbBeta.Checked == true)
                {
                    string folder = textBox1.Text;
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                    string pdirBeta = appdata + "" + "\\Opera Software\\Opera Next\\Profile\\";


                    string pdir2 = pdirBeta + folder;



                    if (Directory.Exists(pdir2))
                    {
                        MessageBox.Show("Profil schon Vorhanden.");

                    }
                    else
                    {
                        comboBox1.Items.Add(textBox1.Text);
                        DirectoryInfo di = Directory.CreateDirectory(pdir2);
                        comboBox1.SelectedIndex = comboBox1.FindStringExact(textBox1.Text);



                        if (comboBox1.Items.Contains(comboBox1.Items))
                        {

                            string[] files = Directory.GetFiles(pdirBeta);
                            string[] dirs = Directory.GetDirectories(pdirBeta);
                            foreach (string item2 in dirs)
                            {
                                FileInfo f = new FileInfo(item2);

                                comboBox1.Items.Add(f.Name);

                            }

                            foreach (string item in files)
                            {
                                FileInfo f = new FileInfo(item);

                                comboBox1.Items.Add(f.Name);

                            }
                        }
                    }
                }

                if (rbDev.Checked == true)
                {
                    string folder = textBox1.Text;
                    string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                    string pdirDev = appdata + "" + "\\Opera Software\\Opera Developer\\Profile\\";

                    string pdir2 = pdirDev + folder;



                    if (Directory.Exists(pdir2))
                    {
                        MessageBox.Show("Profil schon Vorhanden.");

                    }
                    else
                    {
                        comboBox1.Items.Add(textBox1.Text);
                        DirectoryInfo di = Directory.CreateDirectory(pdir2);
                        comboBox1.SelectedIndex = comboBox1.FindStringExact(textBox1.Text);


                        if (comboBox1.Items.Contains(comboBox1.Items))
                        {

                            string[] files = Directory.GetFiles(pdirDev);
                            string[] dirs = Directory.GetDirectories(pdirDev);
                            foreach (string item2 in dirs)
                            {
                                FileInfo f = new FileInfo(item2);

                                comboBox1.Items.Add(f.Name);

                            }

                            foreach (string item in files)
                            {
                                FileInfo f = new FileInfo(item);

                                comboBox1.Items.Add(f.Name);

                            }
                        }
                    }
                }
            }

        }

        private void tArg_TextChanged(object sender, EventArgs e)
        {

        }

        private void button5_Click(object sender, EventArgs e)
        {
            MessageBox.Show("DU klickst button");
        }

        private void bDelete_Click(object sender, EventArgs e)
        {
       
            var s2 = comboBox1.SelectedItem;
            var cbox = comboBox1.SelectedItem;
         
            string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            string pdir = appdata + "" + "\\Opera Software\\Opera Stable\\Profile\\";
            string pdirBeta = appdata + "" + "\\Opera Software\\Opera Next\\Profile\\";
            string pdirDev = appdata + "" + "\\Opera Software\\Opera Developer\\Profile\\";
            string folder = textBox1.Text;
            if (comboBox1.SelectedItem == null)
            {
                MessageBox.Show("Nichts ausgewählt");
            }
            else
            {
                if (rbStable.Checked == true)
                {
                    DialogResult result = MessageBox.Show("Willst du das Profil wirklich löschen ?",
                   "Caption", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                    if (result == DialogResult.Yes)
                    {
                        try
                        {
                            comboBox1.Items.Remove(s2);
                            Directory.Delete(pdir + s2, true);

                       
                            MessageBox.Show("Profil Entfernt!");
                        }
                        catch { }
                    }

                }
                else { }

                if (rbBeta.Checked == true)
                {
                    DialogResult result = MessageBox.Show("Willst du das Profil wirklich löschen ?",
                   "Caption", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                    if (result == DialogResult.Yes)
                    {
                        try
                        {
                            comboBox1.Items.Remove(s2);
                            Directory.Delete(pdirBeta + s2, true);

                            
                        
                        }
                        catch (Exception) { }
                    }
                }
                else { }

                if (rbDev.Checked == true)
                {
                    DialogResult result = MessageBox.Show("Willst du das Profil wirklich löschen ?",
                   "Caption", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                    if (result == DialogResult.Yes)
                    {
                        try
                      {


                            comboBox1.Items.Remove(s2);
                            Directory.Delete(pdirDev + s2, true);
                        
                            MessageBox.Show("Profil Entfernt!");


                     }
                        catch (Exception) { }
                    }





                }
            }
        }

        private void rbStable_CheckedChanged(object sender, EventArgs e)
        {
            comboBox1.Items.Clear();
            string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            string pdir = appdata + "" + "\\Opera Software\\Opera Stable\\Profile";
            bool exists = System.IO.Directory.Exists(pdir);

            if (exists)
            {

                string[] files = Directory.GetFiles(pdir);
                string[] dirs = Directory.GetDirectories(pdir);

                foreach (string item2 in dirs)
                {
                    FileInfo f = new FileInfo(item2);

                    comboBox1.Items.Add(f.Name);

                }

                foreach (string item in files)
                {
                    FileInfo f = new FileInfo(item);

                    comboBox1.Items.Add(f.Name);

                }
            }
        }

        private void rbBeta_CheckedChanged(object sender, EventArgs e)
        {
            comboBox1.Items.Clear();
            string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            string pdir = appdata + "" + "\\Opera Software\\Opera Next\\Profile";
            bool exists = System.IO.Directory.Exists(pdir);

            if (exists)
            {

                string[] files = Directory.GetFiles(pdir);
                string[] dirs = Directory.GetDirectories(pdir);

                foreach (string item2 in dirs)
                {
                    FileInfo f = new FileInfo(item2);

                    comboBox1.Items.Add(f.Name);

                }

                foreach (string item in files)
                {
                    FileInfo f = new FileInfo(item);

                    comboBox1.Items.Add(f.Name);

                }
            }
        }

        private void rbDev_CheckedChanged(object sender, EventArgs e)
        {
            comboBox1.Items.Clear();
            string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            string pdir = appdata + "" + "\\Opera Software\\Opera Developer\\Profile";
            bool exists = System.IO.Directory.Exists(pdir);

            if (exists)
            {

                string[] files = Directory.GetFiles(pdir);
                string[] dirs = Directory.GetDirectories(pdir);

                foreach (string item2 in dirs)
                {
                    FileInfo f = new FileInfo(item2);

                    comboBox1.Items.Add(f.Name);

                }

                foreach (string item in files)
                {
                    FileInfo f = new FileInfo(item);

                    comboBox1.Items.Add(f.Name);

                }
            }

            else
            {
                System.IO.Directory.CreateDirectory(pdir);
            }

        }


    



        private void bMain_Click(object sender, EventArgs e)
        {

            if (rbStable.Checked == true)

            {

                System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
                string InstallPathStable = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\Opera Software", "Last Stable Install Path", null);
          
                string test = InstallPathStable + @"launcher.exe";
                pProcess.StartInfo.FileName = test;
                var s1 = @"""";
                var s2 = "/";
                 string arg = "--user-data-dir=";
                string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                string pdir = appdata + "" + "\\Opera Software\\Opera Stable\\";
        


                pProcess.StartInfo.Arguments = arg + "" + s1 + "" + pdir + "" + s2 + "" + s1;
                pProcess.StartInfo.UseShellExecute = false;
                pProcess.StartInfo.RedirectStandardOutput = true;
                pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                pProcess.StartInfo.CreateNoWindow = true;
                pProcess.Start();
                string output = pProcess.StandardOutput.ReadToEnd();
                pProcess.WaitForExit();

            }

            if(rbBeta.Checked == true)

            {

                System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
                string InstallPathBeta = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\Opera Software", "Last beta Install Path", null);
                string test = InstallPathBeta + @"launcher.exe";
                pProcess.StartInfo.FileName = test;
                var s1 = @"""";
                var s2 = "/";
                string arg = "--user-data-dir=";
                string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                string pdir = appdata + "" + "\\Opera Software\\Opera Next\\";



                pProcess.StartInfo.Arguments = arg + "" + s1 + "" + pdir + "" + s2 + "" + s1;
                pProcess.StartInfo.UseShellExecute = false;
                pProcess.StartInfo.RedirectStandardOutput = true;
                pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                pProcess.StartInfo.CreateNoWindow = true;
                pProcess.Start();
                string output = pProcess.StandardOutput.ReadToEnd();
                pProcess.WaitForExit();

            }

            if (rbDev.Checked == true)

            {

                System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
                string InstallPathDev = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\Opera Software", "Last developer Install Path", null);
                string test = InstallPathDev + @"launcher.exe";
                pProcess.StartInfo.FileName = test;
                var s1 = @"""";
                var s2 = "/";
                string arg = "--user-data-dir=";
                string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                string pdir = appdata + "" + "\\Opera Software\\Opera Developer\\";



                pProcess.StartInfo.Arguments = arg + "" + s1 + "" + pdir + "" + s2 + "" + s1;
                pProcess.StartInfo.UseShellExecute = false;
                pProcess.StartInfo.RedirectStandardOutput = true;
                pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                pProcess.StartInfo.CreateNoWindow = true;
                pProcess.Start();
                string output = pProcess.StandardOutput.ReadToEnd();
                pProcess.WaitForExit();

            }

        }


    }
}

16.04.2017 - 23:47 Uhr

stimmt ich bin da wahrscheinlich falsch an der Sache rangegangen. In der ersten Zeile hätte ich gerne überprüft, ob es ein gültiger Ordner ist, in der 2. Zeile, ob es ein gültiger Youtube Link ist. Für Youtube Link müsstest eigentlich eine Variable geben in der libvideo library, das kann ich schnell rausfinden. Wenn halt alle Dinge zutreffen, würde ich gerne das der Download dann startet. Ich werde es morgen abend mal mit chiliics Methode probieren und in der URL Zeile mal schauen ob ich eine Prüfung für Youtube Link hinbekomme. Notfalls mit regex oder so xD Der 3. Prüft bei mir derzeit, ob der Link eine Playlist ist. Playlists saugen funktioniert noch nicht, dafür brauche ich noch eine andere library.

Den Link von
Coffeebean schaue ich mir auch morgen an, hab ihn eben überflogen. Glaub der hilft mir auch schon enorm weiter. Wissen das ich noch nicht hatte.

Danke schonmal für die Hilfe. Ich werde mal morgen ein wenig basteln und nochmal bescheid geben 😃 Von mir aus können die ganzen Prüfungen auch raus, as die App eh nur für mich ist, wollte es nur zum lernen mal richtig machen 😃

Schöne Nacht noch euch allen

Edit: mehrfach Rechtschreibfehler ausgebessert da ich so schnell tippe und oft Buchstaben oder Worte vergesse xD

Edit: 03.08.17

Habs jetzt einigermaßen hinbekommen, wahrscheinlich immernoch nicht der beste Weg aber für mich reicht es erstmal. Irgendwann kriege ich das noch perfekt hin 😃. Ich finde noch keine Möglichkeit eine Progressbar einzufügen und wenn ich auf Download klicke. Weiß jemand wie man das in diesem Fall machen kann ? Hab mir einiges durchgelesen aber ich check das noch nicht so richtig. Hier ist der gesamte Code:

using System;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using MaterialSkin;
using MaterialSkin.Controls;
using YoutubeExplode;
using YoutubeExplode.Models;
using Tyrrrz.Extensions;


namespace Ultra_Simple_Youtube_Downloader_2
{
    public partial class form1 :  MaterialForm
    {
        [DllImport("User32.dll")]
        protected static extern int
                 SetClipboardViewer(int hWndNewViewer);

        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern bool
               ChangeClipboardChain(IntPtr hWndRemove,
                                    IntPtr hWndNewNext);

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int SendMessage(IntPtr hwnd, int wMsg,
                                             IntPtr wParam,
                                             IntPtr lParam);
        IntPtr nextClipboardViewer;

        public form1()
        {

            InitializeComponent();

            var materialSkinManager = MaterialSkinManager.Instance;
           materialSkinManager.AddFormToManage(this);
            materialSkinManager.Theme = MaterialSkinManager.Themes.DARK;
            materialSkinManager.ColorScheme = new ColorScheme(Primary.Red500, Primary.Red700, Primary.Red100, Accent.Red200, TextShade.WHITE);
            nextClipboardViewer = (IntPtr)SetClipboardViewer((int)
                         this.Handle);
        }

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new form1());
        }
        protected override void WndProc(ref System.Windows.Forms.Message m)
        {

            const int WM_DRAWCLIPBOARD = 0x308;
            const int WM_CHANGECBCHAIN = 0x030D;

            switch (m.Msg)
            {
                case WM_DRAWCLIPBOARD:
                    DisplayClipboardData();
                    SendMessage(nextClipboardViewer, m.Msg, m.WParam, m.LParam);
                    break;

                case WM_CHANGECBCHAIN:
                    if (m.WParam == nextClipboardViewer)
                        nextClipboardViewer = m.LParam;
                    else
                        SendMessage(nextClipboardViewer, m.Msg, m.WParam, m.LParam);
                    break;

                default:
                    base.WndProc(ref m);
                    break;
            }
        }
        void DisplayClipboardData()
        {



            IDataObject iData = new DataObject();
            iData = Clipboard.GetDataObject();


            if (cbAutoPaste.Checked)
            {
                if (iData.GetDataPresent(DataFormats.Text))
                {
                    tUrl.Text = (string)iData.GetData(DataFormats.Text);
                }



            }



        }


        private void Form1_Load(object sender, EventArgs e)
        {
            string appdata = Environment.GetFolderPath(Environment.SpecialFolder.MyVideos);
            tPath.Text = appdata;

        }
     
        private static string NormalizeId(string input)
        {
            if (!YoutubeClient.TryParseVideoId(input, out string id))
                id = input;
            return id;
        }

        

        private static string NormalizeFileSize(long fileSize)
        {
            string[] units = { "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
            double size = fileSize;
            int unit = 0;

            while (size >= 1024)
            {
                size /= 1024;
                ++unit;
            }

            return $"{size:0.#} {units[unit]}";
        }


    

   








        private async void materialRaisedButton1_Click(object sender, EventArgs e)
        {
            var client = new YoutubeClient();

            string id = tUrl.Text;
            id = NormalizeId(id);

            try
            {

                var videoInfo = await client.GetVideoInfoAsync(id);
                var streamInfo = videoInfo.MixedStreams.OrderBy(s => s.VideoQuality).Last();

                string fileExtension = streamInfo.Container.GetFileExtension();
                string fileName = $"{ videoInfo.Title}.{ fileExtension}";
                string EndDirectory = tPath.Text + @"\";


                using (var input = await client.GetMediaStreamAsync(streamInfo))
                using (var output = File.Create(EndDirectory + fileName))

                {

                    await input.CopyToAsync(output);
                }
            }
            catch (Exception)
            {

            }
        }

    




        private async void tUrl_TextChanged(Object sender, EventArgs e)
        {
            if (cbAutoDownload.Checked)
            {
                var client = new YoutubeClient();

                string id = tUrl.Text;
                id = NormalizeId(id);

                try
                {

                    var videoInfo = await client.GetVideoInfoAsync(id);
                    var streamInfo = videoInfo.MixedStreams.OrderBy(s => s.VideoQuality).Last();

                    string fileExtension = streamInfo.Container.GetFileExtension();
                    string fileName = $"{ videoInfo.Title}.{ fileExtension}";
                    string EndDirectory = tPath.Text + @"\";


                    using (var input = await client.GetMediaStreamAsync(streamInfo))
                    using (var output = File.Create(EndDirectory + fileName))

                    {

                        await input.CopyToAsync(output);
                    }
                }
                catch (Exception)
                {

                }

            }
               




            
        }

        private async void materialFlatButton1_Click_1(object sender, EventArgs e)
        {

            var client = new YoutubeClient();

            string id = tUrl.Text;
            Console.WriteLine(tUrl.Text);
              
            id = NormalizeId(id);

            try
            {

                var videoInfo = await client.GetVideoInfoAsync(id);
                var streamInfo = videoInfo.MixedStreams.OrderBy(s => s.VideoQuality).Last();

                string fileExtension = streamInfo.Container.GetFileExtension();
                string fileName = $"{ videoInfo.Title}.{ fileExtension}";
                string EndDirectory = tPath.Text + @"\";


                using (var input = await client.GetMediaStreamAsync(streamInfo))
                using (var output = File.Create(EndDirectory + fileName))

                {

                    await input.CopyToAsync(output);
                }
            }
            catch (Exception)
            {

            }
        }

        private void materialFlatButton2_Click(object sender, EventArgs e)
        {
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                tPath.Text = ofd.SelectedPath;

            }
        }

        private void tUrl_Click(object sender, EventArgs e)
        {

        }

    }
}

16.04.2017 - 17:20 Uhr

Keine Ahnung, gibt ja überall Youtube Downloader als Freeware, zu kaufen, in Appstores, als Userscript. Glaub so eng sehen die das nicht, sonst wären die nicht im google playstore xD.

Edit: Obwohl wenn ich mal so drüber nachdenke, es umgeht ja die Werbung. Denke schon das es nicht erlaubt ist. Hoffentlich habe ich jetzt keinen Fehler gemacht zu schreiben das ich einen Youtube Downloader schreibe xD Krieg bestimmt so keine Hilfe mehr

16.04.2017 - 17:04 Uhr

Moin moin,

ich bin grade dabei einen Youtube Downloader zu schreiben mit diversen Funktionen, die ich bei anderen vermisse, z.B Clipboardmonitoring, Autostart Download usw. Das meist ist schon drin und funktioniert auch. Ich verstehe das error handling aber noch nicht wirklich. Bin erst seit 3 Tagen mit C# angefangen und hab mir vieles in der Zeit selbst zusammengesucht und mit Youtube Videos etc gelernt.

Ich habe 3 Felder, eins für den Speicherort, eins für den Youtube Link und eins für die Auflösung (geht noch nicht, muss ich noch was ab dem "else" ändern. Nutze libvideo als library. Ich habe es jetzt so gemacht:

    private async void btn_dl_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txtLoc.Text))
            {
                
                 MessageBox.Show("Kein Ordner angegeben");
            }
            if (string.IsNullOrWhiteSpace(txtUrl.Text))
            {
                
                MessageBox.Show("Kein Video angegeben");
            }
            if (txtUrl.Text.Contains("&list"))
                {
                
                MessageBox.Show("Playlist geht noch nicht ;)");
            }
     
            else {
             
                var youTube = YouTube.Default;
            var video = await youTube.GetVideoAsync(txtUrl.Text);
            var videodl = ofd.SelectedPath + "\\" + video.FullName;
            lblStatus.Text = "Lädt";
            File.WriteAllBytes(videodl, await video.GetBytesAsync());
            lblStatus.Text = "Fertig";

            }
        }

ich weiß wohl das es falsch ist, muss da glaub ich mit "and or" arbeiten, krieg aber noch hin. Wüsste nur gerne was ich da reinknallen muss damit das Programm nicht abstürzt sondern wie die MessageBox anzeigt das z.B das Feld leer ist. Stürzt halt dannach aber noch ab. Desweiteren würde ich gern wissen wie man es lösen kann, wenn SPeicherort und URL angegeben ist, der Code nach dem "else" automatisch ausgeführt wird. Eine Checkbox dafür habe ich schon verbaut, hatte auch schon einige Dinge probiert, hat alles aber irgendwie nicht geklappt. Clipboardmonitoring mit on/off checkbox hab ich hinbekommen. der fügt dann den link automatisch in die URL zeile, soll aber per option auch direkt den download starten können. Das ist aber grade noch nicht so wichtig, das kriege ich auch alleine hin. Wichtig ist grade für mich das mit den errors wenn die URL, Path zeilen leer sind 😃

Wäre über jede hilfe dankbar, ich brauch auch nicht unbedingt direkt den fertigen code, sondern ne hilfestellung wäre auch schon ganz gut 😃

Danke im vorraus,

MfG