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.
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!
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
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
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
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.
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.com
http://el-maro.blogspot.com
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.