getscrollbarinfo (user32)
Last changed: tsahi-62.219.227.88

.
Summary

C# Signature:

[DllImport( "user32.dll", SetLastError=true,  EntryPoint="GetScrollBarInfo")]
private static extern int GetScrollBarInfo(IntPtr hWnd, uint idObject, ref SCROLLBARINFO psbi);

User-Defined Types:

[StructLayout(LayoutKind.Sequential)]
public struct SCROLLBARINFO
{
    public int cbSize;
    public Rectangle rcScrollBar;
    public int dxyLineButton;
    public int xyThumbTop;
    public int xyThumbBottom;
    public int reserved;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=6)]
    public int[] rgstate;
}

Notes:

This didn't work for me with the Rectangle type for SCROLLBARINFO.rcScrollBar. To rectify this I altered this declaration to type RECT using the following standard definition.

public struct RECT
{
    public int left;
    public int top;
    public int right;
    public int bottom;
}

This then worked for me!

Tips & Tricks:

Please add some!

Sample Code:

SCROLLBARINFO psbi = new SCROLLBARINFO();
psbi.cbSize = Marshal.SizeOf(psbi);

int nResult = GetScrollBarInfo(this.Handle, OBJID_CLIENT, ref psbi); // "this" is a scrollbar

if (nGet == 0)
{
    int nLatError = GetLastError(); // in kernel32.dll
}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation