Вывод информации по процессу - C#
Формулировка задачи:
Всем привет, не могу понять
Работа в консоли:
И так мне нужно ввести название процесса в консоль, и после появиться информация о процессе, как сделать проверку по диспетчеру задач? (например если я ввожу в консоль: explorer - то сделать вывод путь к нему и дальнейшие действие..., если же какой-то другой не понятный ( Shwabra - то мол такого процесса не существует! )
Возможно это покажется легкой задачей, но мой утомленный мозг с этой задачей не справляется )
Так вот не могу понять как реализовать?!
P.S: Как мне всё это совместить?
1 - Вывод путь: Process.Start("что ввели в консоли - как сюда это впихнуть?");
2 - После вывода путь: сделать дальнейшее действие, например, убить процесс: или ввести другой процесс: или возврат сделать к меню! Как это провернуть?
P.P.S: Кода нету сам не могу понять поэтому простите!
Ну вот что-то типо этого:
using System; using System.Runtime.InteropServices; namespace BSOD { class Program { [DllImport("ntdll.dll", CharSet = CharSet.Unicode)] private static extern int RtlSetProcessIsCritical(bool bNew, object pbOld, bool bNeedScb); static void Main(string[] args) { bool? pbOld = null; object pdOldO = pbOld; RtlSetProcessIsCritical(true, pdOldO, false); Console.Write("Делаем бсод? y/n: "); string w00t = Console.ReadLine().ToLower(); if (w00t == "y") // То есть если мы нажимаем y то нас перекидывает, если другая клавиша,то другое действие..// Я вообщем за это спрашиваю :) Environment.Exit(0); else { RtlSetProcessIsCritical(false, pdOldO, false); Console.WriteLine("u mad ;)"); } Console.ReadLine(); } } }
Решение задачи: «Вывод информации по процессу»
textual
Листинг программы
using System; using System.Linq; using System.Diagnostics; using System.Text; namespace ConsoleTests1 { class Program { static void Main(string[] args) { Console.WriteLine("Commands:\n0 = process list\n1 = get process info by name (format: 1 process_id) ex: 1 5096\nexit = exit this application"); string line; while((line = Console.ReadLine().ToLower()) != "exit") { if(line == "0") { StringBuilder sb = new StringBuilder(); Process.GetProcesses().ToList().ForEach( proc => { //Here you can write whatever you want from proc sb.AppendFormat("pid: {0}, name: {1}\n", proc.Id, proc.ProcessName); }); Console.WriteLine(sb); } if(line.StartsWith("1")) { try { string[] cmdSplit = line.Split(new char[] { ' ' }); int processId = int.Parse(cmdSplit[1]); Process proc = Process.GetProcessById(processId); if(proc == null) { Console.WriteLine("Invalid process id specified"); continue; } Console.WriteLine("Selected process commands:\n0 = kill\n1 = show full path\n2 = exit process menu"); while((line = Console.ReadLine()) != "2") { if(line == "0") { proc.Kill(); break; } if(line == "1") { Console.WriteLine("Path: {0}", proc.MainModule.FileName); } } Console.WriteLine("Process menu exited"); } catch(FormatException) { Console.WriteLine("Failed to process cmd id 1 [format]"); } catch(IndexOutOfRangeException) { Console.WriteLine("Failed to process cmd id 1 [index out of range]"); } catch(Exception) { Console.WriteLine("Failed to process cmd id 1 [unknown error]"); } } } //Pause Console.ReadKey(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д