WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Window Manipulation

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Get Array of Window Ids With Matching Title

 Keywords: udfSrchWinItemNameIDArray udfArrayFindWinItemNameId  WinItemNameID Array Window Id WinID Title Search Match Wild Card Pattern Case Insensitive StrIndexWild

;--------------------------------------------------------------------------------;
;udfSrchWinItemNameIdArray : Returns an array of Window title and ids            ;
;                            matching the specified wildcard pattern.            ;
;                                                                                ;
;--------------------------------------------------------------------------------;
;strWindowTitlePattern : Case insensitive wild card string of window title.      ;
;                                                                                ;
;--------------------------------------------------------------------------------;
;Returns : when match ...                                                        ;
;             a two dimensional array,                                           ;
;             first column is title, second column is window id.                 ;
;          when no match ...                                                     ;
;             a dimension less array with no element                             ;
;--------------------------------------------------------------------------------;
; Deana Falk 2011-11-16                                                          ;
;--------------------------------------------------------------------------------;
#DefineFunction udfSrchWinItemNameIdArray (strWindowTitlePattern)
arrWindowList = ArrDimension (0) ; Prepare array variable to be resized later.
strWindowList = WinItemNameId ()
intCount = ItemCount (strWindowList, "|")
intCount = intCount / 2
For intItem = 1 To intCount By 2
   strWindowTitle = ItemExtract (intItem, strWindowList, "|")
   If StrIndexWild (strWindowTitle, strWindowTitlePattern, 1) == 0 Then Continue
   intLast = ArrInfo (arrWindowList, 1)
   ArrayRedim (arrWindowList, intLast + 1, 2)
   strWindowId = ItemExtract (intItem + 1, strWindowList, "|")
   arrWindowList[intLast, 0] = strWindowTitle
   arrWindowList[intLast, 1] = strWindowId
Next
Return arrWindowList
#EndFunction


#DefineSubRoutine udfDisplayResult ()
strList = ""
If intMatches
   strFileOut = ItemReplace ("out.txt", -1, IntControl (1004, 0, 0, 0, 0), ".")
   ArrayFilePutCSV (strFileOut, arrResult)
   strList = FileGet (strFileOut)
   FileDelete (strFileOut)
EndIf
strMsgTitle = "udfSrchWinItemNameIdArray"
strMsgText = "Pattern = " : strWindowTitlePattern : @LF : "Matches found = " : intMatches : @LF : @LF : strList
Pause (strMsgTitle, strMsgText)
#EndSubRoutine


; Test.
DirChange (DirScript ())

; No Wildcard - case insensitive, search anywhere in the title.
strWindowTitlePattern = "SysFader"
arrResult = udfSrchWinItemNameIdArray (strWindowTitlePattern)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult ()

; Embedded Wildcard - case insensitive, search anywhere in the title.
strWindowTitlePattern = "f*d*r"
arrResult = udfSrchWinItemNameIdArray (strWindowTitlePattern)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult ()

; No Match Found.
strWindowTitlePattern = "*@(*(#*&#(*@&*"
arrResult = udfSrchWinItemNameIdArray (strWindowTitlePattern)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult ()

:CANCEL
Exit


Option 2:

;------------------------------------------------------------------------------------------------------------------------------------------
#DefineFunction udfArrayFindWinItemNameId (strWindowTitlePattern, intArrayDim)
arrWindowList = Arrayize (WinItemNameId (), "|")
intItem = 0
While intItem < ArrInfo (arrWindowList, 1)
   If StrIndexWild (arrWindowList[intItem], strWindowTitlePattern, 1) > 0
      intItem = intItem + 2
   Else
      ArrayRemove (arrWindowList, intItem)
      ArrayRemove (arrWindowList, intItem)
   EndIf
EndWhile
If intArrayDim == 2
   ArrayRedim (arrWindowList, intItem, 2)
   intItem = intItem - 1
   While intItem > 0
      arrWindowList[intItem - 1, 1] = arrWindowList[intItem, 0]
      ArrayRemove (arrWindowList, intItem, 1)
      intItem = intItem - 2
   EndWhile
