//Get Process Infomation
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace IndiLogix.ProcInf
{
struct ProcInfo
{
internal string PName, PWinTitle, PMscNm, PMnMod, PMmFnm;
internal int PId, PBsPri, PExCod, PHwCnt, PMModMemSz, PSsnId, PThdCnt;
internal DateTime PExTim, PStrTime;
internal IntPtr PHwnd, PMmBsAdd, PMmEnPoAd, PMnWinHw, PMxWrkSt, PMinWrkSet, PProAff;
internal bool PHsExt, PResp, PPriBooEnb;
internal FileVersionInfo PMmFlVer;
internal TimeSpan PToProTm, PUsrProTim, PPrvProTim;
internal long PNonPgSysMemSiz, PWrkSet, PVirMemSiz, PPgMemSiz, PPgSysMemSiz, PPekPgMemSiz, PPekVirMemSiz, PPekWrkSet, PPvtMemSiz;
};
class I_ProcInfo
{
private const string usage = @"This is process Framework form IndiLogix,
It shows various process info";
private ProcInfo pn;
public string AboutIt
{
get { return usage; }
}
#region Process Property
public int ProcessId { get { return pn.PId; } }
public string MainWindowTitle { get { return pn.PWinTitle; } }
public string ProcessName { get { return pn.PName; } }
public int BasePriority { get { return pn.PBsPri; } }
public int ExitCode { get { return pn.PExCod; } }
public IntPtr Handle { get { return pn.PHwnd; } }
public int HandleCount { get { return pn.PHwCnt; } }
public bool HasExited { get { return pn.PHsExt; } }
public string MachineName { get { return pn.PMscNm; } }
public string Mod_Filename { get { return pn.PMmFnm; } }
public FileVersionInfo Mod_Verinfo { get { return pn.PMmFlVer; } }
public int Mod_MemorySize { get { return pn.PMModMemSz; } }
public IntPtr Mod_BaseAddress { get { return pn.PMmBsAdd; } }
public IntPtr Mod_EntryPointAddress { get { return pn.PMmEnPoAd; } }
public string Mod_ModuleName { get { return pn.PMnMod; } }
public IntPtr MainWindowHandle { get { return pn.PMnWinHw; } }
public IntPtr MaxWorkingSet { get { return pn.PMxWrkSt; } }
public IntPtr MinWorkingSet { get { return pn.PMinWrkSet; } }
public bool Responding { get { return pn.PResp; } }
public int SessionId { get { return pn.PSsnId; } }
public int ThreadsCount { get { return pn.PThdCnt; } }
public TimeSpan TotalProcessTIme { get { return pn.PToProTm; } }
public TimeSpan UserProcessTIme { get { return pn.PUsrProTim; } }
public long NonPagedSysMemory { get { return pn.PNonPgSysMemSiz; } }
public long PageMemorySize { get { return pn.PPgMemSiz; } }
public long PagedSystemMemorySize { get { return pn.PPgSysMemSiz; } }
public long PeakPagedMemorySize { get { return pn.PPekPgMemSiz; } }
public long PeakVirtualMemorySize { get { return pn.PPekVirMemSiz; } }
public long PeakWorkingSet { get { return pn.PPekWrkSet; } }
public bool PriorityBoostEnabled { get { return pn.PPriBooEnb; } }
public long PrivateMemorySize { get { return pn.PPvtMemSiz; } }
public TimeSpan PrivilegedProcessTime { get { return pn.PPrvProTim; } }
public IntPtr ProcessorAffinity { get { return pn.PProAff; } }
public DateTime StartTime { get { return pn.PStrTime; } }
public long VirtualMemorySize { get { return pn.PVirMemSiz; } }
public long WorkingSet { get { return pn.PWrkSet; } }
#endregion
public void I_Kill(string ProcName)
{
try
{
Process[] processByName = Process.GetProcessesByName(ProcName);
//Process pogo = Process.GetProcesses();
foreach (Process pr in processByName)
{
pr.Kill();
}
}
catch
{
Console.WriteLine("Cannot terminate " + ProcName + "\n");
}
}
public void I_Kill(int Id)
{
try
{
Process processById = Process.GetProcessById(Id);
processById.Kill();
//foreach (Process pr in processByName)
//{
// pr.Kill();
//}
}
catch
{
Console.WriteLine("Cannot terminate " + Id + "\n");
}
}
public static void I_GetRunningProc()
{
Process[] go = Process.GetProcesses();
foreach (Process g in go)
{
Console.WriteLine("{0}|{1}|{2}", g.ProcessName, g.MainWindowTitle, g.Id.ToString());
}
}
public string I_GetProcName(int Id)
{
string res = "Process Not Found";
Process[] pro = Process.GetProcesses();
foreach (Process p in pro)
{
if (p.Id.Equals(Id))
{
res = p.ProcessName;
break;
}
else
{
res = "Process Not Found";
}
}
return res;
}
public int I_GetProcId(string pnm)
{
int res = 0;
Process[] pro = Process.GetProcesses();
foreach (Process p in pro)
{
if (p.ProcessName.Equals(pnm))
{
res = p.Id;
break;
}
else
{
res = 0;
}
}
return res;
}
public void I_GetProcInfo(string ProcessName)
{
Process[] go = Process.GetProcesses();
foreach (Process g in go)
{
if (g.ProcessName.Equals(ProcessName))
{
pn.PName = g.ProcessName;
pn.PWinTitle = g.MainWindowTitle;
pn.PId = g.Id;
pn.PBsPri = g.BasePriority;
//pn.PExCod = g.ExitCode;
//pn.PExTim = g.ExitTime;
pn.PHwnd = g.Handle;
pn.PHwCnt = g.HandleCount;
pn.PHsExt = g.HasExited;
pn.PMscNm = g.MachineName;
pn.PMmFnm = g.MainModule.FileName;
pn.PMmFlVer = g.MainModule.FileVersionInfo;
pn.PMModMemSz = g.MainModule.ModuleMemorySize;
pn.PMmBsAdd = g.MainModule.BaseAddress;
pn.PMmEnPoAd = g.MainModule.EntryPointAddress;
pn.PMnMod = g.MainModule.ModuleName;
pn.PMnWinHw = g.MainWindowHandle;
pn.PMxWrkSt = g.MaxWorkingSet;
pn.PMinWrkSet = g.MinWorkingSet;
pn.PResp = g.Responding;
pn.PSsnId = g.SessionId;
pn.PThdCnt = g.Threads.Count;
pn.PToProTm = g.TotalProcessorTime;
pn.PUsrProTim = g.UserProcessorTime;
pn.PNonPgSysMemSiz = g.NonpagedSystemMemorySize64;
pn.PPgMemSiz = g.PagedMemorySize64;
pn.PPgSysMemSiz = g.PagedSystemMemorySize64;
pn.PPekPgMemSiz = g.PeakPagedMemorySize64;
pn.PPekVirMemSiz = g.PeakVirtualMemorySize64;
pn.PPekWrkSet = g.PeakWorkingSet64;
pn.PPriBooEnb = g.PriorityBoostEnabled;
pn.PPvtMemSiz = g.PrivateMemorySize64;
pn.PPrvProTim = g.PrivilegedProcessorTime;
pn.PProAff = g.ProcessorAffinity;
pn.PStrTime = g.StartTime;
pn.PVirMemSiz = g.VirtualMemorySize64;
pn.PWrkSet = g.WorkingSet64;
}
}
}
}
}