Tengo varios procesos programados en mi entorno de Windows 7, principalmente para copias de seguridad, que se supone que se ejecutan en segundo plano.
Sin embargo, en lugar de simplemente hacer su trabajo silenciosamente en segundo plano, el programador de tareas muestra una ventana negra (como la consola) "taskeng.exe". La ventana va delante de todas las demás ventanas. Afortunadamente, no roba el foco de mi teclado, pero bloquea la vista de todo.
¿Hay alguna manera de evitar esta ventana, o al menos hacer que aparezca en segundo plano sin robar mi enfoque VISUAL?
Ejemplo editado después de la recompensa aplicada:
Aquí está mi último intento de usar el material WScript (en un archivo llamado RunSignatured.bat):
Set Shell = CreateObject("WScript.Shell")
Shell.Run C:\Users\danh\Bin\signatured.bat, 0, False
El archivo signatured.bat contiene:
cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\java.exe" Signature
Respuestas:
Más específicamente a la recompensa / ejemplo de Daniel R Hicks, pero creo que todavía se puede aplicar al problema original:
Si se trata de un archivo por lotes que se inicia desde el Programador de tareas, en lugar de simplemente iniciar el archivo por lotes minimizado / invisible, probablemente también deba modificar el archivo por lotes para ejecutar sus comandos de forma invisible.
Entonces cambia:
A algo como:
O tal vez elimine el archivo por lotes completamente y simplemente haga todo desde el script (VBS) que está iniciando directamente desde el Programador de tareas.
Algo como:
Solución implementada por DanH, en respuesta a las sugerencias de techie007, satisfaciendo la recompensa:
Un archivo, llamado RunSignatured.vbs, que contiene:
Tenga en cuenta que lo anterior depende de que java.exe esté en ruta, ya que la técnica no funciona con el espacio en blanco en Archivos de programa al especificar una ruta completa. No hay duda de otras formas de solucionar este problema, pero eso es para que otros lo descubran.
Luego agregue
RunSignature.vbs
como el nombre del "programa / script" en la "Acción" en el Programador de tareas.fuente
start /b
enfoque. Nada parecía eliminar la ventana: creo que ya se creó cuando comienzas a ejecutar el archivo bat, así que para entonces ya es demasiado tarde.java
está avanzando en el camino de búsqueda OK.)Puede ejecutar las tareas programadas como un usuario diferente, de esa manera no interactuarán con el escritorio interactivo de su cuenta normal. Esto ciertamente parece funcionar en los servidores Windows2003 que administro. Solo tenga cuidado de asegurarse de que los permisos de los archivos y otros detalles de autenticación estén configurados de modo que las tareas puedan acceder a lo que necesitan cuando están como este usuario diferente.
Editar: O en lugar de ejecutar una herramienta de consola directamente, podría tener un pequeño script que lo ejecuta usando WScript.Shell.Run con la opción "minimizar, sin cambio de foco":
luego ejecute esto con el programador de tareas (la línea de comando es algo así como
wscript c:\scripts\test.vbs
) en lugar de llamar a la herramienta directamente. También debería poder llamar a archivos por lotes y otros scripts de esa manera. También hay una opción de "ocultar completamente" (reemplace el 7 anterior con un 0), aunque en cualquier caso el ocultar / minimizar solo controla la ventana inicial: si la herramienta se abre más por sí misma, entonces aún pueden robar el foco como antes.Consulte http://msdn.microsoft.com/en-us/library/d5fk67ky%28VS.85%29.aspx para obtener una lista completa de opciones para el método de ejecución.
fuente
Intente ejecutar su tarea programada de esta manera:
El
start /b
debe iniciar la aplicación sin necesidad de crear una nueva ventana.Si esto no funciona, puede crear una secuencia de comandos AutoIt independiente que ocultará la ventana taskeng.exe. Los scripts de AutoIt se pueden compilar en un archivo .exe.
El .exe sería la primera línea en su archivo mybackup.bat. El código de AutoIt se vería así:
fuente
Prueba 4trayMinimizer . Puede definir aplicaciones que están ocultas de forma predeterminada.
fuente
La forma más sencilla de ocultar una aplicación iniciada desde el Programador de tareas es establecerla en "Ejecutar si el usuario inició sesión o no". Esta configuración se puede encontrar en la pestaña General de las propiedades de la tarea programada.
fuente
Aquí está el script SyncToy que uso. Observe las múltiples comillas alrededor de la ubicación del archivo:
fuente
Aparentemente ha instalado SQLyog MySQL GUI , que ha programado la ejecución del Agente de trabajo SQLyog . Parece que es una aplicación de consola que no intenta ocultarse.
Debe buscar en el Programador de tareas una tarea que se refiera a SQLyog y corregir su entrada. Si se trata de una llamada de cmd, intente agregar
/b
a la lista de parámetros. Si es solo una llamada a un ejecutable, puede corregirlo en vista de esta respuesta mía .Si tiene problemas para localizar esta entrada, use las ejecuciones automáticas para encontrar cómo se inicia SQLyog. También puede usar regedit para buscar todas las menciones de SQLyog o el nombre de su directorio de instalación.
Por supuesto, también puede desinstalar SQLyog MySQL GUI, si no lo necesita.
Si no instaló SQLyog MySQL GUI, entonces su computadora podría estar infectada. Puede usar Process Monitor para verificar cuándo aparece la ventana emergente, para ver si es el taskeng.exe de system32 o uno de los Lookikes similares de Taskeng.exe .
fuente
Estaba teniendo el problema exacto usando SQLyog después de investigar un poco, lo arreglé creando un archivo llamado
invisible.vbs
e insertando este código:¡Entonces cree un Programador de tareas para ejecutar el
invisible.vbs
archivo y listo!fuente