FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Cancelar proceso en curso
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Cancelar proceso en curso
Posted: Mon Nov 24, 2008 10:02 AM

Hola!

En mi apliaci贸n, hay una funci贸n que tarda un rato en finalizar el proceso. Por eso, le he puesto un MsgRun con un texto de 'APLICACION EN PROCESO'

Mi pregunta es,
驴si el ususario desea cancelar el proceso en cualquier momento, hay alg煤n modo de harcelo?

Gracias, y un saludo.

:)

Javier,

FWH 8.04 2008
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Cancelar proceso en curso
Posted: Mon Nov 24, 2008 01:47 PM

Javier,

La funci贸n TerminateProcess() podr铆a servir:

http://msdn.microsoft.com/en-us/library/ms686714(VS.85).aspx

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Cancelar proceso en curso
Posted: Mon Nov 24, 2008 02:28 PM

Prueba con este ejemplo.

http://www.fivewin.com.br/exibedicas.asp?id=681

Saludos.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Cancelar proceso en curso
Posted: Tue Nov 25, 2008 09:55 AM

Gracias, pero creo que no me he explicado bien.

No quiero eliminar un proceso .EXE como si nos fueramos al administrador de tareas.

Lo que quiero es interrumpir una funci贸n que est谩 ejecutandose para salir de ella y as铆 volver al men煤 principal de la aplicaci贸n, y no, interrumpir la aplicaci贸n en si.

Karina, en tu ejemplo, creo que killprocess, lo que hace es cerrar la aplicaci贸n exe que se est谩 ejecutando, con lo cual no me sirve.

Antonio, en tu ejemplo, no lo tengo claro. Pues viene escrito en visual C. De modo que no s茅 como podr铆a usar tu ejemplo. :cry:

Javier,

FWH 8.04 2008
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Cancelar proceso en curso
Posted: Tue Nov 25, 2008 10:21 AM
jfafive:


yo hago lo siguiente:

me creo una funcion que me muestra la evolucion de lo que estoy haciendo.

***************
STATIC FUNCTION BoxStatus()
***************
LOCAL aStru

//  IF EMPTY( aStatus )
    aStatus := ARRAY(7)
    aStatus[7] := .F. // lCancel
//  ENDIF

  aStru := {}
  AADD( aStru, { "TESTO"  , "C", 120, 0  } )
  DbCreate( "status.dbf", aStru )

  select 0
  USE status NEW ALIAS status exclusive

  DEFINE DIALOG aStatus[1] NAME "DLG_ACQ_VEN_STATUS"

    REDEFINE LISTBOX aStatus[2];
      FIELDS status->testo;
      HEADERS "";
      ALIAS "status";
      ID 101 OF aStatus[1]

    REDEFINE METER aStatus[3] VAR aStatus[6] ID 102 OF aStatus[1]

    REDEFINE SAY aStatus[4] PROMPT "" ID 103 OF aStatus[1]

    REDEFINE BUTTON aStatus[5] ID 501 ACTION ( aStatus[7]:=.T., aStatus[1]:end() )

  ACTIVATE DIALOG aStatus[1] CENTER NOWAIT;
           VALID (aStatus[3]:end(), status->( dbCloseArea() ), FERASE( "status.dbf" ), .T. )

RETURN NIL
*
** BoxStatus



y luego la llamo desde mi funcion, aqui te escribo una parte para que te hagas una idea:

    BoxStatus()

    aStatus[3]:SetTotal( nCorr )

    // nCorr = totale articoli che corrispondono con il filtro.

    nSecIni := SECONDS()
    nSecTot := nCorr * 3 // facciamo 3 secondi per fare il calcolo per ogni articolo o taglia trovata

    DO WHILE art->( !eof() ) .AND. !aStatus[7]

      InfStat("Che corrispondono con il filtro: " + NTRIM( nTrovatiConFiltro )  + " Art. att. " + art->cod )

      status->( add_rec() )
      REPLACE status->testo WITH art->cod + " - " + art->des
      status->( dbUnLock() )

        aStatus[4]:varput( " Tempo residuo: " + TimeAsString( nSecTot ) )
        aStatus[4]:refresh()
        aStatus[2]:goBottom()
        aStatus[2]:refresh()
..
..
    ENDDO



Cuando !aStatus[7] es falso, me salgo de mi funcion.

Espero te sirva la idea.


Saludos
Pedro Gonzalez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Cancelar proceso en curso
Posted: Tue Nov 25, 2008 10:31 AM
Javier,

Lo que te indica Pedro, es la forma de hacerlo:
while lSigue
   ... haz lo que sea
end

si lSigue cambia a .F. entonces se sale del bucle.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Cancelar proceso en curso
Posted: Tue Nov 25, 2008 07:06 PM

Ok,

Gracias por vuestros consejos.
Lo voy a poner en pr谩ctica a ver como va.

:wink:

Javier,

FWH 8.04 2008
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Cancelar proceso en curso
Posted: Tue Nov 25, 2008 07:41 PM
Hola

Lo otro que puedes hacer es usar la funcion GetKeyState..



do while Eval( bBusqueda )

	if GetKeyState( 27 )
		if  MsgYesNo( "驴Ha presionado la tecla ESC, desea salir?", "Usuario" )
		      exit
		endif
	endif

    bla..bla..cl

enddo
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Cancelar proceso en curso
Posted: Thu Nov 27, 2008 10:25 PM
jfafive wrote:Hola!

En mi apliaci贸n, hay una funci贸n que tarda un rato en finalizar el proceso. Por eso, le he puesto un MsgRun con un texto de 'APLICACION EN PROCESO'

Mi pregunta es,
驴si el ususario desea cancelar el proceso en cualquier momento, hay alg煤n modo de harcelo?

Gracias, y un saludo.
:-)



Con la function MsgMeter() puedes hacerlo, ya que trae un bot贸n "Cancel" que detiene el proceso. En source esta el codigo y lo puedes modificar a tus necesidades.

Saludos.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql

Continue the discussion