Visual Basic - Cambiar resolucion de pantalla por codigo

Life is soft - evento anual de software empresarial
 
Vista:

Cambiar resolucion de pantalla por codigo

Publicado por abg (20 intervenciones) el 26/04/2001 10:36:28
¿Alguien sabe si se puede cambiar la resolucion de pantalla por codigo desde dentro de Visual Basic?. Supongo que por una API.

Agradeceré ejemplo en codigo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PArte I

Publicado por edu (423 intervenciones) el 26/04/2001 16:43:47
Adaptalo a tu codigo:
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
\'Las declaraciones de estas constantes están en: Wingdi.h
Const DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
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

Dim DevM As DEVMODE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Parte II

Publicado por edu (423 intervenciones) el 26/04/2001 16:44:30
Dim a, b, d, i As Long
Dim Resultado As Long
Dim c As Integer

Do
a = EnumDisplaySettings(0&, i&, DevM)
i = i + 1
If a Then

If Format$(DevM.dmPelsWidth, " @@@@") = 800 And Format$(DevM.dmPelsHeight, "@@@@") = 600 And Format$(DevM.dmBitsPerPel, "@@") = 16 Then
a = False
End If


End If

Loop While a

largo = (Screen.Width \ Screen.TwipsPerPixelX) 'GetDeviceCaps(frmInicio_1.hdc, 8)
alto = (Screen.Height \ Screen.TwipsPerPixelX) 'GetDeviceCaps(frmInicio_1.hdc, 10)

a = 800
b = 600


If largo = 640 And alto = 480 Then
Respuesta = MsgBox("ADVERTENCIA: Tu resolucion actual es " & largo & " X " & alto & " esta resolucion no es la recomendada" & _
" para el uso del sistema la resolucion recomendada es 800 X 600, si deseas cambiar a esta resolucion presiona el" & _
" boton ACEPTAR o de lo contrario presiona CANCELAR (NO RECOMENDADO) para mantener la resolucion actual", vbOKCancel + vbInformation + vbDefaultButton2, "SYSCONTEL")

If Respuesta = vbOK Then

' DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
DevM.dmPelsWidth = a
DevM.dmPelsHeight = b
DevM.dmBitsPerPel = 8

Resultado = ChangeDisplaySettings(DevM, 0)

DevM.dmPels
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Parte III

Publicado por edu (423 intervenciones) el 26/04/2001 16:46:45
DevM.dmPelsWidth = a
DevM.dmPelsHeight = b
DevM.dmBitsPerPel = 16

Resultado = ChangeDisplaySettings(DevM, 0)

' MsgBox Resultado
largo = 800
alto = 600

End If
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se me olvidaba las API

Publicado por edu (423 intervenciones) el 26/04/2001 16:47:33
Api utilizada para tomar las propiedades de la Resolucion
Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, ByVal iModeNum As Long, _
lpDevMode As Any) As Boolean

'Api utilizada para cambiar la resolucion
Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" _
(lpDevMode As Any, ByVal dwflags As Long) As Long
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar