WindList   Guide   by techkn@ck    
downloads Download with full source
Download and install just the executable and help
Download or run just the executable file
General download help
Installation Files Enter code to create installation files:

Lists all the current windows showing Class, Handle, Process, Thread, Title, and Visibility.
[N.B. 'Visible' means 'capable of being seen'. A 'visible' window may be obscured by other windows.]

It is surprising just how many windows there are on the average screen.
Whether you are wondering what happened to the window or control you just created, or you want to track down the source of a persistent pop-up, or the PC is running slowly for no apparent reason, or just out of curiousity, run the WindList program for a full list of the windows (visible and invisible).

[N.B. There has to be some limit on the number of windows the program can manage. This has been set at 2000.
If there are more than 2000, only the first 2000 will be displayed (and the window heading will be "WindList: New 2000; ...").
To increase the limit, change MAX_WINDOWS in WindListDlg.h, and rebuild.]

WindList just views the windows data. The windows are not affected in any way.


Menu

Sort - the list can be sorted on any of the columns.

View / Refresh - refreshes the list, compares it with the previous list, and sets the Age column to:
New if the window was not in the previous list.
Old if the window was in the previous list, but no longer exists.
( - windows marked as Old in the previous list are removed from the list.)
Blank if the window was in the previous list, and still exists.

vsn 1.0, techkn@ck - Support - just goes to the techkn@ck web site.
For support on bug fixes or extensions on this or other software, please email mike@chelys.demon.co.uk.

File - Exit exits the program.

Columns

Class

Every window has a class, which specifies such things as the menu, background colour, etc.
Some obvious classes are: ListBox; ComboBox; Scrollbar; Button; Edit.
Less obvious are: Static (- usually just a lump of text); ComboLBox (- the drop-down list contained in a Combo Box).
And even less obvious: #32768 (menus); #32769 (desktop window); #32770 (dialog box); DDEMLEvent (Dynamic Data Exchange Management Library - conversations between processes).

Window Classes in Win32 by Kyle Marsh of the Microsoft Developer Network Technology Group, gives a good description of what Window Classes are all about.

Age

See Refresh above.

Handle

This is the ubiquitous hWnd that is a parameter to just about every function to do with a window.

Process

The process that created the window. (A process is an executing program, and comprises one or more threads.)
To find the .exe corresponding to a process id:
Start the Windows Task Manager (press Ctrl Alt Del together).
Click the Processes tab.
Click View in the menu, and click Select Options... in the drop-down menu.
Ensure that PID (Process Identifier) is checked.
Click OK.

