Tool for viewing processes and DLL modules in use.

The main program window

The main window of the application displays a list of all processes that have been loaded. When you select a process, the right pane shows detailed process information and a list of libraries loaded by it. For each loaded library the application displays the preferred base address (the address the library was built with) and the real base address (the one the library was loaded at).

It is important to assign a libary a unique base address, because operating system will relocate a library if it is not possible to load it at its preferred address. Which, in turn, slows down application startup and wastes physical memory.

ProcessExplorer helps one to avoid such situations. So, for example, the picture above shows that WinAmp, a very popular media player, violates this rule big time.

ProcessExplorer is based on the idea and code from a book by Jeffrey Richter called "Advanced Windows". I ported the code onto Delphi (compiles in Delphi 6 and 7). You can use its code as an example of using ToolHelp API functions.


ProcessExplorer uses ToolHelp API functions, which allows it to run under Windows 95/98/ME/2000/XP, but not NT 4.

In order to compile the program from source, you will need a shareware Toolbar 2000 component library by Jordan Russel.


Source Code

To download the latest source code, clone my GitHub repository:

git clone


This software is subject to the GNU General Public License version 3.0, or (at your option) any later version.

Software and any related documentation are provided on an as is basis, without warranty of any kind. The entire risk arising out of use or performance of the software remains with you.