Csharp/CSharp Tutorial/Development/Process — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 12:14, 26 мая 2010
Содержание
- 1 All current running processes
- 2 Change priority for current process
- 3 Detecting Process Completion
- 4 Enumerate over mods in a given PID
- 5 Enumerate over threads in a given PID
- 6 Get all processes on local machine
- 7 Launch / kill a process
- 8 List all process threads in current running processes
- 9 Listing processes on a remote machine
- 10 Property of current Process
- 11 Redirecting Process Output
- 12 Starting a new process.
- 13 Starting Processes by using ProcessStartInfo
- 14 Threads in Current Process
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