Highlighting Objects

The following function uses a Win32 function to draw a rectangle that will highlight a given object using the object coordinates. The following example can be found in the HighlightObject.vbs file located in the <Installdir>\CodeSamplesPlus folder.

VBScript sample

Copy code
' Declare necessary APIs
Extern.Declare micHwnd, "GetDesktopWindow", "User32.DLL", "GetDesktopWindow"
Extern.Declare micULong, "GetWindowDC", "User32.DLL", "GetWindowDC", micHwnd
Extern.Declare micInteger, "ReleaseDC", "User32.DLL", "ReleaseDC", micHwnd, micULong
Extern.Declare micULong, "CreatePen", "Gdi32.DLL", "CreatePen", micInteger, micInteger, micDword
Extern.Declare micInteger, "SetROP2", "Gdi32.DLL", "SetROP2", micULong, micInteger
Extern.Declare micULong, "SelectObject", "Gdi32.DLL", "SelectObject", micULong, micULong
Extern.Declare micULong, "DeleteObject", "Gdi32.DLL", "DeleteObject", micULong
Extern.Declare micULong, "GetStockObject", "Gdi32.DLL", "GetStockObject", micInteger
Extern.Declare micULong, "Rectangle", "Gdi32.DLL", "Rectangle", micULong, micInteger, micInteger, micInteger, micInteger

Function HighlightRect (X, Y, W, H, Times)

    ' Get the Desktop DC
    hDC = Extern.GetWindowDC (Extern.GetDesktopWindow)
    ' Create a three pixel wide pen
    hPen = Extern.CreatePen (6, 3, RGB(0, 0, 0)) ' PS_INSIDEFRAME, 3 , RGB(0, 0, 0)
    Extern.SetROP2 hDC, 6 ' hDC, R2_NOT
    Extern.SelectObject hDC, hPen
    ' Use an empty fill
    Extern.SelectObject hDC, Extern.GetStockObject (5) ' NULL_BRUSH

    ' Do the highlight
    For i = 0 to Times * 2 + 1
        Extern.Rectangle hDC, X, Y, X + W, Y + H
        wait 0, 50
    Next
    ' CleanUp
    Extern.ReleaseDC Extern.GetDesktopWindow, hDC
    Extern.DeleteObject hPen
End Function

Python sample

Copy code
import time


def highlight_rect(test_object, times=3):
    # Retrieves runtime coordinates and repeatedly highlights the object.
    x = test_object.GetROProperty("abs_x")
    y = test_object.GetROProperty("abs_y")
    width = test_object.GetROProperty("width")
    height = test_object.GetROProperty("height")

    for _ in range(times):
        test_object.Highlight()
        time.sleep(0.1)

    return x, y, width, height