Limpiar iconos después de TASKKILL en la barra de sistema con Dispose-method

Iniciado por Dsalomon, 17 Septiembre 2012, 02:27 AM

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

Dsalomon

Hola amigos buenas tardes... hoy vengo nuevamente preguntando algo... parecerá simple pero me estorba de gran manera el simple hecho que aparezcan... la cosa es asi:

cuando cierro un programa con la instruccion TASKKILL por ejemplo

Código (dos) [Seleccionar]
TASKKILL /IM Dslogo1.exe /F >nul
exit


me quedan siempre los iconos del programa en cuestión en la barra de sistema de windows, bueno cualquiera me dirá, se borran si pasas el cursor sobre el... pues bien asi es... pero desearía que se hiciera automáticamente al correr el código y busque por el foro y don google pero únicamente aye este:


Citar
En la mayoría de casos se trata de contenedores de objetos que no son parte del árbol de los componentes de la aplicación que no desaparecen por matar a los procesos. Cuando el usuario se desplace sobre el icono, el icono no considera los padres por lo que desaparece.

...Sin embargo, mediante una llamada al Dispose-method , desapareció al menos mis aplicaciones

si me permiten pongo la web pero esta en ingles:

http://wwv.comanswer.com/question/tray-icon-does-not-disappears-on-killing-process

Código (vb) [Seleccionar]
//creating a NotifyIcon
NotifyIcon notifyicon = new NotifyIcon();
notifyicon.Text = "Logo Ds canal";
notifyicon.Visible = true;
notifyicon.Icon = new Icon(GetType(),"Icon.ico");
//let it disappear
notifyicon.Dispose();



por mi pequeña deducción seria así pero no me funciona...


Código (dos) [Seleccionar]
TASKKILL /IM Dslogo1.exe /F >nul

(
Echo Set objShell = WScript.CreateObject("WScript.Shell"^)
Echo NotifyIcon notifyicon = new NotifyIcon();
Echo notifyicon.Text = "Logo Ds canal";
Echo notifyicon.Visible = true;
Echo notifyicon.Icon = new Icon(GetType(),"Icon.ico");
::let it disappear traduccion: dejar que desaparezcan
Echo notifyicon.Dispose();
)

exit


antes de los codigos digo:


1. el proceso a cerrar se llama: Dslogo1 y este se inicia minizado en la barra de sistema

2. el nombre que aparece en la barra de sistema es "Logo Ds canal" no como el nombre del proceso




como siempre desde ya gracias...

Eleкtro

Hola,

Cita de: Dsalomon en 17 Septiembre 2012, 02:27 AM
Código (dos) [Seleccionar]
TASKKILL /IM Dslogo1.exe /F >nul

(
Echo Set objShell = WScript.CreateObject("WScript.Shell"^)
Echo NotifyIcon notifyicon = new NotifyIcon();
Echo notifyicon.Text = "Logo Ds canal";
Echo notifyicon.Visible = true;
Echo notifyicon.Icon = new Icon(GetType(),"Icon.ico");
::let it disappear traduccion: dejar que desaparezcan
Echo notifyicon.Dispose();
)

exit


Muy mala deducción.

1º - El lenguaje no es VisualBasicScript
2º - El código no sirve para ese propósito

NotifyIcon es una classe para utilizar en un lenguaje de programación (Programando una aplicación en C, Java, VB, etc..), y en el código muestran solo un ejemplo para mostrar/ocultar un icono del programa (No del programa que a uno le apetezca...)
http://msdn.microsoft.com/en-us/library/9szb3e6y.aspx

No tiene nada que ver.

Aparte, en el link que has posteado, fíjate mejor en la pregunta y en la 2 respuesta:
Cita de: preguntaHi, I have a window service for my application. When i stops that by killing process with task manager, tray icon does not disappears.

Cita de: mejor respuestaThere is no solution to this problem. If you kill process with task manager, it does not receive termination notification, and hence can not remove its icon from the tray. Try avoiding killing process this way.

Puedes intentarlocon wmic, o con pskill, aúnque es una tontería, el resultado va a ser el mismo...
Código (dos) [Seleccionar]
wmic.exe process Where caption="PROGRAMA.exe" Call Terminate
pskill: http://technet.microsoft.com/en-us/sysinternals/bb896683.aspx

No existe una solución a ese problema, ni con aplicaciones de terceros. es malgastar el tiempo :-\

un saludo










Dsalomon

Cita de: EleKtro H@cker en 17 Septiembre 2012, 08:44 AM
Muy mala deducción.

:xD

gracias...

pues la otra vez prube haciendo una programación con un programa llamado Vtask studio pero lo mas cercano que hice fue hacer que el raton pasara encima de esa area y asi los borraba...pero no me parecio muy bueno... por eso ya no lo hice...

gracias por tus comentarios... 

entonces TEMA CERRADO...    :-(

Eleкtro

#3
Cita de: Dsalomon en 17 Septiembre 2012, 10:38 AMVtask studio

Es lo único que puedes hacer... Pero para simular el movimiento del ratón no te tienes que ir muy lejos ni instalar aplicaciones grotescas xD, te comenté que "nircmd" te serviria para muchas cosas en el futuro...

Puedes probar si quieres el programa "Autoclicker infiniter", digamos que es una GUI para esas funciones del nircmd xD (Lleva dentro el nircmd.exe)

Cita de: puntoinfinito

http://www.infiniter.vacau.com/autoclicker-infiniter.html

Saludos.