En win98 funciona correctamente en XP no lo he probado
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MONITORPOWER = &HF170
Private Sub Apagar_Click()
'Apagar Monitor ->
PostMessage Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal 0&
End Sub
Private Sub Prender_Click()
'Turn Monitor on: ->
PostMessage Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal -1&
End Sub
Obviamente vas a tener que poner un control Timer para que a una determinada cantidad de milisegundos, prenda el monitor.
Para así probar su correcto funcionamiento.