All current running processes
using System;
using System.Diagnostics;
class MainClass
{
public static void Main()
{
int totMemory = 0;
Console.WriteLine("Info for all processes:");
Process[] allProcs = Process.GetProcesses();
foreach(Process thisProc in allProcs)
{
DateTime started = thisProc.StartTime;
totMemory += physMemory;
Console.WriteLine("Process: {0}, ID: {1}", thisProc.ProcessName, thisProc.Id);
Console.WriteLine(" virtual memory: {0}", thisProc.VirtualMemorySize);
Console.WriteLine(" private memory: {0}", thisProc.PrivateMemorySize);
Console.WriteLine(" physical memory: {0}", thisProc.WorkingSet);
}
Console.WriteLine("\nTotal physical memory used: {0}", totMemory);
}
}
Change priority for current process
using System;
using System.Diagnostics;
class MainClass
{
public static void Main()
{
Process thisProc = Process.GetCurrentProcess();
thisProc.PriorityClass = ProcessPriorityClass.High;
Console.WriteLine(" new priority class: {0}", thisProc.PriorityClass);
}
}
new priority class: High
Detecting Process Completion
using System;
using System.Diagnostics;
class MainClass
{
static void ProcessDone(object sender, EventArgs e)
{
Console.WriteLine("Process Exited");
}
public static void Main()
{
Process p = new Process();
p.StartInfo.FileName = "notepad.exe";
p.StartInfo.Arguments = "yourFile.cs";
p.EnableRaisingEvents = true;
p.Exited += new EventHandler(ProcessDone);
p.Start();
p.WaitForExit();
Console.WriteLine("Back from WaitForExit()");
}
}
Process Exited
Back from WaitForExit()
Enumerate over mods in a given PID
using System;
using System.Diagnostics;
class MainClass
{
public static void EnumModsForPid(int pID)
{
Process theProc;
try {
theProc = Process.GetProcessById(pID);
} catch {
Console.WriteLine("-> Sorry...bad PID!");
return;
}
Console.WriteLine("Here are the loaded modules for: {0}", theProc.ProcessName);
try
{
ProcessModuleCollection theMods = theProc.Modules;
foreach(ProcessModule pm in theMods)
{
string info = string.Format("-> Mod Name: {0}", pm.ModuleName);
Console.WriteLine(info);
}
}
catch{Console.WriteLine("No mods!");}
}
static void Main(string[] args)
{
int theProcID = 10001;
EnumModsForPid(theProcID);
}
}
-> Sorry...bad PID!
Enumerate over threads in a given PID
using System;
using System.Diagnostics;
class MainClass
{
public static void EnumThreadsForPid(int pID)
{
Process theProc;
try {
theProc = Process.GetProcessById(pID);
} catch {
Console.WriteLine("-> Sorry...bad PID!");
return;
}
Console.WriteLine("Here are the thread IDs for: {0}", theProc.ProcessName);
ProcessThreadCollection theThreads = theProc.Threads;
foreach(ProcessThread pt in theThreads)
{
string info = string.Format("-> Thread ID: {0}\tStart Time {1}\tPriority {2}", pt.Id , pt.StartTime.ToShortTimeString(), pt.PriorityLevel);
Console.WriteLine(info);
}
}
static void Main(string[] args)
{
int theProcID = 10001;
EnumThreadsForPid(theProcID);
}
}
-> Sorry...bad PID!
Get all processes on local machine
using System;
using System.Diagnostics;
class MainClass
{
static void Main(string[] args)
{
Process[] runningProcs = Process.GetProcesses(".");
foreach(Process p in runningProcs)
{
string info = string.Format("-> PID: {0}\tName: {1}",p.Id, p.ProcessName);
Console.WriteLine(info);
}
}
}
-> PID: 1636 Name: explorer
-> PID: 1064 Name: svchost
-> PID: 884 Name: svchost
-> PID: 972 Name: svchost
-> PID: 1592 Name: postgres
-> PID: 700 Name: services
-> PID: 1140 Name: svchost
-> PID: 2472 Name: firefox
-> PID: 2560 Name: wuauclt
-> PID: 156 Name: atiptaxx
-> PID: 2908 Name: main
-> PID: 772 Name: wuauclt
-> PID: 1572 Name: ati2evxx
-> PID: 856 Name: cmd
-> PID: 320 Name: cachemgr
-> PID: 2808 Name: uedit32
-> PID: 1472 Name: postgres
-> PID: 848 Name: ati2evxx
-> PID: 1556 Name: postgres
-> PID: 128 Name: SynTPEnh
-> PID: 292 Name: ctfmon
-> PID: 568 Name: smss
-> PID: 656 Name: winlogon
-> PID: 388 Name: ICMON
-> PID: 716 Name: pg_ctl
-> PID: 116 Name: SynTPLpr
-> PID: 1272 Name: svchost
-> PID: 1716 Name: spoolsv
-> PID: 712 Name: lsass
-> PID: 1264 Name: postgres
-> PID: 1348 Name: postmaster
-> PID: 2504 Name: wscntfy
-> PID: 1168 Name: alg
-> PID: 632 Name: csrss
-> PID: 1876 Name: SWNETSUP
-> PID: 2764 Name: SWEEPSRV.SYS
-> PID: 4 Name: System
-> PID: 536 Name: imonitor
-> PID: 624 Name: TNSLSNR
-> PID: 0 Name: Idle
Launch / kill a process
using System;
using System.Diagnostics;
class MainClass
{
static void Main(string[] args)
{
Console.Write("--> Hit a key to launch IE");
Console.ReadLine();
// Launch IE.
Process ieProc = Process.Start("IExplore.exe", "www.nfex.ru");
Console.Write("--> Hit a key to kill {0}...", ieProc.ProcessName);
Console.ReadLine();
try
{
ieProc.Kill();
}
catch{} // In case user already killed it...
}
}
--> Hit a key to launch IE
--> Hit a key to kill IEXPLORE...
List all process threads in current running processes
using System;
using System.Diagnostics;
class MainClass
{
public static void Main()
{
Process[] allProcs = Process.GetProcesses();
foreach(Process proc in allProcs)
{
ProcessThreadCollection myThreads = proc.Threads;
Console.WriteLine("process: {0}, id: {1}", proc.ProcessName, proc.Id);
foreach(ProcessThread pt in myThreads)
{
Console.WriteLine(" thread: {0}", pt.Id);
Console.WriteLine(" started: {0}", pt.StartTime.ToString());
Console.WriteLine(" CPU time: {0}", pt.TotalProcessorTime);
Console.WriteLine(" priority: {0}", pt.BasePriority);
Console.WriteLine(" thread state: {0}", pt.ThreadState.ToString());
}
}
}
}
process: explorer, id: 1636
thread: 1640
started: 16/03/2007 8:42:07 PM
CPU time: 00:01:31.1250000
priority: 8
thread state: Wait
thread: 1932
started: 16/03/2007 8:42:10 PM
CPU time: 00:02:00.9062500
priority: 9
thread state: Wait
thread: 1936
started: 16/03/2007 8:42:10 PM
CPU time: 00:00:00.0156250
priority: 8
thread state: Wait
thread: 1944
started: 16/03/2007 8:42:10 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1952
started: 16/03/2007 8:42:11 PM
CPU time: 00:02:51.6093750
priority: 8
thread state: Wait
thread: 400
started: 16/03/2007 8:42:17 PM
CPU time: 00:00:10.0781250
priority: 8
thread state: Wait
thread: 612
started: 16/03/2007 8:42:24 PM
CPU time: 00:00:00
priority: 15
thread state: Wait
thread: 1696
started: 16/03/2007 8:42:52 PM
CPU time: 00:00:10
priority: 10
thread state: Wait
thread: 2864
started: 16/03/2007 8:44:36 PM
CPU time: 00:42:13.9218750
priority: 8
thread state: Wait
thread: 2868
started: 16/03/2007 8:44:37 PM
CPU time: 00:00:00.0156250
priority: 8
thread state: Wait
thread: 4032
started: 20/03/2007 7:32:28 PM
CPU time: 00:00:00.1250000
priority: 8
thread state: Wait
thread: 208
started: 23/03/2007 8:22:56 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 2684
started: 23/03/2007 8:25:29 PM
CPU time: 00:00:00.0312500
priority: 8
thread state: Wait
thread: 2364
started: 25/03/2007 12:20:21 PM
CPU time: 00:00:14.2812500
priority: 8
thread state: Wait
thread: 3964
started: 25/03/2007 2:25:01 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
process: svchost, id: 1064
thread: 1068
started: 16/03/2007 8:42:03 PM
CPU time: 00:00:00.6562500
priority: 8
thread state: Wait
thread: 1088
started: 16/03/2007 8:42:03 PM
CPU time: 00:00:00.0468750
priority: 8
thread state: Wait
thread: 1092
started: 16/03/2007 8:42:03 PM
CPU time: 00:00:00.0781250
priority: 8
thread state: Wait
thread: 1096
started: 16/03/2007 8:42:03 PM
CPU time: 00:00:39.6093750
priority: 8
thread state: Wait
thread: 1100
started: 16/03/2007 8:42:03 PM
CPU time: 00:00:00.0156250
priority: 8
thread state: Wait
thread: 1132
started: 16/03/2007 8:42:03 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1240
started: 16/03/2007 8:42:04 PM
CPU time: 00:00:00.0312500
priority: 8
thread state: Wait
thread: 1548
started: 16/03/2007 8:42:07 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1560
started: 16/03/2007 8:42:07 PM
CPU time: 00:00:00.1875000
priority: 8
thread state: Wait
thread: 1688
started: 16/03/2007 8:42:08 PM
CPU time: 00:00:00.0468750
priority: 8
thread state: Wait
thread: 1692
started: 16/03/2007 8:42:08 PM
CPU time: 00:00:02.0468750
priority: 8
thread state: Wait
thread: 1700
started: 16/03/2007 8:42:08 PM
CPU time: 00:00:01.5312500
priority: 8
thread state: Wait
thread: 1704
started: 16/03/2007 8:42:08 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1708
started: 16/03/2007 8:42:08 PM
CPU time: 00:00:00.2500000
priority: 8
thread state: Wait
thread: 1772
started: 16/03/2007 8:42:08 PM
CPU time: 00:00:17
priority: 8
thread state: Wait
thread: 1820
started: 16/03/2007 8:42:10 PM
CPU time: 00:01:06.7031250
priority: 8
thread state: Wait
thread: 148
started: 16/03/2007 8:42:15 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 380
started: 16/03/2007 8:42:17 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 392
started: 16/03/2007 8:42:17 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 396
started: 16/03/2007 8:42:17 PM
CPU time: 00:00:00.0156250
priority: 8
thread state: Wait
thread: 424
started: 16/03/2007 8:42:18 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 628
started: 16/03/2007 8:42:24 PM
CPU time: 00:00:00.1093750
priority: 8
thread state: Wait
thread: 1180
started: 16/03/2007 8:42:25 PM
CPU time: 00:00:00.0156250
priority: 8
thread state: Wait
thread: 1184
started: 16/03/2007 8:42:25 PM
CPU time: 00:00:00.0781250
priority: 8
thread state: Wait
thread: 1256
started: 16/03/2007 8:42:26 PM
CPU time: 00:00:01.0156250
priority: 8
thread state: Wait
thread: 1288
started: 16/03/2007 8:42:26 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1076
started: 16/03/2007 8:42:26 PM
CPU time: 00:00:00.0156250
priority: 15
thread state: Wait
thread: 756
started: 16/03/2007 8:42:26 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 812
started: 16/03/2007 8:42:26 PM
CPU time: 00:00:00.0312500
priority: 8
thread state: Wait
thread: 1452
started: 16/03/2007 8:42:29 PM
CPU time: 00:00:01
priority: 8
thread state: Wait
thread: 1456
started: 16/03/2007 8:42:29 PM
CPU time: 00:00:00.1093750
priority: 8
thread state: Wait
thread: 1480
started: 16/03/2007 8:42:33 PM
CPU time: 00:00:00.0468750
priority: 8
thread state: Wait
thread: 1516
started: 16/03/2007 8:42:33 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1312
started: 16/03/2007 8:42:33 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1080
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 940
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00.0156250
priority: 8
thread state: Wait
thread: 1160
started: 16/03/2007 8:42:50 PM
CPU time: 00:00:00.0156250
priority: 9
thread state: Wait
thread: 1364
started: 16/03/2007 8:42:50 PM
CPU time: 00:00:00.0625000
priority: 8
thread state: Wait
thread: 1048
started: 16/03/2007 8:42:50 PM
CPU time: 00:00:00.0156250
priority: 8
thread state: Wait
thread: 1368
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00.9687500
priority: 8
thread state: Wait
thread: 1372
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00
priority: 9
thread state: Wait
thread: 1460
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00
priority: 9
thread state: Wait
thread: 1404
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 968
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1536
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1496
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1488
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1500
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1860
started: 16/03/2007 8:42:51 PM
CPU time: 00:00:00.0468750
priority: 8
thread state: Wait
thread: 2136
started: 16/03/2007 8:42:52 PM
CPU time: 00:00:00.0625000
priority: 8
thread state: Wait
thread: 2148
started: 16/03/2007 8:42:52 PM
CPU time: 00:00:01.1406250
priority: 8
thread state: Wait
thread: 2160
started: 16/03/2007 8:42:53 PM
CPU time: 00:00:00.5156250
priority: 8
thread state: Wait
thread: 2304
started: 16/03/2007 8:42:59 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1600
started: 17/03/2007 8:42:08 AM
CPU time: 00:00:01.6250000
priority: 8
thread state: Wait
thread: 1972
started: 17/03/2007 10:17:18 AM
CPU time: 00:00:01.0156250
priority: 8
thread state: Wait
thread: 1040
started: 19/03/2007 7:39:40 PM
CPU time: 00:00:00
priority: 9
thread state: Wait
thread: 160
started: 20/03/2007 6:05:14 AM
CPU time: 00:00:01.9218750
priority: 8
thread state: Wait
thread: 1024
started: 20/03/2007 9:06:56 PM
CPU time: 00:00:00.0781250
priority: 8
thread state: Wait
thread: 3660
started: 23/03/2007 8:42:51 PM
CPU time: 00:00:00.1406250
priority: 8
thread state: Wait
thread: 2072
started: 24/03/2007 2:36:56 AM
CPU time: 00:00:00.2031250
priority: 8
thread state: Wait
thread: 732
started: 25/03/2007 11:18:24 AM
CPU time: 00:00:00.0781250
priority: 8
thread state: Wait
thread: 3436
started: 25/03/2007 11:37:24 AM
CPU time: 00:00:00.0781250
priority: 8
thread state: Wait
thread: 2016
started: 25/03/2007 12:16:30 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 560
started: 25/03/2007 12:18:49 PM
CPU time: 00:00:00.1718750
priority: 8
thread state: Wait
thread: 2856
started: 25/03/2007 2:10:18 PM
CPU time: 00:00:00.0468750
priority: 8
thread state: Wait
thread: 2528
started: 25/03/2007 2:14:25 PM
CPU time: 00:00:00.0625000
priority: 8
thread state: Wait
thread: 436
started: 25/03/2007 2:16:38 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 3792
started: 25/03/2007 2:17:12 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 4088
started: 25/03/2007 2:17:12 PM
CPU time: 00:00:00.0156250
priority: 8
thread state: Wait
thread: 1828
started: 25/03/2007 2:18:54 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 3148
started: 25/03/2007 2:22:27 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 2320
started: 25/03/2007 2:24:35 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
process: svchost, id: 884
thread: 888
started: 16/03/2007 8:42:00 PM
CPU time: 00:00:00.0312500
priority: 8
thread state: Wait
thread: 908
started: 16/03/2007 8:42:01 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 916
started: 16/03/2007 8:42:01 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1000
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 944
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 948
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1988
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1984
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1980
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1996
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1992
started: 16/03/2007 8:42:49 PM
CPU time: 00:00:00.9062500
priority: 8
thread state: Wait
thread: 2632
started: 16/03/2007 8:44:10 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 3684
started: 18/03/2007 4:15:30 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 3652
started: 18/03/2007 4:15:30 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 1084
started: 25/03/2007 9:31:28 AM
CPU time: 00:00:00.0937500
priority: 8
thread state: Wait
thread: 3008
started: 25/03/2007 1:54:53 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 3456
started: 25/03/2007 2:12:34 PM
CPU time: 00:00:00
^CTerminate batch job (Y/N)? n
Listing processes on a remote machine
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime;
using System.Runtime.rupilerServices;
using System.Security;
public class MainClass
{
public static void Main()
{
Process[] allProcs = Process.GetProcesses("RemoteMachineOnYourNerwork");
foreach (Process p in allProcs)
Console.WriteLine(" -> {0} - {1}", p.ProcessName, p.PeakWorkingSet64);
}
}
Property of current Process
using System;
using System.Diagnostics;
class MainClass
{
public static void Main()
{
Process thisProc = Process.GetCurrentProcess();
Console.WriteLine("ProcessName:"+ thisProc.ProcessName);
Console.WriteLine("Process: {0}, ID: {1}", thisProc.StartTime, thisProc.Id);
Console.WriteLine(" CPU time: {0}", thisProc.TotalProcessorTime);
Console.WriteLine(" priority class: {0} priority: {1}", thisProc.PriorityClass, thisProc.BasePriority);
Console.WriteLine(" virtual memory: {0}", thisProc.VirtualMemorySize);
Console.WriteLine(" private memory: {0}", thisProc.PrivateMemorySize);
Console.WriteLine(" physical memory: {0}", thisProc.WorkingSet);
}
}
ProcessName:main
Process: 25/03/2007 2:25:08 PM, ID: 2968
CPU time: 00:00:00.0312500
priority class: Normal priority: 8
virtual memory: 90906624
private memory: 9187328
physical memory: 4984832
Redirecting Process Output
using System;
using System.Diagnostics;
class MainClass
{
public static void Main()
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/c dir *.cs";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
Console.WriteLine("Output:");
Console.WriteLine(output); }
}
Output:
Volume in drive C has no label.
Volume Serial Number is 8424-900C
Directory of C:\Java_Dev\WEB\dev\CSharp
25/03/2007 12:31 PM 745 Abaseclassreferencecanrefertoaderivedclassobject.cs
25/03/2007 12:31 PM 3,435 AbetterwaytooverloadandforTwoDimension.cs
25/03/2007 12:34 PM 549 AbortaThread.cs
25/03/2007 12:37 PM 970 Aboutathread.cs
Starting a new process.
using System;
using System.Diagnostics;
class MainClass {
public static void Main() {
Process newProc = Process.Start("wordpad.exe");
Console.WriteLine("New process started.");
newProc.WaitForExit();
newProc.Close(); // free resources
Console.WriteLine("New process ended.");
}
}
New process started.
New process ended.
Starting Processes by using ProcessStartInfo
using System.Diagnostics;
class MainClass
{
public static void Main()
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "notepad.exe";
startInfo.Arguments = "yourFile.cs";
Process.Start(startInfo);
}
}
Threads in Current Process
using System;
using System.Diagnostics;
class MainClass
{
public static void Main()
{
Process thisProc = Process.GetCurrentProcess();
ProcessThreadCollection myThreads = thisProc.Threads;
foreach(ProcessThread pt in myThreads)
{
Console.WriteLine("thread: {0}", pt.Id);
Console.WriteLine(" started: {0}", pt.StartTime);
Console.WriteLine(" CPU time: {0}", pt.TotalProcessorTime);
Console.WriteLine(" priority: {0}", pt.BasePriority);
Console.WriteLine(" thread state: {0}", pt.ThreadState);
}
}
}
thread: 4064
started: 25/03/2007 2:25:08 PM
CPU time: 00:00:00.0312500
priority: 8
thread state: Running
thread: 440
started: 25/03/2007 2:25:08 PM
CPU time: 00:00:00
priority: 8
thread state: Wait
thread: 2444
started: 25/03/2007 2:25:08 PM
CPU time: 00:00:00
priority: 10
thread state: Wait