Pergunta

Existe alguma maneira, em qualquer idioma, de conectar meu programa quando um usuário renomeia um arquivo?

Por exemplo:Um usuário renomeia um arquivo e pressiona Enter (ou clica fora) para confirmar a ação de renomeação.ANTES de o arquivo ser renomeado, meu programa "escuta" esse evento e exibe uma mensagem dizendo "Tem certeza de que deseja renomear C: est\file.txt para C: est est.txt?".

Estou pensando/espero que isso seja possível com C++, C# ou .NET.Mas não tenho ideia de onde procurar.

Foi útil?

Solução

Você provavelmente pode resolver isso usando o Classe FileSystemWatcher na estrutura .NET.

Das observações da aula:

Você pode observar a renomeação, exclusão ou criação de arquivos ou diretórios.Por exemplo, para observar a renomeação de arquivos de texto, defina a propriedade Filter como "*.txt" e ligue para o método WaitForChanged com um renomeado especificado para seu parâmetro.

Outras dicas

Meu palpite é que isso é não possível, eu encontrei esse que serve para monitorar operações (incluindo renomear) em uma pasta, mas não parece haver um método semelhante para arquivos.

@Richard, FileSystemWatcher é bom se você só precisa monitorar as alterações, mas ele precisa interrompê-las, o que não pode ser feito.

IFileOperationProgressSink.PreRenameItem é a coisa mais próxima com suporte que conheço.Infelizmente, não é um gancho para o Explorer - então você só pode usá-lo para seu próprio uso IFileOperation ações.Dependendo de suas necessidades, você pode escrever uma extensão de shell para fazer o seu próprio ConfirmRename (ou algo assim) e ramificar a partir daí.

Caso contrário, você está pensando em fisgar SHFileOperation, Eu penso.Isso teria que ser feito em código não gerenciado, pois você será carregado no Explorer.exe.Para o Vista, isso foi alterado para IFileOperation - o que provavelmente significa que você terá que criar isso e distribuir sua simulação.

Pessoalmente, acho que já que você está falando de renomeação, ideia de Wilhelmtell de confirmar depois a alteração e desfazê-la se necessário é a melhor ideia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top