Contents
Spy++

General Information

  About Spy++

  The Three Spy++ System Views

  Process Details

  Thread Details

  Window Details

  Window Class Details

How To Use Spy++

  Saving System View Positions and Opening New System Views

  Controlling Refresh Rates and Changing Window Fonts

  Selecting a Window by Mouse Positioning

  Opening a Window Message Stream Window

  Starting and Stopping the Message Stream

  Choosing Message Filters

  Choosing Window Filters

  Choosing Output Filters

  Selecting WinHelp Jumps from a Window


Copyright Notice
Copyright Notice for Spy++ Help

Information in this document is subject to change without notice. Companies, names, and data used in examples herein are fictitious unless otherwise noted. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without express written permission of Microsoft Corporation.

© 1993 Microsoft Corporation. All rights reserved.

Microsoft is a registered trademark and Windows and Windows NT are trademarks of Microsoft Corporation.


About Spy++

Microsoft® Spy++ (SPYXX.EXE) is a Windows NT™ utility that gives you a graphical view of the system's processes, threads, windows, and window messages. Spy++ offers the following features:

The familiar multiple document interface (MDI) for Windows

Three different outline views that show relationships among processes, threads, and windows

Window selection from the outline view or by direct mouse positioning

Hot key access to detailed information on selected items

A variety of easy-to-use message viewing options with parameter decoding

Be aware that Spy++ is a read-only program. Using Spy++ does not change the operation of your programs, but message viewing can cause those programs to execute more slowly.

Other Spy Programs

Spy++ supersedes two earlier spy programs. You may be curious about how Spy++ relates to spy programs you've used before.

SPY.EXE, version 3.1, delivered with the Windows 3.x Software Development Kit (SDK) and with Visual C++ for Windows 3.x, works inside the Windows on Win32 (WOW) subsystem. Use SPY.EXE version 3.1 only on Windows 3.x programs when you need to see hexadecimal 16-bit message parameters. You can use SPYXX.EXE with Windows 3.x programs, but the messages you see will have been converted (by WOW) to 32-bit Windows NT messages.

SPY.EXE version 3.2, delivered with the Windows NT Professional Development Kit (PDK), works with all Windows NT and Windows 3.x applications. If you have been using SPY.EXE version 3.2, you should switch over to SPYXX.EXE, which has many new features. SPYXX.EXE also includes many of the features of PVIEW.EXE, another PDK utility. PVIEW can update process information, however; SPYXX cannot.


The Three Spy++ System Views

When Spy++ executes for the first time, it immediately presents you with three MDI child windows, each containing a different Windows NT system view. What's a system view and why are there three? To answer this question, start with the most complete system view, the System Process Tree.

The System Process Tree

If you've studied the architecture of Windows NT, you'll know that the system supports multiple processes. Each process can have one or more threads, and each thread can have one or more associated top-level windows. Each top-level window can have a series of child windows arranged in hierarchical order. Figure 1 shows the Spy++ representation of the System Process Tree with all levels expanded.

If you've used outlining software before, you'll understand the concept of expanding and collapsing levels. Although you can use the Tree menu to control the display, it's often easier to click the mouse on the minus symbol to collapse a level. A plus symbol indicates that a level is already collapsed. Click on the plus symbol to expand the level. You must use the Tree menu Collapse All choice, however, if you want to collapse all processes.

Use the System Process Tree if you want to examine a particular system process, which usually corresponds to an executing program. Processes are identified by .EXE names, or they are designated system processes. To find a process, collapse the tree and visually search through the list.

The System Thread Tree

The System Thread Tree is a flat listing of all threads with associated windows. Processes are not included. Use the System Thread Tree if you are searching for a particular thread.

The System Window Tree

The System Window Tree shows only windows. At the top of the window tree is the current desktop window. All other windows are children of the desktop. You can collapse and expand the whole tree by clicking on the minus or plus symbols for the top level window.

The Window Tree view is most useful if you need to find a particular window. If you start with a tree expanded at the second level (all windows that are children of the desktop), then you can identify a desired desktop-level window by its class name and title. Once you've found the desktop-level window, you can expand the level to find a specific child window.


Process Details

Note  The mouse double-click is not the only method of opening a Process Details window. You can also open the window by (1) single-clicking on the process ID and (2) choosing Open Process Details from the Object menu.

 The Process Details entries are described below:

ID Process

The unique ID of this process. Process ID numbers are reused, so they identify a process only for the lifetime of that process. The Process object type is created when a program is run. All the threads in a process share the same address space and have access to the same data.

Executable

The name of the executable program.

ID Parent Process

Process ID for the parent process.

Priority Base

The current base priority of this process. Threads within a process can raise and lower their own base priority relative to the process's base priority.

User Time

The cumulative elapsed time that this process's threads have spent executing code in User Mode in non-idle threads. Applications execute in User Mode, as do subsystems such as the window manager and the graphics engine. Code executing in User Mode cannot damage the integrity of the Windows NT Executive, Kernel, and device drivers.

Privileged Time

The total elapsed time this process has been running in Privileged Mode in non-idle threads. The Windows NT service layer, the Executive routines, and the Windows NT Kernel execute in Privileged Mode. Device drivers for most devices other than graphics adapters and printers also execute in Privileged Mode. Some work done by Windows NT on behalf of your application may appear in other subsystem processes in addition to the Privileged Time in your process.

Elapsed Time

The total elapsed time this process has been running.

Virtual Bytes

The current size (in bytes) of the virtual address space the process is using. Use of virtual address space does not necessarily imply corresponding use of either disk or main memory pages. However, virtual space is finite, and using too much may limit the ability to load libraries.

Virtual Bytes Peak

The maximum number of bytes of virtual address space the process has used at any one time. Use of virtual address space does not necessarily imply corresponding use of either disk or main memory pages. However, virtual space is finite, and using too much may limit the ability of the process to load libraries.

Page Faults

The number of Page Faults by the threads executing in this process. A page fault occurs when a thread refers to a virtual memory page that is not in it's working set in main memory. Thus, the page will not be retrieved from disk if it is on the standby list and hence already in main memory, or if it is being used by another process with whom the page is shared.

Working Set

The set of memory pages touched recently by the threads in the process. If free memory in the computer is above a threshold, pages are left in the Working Set of a process even if they are not in use. When free memory falls below a threshold, pages are trimmed from Working Sets. If they are needed they will then be soft-faulted back into the Working Set before they leave main memory.

Working Set Peak

The maximum number of pages in the working set of this process at any point in time. The working set is the set of memory pages touched recently by the threads in the process.

Read Operations

The total number of read operations on file system devices issued by the threads in this process.

Write Operations

The total number of write operations on file system devices issued by threads in this process.

Other Operations

The total number of non-read and non-write operations on file system devices issued by threads in this process. Peripheral control and status calls fall into this category.

Read Transfers

The total number of bytes transferred by read operations issued by threads of this process on file system devices.

Write Transfers

The total number of bytes transferred by write operations issued by threads in this process to file system devices .

Other Transfers

The total number of bytes transferred to file system devices by non-read and non-write operations issued by threads in this process. Peripheral control and status calls fall into this category.

Pool Paged Bytes

The current amount of paged pool the process has allocated. Paged pool is a system memory area where space is acquired by operating system components as they accomplish their appointed tasks. Paged pool pages can be paged out to the paging file when not accessed by the system for sustained periods of time.

Pool Paged Peak

The maximum amount of paged pool the process had allocated at any one time. Paged pool is a system memory area where space is acquired by operating system components as they accomplish their appointed tasks. Paged pool pages can be paged out to the paging file when not accessed by the system for sustained periods of time.

Pool Nonpaged Bytes

The current amount of nonpaged pool allocated by the process. Nonpaged pool is a system memory area where space is acquired by operating system components as they accomplish their appointed tasks. Nonpaged pool pages cannot be paged out to the paging file; they remain in main memory as long as they are allocated.

Pool Nonpaged Peak

The maximum amount of nonpaged pool the process had allocated at any one time. Nonpaged pool is a system memory area where space is acquired by operating system components as they accomplish their appointed tasks. Nonpaged pool pages cannot be paged out to the paging file; they remain in main memory as long as they are allocated.

Page File Bytes

The current number of pages that this process is using in the paging file. The paging file stores pages of data used by the process but not contained in other files. The paging file is used by all processes, and lack of space in the paging file can prevent other processes from running without error.

Page File Bytes Peak

The maximum number of pages that this process has used in the paging file. The paging file stores pages of memory used by the process but not contained in other files. All processes use the paging file, and lack of space in the paging file can prevent other processes from running without error.

Private Bytes

The current number of pages this process has allocated that cannot be shared with other processes.


Thread Details

Note  The mouse double-click is not the only method of opening a Thread Details window. You can also open the window by (1) single-clicking on the thread ID and (2) choosing Open Thread Details from the Object menu.

 The Thread Details entries are described below:

ID Thread

The unique ID of this thread. Note that thread ID numbers are reused; they identify a thread only for the lifetime of that thread.

ID Process

The process ID for the owner of this thread.

Executable

The name of the executable program.

Priority Current

The current dynamic priority of this thread. Threads within a process can raise and lower their own base priority relative to the process's base priority.

Priority Base

The current base priority of this process.

Thread State

The current state of the thread. It is 0 for Initialized, 1 for Ready, 2 for Running, 3 for Standby, 4 for Terminated, 5 for Wait, 6 for Transition, 7 for Unknown. A Running thread is using a processor; a Standby thread is about to use one. A Ready thread wants to use a processor, but is waiting for a processor because none are free. A thread in Transition is waiting for a resource in order to execute, such as waiting for its execution stack to be paged in from disk. A Waiting thread has no use for the processor because it is waiting for a peripheral operation to complete or a resource to become free.

Thread Wait Reason

This is only applicable when the thread is in the Wait state. It is 0 or 7 when the thread is waiting for the Executive, 1 or 8 for a Free Page, 2 or 9 for a Page In, 3 or 10 for a Pool Allocation, 4 or 11 for an Execution Delay, 5 or 12 for a Suspended condition, 6 or 13 for a User Request, 14 for an Event Pair High, 15 for an Event Pair Low, 16 for an LPC Receive, 17 for an LPC Reply, 18 for Virtual Memory, 19 for a Page Out; 20 and higher are not assigned at the time of this writing. Event Pairs are used to communicate with protected subsystems.

Context Switches

The number of switches from one thread to another. Thread switches can occur either inside a single process or across processes. A thread switch may be caused by one thread asking another for information, or by a thread being preempted when a higher priority thread becomes ready to run.

Start Address

Starting virtual address for this thread.

User PC

Current virtual address for this thread.

User Time

The total elapsed time that this thread has spent executing code in User Mode. Applications execute in User Mode, as do subsystems like the window manager and the graphics engine.

Privileged Time

The total elapsed time that this thread has spent executing code in Privileged Mode. When a Windows NT system service is called, the service will often run in Privileged Mode to gain access to system-private data. Such data is protected from access by threads executing in User Mode. Calls to the system may be explicit, or they may be implicit, such as when a page fault or an interrupt occurs.

Elapsed Time

The total elapsed time (in seconds) this thread has been running.


Window Details

Note  The mouse double-click is not the only method of opening a Window Details window. You can also open the window by (1) single-clicking on the window handle and (2) choosing Open Window Details from the Object menu.

 The Window Details entries are described below:

Window Handle

The unique ID of this window. Window handle numbers are reused; they identify a window only for the lifetime of that window.

Text

The window caption.

Window Class

The name of the window class associated with this window.

Window Procedure

The virtual address of the window procedure function for this window. This field also indicates whether this window is a Unicode window.

Style

A combination of window style codes.

Extended Style

A combination of extended window style codes.

Rectangle

The bounding rectangle for the window. The size of the rectangle is also displayed. Units are pixels in screen coordinates.

Restored Rectangle

This field appears only if the window has been maximized. Units are pixels in screen coordinates.

Client Rectangle

The bounding rectangle for the window client area. The size of the rectangle is also displayed. Units are pixels relative to the top left of the window.

Window Extra Bytes

The number of extra bytes associated with this window. The meaning of these bytes is determined by the application. Expand the level to see the byte values in DWORD format.

Next Window

The handle of the next sibling window in the same sequence shown in the system view (null if no next window).

Previous Window

The handle of the previous sibling window in the same sequence shown in the system view (null if no previous window).

First Child

The handle of this window's first child window, in the sequence shown in the System Window Tree window (null if no child windows).

Parent Window

The handle of this window's parent window (null if no parent).

Owner Window

The handle of this window's owner window. An application main window typically owns system-modal dialog windows, for example.

ID Process

The ID of the process that owns the thread that created this window.

ID Thread

The ID of the thread that created this window.

Menu Handle or Control ID

If the window being displayed is a child window, the Control ID label is displayed. Control ID is an integer that identifies this child window's control ID (0 if the window is a top-level window). If window being displayed is not a child window, the Menu Handle label is displayed. Menu Handle is an integer that identifies this window's control ID (0 if the window is a top-level window).

User Data

Application-specific data that is attached to this window structure.

Instance Handle

The instance handle of the application. Instance handles are not unique.


Window Class Details

Note  The mouse double-click is not the only method of opening a Window Class Details window. You can also open the window by (1) single-clicking on the window class name and (2) choosing Open Window Class Details from the Object menu.

 The window class detail entries are described below:

Window Class

The name (and identifier) for this window class.

ID Process

In Windows NT, a process gets a copy of a window class on startup, and the process can then modify this copy without affecting other applications. Thus the class structure contains a pointer (Process ID) back to its process.

Style

The style code for this window class

Window Procedure

The current address of the WndProc function for windows of this class.

Class Extra Bytes

Application-specific data associated with this window class.

Window Extra Bytes

Application-specific data associated with windows of this class.

Instance Handle

The instance handle of the module that registered the class. Instance handles are not unique.

Icon Handle

The handle for the icon that is associated with windows of this class.

Cursor Handle

The handle for the cursor that is associated with windows of this class.

Background Brush

The handle for the background brush that is associated with windows of this class, or one of the predefined COLOR_* colors for painting the window background.

Menu Name

The name of the main menu that is associated with windows of this class.


Saving System View Positions and Opening New System Views

Spy++ "remembers the presence and positions of your system view windows. If you delete the System Thread Tree, for example, and then tile the System Process Tree and System Window Tree, Spy++ will save that information when you exit. The next time you run Spy++, you will see the same window layout.

  To recall a deleted system view:

1.	From the Object menu, choose Open System View.

The Open System View dialog appears.

2.	Choose the view type from the list box.

You can display multiple system view of the same type.


Controlling Refresh Rates
Controlling Refresh Rates and Changing Window Fonts

Spy++ takes a snapshot of the system tables and refreshes a view based on this information. You can control this refresh process from the Window menu as follows:

Menu choice	Function key	Description
Refresh	F5	Refresh only the selected view now.
Auto Refresh	CTRL++R	Turn on auto refresh for this view. The refresh rate is controlled from the Options menu.
Refresh All	CTRL+F5	Refresh all views now.
It is important that your system views are refreshed periodically. If you open a Spy++ system view with auto refresh turned off, then you won't see those processes, threads, and windows that were initialized afterwards. You will also see items that have ceased to exist. If you turn on auto refresh for a system view, Spy++ will save the auto-refresh state and restore it the next time you run the program.

  To edit Auto Refresh Rate options:

1.	From the Options menu, choose Font.

