Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* Accesso temporizzato
Nuovo argomento   Rispondi    Indice del forum -> Windows XP e Reperti Archeologici
Precedente :: Successivo  
Autore Messaggio
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 15 Dic 2008 09:49    Oggetto: Re: Accesso temporizzato Rispondi citando

LoJan ha scritto:

C'è qualche modo per limitare il numero dei login giornalieri di un utente? Confused
Grazie e ciao a tutti


Ciao, non so se è possibile limitare il numero di accessi.
L'ultima versione dello script chktime combinata con il cron che lo lancia ogni 10 minuti è abbastanza affidabile... appena ho tempo la metto in linea con le istruzioni precise
Top
Profilo Invia messaggio privato
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 18:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 15 Dic 2008 11:46    Oggetto: Re: Accesso temporizzato Rispondi citando

LoJan ha scritto:
combinando lo script di GrayWolf (due ore di tempo, aggiunto stinga di registro,...) con il comando di Windows che limita gli orari di accesso (net user username /time:L-D, 1pm-3pm). Ovviamente il figlio trova la scappatoia, cioè effettua un logout e poi login quando stanno per scadere le due ore, e quindi raddoppia la dose...
Cioè si sconentte per riconnettersi subito prima che scada il tempo in cui è possibile fare il login?

Al momento mi vengono in mente due soluzioni (abbastanza) al volo :

1) modificare lo script in modo che guardi che ora sia,
e variare la quantità di tempo che lo script concede, in modo che non vengano superate le 3pm
(cioè se il login avviene ad es. alle 2:40 pm verranno concessi solo 20 minuti)

2)Ancora più facile e veloce, ma con effetti più limitati:
anticipare il termine dell'orario d'accesso, ad es. alle 2:50pm. Se il figlio deve smettere di usare il PC alle 3pm, è inutile che l'accenda alle 2:50pm
Top
Profilo Invia messaggio privato
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 10 Gen 2009 19:49    Oggetto: La figlia mi ha sgamato... di nuovo Rispondi citando

Per puro caso quando aveva dei documenti aperti quando lo script ha effettuato il logoff, e il sistema gli ha chiesto se voleva chiudere l'applicazione, chiudendo la finestra si blocca l'uscita Twisted Evil

Ora sa che gli basta aprire un documento e modificarlo per ignorare i tempi impostati!

è possibile forzare la chiusura di tutte le applicazioni? o lo spegnimento ignorando anche i files modificati?

Grazie

Pensare che l'avevo perfezionato... non si bloccava più! Eccolo
Codice:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html Lang= "it">
   <head>
      <title>
      Controllo Permanenza a PC
      </title>
    <HTA:APPLICATION
         Id="HTACtrl"
            SysMenu="no"
            Showintaskbar="no"           
    >
    <script type="text/vbscript" language="VBScript">
      option explicit
      On Error Resume Next

' * ============================================================================
' *                      descrizione
' * questo programma serve per controllare l'uso del pc da parte degli
' * utenti.
' * viene lanciato ogni 10 minuti da  nncron lite (http://www.nncron.ru)
' * flusso:
' * 1) leggere chktime.ini per parametri utente, tempo, file
' * file esiste?
' * no/si
' *  |  |il file è di oggi?
' *  |   no/si->3
' *  |   \cancella il file
' *  |   \crea il file->2
' *  \ crea il file ->2
' * 2) scrivo la data nel 1* rcd,  e il tempo concesso nel secondo
' *    avvisa l'utente dei minuti a disposiozine
' *    fine programma
' * 3) leggi il file fino all'ultimo record
' *    sottrai 10 al valore trovato
' *    scrivi nuovo record con il valore trovato
' *    il valore scritto <= 0?
' *    no/si-> 4
' *     \fine programma 
' * 4) esegui azione richiesta dal parametro
' *    fine programma
' *
' *
' * ----------------------------------------------------------------------------
' * ------------------------------------------------------------
' *                       Personalizza mappa esposta
' * ------------------------------------------------------------
ILarghezza = 800
iAltezza = 220
iLeft = 0
iTop = 0
' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Messaggi
' * ------------------------------------------------------------
 


                       
 



' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Tempi
' * ------------------------------------------------------------
     '* i valori devono essere espressi in millesimi di secondo
      lTempoMessaggio = 2000
   
     
      ' * carico oggi con la data di sistema
      sOggi = FormatDateTime(now,2)
      '' 'stop msgbox("oggi:" & sOggi)
' * ------------------------------------------------------------
' * ============================================================================
Const ForAppending = 8
dim oShell
Dim oNetwork
dim sUserRilevato


dim sCmdShut
dim sTmp
dim sPath
dim iLeft
dim iTop
dim iLarghezza
dim iAltezza
dim iLeftRil
dim iTopRil

dim idTimer1

dim lTempoMessaggio


dim arrParam
dim cStart
dim sOggi
dim sAzione
set oShell = createobject("WScript.Shell")

'mio rilevo utente'
Set oNetwork = CreateObject("WScript.Network")
sUserRilevato = oNetwork.UserName

 
'****************************************************************************************************'
'****************************************************************************************************'
'******************* R O U T I N E S ****************************************************************'
'****************************************************************************************************'
'****************************************************************************************************'           
sub Window_OnLoad
  On Error Resume Next
    dim i
    dim lTempo
    dim lresto
    dim sFilePers
    arrParam = LeggiIni(sUserRilevato)
    sAzione = arrParam(2)
    lTempo = cint(arrParam(1))
    sFilePers = arrParam(3)
    cstart = 0       
    ScriviLogFile sUserRilevato, "inizio-->" & HTACtrl.commandline
    if right(HTACtrl.commandline, 3) <> "hta" then
      ScriviLogFile sUserRilevato, "--> logon"
      lTempoMessaggio = 0
      cstart = 1
    end if     
   

   
    ' dimensiono la finestra'
    window.resizeTo iLarghezza,iAltezza
    window.moveTo iLeft,iTop
    'mio salvo data e ora'
    sTmp = "<b>Oggi:" _
    & FormatDateTime(now,1) _
    & " sono le:" _
    & FormatDateTime(now,3) _
    & "</b><br>"
   
    'Se azione = 0 buon lavoro e chiudo
    if sAzione = "0" then
      ScriviLogFile sUserRilevato, "azione = 0: chiudo subito!"
''      document.body.innerHTML = sTmp _
''                      & " " & sUserRilevato _
''                      & " <br> Buon lavoro!!" _
''                      & ": </font></center>"
                   
''      idTimer1 = window.setTimeout("StopMe", _
''                           lTempoMessaggio, _
''                           "VBScript" _
''                          )
      StopMe
    else
      ' se non esiste il file personale lo creo con data e zero
      if  not ChkUserFile(sFilePers) then
        CreaUserFile(sFilePers)
        ScriviUserFile sFilePers, cstr(ltempo)
      end if
     
      ' leggo la prima riga del file personale
      ' se la data è vecchia, elimino e ricreo il file
      ' con data e tempo
      if not chkOggi(sFilePers) then
      ScriviLogFile sUserRilevato, "ricreo user file"
        CreaUserFile(sFilePers)
        ScriviUserFile sFilePers, lTempo
      ' se la data è oggi
      ' leggo l'ultimo record per ottenere il tempo rimasto
      ' se il tempo è > 10 scrivo nuovo record
      ' altrimenti eseguo azione richiesta
      else
        lResto = cint(LeggiLast(sFilePers))
        if cStart = 0 then
          lResto = lResto - 10
        end if
        ScriviLogFile sUserRilevato, "questo e il resto" & cstr(lresto)                         
        if lResto > 0 then
          ScriviLogFile sUserRilevato, "resto ancora valido"
          ScriviUserFile sFilePers, cstr(lresto)
        else
          ScriviLogFile sUserRilevato, "resto azzerato!!!"
          ScriviUserFile sFilePers, "0"
          StopWorkVBS(sAzione)
          'idTimer1 = window.setTimeout("Stop1", _
           ''            lTempoMessaggio, _
            ''           "VBScript" _
             ''         )   
 
        end if
      end if
end if           
    ' se ho ancora tempo lo segnalo

      document.body.innerHTML = sTmp _
                      & " " & sUserRilevato _
                      & "<br>ti restano:" & cstr(lresto) & " minuti." _           
                      & ": </font></center>"
                   
      idTimer1 = window.setTimeout("StopMe", _
                           lTempoMessaggio, _
                           "VBScript" _
                          )

                 
  'window.close
end sub

       
' * ============================================================================
' * Stop1
' * chiama Stopworkvbs con il parametro azione (il set timeout non puo?)
' * ----------------------------------------------------------------------------
sub Stop1
  On Error Resume Next
  ScriviLogFile sUserRilevato, "STOP1!"
  StopWorkVBS(sAzione)   
