public static void Spust(string program, string parametr, string parametr0) { bool vysledek = false; string prikaz0 = (program + " " + parametr0).Trim(); string prikaz = (program + " " + parametr).Trim(); if (mw.CMD) { CSpustitvCMD(prikaz); return; } mw.ukol = new Thread(() => { if (!CSpustit(program, parametr) && !CSpustit(prikaz, "")) { string[] rozdel = prikaz.Split(' '); string ccast = ""; string pm = ""; vysledek = false; foreach (string cast in rozdel) { ccast += cast + " "; pm = prikaz.Substring((ccast.Trim()).Length).Trim(); if (CSpustit(ccast.Trim(), pm)) { vysledek = true; break; } } } else { vysledek = true; } mw.Dispatcher.BeginInvoke(DispatcherPriority.Send, (ThreadStart) delegate() { if (!vysledek) { mw.richTextBox1.Document.Blocks.Add( new Paragraph(new Run("Tento příkaz neexistuje: " + prikaz))); Funkce.CbZapsat(mw.cbPrikaz); mw.richTextBox1.ScrollToEnd(); mw.tStart.Content = "Spustit"; } else { program = program.Replace("\"", ""); Funkce.VlozitDoHistorie(program, parametr0); } }); }); mw.ukol.IsBackground = true; mw.ukol.Start(); }
public static bool Prikaz(string prikaz, int pocet) { mw.preruseno = false; string parametr = ""; string program = ""; string prikaz0 = ""; string parametr0 = ""; prikaz0 = prikaz; prikaz = prikaz .Replace("§i", mw.pocitadlo.ToString()) .Replace("§cd", Directory.GetCurrentDirectory() + "\\"); if (pocet < mw.seznam_vybranych_s.Count()) { prikaz = Funkce.NactiSoubor(mw.seznam_vybranych_s[pocet], prikaz); } Funkce.ZapisDoSouboru(mw.menuZapis.IsChecked, "\r\n" + Directory.GetCurrentDirectory() + ">" + prikaz + "\r\n"); //najdi retezec v "zavorkach" Match najdi0 = Regex.Match(prikaz0, "(^\"[\\s\\S]*?\")"); Match najdi = Regex.Match(prikaz, "(^\"[\\s\\S]*?\")"); if (najdi0.Success) //zadany parametr { parametr0 = prikaz0.Remove(0, najdi0.Groups[0].Value.Length).TrimStart(); } else //jinak to rozdelit mezerou { string[] rozdel = prikaz0.Split(' '); parametr0 = prikaz0.Remove(0, rozdel[0].Length).TrimStart(); } if (najdi.Success) //upraveny program a parametr { parametr = prikaz.Remove(0, najdi.Groups[0].Value.Length).TrimStart(); program = najdi.Groups[0].Value; } else { string[] rozdel = prikaz.Split(' '); parametr = prikaz.Remove(0, rozdel[0].Length).TrimStart(); program = rozdel[0]; } //zjisti cestu programu ze souboru for (int i = 0; i <= mw.comboBox1.Items.Count - 1; i++) { string nazev = ""; try { nazev = Path.GetFileNameWithoutExtension(program).ToLower(); } catch { }; string c2 = mw.comboBox1.Items[i].ToString().ToLower(); if (nazev == c2) { program = "\"" + mw.seznam_programu[i] + "\""; break; } } //prejde o slozku vys if (prikaz == "cd.." | prikaz == "cd ..") { try { Directory.SetCurrentDirectory( Directory.GetParent( Directory.GetCurrentDirectory()).FullName); } catch { } mw.tbCesta.Text = Directory.GetCurrentDirectory(); mw.Soubory(mw.tbCesta.Text); return(true); } //prejde na jiny disk Match disk = Regex.Match(prikaz, "[a-zA-Z]:"); if ((disk.Success && Directory.Exists(prikaz))) { Funkce.CD(prikaz); Funkce.CbZapsat(mw.cbPrikaz); return(true); } //prejde na jinou slozku if (program == "cd") { if ((Directory.Exists(Directory.GetCurrentDirectory() + parametr))) { Directory.SetCurrentDirectory(Directory.GetCurrentDirectory() + parametr); } else if ((Directory.Exists(parametr))) { Directory.SetCurrentDirectory(parametr); } else { Spust("cmd", "/c cd " + parametr, parametr0); } mw.tbCesta.Text = Directory.GetCurrentDirectory(); mw.Soubory(mw.tbCesta.Text); return(true); } if (program.ToLower() == "zprava") { MessageBox.Show(parametr, "Zpráva", 0, MessageBoxImage.Information); Funkce.VlozitDoHistorie(program, parametr); Ukonceno(null, null); return(true); } if (program.ToLower() == "cmd") { Process proc = new Process(); proc.StartInfo.FileName = "cmd"; mw.tStart.Content = "Spustit"; Funkce.VlozitDoHistorie("cmd", ""); try { proc.Start(); } catch { } return(true); } string[] c_prikazy = { "dir", "del", "copy", "move", "md", "rd", "ren", "mklink", "erase", "md", "mkdir", "set", "if", "for", "goto", "start", "echo", "vol" }; foreach (string c_prikaz in c_prikazy) { if (program.ToLower() == c_prikaz) { program = "cmd"; parametr = "/c " + prikaz; parametr0 = "/c " + prikaz0; break; } } //dalsi specialni prikazy if (program.ToLower() == "exit" || program.ToLower() == "konec") { mw.Close(); return(true); } if (program.ToLower() == "napsat") { mw.tStart.Content = "Stop"; mw.richTextBox1.Document.Blocks.Add(new Paragraph(new Run(parametr))); mw.richTextBox1.ScrollToEnd(); Funkce.VlozitDoHistorie("napsat", parametr0); Ukonceno(null, null); return(true); } if (program.ToLower() == "cls" || program.ToLower() == "clear") { mw.richTextBox1.Document.Blocks.Clear(); Funkce.VlozitDoHistorie("cls", ""); Ukonceno(null, null); return(true); } Spust(program, parametr, parametr0); return(true); }