I needed to be able to terminate all the processes in a specific folder.
Process class in the .NET Compact Framework is limited in its functionality. You cannot even enumerate processes. You can find code to do this on the Internet, but all the samples I found only return the name of the EXE file of a process. What I needed was the full path to the EXE file.
After some research, I found the solution. I wrapped the result into the
What can the
ProcessCE class do for you?
- Enumerate running processes;
- Each enumerated process contains the full path to the EXE file;
- Check in a single function call if a process is running by specifying the full path to the EXE file;
- Kill a process in a single function call by specifying the full path to the EXE file;
- Find the Process ID (PID) in a single function call by specifying the full path to the EXE file.
This code is based on several code snippets and examples I found on the Internet.
Using the code
ProcessCE class is straightforward and easy to use. Download ProcessCE.zip and add the containing ProcessCE.cs file to your project. Then, add the following
using statement to the source file where you want to use the class:
To enumerate running processes:
ProcessInfo list = ProcessCE.GetProcesses();
foreach (ProcessInfo item in list)
Debug.WriteLine("Process item: " + item.FullPath);
if (item.FullPath == @"\Windows\iexplore.exe")
To check if a process is running:
bool result = ProcessCE.IsRunning(@"\Windows\iexplore.exe");
To find a Process ID (PID):
IntPtr pid = ProcessCE.FindProcessPID(@"\Windows\iexplore.exe");
if (pid == IntPtr.Zero)
throw new Exception("Process not found.");
To terminate a process:
bool result = ProcessCE.FindAndKill(@"\Windows\iexplore.exe");
ProcessCE.FindAndKill() will return
false if the EXE file was not found. If terminating the process fails, it will throw a
Points of interest
This code is for use with Windows CE and Windows Mobile only. The code was tested on Windows Mobile 6.1 (Windows CE 5.2). Windows CE 4 should be no problem.
Tip: A code example to enumerate processes that can be found on several websites was crashing randomly with Win32 error 8 on several devices. This is an out of memory message. The solution is to add the
TH32CS_SNAPNOHEAPS flag to the
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS | TH32CS_SNAPNOHEAPS, 0)
- 30 May 2009 - Article submitted.