|
|
Microsoft OS/2 SDK 2.0 05-30-1990
:userdoc. :prolog. :docprof toc=1. :title.Spy32 Help Panels :eprolog. :toc. :body. #include "help.h" .*************************************************************** :h1 res=HLP_SPY1.About Spy32 :i1 id=Spy.Spy :p. Spy is a debugging tool who's main purpose, is to display the window messages that are sent to one or more windows. :p. Spy watches the messages that a window receives by hooking the the HK_INPUT and HK_SENDMSG hooks :p. In addition to displaying the messages that are sent to windows, spy also allows you to display information about windows, queues, accelerator tables. Spy also provides a way to convert addresses into symbolic names. :p. See :hpt.Display Format:ehpt.:hdref RES=HLP_MSGFMT. for the message display format. .*************************************************************** :h1 res=HLP_MSGFMT.Message Display Format :i1 id=MFmt.Message Display Format :p. This section describes the format of how the messages are displayed. The begining of each line, is common to all messages, regardless of which message it is. The first two characters, shows the origins of the message as follow&colon. :sl compact. :li.I&colon. - Input hook and the message is removed (WinGetMsg, or WinPeekMsg with PM_REMOVE) :li.I- - Input hook no remove (WinPeekMsg with PM_NOREMOVE) :li.S&colon. - Send message hook, and the message was sent from the same thread. :li.S* - Send message hook, and the message was sent from a different thread or process. :esl. :p. Following the message prefix, is the alphabetical name of the message, that was sent or posted, followed, by the window handle (H&colon.) the message was sent or posted to. The remaing fields depends on which type of message is being displayed. .*************************************************************** :h1 res=HLP_KEYS.Help for Keys :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLP_MessagesDlg.Help for Message List :p. This command allows you to be selective about which messages, you wish to monitor. :p. The dialog contains the following fields: :p. :hp2.Message:ehp2.&colon. - Displays the current message from the list box, and also allows you to directly enter a message. You may enter the message in Hexidecimal, Decimal, or by name. :p. :hp2.Message List:ehp2. - The list box contains most of the know messages. The messages may either be displayed in numerical order, or in alphabetical order. :p. :hp2.All:ehp2. - Selects all messages in the list. :p. :hp2.None:ehp2. - Deslects all messages in the list. :p. :hp2.Char On:ehp2. - Selects all WM_CHAR type messages. :p. :hp2.Char Off:ehp2. - Deselect all WM_CHAR type messages. :p. :hp2.Mouse ON:ehp2. - Selects all messages that are mouse related. :p. :hp2.Mouse Off:ehp2. - Deselects all messages that are mouse related. :p. :hp2.Freq On:ehp2. - Selects some messages, that happen often, and that we usually do not wish to monitor, such as WM_HITTEST. :p. :hp2.Freq Off:ehp2. - Deselects the messages, that happen often and that we usually do not wish to monitor, such as WM_HITTEST. :p. :hp2.Input Hook:ehp2. - Should we monitor the input hook? :p. :hp2.SendMsg Hook:ehp2. - Should we monitor the Send Message Hook? :p. :hp2.Display undefined msg:ehp2. - Do you want all of the messages that are not defined in this table to be monitored or not. Usually these messages are the messages that are above WM_USER. :p. :hp2.Ok:ehp2. - Dismiss the dialog, and update our table with the new message selections. :p. :hp2.Cancel:ehp2. - Dismiss the dialog without updating our tables. .*************************************************************** :h1 res=HLP_OutputsDlg.Help for Output :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLP_WindowsDlg.Help for Window List :p. This command displays a list box of all of the windows that are currently defined on the system. You can select one or more windows from this list to monitor the messages for. The items in this list are displayed in the format: xxxx(n) - ID: iii, where the xxxx is the hexidecimal value of the low word of the window handle, (n) is the level number. The level numbers are the number of layers deep we are from HWND_DESKTOP (or HWND_OBJECT). A level 3 window is a child of a level 2 window, etc. :p. The :hp2.Window Handle:ehp2.&colon. field, displays the complete window handle, it also allows you to enter one manually. The entered value, can be either in hexidecimal or decimal. :p. The :hp2.OK Push Button:ehp2. - Will exit the dialog and update Spy's internal list of which windows to monitor windows for. :p. The :hp2.CancelPush Button:ehp2. - Will exit the dialog without updating. :p. The :hp2.All Push Button:ehp2. - Selects all of the windows in the list. :p. The :hp2.None Push Button:ehp2. - Deselect all of the windows in the list. :p. The :hp2.Mouse Push Button:ehp2. - Captures the mouse, and waits for you to click the mouse over a window. While the mouse button is down, the window information on the right hand side of the dialog is updated to show information about the window, that the mouse is currently over. If the :hp2.Control:ehp2. key is down, the code will walk up the parent chain to find a frame window. .*************************************************************** :h1 res=HLP_SaveListDlg.Help for Save List :p. Will save the contents of the spy main window (listbox) to a file. :p. A dialog is displayed that will prompt you for the name of the output file, and whether the information should be appended to the specified file, or should overwrite the file. .*************************************************************** :h1 res=HLP_About1Dlg.Help for About :p. Displays information about help... .*************************************************************** :h1 res=HLP_MsgQueueDlg.Help for Spy Message Queues :p. This command displays a list box of all of the message queues that are currently defined on the system. You can select one or more queues from this list to monitor the messages for. :p. The ability for selecting message queues is important, when you need to monitor messages that are sent during the creation process of the window. :p. The Left hand side contains a listbox, which contains an entry for each of the message queues that existed, when the command was selected. :p. The :hp2.Hmq:ehp2.&colon. field, displays the complete handle to the message queue, it also allows you to enter one manually. The entered value, can be either in hexidecimal or decimal. :p. The :hp2.OK Push Button:ehp2. - Will exit the dialog and update Spy's internal list of message queues to monitor messages for. :p. The :hp2.CancelPush Button:ehp2. - Will exit the dialog without updating. :p. The :hp2.All Push Button:ehp2. - Selects all of the message queues in the list. :p. The :hp2.None Push Button:ehp2. - Deselect all of the message queues in the list. :p. The :hp2.Mouse Push Button:ehp2. - Captures the mouse, and waits for you to click the mouse over a window. While the mouse button is down, the queue information on the right hand side of the dialog is updated to show information about the message queue of the window, that the mouse is currently over. .*************************************************************** :h1 res=HLP_SendMsgDlg.Help for Spy Send Message :p. This command allows you to send or post messages to windows, on the screen. :p. This dialog has the following fields: :p. The :hp2.Window Handle:ehp2.&colon. field, allows you to manually enter the window handle, that you wish to send or post a message to. :p. The :hp2.Point at Hwnd:ehp2. field allows you to select the window using the mouse. :p. The :hp2.Message:ehp2.&colon. field, is where you enter the message value that is sent/posted to specified window. This value can be entered in Hex (0x4096), Decimal(1024), or by Message name (WM_QUIT). :p. The :hp2.MParam1:ehp2. and :hp2.MParam2:ehp2. fields allow you to enter the value of mp1 and mp2, that is sent to the destination window. This value again, can be entered in hex or decimal. In addition, if you specify, the value &.1, this value will be filled in with the address of :hp2.String1:ehp2. and likewise for &.2. :p. The :hp2.Post Message:ehp2. button, will post the message to the specified window. The status of the post will be displayed in the :hp2.Result:ehp2. field. :p. The :hp2.Send Message:ehp2. button, will send the message to the specified window. The result returned from the destination window procedure will be displayed in the :hp2.Result:ehp2. field. :p. The :hp2.Cancel:ehp2. button, will exit the dialog. .*************************************************************** :h1 res=HLPMU_SPY.Help for Spy Menu :i1 id=MSPY.Spy Menu :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPMU_WINDOWS.Help for Windows Menu :i1 id=MWND.Windows Menu :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPMU_WNDSEL.Help for Window Select Sub-Menu :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPMU_WNDDUMP.Help for Window Dump Sub-Menu :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPMU_MESSAGES.Help for Messages Menu :i1 id=MMSG.Message Menu :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPMU_HOOKS.Help for Hooks Menu :i1 id=MHOOK.Hook Menu :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPMU_SNDOUTPUT.Help for Hooks Send Message Output Sub-Menu :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPMU_OUTPUTS.Help for Outputs Menu :i1 id=MOUTPUT.Outputs Menu :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPMU_HELP.Help for Help Menu :i1 id=MHELP.Help Menu :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPM_ACTIVE.Help for Active :i2 refid=MSPY.Turning spy on or off :p. The Active menu item is a toggle, that allows you to turn Spy on or off. .*************************************************************** :h1 res=HLPM_EXIT.Help for Exit :i2 refid=MSPY.Exit from Spy :p. This command will cause spy to terminate. .*************************************************************** :h1 res=HLPM_CLRWIN.Help for Clear Window :i2 refid=MSPY.Clear window contents :p. This command will cause the contents of the main spy window to be erased. .*************************************************************** :h1 res=HLPM_SAVEWIN.Help for Save Window :i2 refid=MSPY.Save window contents to file :p. Will save the contents of the spy main window (listbox) to a file. :p. A dialog is displayed that will prompt you for the name of the output file, and whether the information should be appended to the specified file, or should overwrite the file. .*************************************************************** :h1 res=HLPM_SAVEOPT. Help for Save Options :p. The save options command saves some of your preferences to OS2.INI, which will be used the next time spy is executed. :p. The saved options include: :p. :hp2.Outputs:ehp2. - File, Debug Terminal, and/or Screen :p. :hp2.Hooks:ehp2. - Input, Send Message, ... :p. :hp2.Messages:ehp2. - Alphabetical Sort? .*************************************************************** :h1 res=HLPM_WINDOWS.Help for Windows List :i2 refid=MWND.Select windows from list :p. This command displays a list box of all of the windows that are currently defined on the system. You can select one or more windows from this list to monitor the messages for. :p. An addition to simply selecting files, this command also displays information about the windows, such as the window class, ID, bounding rectangle, etc. .*************************************************************** :h1 res=HLPM_QUEUES.Help for Queues :i2 refid=MWND.Select message queues :p. This command displays a list box of all of the message queues that are currently defined on the system. You can select one or more queues from this list to monitor the messages for. :p. The ability for selecting message queues is important, when you need to monitor messages that are sent during the creation process of the window. .*************************************************************** :h1 res=HLPM_WNMSSEL.Help for Mouse Select :i2 refid=MWND.Select a window with mouse :p. This command allows you to select one window, to be added to the list of windows, that spy will monitor the messages for. :p. After selecting this command, simply move the mouse pointer over the desired window, and press mouse button 1. If the Control key is down, when you depress mouse button 1, spy will walk up the window chain, until it finds a Frame window (a window, whose window class has the CS_FRAME bit set). .*************************************************************** :h1 res=HLPM_WNMSDSL.Help for Mouse deselect :i2 refid=MWND.UnSelect a window with mouse :p. This command allows you to use the mouse to remove one window, from the list of windows, that spy will monitor the messages for. :p. After selecting this command, simply move the mouse pointer over the desired window, and press mouse button 1. If the Control key is down, when you depress mouse button 1, spy will walk up the window chain, until it finds a Frame window (a window, whose window class has the CS_FRAME bit set). .*************************************************************** :h1 res=HLPM_ALLWNDWS.Help for Select All Windows :i2 refid=MWND.Select all windows :p. This command toggles on the All window state. When the all window state is selected, spy will monitor the messages going to all windows. .*************************************************************** :h1 res=HLPM_ALLFRAMES.Help for Select All Frames :i2 refid=MWND.Select all frame windows :p. This command toggles on the All window state. When the all window state is selected, spy will monitor the messages going to all frame windows. :p. A Frame window is defined as a window who's window class is defined with the CS_FRAME bit set). .*************************************************************** :h1 res=HLPM_WNDPWIN.Help for Dump One Window :i2 refid=MWND.Dump information for one window :p. This command allows you to dump information about one window. The window is selected with the mouse. The dumped information contains&colon. :sl compact. :li.:hp2.H&colon.:ehp2. - The window handle. :li.:hp2.P&colon.:ehp2. - Parent window handle. :li.:hp2.C&colon.:ehp2. - First child window handle. :li.:hp2.O&colon.:ehp2. - Owner window handle. :li.:hp2.ID&colon.:ehp2. - Window Identifier. :li.:hp2.MQ&colon.:ehp2. - The handle to the message queue. :li.:hp2. (x1, y1):ehp2. (x2, y2) - Coordinates of window. :li.:hp2.ST&colon.:ehp2. - Window Style words. :li.:hp2.PID&colon.:ehp2. - Process ID of the window. :li.:hp2.TID&colon.:ehp2. - Thread ID of the window. :li.:hp2.PFN&colon.:ehp2. - Pointer to window function. :li.:hp2.Cl&colon.:ehp2. - Window Class name. :li.:hp2.xxxx xxxx :ehp2. - Dump of extra window words. :esl. .*************************************************************** :h1 res=HLPM_WNDPALL.Help for Dump All Windows :i2 refid=MWND.Dump information for all windows :p. Dumps information about all windows. Warning, this can be a lengthy process, unless your output is only going to a disk file. :p. See :hpt.Dump One Window:ehpt.:hdref RES=HLPM_WNDPWIN. for an explanation about the dump format. .*************************************************************** :h1 res=HLPM_DACCEL.Help for Dump Accel Table. :i2 refid=MWND.Dump accelerator table :p. This command allows you to display an accelerator table for one frame window. After this command is selected, simply move the mouse over the desired frame window, or one of it's decedents, and press mouse button 1. The information will be dumped to the current output devices. :p. First a header line is displayed, which contains the following information&colon. :sl compact. :li.:hp2.HACCEL&colon.:ehp2. - Handle to accelerator table. :li.:hp2.HWND&colon.:ehp2. - Frame window handle. :li.:hp2.CP&colon.:ehp2. - Which code page it is defined for. :li.:hp2.CNT&colon.:ehp2. - Count of items in the accelerator table. :esl. :p. For each item in the accelerator table, a line of information will be displayed, which contains information like&colon. :sl compact. :li.:hp2.fs&colon.:ehp2. - The AF_ bits are defined in pmwin.h. :li.:hp2.key&colon.:ehp2. - Which key, may be Char, Virtual key, or Scan code. :li.:hp2.cmd&colon.:ehp2. - Which command will be generated. :esl. :p. At the end of each of these lines, the FS field is broken up in to alphabetical names for each of the bits, the names are as follow: :sl compact. :li.:hp2.CH:ehp2. - Use the Character. :li.:hp2.VK:ehp2. - Use the virtual key. :li.:hp2.SC:ehp2. - Use the Scan code. :li.:hp2.SHFT:ehp2. - Shift key must be depresed. :li.:hp2.CTRL:ehp2. - Control key must be depresed. :li.:hp2.ALT:ehp2. - Alt key must be depresed. :li.:hp2.LONE:ehp2. - Must be a lone key. :li.:hp2.SYS:ehp2. - Generate a WM_SYSCOMMAND message. :li.:hp2.HELP:ehp2. - Generate a WM_HELP message. :esl. .*************************************************************** :h1 res=HLPM_MESSAGES.Help for Message List :i2 refid=MMSG.Select messages :p. This command allows you to be selective about which messages, you wish to monitor. :p. A dialog will be displayed, which allows you to individually select the messages, or classes of messages. .*************************************************************** :h1 res=HLPM_MGDABLE.Help for Disable Message :i2 refid=MMSG.Disable message :p. This command allows you to remove a message for the list of messages that are currently being monitored. This command will disable the message of the currently selected line in the output listbox. .*************************************************************** :h1 res=HLPM_MGEABLE.Help for Enable Message :i2 refid=MMSG.Enable a message :p. This command allows you to again monitor a message that was previously removed using the Disable message command. .*************************************************************** :h1 res=HLPM_ALPHASORT.Help for Alpha Sort Message List :i2 refid=MMSG.Alphabetically sort message list. :p. This command is a toggle, which is used by the Message List dialog, to choose if the messages should be displayed in numerical order, or in alphabetical order. .*************************************************************** :h1 res=HLPM_SENDMSG.Help for Send Message :i2 refid=MMSG.Send or Post message to window. :p. This command sends or posts messages to one or more windows. .*************************************************************** :h1 res=HLPM_INPUTHOOK.Help for Input Hook :i2 refid=MHOOK.Enable/Disable Input Hook :p. This command toggles the state of whether to monitor the message that come in the HK_INPUT hook or not. .*************************************************************** :h1 res=HLPM_SENDMSGHOOK.Help for Send Message Hook :i2 refid=MHOOK.Enable/Disable send message Hook :p. This command toggles the state of whether to monitor the messages that come in from the HK_SENDMSG hook or not. .*************************************************************** :h1 res=HLPM_SENDEXTEND.Help for Send Message Extended Data :i2 refid=MHOOK.Dump extended message data :p. This command toggles the state of whether we should display extended information for messages that come in from the Send Message hook or not. :p. The extended information may contain SWP structures, Rectangles, Queue messages, etc. See the Message format item for the formats of information. .*************************************************************** :h1 res=HLPM_OUTSCREEN.Help for Output Screen Lines :i2 refid=MOUTPUT.Output to Screen :p. ***** To Be Filled in ***** .*************************************************************** :h1 res=HLPM_OUTTERM.Help for Output Debug Terminal :i2 refid=MOUTPUT.Output to Debug Terminal :p. This command toggles the state of whether any displayed information should go to the debug terminal or not. :p. This command may depend of if you have a debugging version of OS2 or not, and if you have added a /C1 or /C2 to the PMDD statement in config.sys, for Com1&colon. or Com2&colon... .*************************************************************** :h1 res=HLPM_OUTFILE.Help for Output File :i2 refid=MOUTPUT.Output to File :p. This command will toggle whetter outputs should go to an output file or not. The name of the output file can be set, by the Outputs... command. .*************************************************************** :h1 res=HLPM_OUTPUTS.Help for Outputs :i2 refid=MOUTPUT.Options :p. This command toggles whetter output should go to the main spy window or not. .*************************************************************** :h1 res=HLPM_HOWHELP.Help for How to Use Help :i2 refid=MHELP.Using :p. Use this choice to find out what kind of help is available and how to use the help that is available. :p. In general, help is provided for every action bar choice, pull-down choice, and other selections. .*************************************************************** :h1 res=HLPM_HELPEXTENDED.Help for Extended Help :i2 refid=MHELP.Extended :p. Extended help provides general information about the program you are using. .*************************************************************** :h1 res=HLPM_HELPKEYS.Help for Keys :i2 refid=MHELP.Keys :p. Use this choice to display a list of keys. :p. The list of keys groups similar keys together so they are easier to find. .*************************************************************** :h1 res=HLPM_HELPINDEX.Help for Help Index :i2 refid=MHELP.Index :p. The help index lists all of the titles of the help information that is available. .*************************************************************** :h1 res=HLPM_ABOUT.Help for About. :i2 refid=MHELP.About Spy :p. Use this choice to display the copyright information. .*************************************************************** :index. :euserdoc.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.