[There are several things that can be displayed in the Processes tab of the Windows Task Manager
(By default, The Image Name, User Name, CPU Usage, and Memory Usage are displayed):
Image Name The name of the .exe file.
The path is not displayed. Several of them may be in C:\Windows\system32.
To find the path, run the Windows System Information program
(- usually (for XP) by clicking Start | All Programs | Accessories | System Tools | System Information | Software Environment | Running Tasks)
which has a column with the paths. Also see the Loaded Modules and Services sections of the Software Environment.
Even System Information is not very informative about the svchost.exe tasks (services that run from DLLs), and there are usually several of these running.
Start | Run.. | type Regedit and navigate to
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\SvcHost
for a list of the SvcHost groups and the services in each, and to
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ for details on each service.
Except for XP Home, Start | Run... | type TaskList /SVC will include SvcHost in a list the PIDs and active services.
- for XP Home, download TaskList.exe from e.g. ComputerHope, and run it in a DosBox.
- Typical list (plus 2 columns from Windows Task Manager) is:
Image name PID Services User Name Mem Usage
svchost.exe 804 DcomLaunch TermService SYSTEM 1,752K
svchost.exe 948 RpcSs NETWORK SERVICE 1,756K
svchost.exe 1120 see below SYSTEM 59,072K
svchost.exe 1196 Dnscache NETWORK SERVICE 2,148K
svchost.exe 1360 LmHosts SSDPSRV upnphost LOCAL SERVICE 2,080K
svchost.exe 532 WebClient LOCAL SERVICE 140K
svchost.exe 2112 stisvc SYSTEM 2,108K
svchost.exe 2976 HTTPFilter SYSTEM 224K
svchost.exe 4736 hpqcxs08 SYSTEM 112K
The services for the PID 1120 in the list above are:
AudioSrv - audio management.
BITS - Background Intelligent Transfer Service: transfers files in the background using idle network bandwidth.
Used by Windows Update, MSN Explorer. See The Elder Geek : may generate traffic on its own.
[The BITS service has been a cause of some PCs suddenly running very slowly, with this svchost process doing many disk transfers and taking nearly all the CPU time.
See e.g. Windows XP taken over by svchost.exe and techguy: Help needed with excessive disk activity....
For Vista, see BITS Repair Tool for Windows Vista (KB940520) or An update is available to fix a Background Intelligent Transfer Service (BITS) crash on a Windows Vista-based computer.
Or set updates to Manual: Start | Control Panel ! Automatic Updates | Notify but do not download.]
Browser - lists computers on the network.
CryptSvc - confirms signatures of Windows files; manages Trusted Root Certification; enrolls this PC for certificates.
Dhcp - registers and updates IP addresses and DNS names.
ERSvc - Error Reporting.
EventSystem - logs events, Cannot be stopped. Log viewable by clicking Start | Control Panel | Administrative Tools and double clicking Event Viewer.
FastUserSwitchingCompatibility - management for applications in a multiple user environment.
If there is only one user on the system, this can be disabled.
helpsvc - Help and Support Center.
HidServ - Human Interface Devices: hot buttons, remote controls etc.
lanmanserver - LAN server.
lanmanworkstation - network connections for XP Pro and Windows Server 2003.
Netman - Network and Dial-Up Connections.
Nla - Network Location Awareness: network configuration and location.
RasAuto - Remote Access AutoDial Manager: maintains network addresses.
RasMan - Remote Access Service Manager: 'dial-up' connections, but required for most RAS, ADSL or Cable connections..
Schedule - automated tasks.
seclogon - Secondary Logon: processes starting under alternate credentials (i.e. as a different user: e.g. runas /user:username cmd).
SENS - System Event Notification Service.
SharedAccess - Internet Connection Sharing; and Windows Firewall/Interent Connection Firewall.
ShellHWDetection - Autoplay notifications.
TapiSrv - Telephony API.
Themes - theme management.
TrkWks - tracking links to files.
W32Time - synchronizes a time server with an outside time source.
winmgmt - Windows managemet Instrumentation Service. Use WMI scripting to get PC info.
wscsvc - Windows Security Centre Service.
wuauserv - Windows Automatic Update Service.
WZCSVC - Wireless Zero Configuration: auto config 802.11 adapters.
For a description of most of the services, and to start or stop them, click Start | Control Panel | Administrative Tools, and double click Services.
PID (Process Identifier) A numerical value given to the process while it is running.
CPU Usage The percentage CPU time used by process since the last update.
(Click Performance View Update Speed to change the update rate.)
CPU Time The CPU time the process has used since starting.
Memory Usage The amount of main memory used by the process in kilobytes.
Memory Usage Delta The change in Memory Usage since the last update.
Peak Memory Usage The maximum amount of memory used by the process since the Task Manager started.
Page Faults The number of page faults caused by the process since it started.
There can be a lot of these, mostly caused intentionally.
A page fault occurs when a process tries to access data not in its current working set, and has to go to a new RAM area or to RAM data stored on disc.
Page Faults Delta The change in the number of page faults since the last update.
User Objects Number of internal Windows Manager objects (like windows) in use by the process.
I/O Reads since the process began.
I/O Read Bytes since the process began.
I/O Writes since the process began.
I/O Write Bytes since the process began.
I/O Other seeks, network I/O, etc. since the process began.
I/O Other Bytes since the process began.
Virtual Memory Size How much this process is using of the Pagefile (an area of disc reserved for swapping RAM data in and out of physical memory).
Paged Pool How much this process is using of the Paged Pool (data queued up for writing to the Pagefile).
Nonpaged Pool How much memory this process is using that cannot be swapped out to disc.
Base Priority The execution priority of the process's threads.
Handle Count The number of handles (many things, such as file I/O, require a 'handle') in the process's object table.
Thread Count The number of threads running under the process.
GDI/GDI+ Objects Number of Grapics Device Interface objects the process is using.
GDI does the low level graphics, such as drawing lines and curves, and rendering fonts and colours.>
GDI+ introduced with Windows XP, is a considerable extension of GDI, but considerably slower.

Thread

The thread that created the window. (A thread executes the process code.)

Title

What appears in the title bar (if there is one) at the top of the window.

Visibility

V( 111, 222 )-( 333, 444 ) - The window is capable of being seen, but may be partially or totally obscured by other windows.
N.B. the second coordinate of each pair is the distance from the top of the screen, the reverse of a normal "y" coordinate.
The two pairs of coordinates are the screen positions in pixels of the top left and bottom right corners.
The top left corner coordinates may be negative (i.e. top left corner is off the screen),
and the bottom right coordinates may exceed the screen size.
Maximised windows often have the top left corner coorsdinates slightly negative, e.g. (-4,-4).
To assist in locating coordinate positions on the screen, the small program ScreenPosn.exe displays its own position in a small window which can be dragged whereever required..

Hidden - the window is not capable of being seen.

Hidden (GDI) - Each GDI+ (Microsoft Graphics Device Interface) instance contains a hidden top-level window. See above.

H( 111, 222 )-( 333, 444 ) - the window is marked as being hidden, but a position on the screen has also been given.

Minimised - The window is currently minimised.


Files in the downloads

The minimum download installs the following files in the WindList folder:

Resize.html Description of the module that resizes the controls when the window size or shape is changed.
WindList.gif Icon used in help files
WindListHelp.html WindList help file
WindList1.gif Screenshot displayed in help file
WindListMin.bat Batch file which reinstalls WindList in the Start Menu etc.
WindListMin.xml XML control file to reinstall WindList in the Start Menu etc.
WindListUnst.xml XML control file to uninstall WindList
XBatch.exe General purpose program which executes XML control files
Release\WindList.exe The main executable. This could be downloaded and run on its own.
RES\WindList.ico WindList execution icon, used in Start Menu etc.
RES\WindListUnst.ico WindList uninstall icon, used in Start Menu etc.


Windlist is an MSDEV project, compiled using Microsoft Visual C++ vsn 6.
The full source download includes the above files, plus:
WindList.clw Created and used by MSDEV ClassWizard to edit/add classes.
Not needed if not using the ClassWizard.
WindList.dsw Double click on this, or select it from MSVC, to open the project.
WindList.dsp Project data.
WindListDlg.cpp
WindListDlg.h
The main source files.
Created by MSDEV and extended to handle all the controls.
WindList.cpp
WindList.h
WindList start up. Created by MSDEV. Not edited.
WindList.rc Resources used by WindList: controls and icons. Created by MSDEV.
WindList.rc2 Manually edited resources. Created by MSDEV,
but not edited because there are no such resources.
StdAfx.cpp
StdAfx.h
Global constants and switches. Created by MSDEV. Not edited.
Resource.h Constants for the various controls. Created by MSDEV. Not edited directly.
ReadMe.txt Help file describing some of the MSDEV files. Created by MSDEV. Not edited.
Resize.cpp
Resize.h
Module that resizes the controls when the window size or shape is changed.
WindList.opt Project options. Created by MSDEV. Not edited directly.
WindListAll.bat Batch file which reinstalls WindList in the Start Menu etc.
(Same as WindListMin.bat)
WindListAll.xml XML control file to reinstall WindList in the Start Menu etc.
(Same as WindListMin.xml)

For a description of the MSDEV files that are generated by the compiler, and therefore (except for the executable) not included in the download, see the C++ Programs help file.