Cloud File Checker

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Cloud File Checker

Message par Ar-S »

Étant loin de ma douce ces vacances, j'ai installé Google drive sur mon PC de la maison et sur mon portable.

Pour s’écrire rapidement et simplement on communique via un fichier texte. Dés qu'il est sauvé il est syncro par google drive sur les 2 machines. On peut ainsi s’écrire vite fait sans passer par un navigateur et autres email.

Cependant, GDrive ne prévient pas lorsqu'un fichier à été modifié.

J'ai donc fait un petit programme qui m'avertit lorsque le fichier ciblé a changé de taille.
Je suppose qu'il doit marcher avec les autres systèmes de cloud.

;**************************************
1 - Indiquez le chemin (ligne 19) de votre fichier
Vous pouvez aussi éventuellement changer la valeur de #DUREE en MS, par défaut il vérifie toutes les 10 sec (ligne 17)

Voilà, si ça peut vous servir.

Code : Tout sélectionner


; Cloud File Checker by AR-S //2013 // PB 5.20b9
; Vérifie le poids d'un fichier toutes les N ms et previent via un Popup
; si le fichier a été modifié

Enumeration
  #LDVM
  #Timer1
  #SON
  #SYSTRAY
  #ICO_OFF
  #ICO_ON
  #POP
EndEnumeration


; ELEMENTS MODIFIABLES ------------------
#DUREE = 10000
;   Fichier à surveiller.
Global f$ = "C:\MONFICHIER.txt"

;----------------------------------------

Global.q F, FF



IcoOFF = CreateImage(#ico_OFF,32,32)
StartDrawing(ImageOutput(#ico_OFF))
  Box(0,0,32,32,$0)
  Circle (10,10,8, $D0D029)
  Circle (24,12,6, $D0D029)
  Circle (16,19,6, $D0D029)
  Circle (24,20,8, $D0D029)
  Circle (7,20,7, $D0D029)
StopDrawing()

IcoON = CreateImage(#ico_ON,32,32)
StartDrawing(ImageOutput(#ico_ON))
  Box(0,0,32,32,$0)
  Circle (10,10,8, $00FF00)
  Circle (24,12,6, $00FF00)
  Circle (16,19,6, $00FF00)
  Circle (24,20,8, $00FF00)
  Circle (7,20,7, $00FF00)
StopDrawing()


Ws = GetSystemMetrics_ ( #SM_CXSCREEN )
Hs = GetSystemMetrics_ ( #SM_CYSCREEN )

Quite = 0
 
Procedure.w GetBarHeight()
  ; +--------------------------------------------------------------------------+
; | Code de GallyHC modifié par Ar-S                                 |
; +--------------------------------------------------------------------------+
  #ABM_GETSTATE       = 4
  #ABM_GETTASKBARPOS  = 5
  
  
  Structure lNXY
    width.l
    height.l
  EndStructure
  
  Define Barre.lNXY
  Define Cadre.RECT
  Define BarreData.APPBARDATA
  
  SHAppBarMessage_(#ABM_GETTASKBARPOS, BarreData)
  SHAppBarMessage_(#ABM_GETSTATE, BarreData)
  Cadre\left   = BarreData\rc\left
  Cadre\right  = BarreData\rc\right
  Cadre\top    = BarreData\rc\top
  Cadre\bottom = BarreData\rc\bottom
  Barre\width  = Cadre\right  - Cadre\left
  Barre\height = Cadre\bottom - Cadre\top
  
  
  If Cadre\left < 1 And Cadre\top > 0 And (Barre\width > Barre\height)
    BarPos = 1 ; bas
  EndIf
  If Cadre\left < 1 And Cadre\top < 1 And (Barre\width < Barre\height)
    BarPos = 2 ; gauche
  EndIf
  If Cadre\left > 1 And Cadre\top < 1 And (Barre\width < Barre\height)
    BarPos = 3 ; haut
  EndIf
  If Cadre\left < 1 And Cadre\top < 1 And (Barre\width > Barre\height)
    BarPos = 4 ; haut
  EndIf
  
  If BarPos = 1
    HauteurBarre = Cadre\bottom - Cadre\top
    ProcedureReturn HauteurBarre
  Else
    ProcedureReturn 0
  EndIf
 
EndProcedure


Procedure.q CheckGDrive(Fichier$)

Poids.q = FileSize(Fichier$)
ProcedureReturn Poids

EndProcedure

If OpenWindow(#LDVM, 0, 0, 100, 20, "Google Drive File Checker by AR-S", #PB_Window_Invisible  )
  
  AddSysTrayIcon(#SYSTRAY, WindowID(#LDVM), IcoOFF )
  SysTrayIconToolTip(#SYSTRAY, "Vous n'avez pas de nouveau message")
  
  ; Création du Popup Menu
  If CreatePopupMenu(#POP)
    MenuItem(1, "Pas de nouveau message")
    MenuBar()
    MenuItem(2, "Réinitialiser")
    MenuItem(3, "Quitter")
  EndIf
 
  
  If GetBarHeight() <> 0
    Hbar = GetBarHeight()
  EndIf

   
  F.q = CheckGDrive(f$)
  FF.q = CheckGDrive(f$)
  
  AddWindowTimer(#LDVM, #Timer1, #DUREE)
  
  Count1 = 0
  new = 0
  
  Repeat
    Event = WaitWindowEvent()
    
    If Event = #PB_Event_SysTray
      If EventType() = #PB_EventType_LeftClick Or EventType() = #PB_EventType_RightClick
        
        DisplayPopupMenu(#POP,WindowID(#LDVM), Ws-240, Hs- (Hbar+80) )

      EndIf
    EndIf    
    
    
    If Event = #PB_Event_Menu
      Select EventMenu()
          
        ; Réinitialiser le nombre de message à 0
        Case 2
          new = 0
          SysTrayIconToolTip(#SYSTRAY, "Vous n'avez pas de nouveau message")
          SetMenuItemText(#POP, 1, "Pas de nouveau message")
          ChangeSysTrayIcon(#SysTray, IcoOFF)

          
          
          ;Quitter
        Case 3
          
          Quite = 1
                 
         
      EndSelect
      
      
    EndIf
    
    
    If Event = #PB_Event_Timer
      Select EventTimer()
      
        Case #Timer1
          
          Select Count1
             Case #False
                F = CheckGDrive(f$)
                Count1 = #True
         
              Case #True
                FF = CheckGDrive(f$)
                Count1 = #False
              
            EndSelect
            
            If F <> FF
                new + 1
                If new = 1
                  ChangeSysTrayIcon(#SysTray, IcoON)
                EndIf
                
                SysTrayIconToolTip(#SYSTRAY, "NOUVEAU MESSAGE : " + Str(new))
                SetMenuItemText(#POP, 1, "NOUVEAU MESSAGE : " + Str(new))
                DisplayPopupMenu(#POP,WindowID(#LDVM), Ws-240, Hs- (Hbar+80) )
                
            EndIf
            
      EndSelect            
    EndIf
    
    
  Until Event = #PB_Event_CloseWindow Or Quite = 1
  
EndIf



End






~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Cloud File Checker

Message par MetalOS »

C'est cool ton truc, merci du partage ;-)
Répondre