end sub
' * ============================================================================
' * StopWorkVBS
' * disconnette l'utente
' * ----------------------------------------------------------------------------
sub StopWorkVBS(sAzione)
    On Error Resume Next
    window.moveTo iLeftRil,iTopRil
    document.body.innerHTML = "spengo"
    window.clearTimeout(idTimer1)
    ScriviLogFile sUserRilevato, "chiudo"
    if sAzione = "1" then
      'sCmdShut ="logoff"
      'sCmdShut = "shutdown -s -f -t 180 -c ""E' stato programmato lo spegnimento del computer tra 3 minuti. Salva quello che stai facendo!!"""
      sCmdShut = "shutdown -l"     
      oShell.run sCmdShut,,true
    end if
    window.close
end sub
     

     
' * ============================================================================
' * StopMe
' * chiude il programma
' * ----------------------------------------------------------------------------
     
sub StopMe
    window.clearTimeout(idTimer1)
    window.close
end sub

     
' * ============================================================================
' * ChkUserFile
' * verifica se esiste già il file personale dell'utente connesso
' * ----------------------------------------------------------------------------
     
Function ChkUserFile(sFile)
    On Error Resume Next
    ScriviLogFile sUserRilevato, "sono in chkuserfile: " & sFile
    dim fs
    Set fs = CreateObject("Scripting.FileSystemObject")
    dim sNomeFile
    sNomeFile = sPath & sFile
    ChkUserFile = fs.fileexists(sNomeFile)
end Function
     

' * ============================================================================
' * ChkOggi
' * Verifica se la data contenuta nel file è quella odierna
' * ----------------------------------------------------------------------------
     
Function ChkOggi(sFile)
    On Error Resume Next
    ScriviLogFile sUserRilevato, "sono in chkoggi: " & sFile
    dim fs
    dim fso
    dim sLine
    dim sNomeFile
    sNomeFile = sPath & sFile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fso = fs.OpenTextFile(sNomeFile, 1)
    sLine = fso.Readline
   
    if cdate(sLine) = cdate(sOggi) then
      chkoggi = true
    else
      chkoggi = false
    end if
end Function

' * ============================================================================
' * LeggiLast
' * Legge il file personale e riporta i minuti rimanenti
' * quelli dell'ultima riga
' * ----------------------------------------------------------------------------
Function LeggiLast(sFile)
    dim fs
    dim fso
    dim sLine
    dim sNomeFile
    sNomeFile = sPath & sFile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fso = fs.OpenTextFile(sNomeFile, 1)
    Do Until fso.AtEndOfStream
      sLine = fso.Readline
    Loop
    'LeggiLast = sLine
    LeggiLast = left(sLine, 3)   
end Function     
' * ============================================================================
' * CreaUserFile
' * crea il file personale dell'utente  e scrive nella prima riga la data
' * ----------------------------------------------------------------------------
Function CreaUserFile(sFile)
    On Error Resume Next
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    sNomeFile = sPath & sFile
    ScriviLogFile sUserRilevato, "crea userfile" & snomefile
    Set fs = CreateObject("Scripting.FileSystemObject")

    Set fso = fs.CreateTextFile(sNomeFile)
    fso.Close
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
    fsFile.WriteLine(sOggi)
    fsFile.Close
end Function       
' * ============================================================================
' * ScriviUserFile
' * Aggiunge una riga con il tempo rimasto
' * ----------------------------------------------------------------------------
Function ScriviUserFile(sFile, sTempo)
    On Error Resume Next
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    sNomeFile = sPath & sFile
   
    Const ForAppending = 8
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
    ScriviLogFile sUserRilevato, "scriviuserfile:" & soggi
    sTempo = sTempo & "    ora: "   & FormatDateTime(now,3) 
    fsFile.WriteLine(sTempo)
    fsFile.Close
end Function

' * ============================================================================
' * CancUserFile
' * Cancella il file con la data prima di ricrearlo
' * ----------------------------------------------------------------------------
Function CancUserFile(sUtente)
    dim fs
    dim fsFile
    dim sNomeFile
    sNomeFile = sPath & sUtente & ".TXT"
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fsFile = fs.GetFile(sNomeFile)
    fsFile.Delete
end Function

' * ============================================================================
' * ScriviLogFile
' * Scrivi una riga sul file di log
' * ----------------------------------------------------------------------------
Function ScriviLogFile(sUtente, sAzione)
    On Error Resume Next
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    dim sRiga
    'sNomeFile = "c:\script\chktime2.log"
    sNomeFile = sPath & "chktime2.log"
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    if  fs.fileexists(sNomeFile) = false then
         Set fso = fs.CreateTextFile(sNomeFile)
           fso.Close
    end if       
   
    Const ForAppending = 8
   
    sRiga = "User: " & sUtente & _
    " azione: " & sAzione & _
    " data: " _
    & FormatDateTime(now,1) _
    & " ora: " _
    & FormatDateTime(now,3) _
    '& chr(13) '& chr(10)
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)


    fsFile.WriteLine(sRiga)
    fsFile.Close
end Function

' * ============================================================================
' * LeggiIni
' * Legge il file dei parametri, e  torna con un array di 4 elementi
' * 0 = utente
' * 1 = minuti
' * 2 = azione (0=nulla,1=logoff,2=solo msg)
' * 3 = filepersonale
' * se non trova il file o l'utente usa il default
' * ----------------------------------------------------------------------------
Function LeggiIni(utente)
    dim fs
    dim fso
    dim sLinea
    dim sNomeFile
    dim arrParametri
    Set fs = CreateObject("Scripting.FileSystemObject")
    sNomeFile = "c:\script\chktime2.ini"
    if  fs.fileexists(sNomeFile) = true then
      Set fso = fs.OpenTextFile(sNomeFile, 1)
      Do Until fso.AtEndOfStream
        sLinea = ucase(fso.Readline)
        if left(sLinea, 3) = "DIR" then
          sPath = mid(sLinea, 4)
        end if
        if left(sLinea, 1) <> "#" then
          arrParametri = Split(sLinea , ";")
          if arrParametri(0) = ucase(utente) then
            LeggiIni = arrParametri
            Exit Function
          end if
        end if
      Loop
    end if
    slinea = ucase(utente) & ";60;0;default.txt"
    arrParametri = Split(sLinea , ";")
    LeggiIni = arrParametri
end Function

    </script>
   </head>
   <body>
    </body>
</html>


Invece questo è il cron.tab

Codice:

#CRONTAB FILE
# Classic crontab format:
# Minutes Hours Days Months WeekDays Command

#*/15 8-16 * * 1-5 checkmail.exe
# lancio di chktime2.hta ogni 10 minuti
*/10 * * * * c:\script\chktime2.hta


E questo è il mio chktime2.ini che deve stare nella stessa cartella di chktime2.hta

Codice:

# file di configurazione per chktime2.hta
# ogni riga corrisponde ai parametri per un utente
# tranne la riga DIR che contiene il path di lavoro
# i parametri sono separati da ;
# utente;minuti;azione(0=nulla;1=logoff;2=messaggio)
# file personale
DIRc:\\programmi\\cron\\
user1;100;2;file1.txt
user2;70;1;file2.txt
user3;70;1;file3.txt
Top
Profilo Invia messaggio privato
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 01 Apr 2010 01:41    Oggetto: Rispondi citando

ho ulteriormente affinato lo script, questa è la versione 3
chktime3.hta
Codice:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html Lang= "it">
   <head>
      <title>
      Controllo Permanenza a PC
      </title>
    <HTA:APPLICATION
         Id="HTACtrl"
            SysMenu="no"
            Showintaskbar="no"           
    >
    <script type="text/vbscript" language="VBScript">
      option explicit
      On Error Resume Next

' * ============================================================================
' * Autore: Marco Tiraferri
' * Versione 3.1 marzo 2010
' *-------------------------------
' * Questo programma serve per temporizzare l'uso del computer da parte
' * degli utenti, per poterlo utilizzare ogni persona deve essere
' * registrata con un account differente e non avere diritti amministrativi
' * che consentirebbero di bloccare i servizi.
' *-------------------------------------------------------------
' * Il programma è fornito "as is" senza nessuna garanzia.
' * Sentitevi liberi di usare e distribuire questo programma
' * Se apportate miglioramenti fatemelo sapere mtiraferri@tiscali.it
' * Se lo distribuite lasciate i miei riferimenti
' * ============================================================================
' *                      configurazione
' * creare un file di nome chktime2.ini nella cartella in cui si
' * installa chktime3.hta con le seguenti caratteristiche:
' *
' * # file di configurazione per chktime
' * # ogni riga corrisponde ai parametri per un utente
' * # i parametri sono separati da ;
' * # utente;minuti;azione(0=nulla;1=logoff;2=messaggio);file personale
' * # DIR è la cartella in cui sono contenuti i files
' * DIRc:\\programmi\\cron\\
' * utente;minuti;azione;nomefile
' *
' * ==========================================================================
' *                      descrizione
' * questo programma serve per controllare l'uso del pc da parte degli
' * utenti.
' * viene lanciato ogni 10 minuti da  nncron lite (http://www.nncron.ru)
' * flusso:
' * 1) leggere chktime2.ini per parametri utente, tempo, file
' * l'ultima time stamp è passato da almeno 2 minuti?
' * file esiste?
' * no/si
' *  |  |il file è di oggi?
' *  |   no/si->3
' *  |   \cancella il file
' *  |   \crea il file->2
' *  \ crea il file ->2
' * 2) scrivo la data nel 1* rcd,  e il tempo concesso nel secondo
' *    avvisa l'utente dei minuti a disposiozine
' *    fine programma
' * 3) leggi il file fino all'ultimo record
' *    sottrai 10 al valore trovato
' *    scrivi nuovo record con il valore trovato
' *    il valore scritto <= 0?
' *    no/si-> 4
' *     \fine programma 
' * 4) esegui azione richiesta dal parametro
' *    fine programma
' *
' *
' * ----------------------------------------------------------------------------
' * ------------------------------------------------------------
' *                       Personalizza mappa esposta
' * ------------------------------------------------------------
ILarghezza = 800
iAltezza = 220
iLeft = 0
iTop = 0
' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Messaggi
' * ------------------------------------------------------------
 


                       
 



' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Tempi
' * ------------------------------------------------------------
     '* i valori devono essere espressi in millesimi di secondo
      lTempoMessaggio = 2000
     
      ' * carico oggi con la data di sistema
      sOggi = FormatDateTime(now,2)
      '' 'stop msgbox("oggi:" & sOggi)
' * ------------------------------------------------------------
' * ============================================================================
Const ForAppending = 8
dim oShell
Dim oNetwork
dim sUserRilevato


dim sCmdShut
dim sTmp
dim sPath
dim iLeft
dim iTop
dim iLarghezza
dim iAltezza
dim iLeftRil
dim iTopRil

dim idTimer1

dim lTempoMessaggio

dim arrParam
dim cStart
dim sOggi
dim sAzione
set oShell = createobject("WScript.Shell")

'mio rilevo utente'
Set oNetwork = CreateObject("WScript.Network")
sUserRilevato = oNetwork.UserName


 
'****************************************************************************************************'
'****************************************************************************************************'
'******************* R O U T I N E S ****************************************************************'
'****************************************************************************************************'
'****************************************************************************************************'           
sub Window_OnLoad
  On Error Resume Next
    dim i
    dim lTempo
    dim lresto
    dim sFilePers
    arrParam = LeggiIni(sUserRilevato)
    sAzione = arrParam(2)
    lTempo = cint(arrParam(1))
    sFilePers = arrParam(3)
    cstart = 0       
    ScriviLogFile sUserRilevato, "inizio-->" & HTACtrl.commandline
    if right(HTACtrl.commandline, 3) = "logon" then
      ScriviLogFile sUserRilevato, "--> logon"
      lTempoMessaggio = 0
      cstart = 1
    end if     

    'bloccato x il momento!     SeAttivo
   
    ' dimensiono la finestra'
    window.resizeTo iLarghezza,iAltezza
    window.moveTo iLeft,iTop
    'mio salvo data e ora'
    sTmp = "<b>Oggi:" _
    & FormatDateTime(now,1) _
    & " sono le:" _
    & FormatDateTime(now,3) _
    & "</b><br>"
                     
   
   
    'Se azione = 0 buon lavoro e chiudo
    if sAzione = "0" then
      ScriviLogFile sUserRilevato, "azione = 0: chiudo subito!"
''      document.body.innerHTML = sTmp _
''                      & " " & sUserRilevato _
''                      & " <br> Buon lavoro!!" _
''                      & ": </font></center>"
                   
''      idTimer1 = window.setTimeout("StopMe", _
''                           lTempoMessaggio, _
''                           "VBScript" _
''                          )
      StopMe
    else
      ' se non esiste il file personale lo creo con data e zero
      if  not ChkUserFile(sFilePers) then
        CreaUserFile(sFilePers)
        ScriviUserFile sFilePers, cstr(ltempo)
      end if
     
      ' leggo la prima riga del file personale
      ' se la data è vecchia, elimino e ricreo il file
      ' con data e tempo
      if not chkOggi(sFilePers) then
        ScriviLogFile sUserRilevato, "ricreo user file"
        CreaUserFile(sFilePers)
        ScriviUserFile sFilePers, lTempo
      ' se la data è oggi
      ' leggo l'ultimo record per ottenere il tempo rimasto
      ' se il tempo è > 10 scrivo nuovo record
      ' altrimenti eseguo azione richiesta
      else
        lResto = cint(LeggiLast(sFilePers))
        if continua(sFilePers) = false then
            ScriviLogFile sUserRilevato, "Esco subito " + sfilepers + " resto:" + cstr(lresto)
            stopMe
            exit sub
        else
            ScriviLogFile sUserRilevato, "Vado avanti " + sfilepers + " resto:" + cstr(lresto)
        end if           
        if cStart = 0 then
          lResto = lResto - 10
        end if
        ScriviLogFile sUserRilevato, "questo e il resto" & cstr(lresto)   
        if lResto > 0 then
          ScriviLogFile sUserRilevato, "resto ancora valido"
          ScriviUserFile sFilePers, cstr(lresto)
        else
          ScriviLogFile sUserRilevato, "resto azzerato!!!"
          ScriviUserFile sFilePers, "0"
          StopWorkVBS(sAzione)
          'idTimer1 = window.setTimeout("Stop1", _
           ''            lTempoMessaggio, _
            ''           "VBScript" _
             ''         )   
 
        end if
      end if
   
    ' se ho ancora tempo lo segnalo

      document.body.innerHTML = sTmp _
                      & " " & sUserRilevato _
                      & "<br>ti restano:" & cstr(lresto) & " minuti." _           
                      & ": </font></center>"
                   
      idTimer1 = window.setTimeout("StopMe", _
                           lTempoMessaggio, _
                           "VBScript" _
                          )

                 
  'window.close
  end if
end sub

       
' * ============================================================================
' * Stop1
' * chiama Stopworkvbs con il parametro azione (il set timeout non puo?)
' * ----------------------------------------------------------------------------
sub Stop1
  On Error Resume Next
  ScriviLogFile sUserRilevato, "STOP1!"
  StopWorkVBS(sAzione)   
end sub
' * ============================================================================
' * StopWorkVBS
' * disconnette l'utente
' * ----------------------------------------------------------------------------
sub StopWorkVBS(sAzione)
    On Error Resume Next
    window.moveTo iLeftRil,iTopRil
    document.body.innerHTML = "spengo"
    window.clearTimeout(idTimer1)
    ScriviLogFile sUserRilevato, "chiudo"
    if sAzione = "1" then
      'sCmdShut ="logoff"
      'sCmdShut = "shutdown -s -f -t 180 -c ""E' stato programmato lo spegnimento del computer tra 3 minuti. Salva quello che stai facendo!!"""
      sCmdShut = "shutdown -l"     
      oShell.run sCmdShut,,true
    end if
    window.close
end sub
     

     
' * ============================================================================
' * StopMe
' * chiude il programma
' * ----------------------------------------------------------------------------
     
sub StopMe
    ScriviLogFile sUserRilevato, ">>>>>>>>>>>>>>>>STOPME<<<<<<<<<<<<<<<<<<<<<"
    window.clearTimeout(idTimer1)
    window.close
end sub

     
' * ============================================================================
' * ChkUserFile
' * verifica se esiste già il file personale dell'utente connesso
' * ----------------------------------------------------------------------------
     
Function ChkUserFile(sFile)
    On Error Resume Next
    ScriviLogFile sUserRilevato, "sono in chkuserfile: " & sFile
    dim fs
    Set fs = CreateObject("Scripting.FileSystemObject")
    dim sNomeFile
    sNomeFile = sPath & sFile
    ChkUserFile = fs.fileexists(sNomeFile)
end Function
     

' * ============================================================================
' * ChkOggi
' * Verifica se la data contenuta nel file è quella odierna
' * ----------------------------------------------------------------------------
     
Function ChkOggi(sFile)
    On Error Resume Next
    ScriviLogFile sUserRilevato, "sono in chkoggi: " & sFile
    dim fs
    dim fso
    dim sLine
    dim sNomeFile
    sNomeFile = sPath & sFile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fso = fs.OpenTextFile(sNomeFile, 1)
    sLine = fso.Readline
   
    if cdate(sLine) = cdate(sOggi) then
      chkoggi = true
    else
      chkoggi = false
    end if
end Function

' * ============================================================================
' * LeggiLast
' * Legge il file personale e riporta i minuti rimanenti
' * quelli dell'ultima riga
' * ----------------------------------------------------------------------------
Function LeggiLast(sFile)
    dim fs
    dim fso
    dim sLine
    dim sNomeFile
    sNomeFile = sPath & sFile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fso = fs.OpenTextFile(sNomeFile, 1)
    Do Until fso.AtEndOfStream
      sLine = fso.Readline
    Loop
    'LeggiLast = sLine
    LeggiLast = left(sLine, 3)   
end Function     
' * ============================================================================
' * CreaUserFile
' * crea il file personale dell'utente  e scrive nella prima riga la data
' * ----------------------------------------------------------------------------
Function CreaUserFile(sFile)
    On Error Resume Next
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    sNomeFile = sPath & sFile
    ScriviLogFile sUserRilevato, "crea userfile" & snomefile
    Set fs = CreateObject("Scripting.FileSystemObject")

    Set fso = fs.CreateTextFile(sNomeFile)
    fso.Close
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
    fsFile.WriteLine(sOggi)
    fsFile.Close
end Function       
' * ============================================================================
' * ScriviUserFile
' * Aggiunge una riga con il tempo rimasto
' * ----------------------------------------------------------------------------
Function ScriviUserFile(sFile, sTempo)
    On Error Resume Next
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    sNomeFile = sPath & sFile
   
    Const ForAppending = 8
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
    ScriviLogFile sUserRilevato, "scriviuserfile:" & soggi
    sTempo = sTempo & "    ora: "   & FormatDateTime(now,3) 
    fsFile.WriteLine(sTempo)
    fsFile.Close
end Function

' * ============================================================================
' * CancUserFile
' * Cancella il file con la data prima di ricrearlo
' * ----------------------------------------------------------------------------
Function CancUserFile(sUtente)
    dim fs
    dim fsFile
    dim sNomeFile
    sNomeFile = sPath & sUtente & ".TXT"
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fsFile = fs.GetFile(sNomeFile)
    fsFile.Delete
end Function

' * ============================================================================
' * ScriviLogFile
' * Scrivi una riga sul file di log
' * ----------------------------------------------------------------------------
Function ScriviLogFile(sUtente, sAzione)
    On Error Resume Next
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    dim sRiga
    'sNomeFile = "c:\script\chktime2.log"
    sNomeFile = sPath & "chktime2.log"
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    if  fs.fileexists(sNomeFile) = false then
         Set fso = fs.CreateTextFile(sNomeFile)
           fso.Close
    end if       
   
    Const ForAppending = 8
   
    sRiga = "User: " & sUtente & _
    " data: " _
    & FormatDateTime(now,1) _
    & " ora: " _
    & FormatDateTime(now,3) _
    & " azione: "  & sAzione
    '& chr(13) '& chr(10)
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)


    fsFile.WriteLine(sRiga)
    fsFile.Close
end Function

' * ============================================================================
' * LeggiIni
' * Legge il file dei parametri, e  torna con un array di 4 elementi
' * 0 = utente
' * 1 = minuti
' * 2 = azione (0=nulla,1=logoff,2=solo msg)
' * 3 = filepersonale
' * se non trova il file o l'utente usa il default
' * ----------------------------------------------------------------------------
Function LeggiIni(utente)
    dim fs
    dim fso
    dim sLinea
    dim sNomeFile
    dim arrParametri
    Set fs = CreateObject("Scripting.FileSystemObject")
    sNomeFile = "c:\script\chktime2.ini"
    if  fs.fileexists(sNomeFile) = true then
      Set fso = fs.OpenTextFile(sNomeFile, 1)
      Do Until fso.AtEndOfStream
        sLinea = ucase(fso.Readline)
        if left(sLinea, 3) = "DIR" then
          sPath = mid(sLinea, 4)
        end if
        if left(sLinea, 1) <> "#" then
          arrParametri = Split(sLinea , ";")
          if arrParametri(0) = ucase(utente) then
            LeggiIni = arrParametri
            Exit Function
          end if
        end if
      Loop
    end if
    slinea = ucase(utente) & ";60;0;default.txt"
    arrParametri = Split(sLinea , ";")
    LeggiIni = arrParametri
end Function

' * ============================================================================
' * SeAttivo
' * Verifica se esiste il file C:\Programmi\cron\attivo.ini
' * se c'è nessuno non fa conteggio di tempo
' * ----------------------------------------------------------------------------
Function SeAttivo()
    dim fs
    dim fso
    dim sLinea
    dim sNomeFile
    dim arrParametri
    Set fs = CreateObject("Scripting.FileSystemObject")
    sNomeFile = "C:\Programmi\cron\attivo.ini"
    if  fs.fileexists(sNomeFile) = true then
      Set fso = fs.OpenTextFile(sNomeFile, 1)
        Do Until fso.AtEndOfStream
        sLinea = fso.Readline
        msgbox(sLinea + "qualcuno")
        ScriviLogFile sUserRilevato, sLinea + ">>>------- qualcuno loggato!!!"
      loop
    else
    'msgbox("nessuno")
      ScriviLogFile sUserRilevato, "  NESSUNO loggato!!!"
      StopMe
    end if
end function

