begin process at 2010 02 09 18:25:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Foxpro

 > 

Archives

 > 

Divers

 > 

étecter l'ajout ou la modification d'un fichier sur le disque.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

étecter l'ajout ou la modification d'un fichier sur le disque.

mardi 31 janvier 2006 à 11:47:52 | étecter l'ajout ou la modification d'un fichier sur le disque.

ygr2

Bonjour,
je cherche à coder une application qui permet de détecter l'ajout ou la modification d'un fichier sur le disque.
Je ne souhaitre pas utiliser un timer mais plutot reagir à un évènement (j'ai vu qu il existait la fonction BINDEVENT mais je n'ai pas trouve d exemples).
Merci de votre aide

jeudi 2 février 2006 à 12:45:27 | Re : étecter l'ajout ou la modification d'un fichier sur le disque.

Mike Gagnon

Membre Club
Il n'y pas vraiment de timer, mais il faut que tu fasse une surveillance d'une maniere ou d'une autre. L'exemple qui suit surveille la création de fichier et non la création de dossier.

PUBLIC frm
frm = CreateObject ("Tform", SYS(2023)) && surveiller le dossier c:\TEMP
frm.Visible = .T.

DEFINE CLASS Tform As Form
#DEFINE FILE_NOTIFY_CHANGE_FILE_NAME      1
#DEFINE FILE_NOTIFY_CHANGE_DIR_NAME       2
#DEFINE FILE_NOTIFY_CHANGE_ATTRIBUTES     4
#DEFINE FILE_NOTIFY_CHANGE_SIZE           8
#DEFINE FILE_NOTIFY_CHANGE_LAST_WRITE    16
#DEFINE FILE_NOTIFY_CHANGE_LAST_ACCESS   32
#DEFINE FILE_NOTIFY_CHANGE_CREATION      64
#DEFINE FILE_NOTIFY_CHANGE_SECURITY     128
#DEFINE INVALID_HANDLE_VALUE             -1
#DEFINE WAIT_OBJECT_0                     0
#DEFINE watchingInterval               1000  && milliseconds

    Width = 400
    Height = 150
    MaxButton = .F.
    BorderStyle = 2
    Caption = "Surveiller le répertoir"

    hNotify = INVALID_HANDLE_VALUE
    PathBeingWatched = ""
    
    ADD OBJECT lblTarget As Label WITH;
        Left=10, Top=7, Autosize=.T.

    ADD OBJECT lblAlert As Label WITH;
        Left=10, Top=30, Autosize=.T., Caption="Notification:"

    ADD OBJECT tm As Timer WITH Interval = 0

PROCEDURE  Load
    THIS.decl

FUNCTION  Init (lcPath)
    THIS.PathBeingWatched = FULLPATH (lcPath)

    IF Not THIS.startWatching()
        = MESSAGEB ("Notification handle error.")
        RETURN .F.
    ENDIF

PROTECTED FUNCTION  startWatching
    LOCAL lResult

    * no subdirs watched
    THIS.hNotify = FindFirstChangeNotification (;
        THIS.PathBeingWatched, 0,;
        FILE_NOTIFY_CHANGE_FILE_NAME +;
        FILE_NOTIFY_CHANGE_LAST_WRITE )

    lResult = (THIS.hNotify <> INVALID_HANDLE_VALUE)

    IF lResult
        THIS.lblTarget.Caption = "Surveillé: " +;
            THIS.PathBeingWatched
        THIS.tm.Interval = watchingInterval
    ENDIF
RETURN  lResult

PROTECTED PROCEDURE  continueWatching
    IF FindNextChangeNotification (THIS.hNotify) = 0
        THIS.stopWatching
        = MESSAGEB ("Request error.")
        THIS.Release
    ENDIF
    THIS.tm.Interval = watchingInterval

PROTECTED FUNCTION  stopWatching
    THIS.tm.Interval = 0
    IF THIS.hNotify <> INVALID_HANDLE_VALUE
        = FindCloseChangeNotification (THIS.hNotify)
    ENDIF

FUNCTION  _signaled        && return signaled state
RETURN  (WaitForSingleObject(THIS.hNotify, 0) = WAIT_OBJECT_0)

PROCEDURE  _notify        && notify on event
    THIS.lblAlert.Caption = "Notification: " + TTOC(DATETIME())
    THIS.continueWatching

PROCEDURE  tm.Timer
    IF ThisForm._signaled()
        ThisForm._notify
    ENDIF

PROCEDURE  Destroy
    THIS.stopWatching

PROTECTED PROCEDURE  decl
    DECLARE INTEGER FindFirstChangeNotification IN kernel32;
        STRING lpPathName, INTEGER bWatchSubtree, INTEGER dwNotifyFilter

    DECLARE SHORT FindNextChangeNotification IN kernel32 INTEGER hChangeHandle
    DECLARE SHORT FindCloseChangeNotification IN kernel32 INTEGER hChangeHandle

    DECLARE INTEGER WaitForSingleObject IN kernel32;
        INTEGER hHandle, INTEGER dwMilliseconds
ENDDEFINE

 



Mike Gagnon
jeudi 2 février 2006 à 13:56:46 | Re : Détecter l'ajout ou la modification d'un fichier sur le disque.

ygr2

Il existe pourtant un évènement Windows déclanché lors de la modification d'un répertoire, mais, à priori, il n'est pas récupérable par FoxPro, en tout cas je n'ai pas trouvé d'exemple. Je pense donc qu'on est donc obligé de "surveiller" le répertoire.
Merci


Cette discussion est classée dans : fichier, disque, ajout, modification, étecter


Répondre à ce message

Sujets en rapport avec ce message

code d"ajout,modification et suppression [ par maweni ] bonjour,svp, je suis vraiment stressée et triste , j"ai une soutenance vers le10 juin et j"ai pas encore commencé à programmer parce que on n"a pas ét le browser [ par engelina33 ] bonjour,j'utilise VFP9 pour l'implémentation d'une application, j'ai besoin de créer un browser pour que l'utilisateur sélectionne un fichier excel. j Evaluer une variable string contenant le nom d'une constante [ par louBF ] Bonjour, je débute avec Foxpro. Je développe une petite application qui génère une feuille excel. L'application doit être disponible en anglais et en fenêtre "enregistrer le fichier" [ par dology ] Bonjour, je n'arrive pas à trouver la fonction qui me permettrai d'ouvrir une fenêtre "enregistrer le fichier sous..." exactement comme lorsqu'on télé creation fichier xml avec des branches [ par psmpa ] bonjour, mon problème est le suivant: je dois creer un fichier xml issu d'une table mais avec des jointures representant des branches voici le fichier SQLSERVER COMPACT ET FOXPRO [ par panterga ] Bonjour J'utilise visual studio 2005 en C# pour développer une appli sur PDA , cette application utilise SQLSERVER compact pour stocker des données e re-selection d'enregistrement [ par brunaux ] dans le 1er fichier il y a donc 75 variables,les 4 premieres sont de longueur differentes et toutes de type caractere, et les 71 autres dont toutes de Export d'une requête en xls [ par crampe666 ] Salut à tous,Je cherche (et même j'arrive) à exporter les résultats d'une requête dans un fichier excel.Voici mon bout de code :   select mon_champ fr j'ai besoin de votre aide dans une chose importante dans foxpro [ par jbenzakour ] je suis programmeur de vb et je ne connait rien dans le foxpro mais dans la société ou je travail se trouve un programme de la paie avec fox pro. et j copier ver excel [ par brunaux ] Bonjour à tousComment faire lorsque l'on à un fichier de 30 0000 (ou plus) enregistrements et que l'on veut le copier en excel et avoir l'integralite


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales