[VBS] taille écran

Bonjour à tous!
Je cherche comment faire pour connaître la taille de l'écran en VBS. Voici le début de mon script:

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

msgbox"Taille écran: " & x & "x" & y, vbSystemModal, "Taille"

x = 0
y = 0


Malheureusement, lors de l'ouverture du fichier, il y a une erreur en quoi "Screen" est indéfini.
Est-ce que quelqu'un pourrait m'aider?
Merci d'avance.
Configuration: Windows XP Media Center Edition 2005
Firefox 2.0.0.11

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. ça prend 3 minutes sur Google :

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

    Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long
    Private Const CCDEVICENAME = 32
    Private Const CCFORMNAME = 32
    Private Const DM_BITSPERPEL = &H60000
    Private Const DM_PELSWIDTH = &H80000
    Private Const DM_PELSHEIGHT = &H100000

    Private Type 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)
    '
    ' Returns:1 = Resolution Successfully Ch
    ' anged
    0 = Resolution Was Not Changed

    Function 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

    Do
    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("Do You Wish To Keep Your Screen Resolution To " & Width & "x" & Height & " - " & BPP & " BPP?", vbQuestion + vbOKCancel, "Change Resolution Confirm:")

    If RetValue = vbCancel Then
    DevM.dmPelsWidth = OldWidth
    DevM.dmPelsHeight = OldHeight
    DevM.dmBitsPerPel = OldBPP
    Call ChangeDisplaySettings(DevM, 1)
    MsgBox "Old Resolution(" & OldWidth & " x " & OldHeight & ", " & OldBPP & " Bit) Successfully Restored!", vbInformation + vbOKOnly, "Resolution Confirm:"
    ChangeRes = 0
    Else
    ChangeRes = 1
    End If
    Exit Function
    ERROR_HANDLER:
    ChangeRes = 0
    End Function
    1. essaye ceci

      Private Sub Form_Load()

      Dim X As Long
      Dim Y As Long

      ' Largeur
      X = (Screen.Width \ Screen.TwipsPerPixelX)
      ' Hauteur
      Y = (Screen.Height \ Screen.TwipsPerPixelY)

      MsgBox "Voila la résolution de l'écran: " & Chr$(13) & Chr$(13) & X & "x" & Y, vbOkOnly + vbInformation, "Résolution"

      End Sub
      By
      1. Rebonjour,

        J'ai mis le code dans mon script, mais il y a des erreurs. Je pense parce que c'est du Visual Basic, et non du Visual Basic SCRIPT (VBS).
        Enfin, merci quand même.
        1. J'ai fait une petite recherche, mais j'ai rien trouvé pour le VBS, mais je pense que cela va aider

          http://www.google.com/codesearch?hl=fr&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
          1. ZAKAPUCE J'AI DIT PAS DE VISUAL BASIC!

            heu, dit, tarek_dotzero, j'ai rien compris à ce qu'il y a marqué sur la page!
            C'est très compliqué!
            1. Je suis d'accord avec ce que tu dis, mais en VBS les forms n'existent pas. Alors Form1.Load (par ex.) ne veut rien dire pour Wscript.
              Je vais tenter de trouver la résolution par le registre.
              1. Si tu travailles sous Windows, les WMI sont là pour ça...

                Voici un code qui pourra t'aider ;)

                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 = "Name: " & objItem.DeviceName
                colours = "Color depth: " & objItem.BitsPerPel
                horiz = "Horizontal resolution: " & objItem.PelsWidth
                vert = "Vertical resolution: " & objItem.PelsHeight
                
                Next
                
                msgbox gfx & vbcrlf & colours & vbcrlf & horiz & vbcrlf & vert