This looks close (and may be the NET example you cited Ted); I can only rotate 180 degrees and back to normal though, attempts to rotate 90/ 270 degrees do nothing.
'Adapted to VB6 from .NET code at
Private Const CCDEVICENAME = 32
Private Const CCFORMNAME = 32
Private Const ENUM_CURRENT_SETTINGS = -1
Private Const DMDO_DEFAULT = 0
Private Const DMDO_90 = 1
Private Const DMDO_180 = 2
Private Const DMDO_270 = 3
Private Const DM_ORIENTATION = &H1 ' PRINTER
Private Const DM_PAPERSIZE = &H2 ' PRINTER
Private Const DM_PAPERLENGTH = &H4 ' PRINTER
Private Const DM_PAPERWIDTH = &H8 ' PRINTER
Private Const DM_SCALE = &H10 ' PRINTER
Private Const DM_POSITION = &H20
Private Const DM_NUP = &H40
Private Const DM_DISPLAYORIENTATION = &H80 ' DISPLAY -- XP only
Private Const DM_COPIES = &H100 ' PRINTER
Private Const DM_DEFAULTSOURCE = &H200 ' PRINTER
Private Const DM_PRINTQUALITY = &H400 ' PRINTER
Private Const DM_COLOR = &H800 ' PRINTER
Private Const DM_DUPLEX = &H1000 ' PRINTER
Private Const DM_YRESOLUTION = &H2000 ' PRINTER
Private Const DM_TTOPTION = &H4000 ' PRINTER
Private Const DM_COLLATE = &H8000 ' PRINTER
Private Const DM_FORMNAME = &H10000 ' PRINTER
Private Const DM_LOGPIXELS = &H20000
Private Const DM_BITSPERPEL = &H40000 ' DISPLAY
Private Const DM_PELSWIDTH = &H80000 ' DISPLAY
Private Const DM_PELSHEIGHT = &H100000 ' DISPLAY
Private Const DM_DISPLAYFLAGS = &H200000 ' DISPLAY
Private Const DM_DISPLAYFREQUENCY = &H400000 ' DISPLAY
Private Const DM_ICMMETHOD = &H800000
Private Const DM_ICMINTENT = &H1000000
Private Const DM_MEDIATYPE = &H2000000
Private Const DM_DITHERTYPE = &H4000000
Private Const DM_PANNINGWIDTH = &H8000000
Private Const DM_PANNINGHEIGHT = &H10000000
Private Const DM_DISPLAYFIXEDOUTPUT = &H20000000 ' XP only
Private Const DISP_CHANGE_SUCCESSFUL = 0
Private Const DISP_CHANGE_FAILED = -1
Private Const DISP_CHANGE_BADMODE = -2
Private Const DISP_CHANGE_NOTUPDATED = -3
Private Const DISP_CHANGE_BADFLAGS = -4
Private Const DISP_CHANGE_BADPARAM = -5
Private Const DISP_CHANGE_BADDUALVIEW = -6
Private Const DISP_CHANGE_RESTART = 1
Private Const CDS_UPDATEREGISTRY = &H1
Private Const CDS_FULLSCREEN = &H4
Private Const CDS_GLOBAL = &H8
Private Const CDS_SET_PRIMARY = &H10
Private Const CDS_TEST = &H4
Private Const CDS_RESET = &H40000000
Private Const CDS_SETRECT = &H20000000
Private Const CDS_VIDEOPARAMETERS = &H20
Private Const CDS_NORESET = &H10000000
Private Const CDS_FORCE = &H80000000
Private Type DISPLAY_DEVICE
cb As Long
DeviceName As String * 32
DeviceString As String * 128
StateFlags As Long
DeviceID As String * 128
DeviceKey As String * 128
End Type
Private Type POINTL
x As Long
y As Long
End Type
Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmPosition As POINTL
dmDisplayOrientation As Long
dmDisplayFixedOutput As Long
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCFORMNAME
dmLogPixels As Integer
dmBitsPerPel As Long
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Declare Function ChangeDisplaySettingsEx Lib "user32" Alias "ChangeDisplaySettingsExA" _
(ByVal lpszDeviceName As String, _
ByRef lpDevMode As DEVMODE, _
ByVal hWnd As Long, _
ByVal dwFlags As Long, _
ByVal lParam As Long) As Long
Private Declare Function EnumDisplayDevices Lib "user32" Alias "EnumDisplayDevicesA" _
(ByVal lpDevice As Long, _
ByVal iDevNum As Long, _
ByRef lpDisplayDevice As DISPLAY_DEVICE, _
ByVal dwFlags As Long) As Boolean
Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As String, _
ByVal iModeNum As Long, _
ByRef pDevMode As DEVMODE) As Boolean
Sub RotateDisplay(Angle%) 'Angle is 0, 1, 2, 3
Dim DD As DISPLAY_DEVICE
Dim DM As DEVMODE
Dim R As Boolean
Dim RR As Long
DD.cb = LenB(DD)
R = EnumDisplayDevices(0, 0, DD, 0)
DM.dmSize = LenB(DM)
R = EnumDisplaySettings(DD.DeviceName, ENUM_CURRENT_SETTINGS, DM)
DM.dmDisplayOrientation = Angle 'DMDO_180
DM.dmFields = DM_DISPLAYORIENTATION
RR = ChangeDisplaySettingsEx(DD.DeviceName, DM, 0, CDS_FORCE, 0)
End Sub