-->

sábado, 2 de agosto de 2008

Consumo de CPU vai a 100% ao clicar em um AVI.

Eu pensei que já havia discutido esse assunto aqui antes, mas fiz uma busca agora e a única menção que encontrei foi este post meu no ForumPCs. O que vou escrever agora é algo um pouco mais completo e esclarecedor.

O Windows Explorer "abre" o arquivo AVI em pelo menos dois momentos sem sua explícita permissão:
  • Quando você coloca o mouse sobre o nome, mesmo que não selecione o arquivo;
  • Quando você seleciona o arquivo;
Se você rapidamente seleciona o arquivo sem parar o mouse sobre ele antes, as duas operações são feitas em seqüência.

O Explorer abre o arquivo para poder exibir informações sobre ele na hint e na barra de status. O problema é que essa operação deveria ser rapidíssima e por isso transparente, mas por algum motivo às vezes leva váaaarios segundos durante os quais o Explorer está acessando o arquivo. Como efeito colateral você pode ainda ter outros problemas:
  • Não consegue renomear o arquivo;
  • Não consegue mover o arquivo, mesmo para uma pasta na mesma partição (a mais simples das operações de movimentação, do ponto de vista do SO);
Cada vez que você tenta recebe o erro de que o arquivo está em uso. Se clica no arquivo para tentar novamente, o processo se reinicia. Se você passar o dia inteiro clicando o arquivo vai estar sempre em uso, mas só porque você está clicando. Por isso existe um macete:
  • Renomear: Renomeie o arquivo normalmente, mas não dê ENTER. Fique de olho no consumo de CPU e quando este cair, aperte o ENTER;
  • Mover: Dê um "Recortar" no arquivo e aguarde o consumo cair. Só então dê um "Colar".

É claro que essa não é a melhor das opções e eu mesmo só me daria a esse trabalho na máquina de outras pessoas, para não ter que fazer algo mais drástico nelas. E isso também não adianta nada nos casos em que o consumo de CPU virtualmente não cai mais ou o Explorer trava depois que você seleciona um AVI. É mais raro, mas acontece, principalmente se o AVI estiver corrompido.

Eu não conheço um meio ainda de dizer ao Explorer para não abrir o AVI ao posicionar o mouse sobre ele (até mesmo porque isso acontece com todos os tipos de arquivo), mas existem dois meios de impedir que ele faça isso ao selecionar o arquivo, que é a operação que geralmente demora mais:

1) Apague a chave do registro:
HKEY_CLASSES_ROOT\SystemFileAssociations\.avi\shellex\PropertyHandler

ou

2) Execute o comando regsvr32 /u shmedia.dll

Não é preciso reiniciar o Windows.

As duas opções fazem virtualmente a mesma coisa. Seja lá qual for sua opção, executar regsvr32 shmedia.dll reverte ao estado de antes.

Nota: shmedia.dll é também chamada de "Media Preview".

Como efeito colateral benigno, abrir arquivos AVI no Windows Media Player vai ficar perceptívelmente mais rápido, porque o WMP não vai mais competir com o Explorer pelo arquivo por vários segundos. Aquela mensagem "Conectando..." que demorava tanto que parecia que o WMP estava indo buscar o arquivo na internet vai desaparecer muito mais rápido;

25/111/2009: A Microsoft tem agora um hotfix para o problema. Não sei o que faz porque não testei ainda.

3 comentários:

  1. Jefferson, há vários meses que o meu notebook está dando umas "engasgadas" no som sempre que eu executo algum arquivo de vídeo. Tanto pode ser AVI, MPEG, VOB, mp4... curiosamente o led do HD fica vários minutos "trabalhando" (como se ainda estivesse carregando o vídeo) e é nesses instantes que acontece a travada de som (sempre que o led do HD acende). Curiosamente o Process Explorer não nota nenhum programa acessando em demasia, e o uso da CPU fica dentro da normalidade. Achas que pode ser algo parecido? Ou seria um HD "bichado" mesmo??? Já passei Regclean, defragmentador, passei anti-vírus, anti-spyware, e nada!

    ResponderExcluir
  2. Estou com este problema no Windows Vista. Alguém sabe a resolução?

    ResponderExcluir
  3. Olá!
    Além do comando "regsvr32 /u shmedia.dll", que resolveria o problema ao selecionar o arquivo, testei um caminho para o problema quando se passa o mouse sobre o arquivo. Ocorreu-me que a leitura ao passar o mouse sobre o arquivo ocorra em função daqueles balões amarelinhos que aparecem dando informações do arquivo. Com as alterações de registro a seguir, esses balões não são mais formados:
    "Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
    "ShowInfoTip"=dword:00000000
    "StartButtonBalloonTip"=dword:00000000
    "FolderContentsInfoTip"=dword:00000000
    "EnableBallonTips"=dword:00000000

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
    "NoDriveTypeAutoRun"=hex:00,00,00,00
    "NoSMBalloonTip"=dword:00000001"
    Na minha máquina funcionou. De fato isso tudo só acontece realmente quando o arquivo está corrompido, mas é melhor você saber que ele está corrompido já no player do que travar o explorer o tempo todo. =)
    Espero que resolva pra alguém.

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.