Тёмный

Уроки C# - Пишем умный ланчер - C# 

XpucT
Подписаться 95 тыс.
Просмотров 49 тыс.
50% 1

Ссылка для донатов:
t.me/win10twea...
Эксклюзив для спонсоров ➜ / xpuct
Если недоступна спонсорка ➜
ResourcesExtract:
cloud.mail.ru/...
Форум по C#:
win10tweaker.r...
Основной канал:
/ jailbreakvideo
#Ланчер #Launcher #СиSharp #СиШарп

Опубликовано:

 

26 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 223   
@toluncrazy8308
@toluncrazy8308 3 года назад
Ребят, если кто не понял, что за символ "\c" на 33 строке: /C Выполнение указанной команды (строки) с последующим завершением. /K Выполнение указанной команды (строки) без последующего завершения. /S Изменение поведения после /C или /K (см. ниже) /Q Отключение режима вывода команд на экран (ECHO). /D Отключение выполнения команд AutoRun из реестра (см. ниже) /A Вывод результатов выполнения команд в формате ANSI.
@Andrey_1981
@Andrey_1981 5 лет назад
Отличный урок С# ! Больше нестандартных уроков!
@atler9865
@atler9865 4 года назад
Все гениальное - просто! Нереальная благодарность за контент!
@Mr.Epsilion
@Mr.Epsilion 4 года назад
Кот вернул true, значит поставил лайк 💪😄
@visokosniy
@visokosniy 4 года назад
это лучший сенсей, что я видел)) еще бы уроков по Go lang сделал, я бы вообще ниц пал)) красавчик! так доходчиво еще никто не объяснял на просторах рунета
@vadymkon
@vadymkon Год назад
Офигенно! Огромное спасибо! Я так перевоспитал Warp VPN, который не собирался работать без своей службы в автозапуске. Теперь с ланчером запускается и вырубается нормально вроде, и не надо каждый раз в твикер лезть его отключать, потом перезагружать, а уж потом с ним работать. Спасибо, Хачатур!
@XpucT
@XpucT Год назад
@daddysdiary4722
@daddysdiary4722 5 лет назад
если по Вашим урокам написать узер гаид для программистов, да и вообще для любого человека с мозгом, в книжном варианте или в любом другом варианте, уверен станет бест селлером, просто вот уверен... нет таких пособий, в котором материал разжеван настолько, что остается даже не проглотить, а выпить, или даже вдохнуть и все нормально , все в мозгу, останется только практиковать ... вот прям в том же виде что в этих роликах , без редактирования, зайдет любому, кто воще плнирует оставваться в тренде от сегодня и в будущем, даже если человек на пенсии он сможет заниматься вот такими делами серьезными...еслиб еще народ прикинул как это все ну просто не прилично хорошо оплачивается .... если б осознавали , какой это труд и помощь, то тут такой бы ажиотаж был... настоящему Визарду не жопься поставь лайк бро! вернется бумерангом я вот просто отвечаю.. 👍✌
@Sokkez
@Sokkez Год назад
Так подобные темы большинству народа и не нужны же. Нишевые темы. Всегда проще на диванчике лежать и в гос / не гос конторе условную 20ку тысяч в месяц получать, не прикладывая никаких усилий
@redice8928
@redice8928 2 года назад
после ваших уроков чувствуешь что становишься программистом
@XpucT
@XpucT 2 года назад
@22cognolio22
@22cognolio22 Год назад
Какое полезное видео!) Прям сходу пока хз где это применить, но точно найдется где!
@ЕвгенийДубасов-ы1р
Здравствуйте Хачатур, хотел бы сказать одно) ! Вы реально классно преподаете, для самоучки это нормально. То что вы не знаете ООП и другие элементы в C#, это не значит, что вы не знаете программирование, а точнее не понимаете. Вы прекрасно понимаете, потому что по видосам видно и по вашей программе Win 10 Tweaker. Программа замечательная, в дальнейшем постараюсь такую же сделать, но вашей все равно буду пользоваться. Сейчас я делаю программку для Google, то-есть она будет очищать все не нужные файлы, которые вообще не нужны ( Кэш, Cooki и другие ). Ваши уроки помогают разбирать новые Классы, Методы, операторы и другие моменты. Если не понятно мне, то я еще раз видос сморю + сижу в документации VS ( Microsoft ). Спасибо за ваши уроки!
@XpucT
@XpucT 5 лет назад
Спасибо, что написали ♥
@ЕвгенийДубасов-ы1р
Хачатур, такой вопросик есть ) А уроки еще будут ? )))))
@XpucT
@XpucT 5 лет назад
@@ЕвгенийДубасов-ы1р разумеется. И не мало. Но позже. Сейчас много дел, увы. Но всё будет. Много всего будет.
@ЕвгенийДубасов-ы1р
@@XpucT Ожидаю ) Можно такой вопрос, я хочу настроить свою панель инструментов. В интернете посмотрел, но подробного ничего не нашел.Как примерно настроить как у вас, ну чтобы примерно версия релиза самой программы запускалась без Debug. Просто когда даже ставлю релиз, то он начинает отладку, а я хочу чтобы программа сама по себе открывалась как обычные остальные программы. Спасибо ) С уважением Евгений
@XpucT
@XpucT 5 лет назад
@@ЕвгенийДубасов-ы1р v001.radikal.ru/1908/0a/6210149537-6-05c51836a74fb943561d9273b963587f.mp4
@sedsodhaxball7129
@sedsodhaxball7129 3 года назад
в каждом видео этот НЕПОДРАЖАЕМЫЙ котяра-паркурист :)
@maxreflex4271
@maxreflex4271 5 лет назад
Для тех кому надо скрыть форму: WindowState = FormWindowState.Minimized; ShowInTaskbar = false; Hide();
@ПомойкаЛафлейра
Классное видео. Лайк. Теперь я знаю как отп*зд*ть грёбаный Adobe Creative Could( или Cloud)
@GrandSilence
@GrandSilence 5 лет назад
Привет. Есть некоторые недостатки. 1 - можно сделать вообще без формы, это костыль с Load) 2 - ждать в цикле завершения процесса не нужно, есть WaitForExit 3 - GetProcessesByName вернет массив процессов, через. Foreach можно вызывать Kill
@GrandSilence
@GrandSilence 5 лет назад
@@arseniysurkov4176 пообщаемся с Хачатуром, расскажу ему - может сделает ролик "Пишем умный ланчер v2.0"
@XpucT
@XpucT 5 лет назад
Андрей, он имеет в виду Console.App Но забыл, что когда сценариев становится много, возвращаешься к Windows Forms =) Лучше сразу накидать в том, что удобно, а если совсем всё просто, то и консольное пойдёт.
@GrandSilence
@GrandSilence 5 лет назад
@@XpucT Нет, можно Forms приложение без формы сделать смотри как устроен Program.cs, удаляй конструктор формы и сам файл и так будет работать. На днях отпишу в дискорд, что да как)
@УсманГалеев
@УсманГалеев 7 месяцев назад
Крутой материал, хоть и пугает наличие языка CMD. Написал программу, которая в один клик закрывает все рабочие программы, торренты и прочее, чтобы мог играть в игры, не закрывая каждую программу и службу по отдельности
@phat80
@phat80 4 года назад
Не очень понял, зачем эти танцы с бубном вокруг сокрытия окна, если можно просто сделать приложение без окон. А так материал очень полезный. Жаль, что больше не пилишь уроков, такая практическая подача заходит больше чем халловорды всякие, как у других. Всегда хорошо, когда что-то преподает практик, а не чел, который сам только вчера тему изучил. А таких в интернете большинство.
@unde3863
@unde3863 5 лет назад
c 13:05 до 13:13 Просто великая цитата)))
@Rumata723
@Rumata723 5 лет назад
Перевоспитал SQL Server 2014 Management Studio обработав 6 служб без которых он не хочет работать. Сделал правда без while, через Process.Start().WaitForExit(). Работает отлично, со спокойной душой вынес из автозапуска службы которые запускались каждый раз вместе с системой и висели бесполезным мусором. Интересный момент - если у службы статус "Отключена" - она никак не запускается потом таким способом. Работает только если у службы установлен тип запуска "Вручную".
@XpucT
@XpucT 5 лет назад
В этой ветке: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services Находятся все службы У каждой есть параметр Start Значение 3 - вручную Значение 4 - отключена Сначала нужно поменять значение параметра Start с 4 на 3 и дальше sc start ...
@Rumata723
@Rumata723 5 лет назад
@@XpucT Я вручную через службы выставил им нужный тип запуска после обнаружения проблемы. А вообще интересно, надо будет взять на заметку. Можно будет автоматизировать сам вынос службы из автозапуска, при этом в правильный режим, при котором не будет проблем потом.
@MegaAlexprim
@MegaAlexprim Год назад
прикольно оставил комментарий с вопросом, после даже отредактировал и добавил. а через пол часа его уже нет -) фантастика.
@XpucT
@XpucT Год назад
Я вижу все комменты. Значит его удалил RU-vid.
@MegaAlexprim
@MegaAlexprim Год назад
@@XpucT я и пишу фантастика -) с трудом получается вообще комменты тут оставлять
@XpucT
@XpucT Год назад
@@MegaAlexprim у Меня на канале есть только 1 фильтр на 1 слово - это название операционной системы, которая про пингвинов.
@MegaAlexprim
@MegaAlexprim Год назад
@@XpucT может телеграм группа какая есть для быстрого фитбека?
@neuro_picture
@neuro_picture 2 года назад
У меня на ПК при загрузки, загружались некоторые службы, типо стима, epicGames, и тд. Короче я сделал прогу которая чистит всё это, чтобы лишний раз не грузилось. Спасибо за урок🙂
@XpucT
@XpucT 2 года назад
@jmksm
@jmksm 3 года назад
Учу React + Typescript, но дико заходят уроки Христа по С#)
@АндрейИ-ф3л
@АндрейИ-ф3л 4 года назад
Кот на 0:55 . Не благодарите :)
@Limonchik335
@Limonchik335 3 года назад
Ьоь?
@daddysdiary4722
@daddysdiary4722 5 лет назад
Здравствуйте Хачатур, и сразу же первый лайк за котофея в кадре.... Не знаю, когда вижу этих пушистых существ со мной что то происходит...просто болею семейством кошачьих, во всех их проявлениях...
@Pingitrus
@Pingitrus 5 лет назад
Здравствуйте Хачатур, огромное спасибо за уроки, подскажите пожалуйста, а будем изучать http запросы?
@XpucT
@XpucT 5 лет назад
Добрый день 🖐 Обязательно доберёмся 👍
@Pingitrus
@Pingitrus 5 лет назад
@@XpucT Отлично, спасибо! 👍
@ianm8107
@ianm8107 4 года назад
привет Хачатур, thanks for lesson . вот мой код(хотя очищать ничего не надо было но все таки решил сделать это с прогой хамачи и наткнулся на проблему). async private void Form1_Load(object sender, EventArgs e) { //for (Opacity = 0; Opacity < 1; Opacity += 0.05) //{ // await Task.Delay(2); //} Cmd("sc start \"Hamachi2Svc\" "); Cmd("start \"\" \"C:\\Users\\Public\\Desktop\\LogMein Hamachi.lnk\" "); while(Process.GetProcessesByName("hamachi-2-ui").Length > 0) await Task.Delay(2000); Cmd($"taskkill /f /pid \"{Process.GetCurrentProcess().Id}\" & " + $"taskkill /f /im LMIGuardianSvc &" +
@XpucT
@XpucT 4 года назад
Привет 🖐 С манифестом от админа запускал?
@ianm8107
@ianm8107 4 года назад
@@XpucT нет, а что именно надо было запускать от админа?
@XpucT
@XpucT 4 года назад
​@@ianm8107 если делаешь всё то же самое, уточняю нюансы. Не факт, кто это сыграло роль, но проверить стоит.
@ianm8107
@ianm8107 4 года назад
@@XpucT кстати еще хотел спросить есть ли смысл вообще заучивать эти коды которые ты пишешь к примеру?я каждый код за урок заучиваю и переписываю каждый день но до сих пор еще не уверен насчет того как правильно усваивать материал
@XpucT
@XpucT 4 года назад
@@ianm8107 заучивать не нужно. Тут главное, чтобы когда видео смотришь, не отвлекали чтобы. Главное - это понимать материал. Запоминать вообще не надо. Я сам порой начинаю тупить и долго воспоминаю.... потом тупо в Google. Это нормально. Всё запоминать не нужно. Только основы. Что строка заканчивается на; Что такое if и else. Потом на автомате будешь.
@ddvx_kris
@ddvx_kris 2 года назад
я не знал что goto используется в шарпе кроме свитчей...
@user-wu-tang
@user-wu-tang Год назад
Привет ув.Хачатур В качестве ДЗ, ты говоришь: "Спалите(увидеть) процесс, после чего удалите из реестра, всё то что он понаписал и удалить папки которые он создал". Вопрос: как узнать, куда в реестре гадит, любая программа (которую мы запускаем)? или что нужно вычищать из реестра
@XpucT
@XpucT Год назад
Привет 🖐 Имеется в виду самому сделать так, чтобы он что-то писал в реестр, а по закрытию, например, очищать или по галочке.
@user-wu-tang
@user-wu-tang Год назад
@@XpucT Спасибо. Можешь приоткрыть секрет? (когда будут новые уроки)
@lizardlab
@lizardlab Год назад
Спасибо за урок. Возник такой вопрос. А если нужно запускать программу и сворачивать ее в область уведомлений? Не сам ланчер, а приложение, которое он стартует.
@XpucT
@XpucT Год назад
Нельзя заставить другое приложение свернуться в трей. Так-то вообще можно всё сделать программно, но для этого нужно дойти до видео по WinAPI, чего не советую делать на том этапе, когда Вы задаёте этот вопрос сейчас.
@zaylen8389
@zaylen8389 5 лет назад
*Вопрос к видео не относится. Короче, смотри. Представим, у нас есть пара форм - Form1 и Form2. Чтобы перейти с первой формы на вторую мы создаём её копию и открываем Form2 (value) = new Form2(); И обратно. Но тут встаёт проблема. Когда мы переключаемся обратно на основную форму, мы переходим не на основу, а на её копию, как было сказано раннее. То есть получается, что в диспетчере задач дохрена форм остаётся. Если запускать через релиз и закрыть вторую форму, а перед этим скрыть первую форму, то программа работает, но пользователь этого не понимает, потому что её нет на нижней панели, нет в правой нижней панели. И это часто раздрожает. То, что ты закрываешь дополнительную форму, а основная в это время работает, но скрыта командой Hide(); Вопрос. Как это исправить? Как закрыть дополнительную форму и чтобы за ней закрывались все остальные формы данного типа, либо пусть при закрытии какой - то дополнительной формы, основная становится не скрытой и выходит на первый план, если это возможно. (Объяснил как смог, надеюсь, понял)
@XpucT
@XpucT 5 лет назад
Из всех обходных путей и делегатов Я остановился на собственном фокусе: 1. Во второй форме в полях пишешь: Form form; Чуть ниже немного изменим инициализацию: public Form2(Form line) { form = line; InitializeComponent(); FormClosing += (s, a) => form.Show(); } 2. Вызов второй формы: new Form2(this).Show(); Hide();
@lauriero3915
@lauriero3915 5 лет назад
Не знаю, насколько актуально, но вот как-то так: Form2 form = new Form2(); form.FormClosing += (s, e) => { this.Close(); }
@zaylen8389
@zaylen8389 5 лет назад
@@lauriero3915 Ты сделал через лямбдовое выражение событие; При закрытии второй формы закрывается вторая форма? А в чём смысл?
@lauriero3915
@lauriero3915 5 лет назад
@@zaylen8389 нет, если я использую this, я ссылаюсь именно на форму в которой код пишу
@безбашенийпро
@безбашенийпро 4 года назад
15:34 хто я?
@ИванСедов-ь5р
@ИванСедов-ь5р 5 лет назад
Лучший канал
@eugenebobs945
@eugenebobs945 5 лет назад
Лучший
@GHOST-he7np
@GHOST-he7np 4 года назад
Красивая котя)
@soohoy8256
@soohoy8256 2 года назад
А если одинаковые имена в диспетчере задач, как быть?
@XpucT
@XpucT 2 года назад
Детектить нужный, либо по размеру, либо по контрольной сумме. В общем, ухищраться.
@ArikimaDelay
@ArikimaDelay 5 лет назад
Конечно всё хорошо, но зачем так годно? Тип без рофлов это первый ролик по созданию по который не скучный.
@Kanet22
@Kanet22 4 года назад
Кот тоже будет уроки снимать ?
@PAPAKOTT
@PAPAKOTT 4 года назад
лайк за Котэ :)
@tyuop
@tyuop 5 лет назад
*Напишу здесь еще до премьеры…*
@wii587
@wii587 4 года назад
Подскажите пожалуйста, как отследить повторный запуск программы, чтобы запретить это пользователю?
@XpucT
@XpucT 4 года назад
Добавь это в загрузку: if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1) Close();
@wii587
@wii587 4 года назад
@@XpucT Спасибо большое!!! Все оказалось гораздо проще, чем в гуглах пишут. А у Вас уроки еще будут выходить? У Вас самое доходчивое объяснение без лишней воды.
@XpucT
@XpucT 4 года назад
@@wii587 будут, но сначала другие дела 👏
@alpex76
@alpex76 4 года назад
@@XpucT Это здорово. Подсел на уроки конкретно. Сейчас просто ради эстетического удовольствия пересматриваю уроки о синтаксисе, хоть его и знаю. Спасибо, очень круто.
@diaszhylkybek3064
@diaszhylkybek3064 Год назад
Здравствуйте. Подскажите или дайте пример как сделать так что открываеться программа и можно только на нём работать и отключить все горячие клавиши, главное тут в этой программе нажимаеш на кнопку и запускается блокнот, ещё один кнопка для калькулятора
@kollector.online9580
@kollector.online9580 3 года назад
Здравствуйте, не могли бы подсказать, где можно найти информацию связанную с реализацией решения: есть главное окно (программа платформа, в которую можно подгрузить модуль самописанный и получить в ней новый функционал). Желательно чтобы потом модули отображались в окне, при выборе определенного открывался бы конкретный функционал, форма и т.д. Также что имелась возможность удалять прикрепленный модуль расширения функционала. Т.е. окошко: кнопка загрузить модуль. кнопка удалить модуль. кнопка открыть функционал (т.е. новую форму с новым функционалом).
@andvokslife9596
@andvokslife9596 3 года назад
за кота лайк😋👍
@vadymkon
@vadymkon Год назад
Окей, пробовал искать на сайтах, не вышло. Подскажите пожалуйста, что делать когда я в cmd пишу просто start %programfiles% то вылазит ошибка мол Не удается найти "C:\Program", причем, что интересно, через Win+R, этот же путь %programfiles% запускает програм файлс. Пробовал даже напрямую путь писать, ниче не вышло, та же ошибка. А вот если через cd ходить, то даже с пробелом пропускает, как решить такую шнягу можно?
@XpucT
@XpucT Год назад
Про кавычки не забываем в путях, содержащих пробелы 👍
@vadymkon
@vadymkon Год назад
@@XpucT оказывается и правда. Тут нужны были и кавычки к пути и кавычки к названию. Спасибо
@Sergey0819Entity
@Sergey0819Entity 2 года назад
Привет, можешь показать, как сделать рабочий стол (рабочий интерфейс) на C#, я делаю операционку просто.
@XpucT
@XpucT 2 года назад
Привет 🖐 Что Ты понимаешь под словом операционка?
@Dumkras_old
@Dumkras_old 3 года назад
Здравствуйте!) Спасибо за видео, до сих пор годные!)) подскажите один момент - при Cmd("start \"%userprofile%\\Desktop\\www.txt\"\""); - у меня просто открывается cmd и все, ничего не происходит... так же прописано... void Cmd(string line) { Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c {line}", WindowStyle = ProcessWindowStyle.Hidden}).WaitForExit(); } когда cmd открывается там указан путь до проекта, в котором работаю
@XpucT
@XpucT 3 года назад
Доброй ночи 🌙 Неправильно задан вопрос. А ответ на правильно заданный вопрос будет звучать так: Process.Start(@"....\www.txt");
@Akelow
@Akelow 4 года назад
Хачатур, приветствую! Решил под данным видео оставить комментарий-вопрос, т.к. оно больше подходит под мой вопрос. Долго искал решение на свой вопрос в гугле, но рабочего решения не нашел. Теперь о своей задаче: есть у меня программка, которая работает в фоне и висит в трее и если пользователь повторно запускает данную программу, нужно чтобы уже открытая версия в трее активировалась, а новая не запускалась. Задача легко решается если ПО находится свернутом на панели задач, но никак не удается решить вопрос с треем. Пробовал через ShowWindow и SetForegroundWindow, но при запуске иконка в трее только моргает и продолжает висеть в трее дальше. Ниже код, который написал для тестовой программки, может у тебя есть лайфхаки и для этого случая или подскажешь, что не так с моим кодом: using System; using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices; using System.Windows.Forms; namespace TestActivationWindow { public partial class TestForm : Form { public TestForm() { InitializeComponent(); } [DllImport("user32.dll")] static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll")] static extern bool SetForegroundWindow(IntPtr hWnd); private void TestForm_Load(object sender, EventArgs e) { Process[] p = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName); // Если уже запущена одна копия программы, активируем уже открытую и закрываем новую версию. if (p.Count() > 1) { foreach(var el in p) //бегу в цикле, т.к. иногда новая версия с индексом 0, иногда старая версия с индексом 0. { ShowWindow(el.MainWindowHandle, 9); //SW_RESTORE SetForegroundWindow(el.MainWindowHandle); } //Данный вариант без цикла не всегда работает. //ShowWindow(p[0].MainWindowHandle, 9); //SW_RESTORE //SetForegroundWindow(p[0].MainWindowHandle); //Закрываем новую версию ПО this.Close(); } else { // делаем невидимой нашу иконку в трее ntfForm.Visible = false; // установим иконку для трея ntfForm.Icon = global::TestActivationWindow.Properties.Resources.changefile; // добавляем событие по 2му клику мышки ntfForm.MouseDoubleClick += new MouseEventHandler(NtfForm_MouseDoubleClick); } } private void NtfForm_MouseDoubleClick(object sender, MouseEventArgs e) { // делаем невидимой нашу иконку в трее невидимой ntfForm.Visible = false; // возвращаем отображение окна в панели ShowInTaskbar = true; // возвращаем окно формы в нормальный режим WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { // угоняем окно формы в минимизацию WindowState = FormWindowState.Minimized; // делаем видимой нашу иконку в трее невидимой ntfForm.Visible = true; // убираем отображение окна в панели ShowInTaskbar = false; } private void TestForm_Resize(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) { // делаем невидимой нашу иконку в трее невидимой ntfForm.Visible = false; // возвращаем отображение окна в панели ShowInTaskbar = true; Show(); } } } }
@XpucT
@XpucT 4 года назад
Привет, Али 🖐 Упрощённо будет так: www.upload.ee/download/11853005/e55e59e022be176692cc/Test.zip Но в этом проекте Я не создал метода, который Тебе нужен. А именно заставить внешний exe думать, что ему нужно развернуться. Нельзя заставить другую программу принимать команды. Вообще как бы можно, но это называется Injection и Hacking. То есть не Твой вопрос. Тебе нужно понимать, что второй экземпляр - это совершенно уже другая программа. Другой адрес в памяти, другой процесс и всё такое. А вот закрыться дубликату показал как в архиве 👍
@Akelow
@Akelow 4 года назад
​@@XpucT Спасибо тебе большое за ответ и пример. Скорей всего буду делать через закрытия второго экземпляра и открытия новой версии, благо сама программа пока висит в трее не делает в принципе ничего и принудительное закрытие не повредит каким-либо процессам.
@XpucT
@XpucT 4 года назад
Сделал так, что работает через раз. Какая-то ненадёжная либа что ли.... Проверь. using Microsoft.Win32; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Management; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Test.Properties; namespace Test { public partial class Form1 : Form { [DllImport("user32.dll")] public static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam); public const int WM_COMMAND = 0x0112; public Form1() { InitializeComponent(); noty.Click += (s, a) => { Show(); noty.Visible = false; WindowState = FormWindowState.Normal; }; Resize += (s, a) => { //if (WindowState == FormWindowState.Minimized) //{ // Hide(); // noty.Visible = true; //} //else if (WindowState == FormWindowState.Normal) // noty.Visible = false; }; } void Form1_Load(object sender, EventArgs e) { if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1) { IntPtr proc = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)[1].MainWindowHandle; if (proc != null) { PostMessage(proc, WM_COMMAND, 0xF120, 0); Process.GetProcessById(Process.GetCurrentProcess().Id).Kill(); } } } } } Но не в трее. Там вообще бесполезно.
@XpucT
@XpucT 4 года назад
Всё-таки сделал =) Без импорта с++ www.upload.ee/download/11857465/2289082058de1767cb2b/Test.zip
@Akelow
@Akelow 4 года назад
@@XpucT Проверил, действительно работает через раз. В принципе сегодня занимался данной темой и даже понял несколько причин почему работает через раз и почему с треем не работает: 1. Работает через раз потому что в момент наполнения массива процессов не всегда индексы будут соответствовать 1 новый, а 0 уже имеющийся. Когда дебажил увидел что иногда бывает наоборот 0 новый, а 1 уже имеющийся. 2. MainWindowHandle по процессам в трее всегда будет 0, это увидел тоже на моменте дебага и прочитал уже потом на MSDN. Вот выдержка с MSDN: С процессом связано главное окно, только если процесс имеет графический интерфейс. Если связанный процесс не имеет главного окна, MainWindowHandle значение равно нулю. Значение также равно нулю для процессов, которые были скрыты, то есть процессов, которые не отображаются на панели задач. Это может быть так для процессов, которые отображаются в виде значков в области уведомлений в правом углу панели задач. Но меня данная тема зацепила и я не оставил данный вопрос, читал сегодня разные форумы и прочие источники и по результатам сделал библиотеку, которая активирует уже открытый процесс не важно в трее или на панели задач. Фактически смысл библиотеки: используя разные функции WinAPI получить все процессы и заполнить массив нужного мне типа. Потом уже с этим массивом, в котором есть реальный Handle работаю, в основном сейчас на 100% через наименования окна. Хотя можно и по PID, но еще не до конца доработал данную возможность. Если интересно то архив с библиотекой, классом и самой программкой положил сюда www.upload.ee/download/11857475/a0ad0708492f1767cb98/Test.zip
@tuzvetal
@tuzvetal Год назад
Здравствуйте Хачатур,как быть если после закрытия процесса он автоматом перезапускается ?
@XpucT
@XpucT Год назад
Добрый день 🖐 Отслеживать извне, больше никак.
@tuzvetal
@tuzvetal Год назад
Хачатур,как в этом лаунчере прописать такую команду sc config "Backupper Service" start= disabled можно это реализовать ?
@XpucT
@XpucT Год назад
@@tuzvetal у нас же есть cmd метод. Просто передаём ему эту команду.
@tuzvetal
@tuzvetal Год назад
Cmd("sc config "Backupper Service" start= disabled"); так пишу то в коде ошибка :(
@XpucT
@XpucT Год назад
@@tuzvetal пропускать уроки не стоит.
@geniusmane9239
@geniusmane9239 5 лет назад
Классно объясняешь) Подписка есть! Смотрю дальше. Допрыгался "smartscreen.exe"))) Только вопрос, может глупый. Я недавно учу шарп и не встречал ещё await Task. Почему именно он, а не Thread.Sleep? Он грузит больше ЦП или личное предпочтение?
@XpucT
@XpucT 5 лет назад
Сама Microsoft рекомендует. Всё же Thread уже устарел ┐('~`;)┌
@geniusmane9239
@geniusmane9239 5 лет назад
@@XpucT, ясно! Спасибо:)
@k.u.l.i.e.v
@k.u.l.i.e.v 3 года назад
Пытаюсь написать слайдер на C#, возможно ли это???
@XpucT
@XpucT 3 года назад
Легко. Урок по анимации есть в этом курсе.
@k.u.l.i.e.v
@k.u.l.i.e.v 3 года назад
@@XpucT искал вчера, чёт не нашел, это про await?
@XpucT
@XpucT 3 года назад
@@k.u.l.i.e.v пытаешься написать слайдер, но при этом не хочешь учить азы? Как ты себе это представляешь... Последний раз рекомендую персонально - Урок 1 и до конца.
@k.u.l.i.e.v
@k.u.l.i.e.v 3 года назад
@@XpucT переменные, циклы, массивы и т.д. пропустил, потому что они почти на всех языках одинаковые
@deadliveman
@deadliveman 3 года назад
GetProcessByName возвращает массив процессов с таким именем
@Мибус
@Мибус 2 года назад
У меня есть программа находящаяся в Program Files (x86), сама винда 64 разрядная. Если я использую переменную среды %programfiles%, то он выдаёт ошибку что файл по пути C:/Program Files/.... не найден. А когда ставлю галочку "предпочтительна 32-разрядная" , то программа запускается нормально. Задавать проверку, чтоб он искал в какой програм файлз он установлен? А если оно вообще не в программ файлзы установлено, а пользователь в какую-то свою папку установил? Думал может из реестра можно вытащить куда конкретная программа установлена, но конкретно по этой не нашел там информации. Можно это как-то отследить? p.s. сделал проверку пути через Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) и Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), но это как-то на какие-то костыли больше похоже)
@XpucT
@XpucT 2 года назад
Именно это Environment.SpecialFolder.ProgramFilesX86 есть хорошая практика. Это не костыли. А чтобы найти конкретную программу, точнее есть путь установки, просто смотри тут: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
@Мибус
@Мибус 2 года назад
@@XpucT спасибо) Просто мне показалась какой-то громоздкой запись с проверкой через Environment) Учту на будущее и постараюсь запомнить этот класс) Я так понимаю в анинсталле может и не быть записи о программе? Пролистал все записи там, смотрел в параметр DiplayName и не нашел там нужной мне программы. Возможно разработчик просто не стал заморачиваться с выбором програм файлсов в зависимости от разрядности ситемы и с записью в анинсталл)
@XpucT
@XpucT 2 года назад
@@Мибус если разраб всё делал корректно, то след должен оставаться. Не считая случаев, когда это portable.
@Мибус
@Мибус 2 года назад
@@XpucT да, нашлось, только чуть в другой ветке: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ Получилось вытащить от туда путь, куда она была установлена, только столько неочевидных подводных камне обнаружилось пока решал эту задачу, но было интересно))
@XpucT
@XpucT 2 года назад
@@Мибус так есть - открытие каждый день =)
@risoutsoring
@risoutsoring 5 лет назад
класс
@КомбинаторИмён
@КомбинаторИмён 4 года назад
Хачатур привет, спасибо за уроки - лучшие) выбрав очень странный путь для практики, решил сваять ланчер для сервера (прошу не осуждайте) minecraft, с возможностью настройки выделяемой памяти и чего нибудь еще. появился вопрос, как запустить из cmd .jar файл?
@XpucT
@XpucT 4 года назад
Привет 🖐 Так ведь просто путь к файлу и всё. Он сам запустится 👍
@ЮрийМамонтов-е4е
@ЮрийМамонтов-е4е 4 года назад
Здравствуйте. Обратил внимание в диспетчере задач, что ваша программа каждые две секунды не просто проверяет существование процесса, но и зачем-то выделяет порядка 250 кб памяти каждые 2 секунды, в результате в диспетчере видно, как увеличивается используемая память. С чем это связано? Так ведь не должно быть, это утечка памяти. Очевидно, .NET не производит ее очистку, в результате ваш ланчер может просто забить всю оперативку непонятно чем.
@XpucT
@XpucT 4 года назад
Добрый день 🖐 Сборщик мусора не даёт пробраться выше 13,9 МБ. Но для крупных проектов - это не решение. Поэтому ещё один коммент ниже.
@XpucT
@XpucT 4 года назад
Альтернатива, чтобы совсем не жрал: var process = Process.GetProcessesByName("iTunes"); while (process.Any(x => !x.HasExited)) await Task.Delay(2000).ConfigureAwait(false); Правда LINQ мы проходили в последнем уроке. Думаю, может стоит об этом сказать даже в новом видео.
@MegaAlexprim
@MegaAlexprim Год назад
я не гордый еще раз могу написать, в таком исполнении оно не работает и не понимает из какой разрядности брать Файл. -Cmd("start \"\" \"%programfiles%\\iTunes\\iTunes.exe\""); но если ему тыкнуть так - Cmd("start \"\" \"%Programfiles(x86)%\\iTunes\\iTunes.exe\""); то все работает.
@XpucT
@XpucT Год назад
В свойствах проекта что стоит? Предпочтительно 32 бита?
@MegaAlexprim
@MegaAlexprim Год назад
@@XpucT нет, всё сделал по инструкции убрал галочку, поставил(любая) как в уроке.
@XpucT
@XpucT Год назад
@@MegaAlexprim видимо iTunes уже прописывает себя в переменные среды иначе.
@MegaAlexprim
@MegaAlexprim Год назад
@@XpucT я понимаю, что в таком случае нужно сделать проверку на наличие файлов в папке, но не могу правильно это реализовать, понимаю что ничего сложного, но схема в голове не выстраивается в нужную цепочку
@MegaAlexprim
@MegaAlexprim Год назад
@@XpucT Ты лучший учитель по программированию за всю мою жизнь, а мне 44. короче собрал все полученные за курс знания и минут за 20 может меньше собрал вот такое решение и я сам офигел после проверки -)) оно работает. { Cmd("sc start \"Bonjour Service\""); if (File.Exists(@"%Programfiles%\\iTunes\\iTunes.exe\")) { Cmd("start \"\" \"%Programfiles%\\iTunes\\iTunes.exe\""); } else Cmd("start \"\" \"%Programfiles(x86)%\\iTunes\\iTunes.exe\""); }
@liquidspot6219
@liquidspot6219 5 лет назад
Серьезно юзать goto даже для начала ?!
@unde3863
@unde3863 5 лет назад
Ну тут я уже не первый, но это годный контент)))
@unde3863
@unde3863 5 лет назад
clck.ru/Fixha - Вот что пишет при скачке ResourcesExtract
@XpucT
@XpucT 5 лет назад
исправил ссылку 👍
@unde3863
@unde3863 5 лет назад
@@XpucT Спасибо, щас всё впорядке , EcMenu - очень интересная утилита. думаю будет интересно, видео по ней Portable ver. clck.ru/FjFGW
@XpucT
@XpucT 5 лет назад
Пожалуйста, не используйте эту ссылкосокращалку. Надоело вынимать из папки Спам.
@redtayron6390
@redtayron6390 5 лет назад
Привет Хачатур, спасибо за очередные бесценные уроки, мог бы ты рассказать или может даже показать в следующих видео как сделать так что бы checkbox активировался по нажатию на кнопку, очень интересно посмотреть, а то я себе всю голову сломал, делаю одно а получается совершено другое.
@TheCrossfor
@TheCrossfor 5 лет назад
private void button1_Click(object sender, EventArgs e) { checkBox1.Checked = true; }
@redtayron6390
@redtayron6390 5 лет назад
@@TheCrossfor не помогло ((( checkbox активируется так же по нажатию на него а мне нужно что бы он был как бы в ждущем режиме , но спасибо за совет))
@TheCrossfor
@TheCrossfor 5 лет назад
@@redtayron6390 Возможно имена контролов другие, в моём примере у кнопки button1, у чекбокса checkBox1
@redtayron6390
@redtayron6390 5 лет назад
@@TheCrossfor ну в таком случае нужно для каждого checkbox ставить дополнительную кнопку, и у меня получается так что когда я ставлю галочку на checkbox1 а потом ставлю галочку на checkbox2 то активируется checkbox1
@TheCrossfor
@TheCrossfor 5 лет назад
@@redtayron6390 Или если вы хотели, чтобы ТОЛЬКО кнопкой включался, тогда после инициализации формы, укажите checkBox1.Enabled = false; а в событии клика по кнопке, соответственно true
@МаксимГоловизнин-к4в
Здравствуйте, а не подскажите как мне решить мою проблему . Делаю приложение ,которое вызывает cmd и запускает утилиту sfc/scannow , но мне нужно достать из cmd результат этой команды , она выводит оповещения о том что началось сканирование ,пробовал StandartOutput ,но он не вводит эту информацию, как можно это реализовать ?
@XpucT
@XpucT 5 лет назад
Добрый день, Макс. Сегодня выложу видео, как читать с cmd и powershell 👍
@МаксимГоловизнин-к4в
@@XpucT оу, спасибо!
@MaN69k
@MaN69k 5 лет назад
Здравствуй Хачатур, есть такой вопрос. У меня, если cmd просто открыть и пытаться запустить службу "Bonjour Service" она у меня не запускается. Попробовал написать Verb = "runas", после чего у меня запускается cmd от имени администратора и служба "Bonjour Service" запустилась. И теперь каждый раз когда я обращаюсь к методу Cmd(); у меня открывается окно контроля учетных записей. В итоге приходиться нажимать 3 раза то, что я разрешаю приложению вносить изменения на компьютер. Как от этого избавиться?Я могу в принцыпе сбросить "Настройку уведомления об изменении параметров компьютера" чтоб меня не уведомляло, но если приложение на другом компьютере запустить, то опять нужно куча действий делать. Как быть в такой ситуации?
@XpucT
@XpucT 5 лет назад
Привет, Игорь 🖐 Решение простое и оно тут: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-jHVTmDePWAA.html
@MaN69k
@MaN69k 5 лет назад
@@XpucT Большое спасибо)
@GoLezhaShowMega
@GoLezhaShowMega 2 года назад
Привет подскажи пожалуйста что тут не так мне консоль открывает после запуска .,даже файл манифеста стоит администратор void Button1_Click(object sender, EventArgs e) { Cmd("sc start \"Bonjour Service\""); Cmd("start \"\"\"%ProgramFiles%\\iTunes\\iTunes.exe\""); } void Cmd(string line) { Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c {line}", WindowStyle = ProcessWindowStyle.Hidden }).WaitForExit(); }
@XpucT
@XpucT 2 года назад
Привет 🖐 Перебор похоже тут \"\"\ \"\"\
@GoLezhaShowMega
@GoLezhaShowMega 2 года назад
@@XpucT Cmd("sc start \"Bonjour Service\""); Process.Start(@"C:\Program Files (x86)\iTunes\iTunes.exe"); CHecker: if (Process.GetProcessesByName("iTunes").Length > 0) { await Task.Delay(2); goto CHecker; } else { Cmd($"taskkill /f /pid \"{Process.GetCurrentProcess().Id}\"&" + $"taskkill /f /im distnoted.exe &" + $"taskkill /f /im iPodService.exe &" + $"taskkill /f /im mDNSResponder.exe &" + $"taskkill /f /im iTunesHelper.exe &" + $"taskkill /f /im AppleMobileDeviceService.exe"); } void Cmd(string line) { Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c {line}", WindowStyle = ProcessWindowStyle.Hidden }).WaitForExit(); } // так вышел на том этапе пока что не плохой получился ланчер
@pelmen4ic
@pelmen4ic 5 лет назад
Нужна помощь, после создания апликации, написал аналогичный код но при компиляции он требует static 'Main' method. В чем ошибка?
@XpucT
@XpucT 5 лет назад
Метод Main - это главная точка входа в программу. Посмотрите, что у Вас в файле Program.cs Именно там должен быть метод. Создайте новый проект и сравните этот Main с тем, что у Вас.
@DmitriyVasil
@DmitriyVasil 4 года назад
у меня при открытии cmd начальная строка находится в папке программы. чтобы все заработало приходится прописывать:@"/c cd c:\Windows\System32\ & {line}". что я делаю не так?
@XpucT
@XpucT 4 года назад
По-любому где-то что-то пропустил =) Я не совсем понял в какой части когда, но точно где-то отклонился от сценария, который на видео.
@Ден-п7ф
@Ден-п7ф 5 лет назад
XpucT , как заблокировать выбор элемента в combobox по нажатию на кнопку раскрытия списка, но не заблокировав при этом текстовый ввод?
@XpucT
@XpucT 5 лет назад
Конфликт интересов =) Как можно не заблокировав выбор заблокировать выбор. Я так понял, что набираемый текст ещё должен сам подбирать вариант? Если так, то лучше использовать свой велосипед, чем combobox.
@Ден-п7ф
@Ден-п7ф 5 лет назад
@@XpucT в combobox есть 2 варианта выбора элемента 1. из выпадающего списка 2. с помощью текстового ввода, мне надо заблокировать 1 вариант.
@areon7777
@areon7777 4 года назад
А что делает этот ланчер, я так и не понял
@pavetr
@pavetr 4 года назад
Человек сидит на Шиндовс 10 в виртуалке с Шиндовс 10....
@underdogg96
@underdogg96 3 года назад
А в чем проблема?
@pavetr
@pavetr 3 года назад
@@underdogg96 зачем
@underdogg96
@underdogg96 3 года назад
@@pavetr ну он пишет программу, которая непосредственно влияет на систему. В процессе тестирование много что может сломаться, а виртуалку всегда можно откатить за пару секунд. Плюс сама студия много мусора создает. Вообще программировать на виртуалке очень удобно.
@pavetr
@pavetr 3 года назад
@@underdogg96 Это не ассемблер, ало. Программа выполняется в IDE и не имеет доступа к ядру.
@RoyZASTEROiD
@RoyZASTEROiD 3 года назад
для чего надо /с в аргументе?
@XpucT
@XpucT 3 года назад
Набери в командной строке: cmd /?
@RoyZASTEROiD
@RoyZASTEROiD 3 года назад
@@XpucT sps
@RoyZASTEROiD
@RoyZASTEROiD 3 года назад
@@XpucT и сможете мне дать ссылку, где я смогу читать об запрете редактирование манифеста программы
@RoyZASTEROiD
@RoyZASTEROiD 3 года назад
чтобы не изменили с помощи днспай, ресорс хакер и с др подобными прогами.
@XpucT
@XpucT 3 года назад
@@RoyZASTEROiD app.simplenote.com/p/XMlgsy
@kashiroko6632
@kashiroko6632 4 года назад
а если мне хочется сделать для онлайн игры лаунчер? это возможно на шарпе новичку?
@XpucT
@XpucT 4 года назад
Конечно.
@kashiroko6632
@kashiroko6632 4 года назад
@@XpucT Это minecraft-сервер. У них несколько лет не меняется дизайн, поэтому я захотел написать лаунчер. Проблема в том, что там сначала идет выбор сервера, потом никнейм и пароль, далее запускается сам майнкрафт с авторскими модами и текстурками и я попадаю на сервер. Все так запутанно. Можешь потом сделать урок как разбираться в этом? возможно ли вообще
@rootready
@rootready 5 лет назад
Смущает бесконечный рост памяти... как с этим бороться?
@XpucT
@XpucT 5 лет назад
О чём именно речь? Поподробнее.
@itgorka
@itgorka 4 года назад
@@XpucT У вас прямо на видио в диспетчере задач лаунчер кушал все больше памяти без остановки, чем дольше работал тем больше съедал.
@XpucT
@XpucT 4 года назад
@@itgorka решение: var process = Process.GetProcessesByName("iTunes"); while (process.Any(x => !x.HasExited)) await Task.Delay(2000).ConfigureAwait(false); Правда LINQ мы проходили в последнем уроке.
@Iamnotagenius
@Iamnotagenius 4 года назад
На моменте с чекером я выпал, ну есть же у процессов событие Exited или метод WaitForExit, ну почему бы его не использовать, зачем долбиться к процессу каждые две секунды "а ты есть? а сейчас? ну, закрылся?", когда он сам нам об этом может сообщить. И вообще нам необязательно убивать процессы через cmd, можно просто написать process.Kill(), и всё, и не надо через какие-то там команды всё делать
@XpucT
@XpucT 4 года назад
Воу, воу, полегче. Смотрю под каждым видео решил оставить отзыв бывалого и градус самомнения вырастает на глазах. Это похвально, что Ты опытный и предпочитаешь подходить к вопросу только с правильной стороны. Но Я уже отвечал таким много раз следующее: Посчитай, сколько выпускников и сколько кто учится и чего они добились. Всё по книжкам с учителями. Хронология там своя. А У Меня не своя, у Меня логическая. Мой подход отличается тем, что Я делюсь опытом и на любой вопрос будет ответ. Я умею объяснять сложные вещи простым языком. Да ещё так, чтобы вопрос зачем не звучал. Это основной принцип обучения, который Я открыл. Если от него отклониться, обучение будет неэффективным. Эта мысль будет справедлива вечно. Но мы так и будет учить всех хронологии, правильности и прочему не дурному тону. Хотя всегда сначала возникает цель, и только потом шаги. Так вот по практике говорю, что лучше делать именно так. А по опыту говорю, что обучать нужно именно так. Всего 20 уроков судя по комментам дают больше 5-ти летки в любом универе. Но чтобы не звучало, как выяснение у кого больше, пожалуй остановлюсь и просто дам объективно посмотреть. Предубеждения в комментариях не приветствуются. Знания ничто. Практика всё. Делаю исключение, отвечая тому, кто по книжкам правильно всё любит: Есть исключительные ситуации и опыт говорит о том, что лучше, что хуже, что работает, а что нет. 1. WaitForExit в программе присутствует, но не там, где Тебе показалось логичным по простой причине - баги Windows. Я наплясался с Cortana в своё время настолько, что уже авторитетно могу сказать, что предпочтительнее. Порой костыль или велосипед намного эффективнее. 2. process.kill() не подойдёт, если нужен перезапуск программы, поэтому лучше убить из потока cmd. Вторая причина - не потушишь процесс, если он системный. Даже привилегии не помогут. Но от админа в cmd легко. Эту уязвимость просто нужно знать. В книжках про это не пишут.
@Iamnotagenius
@Iamnotagenius 4 года назад
@@XpucT Всё понял, спасибо за объяснение
@Andrey_1981
@Andrey_1981 5 лет назад
Начал писать лаунчер по видео, а потом понял что iTunes я установил через store, смогу ли я до него добраться?
@XpucT
@XpucT 5 лет назад
Странный вопрос. Мы же перевоспитываем не плиточные приложения, а программу. Для примера можно брать любой другой софт.
@Andrey_1981
@Andrey_1981 5 лет назад
@@XpucT Да я понимаю, но всё же в надежде найти, где же лежит, этот магазинный тюнс перелазил кучу папок :)
@XpucT
@XpucT 5 лет назад
C:\Program Files\WindowsApps
@mikepytchak8883
@mikepytchak8883 5 лет назад
Как тебе VS2019?
@XpucT
@XpucT 5 лет назад
Пока также, как и 2017, главное, что косяков нет, не считая исправлений набор текста. До сих пор не исправили. Также старый e-mail висит вечно в Live Share, хотя он давно изменён.
@daddysdiary4722
@daddysdiary4722 5 лет назад
на 9 минуте я только осознал , как Хачатур пишет программки, че то в голове щелкнуло, и у меня сложилась картинка,..(сам в шоке)
@ДмитрийКравец-ч4х
@ДмитрийКравец-ч4х 3 месяца назад
Приветствую. В общем у меня при открытии программы уже все закрывается. и программа тоже. то есть Делей не работает. только метод смд без хидена. и все равно пропадает программа. у меня студия 2022. очень странно. void Cmd(string line) { Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c {line}"}).WaitForExit(); } async void Form1_Load(object sender, EventArgs e) { Cmd("start \"\" \"%userprofile%\\Desktop\\1.txt\""); while(Process.GetProcessesByName("1.txt").Length > 0) await Task.Delay(2000); Cmd($"taskkill /f /pid \"{Process.GetCurrentProcess().Id}\" & " + $"taskkill /f /im MicrosoftEdgeUpdate.exe &" + $"taskkill /f /im MicrosoftEdge.exe &" + $"taskkill /f /im msedgewebview2.exe"); }
@ДмитрийКравец-ч4х
@ДмитрийКравец-ч4х 3 месяца назад
или это приколы студии или винды 11)
@lisiger69
@lisiger69 2 года назад
А если у приложения есть ещё форма и я хочу именно эту форму убить? Либо при появлении окна приложения была музыка. Как это можно следить?
@XpucT
@XpucT 2 года назад
Музыку через Play можно воспроизвести любую, а вот искать отдельную форму можно пытаться только через exe. Если форма без exe, а дочерний объект, тогда это сродни изменить label в чужой программе, а это уже другая история про injecting.
@ДенисСтепаненко-э1ф
почему вы используете cmd в с#? стандартными средствами с# сложнее сделать то же самое?
@XpucT
@XpucT 4 года назад
Не сложнее, тупее =) Поищите, как скопировать папку в C# из одного места в другое. Проще, чем через basic не сделать. В C# - это не просто дольше писать рекурсию - это тупее. Не нужно делать что-то принципиально. Библиотеки и прочее не даром даются к подключению. Есть случаи, где лучше в C#, и таких большинство. Но не в этом случае. Ещё вопрос на засыпку по теме: Как закрыть себя, переименовать и снова запустить? =)
@artkar4866
@artkar4866 4 года назад
Не могу найти видео где ты в первый раз объясняешь про cmd, в прошлых вроде нет
@XpucT
@XpucT 4 года назад
ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-iXrEOrR5gv8.html
@artkar4866
@artkar4866 4 года назад
XpucT Благодарю)
@NKCMEH
@NKCMEH 5 лет назад
Что плохого в 32-битных приложениях?
@XpucT
@XpucT 5 лет назад
Ничего плохого. Суть в хорошести =)
@vim_enjoyer_wq
@vim_enjoyer_wq 2 года назад
Не совсем понял, зачем циклом проверять состояние процесса, если можно подписаться на событие завершения процесса, таким образом например: Process process = new Process(); process.StartInfo.FileName = "С:\\путь до exe"; process.EnableRaisingEvents = true; process.Exited += (s,a) => Application.Exit(); process.Start();
@XpucT
@XpucT 2 года назад
Это хорошо. Но как быть, если процесс не нужно запускать, а просто следить за ним? Без process.Start() фокус не пройдёт ведь.
@vim_enjoyer_wq
@vim_enjoyer_wq 2 года назад
@@XpucT Хороший вопрос, теперь понял зачем)
@XpucT
@XpucT 2 года назад
Чутка сохранил, как вариант: Process.GetProcessesByName("notepad") .Where(proc => proc.EnableRaisingEvents = true) .ToList().ForEach(proc => proc.Exited += (s, a) => Environment.Exit(0));
Далее
А Вы за пластику?
00:31
Просмотров 12 тыс.
TEAM SPIRIT: НОВЫЙ СОСТАВ. SEASON 24-25
01:31
Делаем парсер HTML на C#
23:52
Просмотров 160 тыс.