Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Timerlux en 14 Octubre 2007, 23:33 pm



Título: Como matar el proceso de la propia aplicacion
Publicado por: Timerlux en 14 Octubre 2007, 23:33 pm
Necesito ayuda.

Tego un:

Do While
  doEvents
Loop

Que se dedica a leer lineas de un archivo largisimo.
Si yo quisiera cerrar el programa mientras esta leyendo solo consigo hacer desaparecer la ventana del programa pero no el proceso, que sigue leyendo.

Sabeis alguna manera sencilla de cerrar todo el programa?

gracias


Título: Re: Como matar el proceso de la propia aplicacion
Publicado por: Hendrix en 14 Octubre 2007, 23:39 pm
Como??? Si cierras el archivo/proyecto todavia sigue leyendo??? :-\


Título: Re: Como matar el proceso de la propia aplicacion
Publicado por: Timerlux en 14 Octubre 2007, 23:42 pm
si es algo raro, pero es asi, el formulario o ventana del programa (segun el caso) desaparece el evento queryunload  se produce pero el proceso no acaba, sigue trabajando y cuando termina vuelve a mostrar la pantalla del programa.


Título: Re: Como matar el proceso de la propia aplicacion
Publicado por: Timerlux en 14 Octubre 2007, 23:53 pm
comprobado mas en detalle se producen los eventos QueryUnload y Unload pero no el evento Terminate, el cual deberia producirse,

es que no quiero tirar de Api para matar el propio proceso, creo que tiene que ver alguna forma sencilla de negociar una solucion con el prograna.

he provado a poner una Variable a True en el evento QueryUnload, y en el Do While decirle que cuando la Variable sea True que haga Exit Do

pero sigue igual


Título: Re: Como matar el proceso de la propia aplicacion
Publicado por: Hendrix en 15 Octubre 2007, 00:31 am
Para terminar utiliza End  :)


Título: Re: Como matar el proceso de la propia aplicacion
Publicado por: HaDeS, - en 15 Octubre 2007, 01:41 am
Tambien se puede utilizar apis:
Código
  1. Private Declare Function TerminateProcess Lib "kernel32" Alias "TerminateProcess" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
  2. Private Declare Function GetCurrentProcess Lib "kernel32" Alias "GetCurrentProcess" () As Long
  3.  
  4. private sub command1_click()
  5. terminateprocess getcurrentprocess, 0
  6. end sub
  7.  

Saludos ;)


Título: Re: Como matar el proceso de la propia aplicacion
Publicado por: Tengu en 15 Octubre 2007, 15:26 pm
o simplemente podriasusar un comando at con el nombre de tu proceso y listo.


Título: Re: Como matar el proceso de la propia aplicacion
Publicado por: Timerlux en 15 Octubre 2007, 17:42 pm
Gracias a todos ya lo he solucionado,

el QueryUnload estaba en un MDIForm y el Do While en un Child Form y se me olvido poner Publica la variable en el modulo.


Saludos