OVH Cloud OVH Cloud

resolution d'ecran

3 réponses
Avatar
Olivier Rochoir
Bonjour, est-ce que quelqu'un pourrait m'indiquer comment (si cela est
possible) faire le programme suivant en VB6 :
Form_load()

Je lance un programme (en fait le jeu de ma fille qui lorsqu'on l'arrete
reste en resolution 640*480)

changer la résolution en 800*600

end sub

Merci (son jeu passe de lui-meme en 640*480 mais ne revient pas dans la
resolution initiale)

3 réponses

Avatar
Pierre Alexis [MVP]
Salut Olivier,

Tu as écrit :

Bonjour, est-ce que quelqu'un pourrait m'indiquer comment (si cela est
possible) faire le programme suivant en VB6 :
Form_load()

Je lance un programme (en fait le jeu de ma fille qui lorsqu'on l'arrete
reste en resolution 640*480)

changer la résolution en 800*600

end sub

Merci (son jeu passe de lui-meme en 640*480 mais ne revient pas dans la
resolution initiale)



Voilà :

Sub Form_Load()

' Récupère la résolution actuelle
' Voir le code ici :
http://www.mvps.org/vbnet/code/screen/displaysettings.htm

' Lance le programme et attend qu'il se termine
' Voir la FAQ : Question 7 - Comment exécuter un autre programme
' depuis une application VB ?
' http://faq.vb.free.fr/index.php?question=7

' Restaure la résolution récupérée avant le lancement du jeu
' Voir code ici http://www.mvps.org/vbnet/code/enums/enumdisplaychange.htm

End Sub

Bonne chance !

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
FrostByte
Voilà le petit code qui te permettra de changer la resolution, quand à
l'execution du programme est attendre la fin je te conseil de chercher
sur google 'process' (attente de fin d'un programme) :
Option Explicit


Const CCHDEVICENAME = 32
Const CCHFORMNAME = 32

Private Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
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 * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

Const DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const DM_DISPLAYFLAGS = &H200000
Const DM_DISPLAYFREQUENCY = &H400000

Private Declare Function ChangeDisplaySettings Lib "user32" Alias
"ChangeDisplaySettingsA" (lpInitData As DEVMODE, ByVal dwFlags As Long)
As Long
Private Declare Function EnumDisplaySettings Lib "user32" Alias
"EnumDisplaySettingsA" (lpszDeviceName As Any, ByVal iModeNum As Long,
lpDevMode As Any) As Boolean
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As
Long, ByVal dwReserved As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long,
ByVal nIndex As Long) As Long
Const BITSPIXEL = 12
Dim D As DEVMODE
Dim lBits As Long, Largeurecran As Double, Hauteurecran As Double




Private Sub Form_Activate()

lBits = GetDeviceCaps(hdc, BITSPIXEL)
Largeur = Screen.Width Screen.TwipsPerPixelX
Hauteur = Screen.Height Screen.TwipsPerPixelY
Call EnumDisplaySettings(0&, -1, D)
D.dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT
D.dmPelsWidth = 800 'vous pouvez spécifier la résolution désirée
D.dmPelsHeight = 600 'vous pouvez spécifier la résolution désirée
D.dmBitsPerPel = 32 'ou 16 pour 16 bits
Call ChangeDisplaySettings(D, 1)

End Sub



Private Sub Form_Terminate()
Dim res As DEVMODE
Call EnumDisplaySettings(0&, -1, res)
res.dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT
res.dmPelsWidth = Largeur
res.dmPelsHeight = Hauteur
res.dmBitsPerPel = lBits
Call ChangeDisplaySettings(res, 1)

End Sub
Olivier Rochoir a écrit :
Bonjour, est-ce que quelqu'un pourrait m'indiquer comment (si cela est
possible) faire le programme suivant en VB6 :
Form_load()

Je lance un programme (en fait le jeu de ma fille qui lorsqu'on l'arrete
reste en resolution 640*480)

changer la résolution en 800*600

end sub

Merci (son jeu passe de lui-meme en 640*480 mais ne revient pas dans la
resolution initiale)




Avatar
Zoury
hmm...

Changer la résolution de l'écran peut-être une chose "dangeureuse", dans le
sens où ton écran peut subir des dommages irréversible, si on ne test pas
avant si le format désiré est compatible.. voici un exemple qui montre
comment bien effectuer les tests nécessaire avant d'effectuer le changement
de résolution.. cet exemple sera éventuellement placé dans la FAQ..

http://groups.google.com/groups?threadm=OzVgNT5KDHA.1636%40TK2MSFTNGP11.phx.gbl

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous

"FrostByte" wrote in message
news:3fe86e40$0$6968$
Voilà le petit code qui te permettra de changer la resolution, quand à
l'execution du programme est attendre la fin je te conseil de chercher
sur google 'process' (attente de fin d'un programme) :
Option Explicit


Const CCHDEVICENAME = 32
Const CCHFORMNAME = 32

Private Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
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 * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

Const DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const DM_DISPLAYFLAGS = &H200000
Const DM_DISPLAYFREQUENCY = &H400000

Private Declare Function ChangeDisplaySettings Lib "user32" Alias
"ChangeDisplaySettingsA" (lpInitData As DEVMODE, ByVal dwFlags As Long)
As Long
Private Declare Function EnumDisplaySettings Lib "user32" Alias
"EnumDisplaySettingsA" (lpszDeviceName As Any, ByVal iModeNum As Long,
lpDevMode As Any) As Boolean
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As
Long, ByVal dwReserved As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long,
ByVal nIndex As Long) As Long
Const BITSPIXEL = 12
Dim D As DEVMODE
Dim lBits As Long, Largeurecran As Double, Hauteurecran As Double




Private Sub Form_Activate()

lBits = GetDeviceCaps(hdc, BITSPIXEL)
Largeur = Screen.Width Screen.TwipsPerPixelX
Hauteur = Screen.Height Screen.TwipsPerPixelY
Call EnumDisplaySettings(0&, -1, D)
D.dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT
D.dmPelsWidth = 800 'vous pouvez spécifier la résolution désirée
D.dmPelsHeight = 600 'vous pouvez spécifier la résolution désirée
D.dmBitsPerPel = 32 'ou 16 pour 16 bits
Call ChangeDisplaySettings(D, 1)

End Sub



Private Sub Form_Terminate()
Dim res As DEVMODE
Call EnumDisplaySettings(0&, -1, res)
res.dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT
res.dmPelsWidth = Largeur
res.dmPelsHeight = Hauteur
res.dmBitsPerPel = lBits
Call ChangeDisplaySettings(res, 1)

End Sub
Olivier Rochoir a écrit :
> Bonjour, est-ce que quelqu'un pourrait m'indiquer comment (si cela est
> possible) faire le programme suivant en VB6 :
> Form_load()
>
> Je lance un programme (en fait le jeu de ma fille qui lorsqu'on l'arrete
> reste en resolution 640*480)
>
> changer la résolution en 800*600
>
> end sub
>
> Merci (son jeu passe de lui-meme en 640*480 mais ne revient pas dans la
> resolution initiale)
>
>