Microsoft KB Archive/112014

From BetaArchive Wiki

Microsoft Knowledge Base

README.TXT for Microsoft Test Version 2.0 for Windows

Last reviewed: October 19, 1994
Article ID: Q112014

The information in this article applies to:

- Microsoft Test for Windows, version 2.0

SUMMARY

This article contains the complete text of the README.TXT file that shipped with Microsoft Test version 2.0 for Windows.

MORE INFORMATION

Release notes for Microsoft Test, Version 2.0 C) Copyright Microsoft Corporation, 1993

This document contains the release notes for version 2.0 of Microsoft Test. The information in this document and in the Help menu is more up-to-date than that in the books.

CONTENTS

     Part     Description
     ----    -----------

     1     Documentation Errata and Additions
       a       Microsoft Test User's Guide
       b       Microsoft Test User Interface Editor User's Guide
     2     New Dynamic-Link Library Procedures
            New TESTCTRL.DLL Procedures
            New TESTDLGS.DLL Procedures
            New TEST TALK Procedures
            New TESTUIL.DLL Procedures
     3     Enhanced Functionality
            Test Dialogs
            User Interface Editor
            Detecting a Disk in Drive A: or B:
            RUN Statement/Function
            NOT (!) Operator
            Test Trap Additions, Corrections, and Changes
     4     Miscellaneous
            Using MS-DOS Boxes on the Novell Network
            Test Talk Issues
            Callbacks as Parameters

PART 1: Documentation Errata and Additions

     a:  Microsoft Test User's Guide

TESTDLGS.EXE and TESTSCRN.EXE Filenames

Please note the following changes:

     TESTDLGS.EXE was renamed to TESTDLG.EXE
     TESTSCRN.EXE was renamed to TESTSCN.EXE

These filenames were changed so that the .EXE files did not have the same name as the dynamic link libraries (DLLs) TESTDLGS and TESTSCRN. When the names were the same, you couldn't run the .EXE if the DLL was already loaded. This situation occurred when you ran a script that called a DLL, stopped it at a breakpoint, and then tried to run the .EXE.

Page 58, Compiling Your Script

Before the sentence located at the end of the second paragraph in this section that says:

     You can run your pcode file by using WBRUN20.EXE
     and passing it the pcode filename.

Insert the following paragraphs:

     To run a pcode file, the following files must
     be present:

             The .PCD file
             WBRUN20.EXE
             WBEXEC20.DLL
             RBHEAP.DLL
             DLLs that you call from your script
               (TESTCTRL, TESTEVNT, etc.)

     Under Windows 3.0, the DLLs must be in either the current
     directory, the WINDOWS or WINDOWS\SYSTEM directory, or a
     directory in your path. Under Windows 3.1, the DLLs can be
     in any of the above directories, and can also be in the
     directory where WBRUN20.EXE is located.

Page 86, Saving a Reference Image to a File

Add the following note after step 4 in the "To save an image to a file" procedure:

     NOTE: Screen files cannot contain images that were
     captured using different video modes. If you captured
     and saved screen images in a file using one video mode,
     and try to capture and save a new screen image to the
     same file using a different video mode, an "Invalid
     Screen Mode" error occurs. See Appendix B for a list
     of video modes.

Page 105, STRING *, Fixed-Length

Add the following paragraphs:

     The maximum size of a fixed-length string is 32767
     bytes. If this size is exceeded, an 'Invalid Size for
     Fixed-Length String' error occurs during compilation.

        DIM S AS STRING * 32767 'this is valid
        DIM Y AS STRING * 32768 'this fails with an error

     NOTE: this limitation does not apply to variable-length
     strings.

Page 111, User-Defined Data Types

Add the following paragraph and examples after the TYPE LOGRECORD example on this page:

     The maximum size of a user-defined variable is 32,767 bytes.
     If this size is exceeded, an "overflow" error occurs during
     compilation. In the following examples Type1 is defined having
     the maximum size. Type2 produces an "overflow" error.

       TYPE Type1
                x as string * 32767     'The maximum size
        END TYPE

        'This will produce an "overflow" error
        TYPE Type2
                x as string * 32767
                y as string * 2
        END TYPE

Page 212, Monitoring a Station's Status

The following status code needs to be added to the list in this section:

     Status Code          Value    Description
     -------------------------------------------------------------
     ST_RECONNECTED          5     If a station has disconnected
                                   from the host and attempts to
                                   reconnect, its old entry in the
                                   station list is updated
                                   to this status.

Page 324 and 325, SendData and SendDataFile Procedures

The syntax for the DECLARE FUNCTION statements for these two procedures is missing a parameter (wType%). These statements should look like this:

     DECLARE FUNCTION SendData LIB "TESTHost.dll" (StationNum%,
       wType%, lpData AS ANY, DSize&) AS INTEGER

     DECLARE FUNCTION SendDataFile LIB "TESTHost.dll" (StationNum%,
       wType%, FileName$) AS INTEGER

     wType%
       Communicates to the station what kind of data you are sending.
         For example, if you are sending a script to be executed,
       set this parameter to DT_SCRIPT. When the station gets the data,
       this parameter determines what gets returned by the
       GetDataType() function on the station side.

Page 388, Return Values

Add the following Error messages to the end of the table on this page (Value 29 is replaced):

     Error message               Value
     -------------------------------------
     ERR_CANT_MOVE_WND            29
     ERR_CANT_SIZE_WND            30
     ERR_CANT_ADJ_SIZE_POS_WND    31
     ERR_CANT_FIND_LBBOX          32
     ERR_NOT_OPERATOR_NOT_ALLOWED 33
     ERR_CANT_ADD_NULL_ITEM       34
     ERR_BAD_POINTER              35
     MAX_ERROR                    36

Pages 393-397, WFndWnd and WFndWndWait Procedures (TESTCTRL.DLL)