' * ============================================================================
' * continua - verifica se dal giro precedente sono passati almeno 2 minuti
' *            in caso siano passati meno di due minuti ritorna falso e non
' *            esegue il conteggio, altrimenti va avanti normalmente
' * ----------------------------------------------------------------------------
Function continua(sFilePers)
 
    'On Error Resume Next
    dim fs
    dim fso
    dim sLine
    dim a, b, c
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    dim sNomeFile
    sNomeFile = sPath  + sFilePers

    Set fso = fs.OpenTextFile(sNomeFile, 1)
    Do Until fso.AtEndOfStream
      sLine = fso.Readline
''      msgbox sLine
    Loop
''   msgbox sLine
    a = replace(mid(sLine,instr(sLine, ":") +1),":","" )
    b = replace(FormatDateTime(now,3),":","" )
    c =  clng(b)  - clng(a)
    Scrivilogfile sUserRilevato, ">>>>Delta" & b & " - " & a  & " = " & cstr(c)   
    if  (clng(b)  - clng(a) < 200) then
      continua = false
    else
      continua = true
    end if             
    'msgbox replace(mid(sLine,instr(sLine, ":") +1),".","" )
    'msgbox replace(FormatDateTime(now,3),".","" ) 
  ''  msgbox a + " - " + b
   '' msgbox cstr(c)
end Function

    </script>
   </head>
   <body>
    </body>
</html>
Top
Profilo Invia messaggio privato
madvero
Amministratore
Amministratore


Registrato: 05/07/05 21:42
Messaggi: 19510
Residenza: Sono brusco con voi solo perchè il tempo è a sfavore. Penso in fretta, quindi parlo in fretta

MessaggioInviato: 02 Apr 2010 01:21    Oggetto: Rispondi citando

grazie Squeeze per l'aggiornamento !!!
Top
Profilo Invia messaggio privato
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 16 Apr 2010 17:35    Oggetto: ...ops! Rispondi

Un ulteriore aggiornamento.. avevo sbagliato una if e altre cosette nella 3.1.

Codice:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html Lang= "it">
   <head>
      <title>
      Controllo Permanenza a PC
      </title>
    <HTA:APPLICATION
         Id="HTACtrl"
            SysMenu="no"
            Showintaskbar="no"           
    >
    <script type="text/vbscript" language="VBScript">
      option explicit
      On Error Resume Next

' * ============================================================================
' * Autore: Marco Tiraferri
' * Versione 3.2 aprile 2010
' *--- patch
' * 3.2 corretta la if per non sottrarre il tempo in fase di logon
' *-------------------------------
' * Questo programma serve per temporizzare l'uso del computer da parte
' * degli utenti, per poterlo utilizzare ogni persona deve essere
' * registrata con un account differente e non avere diritti amministrativi
' * che consentirebbero di bloccare i servizi.
' *-------------------------------------------------------------
' * Il programma è fornito "as is" senza nessuna garanzia.
' * Sentitevi liberi di usare e distribuire questo programma
' * Se apportate miglioramenti fatemelo sapere mtiraferri@tiscali.it
' * Se lo distribuite lasciate i miei riferimenti
' * ============================================================================
' *                      configurazione
' * creare un file di nome chktime2.ini nella cartella in cui si
' * installa chktime3.hta con le seguenti caratteristiche:
' *
' * # file di configurazione per chktime
' * # ogni riga corrisponde ai parametri per un utente
' * # i parametri sono separati da ;
' * # utente;minuti;azione(0=nulla;1=logoff;2=messaggio);file personale
' * # DIR è la cartella in cui sono contenuti i files
' * DIRc:\\programmi\\cron\\
' * utente;minuti;azione;nomefile
' *
' * ==========================================================================
' *                      descrizione
' * questo programma serve per controllare l'uso del pc da parte degli
' * utenti.
' * viene lanciato ogni 10 minuti da  nncron lite (http://www.nncron.ru)
' * flusso:
' * 1) leggere chktime2.ini per parametri utente, tempo, file
' * l'ultima time stamp è passato da almeno 2 minuti?
' * file esiste?
' * no/si
' *  |  |il file è di oggi?
' *  |   no/si->3
' *  |   \cancella il file
' *  |   \crea il file->2
' *  \ crea il file ->2
' * 2) scrivo la data nel 1* rcd,  e il tempo concesso nel secondo
' *    avvisa l'utente dei minuti a disposiozine
' *    fine programma
' * 3) leggi il file fino all'ultimo record
' *    sottrai 10 al valore trovato
' *    scrivi nuovo record con il valore trovato
' *    il valore scritto <= 0?
' *    no/si-> 4
' *     \fine programma 
' * 4) esegui azione richiesta dal parametro
' *    fine programma
' *
' *
' * ----------------------------------------------------------------------------
' * ------------------------------------------------------------
' *                       Personalizza mappa esposta
' * ------------------------------------------------------------
ILarghezza = 800
iAltezza = 220
iLeft = 0
iTop = 0
' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Messaggi
' * ------------------------------------------------------------
 


                       
 



' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Tempi
' * ------------------------------------------------------------
     '* i valori devono essere espressi in millesimi di secondo
      lTempoMessaggio = 5000
     
      ' * carico oggi con la data di sistema
      sOggi = FormatDateTime(now,2)
      '' 'stop msgbox("oggi:" & sOggi)
' * ------------------------------------------------------------
' * ============================================================================
Const ForAppending = 8
dim oShell
Dim oNetwork
dim sUserRilevato


dim sCmdShut
dim sTmp
dim sPath
dim iLeft
dim iTop
dim iLarghezza
dim iAltezza
dim iLeftRil
dim iTopRil

dim idTimer1

dim lTempoMessaggio

dim arrParam
dim cStart
dim sOggi
dim sAzione
set oShell = createobject("WScript.Shell")

'mio rilevo utente'
Set oNetwork = CreateObject("WScript.Network")
sUserRilevato = oNetwork.UserName


 
'****************************************************************************************************'
'****************************************************************************************************'
'******************* R O U T I N E S ****************************************************************'
'****************************************************************************************************'
'****************************************************************************************************'           
sub Window_OnLoad
  On Error Resume Next
    dim i
    dim lTempo
    dim lresto
    dim sFilePers
    arrParam = LeggiIni(sUserRilevato)
    sAzione = arrParam(2)
    lTempo = cint(arrParam(1))
    sFilePers = arrParam(3)
    cstart = 0       
    ScriviLogFile sUserRilevato, "inizio-->" & HTACtrl.commandline
    if InStr(1, HTACtrl.commandline, "logon", 1) then
      ScriviLogFile sUserRilevato, "--> siamo in logon"
      lTempoMessaggio = 4000
      cstart = 1
    end if     

    'bloccato x il momento!     SeAttivo
   
    ' dimensiono la finestra'
    window.resizeTo iLarghezza,iAltezza
    window.moveTo iLeft,iTop
    'mio salvo data e ora'
    sTmp = "<b>Oggi:" _
    & FormatDateTime(now,1) _
    & " sono le:" _
    & FormatDateTime(now,3) _
    & "</b><br>"
                     
   
   
    'Se azione = 0 buon lavoro e chiudo
    if sAzione = "0" then
      ScriviLogFile sUserRilevato, "azione = 0: chiudo subito!"
''      document.body.innerHTML = sTmp _
''                      & " " & sUserRilevato _
''                      & " <br> Buon lavoro!!" _
''                      & ": </font></center>"
                   
''      idTimer1 = window.setTimeout("StopMe", _
''                           lTempoMessaggio, _
''                           "VBScript" _
''                          )
      StopMe
    else
      ' se non esiste il file personale lo creo con data e zero
      if  not ChkUserFile(sFilePers) then
        CreaUserFile(sFilePers)
        ScriviUserFile sFilePers, cstr(ltempo)
      end if
     
      ' leggo la prima riga del file personale
      ' se la data è vecchia, elimino e ricreo il file
      ' con data e tempo
      if not chkOggi(sFilePers) then
        ScriviLogFile sUserRilevato, "ricreo user file"
        CreaUserFile(sFilePers)
        ScriviUserFile sFilePers, lTempo
      ' se la data è oggi
      ' leggo l'ultimo record per ottenere il tempo rimasto
      ' se il tempo è > 10 scrivo nuovo record
      ' altrimenti eseguo azione richiesta
      else
        lResto = cint(LeggiLast(sFilePers))
        if continua(sFilePers) = false  and lresto > 10 then
            ScriviLogFile sUserRilevato, "Esco subito " + sfilepers + " resto:" + cstr(lresto)
            stopMe
            exit sub
        else
            ScriviLogFile sUserRilevato, "Vado avanti " + sfilepers + " resto:" + cstr(lresto)
        end if         
        ' tolgo 10 al resto se non sono alla logon  (cstart = 1)
        ' o se sono alla logon ed il resto è maggiore di 30 
        'if cStart = 0 or lresto < 30 then
        if cStart = 0   then
           lResto = lResto - 10
        else
          sTmp = sTmp & " STARTUP!<br>"
        end if
        ScriviLogFile sUserRilevato, "questo e il resto" & cstr(lresto)   
        if lResto > 0 then
          ScriviLogFile sUserRilevato, "resto ancora valido"
          ScriviUserFile sFilePers, cstr(lresto)
        else
          ScriviLogFile sUserRilevato, "resto azzerato!!!"
          ScriviUserFile sFilePers, "0"
          StopWorkVBS(sAzione)
          'idTimer1 = window.setTimeout("Stop1", _
           ''            lTempoMessaggio, _
            ''           "VBScript" _
             ''         )   
 
        end if
      end if
   
    ' se ho ancora tempo lo segnalo

      document.body.innerHTML = sTmp _
                      & " " & sUserRilevato _
                      & "<br>ti restano:" & cstr(lresto) & " minuti." _           
                      & ": </font></center>"
                   
      idTimer1 = window.setTimeout("StopMe", _
                           lTempoMessaggio, _
                           "VBScript" _
                          )

                 
  'window.close
  end if
end sub

       
' * ============================================================================
' * Stop1
' * chiama Stopworkvbs con il parametro azione (il set timeout non puo?)
' * ----------------------------------------------------------------------------
sub Stop1
  On Error Resume Next
  ScriviLogFile sUserRilevato, "STOP1!"
  StopWorkVBS(sAzione)   
end sub
' * ============================================================================
' * StopWorkVBS
' * disconnette l'utente
' * ----------------------------------------------------------------------------
sub StopWorkVBS(sAzione)
    On Error Resume Next
    window.moveTo iLeftRil,iTopRil
    document.body.innerHTML = "spengo"
    window.clearTimeout(idTimer1)
    ScriviLogFile sUserRilevato, "chiudo"
    if sAzione = "1" then
      'sCmdShut ="logoff"
      'sCmdShut = "shutdown -s -f -t 180 -c ""E' stato programmato lo spegnimento del computer tra 3 minuti. Salva quello che stai facendo!!"""
      sCmdShut = "shutdown -l"     
      oShell.run sCmdShut,,true
    end if
    window.close
end sub
     

     
' * ============================================================================
' * StopMe
' * chiude il programma
' * ----------------------------------------------------------------------------
     
sub StopMe
    ScriviLogFile sUserRilevato, ">>>>>>>>>>>>>>>>STOPME<<<<<<<<<<<<<<<<<<<<<"
    window.clearTimeout(idTimer1)
    window.close
end sub

     
' * ============================================================================
' * ChkUserFile
' * verifica se esiste già il file personale dell'utente connesso
' * ----------------------------------------------------------------------------
     
Function ChkUserFile(sFile)
    On Error Resume Next
    ScriviLogFile sUserRilevato, "sono in chkuserfile: " & sFile
    dim fs
    Set fs = CreateObject("Scripting.FileSystemObject")
    dim sNomeFile
    sNomeFile = sPath & sFile
    ChkUserFile = fs.fileexists(sNomeFile)
end Function
     

' * ============================================================================
' * ChkOggi
' * Verifica se la data contenuta nel file è quella odierna
' * ----------------------------------------------------------------------------
     
Function ChkOggi(sFile)
    On Error Resume Next
    ScriviLogFile sUserRilevato, "sono in chkoggi: " & sFile
    dim fs
    dim fso
    dim sLine
    dim sNomeFile
    sNomeFile = sPath & sFile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fso = fs.OpenTextFile(sNomeFile, 1)
    sLine = fso.Readline
   
    if cdate(sLine) = cdate(sOggi) then
      chkoggi = true
    else
      chkoggi = false
    end if
end Function

' * ============================================================================
' * LeggiLast
' * Legge il file personale e riporta i minuti rimanenti
' * quelli dell'ultima riga
' * ----------------------------------------------------------------------------
Function LeggiLast(sFile)
    dim fs
    dim fso
    dim sLine
    dim sNomeFile
    sNomeFile = sPath & sFile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fso = fs.OpenTextFile(sNomeFile, 1)
    Do Until fso.AtEndOfStream
      sLine = fso.Readline
    Loop
    'LeggiLast = sLine
    LeggiLast = left(sLine, 3)   
end Function     
' * ============================================================================
' * CreaUserFile
' * crea il file personale dell'utente  e scrive nella prima riga la data
' * ----------------------------------------------------------------------------
Function CreaUserFile(sFile)
    On Error Resume Next
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    sNomeFile = sPath & sFile
    ScriviLogFile sUserRilevato, "crea userfile" & snomefile
    Set fs = CreateObject("Scripting.FileSystemObject")

    Set fso = fs.CreateTextFile(sNomeFile)
    fso.Close
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
    fsFile.WriteLine(sOggi)
    fsFile.Close
end Function       
' * ============================================================================
' * ScriviUserFile
' * Aggiunge una riga con il tempo rimasto
' * ----------------------------------------------------------------------------
Function ScriviUserFile(sFile, sTempo)
    On Error Resume Next
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    sNomeFile = sPath & sFile
   
    Const ForAppending = 8
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
    ScriviLogFile sUserRilevato, "scriviuserfile:" & soggi
    sTempo = sTempo & "    ora: "   & FormatDateTime(now,3) 
    fsFile.WriteLine(sTempo)
    fsFile.Close
    ScriviLogFile sUserRilevato, "scriviuserfile:" & sTempo
end Function

' * ============================================================================
' * CancUserFile
' * Cancella il file con la data prima di ricrearlo
' * ----------------------------------------------------------------------------
Function CancUserFile(sUtente)
    dim fs
    dim fsFile
    dim sNomeFile
    sNomeFile = sPath & sUtente & ".TXT"
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fsFile = fs.GetFile(sNomeFile)
    fsFile.Delete
end Function

' * ============================================================================
' * ScriviLogFile
' * Scrivi una riga sul file di log
' * ----------------------------------------------------------------------------
Function ScriviLogFile(sUtente, sAzione)
    On Error Resume Next
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    dim sRiga
    'sNomeFile = "c:\script\chktime2.log"
    sNomeFile = sPath & "chktime2.log"
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    if  fs.fileexists(sNomeFile) = false then
         Set fso = fs.CreateTextFile(sNomeFile)
           fso.Close
    end if       
   
    Const ForAppending = 8
   
    sRiga = "User: " & sUtente & _
    " data: " _
    & FormatDateTime(now,2) _
    & " ora: " _
    & FormatDateTime(now,3) _
    & " azione: "  & sAzione
    '& chr(13) '& chr(10)
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)


    fsFile.WriteLine(sRiga)
    fsFile.Close
end Function

' * ============================================================================
' * LeggiIni
' * Legge il file dei parametri, e  torna con un array di 4 elementi
' * 0 = utente
' * 1 = minuti
' * 2 = azione (0=nulla,1=logoff,2=solo msg)
' * 3 = filepersonale
' * se non trova il file o l'utente usa il default
' * ----------------------------------------------------------------------------
Function LeggiIni(utente)
    dim fs
    dim fso
    dim sLinea
    dim sNomeFile
    dim arrParametri
    Set fs = CreateObject("Scripting.FileSystemObject")
    sNomeFile = "c:\script\chktime2.ini"
    if  fs.fileexists(sNomeFile) = true then
      Set fso = fs.OpenTextFile(sNomeFile, 1)
      Do Until fso.AtEndOfStream
        sLinea = ucase(fso.Readline)
        if left(sLinea, 3) = "DIR" then
          sPath = mid(sLinea, 4)
        end if
        if left(sLinea, 1) <> "#" then
          arrParametri = Split(sLinea , ";")
          if arrParametri(0) = ucase(utente) then
            LeggiIni = arrParametri
            Exit Function
          end if
        end if
      Loop
    end if
    slinea = ucase(utente) & ";60;0;default.txt"
    arrParametri = Split(sLinea , ";")
    LeggiIni = arrParametri
end Function

' * ============================================================================
' * SeAttivo
' * Verifica se esiste il file C:\Programmi\cron\attivo.ini
' * se c'è nessuno non fa conteggio di tempo
' * ----------------------------------------------------------------------------
Function SeAttivo()
    dim fs
    dim fso
    dim sLinea
    dim sNomeFile
    dim arrParametri
    Set fs = CreateObject("Scripting.FileSystemObject")
    sNomeFile = "C:\Programmi\cron\attivo.ini"
    if  fs.fileexists(sNomeFile) = true then
      Set fso = fs.OpenTextFile(sNomeFile, 1)
        Do Until fso.AtEndOfStream
        sLinea = fso.Readline
        msgbox(sLinea + "qualcuno")
        ScriviLogFile sUserRilevato, sLinea + ">>>------- qualcuno loggato!!!"
      loop
    else
    'msgbox("nessuno")
      ScriviLogFile sUserRilevato, "  NESSUNO loggato!!!"
      StopMe
    end if
end function

' * ============================================================================
' * continua - verifica se dal giro precedente sono passati almeno 2 minuti
' *            in caso siano passati meno di due minuti ritorna falso e non
' *            esegue il conteggio, altrimenti va avanti normalmente
' * ----------------------------------------------------------------------------
Function continua(sFilePers)
 
    'On Error Resume Next
    dim fs
    dim fso
    dim sLine
    dim a, b, c
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    dim sNomeFile
    sNomeFile = sPath  + sFilePers

    Set fso = fs.OpenTextFile(sNomeFile, 1)
    Do Until fso.AtEndOfStream
      sLine = fso.Readline
''      msgbox sLine
    Loop
''   msgbox sLine
    a = replace(mid(sLine,instr(sLine, ":") +1),":","" )
    b = replace(FormatDateTime(now,3),":","" )
    c =  clng(b)  - clng(a)
    Scrivilogfile sUserRilevato, ">>>>Delta" & b & " - " & a  & " = " & cstr(c)   
    if  (clng(b)  - clng(a) < 200) then
      continua = false
    else
      continua = true
    end if             
    'msgbox replace(mid(sLine,instr(sLine, ":") +1),".","" )
    'msgbox replace(FormatDateTime(now,3),".","" ) 
  ''  msgbox a + " - " + b
   '' msgbox cstr(c)
end Function

    </script>
   </head>
   <body>
    </body>
</html>
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Windows XP e Reperti Archeologici Tutti i fusi orari sono GMT + 2 ore
Vai a Precedente  1, 2
Pagina 2 di 2

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi