verificar ociosidade de sistema

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

verificar ociosidade de sistema

Mensagem por HASA »

Boa tarde, colegas li muitas mensagens a respeito mas... não localizei exatamente o que pretendo fazer a saber:

Caso o meu sistema não esteja em uso, ou seja, teclado e mouse ociosos por "n" tempo a definir, eu gostaria de enviar para uma pequena função que abriria um aviso com timer e se o usuário não responde-se ao apelo do sistema o mesmo fecharia os bancos de dados e janelas e encerraria o sistema, ou seja, o que não foi gravado pelo usuário seria perdido.

Achei bastante material aqui no forum mas... nada que eu possa detectar a inoperância do mouse e teclado para ai sim depois dos tais "n" minutos chamar a função de eu voiu fechar...

Algum colega tem uma dica ?

:(

HASA
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

verificar ociosidade de sistema

Mensagem por asimoes »

Hasa,

Procura estas variáveis na pasta samples da minigui

Este valores correspondem as coordenadas da posição do mouse, com uma função tempo DEFINE TIMER pode verficar os valores da última coordenada, acho que é por ai.


_HMG_MouseCol
_HMG_MouseRow
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

verificar ociosidade de sistema

Mensagem por HASA »

:D
Obrigado já é um começo vamos ver se chego lá valeuuu.
HASA
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

verificar ociosidade de sistema

Mensagem por Toledo »

Hasa, segue em anexo um exemplo do que você pode fazer.
idlesystem.zip
Exemplo para MiniGui Extended
(650.13 KiB) Baixado 126 vezes
Versão para HMG:
http://hmgforum.com/viewtopic.php?p=33929#p33929

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

verificar ociosidade de sistema

Mensagem por HASA »

:)) :*

Era isso mesmo simples e FANTASTICO no meu caso é a Minigui Extend mesmo.
:{
HASA
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

verificar ociosidade de sistema

Mensagem por HASA »

:(
Bom dia, Toledo mesmo em seu teste você pode perceber que os LABEL ficaram com fundo, ou seja, "macha" todas as janelas do sistema que tem LABEL, será que tem como corrigir isso ?

HASA
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

verificar ociosidade de sistema

Mensagem por Toledo »

Hasa, troque a função MyEvents() que está no meu exemplo por esta:

Código: Selecionar todos

function MyEvents ( hWnd, nMsg, wParam, lParam )
if nMsg != 275
  n_Secs:=SECONDS()
  if nMsg == 312
   i_ := AScan ( _HMG_aControlHandles , lParam )
   if i_ > 0
     TmpStr := _HMG_aControlType [i_]
     if TmpStr == "LABEL"
       if ValType ( _HMG_aControlInputMask [i_] ) == 'L'
         if _HMG_aControlInputMask [i_] == .T.
           SetBkMode( wParam , 1 )
           RETURN( GetStockObject( 5 ) )
         endif
       endif
     endif
   endif
  endif
endif
Events ( hWnd, nMsg, wParam, lParam )
Return (0)
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

verificar ociosidade de sistema

Mensagem por HASA »

:-O

Boa tarde, Toledo, agora os Label "TODOS" perderam a cor de frente, os TEXTBOX perderam a cor tbm, ficou tudo PRETO i BRANCO. Minigui Extend 2.3.4 + Xharbour que vem com o pacote ok.
:-o
HASA
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

verificar ociosidade de sistema

Mensagem por Toledo »

HASA escreveu:os TEXTBOX perderam a cor tbm, ficou tudo PRETO i BRANCO
Antes da alteração na função MyEvents(), as cores dos TEXTBOX estavam corretas?

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

verificar ociosidade de sistema

Mensagem por HASA »

:D
sim apenas os LABEL´s que estavam como no seu exemplo com fundo, após a alteração sumiu o fundo e as cores tbm, porem afetou os textbox e esqueci de comentar os Frames ganharam o fundo que antes estavam nos lable´s ok.
HASA
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

verificar ociosidade de sistema

Mensagem por Toledo »

Hasa, substitua novamente a função MyEvents():

Código: Selecionar todos

function MyEvents ( hWnd, nMsg, wParam, lParam )
if nMsg != 275
  n_Secs:=SECONDS()
  if nMsg == 312

      i := AScan ( _HMG_aControlHandles , lParam )

      if i > 0

         TmpStr := _HMG_aControlType [i]

         if TmpStr $ "GETBOX,LABEL,HYPERLINK,CHECKBOX,FRAME,SLIDER,NUMTEXT,MASKEDTEXT,CHARMASKTEXT,BTNTEXT,BTNNUMTEXT,EDIT,CHECKLABEL"

            if TmpStr $ "GETBOX,NUMTEXT,MASKEDTEXT,CHARMASKTEXT,BTNTEXT,BTNNUMTEXT,EDIT"

               if IsWindowEnabled( _HMG_aControlHandles[ i ] )

                  if _HMG_aControlFontColor [ i ] != Nil
                     if ValType( _HMG_aControlFontColor [ i , 2] ) == "A" .AND. Len( _HMG_aControlFontColor [ i , 2] ) == 3
                        SetTextColor( wParam, _HMG_aControlFontColor [ i , 2 , 1 ], _HMG_aControlFontColor [ i , 2 , 2 ], _HMG_aControlFontColor [ i , 2 , 3 ] )
                     elseif ValType( _HMG_aControlFontColor [ i , 2 ] ) == "N" .AND. Len( _HMG_aControlFontColor [ i ] ) == 3
                        SetTextColor( wParam, _HMG_aControlFontColor [ i , 1 ], _HMG_aControlFontColor [ i , 2 ], _HMG_aControlFontColor [ i , 3 ] )
                     endif
                  endif

                  if _HMG_aControlBkColor [ i ] != Nil

                     if ValType( _HMG_aControlBkColor [ i , 2 ] ) == "A" .AND. Len( _HMG_aControlBkColor [ i , 2 ] ) == 3
                        SetBkColor( wParam , _HMG_aControlBkColor [ i , 2 , 1 ] , _HMG_aControlBkColor [ i , 2 , 2 ] , _HMG_aControlBkColor [ i , 2 , 3 ] )
                        DeleteObject ( _HMG_aControlBrushHandle [ i ] )
                        _HMG_aControlBrushHandle [ i ] := CreateSolidBrush( _HMG_aControlBkColor [ i , 2 , 1 ] , _HMG_aControlBkColor [ i , 2 , 2 ] , _HMG_aControlBkColor [ i , 2 , 3 ] )
                        RETURN ( _HMG_aControlBrushHandle [ i ] )
                     ELSE
                        if ValType( _HMG_aControlBkColor [ i , 2] ) == "N" .AND. Len( _HMG_aControlBkColor [ i ] ) == 3
                           SetBkColor( wParam , _HMG_aControlBkColor [ i , 1 ] , _HMG_aControlBkColor [ i , 2 ] , _HMG_aControlBkColor [ i , 3 ] )
                           DeleteObject ( _HMG_aControlBrushHandle [ i ] )
                           _HMG_aControlBrushHandle [ i ] := CreateSolidBrush( _HMG_aControlBkColor [ i , 1 ] , _HMG_aControlBkColor [ i , 2 ] , _HMG_aControlBkColor [ i , 3 ] )
                           RETURN ( _HMG_aControlBrushHandle [ i ] )
                        endif
                     endif

                  ELSE
                     SetBkColor( wParam , GetRed ( GetSysColor ( COLOR_3DFACE ) ) , GetGreen ( GetSysColor ( COLOR_3DFACE ) ) , GetBlue ( GetSysColor ( COLOR_3DFACE ) ) )
                     DeleteObject ( _HMG_aControlBrushHandle [ i ] )
                     _HMG_aControlBrushHandle [ i ] := CreateSolidBrush( GetRed ( GetSysColor ( COLOR_3DFACE ) ) , GetGreen ( GetSysColor ( COLOR_3DFACE ) ) , GetBlue ( GetSysColor (COLOR_3DFACE ) ) )
                     RETURN ( _HMG_aControlBrushHandle [ i ] )

                  endif

               endif

            ELSE

               if IsXPThemed == Nil
                  IsXPThemed := IsThemed()
               endif

               Tmp := _HMG_aControlContainerRow [i] <> -1 .AND. _HMG_aControlContainerCol [i] <> -1 .AND. _HMG_aControlBkColor [i] == Nil

               if IsXPThemed .AND. TmpStr == "SLIDER" .AND. Tmp
                  if _HMG_aControlDblClick [i] == .F. .AND. !lOpaque
                     r := GetControlIndex( _HMG_aControlFontHandle [i], _HMG_aControlMiscData1 [i] )
                     DeleteObject ( _HMG_aControlBrushHandle [r] )
                     z := GetControlHandle( _HMG_aControlFontHandle [i], _HMG_aControlMiscData1 [i] )
                     _HMG_aControlBrushHandle [r] := GetTabBrush( z )
                     RETURN GetTabbedControlBrush ( wParam , lParam , z , _HMG_aControlBrushHandle [r] )
                  endif
               endif

               if IsXPThemed .AND. TmpStr == "FRAME" .AND. Tmp
                  if _HMG_aControlDblClick [i] == .F.
                     r := GetControlIndex( _HMG_aControlRangeMin [i], _HMG_aControlRangeMax [i] )
                     DeleteObject ( _HMG_aControlBrushHandle [r] )
                     z := GetControlHandle( _HMG_aControlRangeMin [i], _HMG_aControlRangeMax [i] )
                     _HMG_aControlBrushHandle [r] := GetTabBrush( z )
                     RETURN GetTabbedControlBrush ( wParam , lParam , z , _HMG_aControlBrushHandle [r] )
                  ELSE
                     lOpaque := .T.
                  endif
               endif

               if IsXPThemed .AND. TmpStr == "CHECKBOX" .AND. Tmp
                  if _HMG_aControlDblClick [i] == .F. .AND. !lOpaque
                     r := GetControlIndex( _HMG_aControlRangeMin [i], _HMG_aControlRangeMax [i] )
                     DeleteObject ( _HMG_aControlBrushHandle [r] )
                     z := GetControlHandle( _HMG_aControlRangeMin [i], _HMG_aControlRangeMax [i] )
                     _HMG_aControlBrushHandle [r] := GetTabBrush( z )
                     RETURN GetTabbedControlBrush ( wParam , lParam , z , _HMG_aControlBrushHandle [r] )
                  endif
               endif

               if _HMG_aControlFontColor [i] != Nil
                  SetTextColor( wParam , _HMG_aControlFontColor [i] [1] , _HMG_aControlFontColor [i] [2] , _HMG_aControlFontColor [i] [3] )
               endif

               if ValType ( _HMG_aControlInputMask [i] ) == 'L'
                  if _HMG_aControlInputMask [i] == .T.
                     SetBkMode( wParam , 1 )
                     RETURN( GetStockObject( NULL_BRUSH ) )
                  endif
               endif

               if _HMG_aControlBkColor [i] != Nil

                  SetBkColor( wParam , _HMG_aControlBkColor [i] [1] , _HMG_aControlBkColor [i] [2] , _HMG_aControlBkColor [i] [3] )
                  DeleteObject ( _HMG_aControlBrushHandle [i] )
                  _HMG_aControlBrushHandle [i] := CreateSolidBrush( _HMG_aControlBkColor [i] [1] , _HMG_aControlBkColor [i] [2] , _HMG_aControlBkColor [i] [3] )
                  RETURN ( _HMG_aControlBrushHandle [i] )

               ELSE

                  DeleteObject ( _HMG_aControlBrushHandle [i] )
                  _HMG_aControlBrushHandle [i] := CreateSolidBrush( GetRed ( GetSysColor ( COLOR_3DFACE ) ) , GetGreen ( GetSysColor ( COLOR_3DFACE ) ) , GetBlue ( GetSysColor ( COLOR_3DFACE ) ) )
                  SetBkColor( wParam , GetRed ( GetSysColor ( COLOR_3DFACE ) ) , GetGreen ( GetSysColor ( COLOR_3DFACE ) ) , GetBlue ( GetSysColor ( COLOR_3DFACE ) ) )
                  RETURN ( _HMG_aControlBrushHandle [i] )

               endif

            endif

         endif

      ELSE

         FOR i := 1 TO Len ( _HMG_aControlhandles )

            if ValType ( _HMG_aControlHandles [i] ) == 'A'

               if _HMG_aControlType [i] == 'RADIOGROUP'

                  FOR x := 1 TO Len ( _HMG_aControlHandles [i] )

                     if _HMG_aControlHandles [i] [x] == lParam

                        if _HMG_aControlFontColor [i] != Nil
                           SetTextColor( wParam , _HMG_aControlFontColor [i] [1] , _HMG_aControlFontColor [i] [2] , _HMG_aControlFontColor [i] [3] )
                        endif

                        if IsXPThemed == Nil
                           IsXPThemed := IsThemed()
                        endif

                        if IsXPThemed .AND. _HMG_aControlContainerRow [i] <> -1 .AND. _HMG_aControlContainerCol [i] <> -1
                           if _HMG_aControlDblClick [i] == .F. .AND. !lOpaque .AND. _HMG_aControlBkColor [i] == Nil
                              r := GetControlIndex( _HMG_aControlRangeMin [i], _HMG_aControlRangeMax [i] )
                              DeleteObject ( _HMG_aControlBrushHandle [r] )
                              z := GetControlHandle( _HMG_aControlRangeMin [i], _HMG_aControlRangeMax [i] )
                              _HMG_aControlBrushHandle [r] := GetTabBrush( z )
                              RETURN GetTabbedControlBrush ( wParam , lParam , z , _HMG_aControlBrushHandle [r] )
                           endif
                        endif

                        if ValType ( _HMG_aControlInputMask [i] ) == 'L'
                           if _HMG_aControlInputMask [i] == .T.
                              SetBkMode( wParam , 1 )
                              RETURN ( GetStockObject( NULL_BRUSH ) )
                           endif
                        endif

                        if _HMG_aControlBkColor [i] != Nil
                           SetBkColor( wParam , _HMG_aControlBkColor [i] [1] , _HMG_aControlBkColor [i] [2] , _HMG_aControlBkColor [i] [3] )
                           if x == 1
                              DeleteObject ( _HMG_aControlBrushHandle [i] )
                              _HMG_aControlBrushHandle [i] := CreateSolidBrush( _HMG_aControlBkColor [i] [1] , _HMG_aControlBkColor [i] [2] , _HMG_aControlBkColor [i] [3] )
                           endif
                           RETURN ( _HMG_aControlBrushHandle [i] )
                        ELSE
                           if x == 1
                              DeleteObject ( _HMG_aControlBrushHandle [i] )
                              _HMG_aControlBrushHandle [i] := CreateSolidBrush( GetRed ( GetSysColor ( COLOR_3DFACE ) ) , GetGreen ( GetSysColor ( COLOR_3DFACE ) ) , GetBlue ( GetSysColor ( COLOR_3DFACE ) ) )
                           endif
                           SetBkColor( wParam , GetRed ( GetSysColor ( COLOR_3DFACE ) ) , GetGreen ( GetSysColor ( COLOR_3DFACE ) ) , GetBlue ( GetSysColor ( COLOR_3DFACE ) ) )
                           RETURN ( _HMG_aControlBrushHandle [i] )

                        endif

                     endif

                  NEXT x

               endif

            endif

         NEXT i

      endif
  endif
endif
Events ( hWnd, nMsg, wParam, lParam )
Return (0)
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

verificar ociosidade de sistema

Mensagem por Toledo »

Acabei esquecendo:

Antes do Function Main(), colocar:

Código: Selecionar todos

#include "i_winuser.ch"

STATIC lOpaque := .F., IsXPThemed
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

verificar ociosidade de sistema

Mensagem por HASA »

:?
Ainda não mas... estamos bem perto, declarei as variaveis como LOCAL IsXPThemed, COLOR_3DFACE, NULL_BRUSH, lOpaque

Porque o sistema não iniciava dava erro bem no começo, agora todos os LABEL´s ficaram BRANCOS de frente e fundo.

:-O

HASA
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

verificar ociosidade de sistema

Mensagem por HASA »

8-|

Opsss, não vi se post acima, aguarde vou revisar o fonte.
:)Pos
HASA
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

verificar ociosidade de sistema

Mensagem por HASA »

:))

