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

 

 


Tema destacado: Estamos en la red social de Mastodon


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


Desconectado Desconectado

Mensajes: 842



Ver Perfil
Proceso
« en: 26 Septiembre 2005, 20:15 pm »

Bueno hace algun tiempo hice un programilla en VB que me resolvía muchíiiisimos problemas solo con ejecutarlo.
Pero es un proceso largo, y estoy pensando en añadirle una opcion para minimizarlo al tray.

Mis preguntas son dos:

-Con los códigos que circulan por la Red para añadir un icono al tray... ¿El Timer que realiza las operaciones periodicamente seguirá haciéndolo, aunque el form este minimizado en el susodicho tray?

-Se les ocurre alguna manera de que el icono del tray muestre un color segun como de avanzado vaya el progreso?
(ej. verde terminado, rojo empezando, naranja a mitad)
Gracias por vuestro tiempo!
Saludos


En línea

Proyecto de Ingeniero
NYlOn


Desconectado Desconectado

Mensajes: 842


OOOOHHHHHH, TARAGÜIIII xDDDDDD


Ver Perfil WWW
Re: Proceso
« Respuesta #1 en: 26 Septiembre 2005, 22:44 pm »

Hola Acosta:
el codigo para poner un icono el la barra de tareas es este:

En un modulo, pone este
Código:
Public nid As NOTIFYICONDATA
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public Const WM_CHAR = &H102
Public Const WM_SETTEXT = &HC
Public Const WM_USER = &H400
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_CLOSE = &H10
Public Const WM_COMMAND = &H111
Public Const WM_CLEAR = &H303
Public Const WM_DESTROY = &H2
Public Const WM_GETTEXT = &HD
Public Const WM_GETTEXTLENGTH = &HE
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 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_MOUSEMOVE = &H200
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

'Iconos
Sub Icono()
With nid
.cbSize = Len(nid)
.hwnd = Form1.hwnd 'nombre del form que estara minimizado
.uId = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
.hIcon = Form1.Icon 'nombre del formulario que contiene el icono
End With
Shell_NotifyIcon NIM_ADD, nid
End Sub
Sub NoIcono()
Shell_NotifyIcon NIM_DELETE, nid
End Sub

Resto del codigo:
Código:
Private Sub Form_Load ()
Icono 'muestra el icono
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim Result As Long
    Dim msg As Long
    If Me.ScaleMode = vbPixels Then
    msg = X
    Else
    msg = X / Screen.TwipsPerPixelX
    End If
    Select Case msg
        Case 517 'click derecho en el icono
            Form1.PopupMenu mnuHola
        Case 514
            Result = SetForegroundWindow(Me.hwnd) 'click izquierdo en el icono
    End Select

End Sub

Private Sub Form_Unload(Cancel As Integer)
NoIcono 'para sacar el icono cuando cerras la aplicacion
End Sub

y para cambiar el icono segun el estado de tu aplicacion tenes q poner un ImageList y cargas las imagenes que necesitas. Despues pones el siguiente code en cada evento que necesites:
Código:
Private Sub Command1_Click()
    NoIcono
    Set Icon = ImageList1.ListImages(1).ExtractIcon 'en el (1) depende del lugar en que este tu imagen
    Icono
End Sub

esper0 q te haya sido util ;)
un salud0

G0nz4


En línea

Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Proceso
« Respuesta #2 en: 27 Septiembre 2005, 00:28 am »

No creo que cambiandole el ícono al formulario funcione porque cambia el handle.

Lo mejor es eliminar el ícono (en este caso procedimiento NoIcono) y volver a crearlo (procedimiento Icono), sólo modificas un poco el procedimiento anterior para que le pase el handle al ícono que va a usar (propiedad Handle del objeto Icon del formulario o cualquier objeto IPictureDisp). El icono lo podés cargar desde un archivo o bien desde un recurso, que esto último es lo que se debería hacer.

El Timer sí sigue funcionando de la misma manera ya que es un mensaje que se le envía a la ventana y la ventana existe, sólo que está oculta.

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
NYlOn


Desconectado Desconectado

Mensajes: 842


OOOOHHHHHH, TARAGÜIIII xDDDDDD


Ver Perfil WWW
Re: Proceso
« Respuesta #3 en: 27 Septiembre 2005, 00:35 am »

Citar
No creo que cambiandole el ícono al formulario funcione porque cambia el handle.

Si, si funciona...
Escribi el code en vb y lo probe dsp xD

Ah, y que es eso de 'cargar el icono desde un recurso' ??
a que te referis con es0 ??

un salud0
En línea

Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Proceso
« Respuesta #4 en: 27 Septiembre 2005, 00:45 am »

Creas un archivo de recursos, después guardas un ícono en el archivo y con la función LoadResPicture cargas el recurso especificando el identificador.

El identificador es un valor de tipo numérico o de cadena que viene a ser el nombre de un recurso. En el caso de las tablas de cadenas siempre es un número.

Por ejemplo el siguiente código cargaría un ícono dependiendo de un estado determinado

Código:
Const STATUS_BUSY = 1
Const STATUS_FREE = 2
Const STATUS_WAIT = 3

Sub LoadIcon(Status As Integer)
      Dim csPicture As IPictureDisp
      Dim sRsrc$

  Select Case Status
    Case STATUS_BUSY: sRsrc = "ICON1"
    Case STATUS_FREE: sRsrc = "ICON2"
    Case STATUS_WAIT: sRsrc = "ICON3"
  End Select
 
  Set csPicture = LoadResPicture(sRsrc, vbResIcon)
End Sub

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
NYlOn


Desconectado Desconectado

Mensajes: 842


OOOOHHHHHH, TARAGÜIIII xDDDDDD


Ver Perfil WWW
Re: Proceso
« Respuesta #5 en: 27 Septiembre 2005, 01:35 am »

:O

gracias Polux ;)

un salud0
En línea

_Sergi_


Desconectado Desconectado

Mensajes: 842



Ver Perfil
Re: Proceso
« Respuesta #6 en: 28 Septiembre 2005, 19:30 pm »

Lo mismo digo.

Muchas gracias otra vez a todos por la info y por los codes.
En línea

Proyecto de Ingeniero
NYlOn


Desconectado Desconectado

Mensajes: 842


OOOOHHHHHH, TARAGÜIIII xDDDDDD


Ver Perfil WWW
Re: Proceso
« Respuesta #7 en: 28 Septiembre 2005, 22:11 pm »

de nada :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Imagebase o BaseAddress de un proceso[HELP]
Programación Visual Basic
ignorantev1.1 0 1,641 Último mensaje 2 Diciembre 2011, 09:21 am
por ignorantev1.1
Buscar proceso
.NET (C#, VB.NET, ASP)
GameAndWatch 4 2,882 Último mensaje 30 Enero 2012, 11:03 am
por kub0x
Selccionar tarjeta de red que usa un proceso
Redes
Foantaros 3 2,265 Último mensaje 20 Agosto 2012, 16:16 pm
por USLO
Problemas con el proceso browserprotect.exe!!!!
Windows
01munrra 6 4,311 Último mensaje 7 Abril 2013, 14:11 pm
por 01munrra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines