¿Cómo puedo cambiarle el icono a un programa emplazado en la barra de tareas?

Como le puedo cambiar el icono a un programa que está cargado en la barra de tareas al lada del reloj, Por ejemplo el Norton. También me valdría que no se viera.
Creo que es en el registro de windows, pero no se donde está.

4 respuestas

Respuesta
1
No tiene que ser en el registro. Es el mismo programa el que pone el icono en el system tray. Lo que puedes hacer es con la API GetWindow y el nombre de la ventana, (que lo obtienes con el spy++ de Microsoft C++) hacerlo invisible o algo similar, para ello usarías otras SDKs. Pero es algo poco usual. Lo más lógico es si no quieres que se vea, pero que se este ejecutando es que lo lances en plan servicio o comando de DOS.
Cada programa es distinto. Que quieres hacer, y con que programa y trato de orientarte sobre como hacerlo.
Ah, se me olvidaba. SI no quieres progrmarlo tu, lo que si que hay son aplicaciones que se encargan de eso
Lo vi en esta página :http://www.freedownloadscenter.com/Shell_and_Desktop/System_Tray_Enhancers/
Nunca he quitado, si ni era un icono mio.
Lo hacia con estas API :
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
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
Public Const SWP_HIDEWINDOW = &H80
Public Const SWP_SHOWWINDOW = &H40
Dim rtn As Long
' Para ocultar :
rtn = FindWindow("Shell_traywnd", "") 'get the Window
Call SetWindowPos(rtn, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
'Para mostrar
rtn = FindWindow("Shell_traywnd", "") 'get the Window
Call SetWindowPos(rtn, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
Pero quiza sea demasiado bruto.
Si quieres algo mas sencillo, necesitas mas detalles :
Veamos, lo más importante que necesitas para quitar el icono la ventana es la función Shell Notify Window. De las APIs o SDKs.
Para quitar el icono, debes rellnarte una estructura de datos de este tipo :
Public Type TIPONOTIFICARICONO
cbSize As Long
hWnd As Long
uId As Long
uFlags As Long
ucallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Y llamar a la funcion despues de dar valor a los datos de un modo parecido a este :
dim t as TIPONOTIFICARICONO
t.cbSize = Len(t)
t.hWnd = Picture1.hWnd
t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
t.ucallbackMessage = WM_MOUSEMOVE
t.hIcon = Me.Icon
t.szTip = "Athrarn" & Chr$(0) ' Es un string de "C" ( \0 )
Te declaras Shell_NotifyIcon
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As TIPONOTIFICARICONO) As Boolean
Y lo lanzas de este modo :
Public Const NIM_DELETE = &H2
t.cbSize = Len(t)
t.hWnd = hWnd
't.uId = 1&
Shell_NotifyIcon NIM_DELETE, t
Así lo eliminas.
Pero, claro, lo difícil es encontrar hWnd que es el manejador de la ventana.
Para ello tienes que instalarte un programa como el SPY ++ de C++ y buscar el handler del icono en cuestión con la función Find Window.
Es difícil que te explique todo por aquí, prueba y preguntame las dudas según te salgan.
Respuesta
No creo que le puedas cambiar el icono a un programa como el Norton, pero quizá si a uno que tu hayas hecho.
No se como pero en esta página puedes encontrar muchos trucos como ese
http://www.mvps.org/vbnet/
Respuesta
-1
Lo siento amigo pero no tengo ni idea de como hacer eso.
Mi trabajo en Visual Basic está orientado a trabajar con Bases de datos.
Respuesta
-1
No, esa opción solo la tiene el programa en ejecución, nadie puede cambiar eso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas