#Include, %A_ScriptDir%\Module Extensions\CLR_L.ahk #Include, %A_ScriptDir%\Lib\RL.ahk moduleExtensionsPath := A_ScriptDir . "\Module Extensions" rocketLauncherDllFile := moduleExtensionsPath . "\RocketLauncher.dll" RLObject := RL_start(rocketLauncherDllFile) monitorTable := BuildMonitorObject() Loop % monitorTable.MaxIndex() { msgbox % "monitorTable.PrimaryMonitor: " . monitorTable.PrimaryMonitor . "`nmonitorTable.Number: " . monitorTable[A_Index].Number . "`nmonitorTable.Name: " . monitorTable[A_Index].Name . "`nmonitorTable.Orientation: " . monitorTable[A_Index].Orientation . "`nmonitorTable.Left: " . monitorTable[A_Index].Left . "`nmonitorTable.Right: " . monitorTable[A_Index].Right . "`nmonitorTable.Top: " . monitorTable[A_Index].Top . "`nmonitorTable.Bottom: " . monitorTable[A_Index].Bottom . "`nmonitorTable.Width: " . monitorTable[A_Index].Width . "`nmonitorTable.Height: " . monitorTable[A_Index].Height . "`nmonitorTable.WorkingWidth: " . monitorTable[A_Index].WorkingWidth . "`nmonitorTable.WorkingHeight: " . monitorTable[A_Index].WorkingHeight } exitapp BuildMonitorObject() { Global RLObject,primMonitor obj := Object() monOrientation := Object(0,"Landscape",1,"Portrait",2,"Landscape (Flipped)",3,"Portrait (Flipped)") getDisplaySettingsObj := Object(1,"Width",2,"Height",3,"BitDepth",4,"Frequency",5,"Orientation") SysGet, MonitorCount, 80 SysGet, primMonitor, MonitorPrimary obj.PrimaryMonitor := primMonitor Loop, %MonitorCount% { SysGet, MonitorName, MonitorName, %A_Index% SysGet, Monitor, Monitor, %A_Index% SysGet, MonitorWorkArea, MonitorWorkArea, %A_Index% currentobj:={} currentobj.Number := A_Index currentobj.Name := MonitorName monDetails := RL_getDisplaySettings(MonitorName) Loop, Parse, monDetails, | currentObj[getDisplaySettingsObj[A_Index]] := A_LoopField currentobj.Orientation := monOrientation[currentobj.Orientation] currentobj.Left := MonitorLeft currentobj.Right := MonitorRight currentobj.Top := MonitorTop currentobj.Bottom := MonitorBottom currentobj.WorkingWidth := MonitorWorkAreaRight - MonitorWorkAreaLeft currentobj.WorkingHeight := MonitorWorkAreaBottom - MonitorWorkAreaTop obj.Insert(currentobj["Number"], currentobj) } Return obj } ScriptError(txt) { msgbox % txt }