Varias preguntas sobre aplicacion, etc..

Iniciado por Sai-To, 16 Mayo 2008, 22:49 PM

0 Miembros y 1 Visitante están viendo este tema.

Sai-To

Saludos bueno e llegado con varias dudas espero que me las puedan explicar:

1- como puedo por ejemplo si tengo una aplicacion y cuando la minimize desaparesca pero no se cierre osea que aparezca el icono y cuando le de doble click o click derecho salga un menu que me permita restaurar esa aplicacion? tipo Nod32, msn, cualierp orgrama..

2- en funciones msn hay mucahs funciones que en VB6 no encuentro como usarlas ni buena info de como se utiliza y estan son:

OnMyFriendlyNameChange
OnContactBlockChange
OnMyStatusChange


osea como se deeclaran y usan estas funciones?..

espero no ser molestia para ustedes y gracias! ;)

naderST

Cita de: brache en 16 Mayo 2008, 22:49 PM
Saludos bueno e llegado con varias dudas espero que me las puedan explicar:

1- como puedo por ejemplo si tengo una aplicacion y cuando la minimize desaparesca pero no se cierre osea que aparezca el icono y cuando le de doble click o click derecho salga un menu que me permita restaurar esa aplicacion? tipo Nod32, msn, cualierp orgrama..

2- en funciones msn hay mucahs funciones que en VB6 no encuentro como usarlas ni buena info de como se utiliza y estan son:

OnMyFriendlyNameChange
OnContactBlockChange
OnMyStatusChange


osea como se deeclaran y usan estas funciones?..

espero no ser molestia para ustedes y gracias! ;)

Lo primero buscate un ejemplo, se hace con el api Shell_NotifyIcon.

Lo otro no son funciones son eventos y el primero es para cuando cambias el nick, el segundo es si bloqueas o desbloqueas a un contacto y el tercero es cuando cambias de estado.

Sai-To

gracias!.. man pero lo del segundo si se para que son pero no se como se utiliza!:S

naderST

Cita de: brache en 17 Mayo 2008, 00:20 AM
gracias!.. man pero lo del segundo si se para que son pero no se como se utiliza!:S

prueba... mira este ejemplo


Option Explicit

Private WithEvents MSN As MessengerAPI.Messenger

Private Sub Form_Load()
    Set MSN = New Messenger
End Sub

Private Sub MSN_OnContactBlockChange(ByVal hr As Long, ByVal pContact As Object, ByVal pBoolBlock As Boolean)
    Dim Contacto As IMessengerContact
   
    Set Contacto = pContact
   
    Select Case pBoolBlock 'Se bloqueo o se desbloqueo?
        Case True 'Se bloqueo
            MsgBox Contacto.SigninName & " ha sido bloqueado"
        Case False 'Se desbloqueo
            MsgBox Contacto.SigninName & " ha sido desbloqueado"
    End Select
End Sub

Private Sub MSN_OnMyFriendlyNameChange(ByVal hr As Long, ByVal bstrPrevFriendlyName As String)
    'Funciona solo para el Windows Messenger
End Sub

Private Sub MSN_OnMyStatusChange(ByVal hr As Long, ByVal mMyStatus As MessengerAPI.MISTATUS)
    MsgBox mMyStatus 'Devuelve el numero de estado al que se cambio.
End Sub

|_ZiRaZ_|

bien mira..este codigo que te pondre aqui ponlo en tu formulario..


'Api SetForegroundWindow Para traer la ventana al frente
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

'estructura NOTIFYICONDATA
Private Type NOTIFYICONDATA
    cbSize As Long
    hwnd As Long
    uID As Long
    uFlags As Long
    uCallbackMessage As Long
    hIcon As Long
    szTip As String * 64
End Type

'Constantes para las acciones
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4

'Constantes para los botones y le mouse
Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
Private Const WM_RBUTTONDBLCLK = &H206

'función Api Shell_NotifyIcon
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

'variable para la estructura
Dim systray As NOTIFYICONDATA

' luego esto
Private Sub Form_Activate()
PonerSystray
End Sub
' sigue
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

  Select Case msg
    Case WM_LBUTTONDBLCLK
      'Si hacemos doble click con el botón izquierdo restauramos el form
        Me.WindowState = vbNormal
        Call SetForegroundWindow(Me.hwnd)
        Me.Show
     
    Case WM_RBUTTONUP
      Call SetForegroundWindow(Me.hwnd)
      'Si hacemos Click con el boton derecho mostramos el popup Menu
      Me.PopupMenu Me.mnuPopUp
   
    Case WM_LBUTTONUP

  End Select
End Sub
Private Sub RemoverSystray()
Shell_NotifyIcon NIM_DELETE, systray
End Sub

Private Sub Form_Resize()
If (Me.WindowState = vbMinimized) Then Me.Hide
End Sub

'el sub de sustray
Private Sub PonerSystray()
   
    'Tamaño de la estructura systray
    systray.cbSize = Len(systray)
    'Establecemos el Hwnd, en este caso del formulario
    systray.hwnd = Me.hwnd
    'Esto es un identificador
    systray.uID = vbNull
    'Flags
    systray.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    'Establecemos el mensaje callback
    systray.uCallbackMessage = WM_MOUSEMOVE
    'establecemos el icono, en este caso el que tiene el form, puede ser otro
    systray.hIcon = Me.Icon
    'Establecemos el tooltiptext
    systray.szTip = Me.Caption & vbNullChar
    'Ponemos el icono en el systray
    Shell_NotifyIcon NIM_ADD, systray
   
End Sub

ok con eso tendra ya tu icono en el sustray kon opciones en el boton derecho cuando se este por ensima de el icono acuerdate que el ese nombre del nombre del menu que esta ahi es de mi aplicacion puedes kambiarlo si lo deseas.. si tienes alguna duda no o te sivio el code hasmelo sabe..espero que te sirva (y)
" Los Detalles hacen que las cosas comunes sean direfentes" RøBeRT-SøFt "