DECLARE INTEGER EnumDisplayMonitors IN win32api INTEGER, INTEGER, INTEGER, INTEGER
DECLARE INTEGER GetMonitorInfo IN win32api INTEGER, STRING @
DECLARE INTEGER SetWindowPos IN win32api INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER
FUNCTION MonitorEnumProc
LPARAMETERS hMonitor, hdcMonitor, lprcMonitor, dwData
LOCAL lcMonitorInfo, lnMonitorInfoSize
lcMonitorInfo = SPACE(40) && Allocate buffer for MONITORINFO structure
lnMonitorInfoSize = LEN(lcMonitorInfo)
BUF2NUM(lcMonitorInfo, 1) = lnMonitorInfoSize
IF GetMonitorInfo(hMonitor, @lcMonitorInfo) <> 0
* Process monitor information here
* Use SUBSTR(lcMonitorInfo, ...) to extract monitor details
ENDIF
RETURN 1 && Continue enumeration
ENDFUNC
PROCEDURE MoveAppToRightmostMonitor
LOCAL lnRightmostMonitorX, lnLowestMonitorY, lnAppWidth, lnAppHeight, lnNewX, lnNewY
lnRightmostMonitorX = 0
lnLowestMonitorY = 0
* Enumerate monitors and update lnRightmostMonitorX and lnLowestMonitorY
EnumDisplayMonitors(0, 0, @MonitorEnumProc, 0)
* Calculate new position for the application window
lnAppWidth = _SCREEN.Width
lnAppHeight = _SCREEN.Height
lnNewX = lnRightmostMonitorX + (lnMonitorWidth - lnAppWidth) / 2
lnNewY = lnLowestMonitorY + (lnMonitorHeight - lnAppHeight) / 2
* Move the application window
SetWindowPos(_SCREEN.HWnd, 0, lnNewX, lnNewY, lnAppWidth, lnAppHeight, 0)
ENDPROC