[EX] Surveiller un dossier

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 131
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

[EX] Surveiller un dossier

#1

Message par Numeric »

Présentation d'un Script AutoIt de Surveillance de Fenêtres

Description du Code :

Le code AutoIt que nous présentons est un script d'application de surveillance de fenêtres. Son objectif est de permettre à l'utilisateur de surveiller un dossier spécifique et de recevoir des notifications personnalisées chaque fois qu'une fenêtre correspondante est activée. Voici un aperçu de ses principales fonctionnalités :
  • Interface Graphique (GUI) : Le script crée une interface graphique conviviale en utilisant l'outil de conception Koda. Cette interface comprend les éléments suivants :
    - Un champ d'affichage pour le chemin du dossier surveillé.
    - Un bouton "Selectionnez le dossier à surveiller" pour choisir le dossier à surveiller.
    - Un bouton "Start" pour activer ou désactiver la surveillance.
    - Un champ de texte pour personnaliser le message de notification.
  • Fonctionnalités de Surveillance : Le script tire parti de la fonction [_WinAPI_RegisterShellHookWindow] pour activer la surveillance des événements de fenêtre. Lorsqu'un événement de redessinage ou d'activation de fenêtre se produit, le script réagit en conséquence.
  • Personnalisation des Notifications : Les utilisateurs ont la possibilité de personnaliser le message de notification qui s'affichera lorsqu'une fenêtre correspondante est activée.
  • Fermeture Propre : Le script a été conçu avec soin pour assurer une fermeture propre. Lorsque l'utilisateur ferme la fenêtre GUI, le script désactive la surveillance et se termine de manière appropriée.
Utilité du Code :

Ce script d'application de surveillance de fenêtres est polyvalent et peut être utile dans divers scénarios, notamment :
  • Surveillance de l'activité dans un dossier spécifique : Les utilisateurs peuvent sélectionner un dossier précis qu'ils souhaitent surveiller. À chaque activation d'une fenêtre correspondant à ce dossier, le script affiche une notification avec un message personnalisé. Cette fonction peut être utilisée pour suivre l'utilisation d'applications ou de fichiers spécifiques dans le dossier surveillé.
  • Personnalisation des Notifications : L'application permet aux utilisateurs de personnaliser le message de notification. Cela s'avère pratique pour ajouter des informations contextuelles aux notifications, les rendant ainsi plus informatives.
  • Contrôle de la Surveillance : Les utilisateurs ont la possibilité d'activer ou de désactiver la surveillance à l'aide du bouton "Start". Cela leur donne un contrôle total sur le moment où les notifications sont affichées.
  • Fermeture Propre : Le script garantit une fermeture propre en désactivant la surveillance lorsque l'application est fermée. Cela prévient tout risque que la surveillance continue de s'exécuter en arrière-plan.
En résumé, ce script AutoIt offre une solution simple pour surveiller des fenêtres correspondant à un dossier spécifique et pour afficher des notifications personnalisées en réponse à leur activation. Il peut être adapté et étendu en fonction des besoins des utilisateurs pour répondre à divers scénarios de surveillance.
#include <APISysConstants.au3>
#include <WinAPISysWin.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPIFiles.au3>

;_WinAPI_DeregisterShellHookWindow($Form1)
OnAutoItExitRegister(OnAutoItExit)

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("File Monitoring v1.0  by NUMERIC", 528, 207, 289, 124, -1, BitOR($WS_EX_APPWINDOW, $WS_EX_OVERLAPPEDWINDOW, $WS_EX_TRANSPARENT, $WS_EX_WINDOWEDGE, $WS_EX_COMPOSITED))
;GUISetBkColor(0xA10A101)
Global $lbDisplayFolderPath = GUICtrlCreateLabel("", 40, 16, 420, 17)
$Group1 = GUICtrlCreateGroup("Controles", 16, 72, 233, 105, -1, BitOR($WS_EX_TRANSPARENT, $WS_EX_CLIENTEDGE))
GUICtrlSetFont(-1, 10, 400, 0, "Myanmar Text")
Global $btChooseFolder = GUICtrlCreateButton("Selectionnez le dossier a surveiller", 24, 104, 211, 25, BitOR($BS_CENTER, $BS_VCENTER))
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetCursor(-1, 0)
Global $btStart = GUICtrlCreateButton("Start", 24, 144, 211, 25, BitOR($BS_CENTER, $BS_VCENTER))
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetCursor(-1, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$EditMessage = GUICtrlCreateInput("", 312, 92, 185, 20)
$Group2 = GUICtrlCreateGroup("Personnaliser le Message de Notification", 280, 68, 241, 57, -1, $WS_EX_STATICEDGE)
GUICtrlSetFont(-1, 9, 800, 0, "Myanmar Text")
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

GUIRegisterMsg(0x000000000000C028, WM_SHELLHOOK)
GUIRegisterMsg($WM_COMMAND, WM_COMMAND)
Opt("GUIOnEventMode", 1)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")


While 1
   Sleep(10)
WEnd



Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
   #forceref $wParam

   Local $iId = _WinAPI_LoWord($wParam)

   If $iId == $btStart Then
      If GUICtrlRead($EditMessage) <> "" Then
         If GUICtrlRead($lbDisplayFolderPath) <> "" Then
            If GUICtrlRead($btStart) == "Start" Then
               _WinAPI_RegisterShellHookWindow($Form1)
               GUICtrlSetData($btStart, "Stop")
            Else
               _WinAPI_DeregisterShellHookWindow($Form1)
               GUICtrlSetData($btStart, "Start")
            EndIf
         Else
            MsgBox(16, "Avertissement!", "Veuillez selectionner un dossier à surveiller!", 3)
         EndIf

      Else
         MsgBox(16, 'Avertissement!', 'Veuillez personnaliser le message de notification!', 2)
      EndIf

   ElseIf $iId == $btChooseFolder Then
      Local $filePath = FileSelectFolder("Choisir le dossier à surveiller", @ScriptDir)
      If Not @error Or $filePath <> "" Then
         _MemWrite($lbDisplayFolderPath, $filePath)
      EndIf
   EndIf
EndFunc   ;==>WM_COMMAND





Func WM_SHELLHOOK($hWnd, $iMsg, $wParam, $lParam)
   #forceref $iMsg
   Local $sAction = ""
   Switch $wParam
      Case $HSHELL_REDRAW
         $sAction = "Redessiné"
      Case BitAND($wParam, $HSHELL_WINDOWACTIVATED) = $HSHELL_WINDOWACTIVATED
         $sAction = "Activé"
   EndSwitch

   If WinGetTitle($lParam) == _WinAPI_GetFileTitle(GUICtrlRead($lbDisplayFolderPath)) And _WinAPI_GetFileTitle(GUICtrlRead($lbDisplayFolderPath)) <> "" Then
      _WinAPI_CloseWindow(WinGetHandle(WinGetTitle($lParam)))
      TrayTip("Notification", GUICtrlRead($EditMessage), 4000)
   EndIf
   Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_SHELLHOOK

Func OnAutoItExit()
   _WinAPI_DeregisterShellHookWindow($Form1)
EndFunc   ;==>OnAutoItExit
Func Quit()
   GUIDelete($Form1)
   Exit
EndFunc   ;==>Quit

Func _MemWrite($iIDctrl, $sMsg)
   GUICtrlSetData($iIDctrl, $sMsg)
EndFunc   ;==>_MemWrite
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Répondre