To answer your question about the specific RGB values of a disabled control, you first will need to know if the specific color is a specific RGB value, a System Color Constant, or very rarely anymore, a index into a color palette.
The color is represented by a long value that is 4 bytes longs. The first byte indicates how the remaining bytes are to be interpreted. For the most part, it is safe to assume that if the color value is negative (the MSB of the first byte is set), then you dealing with a system color constant, which when rendered, will vary depending on the color scheme chosen using the Display Properties. However, if the number is positive, then the color is a specific RGB composite and will render the same regardless of the chosen appearance scheme. Exceptions include an index value into a color palette, or a best fit match from a specific color to a palette color, or transparency.
Putting aside those exceptions, you can for the most part assume that is the color number you see is negative, then the remaining three bytes indicate a system color constant which when rendered, will vary depending on the color scheme chosen using the Display Properties. To get the specific RGB values for that color in the current appearance selection, you will first need to call the GetSysColor API which will return a true RGB color corresponding to the system color constant for those appearance settings.
On the other hand, if the number is positive, then the value already represents a true RGB color that will always be the same regardless of the current display settings. Once you have the true RGB color, either directly or via the API call, you can extract the three components using the following code:
CurrColor = TheControl.BackColor
RedShade = (CurrColor And 255)
GreenShade = (CurrColor And 65280) / 256
Good Luck
--------------
As a circle of light increases so does the circumference of darkness around it. - Albert Einstein