Here comes my obligatory python answer:
There is a python library called psutil which gives you full programmatic access to the running processes, and a lot more, from the command line or REPL.
- Open Source - BSD Licence
- List Processes & Resources Yes
- Allow you to write your own UI Yes
- Also allows control of processes.
- Not just Windows Windows, macOS, Linux, FreeBSD, OpenBSD, NetBSD, Solaris, AIX
- 32 & 64 bit
- There are a number of projects which add a GUI to it
- Nice documentation
- Lots of other functionality.
In [1]: import psutil
In [2]: proc = psutil.Process()
In [3]: pd = proc.as_dict()
In [4]: pd.keys()
Out[4]: dict_keys(['cmdline', 'memory_full_info', 'num_threads', 'username', 'name', 'num_handles', 'open_files', 'memory_percent', 'pid', 'create_time', 'memory_maps', 'connections', 'exe', 'nice', 'cpu_times', 'environ', 'ionice', 'cwd', 'io_counters', 'cpu_percent', 'num_ctx_switches', 'threads', 'cpu_affinity', 'memory_info', 'ppid', 'status'])
In [5]: proc.exe()
Out[5]: 'C:\\python36_64\\python.exe'
In [6]: proc.memory_full_info()
Out[6]: pfullmem(rss=71438336, vms=61792256, num_page_faults=36033, peak_wset=71516160, wset=71438336, peak_paged_pool=190608, paged_pool=190312, peak_nonpaged_pool=43952, nonpaged_pool=41648, pagefile=61792256, peak_pagefile=61939712, private=61792256, uss=64483328)
It can even handle Windows services:
In [7]: services = list(psutil.win_service_iter())
In [8]: services
[<WindowsService(name='ABBYY.Licensing.ScreenshotReader.Windows.11.0', display_name='ABBYY Screenshot Reader 11 - Licensing Service') at 1163743151384>,
<WindowsService(name='AJRouter', display_name='AllJoyn Router Service') at 1163743153008>,
<WindowsService(name='ALG', display_name='Application Layer Gateway Service') at 1163743151832>,
<WindowsService(name='AMD External Events Utility', display_name='AMD External Events Utility') at 1163743153904>,
<WindowsService(name='AppIDSvc', display_name='Application Identity') at 1163743152504>,
<WindowsService(name='Appinfo', display_name='Application Information') at 1163743151496>,
<WindowsService(name='AppMgmt', display_name='Application Management') at 1163743152000>,
...................
In [10]: s = services[0]
In [11]: s.name(), s.pid()
Out[11]: ('ABBYY.Licensing.ScreenshotReader.Windows.11.0', 4508)
In [12]: sp = psutil.Process(4508)
In [13]: sp.cpu_percent()
Out[13]: 0.0
In [14]: sp.cmdline()
Out[14]:
['C:\\Program Files (x86)\\Common Files\\ABBYY\\ScreenshotReader\\11.00\\Licensing\\NetworkLicenseServer.exe',
'-service']