mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1363 lines
30 KiB
1363 lines
30 KiB
'FTestKey.inc - definitions for Fast Test Key, Menu and Window routines
|
|
'
|
|
' Copyright (c) 1991-1992, Microsoft Corporation. All rights reserved.
|
|
'
|
|
'Purpose:
|
|
' This file defines the Key, Menu and Window functions of the Fast Test
|
|
' functionality
|
|
'
|
|
|
|
|
|
'**********************************************************
|
|
'***************** Keystroke Subroutines ******************
|
|
'**********************************************************
|
|
|
|
' support routine for other subroutines, not meant to be called
|
|
' except by fasttest routines
|
|
'
|
|
FUNCTION SKeyString$(s$) STATIC
|
|
DIM sTemp$
|
|
|
|
IF LEN(s$) = 0 THEN
|
|
XLogFailure "zero length string passed to SKeyString$"
|
|
END IF
|
|
|
|
IF LEN(s$) = 1 THEN
|
|
SELECT CASE ASC(s$)
|
|
|
|
' alphanumerics, pass along as given
|
|
CASE ASC("a") to ASC("z"), ASC("A") to ASC("Z"), ASC("0") to ASC("9")
|
|
sTemp$ = s$
|
|
|
|
' special characters to Dokeys, surround with braces
|
|
CASE ASC("~"),ASC("+"),ASC("^"),ASC("%")
|
|
sTemp$ = "{" + s$ + "}"
|
|
|
|
CASE ASC("{"),ASC("}"),ASC("("),ASC(")"),ASC("["),ASC("]")
|
|
sTemp$ = "{" + s$ + "}"
|
|
|
|
' normal printable non-alphanumerics, pass along
|
|
CASE ASC("!"),ASC("@"),ASC("#"),ASC("$"),ASC("&")
|
|
sTemp$ = s$
|
|
|
|
CASE ASC("*"),ASC("_"),ASC("|"),ASC(""""),ASC("<"),ASC(">")
|
|
sTemp$ = s$
|
|
|
|
CASE ASC("-"),ASC("="),ASC("\"),ASC(";"),ASC("'"),ASC(":")
|
|
sTemp$ =s$
|
|
|
|
CASE ASC(","),ASC("."),ASC("/"),ASC(" "),ASC("?"),ASC("`")
|
|
sTemp$ =s$
|
|
|
|
' non-printable other character
|
|
CASE ELSE
|
|
XLogFailure "Bad character passed to SKeyString$"
|
|
|
|
END SELECT
|
|
|
|
ELSE
|
|
' the string is greater than 1 character in length, put braces
|
|
' around it and send it to Dokeys and let it parse it
|
|
sTemp$ = "{" + s$ + "}"
|
|
END IF
|
|
SKeyString$ = "(" + sTemp$ + ")"
|
|
END FUNCTION
|
|
|
|
' support routine for other subroutines, not meant to be called
|
|
' except by fasttest routines
|
|
'
|
|
FUNCTION SHideKeys$(s$) STATIC
|
|
DIM check$
|
|
DIM i%
|
|
DIM stRet$
|
|
' this code must hide each character that is special to DoKeys
|
|
|
|
stRet$ = "" ' start empty
|
|
FOR i% = 1 to LEN(s$)
|
|
' special characters to DoKeys, surround with braces
|
|
check$ = mid$(s$,i%,1)
|
|
IF check$ = "~" OR check$ = "+" OR check$ = "^" OR check$ = "%" THEN
|
|
stRet$ = stRet$ + "{" + check$ + "}"
|
|
ELSEIF check$ = "{" OR check$ = "}" OR check$ = "(" OR check$ = ")" OR check$ = "[" OR check$ = "]" THEN
|
|
stRet$ = stRet$ + "{" + check$ + "}"
|
|
ELSE
|
|
stRet$ = stRet$ + check$
|
|
END IF
|
|
NEXT i%
|
|
SHideKeys$ = stRet$
|
|
END FUNCTION
|
|
|
|
'
|
|
' XKey(s$)
|
|
'
|
|
' Description:
|
|
' Send Keystroke to active application
|
|
' This uses DoKeys, so DoKeys syntax is allowed
|
|
'
|
|
' Parameters:
|
|
' s$ - single char to send
|
|
' NOTE: any string longer that 1 character in length is assumed
|
|
' to be a special name for a key and is handled as such
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XKey "f"
|
|
' XKey "escape"
|
|
|
|
SUB XKey (s$) STATIC
|
|
DoKeys SKeyString$(s$)
|
|
|
|
END SUB
|
|
|
|
|
|
'
|
|
' XAlt(s$)
|
|
'
|
|
' Description:
|
|
' Send a key as if the alt key is pressed at the same time
|
|
'
|
|
' Parameters:
|
|
' s$ - single char to send
|
|
' see XKey note
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XAlt "f"
|
|
' XAlt "escape"
|
|
'
|
|
'
|
|
|
|
SUB XAlt (s$) STATIC
|
|
DoKeys "%" + SKeyString$(s$)
|
|
|
|
END SUB
|
|
|
|
'
|
|
' XCtrl(s$)
|
|
'
|
|
' Description:
|
|
' Send a key as if the control key is pressed at the same time
|
|
'
|
|
' Parameters:
|
|
' s$ - single char to send
|
|
' see XKey note
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XCtrl "f"
|
|
' XCtrl "escape"
|
|
'
|
|
'
|
|
|
|
SUB XCtrl (s$) STATIC
|
|
DoKeys "^" + SKeyString$(s$)
|
|
END SUB
|
|
|
|
'
|
|
' XShift(s$)
|
|
'
|
|
' Description:
|
|
' Send a key as if the alt key is pressed at the same time
|
|
'
|
|
' Parameters:
|
|
' s$ - single char to send
|
|
' see XKey note
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XShift "f"
|
|
' XShift "escape"
|
|
'
|
|
'
|
|
|
|
SUB XShift (s$) STATIC
|
|
DoKeys "+" + SKeyString$(s$)
|
|
|
|
END SUB
|
|
|
|
'
|
|
' XCtrlAlt(s$)
|
|
'
|
|
' Description:
|
|
' Send a key as if the alt key is pressed at the same time
|
|
'
|
|
' Parameters:
|
|
' s$ - single char to send
|
|
' see XKey note
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XCtrlAlt "f"
|
|
' XCtrlAlt "escape"
|
|
'
|
|
'
|
|
|
|
|
|
SUB XCtrlAlt (s$) STATIC
|
|
DoKeys "^%" + SKeyString$(s$)
|
|
END SUB
|
|
|
|
'
|
|
' XAltShift(s$)
|
|
'
|
|
' Description:
|
|
' Send a key as if the alt key is pressed at the same time
|
|
'
|
|
' Parameters:
|
|
' s$ - single char to send
|
|
' see XKey note
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XAltShift "f"
|
|
' XAltShift "escape"
|
|
'
|
|
'
|
|
|
|
SUB XAltShift (s$) STATIC
|
|
DoKeys "%+" + SKeyString$(s$)
|
|
END SUB
|
|
|
|
'
|
|
' XCtrlShift(s$)
|
|
'
|
|
' Description:
|
|
' Send a key as if the alt key is pressed at the same time
|
|
'
|
|
' Parameters:
|
|
' s$ - single char to send
|
|
' see XKey note
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XCtrlShift "f"
|
|
' XCtrlShift "escape"
|
|
'
|
|
'
|
|
|
|
SUB XCtrlShift (s$) STATIC
|
|
DoKeys "^+" + SKeyString$(s$)
|
|
END SUB
|
|
|
|
'
|
|
' XCtrlAltShift(s$)
|
|
'
|
|
' Description:
|
|
' Send a key as if the alt key is pressed at the same time
|
|
'
|
|
' Parameters:
|
|
' s$ - single char to send
|
|
' see XKey note
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XCtrlAltShift "f"
|
|
' XCtrlAltShift "escape"
|
|
'
|
|
'
|
|
|
|
SUB XCtrlAltShift (s$) STATIC
|
|
DoKeys "^%+" + SKeyString$(s$)
|
|
|
|
END SUB
|
|
|
|
'
|
|
' XText(s$)
|
|
'
|
|
' Description:
|
|
' Send any key as without having to specially specify any
|
|
' keys that are special to DoKeys
|
|
'
|
|
' Parameters:
|
|
' s$ - string of characters to send
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XText "Hello World"
|
|
' XText "The DoKeys string to send is {escape}"
|
|
'
|
|
'
|
|
|
|
SUB XText(s$) STATIC
|
|
DoKeys SHideKeys$(s$)
|
|
END SUB
|
|
|
|
'
|
|
' XEnter(s$)
|
|
'
|
|
' Description:
|
|
' Send any key as without having to specially specify any
|
|
' keys that are special to DoKeys followed by an enter key
|
|
'
|
|
' Parameters:
|
|
' s$ - string of characters to send
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XEnter "Hello World"
|
|
' XEnter "The DoKeys string to send is {escape}"
|
|
'
|
|
'
|
|
|
|
SUB XEnter(s$) STATIC
|
|
DoKeys SHideKeys$(s$) + "{enter}"
|
|
END SUB
|
|
|
|
|
|
|
|
|
|
|
|
'**********************************************************
|
|
'***************** Menu Subroutines ***********************
|
|
'**********************************************************
|
|
|
|
|
|
|
|
|
|
'
|
|
' XSelectMenuItem(stMenu, stMenuItem, stHMenuItem)
|
|
'
|
|
' Description:
|
|
' This procedure selects the specified menu item name.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF
|
|
' Hierarchial menu exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XSelectMenuItem "Edit", "Copy",""
|
|
'
|
|
'
|
|
SUB XSelectMenuItem(stMenu$,stMenuItem$,stHMenuItem$) STATIC
|
|
XMenuItemExists stMenu$,stMenuItem$,stHMenuItem$
|
|
|
|
WMenu(stMenu$)
|
|
IF stMenuItem$ <> "" THEN
|
|
WMenu(stMenuItem$)
|
|
END IF
|
|
IF stHMenuItem$ <> "" THEN 'If popup menu is to be selected
|
|
WMenu(stHMenuItem$) 'Select menu item under popup menu.
|
|
END IF
|
|
|
|
END SUB
|
|
|
|
|
|
|
|
'
|
|
' BMenuItemExists(stMenu, stMenuItem, stHMenuItem)
|
|
'
|
|
' Description:
|
|
' This procedure checks for the specified menu item
|
|
' and returns true IF found, false IF not found.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to check or secondary menu, IF
|
|
' Hierarchial menu exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' TRUE if it exists, FALSE if not
|
|
'
|
|
' Example:
|
|
' fSuccess% = BMenuItemExists("File", "", "")
|
|
' fSuccess% = BMenuItemExists("FIle","Edit", "")
|
|
'
|
|
'
|
|
FUNCTION BMenuItemExists%(stMenu$,stMenuItem$,stHMenuItem$) STATIC
|
|
|
|
IF stHMenuItem$ = "" THEN
|
|
IF stMenuItem$ = "" THEN
|
|
BMenuItemExists = WMenuExists(stMenu$) <> 0
|
|
ELSE
|
|
WMenu(stMenu$)
|
|
BMenuItemExists = WMenuExists(stMenuItem$) <> 0
|
|
END IF
|
|
ELSE
|
|
WMenu(stMenu$)
|
|
WMenu(stMenuItem$)
|
|
BMenuItemExists = WMenuExists(stHMenuItem$) <> 0
|
|
END IF
|
|
DoKeys "{esc 3}" 'Make sure you close menu.
|
|
|
|
END FUNCTION
|
|
|
|
|
|
'
|
|
' XMenuItemExists (stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' Reports error IF menu item does not exist.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF
|
|
' Hierarchial menu exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMenuItemExists "File", "Close", ""
|
|
'
|
|
'
|
|
'
|
|
SUB XMenuItemExists(stMenu$,stMenuItem$, stHMenuItem$) STATIC
|
|
IF BMenuItemExists(stMenu$,stMenuItem$, stHMenuItem$) = 0 THEN
|
|
XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " does not Exist"
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'
|
|
' XMenuItemNotExists (stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' Reports error IF menu item exist.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMenuItemNotExists "File", "Close", ""
|
|
'
|
|
'
|
|
'
|
|
|
|
SUB XMenuItemNotExists(stMenu$,stMenuItem$, stHMenuItem$) STATIC
|
|
IF BMenuItemExists(stMenu$,stMenuItem$, stHMenuItem$) THEN
|
|
XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " Exists"
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
|
|
'
|
|
' IGetMenuCount(stMenu, stMenuItem)
|
|
'
|
|
' Description:
|
|
' This procedure returns the number of menu items
|
|
' in the specified menu.
|
|
'
|
|
' Parameters:
|
|
' stMenu = top level menu to count menu items in.
|
|
' IF stMenu = "", THEN counts items in the menu bar(counts the
|
|
' number of top level menus).
|
|
' stMenuItem = secondary menu to count menu items in; counts hierarchial
|
|
' menu items.
|
|
'
|
|
' Returns:
|
|
' An integer; the number of menu items found.
|
|
'
|
|
' Example:
|
|
' iHowMany% = IGetMenuCount("","") returns how many top level menus.
|
|
' iHowMany% = IGetMenuCount("Utilities", "") returns the number of menu items
|
|
' in the "Utilities" menu.
|
|
' iHowMany% = IGetMenuCount("Utilities", "Info") returns how many menu items
|
|
' in the popup menu "Info".
|
|
'
|
|
'
|
|
FUNCTION IGetMenuCount%(stMenu$, stMenuItem$) STATIC
|
|
|
|
IF stMenuItem$ <> "" THEN 'Count in menu items in hierarchial menu.
|
|
WMenu(stMenu$)
|
|
WMenu(stMenuItem$)
|
|
IGetMenuCount = WMenuCount() 'Count the number of menus items in the popup
|
|
'menu.
|
|
ELSE
|
|
IF stMenu$ <> "" THEN 'Count menus in stMenu$.
|
|
WMenu(stMenu$)
|
|
IGetMenuCount = WMenuCount() 'Count the number of menus items in the menu.
|
|
ELSE
|
|
IGetMenuCount = WMenuCount() 'Count the number of menus in the menu bar if.
|
|
'the above "IF" statements are skipped.
|
|
END IF
|
|
END IF
|
|
DoKeys "{esc 3}" 'Make sure you close menu.
|
|
|
|
END FUNCTION
|
|
|
|
|
|
|
|
'
|
|
' SGetMenuItemText(stMenu, stMenuItem, iIndex)
|
|
'
|
|
' Description:
|
|
' This procedure returns the text of menu item, iIndex
|
|
' (base 1) in stMenu. Length of the buffer to store
|
|
' the menu item text is passed in.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to check or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' iIndex = index of menu item in stMenu.
|
|
' iLength = length of buffer to store text
|
|
'
|
|
' Returns:
|
|
' a string, the menu item text(name).
|
|
'
|
|
' Example:
|
|
' Print SGetMenuItemText("","","", 3) gets name of 3rd menu.
|
|
' Print SGetMenuItemText("Utilities","","",3) gets name of 3rd menu item
|
|
' in the "Utilities" menu.
|
|
' Print SGetMenuItemText("Utilities","Info",3) gets name of 3rd menu item
|
|
' in the popup menu "Info".
|
|
'
|
|
'
|
|
FUNCTION SGetMenuItemText$(stMenu$,stMenuItem$, iIndex%) STATIC
|
|
DIM buffer$
|
|
|
|
buffer$ = String$(128,32) 'initialize with spaces.
|
|
IF stMenuItem$ <> "" THEN 'get menu text from hierarchial menu.
|
|
WMenu(stMenu$)
|
|
WMenu(stMenuItem$)
|
|
ELSE
|
|
IF stMenu$ <> "" THEN 'get menu text from stMenu$.
|
|
WMenu(stMenu$)
|
|
END IF
|
|
END IF
|
|
|
|
'$IFNDEF NT
|
|
WMenuText iIndex%, buffer$ 'get menu text. If above "IF" condition
|
|
'is skipped, this gets text in menu bar.
|
|
'$ELSE
|
|
WMenuText "@"+STR$(iIndex%), buffer$
|
|
'$ENDIF
|
|
|
|
SGetMenuItemText = buffer$ 'return buffer$
|
|
|
|
DoKeys "{esc 3}" 'Make sure you close menu.
|
|
|
|
END FUNCTION
|
|
|
|
|
|
|
|
'
|
|
' BMenuItemGrayed(stMenu$, stMenuItem$,stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' This procedure checks to see IF the specified menu or
|
|
' menu item is grayed out or not.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' TRUE if grayed.
|
|
' FALSE if not grayed.
|
|
'
|
|
' Example:
|
|
' fIsGrayed% = BMenuItemGrayed("Edit", "Copy", "")
|
|
' fIsGrayed% = BMenuItemGrayed("Edit", "", "")
|
|
'
|
|
'
|
|
FUNCTION BMenuItemGrayed%(stMenu$, stMenuItem$, stHMenuItem$) STATIC
|
|
|
|
IF stHMenuItem$ = "" THEN
|
|
IF stMenuItem$ = "" THEN
|
|
BMenuItemGrayed = WMenuGrayed(stMenu$) <> 0 'Check main menu bar menu items.
|
|
ELSE
|
|
WMenu(stMenu$) 'Check menu item within stMenuItem$.
|
|
BMenuItemGrayed = WMenuGrayed(stMenuItem$) <> 0
|
|
END IF
|
|
ELSE
|
|
WMenu(stMenu$) 'Check popup menu items.
|
|
WMenu(stMenuItem$)
|
|
BMenuItemGrayed = WMenuGrayed(stHMenuItem$) <> 0
|
|
END IF
|
|
DoKeys "{esc 3}" 'Make sure you close menu.
|
|
|
|
END FUNCTION
|
|
|
|
|
|
'
|
|
' XMenuItemGrayed (stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' Reports error IF menu item is not Grayed.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMenuItemGrayed "File", "Close", ""
|
|
'
|
|
'
|
|
'
|
|
|
|
SUB XMenuItemGrayed(stMenu$,stMenuItem$, stHMenuItem$) STATIC
|
|
IF BMenuItemGrayed(stMenu$,stMenuItem$, stHMenuItem$) = 0 THEN
|
|
XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is not Grayed"
|
|
END IF
|
|
END SUB
|
|
|
|
'
|
|
' XMenuItemNotGrayed (stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' Reports error IF menu item is Grayed.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMenuItemNotGrayed "File", "Close", ""
|
|
'
|
|
'
|
|
'
|
|
|
|
SUB XMenuItemNotGrayed(stMenu$,stMenuItem$, stHMenuItem$) STATIC
|
|
IF BMenuItemGrayed(stMenu$,stMenuItem$, stHMenuItem$) THEN
|
|
XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is Grayed"
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
|
|
'
|
|
' BMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' This procedure checks to see IF the specified menu
|
|
' item is checked or not.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' TRUE if checked.
|
|
' FALSE if not checked.
|
|
'
|
|
' Example:
|
|
' fIsChecked% = BMenuItemChecked("Format","Style","Bold")
|
|
' fIsChecked% = BMenuItemchecked("Edit", "Copy", "")
|
|
'
|
|
'
|
|
FUNCTION BMenuItemChecked%(stMenu$, stMenuItem$, stHMenuItem$) STATIC
|
|
|
|
IF stHMenuItem$ = "" THEN
|
|
WMenu(stMenu$) 'Check menu item within stMenu$.
|
|
BMenuItemChecked = WMenuChecked(stMenuItem$) <> 0
|
|
ELSE
|
|
WMenu(stMenu$) 'Check menu item under popup menu.
|
|
WMenu(stMenuItem$)
|
|
BMenuItemChecked = WMenuChecked(stHMenuItem$) <> 0
|
|
END IF
|
|
DoKeys "{esc 3}" 'Make sure you close menu.
|
|
|
|
END FUNCTION
|
|
|
|
|
|
|
|
'
|
|
' XMenuItemChecked (stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' Reports error IF menu item is not Checked.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMenuItemChecked "Options", "Read Only", ""
|
|
'
|
|
'
|
|
'
|
|
SUB XMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$) STATIC
|
|
IF BMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$) = 0 THEN
|
|
XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is not Checked"
|
|
END IF
|
|
END SUB
|
|
|
|
'
|
|
' XMenuItemNotChecked (stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' Reports error IF menu item is Checked.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMenuItemNotChecked "Options", "Read Only", ""
|
|
'
|
|
'
|
|
'
|
|
SUB XMenuItemNotChecked(stMenu$,stMenuItem$, stHMenuItem$) STATIC
|
|
IF BMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$) THEN
|
|
XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is Checked"
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
|
|
'
|
|
' BMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' This procedure checks to see IF the specified menu or
|
|
' menu item is enabled or not.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' TRUE if enabled.
|
|
' FALSE if not enabled.
|
|
'
|
|
' Example:
|
|
' fIsEnabled% = BMenuItemEnabled("File", "", "")
|
|
' fIsEnabled% = BMenuItemEnabled("File", "Close", "")
|
|
'
|
|
'
|
|
FUNCTION BMenuItemEnabled%(stMenu$,stMenuItem$, stHMenuItem$) STATIC
|
|
|
|
IF stHMenuItem$ = "" THEN
|
|
IF stMenuItem$ = "" THEN
|
|
BMenuItemEnabled = WMenuEnabled(stMenu$) <> 0 'Check main menu bar menu items.
|
|
ELSE
|
|
WMenu(stMenu$) 'Check menu item within stMenu$.
|
|
BMenuItemEnabled = WMenuEnabled(stMenuItem$) <> 0
|
|
END IF
|
|
ELSE
|
|
WMenu(stMenu$) 'Check menu item under popup menu.
|
|
WMenu(stMenuItem$)
|
|
BMenuItemEnabled = WMenuEnabled(stHMenuItem$) <> 0
|
|
END IF
|
|
DoKeys "{esc 3}" 'Make sure you close menu.
|
|
|
|
END FUNCTION
|
|
|
|
|
|
'
|
|
' XMenuItemEnabled (stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' Reports error IF menu item is not Enabled.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMenuItemEnabled "Options", "Read Only", ""
|
|
'
|
|
'
|
|
'
|
|
SUB XMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$) STATIC
|
|
IF BMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$) = 0 THEN
|
|
XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is not Enabled"
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'
|
|
' XMenuItemNotEnabled (stMenu$,stMenuItem$, stHMenuItem$)
|
|
'
|
|
' Description:
|
|
' Reports error IF menu item is Enabled.
|
|
'
|
|
' Parameters:
|
|
' stMenu = menu where stMenuItem is found.
|
|
' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
|
|
' exists.
|
|
' stHMenuItem = hierarchial(popup) menu item.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMenuItemNotEnabled "Options", "Read Only", ""
|
|
'
|
|
'
|
|
'
|
|
SUB XMenuItemNotEnabled(stMenu$,stMenuItem$, stHMenuItem$) STATIC
|
|
IF BMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$) THEN
|
|
XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is Enabled"
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
|
|
'**********************************************************
|
|
'***************** Window Subroutines *********************
|
|
'**********************************************************
|
|
|
|
|
|
|
|
|
|
'
|
|
' XCaptionExists(stCaption$)
|
|
'
|
|
' Description:
|
|
' Will report error IF caption does not Exist.
|
|
'
|
|
' Parameters:
|
|
' stCaption$ - expected caption of current window
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XCaptionExists "Winword"
|
|
'
|
|
'
|
|
'
|
|
SUB XCaptionExists(stCaption$) STATIC
|
|
IF Instr(SGetCaption(), stCaption$) = 0 THEN
|
|
XLogFailure stCaption$ + " caption does not exist in active window."
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'
|
|
' XCaptionNotExists(stCaption$)
|
|
'
|
|
' Description:
|
|
' Will report error IF caption Exist.
|
|
'
|
|
' Parameters:
|
|
' stCaption$ - NOT expected caption of current window
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XCaptionNotExists "Winword"
|
|
'
|
|
'
|
|
SUB XCaptionNotExists(stCaption$) STATIC
|
|
IF Instr(SGetCaption(), stCaption$) <> 0 THEN
|
|
XLogFailure stCaption$ + " caption Exists in active window."
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
|
|
'
|
|
' SGetCaption()
|
|
'
|
|
' Description:
|
|
' Returns the caption of the Active window
|
|
'
|
|
' Parameters:
|
|
' none
|
|
'
|
|
' Return:
|
|
' Caption of the Active window
|
|
'
|
|
' Example:
|
|
' stCaption$ = SGetCaption()
|
|
'
|
|
'
|
|
FUNCTION SGetCaption$() STATIC
|
|
DIM x%
|
|
DIM stCaption$
|
|
|
|
stCaption$ = String$(100, 32)
|
|
x% = GetWindowText (GetForegroundWindow(), stCaption$, LEN(stCaption$))
|
|
SGetCaption = mid$(stCaption$,1,x%)
|
|
stCaption$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
|
|
'
|
|
' XZoomWindow
|
|
'
|
|
' Description:
|
|
' Toggles the state of the window between normalized
|
|
' and maximized.
|
|
'
|
|
' Parameters:
|
|
' None
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XZoomWindow
|
|
'
|
|
'
|
|
'
|
|
SUB XZoomWindow STATIC
|
|
DIM bogus%
|
|
DIM lhwndTemp%
|
|
|
|
lhwndTemp% = GetForegroundWindow()
|
|
|
|
' IF the window is maximized, normalize.
|
|
|
|
IF (IsZoomed(lhwndTemp%)) THEN
|
|
' window is maximized, we must normalize it
|
|
bogus% = ShowWindow(lhwndTemp%, SW_SHOWNORMAL)
|
|
ELSE
|
|
bogus% = ShowWindow(lhwndTemp%, SW_MAXIMIZE)
|
|
END IF
|
|
|
|
END SUB
|
|
|
|
|
|
'
|
|
' XMaxWindow
|
|
'
|
|
' Description:
|
|
' Maximize the current active window
|
|
'
|
|
' Parameters:
|
|
' None
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMaxWinow
|
|
'
|
|
'
|
|
'
|
|
|
|
|
|
SUB XMaxWindow STATIC
|
|
DIM bogus%
|
|
DIM lhwndTemp%
|
|
DIM lWndStyle&
|
|
|
|
lhwndTemp% = GetForegroundWindow ()
|
|
|
|
' Get the window's style attributes
|
|
lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
|
|
|
|
IF ((lWndStyle& And WS_MAXIMIZE) <> 0) THEN
|
|
XLogFailure "Could not maximize active window, already maximized"
|
|
ELSE
|
|
bogus% = ShowWindow(lhwndTemp%, SW_SHOWMAXIMIZED)
|
|
END IF
|
|
|
|
END SUB
|
|
|
|
'
|
|
' XWindowMaximized
|
|
'
|
|
' Description:
|
|
' check IF the current active window is Maximized
|
|
'
|
|
' Parameters:
|
|
' none
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XWindowMaximized
|
|
'
|
|
'
|
|
'
|
|
|
|
|
|
SUB XWindowMaximized STATIC
|
|
IF BWindowMaximized = 0 THEN
|
|
XLogFailure "Active Window not maximized"
|
|
END IF
|
|
|
|
END SUB
|
|
|
|
'
|
|
' XWindowNotMaximized
|
|
'
|
|
' Description:
|
|
' Check that the current window is not maximized
|
|
'
|
|
' Parameters:
|
|
' none
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XWindowNotMaximized
|
|
'
|
|
'
|
|
'
|
|
|
|
|
|
SUB XWindowNotMaximized STATIC
|
|
|
|
IF BWindowMaximized THEN
|
|
XLogFailure "Active Window is maximized"
|
|
END IF
|
|
|
|
END SUB
|
|
|
|
'
|
|
' BWindowMaximized
|
|
'
|
|
' Description:
|
|
' detect IF current window is maximized
|
|
'
|
|
' Parameters:
|
|
' none
|
|
'
|
|
' Returns:
|
|
' TRUE if maximized, FALSE if not
|
|
'
|
|
' Example:
|
|
' BWindowMaximized
|
|
'
|
|
'
|
|
'
|
|
|
|
|
|
FUNCTION BWindowMaximized% STATIC
|
|
DIM bogus%
|
|
DIM lhwndTemp%
|
|
DIM lWndStyle&
|
|
|
|
lhwndTemp% = GetForegroundWindow ()
|
|
|
|
' Get the window's style attributes
|
|
lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
|
|
|
|
BWindowMaximized = (lWndStyle& AND WS_MAXIMIZE) <> 0
|
|
|
|
END FUNCTION
|
|
|
|
|
|
'
|
|
' XMinWindow
|
|
'
|
|
' Description:
|
|
' Minimize the current active window
|
|
'
|
|
' Parameters:
|
|
' none
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMinWindow
|
|
'
|
|
'
|
|
'
|
|
|
|
|
|
SUB XMinWindow STATIC
|
|
DIM bogus%
|
|
DIM lhwndTemp%
|
|
DIM lWndStyle&
|
|
|
|
lhwndTemp% = GetForegroundWindow ()
|
|
|
|
' Get the window's style attributes
|
|
lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
|
|
|
|
' IF maximized, XLog the descrepancy
|
|
IF ((lWndStyle& And WS_MINIMIZE) <> 0) THEN
|
|
XLogFailure "Could not minimize active window, already minimized"
|
|
ELSE
|
|
bogus% = ShowWindow(lhwndTemp%, SW_SHOWMINIMIZED)
|
|
END IF
|
|
|
|
END SUB
|
|
|
|
' XWindowMinimized
|
|
'
|
|
' Description:
|
|
' Check that current window is minimized
|
|
'
|
|
' Parameters:
|
|
' none
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XWindowMinized
|
|
'
|
|
'
|
|
'
|
|
|
|
|
|
SUB XWindowMinimized STATIC
|
|
|
|
IF BWindowMinimized = 0 THEN
|
|
XLogFailure "Active Window not Minimized"
|
|
END IF
|
|
|
|
END SUB
|
|
|
|
'
|
|
' XWindowNotMinimized
|
|
'
|
|
' Description:
|
|
' Check that current window is not minimized
|
|
'
|
|
' Parameters:
|
|
' none
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XWindowNotMinimized
|
|
'
|
|
'
|
|
'
|
|
|
|
|
|
SUB XWindowNotMinimized STATIC
|
|
IF BWindowMinimized THEN
|
|
XLogFailure "Active Window is Minimized"
|
|
END IF
|
|
|
|
END SUB
|
|
|
|
'
|
|
' BWindowMinimized
|
|
'
|
|
' Description:
|
|
' Detect IF active window minimized
|
|
'
|
|
' Parameters:
|
|
' none
|
|
'
|
|
' Returns:
|
|
' TRUE if minimized, FALSE if not
|
|
'
|
|
' Example:
|
|
' BWindowMinimized
|
|
'
|
|
'
|
|
'
|
|
|
|
|
|
FUNCTION BWindowMinimized% STATIC
|
|
DIM bogus%
|
|
DIM lhwndTemp%
|
|
DIM lWndStyle&
|
|
|
|
lhwndTemp% = GetForegroundWindow ()
|
|
|
|
' Get the window's style attributes
|
|
lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
|
|
|
|
BWindowMinimized = (lWndStyle& AND WS_MINIMIZE) <> 0
|
|
|
|
END FUNCTION
|
|
|
|
'
|
|
' XRestoreWindow
|
|
'
|
|
' Description:
|
|
' Restore the current active window. NOTE: You must make
|
|
' the icon the active window before calling XRestoreWin!
|
|
'
|
|
' Parameters:
|
|
' none
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XRestoreWindow
|
|
'
|
|
'
|
|
'
|
|
|
|
|
|
SUB XRestoreWindow STATIC
|
|
DIM bogus%
|
|
DIM lhwndTemp%
|
|
DIM lWndStyle&
|
|
|
|
lhwndTemp% = GetForegroundWindow ()
|
|
|
|
' Get the window's style attributes
|
|
lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
|
|
|
|
' IF maximized, XLog the descrepancy
|
|
IF ((lWndStyle& And WS_MINIMIZE) = 0) AND ((lWndStyle& And WS_MAXIMIZE) = 0) THEN
|
|
XLogFailure "Active window is not minimized or maximized."
|
|
ELSE
|
|
bogus% = ShowWindow(lhwndTemp%, SW_RESTORE)
|
|
END IF
|
|
|
|
END SUB
|
|
|
|
|
|
|
|
'
|
|
' XSizeActiveWindow(iXPixels, iYPixels, fAbsOrRel)
|
|
'
|
|
' Description:
|
|
' Moves the bottom-right corner of the active window
|
|
' to new coordiates iXPixels, iYPixels. IF fAbsOrRel
|
|
' is TRUE, the coordiates are absolute. IF fAbsOrRel
|
|
' is FALSE, the coordiates are relative to the current
|
|
' position.
|
|
'
|
|
' Parameters:
|
|
' iXPixels - X coordinate
|
|
' iYPixels - Y coordinate
|
|
' IF !fAbsOrRel FALSE, the X,Y coordinates are relative to the
|
|
' current mouse coordianates.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XSizeActiveWindow iXPixels, iYPixels, fAbsOrRel
|
|
'
|
|
'
|
|
'
|
|
|
|
SUB XSizeActiveWindow (iXPixels%, iYPixels%, fAbsOrRel%) STATIC
|
|
|
|
DIM xyTempRect As rect
|
|
DIM iTempX%
|
|
DIM iTempY%
|
|
DIM temphWnd%
|
|
|
|
IF fAbsOrRel% THEN
|
|
WSetWndSiz GetForegroundWindow(), iXPixels%, iYPixels%
|
|
ELSE
|
|
' Find the active window
|
|
temphWnd% = GetForegroundWindow
|
|
|
|
' Get the Rect of the active window
|
|
GetWindowRect temphWnd%, xyTempRect
|
|
' Determine new X coordinate
|
|
iTempX% = ((xyTempRect.wright - 1) - (xyTempRect.wleft)) + iXPixels%
|
|
|
|
' Determine new Y coordinate
|
|
iTempY% = ((xyTempRect.bottom - 1) - (xyTempRect.top)) + iYPixels%
|
|
|
|
' size the window
|
|
WSetWndSiz GetForegroundWindow(), iTempX%, iTempY%
|
|
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'
|
|
' XMoveActiveWindow(iXPixels, iYPixels, fAbsOrRel)
|
|
'
|
|
' Description:
|
|
' Moves the top-left corner of the active window
|
|
' to new coordiates iXPixels, iYPixels. IF fAbsOrRel
|
|
' is TRUE, the coordiates are absolute. IF fAbsOrRel
|
|
' is FALSE, the coordiates are relative to the current
|
|
' position.
|
|
'
|
|
' Parameters:
|
|
' iXPixels - X coordinate
|
|
' iYPixels - Y coordinate
|
|
' IF !fAbsOrRel FALSE, the X,Y coordinates are relative to the
|
|
' current mouse coordianates.
|
|
'
|
|
' Returns:
|
|
' nothing
|
|
'
|
|
' Example:
|
|
' XMoveActiveWindow iXPixels, iYPixels, fAbsOrRel
|
|
'
|
|
'
|
|
|
|
SUB XMoveActiveWindow (iXPixels%, iYPixels%, fAbsOrRel%) STATIC
|
|
|
|
DIM xyTempRect As Rect
|
|
DIM iTempX%
|
|
DIM iTempY%
|
|
DIM temphWnd%
|
|
|
|
|
|
IF fAbsOrRel% THEN
|
|
WSetWndPos GetForegroundWindow(), iXPixels%, iYPixels%
|
|
ELSE
|
|
' Find the active window
|
|
temphWnd% = GetForegroundWindow
|
|
|
|
' Get the Rect of the active window
|
|
GetWindowRect temphWnd%, xyTempRect
|
|
|
|
' Determine new X coordinate
|
|
iTempX% = xyTempRect.wleft + iXPixels%
|
|
|
|
' Determine new Y coordinate
|
|
iTempY% = xyTempRect.top + iYPixels%
|
|
|
|
' move the window
|
|
WSetWndPos GetForegroundWindow(), iTempX%, iTempY%
|
|
END IF
|
|
END SUB
|