Forum Discussion

Syed's avatar
Syed
Occasional Contributor
10 years ago

How do you get the background colour of a textbox,cell ,dropdown?

Hi,

 

In My project i have a standalone application whose cell colour changes to green or red depending on the functionality performed please let me know how do we get the background colour of the objects on screen.

 

 

Thanks,

Syed Azhar Farooq

  • This is a VBScript example. It will return a RGB value of the one pixel at the coordinate of the object that you pass to the function.

     

     

    Function Return_RGB(objWindowType, nvXcoord, nvYcoord)
    ******************************************************************************************
    '*    FUNCTION: Return_RGB(objWindowType As Object, nvXcoord As Long, nvYcoord As Long)
    '*
    '*    PURPOSE: To return a RGB set of values that is the color of the X, Y coordinate of the Window Object
    '*
    '*    EXAMPLE: Return_RGB(Sys.Process("MyProcess").VCLObject("frmMain"), 10, 10) Normal Window object
    '*
    '*    The example returns the RGB color of the pixel at the 10,10 coordinate of the Sys.Process("MyProcess").VCLObject("frmMain") object.
    '*    The return value is a string that would look like >>> 255,26,0
    '*    The '255' is the Red value. 1st position
    '*    The '26' is the Green value. 2nd position
    '*    The '0' is the Blue value. 3rd position
    '*
    '*    Last Update: 02-27-2014 - TEB - Converted to TestComplete script.
    '*                          05-01-2009 - TEB - Created
    '******************************************************************************************
    Dim tPOS, dcWindow, nvRGB, svTemp
    Dim lRed, lGreen, lBlue
    
    Set tPOS = POINTAPI
    Return_RGB = "NO COLOR FOUND"
    
    If objWindowType.Exists = True Then
    
        ' Move to the X, Y coordinate
        objWindowType.HoverMouse nvXcoord, nvYcoord
        ' Get the dc of a specific hwnd - the desktop
        dcWindow = Win32API.GetWindowDC(0)
        ' Get the cursor position relative to the screen.
        tPOS.y = objWindowType.ScreenTop + nvYcoord
        tPOS.x = objWindowType.ScreenLeft + nvXcoord
    
        ' Use GetPixel() with the appropriate DC and location
        nvRGB = Win32API.GetPixel(dcWindow, tPOS.x, tPOS.y)
     
        ' HEX to string
        svTemp = Right("000000" & Hex(nvRGB), 6)
    
        ' Parse out the individual values
        lRed = CLng("&H" & Right(svTemp, 2))
        lGreen = CLng("&H" & Mid(svTemp, 3, 2))
        lBlue = CLng("&H" & Left(svTemp, 2))
    
        Return_RGB = CStr(lRed) & "," & CStr(lGreen) & "," & CStr(lBlue) 'Return the RGB values here
    
    Else
        Return_RGB = "NO COLOR FOUND"
        Log.Warning "Return_RGB - NO COLOR FOUND - Object did not exist - Window to check= " & objWindowType.Name
    End If
    
    End Function
     
    Almost forgot.......You will need these functions to define the POINTAPI class
     
    Class classPOINTAPI
        ' Used in Function Return_RGB
        Public x
        Public y
    End Class
     
    Function POINTAPI
        Set POINTAPI = New classPOINTAPI
    End Function

     

  • This is a VBScript example. It will return a RGB value of the one pixel at the coordinate of the object that you pass to the function.

     

     

    Function Return_RGB(objWindowType, nvXcoord, nvYcoord)
    ******************************************************************************************
    '*    FUNCTION: Return_RGB(objWindowType As Object, nvXcoord As Long, nvYcoord As Long)
    '*
    '*    PURPOSE: To return a RGB set of values that is the color of the X, Y coordinate of the Window Object
    '*
    '*    EXAMPLE: Return_RGB(Sys.Process("MyProcess").VCLObject("frmMain"), 10, 10) Normal Window object
    '*
    '*    The example returns the RGB color of the pixel at the 10,10 coordinate of the Sys.Process("MyProcess").VCLObject("frmMain") object.
    '*    The return value is a string that would look like >>> 255,26,0
    '*    The '255' is the Red value. 1st position
    '*    The '26' is the Green value. 2nd position
    '*    The '0' is the Blue value. 3rd position
    '*
    '*    Last Update: 02-27-2014 - TEB - Converted to TestComplete script.
    '*                          05-01-2009 - TEB - Created
    '******************************************************************************************
    Dim tPOS, dcWindow, nvRGB, svTemp
    Dim lRed, lGreen, lBlue
    
    Set tPOS = POINTAPI
    Return_RGB = "NO COLOR FOUND"
    
    If objWindowType.Exists = True Then
    
        ' Move to the X, Y coordinate
        objWindowType.HoverMouse nvXcoord, nvYcoord
        ' Get the dc of a specific hwnd - the desktop
        dcWindow = Win32API.GetWindowDC(0)
        ' Get the cursor position relative to the screen.
        tPOS.y = objWindowType.ScreenTop + nvYcoord
        tPOS.x = objWindowType.ScreenLeft + nvXcoord
    
        ' Use GetPixel() with the appropriate DC and location
        nvRGB = Win32API.GetPixel(dcWindow, tPOS.x, tPOS.y)
     
        ' HEX to string
        svTemp = Right("000000" & Hex(nvRGB), 6)
    
        ' Parse out the individual values
        lRed = CLng("&H" & Right(svTemp, 2))
        lGreen = CLng("&H" & Mid(svTemp, 3, 2))
        lBlue = CLng("&H" & Left(svTemp, 2))
    
        Return_RGB = CStr(lRed) & "," & CStr(lGreen) & "," & CStr(lBlue) 'Return the RGB values here
    
    Else
        Return_RGB = "NO COLOR FOUND"
        Log.Warning "Return_RGB - NO COLOR FOUND - Object did not exist - Window to check= " & objWindowType.Name
    End If
    
    End Function
     
    Almost forgot.......You will need these functions to define the POINTAPI class
     
    Class classPOINTAPI
        ' Used in Function Return_RGB
        Public x
        Public y
    End Class
     
    Function POINTAPI
        Set POINTAPI = New classPOINTAPI
    End Function

     

    • Manfred_F's avatar
      Manfred_F
      Regular Contributor

      Hi bunny,

      this is great, as my legacy app doesn't give me text & background color.

      ..planting a kudo on Your green :-) !!

       

      Regards,

      Manfred