Matar procesos mediante id process en VB6

Me llamo Fernando, necesito matar procesos de word y excel desde VB6 mediante su process ID, el problema es que debo matar solo los procesos que se crean desde una aplicación hecha también en VB6, si se ejecuta o activa word o excel desde windows u otro programa que no lo mate, si es desde mi aplicación lo reconozca la herramienta y lo pueda eliminar, si alguien puede ayudarme le estaré muy agradecido.
1

1 Respuesta

165.850 pts. Más de 35 años en la informática y más de 20 trabajando...
Podrías guardar los id de los procesos creados por tu aplicación en un fichero temporal y comprobarlo antes de eliminar uno de los procesos.
Hola santiago:
De eso estoy consciente, de hecho había pensado gurdar los process ID en una tabla de la base de datos, lo que no se es como identificar solo los procesos que se ejecutan desde mi otra aplicación hecha también con VB6.
No acabo de aclararme con lo que quieres hacer pero creo entender que tienes varios programas VB que lanzan ejecuciones de otros programas (Office o el que sea).
Si desde un programa quieres saber los lanzados por otro, podrías crearte una tabla de procesos en la cual tengas el programa que se está ejecutando y su hora de inicio de ejecución (entre otros datos), al tiempo que en la otra tabla de 'programas lanzados' puedes incluir esos datos para identificar los procesos.
Cuéntame algo más en detalle lo que quieres hacer y quizás se me ocurra algo diferente.
Perdón por la demora, pero no recibí notificación de la respuesta en mi correo, tratare de ser un poco más claro:
1.- Ejecuto mi programa hecho en VB6
2.- Abro un documento de word desde el meni inicio de windows o desde el acceso directo de word en mi escritorio con un process id 22222
3.- Desde este programa tengo un botón que abre un nuevo documento de word para colocar información pero con la instrucción visible = false supongamos que este tiene un process id 55555.
4.- Debo poder identificar y colocar en una tabla unicamente el process id del archivo de word con process id 55555 para poder matarlo desde mi programa de vb6 y que el de process id 22222 quede abierto.
Lo que no se es como hacer para que el programa de vb6 pueda distinguir los .doc que se llaman desde mi programa, de los que se ejecutan fuera de el para no eliminarlos todos.
Gracias por tu ayuda
Prueba a jugar un poco con este código.
Sub prueba()
    Dim idProceso As Double
    Dim aux As String
    aux = "C:\Archivos de programa\Microsoft Office\OFFICE11\Excel.exe"
    idProceso = Shell(aux, vbMaximizedFocus)
    Stop ' Aquí el Excel está abierto
    ' Cerramos el proceso abierto anteriormente
    aux = "ntsd -p " & idProceso & " -c ""q"""
    Shell aux, vbMinimizedNoFocus
    Stop ' Aquí el Excel está cerrado
End Sub
Si vas guardando en algún sitio los procesos abiertos por tu VB, después cerrarlos es fácil.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas