comando em Xharbour equivalente ao FWH

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

dbdc5554
Usuário Nível 3
Usuário Nível 3
Mensagens: 149
Registrado em: 03 Dez 2012 08:49
Localização: uberlandia-MG

comando em Xharbour equivalente ao FWH

Mensagem por dbdc5554 »

BOM dia

eu uso um exe em try ... foi feito em xhb+fwh

de tempo em tempo (parametrizado) ele verifica o que fazer.

SET TIMER oTimer of oMainWindow VALUE nsegundos ACTION {|| verifica() } && 1 Minuto


qual seria o equivalente em xhb ?


em determinada hr da noite ele fecharia os arquivos e finalizaria o sistema

desta forma os usuários pendurados no TS seriam fechados.

ai o exe em try poderia re-indexar, fazer backup, e desligar o servidor SEM problemas..

eu fiz um procedimento que verifca X tempo sem usar + tem determinadas coisa tipo um Preview de realtorio que NAo da para saber.
em um GET ou Browser funciona + em preview nao consegui


alguem sabe o comando que cheque X tempo independente de onde esteja ?





prg em try...

INIT WINDOW oMainWindow MAIN TITLE "Example"

CONTEXT MENU oTrayMenu

MENUITEM "Alterar" ACTION {|| oTIMER:VALUE:=xSEGUNDOS, oTIMER:INIT() }

MENUITEM "Sair" ACTION {|| MyExitProc()}
ENDMENU

SET TIMER oTimer of oMainWindow VALUE nsegundos ACTION {|| verifica() } && 1 Minuto

oMainWindow:InitTray( oIcon,,oTrayMenu,"DBDC / ECF" )

ACTIVATE WINDOW oMainWindow NOSHOW
oTrayMenu:End()



Function verifica
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

comando em Xharbour equivalente ao FWH

Mensagem por Itamar M. Lins Jr. »

Ola!

Código: Selecionar todos

Núcleo Harbour (instalado):
   hb_idleAdd()
   hb_idleDel()
   hb_idleReset()
   hb_idleSleep()
   hb_idleState()
Verifique o uso deles aqui no forum ou em outros lugares na internet.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

comando em Xharbour equivalente ao FWH

Mensagem por Kapiaba »

Código: Selecionar todos

* 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 ENTRA SUA FUNCAO 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
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

comando em Xharbour equivalente ao FWH

Mensagem por Kapiaba »

dbdc5554
Usuário Nível 3
Usuário Nível 3
Mensagens: 149
Registrado em: 03 Dez 2012 08:49
Localização: uberlandia-MG

comando em Xharbour equivalente ao FWH

Mensagem por dbdc5554 »

Opa

em FWH já uso.

preciso em xharbour PURO


a não ser que drible tipo o prg principal em fwh que seta o TIME e ele chama o prg do sistema em xhb+wvw...

ou seja so usa o 1 prg para setar o time


teria que ver se funciona. porque se tiver o fivewin.ch no prg ai já ferra. + como ele estaria no prg numero 1

talvez funcione
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

comando em Xharbour equivalente ao FWH

Mensagem por Kapiaba »

Desconheço Tray em modo console. Mas, você pode criar o .exe à parte em Fivewin, e chamar com o RUN, do programa modo console ou de outro programa visual.
frazato
Usuário Nível 3
Usuário Nível 3
Mensagens: 219
Registrado em: 08 Jul 2004 07:45

comando em Xharbour equivalente ao FWH

Mensagem por frazato »

Eu uso assim a muito tempo para derrubar os usuários do sistema, usando como um timer!

Código: Selecionar todos

Function Main()
Public lAtivaKillSystem       := .t.
Public mUsr                   := 'usuario logado'

Set background Tasks On

nIdle := HB_IdleAdd( {|| HB_BackGroundRun() } )
nTask := HB_BackGroundAdd( {|| Kill_system() }, 100 ) // 10000

cpega := Space(100)
Clear
@ 00,00 say padc('Teste Timer Frazato ',80)
@ 10,10 say 'Digite Qq Coisa  ' Get  cPega Pict "@!"
Read

HB_IdleDel( nIdle )
Return nil



//----------------------------------------------------------------------------
Function Kill_system()
Local nHora     := "23:00"
Local nTime     := Time()
Local cFileTrava:= 'Backup.jaf'
Local mTemporal := ""
@ 01,02 say time()

Teste_Try()

If lAtivaKillSystem==.f.
   Return Nil
Endif

If File(cFileTrava)
   mTexto := MemoRead(cFileTrava)
   *Cores()
   Alert(15,10,17,80,mUsr+" Aviso Nr. "+Str(wForcaSaida,3) )
   @ 16,11 say mTexto
   *Beep(7*wForcaSaida)
   Inkey(5)
   *FechaJanela()
   wForcaSaida++
   If wForcaSaida >= 3
      Close all
      CLose all
      Close All
      CLose all
      Close All
      Quit
   Endif
Endif

//---- Solica derruba terminal

cFileTrava := mTemporal+'Deruba.txt'

If File(cFileTrava)
   mTexto := MemoRead(cFileTrava)
   *Cores()
   Alert(mUsr+" Aviso Nr. "+Str(wForcaSaida,3),"BG+/NB+","NN/NN","N")
   @ 16,11 say mTexto
   *Beep(7*wForcaSaida)
   Inkey(5)
   *FechaJanela()
   wForcaSaida++
   If wForcaSaida >= 3
      Delete File(cFileTrava)
      Close all
      CLose all
      Close All
      CLose all
      Close All
      Quit
   Endif
Endif
Return nil



//---------------------------------------------------------
Function Teste_Try()
Local cCmd := [Alert('By Frazato')]
Try
  EVAL({|| cCmd})
Catch
  Alert('Erro Executar Funcao Try:'+chr(10)+;
         cCmd)
End
Return Nil


Compilado com xharbour 99.70 ( To antiguinho rss)
Responder