elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ventana siempre visible
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ventana siempre visible  (Leído 2,003 veces)
TheJucas21

Desconectado Desconectado

Mensajes: 43


Ver Perfil
Ventana siempre visible
« 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.


En línea

Cj2009z

Desconectado Desconectado

Mensajes: 52


Ver Perfil
Re: Ventana siempre visible
« Respuesta #1 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.


En línea

TheJucas21

Desconectado Desconectado

Mensajes: 43


Ver Perfil
Re: Ventana siempre visible
« Respuesta #2 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
En línea

Cj2009z

Desconectado Desconectado

Mensajes: 52


Ver Perfil
Re: Ventana siempre visible
« Respuesta #3 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.
« Última modificación: 17 Mayo 2014, 04:25 am por Cj2009z » En línea

TheJucas21

Desconectado Desconectado

Mensajes: 43


Ver Perfil
Re: Ventana siempre visible
« Respuesta #4 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!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines