border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 08-05-2005, 06:42:33
Gran Participación en el Foro
 
Registrado: may 2005
Posts: 195
ikki_26 Valoración +2
Contactar con ikki_26 a través de MSN Contactar con ikki_26 a través de Yahoo
Predeterminado Como lo puedo hacer?

Como puedo hacer para que cuando se ejecute un programa nose muestre solo se minimize en la barra de herramientas al lado de la HORA y que cuando le de click al icono se muestre el programa por ejemplo:

el icono de mysql cuando le das click derecho salen propiedades le das click alli y se muestra una ventana para hacer modificaciones algo asi se alguien puede asesorarme con eso?
__________________
Ikki
Responder Con Cita
  #2 (permalink)  
Antiguo 08-05-2005, 08:25:55
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.266
acalanto ha deshabilitado la reputación
Predeterminado

Debes utilizar SystrayIcon para poner la aplicación en la barra de sistema


Pon estás declaraciones en el formulario principal (o en un módulo público si lo prefieres)


Código:
    'DECLARACIONES DE LA API DE WINDOWS
    Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long


    'ESTRUCTURA SYSTRAY
    Private Type NOTIFYICONDATA
        cbSize As Long             'Tamaño de UDT
        hwnd As Long               'Handle de la aplicación
        uId As Long                'No usado
        uFlags As Long             'Semáforo de acciones
        uCallBackMessage As Long   'Intercambio de mensajes
        hIcon As Long              'Icono de la barra
        szTip As String * 64       'ToolTip de la barra
    End Type


    'Constantes de la API
    Private Const NIM_ADD = &H0             'Nuevo Nid
    Private Const NIM_MODIFY = &H1          'Modificar NID
    Private Const NIM_DELETE = &H2          'Borrar NID
    Private Const NIF_MESSAGE = &H1         'NID Válido
    Private Const NIF_ICON = &H2            'Icono NID inválido
    Private Const NIF_TIP = &H4             'ToolTip válido
    Private Const WM_MOUSEMOVE = &H200      'Nuestro mensaje de retorno
    Private Const WM_LBUTTONDOWN = &H201    'Botón izquierdo presionado
    Private Const WM_LBUTTONUP = &H202      'Boton izquierdo liberado
    Private Const WM_LBUTTONDBLCLK = &H203  'Doble click
    Private Const WM_RBUTTONDOWN = &H204    'Botón derecho presionado
    Private Const WM_RBUTTONUP = &H205      'Botón derecho liberado
    Private Const WM_RBUTTONDBLCLK = &H206  'Doble click (Botón derecho)

    Private nid As NOTIFYICONDATA           'UDT Global para las funciones Systray


En el evento Load del formularioprincipal inserta ésto:


Código:
    With nid
        .cbSize = Len(nid)
        .hwnd = Me.hwnd
        .uId = vbNull
        .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        .uCallBackMessage = WM_MOUSEMOVE
        .hIcon = Me.Icon
        .szTip = "<Etiqueta de texto que se muestra>" & vbNullChar
    End With
    Shell_NotifyIcon NIM_ADD, nid


En el evento Unload esto otro (Para retirar el icono de la barra)




Código:
    With nid
        .cbSize = Len(nid)
        .hwnd = Me.hwnd
        .uId = vbNull
        .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        .uCallBackMessage = WM_MOUSEMOVE
        .hIcon = Me.Icon
        .szTip = "<Etiqueta de texto que se muestra>"& vbNullChar
    End With
    Shell_NotifyIcon NIM_DELETE, nid


y este código para detectar cuando el ratón pasa por el icono de la barra.

Código:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  Dim msg As Long
  If (Me.ScaleMode = vbPixels) Then
    msg = x
  Else
    msg = x / Screen.TwipsPerPixelX
  End If
  'windows 2000, XP
  Select Case Button
    Case 1, WM_LBUTTONDBLCLK   'Mostrar panel de administración
      Me.WindowState = vbNormal
      Call SetForegroundWindow(Me.hwnd)
      Me.Show
    Case 2, WM_RBUTTONUP       'Mostrar menú
      Call SetForegroundWindow(Me.hwnd)
      Me.PopupMenu Me.<nombredelmenú>
    Case WM_LBUTTONUP
  End Select
    'Windows 95 98
  Select Case msg
    Case 513   'Mostrar panel de administración
      Me.WindowState = vbNormal
      Call SetForegroundWindow(Me.hwnd)
      Me.Show
    Case 516
      Call SetForegroundWindow(Me.hwnd)
      Me.PopupMenu Me.<nombredelmenú>
    Case WM_LBUTTONUP
  End Select
End Sub

En el formulario tienes que construir un menú 'no visible' que mostrarás en Me.PopupMenu Me.<nombredelmenú>, en el que lógicamente tendrás que escribir el nombre que tú le hayas dado a dicho menú.



Espero que estás API te resulten de utilidad.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #3 (permalink)  
Antiguo 08-05-2005, 22:45:07
Gran Participación en el Foro
 
Registrado: may 2005
Posts: 195
ikki_26 Valoración +2
Contactar con ikki_26 a través de MSN Contactar con ikki_26 a través de Yahoo
Predeterminado Hola

Disculpa por no entender muy bien pero me sale el siguiente error

Otra cosita no entiendo con eso de crear un menu?

ESpero me ayudes
Imágenes Adjuntas
Tipo de Archivo: jpg error_163.jpg (201,2 KB, 218 visitas)
Responder Con Cita
  #4 (permalink)  
Antiguo 09-05-2005, 06:41:23
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.266
acalanto ha deshabilitado la reputación
Predeterminado

Seguramente has puesto las declaraciones en un módulo aparte del formulario principal. En ese caso debes declarar las funciones de API, estructuras de datos y constantes como públicas y no privadas.

Si insertas un menú en el formulario principal, al pulsar el botón derecho del ratón sobre el icono de la barra, te aparecerá como contextual.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #5 (permalink)  
Antiguo 27-02-2006, 11:22:50
Buena Participación en el Foro
 
Registrado: nov 2005
Ubicación: Reinosa-Cantabria
Posts: 85
Manolillo Valoración +2
Predeterminado

He conseguido mostrar el menú en la barra de herramientas, pero no consigo visualizar el menú emergente... que puede estar pasando?
__________________
Disco-Bar La Calle Reinosa- Cantabria
Responder Con Cita
  #6 (permalink)  
Antiguo 27-02-2006, 11:29:19
Buena Participación en el Foro
 
Registrado: nov 2005
Ubicación: Reinosa-Cantabria
Posts: 85
Manolillo Valoración +2
Predeterminado

Perdón, pero mi post anterior está mal, lo que he conseguido mostrar en la barra de herramientas es el icono, y lo que no consigo ver es el menú...
__________________
Disco-Bar La Calle Reinosa- Cantabria
Responder Con Cita
  #7 (permalink)  
Antiguo 27-02-2006, 15:20:08
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.266
acalanto ha deshabilitado la reputación
Predeterminado

Pero el menú ¿lo has creado?.

Tiene que crear un menú con el editor y ponerlo como invisible P. Ej.


Código:
Opción_A  <-- ÉSTA VISIBLE; APARECERÁ EN EL MENÚ DEL FORM
    Sub_opción A1
    Sub_opción A2
Opción_B  <-- ÉSTA VISIBLE; APARECERÁ EN EL MENÚ DEL FORM
    Sub_opción B1
    Sub_opción B2
    Sub_opción B3
    Sub_opción B2
Opción_C  <-- ÉSTA INVISIBLE; NO APARECERÁ EN EL MENÚ DEL FORM
    Sub_opción C1
    Sub_opción C2
    Sub_opción C3
    Sub_opción C2

Pero si aparecerá cuando el método Form_MouseMove detecte la pulsación del botón derecho sobre el Tray-Icon y ejecuta la sentencia

Código:
Me.PopupMenu Me.Opción_C

Entonces se mostrará el menú emergente con las opciones contenidas.


NOTA: Opción_C es el nombre de la CLAVE y no el TÍTULO del menú.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #8 (permalink)  
Antiguo 28-02-2006, 08:03:00
Buena Participación en el Foro
 
Registrado: nov 2005
Ubicación: Reinosa-Cantabria
Posts: 85
Manolillo Valoración +2
Predeterminado

Estoy colocando el código del Form_MouseMove en el mdi principal y nada, tambien he probado a colocarlo en otros formularios, pero no consigo que se me muestre el menú, el cual tiene la siguiente estructura:

MenuIcono---------->Invisible
......Abrir Aplicacion-->Visible
......Cerrar Aplicacion-->Visible

En el código del Form_MouseMove le pongo esto:

Código:
Me.PopupMenu Me.MenuIcono
No se que es lo que estoy haciendo mal, cuando pulso el botón derecho sobre el icono, nada, no hace nada.
__________________
Disco-Bar La Calle Reinosa- Cantabria
Responder Con Cita
  #9 (permalink)  
Antiguo 28-02-2006, 08:25:28
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.266
acalanto ha deshabilitado la reputación
Predeterminado

Depura con la tecla F8 el método Mouse_Move y determina que valores recoge Button y Msg.

Asegurate que la clave del menú que pretendes mostrar sea MenuIcono
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #10 (permalink)  
Antiguo 28-02-2006, 08:32:17
Buena Participación en el Foro
 
Registrado: nov 2005
Ubicación: Reinosa-Cantabria
Posts: 85
Manolillo Valoración +2
Predeterminado

la clave si que es MenuIcono;
Ni siquiera entra en Form_MouseMove, estoy muy perdido...
__________________
Disco-Bar La Calle Reinosa- Cantabria
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
como puedo hacer esto??? trucutrucu PHP 0 20-09-2007 18:36:38
como puedo hacer esto??? trucutrucu MySQL 4 20-09-2007 17:59:59
¿Cómo puedo hacer un menú en VB 2005 como el de Office 2007? handel777 Visual Basic.NET 2003 & 2005 7 11-08-2007 18:53:18
Como puedo hacer un mantenimiento de horarios ikki_26 PHP 1 02-02-2007 09:33:05
como puedo hacer un login? henry00 ASP.NET 0 13-11-2006 21:29:22


La franja horaria es GMT. Ahora son las 22:27:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right