enum Metrics : int {
SM_CXSCREEN = 0,
SM_CYSCREEN,
SM_CXVSCROLL,
SM_CYHSCROLL,
SM_CYCAPTION,
SM_CXBORDER,
SM_CYBORDER,
SM_CXDLGFRAME, // = 7,
SM_CXFIXEDFRAME = SM_CXDLGFRAME,
SM_CYDLGFRAME, // =8,
SM_CYFIXEDFRAME = SM_CYDLGFRAME,
SM_CYVTHUMB = 9,
SM_CXHTHUMB,
SM_CXICON,
SM_CYICON,
SM_CXCURSOR,
SM_CYCURSOR,
SM_CYMENU,
SM_CXFULLSCREEN,
SM_CYFULLSCREEN,
SM_CYKANJIWINDOW,
SM_MOUSEPRESENT,
SM_CYVSCROLL,
SM_CXHSCROLL,
SM_DEBUG,
SM_SWAPBUTTON,
SM_RESERVED1,
SM_RESERVED2,
SM_RESERVED3,
SM_RESERVED4,
SM_CXMIN,
SM_CYMIN,
SM_CXSIZE,
SM_CYSIZE,
SM_CXSIZEFRAME, // = 32,
SM_CXFRAME = SM_CXSIZEFRAME,
SM_CYSIZEFRAME, // = 33
SM_CYFRAME = SM_CYSIZEFRAME,
SM_CXMINTRACK,
SM_CYMINTRACK,
SM_CXDOUBLECLK,
SM_CYDOUBLECLK,
SM_CXICONSPACING,
SM_CYICONSPACING,
SM_MENUDROPALIGNMENT,
SM_PENWINDOWS,
SM_DBCSENABLED,
SM_CMOUSEBUTTONS,
SM_SECURE,
SM_CXEDGE,
SM_CYEDGE,
SM_CXMINSPACING,
SM_CYMINSPACING,
SM_CXSMICON,
SM_CYSMICON,
SM_CYSMCAPTION,
SM_CXSMSIZE,
SM_CYSMSIZE,
SM_CXMENUSIZE,
SM_CYMENUSIZE,
SM_ARRANGE,
SM_CXMINIMIZED,
SM_CYMINIMIZED,
SM_CXMAXTRACK,
SM_CYMAXTRACK,
SM_CXMAXIMIZED,
SM_CYMAXIMIZED,
SM_NETWORK, // = 63
SM_CLEANBOOT = 67,
SM_CXDRAG,
SM_CYDRAG,
SM_SHOWSOUNDS,
SM_CXMENUCHECK,
SM_CYMENUCHECK,
SM_SLOWMACHINE,
SM_MIDEASTENABLED,
// The next values aren't supported in Win95.
SM_MOUSEWHEELPRESENT,
SM_XVIRTUALSCREEN,
SM_YVIRTUALSCREEN,
SM_CXVIRTUALSCREEN,
SM_CYVIRTUALSCREEN,
SM_CMONITORS,
SM_SAMEDISPLAYFORMAT,
SM_IMMENABLED,
SM_CXFOCUSBORDER,
SM_CYFOCUSBORDER, // = 84
SM_TABLETPC = 86,
SM_MEDIACENTER = 87,
SM_REMOTESESSION = 0x1000,
// These are only for WinXP and later
SM_SHUTTINGDOWN = 0x2000,
SM_REMOTECONTROL = 0x2001
}
enum NUMLINES = [__traits(allMembers, Metrics)].length;
struct SysMetrics
{
int iIndex;
string szLabel;
string szDesc;
}
SysMetrics[NUMLINES] sysmetrics;
static this()
{
foreach (i, m; __traits(allMembers, Metrics))
{
sysmetrics[i] = SysMetrics(mixin(Metrics.stringof ~ "." ~ m), // value
(Metrics.stringof ~ "." ~ m), // label
""); // desc.
}
}