The Auto Refresh Rate dialog appears.

2.	Choose a refresh rate (in tenths of a second) for all windows with Auto Refresh turned on.

You can also change the font and font size for all Spy++ windows.

  To change font options:

1.	From the Options menu, choose Font.

The Font dialog appears.

2.	Choose a font and font size.

3.	Choose OK.


Selecting a Window by Mouse Positioning

You can select a visible window with the mouse.

  To select a visible window with the mouse:

1.	Arrange your windows so that Spy++ and the subject window are both visible on the desktop.

2.	From the Object menu, choose Find Window.

The Find Window dialog appears

3.	Drag the Finder Tool to the subject window, then release the mouse.

Finder Tool:

4.	Click OK to bring up the corresponding Window Details window.


Opening a Window Message Stream Window

Each window has an associated message stream. Spy++ allows you to view this message stream in a Window Message Stream window. You can use any of three methods for selecting windows for message stream viewing. You can then apply filtering and formatting specifications to the messages.

  The three methods for selecting a window for message stream viewing:

A shift-double-click on a hexadecimal window handle hot link in a Spy++ system view or Window Details window.

A single-click to select a window handle hot link, followed by the selection of the Open Window Message Stream choice from the Object menu.

Use of the Find Window dialog box with the Window Message Stream option set.

In a Window Message Stream window, the first column contains the window handle and the second column contains a message code. Decoded message parameters and return values are on the right.

Spy++ gives you control over the content of the Window Message Stream window. You can start and stop the message stream at any time, specifying:

Which message types you want to se.

Which windows you want to monitor

The display format for message lines


Starting and Stopping the Message Stream

When a Window Message Stream window is active, a Stop! choice appears in the Spy++ top-level menu:

Choosing Stop! suspends the message stream. The menu item is replaced with a Start! choice.

Choosing Start! restarts the message stream.


Choosing Message Filters

When you choose Message Filters from the View menu (this choice is present only when a Window Message Stream window is active), Spy++ displays the Message Filters dialog box.

You use this dialog box to select message types for viewing. First select message groups, then fine-tune the selection by selecting and deselecting individual message types. The All button selects all message groups, and the None button clears all groups.

Note  The last three entries in the Message Group area, WM_USER, Registered, and Undocumented, do not map to specific entries in the Messages to View area. If you select those groups, the selection is applied directly to the message stream.

When you create a new Window Message Stream window, the message filter is open for all messages. When you specify a message filter, that selection specification takes effect for new messages, not for messages that have already been displayed in the Window Message Stream window.


Choosing Window Filters

When you choose Window Filters from the View menu, Spy++ displays the Window Filters dialog box.

The options:

Option	Description
All Windows	Display messages for all windows.
Specified Window	Display messages for the selected window only.
Include Parent	Display messages for the selected window and its immediate parent window.
Include Children	Display messages for the selected window and all its child windows, including nested child windows.
Include Windows of Same Process	Display messages for the selected window and all other windows owned by the same process.
When you create a new Window Message Stream window, the window filter is set for the specified window only. When you specify a different window filter, that selection specification takes effect for new messages, not for messages that have already been displayed in the Window Message Stream window.


Choosing Output Filters

When you choose Output Filters from the View menu, Spy++ displays the Output Filters dialog box with the default settings.

The options:

Option	Description
Message Nesting Level	Indent nested messages with a periods. See Message Line Coding topic following.
Raw Message Parameters	Display the hexadecimal lParam and wParam values.
Decoded Message Parameters	Display the results of message-specific decoding of the lParam and wParam values.
Raw Return Values	Display the hexadecimal lResult return value.
Decoded Return Values	Display the results of message-specific decoding of the lResult return value.


Choosing WinHelp Jumps from a Window

Many Spy++ windows have WinHelp jumps indicated by underlined text, displayed in green by default. When the mouse is positioned over a jump, the cursor changes to a hand symbol. These help jumps are visually indistinguishable from the Spy++ window detail hot links. Both require a double-click for action.

 To jump to a topic in the Win32 SDK help file (API32WH.HLP), double-click a jump.


