Como fazer com que um programa de criação de janelas programadas não roube o foco?

5

Eu escrevi um pequeno programa de console que verifica se todos os meus sites estão funcionando corretamente. Eu uso o Agendador de Tarefas do Microsoft Windows para executar este programa automaticamente uma vez por dia.

Oproblemaéque,naturalmente,oprogramaroubaofocotodavezqueéexecutado.Euprefeririaqueelefosseiniciadosemsetornarajanelamaisaltadaminhaáreadetrabalho.Qualéamaneiramaissimplesdeconseguirisso?Claro,eupoderiareescrevermeuEXEparacriarumajaneladefundo(ounenhumajanela),masseriabomseoAgendadordeTarefastivesseumaopçãocomo"Não roube o foco" ou algo assim, mas talvez isso nem seja possível ...

    
por Andreas Rejbrand 25.04.2012 / 18:58

3 respostas

6

Você poderia ter o Agendador de Tarefas executando um vbscript que abre seu programa de console. O vbscript pode usar o método Shell Run para abri-lo minimizado com algo como:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad.exe", 6, true

Há algumas informações básicas sobre isso no link

    
por 25.04.2012 / 19:25
2

Não ligue diretamente para o aplicativo. Executa a partir de um atalho que começa minimizado.

Suponho que você poderia também adicionar um arquivo em lotes à mistura que usa /start /min para o mesmo efeito, mas suspeito que o arquivo em lotes roube o foco, a menos que seja chamado por um atalho iniciado minimizado.

EDIT: O start /min rouba o foco muito rapidamente, mas funciona na minha máquina, usando um arquivo em lote .cmd que chama uma nova janela da Linha de Comando (usando cmd.exe).

Meu arquivo de lote é assim:

@echo off
cls
start /min C:\Users\Randolph\Desktop\shortcut.lnk

O atalho em si abre cmd.exe e tem opções padrão selecionadas, exceto que ele é aberto minimizado (a opção Run: está definida como Minimized ).

    
por 25.04.2012 / 19:19
0

Esta sintaxe permite que a ideia de início / min funcione:
% comspec% / c start "" / min "C: \ Scripts \ Destination_inbound_ftp5.bat"

    
por 29.08.2016 / 19:12