taskkill e desligamento são meus amigos:)
A questão é: que processo está disponível para tentar recuperar da instabilidade total do sistema antes de puxar o plugue quando não podemos fazer nada além de programas ou lotes no caminho da caixa de diálogo Executar (tecla windows + r) e desempenho é tão morto que taskMGR / procEXP / outros programas com guis visuais não são utilizáveis?
Eu não sou um especialista em janelas, mas idealmente alguém escreveu um programa que faz mais ou menos coisas assim:
Imediatamente definido (ou talvez eu possa definir a partir do prompt de execução) a sua prioridade para extremamente alta, avaliar os gargalos de desempenho. Por exemplo. é CPU 100%? Se for o caso, identifique o (s) programa (s) ofensivo (s) ou os problemas. Tente / conserte correções, então forneça feedback bruto perguntando ao usuário se seu desempenho estabilizou o suficiente para abortar, espere alguns segundos, se nenhum feedback continuar, etc. etc. Eventualmente tente fazer qualquer "limpeza do sistema" se o programa decidir que não pode recuperar e, finalmente, fornecer uma série de sinais sonoros para o usuário, ou o que você tem, para dizer "OK, eu desisto, hora de puxar o plugue". Idealmente, crie um log quando for capaz.
Esses tipos de problemas horríveis são uma situação em que, com certeza, tentar algo, qualquer coisa, é melhor do que nada - contanto que algo seja inteligente - quando a alternativa está arrancando a coordenação de poder.
Mais uma vez, não sou especialista em janelas, por isso talvez exista uma abordagem "muito prática" muito mais elegante da qual não conheço.
taskkill e desligamento são meus amigos:)
Muitas das ferramentas Sysinternals são baseadas em linha de comando ou podem ser usadas a partir do comando linha em vez da GUI, usando os switches corretos, existem utilitários lá que podem controlar ou mostrar estatísticas para quase qualquer parte do Windows.
Concordo com o GAThrawn, os utilitários CLI são EXCEPCIONALMENTE úteis em tais situações, no entanto, gostaria de acrescentar que um grande problema é chamar a atenção do sistema para obter uma palavra no edgewise. Para isso, você precisa de um programa já de alta prioridade, mas não consome todo o seu CPU porque está parado esperando que você diga que o sistema está com problemas e que ele deve entrar em ação.
... algo como isto é, mais ou menos, o que o próprio Windows faz com o Gerenciador de Tarefas - você faz a saudação de três dedos e ele acorda o Gerenciador de Tarefas. Você quer algo semelhante, assim você pode rapidamente obter o controle, então por que não cooptar o Gerenciador de Tarefas para fazer isso para você? Tudo o que você precisa fazer é ter seu programa já em execução, mas aguardando sua entrada para entrar em ação, e usar o Gerenciador de Tarefas para chamar a atenção do sistema e "alternar para" o "aplicativo" de destino.
EDITAR: Opa; só notei que você diz que o Gerenciador de Tarefas leva muito tempo (muito tempo) para chamar sua atenção. Bem, então, o seu programa já em execução precisa acordar de vez em quando e procurar por longos períodos de 100% de utilização da CPU.
Eu recomendo que você realize isso fazendo com que o processo de alta prioridade gerencie um processo de prioridade normal que faça algo simples que o processo de alta prioridade possa testemunhar. Uma maneira seria que o processo de prioridade normal, quando iniciado, atualizasse um arquivo com o registro de data e hora atual (um "toque" semelhante a unix funcionaria bem). O processo de alta prioridade pode acontecer a cada minuto, por exemplo, e iniciar esse processo de prioridade padrão. Se esse processo não conseguir realizar seu trabalho, digamos um segundo, o processo de alta prioridade entrará em ação para fazer qualquer trabalho de correção que considere adequado.
Tags windows