Find Window Dialog

Use the Find Window to select a window with the mouse.

Options

Finder Tool

Drag the finder tool to the window you wish to examine. As you move the mouse on the desktop, the contents of the Found Window group will be updated to reflect the selected window. Release the left mouse button to finalize your choice.

Hide Spy++

A check in this box hides the main Spy++ window and its MDI child windows. This makes it easier to select another window for analysis.

Found Window

This group contains the attributes of the window that is currently selected with the finder tool. You cannot change these values through the dialog.

Handle

The handle of the selected window.

Text

The caption of the selected window.

Class

The window class of the selected window.

Style

The style code of the selected window, shown in hexadecimal.

Rect

The bounding rectangle of the selected window, shown in pixels.

View to Open

Only one of the following options may be selected.

Window Details

Display the Window Details screen for the selected window.

Window Message Stream

Display the message stream for the selected window (default).


Open System View Dialog

You must select a system view type from the options displayed in the list box.


Font Dialog

Use this dialog box to select the font for all your view windows. Because the font information is saved when you exit Spy++, it will be restored on the next startup.

Options

Font

Choose from a list of available Windows fonts.

Font Style

Choose from a list of styles (regular, bold, italic, etc.) available for the selected font.

Size

Choose from a list of point sizes available for the selected font.


Auto Refesh Rate Dialog
Auto Refresh Rate Dialog

The refresh rate entered here applies to all windows that have "Auto Refresh" turned on. Units are tenths of seconds. The default value of 100, for example, results in windows being refreshed every 10 seconds.


About Dialg
About Dialog

The About dialog box displays the Spy++ version number and lists the authors of the program.


Message Filters Dialog

Use this dialog box to select message types for viewing. First select message groups, then fine-tune the selection by selecting and deselecting individual message types. The All button selects all message groups, and the None button clears all groups.

When you create a new Window Message Stream window, the message filter is open for all messages. When you specify a message filter, that selection specification takes effect for new messages, not for messages that have already been displayed in the Window Message Stream window.

Options

Messages to View

All standard Windows messages are shown in this list box. The initial selection is controlled by the selected Message Groups options. You can override this initial selection by selecting or deselecting groups of messages or individual messages.

Message Groups

The major message categories are listed. All categories except WM_USER, Registered, and Undocumented have corresponding groups of messages in the Messages to View list box. A gray (indeterminate state) in a Message Groups check box indicates that Messages to View list box has been modified for messages in that group.

Save Settings as Default

Save the preceding settings for new message stream windows. These settings are saved when Spy++ exits.


Window Filters Dialog

When you choose Window Filters from the View menu, Spy++ displays the Window Filters dialog box.

When you create a new Window Message Stream window, the window filter is set for the specified window only. When you specify a different window filter, that selection specification takes effect for new messages, not for messages that have already been displayed in the Window Message Stream window.

Options

All Windows

Display messages for all windows.

Specified Window

Display messages for the selected window only.

Include Parent

Display messages for the selected window and its immediate parent window.

Include Children

Display messages for the selected window and all its child windows, including nested child windows.

Include Windows of Same Process

Display messages for the selected window and all other windows owned by the same process.

Save Settings as Default

Save the preceding settings for new message stream windows. These settings are saved when Spy++ exits.


Output Filters Dialog

When you choose Output Filters from the View menu, Spy++ displays the Output Filters dialog box with the default settings.

Options

Message Nesting Level

Indent nested messages with a periods. See Message Line Coding topic following.

Raw Message Parameters

Display the hexadecimal lParam and wParam values.

Decoded Message Parameters

Display the results of message-specific decoding of the lParam and wParam values.

Raw Return Values

Display the hexadecimal lResult return value.

Decoded Return Values

Display the results of message-specific decoding of the lResult return value.

Save Settings as Default