Mais perto do FIM. Agora os LABEL´s, Frames´s, Grid´s, estão ok porem os TEXTBOX e COMBOBOX ficaram com fundo Branco e frente preto. A systaxe que uso é assim:

@ 165,570 COMBOBOX CB_TIPO ;
WIDTH 105 ;
ITEMS { "INDÚSTRIA","COMÉRCIO","SERVIÇOS" } ;
FONT "MS SANS SERIF" SIZE 9 BOLD ;
UPPERCASE ;
BACKCOLOR _BLUE5 FONTCOLOR _WHITE

@ 145,690 LABEL SUFRAMA ;
VALUE 'Suframa' ;
WIDTH 50 ;
HEIGHT 15 ;
FONTCOLOR _BLUE ;
TRANSPARENT

@ 165,690 TEXTBOX TXTISUF;
HEIGHT 20 ;
WIDTH 075 ;
BACKCOLOR _YELLOW2;
FONTCOLOR _VERDE ;
FONT "MS SANS SERIF" SIZE 9 BOLD;
TOOLTIP "Digite o Código do Suframa";
MAXLENGTH 09 UPPERCASE ;
ON GOTFOCUS This.BackColor:= _BLUE3 ;
ON LOSTFOCUS This.BackColor:=_YELLOW2
:%
HASA
Responder