Ver Mensaje Individual
  #8 (permalink)  
Antiguo 23/11/2005, 18:38
Avatar de (Pato)²
(Pato)²
 
Fecha de Ingreso: noviembre-2005
Mensajes: 130
Antigüedad: 18 años, 6 meses
Puntos: 1
Cita:
Iniciado por David el Grande
Código:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Sub Form_Load()
Dim hWnd As Long
Dim buffRECT As RECT
hWnd& = FindWindow("Shell_TrayWnd", "")
If hWnd > 0 Then
    Dim res As Long
    res = GetWindowRect(hWnd, buffRECT)
    If res > 0 Then
        MsgBox "El Tamaño del Systray es: " & CStr(buffRECT.Bottom - buffRECT.Top) & " px.", vbInformation, "Tamaño"
    End If
End If
End Sub
A eso me refería, en éste código llamamos a la API: las funciones:
FindWindow -> Nos permite encontrar el hWnd de una ventana sabiendo su nombre de clase (en nuestro caso Sys_TrayWnd) o su Título ("" en nuestro caso pues el Systray no tiene título).
GetWindowRect -> Nos permite obtener el rectángulo a partir del hWnd de un Objeto.

Además, definimos un tipo que nos pide como parámetro el GetWindowRect, o sea RECT (creo que ya debes saber qué son Tipos)...

Y así, ya que nuestro RECT pasa como "ByRef" la API puede modificarlo, lo que en el caso lo modifica poniendo en él los valores del rectángulo del Systray....

Espero no haberte confundido, nos vemos...
gracias David, lo que me pasaste anda bien, salvo por 2 cositas:
1º me aparece en pixeles, entonces no me sirve para remplasarlopor 450 del codigo original
2º si lo remplaso, multiplicandolo por 15 o 15,2 (que es mas o menos la relacion que encotre entre las 2 unidades), no funca, y se me ve abajo del todo y sin el efecto de Slide (osea, aparece de una)...

gracias!

(Pato)²