Newsgroup: it.comp.lang.delphi
Titolo: TShellChangeNotifier

Ciao a tutti...
sto cercando di utilizzare il TShellChangeNotifier in D6: a me servirebbe che mi avvisasse
ogni volta che viene scritto su un file, che si trova in C:\WINNT.
Purtroppo mi sembra che questo componente agisca solo su un'intera directory, e non su un
singolo file, quindi ogni volta che viene scritto qualcosa in WINNT mi parte l'evento
OnChange...
Suggerimenti?
Grazie,
--
Jax



Purtroppo temo di doverti dare ragione, ho fatto un piccolo
test ed effettivamente l'evento OnChange non da' alcuna
informazione sul cambiamento.  Root e' la cartella da tenere
sott'occhio e qualsiasi modifica venga fatta ai suoi file
viene segnalata.  In ogni caso, tu puoi comunque
intercettare l'OnChange e poi vai a vedere se la dimensione
del file da monitorare e' cambiata (meglio sarebbe
verificare l'ultima data/ora di accesso).
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 verificare l'ultima data/ora di accesso).
Infatti è quello che ho fatto, dato che la dimensione + o - è quasi sempre la
stessa :)
Ma già che ci siamo, sbaglio o TSearchRec.Time è basato sui secondi? perché se
sostituisco velocemente il file, non mi becca il cambiamento!
Avevo pensato a un controllo sul CRC32 ma il calcolo è troppo lento e se per
caso avviene un altro OnChange su un altro file si generano casini che non ho
proprio voglia di gestire :))
Va beh... diciamo che cmq è un buon compromesso, per una applicazione che devo
usare solo io :)
Grazie 2002
Jax

proprio voglia di gestire :))
Ma il problema preciso di partenza qual e' ? 
Cioe', perche' stai facendo questi controlli ?


 Cioe', perche' stai facendo questi controlli ?
Uhm, se te lo dicessi poi dovrei ucciderti :)
Va beh, visto che ci siamo... basilarmente sto facendo di tutto per forzare il malefico
webshots, in qualsiasi cosa: download delle immagini, estrazione delle stesse... visto che
loro fanno di tutto per complicarti la vita (con l'ultima versione è diventato un incubo
anche solo condividere una collezione fra due pc).
E allora mi sono detto: basta, mi faccio il mio screen saver... è venuto benino, anche
merito di THarmFade, componente eccezionale, ma mi servivano le immagini di webshots ^__^
Avendo fallito l'estrazione delle immagini dai file wbc, dato che i primi byte dei jpg
sono criptati, ho cercato un altro metodo e mi sono fatto appunto una semplice
applicazione che ogni volta che lo sfondo viene cambiato, me lo legge e lo scrive in jpg
da un'altra parte.
Tutto funzia benissimo, tranne che per il fatto che ti dicevo, se cambio immagine
velocemente, probabilmente la data di modifica del file bmp non cambia (dato che è al
secondo) e il mio prg non mi "sente" il cambiamento.
Ho parzialmente ovviato aggiungendo alla data di modifica (che sul file è un integer), la
dimensione del file, ma spesso (direi sempre) i bmp sono della stessa dimensione (sono
sempre 1024x768x24+header e quindi sempre di dimensione 2.359.350 byte).
Il ChangeNotifier mi aiuta fino a un certo punto, dato che in WINNT viene aggiornato
probabilmente anche qualche altro file (che non mi è dato conoscere) e l'evento viene
triggerato 2 volte, e non mi piace.
Ok, basta così, altrimenti si vede che ho troppo tempo libero ^___^
Jax