[Tamaño de pantalla]

-Shadow- -  
 Phoenix -
Hola a todos!
Estoy buscando cómo conocer el tamaño de la pantalla en VBS. Aquí está el inicio de mi script:

Dim x, y
x = Screen.Width
y = Screen.Height

msgbox "Tamaño de la pantalla: " & x & "x" & y, vbSystemModal, "Tamaño"

x = 0
y = 0


Desafortunadamente, al abrir el archivo, hay un error que dice que "Screen" está indefinido.
¿Alguien podría ayudarme?
Gracias de antemano.
Configuración: Windows XP Media Center Edition 2005 Firefox 2.0.0.11

8 respuestas

  1. Zakapuce Mensajes publicados 74 Estado Miembro 7
     
    toma 3 minutos en Google :

    Declarar función privada EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean

    Declarar función privada ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long
    Constante privada CCDEVICENAME = 32
    Constante privada CCFORMNAME = 32
    Constante privada DM_BITSPERPEL = &H60000
    Constante privada DM_PELSWIDTH = &H80000
    Constante privada DM_PELSHEIGHT = &H100000

    Tipo privado DEVMODE
    dmDeviceName As String * CCDEVICENAME
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
    dmYResolution As Integer
    dmTTOption As Integer
    dmCollate As Integer
    dmFormName As String * CCFORMNAME
    dmUnusedPadding As Integer
    dmBitsPerPel As Integer
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
    End Type

    ' Inputsim RetValue As Integer
    RetValue = ChangeRes(800, 600, 32)
    '
    ' Devuelve: 1 = Resolución cambiada con éxito
    ' 0 = La resolución no fue cambiada

    Función ChangeRes(Width As Single, Height As Single, BPP As Integer) As Integer
    On Error GoTo ERROR_HANDLER
    Dim DevM As DEVMODE, I As Integer, ReturnVal As Boolean, _
    RetValue, OldWidth As Single, OldHeight As Single, _
    OldBPP As Integer
    Call EnumDisplaySettings(0&, -1, DevM)
    OldWidth = DevM.dmPelsWidth
    OldHeight = DevM.dmPelsHeight
    OldBPP = DevM.dmBitsPerPel
    I = 0

    Hacer
    ReturnVal = EnumDisplaySettings(0&, I, DevM)
    I = I + 1
    Loop Until (ReturnVal = False)
    DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_BITSPERPEL
    DevM.dmPelsWidth = Width
    DevM.dmPelsHeight = Height
    DevM.dmBitsPerPel = BPP
    Call ChangeDisplaySettings(DevM, 1)
    RetValue = MsgBox("¿Desea mantener su resolución de pantalla en " & Width & "x" & Height & " - " & BPP & " BPP?", vbQuestion + vbOKCancel, "Confirmar cambio de resolución:")

    Si RetValue = vbCancel Entonces
    DevM.dmPelsWidth = OldWidth
    DevM.dmPelsHeight = OldHeight
    DevM.dmBitsPerPel = OldBPP
    Call ChangeDisplaySettings(DevM, 1)
    MsgBox "¡Resolución anterior(" & OldWidth & " x " & OldHeight & ", " & OldBPP & " Bits) restaurada con éxito!", vbInformation + vbOKOnly, "Confirmar resolución:"
    ChangeRes = 0
    Else
    ChangeRes = 1
    End If
    Exit Function
    ERROR_HANDLER:
    ChangeRes = 0
    End Function
    1
  2. meixducurtil
     
    essaye ceci

    Private Sub Form_Load()

    Dim X As Long
    Dim Y As Long

    ' Ancho
    X = (Screen.Width \ Screen.TwipsPerPixelX)
    ' Alto
    Y = (Screen.Height \ Screen.TwipsPerPixelY)

    MsgBox "Aquí está la resolución de la pantalla: " & Chr$(13) & Chr$(13) & X & "x" & Y, vbOkOnly + vbInformation, "Resolución"

    End Sub
    By
    0
  3. -Shadow-
     
    Hola de nuevo,

    He puesto el código en mi script, pero hay errores. Creo que es porque es Visual Basic y no Visual Basic SCRIPT (VBS).
    De todos modos, gracias de todas formas.
    0
  4. tarek_dotzero Mensajes publicados 834 Estado Miembro 122
     
    He hecho una pequeña búsqueda, pero no encontré nada sobre el VBS, pero creo que esto ayudará

    http://www.google.com/codesearch?hl=es&q=+createobject+screen+vbs+show:kuV_P5dKAzc:trHQnsR6BiU:OEvYCGwzuGo&sa=N&cd=7&ct=rc&cs_p=http://gentoo.osuosl.org/distfiles/awstats-6.5.tar.gz&cs_f=awstats-6.5/wwwroot/js/awstats_misc_tracker.js
    0
  5. -Shadow-
     
    ZAKAPUCE ¡DIJE QUE NO HAY VISUAL BASIC!

    Eh, oye, tarek_dotzero, ¡no entendí nada de lo que dice la página!
    ¡Es muy complicado!
    0
  6. -Shadow-
     
    Estoy de acuerdo con lo que dices, pero en VBS los formularios no existen. Por lo tanto, Form1.Load (por ejemplo) no significa nada para Wscript.
    Voy a intentar encontrar la solución a través del registro.
    0
  7. Phoenix
     
    Si trabajas en Windows, el WMI está ahí para eso...

    Aquí tienes un código que te puede ayudar ;)

    Dim gfx, colours, horiz, vert strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_DisplayConfiguration") For Each objItem in colItems gfx = "Nombre: " & objItem.DeviceName colours = "Profundidad de color: " & objItem.BitsPerPel horiz = "Resolución horizontal: " & objItem.PelsWidth vert = "Resolución vertical: " & objItem.PelsHeight Next msgbox gfx & vbcrlf & colours & vbcrlf & horiz & vbcrlf & vert 
    0