Add the following wFlags to the list starting on page 393:

     FW_MAXIMIZE     If a window is found, it is maximized.
     FW_MINIMIZE     If a window is found, it is minimized.
     FW_RESTORE      If a window is found, it is restored.
     FW_DIALOG       Find dialog boxes (class #32770) only.
     FW_DIALOGOK     Find either windows or dialog boxes

Additional Comments:

     The first 3 wFlags in this list do not imply FW_FOCUS.
     If the window is an MDI window, it can be maximized,
     minimized, or restored without automatically gaining the
     focus. Although FW_MAXIMIZE and FW_RESTORE do not imply
     FW_FOCUS, top-level windows will get the focus because
     of the way Windows works.

     Some applications put up dialog boxes with the same
     caption as the application's main window. If this happens,
     you may find the wrong window if you use WFndWnd().
     Instead, use WFndWndC() and specify a class when locating
     windows in these cases.

     To make things easier and more readable when looking for
     a dialog, instead of using WFndWndC() and specifying the
     class name "#32770" (the dialog class), you can use
     WFndWnd() and use the FW_DIALOG flags.

Page 394, WFndWnd Procedure (TESTCTRL.DLL)

o In the description of FW_IGNOREFILE at the top of this page,

   replace the word "following" with "preceding."

o In the first paragraph in the Comments section on this page,

   after the first sentence, add the following:

     NULL and an empty string ("") for the lpszCaption$
     parameter are not treated the same:

      ("")     The window must have an empty caption to match.
      NULL     The window caption/text is ignored; can be anything.

Page 475, FILELIST Statement

Add this note before the "Examples" heading:

     NOTE: The maximum number of files in the file list is 65,000.
     If a FILELIST ADD statement causes the file list to exceed
     this size, a run-time error 11, "Filelist processing error,"
     occurs. The file list will contain only the first 65,000
     files added to it. No more files can be added until a
     FILELIST REMOVE or a FILELIST CLEAR statement is used.

Page 488, LEN Function

Add the following paragraphs to the "Remarks" section:

     If <variablename> is a user-defined type, LEN returns
     the size of the TYPE structure. For example:

        TYPE MyType
                elem1 As Integer
                elem2 As String * 10
        END TYPE

        LEN(MyType)                'returns 12.

     If <variablename> is an array, LEN returns the size of an
     individual array element. For example:

        DIM array(100) AS DOUBLE
     LEN(array)                'returns 8.

Page 494, MSGBOX Statement

o MB_APPLMODAL Description

   Add this note to the description in Table 9.4:

     NOTE: When you set the MB_APPLMODAL flag, the
     message box is modal to the script window for
     that script, not to the Test Driver window in
     which you are running the script.

o The example after the paragraph following Table 9.4 is not correct:

     MB_OKCANCEL + MB_ICONSTOP + MB_DEFBUTTON1 + MB_APPLMODAL

   It should look like this:

        MB_OKCANCEL OR MB_ICONSTOP OR MB_DEFBUTTON1 OR MB_APPLMODL

o A new flag has been added for the MSGBOX statement and function.

   It is:

     Symbolic constant     Value     Description
     -----------------------------------------------------------

     MB_NOBEEP            32,768     Turns off the system beep
                         that sounds when you choose
                         an icon and its dialog box
                         appears.

Page 501, OPTION BASE Statement

Additional Remarks:

     The Microsoft Test OPTION BASE statement is different in
     some ways from the OPTION BASE statement in QuickBasic and
     Visual Basic. In QuickBasic and Visual Basic, you can use
     OPTION BASE only once in a program. Also, you must use it
     before any arrays are dimensioned.

     The Microsoft Test OPTION BASE is a toggle switch. You
     can use it more than once. For example:

             DIM array1(10) AS INTEGER  'Defaults to base 0
             OPTION BASE 1
             DIM array2(20) AS SINGLE
             OPTION BASE 0
             DIM array3(30) AS DOUBLE

Page 501, OPTION INTEGER Statement

The OPTION INTEGER statement affects the output of the RND function and the TIMER function as follows:

        If OPTION INTEGER is used, RND generates a random integer
     between 1 and 32,767. Otherwise it generates a random number
     between 0 and 1.

        If OPTION INTEGER is used, TIMER returns a long integer
     containing the number of milliseconds since the system started.
     Otherwise, it returns a double-precision floating-point value
     containing the number of seconds since the system started.

PART 1: Documentation Errata and Additions

     b:  Microsoft Test User Interface Editor User's Guide

Page 101, MSTLoadIcon Function Syntax

Add the following information to the paragraph that starts "icon ID is the resource ID number... ":

     To get the resource ID number of an icon
     1.  From the Icons dialog box, select an icon.
     2.  Press F2.
         The resource ID number and the icon is displayed.

PART 2: New Dynamic-Link Library Procedures

The procedures in this section are "new" because they were created after the books went to press.

New TESTCTRL.DLL Procedures

o WLabelLen()

   Included if W_STATIC is defined.

   Syntax:
     Declare Function WLabelLen Lib "TestCtrl.DLL" Alias
        "WLabelLen" (hwnd%) AS INTEGER

   Returns:
     Length of associated label; zero if no associated label.

   Comments:
     WLabelLen() obtains the length of the associated label
     for the specified window. hwnd% is the Window to check.
     If zero, check the control with the focus.

     hwnd% must be a child (WS_CHILD) and cannot have a
     caption (WS_CAPTION).

o WLabelText()

   Included if W_STATIC is defined.

   Syntax:
     Declare Sub WLabelText Lib "TestCtrl.DLL" Alias
     "WLabelText" (hwnd%, lpszBuffer$)

     Declare Function LabelText (hwnd%) AS STRING

   Returns:
     Nothing.

   Comments:
     WLabelText() obtains the text of the associated label
     for the specified window. hwnd% is the Window to check.
     If hwnd% is zero, checks the control with the focus.
     lpszBuffer$ is the buffer for label text.

     hwnd% must be a child (WS_CHILD) and cannot have a
     caption (WS_CAPTION).

Both of the above procedures can be used to determine whether a control has an associated label. WLabelLen() returns zero if no label, and LabelText() returns an empty string if no label.

o WListItem(action)Ex

   Four new procedures are identical to their non-"Ex" counterparts,
   except for the added parameter ixOffset%.

   Syntax:
     Declare Sub WListItemClkEx Lib "TESTCTRL.DLL" Alias
        "WListItemClkEx" (lpszName$, lpszItem$, ixOffset%)

     Declare Sub WListItemCtrlClkEx Lib "TESTCTRL.DLL" Alias
        "WListItemCtrlClkEx" (lpszName$, lpszItem$, ixOffset%)

     Declare Sub WListItemShftClkEx Lib "TESTCTRL.DLL" Alias
        "WListItemShftClkEx" (lpszName$, lpszItem$, ixOffset%)

     Declare Sub WListItemDblClkEx Lib "TESTCTRL.DLL" Alias
        "WListItemDblClkEx" (lpszName$, lpszItem$, ixOffset%)

   Comments:
        The value of ixOffset% determines where the item is clicked:
        = 0:  item is clicked in the center of the item rectangle,
           zooming is performed to support File Manager-type
           list boxes.
        > 0:  item is clicked at ixOffset% from the left of the item
              rectangle
        < 0:  item is clicked at ixOffset% from the right of the item
              rectangle

New TESTDLGS.DLL Procedures

o SetMatchPreferences()

   Syntax:
     Declare Sub SetMatchPreferences (ExDlg%, FzDlg%, ExMenu%, FzMenu%)

     CONST MATCH_TEXT     = 1 'Text
     CONST MATCH_CASETEXT = 2 'Text, case insensitive
     CONST MATCH_CLASS    = 4 'Class name
     CONST MATCH_STATE    = 8 'State
     CONST MATCH_STYLE    = 16 'Style
     CONST MATCH_RECT     = 32 'Rectangle
     CONST MATCH_ALL      = 63 'Match all

   Comments:
     This procedure sets the criteria for a Test Dialogs comparison.
          The integer for each comparison type is some combination of the
          MATCH_ flags. The default state is equivalent to the following:

     MATCH_ALL                'Exact, Dialogs
     MATCH_CLASS OR MATCH_STATE       'Fuzzy, Dialogs
     MATCH_TEXT OR MATCH_CASETEXT OR MATCH_STATE  'Exact, Menus
     MATCH_TEXT OR MATCH_CASETEXT       'Fuzzy, Menus

o GetMatchPreferences()

   Syntax:
     Declare Sub GetMatchPreferences (ExDlg AS POINTER TO INTEGER,
                         FzDlg AS POINTER TO INTEGER,
                         ExMenu AS POINTER TO INTEGER,
                         FzMenu AS POINTER TO INTEGER)

   Comments:
     This procedure gets the criteria for a Test Dialogs comparison.
     The MATCH_ flags are the same as defined for SetMatchPreferences().

New Test Talk Procedures

o SetLanaNum()

   If you have more than one LAN adapter or protocol on your
   machine, you can choose which adapter or protocol to use when
   running Test Talk. Both Test Talk DLLs (TESTHOST.DLL and
   TESTSTAT.DLL) contain this new procedure.

   Syntax:
     DECLARE FUNCTION SetLanaNum(LNum%) AS INTEGER

   Return Values:
      SetLanaNum() returns TRUE if the lananum can be used;
     FALSE if not. If the function returns FALSE, it means either
     that there is no adapter or LAN protocol for that lananum,
     or that the adapter or LAN protocol exists and doesn't
     support NETBIOS.

   Comments:
     This function checks the specified lananum to see whether it
     supports NETBIOS. If it does, then that lananum is used by
     Test Talk from then on.

     When the Test Talk DLLs load, they automatically search the first
     eight lananums (0 - 7) for the first one that supports NETBIOS.
     The first one found is used unless you change it by using
     SetLanaNum().

o NetBIOSAvailable

   This procedure is included in both TESTSTAT.DLL and TESTHOST.DLL. It
   checks the first eight (0 - 7) lananums for the first one that
   supports NETBIOS. The first one found is used by Test Talk unless
   you change it with SetLanaNum(). If NetBIOSAvailable returns
   FALSE, it means that no adapter or LAN protocol on the machine
   supports NETBIOS.

New TESTUI.DLL Procedures

MSTSysMenu()

   Included if either W_MENU or TESTUI is defined.

   Syntax:
     Declare Sub MSTSysMenu Lib "TESTUI.DLL" Alias
        "MSTSysMenu" (hwnd%, iMenuType%)

          Const MST_GLOBAL = 1
          Const MST_APP    = 2
          Const MST_WINDOW = 4 (only applies to User Interface Editor's
                           test mode windows)

   Comments:
     MSTSysMenu() drops the specified sysmenu on the specified window.
     hwnd% is the Window to check. If zero, check the active window.
     iMenuType% is the Type of the sysmenu. It can be any one of the
     following:
          MST_GLOBAL
          MST_APP
          MST_WINDOW

     If the window doesn't have the specified sysmenu installed, nothing
     happens. If the window has the specified sysmenu and it is not the
     active window, it is made the active window.

MSTSysMenuExists()

   Included if either W_MENU or TESTUI is defined.

   Syntax:
     Declare Function MSTSysMenuExists Lib "TESTUI.DLL" Alias
        "MSTSysMenuExists" (hwnd%) AS INTEGER

   Return Values:
     The function returns a bit pattern:

          bit 0     1 if a global sysmenu is installed
          bit 1     1 if an application-specific sysmenu is installed
          bit 2     1 if a window-specific sysmenu is installed

        (NOTE: Bit 2 only applies to the User Interface Editor when in
     test mode.)

   Comments:
     MSTSysMenuExists() determines if the specified window has an
     MSTSysMenu installed. hwnd% is the Window to check. If zero,
     check the active window.

   Examples:
     MSTSysMenuExists() returns the following values:

          Zero          If no sysmenus are installed.
           MST_GLOBAL(1)     If only a global sysmenu is installed.
          MST_APP(2)     If only an application-specific sysmenu
                    is installed.
          MST_WINDOW(4)     If only a window-specific sysmenu is
                    installed.
          3          If both a global and an application-specific
                    sysmenu are installed.

o MSTLoadBitmap()

   Syntax:
     int = MSTLoadBitmap(bitmap ID, .RES file)

   Return Value:
     MSTLoadBitmap returns hBitmap (the bitmap handle)
     which is used when calling MSTDestroyBitmap.

   Comments:
     See MSTLoadIcon() on page 100 in the Microsoft Test User Interface
     Editor User's Guide.

     To get the resource ID number of a bitmap:
     1.  From the Sysmenu Bitmaps dialog box, select a bitmap.
     2.  Press F2.
         The resource ID number and the bitmap is displayed.

o MSTDestroyBitmap()

   Syntax:
     MSTDestroyBitmap(hBitmap)

   Comments:
     See MSTDestroyIcon() on page 101 in the Microsoft Test User Interface
     Editor User's Guide.

PART 3: Enhanced Functionality

Test Dialogs

o Converting Version 1.0 Files

   Files created using version 1.0 are no longer readable by
   Test Dialogs. To convert 1.0 files to 2.0 format:

     1. Use the Test Dialogs user interface to create a new
        2.0 file.
     2. Use the new File.Convert 1.0 File command to import
        the contents of the 1.0 file. This converts the dialogs
        in the 1.0 file and appends them to the currently open
        2.0 file.

   It is better to recapture the dialogs using version 2.0, than to
   convert them from version 1.0. Version 2.0 stores more information
   about dialog controls making it possible to accurately preview and
   export the dialogs. For this reason comparisons are more reliable.

   For example, in 1.0 the coordinates for each control were saved
   relative to the screen, and in 2.0 they are saved relative to their
   parent. If the dialog is in a different screen location during
   comparison, the rectangles will still match, provided their position
   relative to the dialog window itself did not change. Also, style bits
   are now stored for the controls, allowing Test Dialogs to distinguish
   different controls within the same class.

   In version 1.0, the following information was stored:

    - Text (up to 256 characters)
    - Class name (to 32 characters). Menu items are of the class
      "MenuItem."
    - State:
       - for class BUTTON, 0 = unchecked, 1 = checked,
         2 = undetermined
       - for menu items, return value of GetMenuState() at time
         of capture
       - fVisible = TRUE if control is visible
       - fEnabled = TRUE if control is enabled
       - Rectangle. Screen-relative position and size of control
         (GetWindowRect() at time of capture).

   In version 2.0, the following information is stored:

    - Text (up to 2048 characters)
    - Class name (complete, no enforced length limit)
    - Style bits:
       - for menus, this field is used to identify pop-up menus;
         contains the number of sub-menus in a pop-up menu
       - for controls and windows, this field contains the
         style bits
    - State:
       - for menu items, return value of GetMenuState() at the time
         of capture
       - for controls and windows, this field is a combination of bits:
            1 if the control is visible
            2 if the control is enabled
            4 if the control is a button and is checked
            8 if the control is a 3-state button and is indeterminate
       - Font (for controls and windows only). Face name, height,
         and weight of font used to paint the control at time of capture.
       - Rectangle. Position and size of control relative to its parent.

o Text Import and Export

   You can create a text file in RC-like format, representing dialogs
   and menu structures. You can edit the text file using any text editor,
   and then import it into a dialog file using the import feature.

   If you capture a menu and then remove items from it using the User
   Interface Editor, you cannot preview or export the menu. If you convert
   a menu from a 1.0 file, the converted menu won't be completely accurate.
   If there are second- or higher-level menus, they will appear as top-
   level menus. To fix this in import/export, do the following:

   1. Create a text file.
   2. Edit the text file to place the higher-level menu in a
      pop-up structure.
   3. Re-import the menu.

User Interface Editor

o Dragging and Dropping Icons

   In the User Interface Editor, you can add icons to the .RES
   file by dragging them from the Preview window of the Icons
   dialog box and dropping them into the Icons list.

   To assign an icon to an item, you can drag it from the Icons
   list box and drop it onto a sysmenu item in a sysmenu or onto
   an icon control in a dialog box.

   Double-clicking to assign the icon still works as before.

o Using the SPACE key with Icons and Bitmaps

   In the User Interface Editor, pressing SPACE now acts just like
   double-clicking the left mouse button in the Icons/SysMenu Bitmaps
   dialog to assign icons to icon controls and sysmenu items.

o New Check Box in "Arrange.Settings" Dialog Box

   The "Arrange.Settings" dialog box has an additional check box:

     Hide &UI-Editor while in test mode

   The check box is selected by default. If it is selected, only the
   Test Mode Dialog or Test Mode Menu window is visible while in test
   mode. If not selected, UIEditor items are visible as usual.

   This option prevents access to the properties bar 3D and Iconbar
   check boxes while in test mode. Therefore, a method was added to
   select these check boxes if the User Interface Editor is hidden in
   test mode. When you test a dialog, the following menu item is
   added to the Test Dialogs system menu:

     &View 3D 'Toggles 3D mode

   If the dialog being tested has no system menu, and the User Interface
   Editor is hidden, then you cannot toggle between 3D and 2D.

   For testing an MSTSysMenu, the following items have been added to the
   Test Windows system menu:

     S&ysMenu 'Toggles from iconbar to sysmenu if currently iconbar
     &Iconbar 'Toggles from sysmenu to iconbar if currently sysmenu
     &View 3D 'Toggles 3D mode if sysmenu. Grayed if iconbar.

   For testing an Application menu, no items have been added to the
   system menu. For testing any item, the "Close" system menu item for
   the Test Dialog and Menu Test window has been changed to:

     &Design Mode Alt+F4

o Dialog Coordinates and Control Units

   The coordinates displayed in the upper left of the User Interface
   Editor's properties bar were formerly displayed in dialog units.
   Now dialogs and controls are displayed in either "dialog units" or
   "pixels." To change between the two, simply click with the right mouse
   button anywhere in the dialog you are editing.

Detecting a Disk in Drive A: or B:

The following example shows what happens for each statement, assuming that drives A: and B: exist, but there is no disk in either drive.

   ON ERROR GOTO ErrorTrap
   print exists("A:") 'This works, since the drive really is there
   print exists("B:") 'This works, since the drive really is there
   chdrive("A:")      'This works, since the drive really is there
   print CURDIR$      'This fails and can be trapped
   OPEN "A:\temp.dat" for output as #1 'This fails and can be trapped
   close
   chdrive("B:")      'This works, since the drive really is there
   print CURDIR$      'This fails and can be trapped
   OPEN "B:\temp.dat" for output as #1 'This fails and can be trapped
   close
   end

   ErrorTrap:
     PRINT
     PRINT ERRORS
     PRINT "The drive either does not have a disk"
     PRINT "inserted or the drive door is open."
     PRINT
     RESUME NEXT

In summary:

  1. In version 1.0, a sysmodal dialog would have occurred on the CURDIR$ statement and the OPEN statement. This error ruins automated tests since it can't be trapped. This no longer occurs. You can trap and recover from these errors and your automated tests can continue unattended.
  2. If you are writing a program that must detect whether a disk is in the drive (a setup program, for example), you can do this by using CURDIR$ or OPEN, trapping the error, then prompting for a disk or taking other appropriate action.

RUN Statement/Function

The RUN function and statement have been modified to look in WIN.INI for file extensions. If you run an extension (for example, .TXT) that has an associated .EXE in WIN.INI, RUN will use the associated extension and pass the string argument to it as the command line.

NOT (!) Operator

Using the NOT operator (!) with any of the W(type)SetClass procedures makes no sense and can actually cause problems. Therefore, this operator is no longer supported, and will cause the following error if it is used with any W(type)SetClass procedure.

   ERR_NOT_OPERATOR_NOT_ALLOWED  = 33

The class name "NOT (!) operator" is supported only by WFndWndC() and WFndWndWaitC().

Test Trap Additions, Corrections, and Changes

For information on Microsoft Test event traps, please see the file README.TXT in the V2SAMPLE\TRAPS subdirectory.

PART 4: Miscellaneous

Using MS-DOS Boxes on the Novell Network

If you are using the Novell network and experience intermittent problems using an MS-DOS box, please change or add the following line in your SYSTEM.INI 386enh section.

     [386enh]
     TimerCriticalSection = 5000

The SYSTEM.INI file is located in your Windows directory.

Test Talk Issues

o Procedures Fail when NETBIOS is not Available

   The Test Talk procedurss now fail when NETBIOS is not available.
   There is no error message; the routines simply do nothing or
   functions return FALSE. If Test Talk scripts don't appear to be
   working, you can call NetBIOSAvailable to see if this is the problem.
   See the description of NetBIOSAvailable in Part 2.

o Declarations are Not Included in DECLARES.INC

   Including the precompiled header DECLARES.INC (built as part of the
   setup process) in your script doesn't pull in the Test Talk
   declarations and constants. This is because several routines in
   TESTHOST.DLL and TESTSTAT.DLL have the same names. To use
   Test Talk, you must $DEFINE either TESTHOST or TESTSTAT and include
   MSTEST.INC, rather than using DECLARES.INC. You can also build your
   own precompiled headers for the host and station scripts (one header
   for host scripts and another for station scripts).

o "Setup" Functions

   Three functions in the Test Talk DLLs are considered "setup"
   functions:

     NetBiosAvailable(), SetLanaNum(), and SetMachineName()

   You must call these at the beginning of your script, before you call
   JoinGroup(). After you have joined a group, all three of these
   functions will return FALSE. While you belong to a group, you can't
   change the lananum or machine name.

Callbacks as Parameters

If a script gives the address of a routine (a callback) to a DLL procedure, and that procedure takes SINGLE or DOUBLE parameter types, it is the caller's responsibility to pass those values by reference.

All TestBasic procedures expect their parameters by reference, which means a pointer to the data rather than the data itself. The only two exceptions are:

   INTEGER and LONG, which are special cases to be passed by value
      from callbacks
   STRING, which is converted to a temporary variable-length
      string and essentially passed by value

Incorrect use of parameters in callbacks will cause your script to crash.


Additional reference words: 2.00 readme

KBCategory: kbtool kbprg
KBSubcategory:


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: October 19, 1994
©1997 Microsoft Corporation. All rights reserved. Legal Notices.