Aplicación en memoria

30/06/2003 - 16:01 por Jorge Delgado | Informe spam
Hola a todos,

Tengo una pregunta y espero me puedan ayudar.

Quiero hacer una pequeña aplicación con Visual Basic, la
cual no necesita de ningún formulario, pero si necesita
estar cargada en memoria. Quiero que aparezca almenos un
ícono de la aplicación en la barra de tareas junto al
reloj (no sé como se llama esa area). Cómo puedo hacer
esto?

Si me alguien me dice como o me orientan un poco se los
agradeceré muchísimo.

Gracias de antemano por su atención.

Atte. Jorge Delgado.
 

Leer las respuestas

#1 Federico A. Colli
30/06/2003 - 17:07 | Informe spam
Para dejar iniciar una app sin interfaz deberías tener al menos un módulo
con el procedimiento llamado Sub(), en las propiedades del proyecto seteas
esto como objeto inicial y listo.
Ahora, para dejarlo cargado en memoria depende de como lo hagas, porque una
vez terminado el procedimiento termina la app.

Para colocar un ícono en el Sistray necesitas el handle de un formulario,
porque luego si quieres hacer click en su íncono se va a disparar el evento
Click de dicho formulario, no probé y no se si funciona si no tienes un
frmulario, utilizá este código con un formulario (Form1):
-
Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA"
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4

Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_RBUTTONUP = &H205

Public 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


Public Sub AgregarIconoSisTray()
TrayI.cbSize = Len(TrayI)
'Set the window's handle (this will be used to hook the specified window)
TrayI.Hwnd = Form1.Hwnd
'Application-defined identifier of the taskbar icon
TrayI.uId = 1&
'Set the flags
TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
'Set the callback message
TrayI.ucallbackMessage = WM_LBUTTONDOWN
'Set the picture (must be an icon!)
TrayI.hIcon = Form1.Icon
'Set the tooltiptext
TrayI.szTip = "Mi aplicación" & Chr$(0)
'Create the icon
Shell_NotifyIcon NIM_ADD, TrayI

End Sub

Public Sub QuitarIconoSisTray()
'Quitar el icono en el Sistem Tray
TrayI.cbSize = Len(TrayI)
TrayI.Hwnd = Form1.Hwnd
TrayI.uId = 1&
Shell_NotifyIcon NIM_DELETE, TrayI
End Sub

Esto para cambiarle el ícono y caption en el sistray:

Public Sub CambiarTray(ByVal Tipo As Integer)
'TrayI.hIcon = imgIconos.ListImages.Item(Tipo).ExtractIcon
TrayI.hIcon = algún icono

If Tipo = 1 Then
TrayI.szTip = "Mi aplicación" & Chr$(0)
ElseIf Tipo = 2 Then
TrayI.szTip = "Mi aplicación maximizada" & Chr$(0)
ElseIf Tipo = 3 Then
TrayI.szTip = "Doble click?" & Chr$(0)
End If

Shell_NotifyIcon NIM_MODIFY, TrayI
End Sub


Saludos
(AUS) Federico A. Colli

"Jorge Delgado" escribió en el mensaje
news:05e501c33f10$2a893e90$
Hola a todos,

Tengo una pregunta y espero me puedan ayudar.

Quiero hacer una pequeña aplicación con Visual Basic, la
cual no necesita de ningún formulario, pero si necesita
estar cargada en memoria. Quiero que aparezca almenos un
ícono de la aplicación en la barra de tareas junto al
reloj (no sé como se llama esa area). Cómo puedo hacer
esto?

Si me alguien me dice como o me orientan un poco se los
agradeceré muchísimo.

Gracias de antemano por su atención.

Atte. Jorge Delgado.

Preguntas similares