Autor
|
Tema: Detener un proceso (Leído 11,403 veces)
|
el_lichal
Desconectado
Mensajes: 9
|
Hola. Mi duda es la siguiente, inicio un proceso (por ejemplo optimización no lineal como el solver de Excel) y tarda excesivo tiempo por los motivos que sean y el usuario se cansa y quiere detener el proceso. ¿Como puede interrumpir el proceso el usuario? No se si me he explicado con claridad, pero lo que pido es darle al usuario la posbilidad de detener un proceso sin tener que apretar AltGr Ctrl Supr y perder los datos. Muchas gracias desde ya.
|
|
|
En línea
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
aver explicate.... lo que tu kieres es acer un programa donde... aparezca una lista de prosesos que el usuario pueda ver para que el cuadno tenga ganas se le ocuarra seleccionar uno y matarlo??? eso es lo que kieres???
(de todos modos los datos se pierden si no se guardan,. x mas que lo mates con un matador de prosesos echo en vb6 o autilizando ctrl+alt+del)
EDIT#1= bueno me olvidava,. asi que edito,. en el foro ya se ablo de como matar prosesos y demas opciones,. buska que ay mucha info sobre eso
El MaRo!
|
|
|
En línea
|
|
|
|
el_lichal
Desconectado
Mensajes: 9
|
Hola y gracias de nuevo.
No se me ha entendido bien. Lo que me guataría hacer es por ejemplo un formulario con dos botones. CALCULAR Y DETENER Al hacer click en CALCULAR. se inicia un proceso por ejemplo
Do while f>0.0001
hacer lo que sea Loop
Pero por los motivos que sea (no converge o está empleando demasiado tiempo) el usuario decide hacer click en el botón Cancelar, deteniendo el proceso anterior, para por ejemplo cambiar las condiciones del cálculo. No se trata de romper un bucle infinito
|
|
|
En línea
|
|
|
|
sebas369
Desconectado
Mensajes: 31
Professional VB Programer
|
Public Sub KillProcess(ByVal processName As String) On Error GoTo ErrHandler Dim oWMI Dim ret Dim sService Dim oWMIServices Dim oWMIService Dim oServices Dim oService Dim servicename Set oWMI = GetObject("winmgmts:") Set oServices = oWMI.InstancesOf("win32_process") For Each oService In oServices servicename = LCase(Trim(CStr(oService.Name) & "")) If InStr(1, servicename, LCase(processName), vbTextCompare) > 0 Then ret = oService.Terminate End If Next Set oServices = Nothing Set oWMI = Nothing ErrHandler: Err.Clear End Sub pone ese codigo en cualquier parte del form , y despues escribi en KillProcess ("lala.exe") , despues tenes q usar con variables para matar el proceso seleccionado , saludos
|
|
|
En línea
|
|
|
|
el_lichal
Desconectado
Mensajes: 9
|
Hola, quizás no me he explicado bien. Tengo un formulario con dos botones de comando. En el primero se ejecuata una subrrutina y en el segundo ¿Se puede detener esta subrrutina? Lo habitual es que hasta que no ha terminado la subrrutina, el segundo botón no puede recibir el evento click. El esquema sería el siguiente:
BOTON CALCULAR: Do while f>0.0001
hacer lo q
|
|
|
En línea
|
|
|
|
el_lichal
Desconectado
Mensajes: 9
|
Lo siento le día al botónd e publicar sin querer
BOTON CALCULAR: Do while f<0.0001 if Salir=true then exit Do hacer lo que sea Loop
BOTON CANCELAR: Salir =True
No se si es posible hacer este tipo de cosas en VB
Gracias de nuevo.
|
|
|
En línea
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
si...xq no mientras "f" sea menor a ese valor se va a ejecutar "lo que sea" asta que preciones el boton que cansele y te ponga a True la variable(Boolean) salir kreo que esa es la respuesta a lo que entendi suerte El MaRo! http://el-maro.blogspot.comhttp://el-maro.blogspot.com
|
|
|
En línea
|
|
|
|
el_lichal
Desconectado
Mensajes: 9
|
Hola, si que lo entendiste. El problema es que el botón CANCELAR, no puede recibir el evento click hasta que no se ha salido de la subrrutina. Se que en el "Solver" de Excel se puede hacer esto. Tengo entendido que el "Solver" es una macro programada en VB Venga gracias de nuevo.
|
|
|
En línea
|
|
|
|
|
|