Save the preceding settings for new message stream windows. These settings are saved when Spy++ exits.


Maximum Lines Dialog
Lines Dialog

The maximum lines value applies only to message stream windows. It determines the number of lines that are retained in the window. When the value is exceeded, old lines are discarded. The default value is 750.

Save Settings as Default

Save the preceding settings for new message stream windows. These settings are saved when Spy++ exits.


Help on the Object Menu
Object Menu Commands

Command	Description	Shortcut
Open System View	Opens a System Process Tree view, System Thread tree view, or System Window tree view.	CTRL+O
Open View	Opens a detail view window. The menu choice depends on the view that is currently selected.	ENTER
Close	Closes the selected view window.	none
Find Window...	Displays the Find Window dialog to select a window with the mouse.	CTRL+F
Exit	Exits Spy++ and save the system view window positions.	none


Help on the View Menu
View Menu Commands

Command	Description	Shortcut
Next Window	In the current Window Details view, displays data for the selected window's next sibling window in the same sequence as shown in the system view. This choice is disabled if there is no next window.	none
Previous Window	In the current Window Details view, displays data for the selected window's prior sibling window in the same sequence as shown in the system view. This choice is disabled if there is no prior window.	none
First Child Window	In the current Window Details view, displays data for the selected window's first child window. This choice is diabled if the selected window has no children.	none
Parent Window	In the current Window Details view, displays data for this window's parent window. This choice is diabled if the selected window has no parent.	none
Owner Window	In the current Window Details view, displays data for this window's owner window. This choice is diabled if the selected window has no owner.	none
Message Filters	Allows the setting of message filter options for Windows Message Stream view that is currently selected.	none
Window Filters	Allows the setting of window filter options for the Windows Message Stream view that is currently selected.	none
Output Filters	Allows the setting of output filter options for the Windows Message Stream view that is currently selected.	none
Maximum Lines	Allows the setting of maximum retained lines for the Windows Message Stream view that is currently selected.	none
Clear	Clears the Windows Message Stream view that is currently selected.	none


Help on the Tree Menu
Tree Menu Commands

Command	Description	Shortcut
Expand Level	Expands the currently selected level in a system view by displaying all levels immediately beneath it.	+
Expand Branch	Expands the currently selected level in a system view by recursively expanding and displaying all levels beneath it.	*
Expand All	Recursively expands and displays all levels in a system view.	CTRL+*
Collapse Branch	Collapses all levels below the currently selected branch.	-
Collapse All	Recursively collapses all levels in a system view.  In the Window Tree view, only the desktop window will be shown; in a Process Tree view, all processes will be shown with no thread or window expansion; in a Thread Tree view, all threads will be shown with no window expansion.	CTRL+-


Help on the Options Menu
Options Menu Commands

Command	Description	Shortcut
Font	Allows selection of a font for use in all Spy++ view windows.	none
Auto Refresh Rate	Sets the auto refresh rate for all views.	none


Help on the Window Menu
Window Menu Commands

Command	Description	Shortcut
Cascade	Rearranges all view windows in a cascade pattern.	SHIFTt+F5
Tile Horizontally	Rearranges all view windows in a horizontal tile pattern.	F4
Tile Vertically	Rearranges all view windows in a vertical tile pattern.	none
Arrange Icons	If view windows have been minimized in the Spy++ main frame window, rearranges the view icons.	none
Refresh	Initiates a refresh operation for the currently selected view.	F5
Auto Refresh	Toggles the Auto Refresh option for the currently selected window.	CTRL+R
Refresh All	Initiates a refresh operation for all views	CTRL+F5
Window	Allows selection of a specific view window.	none


Help on the Help Menu
Help Menu Commands

Command	Description
Contents	Opens the contents screen for SPYXX.HLP
Search for Help On...	Opens the Search dialog box for keyword searches.
How to Use Help	Opens a Help file that describes how to use help
About Spy++...	Displays a dialog box that shows software version and copyright information for Spy++.