Automatizar procesos...pero no por tiempo

Hola..es que estoy buscando un programa para que al terminar un proceso se abra otro.

Me he bajado el "kiwi application monitor" que me funciona perfectamente en XP. Donde puedes añadir el nombre de un proceso, y decirle que cuando se cierre, abra otro. O que cuando empiece ejecute otro. Entre otras muchas opciones. La pega es que yo uso el vista ultimate x64. Y no funciona bien. En el foro de la web del programa pone esto:

In order for the program to run on a 64-bit Vista, you should overwrite 'System.Data.SQLite.DLL' with an 64-bit version

Pero cuando lo sustituyo, windows me da un mensaje de error al intentar ejecutarlo. (tipico mensaje de "buscar solucion en linea")

Si no sustituyo el DLL, e intento añadir un proceso y configurar las acciones, el kiwi me da este mensaje.....(bueno no se si el kiwi o el visual basic....ya que el primer mensaje esta en ingles (del kiwi supongo) y el segundo en castellano (visual..??):

Error processing the alerts and actions
y al darle a detalles:
Error processing the alerts and actions!
System.InvalidCastException: El operador "=" no esta definido para tipo "DBNull" ni para tipo "Boolean" en MicrosoftVisualBasic.ComplierServices.Operators.ConditionalCompareObjectEqual(Object Left ObjectRight Boolean TextCompare) en Kiwi_Application_Monitor.d.g()


o algo asi.......¬¬


Y como no se nada sobre visual basic....pues no puedo hacer mucho.

En resumen....necesito "algo" para poder ejecutar un programa automaticamente al cerrar otro.

He visto muchos otros programas del estilo, pero todos son por periodicidad...y yo no necesito activar o desactivar a cierta hora..

Si supiera como hacer...no se...una comparacion desde msdos para saber si un proceso esta activo o no, y crearme un bat....o algo...no se.....

Gracias de antemano !!!!
Buenas, te pongo el código en Batch para que lo puedas usar en un archivo BAT:
@echo off
:bucle
if exist "%TEMP%\tasklist.csv" del /f /q "%TEMP%\tasklist.csv" > nul
tasklist /fo csv > "%TEMP%\tasklist.csv"
find "proceso1.exe" "%TEMP%\tasklist.csv" > nul
if %errorlevel% equ 0 goto bucle
if %errorlevel% equ 1 goto ejecutar
:ejecutar
if exist "%TEMP%\tasklist.csv" del /f /q "%TEMP%\tasklist.csv" > nul
"U:\ruta\proceso2.exe"
exit

Te explico:
  • La etiqueta bucle se encarga de: en caso de existir el archivo temporal tasklist.csv borrarlo para que no haya problemas, sacar una lista de los procesos activos a dicho archivo y después buscar en éste el proceso1.exe (sustitúyelo por el tuyo). En caso de que lo encuentre, se repite al bucle (porque el proceso sigue en ejecución) y si no lleva a la etiqueta ejecutar.
  • La etiqueta ejecutar lo que hace es, simple y llanamente, borrar el archivo temporal de antes en caso de que exista y ejecutar U:\ruta\proceso2.exe, que tendrás que sustituir por la ruta del proceso que quieras que se ejecute (mantén las comillas por si la ruta contiene espacios).
Tu tarea es cambiar los valores que te he dicho y ejecutar el BAT, que se encargará del resto ;)

Saludos.
Gracias...eres un hacha tio.

Ahora lo pruebo.

Por curiosidad...el archivo csv....es algun tipo de txt o tabla? Lo creas tu, o es de windows. Quiero decir si windows crea este archivo al iniciar o al cambiar algun proceso....??

Gracias otra vez.
MceBG escribió:Gracias...eres un hacha tio.

Ahora lo pruebo.

Por curiosidad...el archivo csv....es algun tipo de txt o tabla? Lo creas tu, o es de windows. Quiero decir si windows crea este archivo al iniciar o al cambiar algun proceso....??

Gracias otra vez.

Es texto normal, CSV es el formato de salida de la lista de procesos, podría haber puesto TXT igualmente.
Lo creas tú a partir de la salida del tasklist, si quieres prueba a hacer uno que salga a un TXT y así ves de lo que se trata.

De nada ^^

Saludos.
No me funciona, o algo hago mal....es decir funciona, pero funciona siempre.

Voy a explicar exactamente lo que quiero hacer.

Tengo el windows vista ultimate x64 como media center.
Como el Media center no me gusta, uso el XBMC, pero como este no tiene sintonizador de TV, uso esa aplicacion del Media Center de Windows, por lo que tengo un bat para ello que ejecuto desde el XBMC. Pero como estoy usando el eventghost para usar el mando a distancia con el XBMC, quiero cerrarlo para usar el mando de forma normal con el MCE de windows.

@echo off
%systemRoot%\ehome\ehshell.exe /HOMEPAGE:VideoFullscreen.XML /PUSHSTARTPAGE:TRUE
taskkill /F /IM EventGhost.exe /T
exit


Despues de esto, al cerrar el MCE quiero que automaticamente se ejecute el EventGhost por lo que pruebo lo que me has dicho:

@echo off
:bucle
if exist "%TEMP%\tasklist.csv" del /f /q "%TEMP%\tasklist.csv" > nul
tasklist /fo csv > "%TEMP%\tasklist.csv"
find "ehshell.exe" "%TEMP%\tasklist.csv" > nul
if %errorlevel% equ 0 goto bucle
if %errorlevel% equ 1 goto ejecutar
:ejecutar
if exist "%TEMP%\tasklist.csv" del /f /q "%TEMP%\tasklist.csv" > nul
"c:\progra~2\Eventghost\eventghost.exe"


Pero da igual si esta ejecutandose el MCE (ehshell.exe) o no. Siempre ejecuta el eventghost.

No quiero que te comas la cabeza por esta tonteria, asi que no te preocupes...ya indagare en esto, o buscare otra manera, o pasare de esto.

Me sabe mal que los demas pierdan el tiempo por mi....solo buscaba un programa. XD

Supongo que la solucion seria Visual Basic.....pero ponerme ahora a aprender a programar......el tiempo no es una de mis riquezas...
Prueba a poner entera la ruta del EventGhost.

P.D.: Te recuerdo que antes de abrir el BAT que cierra el MCE tiene que estar ejecutándose el otro.

Saludos.
Vale, ya esta solucionado.
Algun conflicto habria por ahi, asi que lo he metido todo el mismo bat.....tal vez sea porque msdos no es multitarea....aumnke supongo que hace mucho que dejo de ser monotarea...........

El caso es que lo he dejado asi(tambien he cambiado de programa para el mando...XD):

@echo off
TASKKILL /F /IM Intelliremote.exe /T
%SystemRoot%\EHOME\EHSHELL.EXE /HOMEPAGE:VideoFullscreen.XML /PUSHSTARTPAGE:TRUE
:bucle
if exist "%TEMP%\tasklist.csv" del /f /q "%TEMP%\tasklist.csv" > nul
tasklist /fo csv > "%TEMP%\tasklist.csv"
find "EHSHELL.EXE /HOMEPAGE:VideoFullscreen.XML /PUSHSTARTPAGE:TRUE" "%TEMP%\tasklist.csv" > nul
if %errorlevel% equ 0 goto bucle
if %errorlevel% equ 1 goto ejecutar
:ejecutar
if exist "%TEMP%\tasklist.csv" del /f /q "%TEMP%\tasklist.csv" > nul
"C:\Progra~2\Intelliremote\Intelliremote.exe"
exit


Gracias tio por el curro....aun tengo que aprender mucho....aunque se me pase el arroz
Me alegro de que lo hayas conseguido. Siempre es un placer ayudar ^^

Saludos.
Si, muchas gracias ademas por enseñarme mas cosas sobre msdos.

Ya lo tengo convertido en exe y funciona a la perfeccion...eres un hacha.
8 respuestas