............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

obtener la resolucion de pantalla

Ver el tema anterior Ver el tema siguiente Ir abajo

obtener la resolucion de pantalla

Mensaje por damianomarsilva el Mar Mar 25, 2008 9:33 pm

p@li:
espectacular tu idea de levantar un subforo sobre ese mundo "aparte" que son las api's.
aquí dejo un pequeño aporte a tus líneas, que me resultó muy útil hace un tiempo atrás, al necesitar saber de antemano la resolución de pantalla del equipo, de manera de ajustar el zoom de acuerdo a esta.
aquí vá el código, que es corto, y lo brindé de ayuda en algún foro sobre el cual consultaban al respecto.
Código:
Option Explicit
'definimos un tipo, que luego será pasado como argumento a la API
Type RECT
  x1 As Long
  y1 As Long
  x2 As Long
  y2 As Long
End Type


'bueno, mis queridas APIS. son un tanto difíciles de comprender, pero extremadamente
'utiles para todo programador.
'para hacerlo mas sencillo: no te olvides nunca que una función siempre devuelve un valor
'y eso hará nuestra api. luego leeremos ese valor para decirle a nuestra macro que ajuste
'el zoom de acuerdo a las circunstancias:
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" _
      (ByVal hWnd As Long, rectangle As RECT) As Long

Function ObtenerResolucion() As String
'la función en sí. yo mismo creo una función que utilizará las dos apis y concatenaré
'los resultados para crear una salida del tipo "800x600", etc, etc
  Dim R As RECT
  Dim hWnd As Long
  Dim RetVal As Long

  hWnd = GetDesktopWindow()
  RetVal = GetWindowRect(hWnd, R)
  'aquí esta la concatenación
  ObtenerResolucion = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
Sub Auto_Open()
'auto_open es un sub que excel lo ejecuta al inicio del libro.
'aqui pondremos nuestro código:
Dim Resultado As String
'averiguo la resolución:
Resultado = Trim(ObtenerResolucion)
'y en base al resultado obtenido, utilizo un simple select case, en el cual
'tomo las distintas pautas a seguir:
Select Case Resultado
    Case "800x600"
        ActiveWindow.Zoom = 90
    Case "1024x768"
        ActiveWindow.Zoom = 110
    Case Else
        MsgBox "La resolución actual de la pantalla es: " & Resultado & vbCrLf _
        & "Contacte a su programador para que ajuste los parámetros, debido a que " _
        & "posiblemente la visualización de la plantilla no sea la correcta", vbInformation, "Atención"
End Select
End Sub
espero sea de utilidad.

damianomarsilva
Moderador
Moderador

Cantidad de envíos : 12
Fecha de inscripción : 12/03/2008

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.