L'ultimo tentativo che ho fatto è questo.

Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As String, ByVal iModeNum As Long, lpDevMode As Any) As Boolean

Declare Function EnumDisplaySettingsEx Lib "user32" Alias "EnumDisplaySettingsExA" (ByVal lpszDeviceName As String, ByVal iModeNum As Long, lpDevMode As DEVMODE, dwFlags As Long) As Long

Dim DevM As DEVMODE

DevM.dmSize = Len(DevM)
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT ' Or DM_BITSPERPEL

DevM.dmPelsWidth = 800
DevM.dmPelsHeight = 600

EnumDisplaySettings "\\.\DISPLAY2", ENUM_CURRENT_SETTINGS, DevM
iEsito = ChangeDisplaySettingsEx(ByVal 0&, DevM, ByVal 0&, CDS_TEST, ByVal 0&)

Se nella ChangeDisplaySettingsEx vado ad impostare come primo parametro DevM.dmDeviceName, la funzione ritorna DISP_CHANGE_BADPARAM.

Grazie mille per l'aiuto.