DEFINE VARIABLE vl_int AS INTEGER NO-UNDO.
DEFINE VARIABLE oScreenList AS "System.Windows.Forms.Screen[]" NO-UNDO.
DEFINE VARIABLE oScreen AS System.Windows.Forms.Screen NO-UNDO.
DEFINE VARIABLE vl_size AS CHARACTER NO-UNDO.
DEFINE TEMP-TABLE screens NO-UNDO
FIELD screenID AS INTEGER
FIELD screenPrimary AS LOGICAL
FIELD screenName AS CHARACTER
FIELD screenX AS INTEGER
FIELD screenY AS INTEGER
FIELD screenWidth AS INTEGER
FIELD screenHeight AS INTEGER
INDEX iDef IS PRIMARY UNIQUE screenID.
oScreenList = System.Windows.Forms.Screen:AllScreens.
DO vl_int = 0 TO oScreenList:LENGTH - 1:
oScreen = CAST(oScreenList:GetValue(vl_int), System.Windows.Forms.Screen).
ASSIGN vl_size = oScreen:workingArea:ToString()
vl_size = REPLACE(vl_size,"~{","")
vl_size = REPLACE(vl_size,"~}","").
CREATE screens.
ASSIGN screens.screenID = vl_int
screens.screenPrimary = oScreen:Primary
screens.screenName = oScreen:DeviceName
screens.screenX = INTEGER(ENTRY(2,ENTRY(1,vl_size),"="))
screens.screenY = INTEGER(ENTRY(2,ENTRY(2,vl_size),"="))
screens.screenWidth = INTEGER(ENTRY(2,ENTRY(3,vl_size),"="))
screens.screenHeight = INTEGER(ENTRY(2,ENTRY(4,vl_size),"=")).
END. /* do vl_int */