FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Parar un programa en red.
Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
Parar un programa en red.
Posted: Sun May 22, 2011 07:15 AM

Hola compañeros del foro, estoy desarrollando un programa que me controla los accesos de todos los programas por los usuarios, con lo cual sé cuando un programa está abierto. Muchas veces los usuarios lo dejan funcionando durante el fin de semana y como mi programación se basa en ficheros externos, cuando algunas veces intento modificar alguno de estos ficheros externos están cogidos por el programa principal y no me deja modificarlos hasta que el usuario deje de utilizar dicho programa. Me preguntaba si existe alguna manera de parar la execución del programa desde la red. Estoy pensando en poner algun timer que me mire un fichero externo y dependiendo de los que contenga ese fichero lo pare, evite que la gente se conecte o que controle la inactividad del programa.

Sabéis si existe alguna otra manera de parar el programa en red? Necesito solo parar ese programa no el resto de aplicaciones, con lo que no me valen cosas como el VNC el TeamViewer o similares. Tampoco matar los procesos desde el servidor, necesito que el programa se cierre correctamente y no me deje colgado ningún proceso. Alguna idea de como hacerlo, alguien ha hecho algo similar?

Un saludo.

Saludos



Andrés González desde Mallorca
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Parar un programa en red.
Posted: Sun May 22, 2011 01:57 PM

Saludos y buen Domingo:

A mi me pasaba lo mismo, necesitaba indexar tablas en mi sistema cada que necesitaba hacer un proceso de envio de archivos para otras tiendas, lo unico que pude hacer de forma rapida y funcional era intalar VNC Viewer en la Pc donde yo estaba y VNC server en todas las maquinas terminales que son gratuitos, cuando alguien se quedaba colgado sin hacer nada yo entraba y mediante su numero IP o nombre de terminal de red entraba y cerraba su sesiĂłn, era un poco engorroso y hasta en cierto punto les molestaba que hiciera eso, pero no me quedaba de otra.

La opcion de usar el timer es buena, pero tendrias que controlar cuando tu Programa esta en espera sin hacer nada o "IDLE" con SetIdleAction(), a mi no me funciono o no supe implementarlo, por eso uso lo que te comente.

Si alguien más pudiera asesorarte y que funcione seria estupendo...

Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 68
Joined: Tue Apr 14, 2009 09:26 PM
Re: Parar un programa en red.
Posted: Sun May 22, 2011 02:37 PM

Hola , Yo utilizo lo codigo seguinte para LOGOFF del sistema quando lo MOUSE o lo KEYBOARD estiverem inactivos por un tiempo ( nTempo_Espera ) . Talvez possa ajuda-lo.

Saludos

William Adami (Brasil)

  • exemplo do uso da classe Tinativo
  • Apos um tempo de inatividade do mouse
  • e do teclado chama uma funcao qualquer.

include "fivewin.ch"

static oWnd


function main


nTempo_espera:=10 //Tempo a ser esperado ate chamar a funcao

cNome_funcao:="LOGOFF()" //nome da funcao a ser chamada quando
//chegar no tempo de espera

lTimercontinua:=.f. //se apos executar a funcao , continua monitorando
//a inatividade do mouse e teclado.

define window oWnd title "Teste de teclado e mouse"

activate window oWnd on init tinativo():new(nTempo_espera,cNome_funcao, lTimerContinua)

return NIL

function logoff

msgalert("AQUI SU FUNCTION DE LOGOFF !","AVISO")

return nil

*TINATIVO.PRG


  • CLASSE PARA DETECTAR SE O SISTEMA ESTA
  • INATIVO POR (N) SEGUNDOS, E SE ESTIVER,
  • CHAMA UMA FUNCAO (PODE SER UMA FUNCAO
  • DE LOGOFF , DESCANSO DE TELA , ETC..)

  • AUTOR DA FUNۂO ORIGINAL :
  • POMPEO (GUARATINGUETA)
  • MIGRAۂO DA FUNۂO PARA CLASSE:
  • WILLIAM DE BRITO ADAMI

include "fivewin.ch"

CLASS TINATIVO

DATA nTimeInpAntes
DATA nTimeInpDepois
DATA cTimeAtu
DATA nTempo
DATA oTimerTime
DATA cFunc
DATA lContinuar

METHOD NEW( nTime, cFuncao, lContinua ) CONSTRUCTOR

METHOD ver_tempo()

ENDCLASS


METHOD new(ntime,cFuncao,lContinua) CLASS TINATIVO


::cfunc:=cfuncao
::ntempo:=ntime
::lContinuar:=lContinua
::oTimerTime := TTimer():New( 1000, { || ::VER_TEMPO() } )
::oTimerTime:Activate()
::cTimeAtu := time()
::nTimeInpAntes := getInputState() // 0 = erro

return self


METHOD VER_TEMPO CLASS TINATIVO


::nTimeInpDepois := getInputState()
if ( ::nTimeInpDepois - ::nTimeInpAntes ) > 0
::nTimeInpAntes := getInputState()
::cTimeAtu := time()
endif

if ( CONVTIME(time()) - CONVTIME(::cTimeAtu) ) > ::ntempo
::oTimerTime:DeActivate()

aux:=::cfunc

  • aqui executa a funcao

&aux

if ::lContinuar

::oTimerTime:Activate()
::cTimeAtu := time()

endif

endif

return NIL

FUNCTION CONVTIME(ZZ)
Z:=(VAL(LEFT(ZZ,2))360)+(VAL(SUBSTR(ZZ,4,2))60)+VAL(RIGHT(ZZ,2))
RETURN Z

**----------------------------------------------------------------------

pragma BEGINDUMP

define _WIN32_WINNT 0x0500

define WINVER 0x0500

include "windows.h"

include "hbapi.h"

HB_FUNC( GETINPUTSTATE )
{
LASTINPUTINFO lpi;
lpi.cbSize = sizeof(LASTINPUTINFO);
if (!GetLastInputInfo(&lpi))
{
hb_retni(0);
}
hb_retni(lpi.dwTime);
}

pragma ENDDUMP

Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: Parar un programa en red.
Posted: Sun May 22, 2011 06:59 PM
Andrés González wrote:Hola compañeros del foro, estoy desarrollando un programa que me controla los accesos de todos los programas por los usuarios, con lo cual sé cuando un programa está abierto. Muchas veces los usuarios lo dejan funcionando durante el fin de semana y como mi programación se basa en ficheros externos, cuando algunas veces intento modificar alguno de estos ficheros externos están cogidos por el programa principal y no me deja modificarlos hasta que el usuario deje de utilizar dicho programa. Me preguntaba si existe alguna manera de parar la execución del programa desde la red. Estoy pensando en poner algun timer que me mire un fichero externo y dependiendo de los que contenga ese fichero lo pare, evite que la gente se conecte o que controle la inactividad del programa.

Sabéis si existe alguna otra manera de parar el programa en red? Necesito solo parar ese programa no el resto de aplicaciones, con lo que no me valen cosas como el VNC el TeamViewer o similares. Tampoco matar los procesos desde el servidor, necesito que el programa se cierre correctamente y no me deje colgado ningún proceso. Alguna idea de como hacerlo, alguien ha hecho algo similar?

Un saludo.

Hola,

Yo lo harĂ­a con un TIMER.

Cada 60 minutos abro una tabla miro el valor de un campo (por ejemplo ALACALLE), si su valor es .T. salgo del sistema.

En el momento de entrar en el sistema hago lo mismo, y si su valor sigue siendo .T. pues salgo antes de hacer nada más.

AsĂ­ sabes que si tu das valor .T. a ese campo, como mucho al cabo de una hora estan todos fuera, haces lo que quieras y das valor .F. al campo.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
Re: Parar un programa en red.
Posted: Mon May 23, 2011 05:32 AM

Gracias a todos por vuestras respuestas, especialmente a williamadami. Pruebo lo que tu has puesto y luego comento.

Saludos



Andrés González desde Mallorca
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Parar un programa en red.
Posted: Mon May 23, 2011 03:21 PM

Y algo tan sencillo como un TXT en el servidor que contenga "comandos inventados" por nosotros en el sentido de que si el fichero esta vacio no pasa nada.
Si vemos que el usuario "USER-1" lo queremos "matar" pues modificamos ese TXT poniendo una lĂ­nea con el contenido "USER-1 LOGOFF".
En el programa del USER-1 un timer (no muy espaciado, cada 5 minutos por ejemplo) que leea ese fichero TXT y si "se da por aludido" en el contenido del mismo se "auto-mata" el programa.

Âż Me he explicado ? o me he muerto yo tambien jejejejajajaja :P

Mi abuelo decĂ­a: Los aviones vuelan porque Dios quiere, y los helicĂłpteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013

Continue the discussion