Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
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