EndIf
Return arrWindowList
;..........................................................................................................................................
; This UDF "udfArrayFindWinItemNameId" returns an array of WinTitle and WinID values ...
; ... for all windows, whose title matches to the specified wildcard pattern.
;
; strWindowTitlePattern ... Search pattern, in the wildcard pattern, "*" matches zero or more characters, and "?" matches any one character.
; intArrayDim  ............ Determines whether a Dim-1 or a Dim-2 array should be created.
;
; Dim-1 array, field structure:
;    arrWindowList[0] ... WinTitle
;    arrWindowList[1] ... WinID
;    arrWindowList[2] ... WinTitle
;    arrWindowList[3] ... WinID
;    ... and so forth.
;
; Dim-2 array, field structure:
;    arrWindowList[0, 0] ... WinTitle
;    arrWindowList[0, 1] ... WinID
;    arrWindowList[1, 0] ... WinTitle
;    arrWindowList[1, 1] ... WinID
;    ... and so forth.
;
; (c)Detlev Dalitz.20111122.
;..........................................................................................................................................
#EndFunction
;------------------------------------------------------------------------------------------------------------------------------------------


;------------------------------------------------------------------------------------------------------------------------------------------
#DefineSubRoutine udfDisplayResult (intDim)
strList = ""
If intMatches
   strFileOut = ItemReplace ("out.txt", -1, IntControl (1004, 0, 0, 0, 0), ".")
   Switch intDim
   Case 1
      ArrayFilePut (strFileOut, arrResult)
      intMatches = intMatches / 2
      Break
   Case 2
      ArrayFilePutCSV (strFileOut, arrResult)
      Break
   Case intDim
      FilePut (strFileOut, "<empty>")
   EndSwitch
   strList = FileGet (strFileOut)
   FileDelete (strFileOut)
EndIf
strMsgTitle = "udfArrayFindWinItemNameId"
strMsgText = "Pattern = " : strWindowTitlePattern : @LF : "Matches found = " : intMatches : @LF : @LF : strList
Pause (strMsgTitle, strMsgText)
#EndSubRoutine
;------------------------------------------------------------------------------------------------------------------------------------------


; Test.
DirChange (DirScript ())

; Create Dim-1 array.
intArrDim = 1

; No Wildcard - case insensitive, search anywhere in the title.
strWindowTitlePattern = "SysFader"
arrResult = udfArrayFindWinItemNameId (strWindowTitlePattern, intArrDim)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult (intArrDim)

; Embedded Wildcard - case insensitive, search anywhere in the title.
strWindowTitlePattern = "f*d*r"
arrResult = udfArrayFindWinItemNameId (strWindowTitlePattern, intArrDim)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult (intArrDim)

; No Match Found.
strWindowTitlePattern = "*@(*(#*&#(*@&*"
arrResult = udfArrayFindWinItemNameId (strWindowTitlePattern, intArrDim)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult (intArrDim)

; Find browser window.
strWindowTitlePattern = "*Internet Explorer*"
arrResult = udfArrayFindWinItemNameId (strWindowTitlePattern, intArrDim)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult (intArrDim)


; Create Dim-2 array.
intArrDim = 2

; No Wildcard - case insensitive, search anywhere in the title.
strWindowTitlePattern = "SysFader"
arrResult = udfArrayFindWinItemNameId (strWindowTitlePattern, intArrDim)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult (intArrDim)

; Embedded Wildcard - case insensitive, search anywhere in the title.
strWindowTitlePattern = "f*d*r"
arrResult = udfArrayFindWinItemNameId (strWindowTitlePattern, intArrDim)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult (intArrDim)

; No Match Found.
strWindowTitlePattern = "*@(*(#*&#(*@&*"
arrResult = udfArrayFindWinItemNameId (strWindowTitlePattern, intArrDim)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult (intArrDim)

; Find browser window.
strWindowTitlePattern = "*Internet Explorer*"
arrResult = udfArrayFindWinItemNameId (strWindowTitlePattern, intArrDim)
intMatches = ArrInfo (arrResult, 1)
udfDisplayResult (intArrDim)

:CANCEL
Exit

Article ID:   W18458
Filename:   Get Array of Window Ids With Matching Title.txt
File Created: 2011:11:22:10:30:06
Last Updated: 2011:11:22:10:30:06