Stai facendo la cosa giusta con FileSystemWatcher
. Windows non ha alcun meccanismo incorporato per la segnalazione affidabile delle copie.
È possibile agganciare la routine di copia del sistema operativo, ma ciò non garantisce risultati ottimali: le applicazioni sono libere di implementare la propria copia semplicemente aprendo i file di origine e destinazione e copiando i byte.
La ridenominazione è diversa perché una rinomina eseguita dal sistema operativo non può essere facilmente imitata con altri mezzi, quindi si prenderanno tutti i nomi con lo FileSystemWatcher
. Tieni presente che lo spostamento tra le unità è più simile alla copia: non riceverai una notifica rinominata, ma una Creata e una Eliminata.
Quindi, se davvero ha realmente bisogno di notare un file sempre copiato, il mio approccio suggerito è questo:
- Hook le
CloseFile
chiamate, oltre al FileSystemWatcher
.
- Ogni volta che un file viene chiuso, potrebbe essere perché è la fonte o la destinazione di una mossa copia/cross-drive. Controlla la sua dimensione.
- Se si trovano due file chiusi con le stesse dimensioni entro un periodo di tempo ragionevolmente breve, confrontare il contenuto. Ad alta intensità di risorse, ma l'unico modo affidabile per farlo.
fonte
2012-01-06 15:58:10
Puoi invece guardare l'istanza degli appunti? Solo un pensiero. http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx –
Quanto bene si può tollerare il mancato tracciamento di una copia? Probabilmente è possibile rintracciare le _most_ copie (ad es. Quelle eseguite tramite Explorer), ma alcune scorreranno. –
Perché stai provando a fare questo? – RQDQ