Пробую изучать C# нужна подсказка или помощ
Цитата: Aleksey от 06.03.2023, 02:55привет yuri,
Очень доступно и понятно пояснил в двух сообщениях. СпасибоЕщё есть вопрос, как правильно вытянуть данные из этого кода?
[spoiler title="Ещё есть вопрос, как правильно вытянуть данные из этого кода?"]"timezone":{"id":"America\/Los_Angeles","abbr":"PST","is_dst":false,"offset":-28800,"utc":"-08:00","current_time":"2023-03-05T15:12:37-08:00"}}например, если нужно получить: "current_time":"2023-03-05T15:12:37-08:00" вот это значение.
Если я правильно понимаю, то эти данные инкапсулированы от значения "timezone" , я так думаю, нужно наверно указывать так: d["timezone" ["current_time"].ToString()];[/spoiler]
привет yuri,
Очень доступно и понятно пояснил в двух сообщениях. Спасибо
Ещё есть вопрос, как правильно вытянуть данные из этого кода?
"timezone":{"id":"America\/Los_Angeles","abbr":"PST","is_dst":false,"offset":-28800,"utc":"-08:00","current_time":"2023-03-05T15:12:37-08:00"}}
например, если нужно получить: "current_time":"2023-03-05T15:12:37-08:00" вот это значение.
Если я правильно понимаю, то эти данные инкапсулированы от значения "timezone" , я так думаю, нужно наверно указывать так: d["timezone" ["current_time"].ToString()];
Цитата: yuri от 06.03.2023, 08:26d["timezone"]["current_time"]
d["timezone"]["current_time"]
Цитата: Aleksey от 08.03.2023, 02:26Всем привет
Посмотрев урок, Предотвращаем Выключение ПК, пока работает программа, появилась идея, написать программу. ТЗ такое:
через сколько выключиться компьютер, при этом потушить все процессы корректно (например: если работает Cent Browser, Potplayer и др.), в программе есть textbox1 куда можно задать время, через сколько выключиться комп и идёт таймер отчёта через сколько комп выключиться.
Появилось несколько вопросов:
Как проверить процессы/программы которые запущены у человека на компе и которые нужно потушить? (помниться мне, что ув.Хачатур говорил, можно как-то через реестр смотреть вроде Display ветка называется) ?
Какой командой/вариантом выключить ПК ? или лучше вырубать через cmd (типа такого: Process.Start("cmd", "/c shutdown -s -f -t 00");)
Как сделать так, что бы значения которые мы пошлём в textbox1 (т.е. которые мы задаём), послать в таймер для выключения?
Всем привет
Посмотрев урок, Предотвращаем Выключение ПК, пока работает программа, появилась идея, написать программу. ТЗ такое:
через сколько выключиться компьютер, при этом потушить все процессы корректно (например: если работает Cent Browser, Potplayer и др.), в программе есть textbox1 куда можно задать время, через сколько выключиться комп и идёт таймер отчёта через сколько комп выключиться.
Появилось несколько вопросов:
Как проверить процессы/программы которые запущены у человека на компе и которые нужно потушить? (помниться мне, что ув.Хачатур говорил, можно как-то через реестр смотреть вроде Display ветка называется) ?
Какой командой/вариантом выключить ПК ? или лучше вырубать через cmd (типа такого: Process.Start("cmd", "/c shutdown -s -f -t 00");)
Как сделать так, что бы значения которые мы пошлём в textbox1 (т.е. которые мы задаём), послать в таймер для выключения?
Цитата: Mikhail от 08.03.2023, 03:01Привет.
Уже есть такое приложение, тык, функции расширились, выкл и перезагрузка просто, выкл/перезагрузка по таймеру, можно любое приложение закинуть с лаунчером или просто exe приложения.
Привет.
Уже есть такое приложение, тык, функции расширились, выкл и перезагрузка просто, выкл/перезагрузка по таймеру, можно любое приложение закинуть с лаунчером или просто exe приложения.
Цитата: Aleksey от 08.03.2023, 03:57Mikhail, Приветствую,
Эта программа немного не тот функционал делает, судя по видео к программе.
В моём посте есть ссылка на форму которую, я накидал, посмотри пожалуйста, что я хочу что бы было в программе.
Но, кодом программы нужно будет ознакомиться, если он там есть, пока не смотрел, только видео глянул.
[spoiler title="отличный пример от ув. Хачатура"]// Бритва Оккама new List<string> { "notepad++", "Spotify", "Tu", "Photoshop", "Adobe Audition", "Skype", "4kvideodownloader", "TeamViewer", }.ForEach(x => Process.GetProcessesByName(x).AsParallel().ForAll(y => y.Kill()));
[/spoiler]
Mikhail, Приветствую,
Эта программа немного не тот функционал делает, судя по видео к программе.
В моём посте есть ссылка на форму которую, я накидал, посмотри пожалуйста, что я хочу что бы было в программе.
Но, кодом программы нужно будет ознакомиться, если он там есть, пока не смотрел, только видео глянул.
// Бритва Оккама
new List<string>
{
"notepad++",
"Spotify",
"Tu",
"Photoshop",
"Adobe Audition",
"Skype",
"4kvideodownloader",
"TeamViewer",
}.ForEach(x => Process.GetProcessesByName(x).AsParallel().ForAll(y => y.Kill()));
Цитата: yuri от 08.03.2023, 15:11привет, cmd умеет выключать компьютер с таймером, если этот способ подходит, то можно сделать батник, который будет делать запланированное выключение:
shutdown /s /f /t x, гдеxэто кол-во секунд перед выключением.
shutdown /aотменяет запланированное выключение.Если все таки требуется тушить процессы до выключения, то придётся подумать.
[spoiler title=""]
1. Получить список процессов можно так:
Для удобства вывести их можно в listbox.foreach (Process process in Process.GetProcesses()) listBox1.Items.Add(process.ProcessName);Если какие-то процессы не завершаются системой нормально, то добавляешь их в список для уничтожения.
2. Cmd самый простой и надёжный вариант, как по Мне.
3. Можно сделать так, чтобы textbox принимал чч:мм:сс, и разбивать текст через:
Либо, например, добавить 3 кнопки: часы, минуты и секунды.
Ну, или просто сделать 3 textbox...
И вызываешьProcess.Start("cmd", "/c shutdown -s -f -t x");, гдеxэто Твой конечный результат с умноженными часами и минутами в секунды.Осталось продумать концовку:
Отображение таймера с оставшимся временем.
Завершение процессов, которые плохо завершаются системой. (за пару секунд до выключения)
И выключение.[/spoiler]
привет, cmd умеет выключать компьютер с таймером, если этот способ подходит, то можно сделать батник, который будет делать запланированное выключение:
Скопированоshutdown /s /f /t x, где Скопированоx это кол-во секунд перед выключением.
Скопированоshutdown /a отменяет запланированное выключение.
Если все таки требуется тушить процессы до выключения, то придётся подумать.
1. Получить список процессов можно так:
Для удобства вывести их можно в listbox.
foreach (Process process in Process.GetProcesses())
listBox1.Items.Add(process.ProcessName);
Если какие-то процессы не завершаются системой нормально, то добавляешь их в список для уничтожения.
2. Cmd самый простой и надёжный вариант, как по Мне.
3. Можно сделать так, чтобы textbox принимал чч:мм:сс, и разбивать текст через Скопировано:
Либо, например, добавить 3 кнопки: часы, минуты и секунды.
Ну, или просто сделать 3 textbox...
И вызываешь СкопированоProcess.Start("cmd", "/c shutdown -s -f -t x");, где Скопированоx это Твой конечный результат с умноженными часами и минутами в секунды.
Осталось продумать концовку:
Отображение таймера с оставшимся временем.
Завершение процессов, которые плохо завершаются системой. (за пару секунд до выключения)
И выключение.
Цитата: Aleksey от 08.03.2023, 23:01yuri, привет,
Проверил команду с bat -никомshutdown /s /f /t xдействительно работает, но выдаёт дополнительный экран, где нужно нажимать кнопку закрыть.Можно и не тушить процессы до выключения, если cmd с этой командой
shutdown /s /f /t xбудет тушить процессы/программы правильно, без лишних кнопок/окон/всплывающих подсказок/ и главное, что бы не было потом ошибок в этих программах.Если какие-то процессы не завершаются системой нормально, то добавляешь их в список для уничтожения.
Я то не знаю, например какие процессы запущены у человека на компе, это нужно сделать как-то автоматизировано, т.е. что бы программа сама понимала, что тушить и потом выключать комп.
Cmd самый простой и надёжный вариант, как по Мне.
Согласен.
Можно сделать так, чтобы textbox принимал чч:мм:сс, и разбивать текст через
:Либо, например, добавить 3 кнопки: часы, минуты и секунды.Ну, или просто сделать 3 textbox...И вызываешьProcess.Start("cmd", "/c shutdown -s -f -t x");, гдеxэто Твой конечный результат с умноженными часами и минутами в секунды.Хочется обойтись одной кнопкой, textbox - ы можно добавить, но зачем?
Разве нельзя, например в один textbox ввести время в минутах и нажать кнопку "выполнить"?
В уроках, ув. Хачатура есть пример работы с cmd, но там пример как читать из cmd в программу lable ? если я правильно понимаю, то мне надо наоборот, что бы пользователь вводил данные в textbox , а эти данные передавались в cmd shutdown /s /f /t x именно в этот x, затем программа корректно тушила процессы/программы и выключался комп.
yuri, привет,
Проверил команду с bat -ником Скопированоshutdown /s /f /t x действительно работает, но выдаёт дополнительный экран, где нужно нажимать кнопку закрыть.
Можно и не тушить процессы до выключения, если cmd с этой командой Скопированоshutdown /s /f /t x будет тушить процессы/программы правильно, без лишних кнопок/окон/всплывающих подсказок/ и главное, что бы не было потом ошибок в этих программах.
Если какие-то процессы не завершаются системой нормально, то добавляешь их в список для уничтожения.
Я то не знаю, например какие процессы запущены у человека на компе, это нужно сделать как-то автоматизировано, т.е. что бы программа сама понимала, что тушить и потом выключать комп.
Cmd самый простой и надёжный вариант, как по Мне.
Согласен.
Можно сделать так, чтобы textbox принимал чч:мм:сс, и разбивать текст через
:Либо, например, добавить 3 кнопки: часы, минуты и секунды.Ну, или просто сделать 3 textbox...И вызываешьProcess.Start("cmd", "/c shutdown -s -f -t x");, гдеxэто Твой конечный результат с умноженными часами и минутами в секунды.
Хочется обойтись одной кнопкой, textbox - ы можно добавить, но зачем?
Разве нельзя, например в один textbox ввести время в минутах и нажать кнопку "выполнить"?
В уроках, ув. Хачатура есть пример работы с cmd, но там пример как читать из cmd в программу lable ? если я правильно понимаю, то мне надо наоборот, что бы пользователь вводил данные в textbox , а эти данные передавались в cmd shutdown /s /f /t x именно в этот x, затем программа корректно тушила процессы/программы и выключался комп.
Цитата: yuri от 08.03.2023, 23:29Насчет уведомления: тык.
Если Ты заведомо не знаешь, какие программы плохо завершаются, то нужно добавить возможность исключений, чтобы пользователь мог Сам добавлять программы в некий список.
Если нужно только одно значение, а не универсальное с часами, минутами и секундами, то да, можно обойтись и одним textbox.
Дальше, например, если у Тебя только минуты, то берёшь
textBox1.Textв перемённую и умножаешь на 60. Не забудь проработать невозможность записи букв и иных символов в textbox.И наконец, вызываешь
Process.Start("cmd", $"/c shutdown -s -f -t {переменная}");
Насчет уведомления: тык.
Если Ты заведомо не знаешь, какие программы плохо завершаются, то нужно добавить возможность исключений, чтобы пользователь мог Сам добавлять программы в некий список.
Если нужно только одно значение, а не универсальное с часами, минутами и секундами, то да, можно обойтись и одним textbox.
Дальше, например, если у Тебя только минуты, то берёшь СкопированоtextBox1.Text в перемённую и умножаешь на 60. Не забудь проработать невозможность записи букв и иных символов в textbox.
И наконец, вызываешь СкопированоProcess.Start("cmd", $"/c shutdown -s -f -t {переменная}");
Цитата: Aleksey от 10.03.2023, 21:13Всем привет.
Кажись сделал программу)) но не до конца нормально работает. Спасибо yuri, за помощь и подсказки.
Вот видео на код и работу программы. Время когда задаёшь, то чёрное окно cmd скрыл и нормально, но когда так же скрываю черное окно cmd на кнопке отмены, то окно всё равно показывается и нужно внести в окно командуshutdown /aчто бы была отмена, если пишу код со скрытием, то вообще ничего не показывается и не понятно была ли отмена команды или нет.
[spoiler title="мой код программы"]using System; using System.Data; using System.Diagnostics; using System.Drawing; using System.Drawing.Text; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Windows.Forms; namespace ShutdownWin { public partial class Form1 : Form { public Form1() { InitializeComponent(); KeyPreview = true; KeyDown += (a, e) => { if (e.KeyValue == (char)Keys.Enter) { button1_Click(button1, null); } }; PrivateFontCollection myfont = new PrivateFontCollection(); using (MemoryStream fontStream = new MemoryStream(Properties.Resources.MyFont)) { var data = Marshal.AllocCoTaskMem((int)fontStream.Length); byte[] fontdata = new byte[fontStream.Length]; fontStream.Read(fontdata, 0, (int)fontStream.Length); Marshal.Copy(fontdata, 0, data, (int)fontStream.Length); myfont.AddMemoryFont(data, (int)fontStream.Length); Marshal.FreeCoTaskMem(data); } Font = new Font(myfont.Families[0], Font.Size); Controls.OfType<Control>().Where(x => x.GetType().GetProperty("UseCompatibleTextRendering") != null) .ToList().ForEach(x => x.GetType().GetProperty("UseCompatibleTextRendering").SetValue(x, true)); } void button1_Click(object sender, EventArgs e) { string min = textBox1.Text; int result = Convert.ToInt32(min) * 60; // UseShellExecute = false; // CreateNoWindow = true; // Process.Start("cmd", $"/c shutdown -s -f -t {result}"); Process process = Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c shutdown -s -f -t {result}", UseShellExecute = false, CreateNoWindow = true, RedirectStandardOutput = true }); } void timer1_Tick(object sender, EventArgs e) { string date_time = DateTime.Now.ToString(); label2.Text = date_time; } void button2_Click(object sender, EventArgs e) { // shutdown -s -t 3600 -c " " // shutdown /a Process.Start("cmd", $"shutdown -a"); // Process process2 = Process.Start(new ProcessStartInfo // { // FileName = "cmd", // Arguments = "shutdown -s -t 3600 -c \" \"", // UseShellExecute = false, // CreateNoWindow = true, // RedirectStandardOutput = true // }); } } }
[/spoiler]
Хочется, что бы черных окон cmd вообще не было при запуске/отмене, но в правом нижнем углу уведомления, что бы были на отмену/запуск. Как это сделать?
Всем привет.
Кажись сделал программу)) но не до конца нормально работает. Спасибо yuri, за помощь и подсказки.
Вот видео на код и работу программы. Время когда задаёшь, то чёрное окно cmd скрыл и нормально, но когда так же скрываю черное окно cmd на кнопке отмены, то окно всё равно показывается и нужно внести в окно команду Скопированоshutdown /a что бы была отмена, если пишу код со скрытием, то вообще ничего не показывается и не понятно была ли отмена команды или нет.
using System;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace ShutdownWin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
KeyPreview = true;
KeyDown += (a, e) => { if (e.KeyValue == (char)Keys.Enter) { button1_Click(button1, null); } };
PrivateFontCollection myfont = new PrivateFontCollection();
using (MemoryStream fontStream = new MemoryStream(Properties.Resources.MyFont))
{
var data = Marshal.AllocCoTaskMem((int)fontStream.Length);
byte[] fontdata = new byte[fontStream.Length];
fontStream.Read(fontdata, 0, (int)fontStream.Length);
Marshal.Copy(fontdata, 0, data, (int)fontStream.Length);
myfont.AddMemoryFont(data, (int)fontStream.Length);
Marshal.FreeCoTaskMem(data);
}
Font = new Font(myfont.Families[0], Font.Size);
Controls.OfType<Control>().Where(x => x.GetType().GetProperty("UseCompatibleTextRendering") != null)
.ToList().ForEach(x => x.GetType().GetProperty("UseCompatibleTextRendering").SetValue(x, true));
}
void button1_Click(object sender, EventArgs e)
{
string min = textBox1.Text;
int result = Convert.ToInt32(min) * 60;
// UseShellExecute = false;
// CreateNoWindow = true;
// Process.Start("cmd", $"/c shutdown -s -f -t {result}");
Process process = Process.Start(new ProcessStartInfo
{
FileName = "cmd",
Arguments = $"/c shutdown -s -f -t {result}",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true
});
}
void timer1_Tick(object sender, EventArgs e)
{
string date_time = DateTime.Now.ToString();
label2.Text = date_time;
}
void button2_Click(object sender, EventArgs e)
{
// shutdown -s -t 3600 -c " "
// shutdown /a
Process.Start("cmd", $"shutdown -a");
// Process process2 = Process.Start(new ProcessStartInfo
// {
// FileName = "cmd",
// Arguments = "shutdown -s -t 3600 -c \" \"",
// UseShellExecute = false,
// CreateNoWindow = true,
// RedirectStandardOutput = true
// });
}
}
}
Хочется, что бы черных окон cmd вообще не было при запуске/отмене, но в правом нижнем углу уведомления, что бы были на отмену/запуск. Как это сделать?
Цитата: Aleksey от 11.03.2023, 02:17Наконец-то, запилил ещё программу которая выключает комп по заданному времени в минутах. (теперь работает как надо)
Исходники программы тут, демонстрация программы тут и
[spoiler title="код программы тут"]using System; using System.Data; using System.Diagnostics; using System.Drawing; using System.Drawing.Text; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text.RegularExpressions; using System.Windows.Forms; namespace ShutdownWin { public partial class Form1 : Form { public Form1() { InitializeComponent(); KeyPreview = true; KeyDown += (a, e) => { if (e.KeyValue == (char)Keys.Enter) { button1_Click(button1, null); } }; PrivateFontCollection myfont = new PrivateFontCollection(); using (MemoryStream fontStream = new MemoryStream(Properties.Resources.MyFont)) { var data = Marshal.AllocCoTaskMem((int)fontStream.Length); byte[] fontdata = new byte[fontStream.Length]; fontStream.Read(fontdata, 0, (int)fontStream.Length); Marshal.Copy(fontdata, 0, data, (int)fontStream.Length); myfont.AddMemoryFont(data, (int)fontStream.Length); Marshal.FreeCoTaskMem(data); } Font = new Font(myfont.Families[0], 14); Controls.OfType<Control>().Where(x => x.GetType().GetProperty("UseCompatibleTextRendering") != null) .ToList().ForEach(x => x.GetType().GetProperty("UseCompatibleTextRendering").SetValue(x, true)); } void button1_Click(object sender, EventArgs e) { string min = textBox1.Text; int result = Convert.ToInt32(min) * 60; Process process = Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c shutdown -s -f -t {result}", UseShellExecute = false, CreateNoWindow = true }); } void timer1_Tick(object sender, EventArgs e) { string date_time = DateTime.Now.ToString(); label2.Text = date_time; } void button2_Click(object sender, EventArgs e) { // shutdown -s -t 3600 -c " " отключение ПК без уведомления Process process2 = Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = "/c shutdown -a", UseShellExecute = false, CreateNoWindow = true, }); } void textBox1_Click(object sender, EventArgs e) { textBox1.Text = ""; } void textBox1_TextChanged(object sender, EventArgs e) { if (Regex.IsMatch(textBox1.Text, "[a-zA-Z, а-яА-я .]")) { MessageBox.Show("Вводить нужно только цифры", Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1); textBox1.SelectionStart = textBox1.SelectionLength; } } } }
[/spoiler]
И всё равно в конце выскакивает окно сообщения, или когда задаёшь время 1 мин, то тоже показывает окно
Всем спасибо, кто помогал и принимал участие, кто заходит на эту страницу, для совета/помощи.P.S. ещё понравилась программа выключения компа на Githab
Наконец-то, запилил ещё программу которая выключает комп по заданному времени в минутах. (теперь работает как надо)
Исходники программы тут, демонстрация программы тут и
using System;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace ShutdownWin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
KeyPreview = true;
KeyDown += (a, e) => { if (e.KeyValue == (char)Keys.Enter) { button1_Click(button1, null); } };
PrivateFontCollection myfont = new PrivateFontCollection();
using (MemoryStream fontStream = new MemoryStream(Properties.Resources.MyFont))
{
var data = Marshal.AllocCoTaskMem((int)fontStream.Length);
byte[] fontdata = new byte[fontStream.Length];
fontStream.Read(fontdata, 0, (int)fontStream.Length);
Marshal.Copy(fontdata, 0, data, (int)fontStream.Length);
myfont.AddMemoryFont(data, (int)fontStream.Length);
Marshal.FreeCoTaskMem(data);
}
Font = new Font(myfont.Families[0], 14);
Controls.OfType<Control>().Where(x => x.GetType().GetProperty("UseCompatibleTextRendering") != null)
.ToList().ForEach(x => x.GetType().GetProperty("UseCompatibleTextRendering").SetValue(x, true));
}
void button1_Click(object sender, EventArgs e)
{
string min = textBox1.Text;
int result = Convert.ToInt32(min) * 60;
Process process = Process.Start(new ProcessStartInfo
{
FileName = "cmd",
Arguments = $"/c shutdown -s -f -t {result}",
UseShellExecute = false,
CreateNoWindow = true
});
}
void timer1_Tick(object sender, EventArgs e)
{
string date_time = DateTime.Now.ToString();
label2.Text = date_time;
}
void button2_Click(object sender, EventArgs e)
{
// shutdown -s -t 3600 -c " " отключение ПК без уведомления
Process process2 = Process.Start(new ProcessStartInfo
{
FileName = "cmd",
Arguments = "/c shutdown -a",
UseShellExecute = false,
CreateNoWindow = true,
});
}
void textBox1_Click(object sender, EventArgs e)
{
textBox1.Text = "";
}
void textBox1_TextChanged(object sender, EventArgs e)
{
if (Regex.IsMatch(textBox1.Text, "[a-zA-Z, а-яА-я .]"))
{
MessageBox.Show("Вводить нужно только цифры", Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
textBox1.SelectionStart = textBox1.SelectionLength;
}
}
}
}
И всё равно в конце выскакивает окно сообщения, или когда задаёшь время 1 мин, то тоже показывает окно
Всем спасибо, кто помогал и принимал участие, кто заходит на эту страницу, для совета/помощи.
P.S. ещё понравилась программа выключения компа на Githab
Цитата: yuri от 11.03.2023, 14:22Привет, рекомендую сменить проверку цифр на такую:
Regex.IsMatch(textBox1.Text, @"[^\d]+")
Потому что в Твоем textBox можно вводить символы ($#) и программа рухнет при попытке конвертации в цифорки[spoiler title="Также, рекомендую не копипастить код, а просто сделать метод cmd:"]
Process cmd(string command) => Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c {command}", UseShellExecute = false, CreateNoWindow = true, });И дальше просто вызываешь cmd("shutdown /a")
[/spoiler]
Ну и чтобы извабавиться от уведомления можно сделать внутренний таймер, который в последний момент будет вызывать выключение и уведомление просто не успеет появиться.
Привет, рекомендую сменить проверку цифр на такую: СкопированоRegex.IsMatch(textBox1.Text, @"[^\d]+")
Потому что в Твоем textBox можно вводить символы ($#) и программа рухнет при попытке конвертации в цифорки
Process cmd(string command) => Process.Start(new ProcessStartInfo {
FileName = "cmd",
Arguments = $"/c {command}",
UseShellExecute = false,
CreateNoWindow = true,
});
И дальше просто вызываешь cmd("shutdown /a")
Ну и чтобы извабавиться от уведомления можно сделать внутренний таймер, который в последний момент будет вызывать выключение и уведомление просто не успеет появиться.
Цитата: Aleksey от 11.03.2023, 20:46привет yuri,
Regex.IsMatch(textBox1.Text, @"[^\d]+")
сделал так 💪
а вот по поводу метода есть вопрос, справедливо сделать метод один, но у меня есть переменная result , не могу понять как вызвать один метод с ней а второй без, смешно конечно, но что-то туплю. 😤
[spoiler title="примерно так понимаю себе код"]void cmd(string command) { string min = textBox1.Text; int result = Convert.ToInt32(min) * 60; Process process = Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c {command} {result}", // но вот что делать с {result} если метод один ? UseShellExecute = false, CreateNoWindow = true }); } void button1_Click(object sender, EventArgs e) { cmd("shutdown -s -f -t") // тут должна быть такая команда Arguments = $"/c shutdown -s -f -t {result}" } void button2_Click(object sender, EventArgs e) { cmd("shutdown -a") // а тут должна быть такая команда Arguments = "/c shutdown -a" }
[/spoiler]
привет yuri,
Regex.IsMatch(textBox1.Text, @"[^\d]+")
сделал так 💪
а вот по поводу метода есть вопрос, справедливо сделать метод один, но у меня есть переменная result , не могу понять как вызвать один метод с ней а второй без, смешно конечно, но что-то туплю. 😤
void cmd(string command)
{
string min = textBox1.Text;
int result = Convert.ToInt32(min) * 60;
Process process = Process.Start(new ProcessStartInfo
{
FileName = "cmd",
Arguments = $"/c {command} {result}", // но вот что делать с {result} если метод один ?
UseShellExecute = false,
CreateNoWindow = true
});
}
void button1_Click(object sender, EventArgs e)
{
cmd("shutdown -s -f -t") // тут должна быть такая команда Arguments = $"/c shutdown -s -f -t {result}"
}
void button2_Click(object sender, EventArgs e)
{
cmd("shutdown -a") // а тут должна быть такая команда Arguments = "/c shutdown -a"
}
Цитата: yuri от 11.03.2023, 20:49Точно также как и ранее, только без /c
$"shutdown -s -f -t {result}"
Точно также как и ранее, только без /c
Скопировано$"shutdown -s -f -t {result}"
Цитата: yuri от 11.03.2023, 20:51Я Тебе кинул готовый метод, а Ты туда добавил конвертацию результата, что в случае отмены не нужен)
[spoiler title=""]
void button1_Click(object sender, EventArgs e) { string min = textBox1.Text; int result = Convert.ToInt32(min) * 60; cmd($"shutdown -s -f -t {result}") } Process cmd(string command) => Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c {command}", UseShellExecute = false, CreateNoWindow = true, });
[/spoiler]
Я Тебе кинул готовый метод, а Ты туда добавил конвертацию результата, что в случае отмены не нужен)
void button1_Click(object sender, EventArgs e) {
string min = textBox1.Text;
int result = Convert.ToInt32(min) * 60;
cmd($"shutdown -s -f -t {result}")
}
Process cmd(string command) => Process.Start(new ProcessStartInfo {
FileName = "cmd",
Arguments = $"/c {command}",
UseShellExecute = false,
CreateNoWindow = true,
});