O comando de desligamento é uma chamada de sistema, uma vez que foi disparada não há como voltar
(pois o sistema operacional começa a fazer flushes nos arquivos abertos, desmontar dispositivos se seu sistema de arquivos funcionar com "pontos de montagem", leases dhcp (coisa que hoje quase nenhum SO popular faz e julgo um crime, rs) etc)
O que você pode fazer é criar um wrapper para o desligar
No que esse nome chique se resume é num programa que dispare o desligamento do PC (se não houver tráfego
na rede) aí toda vez que vc desligar o PC deve desligar via esse "wrapper" obrigatoriamente...
No *nix eu substituiria o shutdown ("ALIAS" vamos dizer assim não o ELF) por esse wrapper e tudo funcionaria normalmente (no windows não sei se tem alguma forma via registro de se fazer isso...) e teríamos um legítimo trampolim, qualquer *nix é mesmo um paraíso para qualquer reinventor de rodas :)
Detectar se há tráfego na rede é um pouco mais complicado por ser relativo, você pode (eu faria assim)
detectar se você está conectado, estando pergunta se deseja realmente desligar ou nem desliga...
Checar se está conectado há várias formas, uma delas e a mais simples é dar um ping num site como o google
e outros (pois pode ser que em algum momento o google não responda)
Ou ainda procurar nos processos ativos softwares que você usa quando está conectado para realizar seus downloads.
Apenas algumas idéias...


Responder com citação


