Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: TheJucas21 en 14 Mayo 2014, 20:28 pm



Título: Ventana siempre visible
Publicado por: TheJucas21 en 14 Mayo 2014, 20:28 pm
Como veran en el titulo.
Lo que busco que es lo siguiente:

Yo programo X programas, y quiero lograr que esten SIEMPRE visibles osea, que aunque abras el navegador ese .exe este delante de el y no que uses otro el otro tambien lo pase...
Se entiende?

Eso me serviria MUCHO y lo vi en varios programas.


Título: Re: Ventana siempre visible
Publicado por: Cj2009z en 15 Mayo 2014, 04:24 am
Necesitas dos commandbutton en el proyecto y pega este código:

Código:
'Constantes para pasarle a la función Api SetWindowPos
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2 '
 
' Función Api SetWindowPos
Private Declare Function SetWindowPos _
    Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal hWndInsertAfter As Long, _
        ByVal X As Long, ByVal Y As Long, _
        ByVal cX As Long, _
        ByVal cY As Long, _
        ByVal wFlags As Long) As Long
 
'En el primer parámetro se le pasa el Hwnd de la ventana
'El segundo es la constante que permite hacer el OnTop
'Los parámetros que están en 0 son las coordenadas, o sea la _
 pocición, obviamente opcionales
'El último parámetro es para que al establecer el OnTop la ventana _
no se mueva de lugar y no se redimensione
 
Private Sub Command1_Click()
    SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, _
                            SWP_NOMOVE Or SWP_NOSIZE
End Sub
 
'Colocamos la ventana en su posicion original:
Private Sub Command2_Click()
'Hacemos lo mismo que en el evento anterior, pero pasandole la otra constante
'para que deje de estar siempre encima de las demás, estado normal
SetWindowPos Me.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub
 
Private Sub Form_Load()
    Command1.Caption = "Siempre visible (Always Ontop)"
    Command2.Caption = "Ventana Normal"
End Sub

espero que te sirva.


Título: Re: Ventana siempre visible
Publicado por: TheJucas21 en 16 Mayo 2014, 01:38 am
Me manda error en esta parte:

Código:
' Función Api SetWindowPos
Private Declare Function SetWindowPos _
    Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal hWndInsertAfter As Long, _
        ByVal X As Long, ByVal Y As Long, _
        ByVal cX As Long, _
        ByVal cY As Long, _
        ByVal wFlags As Long) As Long


Título: Re: Ventana siempre visible
Publicado por: Cj2009z en 17 Mayo 2014, 04:24 am
verifica que estes llamando correctamente la función: verifica esto:

Código:
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
Aqui estas indicando que la ventana este siempre visible(sobre todas).

Código:
SetWindowPos Me.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
y esta es para que la ventana quede normal.

y por último las constantes:
Código:
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2

el código funciona corretamente, solo es que verifiques que lo hayas copiado bien.


Título: Re: Ventana siempre visible
Publicado por: TheJucas21 en 17 Mayo 2014, 19:36 pm
Muchas Gracias! Este seria todo mi codigo del proyect asi para ver si funcionaba.
Código:
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2 '
Private Declare Function SetWindowPos _
    Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal hWndInsertAfter As Long, _
        ByVal X As Long, ByVal Y As Long, _
        ByVal cX As Long, _
        ByVal cY As Long, _
        ByVal wFlags As Long) As Long
Private Sub Command1_Click()
    SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, _
                            SWP_NOMOVE Or SWP_NOSIZE
End Sub

Private Sub Command2_Click()
'Hacemos lo mismo que en el evento anterior, pero pasandole la otra constante
'para que deje de estar siempre encima de las demás, estado normal
SetWindowPos Me.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub

Private Sub Form_Load()
    Command1.Caption = "Siempre visible"
    Command2.Caption = "Ventana Normal"
End Sub
No se si es asi como quisiste decirmelo pero lo puse asi y funciono XD
Gracias!
Suerte!