Título: Pausar la ejecucion de un programa Publicado por: EstoyBaneado en 4 Junio 2005, 20:15 pm Me gustaria muchuchusisimo saber si se puede "pausar" o detener temporalmente la ejecucion de un programa y cual es la Api q lo hace. Para q no se malentienda, quiero pausar desde mi programa en vb, otro programa externo.
gracias de antemano. Título: Re: Pausar la ejecucion de un programa Publicado por: Ertai en 5 Junio 2005, 00:28 am Algo tipo Olly o Softice? :o :o
Lo veo dificil. Saludos, Ertai Título: Re: Pausar la ejecucion de un programa Publicado por: Slasher-K en 5 Junio 2005, 00:48 am No se pueden pausar aplicaciones sino threads. Para pausar una aplicación tenés que pausar su thread primario.
Para detener la ejecución de un subproceso (thread) se utiliza la función SuspendThread (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/suspendthread.asp). Para volver a reanudar la ejecución se utiliza ResumeThread (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/resumethread.asp). Se puede llamar a la función SuspendThread las veces que se deseen pero luego hay que llamar a ResumeThread la misma cantidad de veces para que el subproceso continúe ejecutandose. Saludos. Título: Re: Pausar la ejecucion de un programa Publicado por: EstoyBaneado en 6 Junio 2005, 03:35 am ¿como puedo saber el handle del thread primario? porque segun vi, a la funcion suspendthread hay que pasarle como parametro el handle, pero yo solamente sé el ID del thread, y no me funca.
Sé que una manera seria abriendo el ID con la funcion OpenThread, pero esa funcion solo existe en WinXP. ¿Alguna Idea? thx. Título: Re: Pausar la ejecucion de un programa Publicado por: byebye en 6 Junio 2005, 04:06 am depura el proceso desde tu programa (debugactiveprocess), cuando DebugEventCode sea = a CREATE_PROCESS_DEBUG_EVENT tiras de CREATE_PROCESS_DEBUG_INFO que consta de estos datos:
Código: typedef struct _CREATE_PROCESS_DEBUG_INFO { // cpdi Título: Re: Pausar la ejecucion de un programa Publicado por: Crashoverwrite en 13 Junio 2005, 14:00 pm Código: Declare Function MsgWaitForMultipleObjects Lib "user32" _ Título: Re: Pausar la ejecucion de un programa Publicado por: byebye en 13 Junio 2005, 22:39 pm en ese codigo pausa otro proceso por algun sitio?
Título: Re: Pausar la ejecucion de un programa Publicado por: Slasher-K en 14 Junio 2005, 00:35 am Código: Main ' VUELVE AL PROCEDIMIENTO PRINCIPAL Esa linea va a provocar un desbordamiento de pila. Saludos. Título: Re: Pausar la ejecucion de un programa Publicado por: kasiko en 14 Junio 2005, 00:52 am ummmmm muy interesante el hilo :o
Título: Re: Pausar la ejecucion de un programa Publicado por: EstoyBaneado en 14 Junio 2005, 01:12 am 1) El code no anda.
2) Que se supone que hace? Un Sleep a mi propio proceso? 3) Crashoverwrite, eso es lo q hace el code, crashea. jaja. salu! Título: Re: Pausar la ejecucion de un programa Publicado por: Crashoverwrite en 17 Junio 2005, 03:58 am Precisamente lo que evito es el desbordamiento de pila. de todas maneras, lo tengo en desarrollo..
Pruebenlo y me dicen despues,;compilen en un nuevo proyecto exe, en un modulo estandar solamente, sin form. y dejenlo corriendo todo el tiempo que quieran, luego me dicen que tal muchachos! NOTA DEL MODERADOR: No uses mayúsculas, en el foro se considera que estás gritando. Título: Re: Pausar la ejecucion de un programa Publicado por: Slasher-K en 17 Junio 2005, 04:41 am Insisto que ese código va a dar un desbordamiento de pila y no sirve para detener ningún otro proceso, revisalo bien.
Saludos. Título: Re: Pausar la ejecucion de un programa Publicado por: Crashoverwrite en 17 Junio 2005, 09:18 am PUES A MI NO ME LO DA!!
Título: Re: Pausar la ejecucion de un programa Publicado por: Slasher-K en 17 Junio 2005, 09:25 am Primero, no escribas en mayúsculas.
Ahora vamos a ver. El programa empieza en Main. Desde Main se llama a SafeSleep, desde SafeSleep vuelve a llamar a Mains y asçi sucesivamente. ¿Qué crees que va a pasar luego de varias llamadas a Main?, claro que si, un stack overflow. Probá el siguiente código: Código: Sub Main Es lo mismo pero sin las demás instrucciones. Si lo probás te da un stack overflow. Título: Re: Pausar la ejecucion de un programa Publicado por: Slasher-K en 17 Junio 2005, 10:18 am Esto es simple, si no sabes, no comentas y listo. Veo que ni siquiera con un código tan simple podés comprender tu error así que no vengas a querer ganar, esto no es una competencia. Si fueras más humilde aceptarías que te esquivocaste y ya.
Ahora como programador te digo que el código que pusiste es realmente horrible y mal estructurado, eso mismo se puede hacer de otra forma mucho menos complicada y SIN ERRORES DE PROGRAMACIÓN. Además no tiene nada que ver con este hilo. Tema cerrado, si no te gusta te vas y ya, y no faltes el respeto porque en ningún momento te traté mal ni mucho menos. |