Collegamento del mio programma all'evento di ridenominazione di Windows Explorer

StackOverflow https://stackoverflow.com/questions/24644

  •  09-06-2019
  •  | 
  •  

Domanda

Esiste un modo, in qualsiasi lingua, per agganciare il mio programma quando un utente rinomina un file?

Per esempio:Un utente rinomina un file e preme Invio (o fa clic) per confermare l'azione di ridenominazione.PRIMA che il file venga effettivamente rinominato, il mio programma "ascolta" questo evento e visualizza un messaggio che dice "Sei sicuro di voler rinominare C: est\file.txt in C: est est.txt?".

Penso/spero che questo sia possibile con C++, C# o .NET..Ma non ho idea di dove cercare.

È stato utile?

Soluzione

Probabilmente puoi risolvere questo problema utilizzando il file Classe FileSystemWatcher nell'infrastruttura .NET.

Dalle osservazioni della classe:

È possibile controllare la ridenominazione, l'eliminazione, o la creazione di file o directory.Ad esempio, per controllare la ridenominazione di file di testo, impostare la proprietà Filter su "*.txt" e chiamare WaitForChanged con un oggetto Renamed specificato per il suo parametro.

Altri suggerimenti

La mia ipotesi è che sia così non possibile, l'ho trovato Questo che serve per monitorare le operazioni (inclusa la ridenominazione) su una cartella, ma non sembra esserci un metodo simile per i file.

@Richard, FileSystemWatcher è utile se hai solo bisogno di monitorare le modifiche, ma deve interromperle, cosa che non può fare.

IFileOperationProgressSink.PreRenameItem è la cosa supportata più vicina che io conosca.Sfortunatamente, non è un collegamento a Explorer, quindi puoi usarlo solo per conto tuo IFileOperation Azioni.A seconda delle tue esigenze, puoi scrivere un'estensione della shell da realizzare tu stesso ConfirmRename (o qualcosa del genere) e diramarsi da lì.

Altrimenti stai cercando di agganciarti SHFileOperation, Penso.Questa operazione dovrebbe essere eseguita in codice non gestito, poiché verrai caricato in Explorer.exe.Per Vista, questo è stato cambiato in IFileOperation - il che probabilmente significa che dovrai agganciarne la creazione e distribuire il tuo mock.

Personalmente, visto che stai parlando di una ridenominazione, Un'idea di Wilhelm Tell di confermare Dopo il cambiamento e annullarlo, se necessario, è l'idea migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top