Exibe a caixa de mensagem do Agendador de Tarefas sobre todas as outras janelas

7

Existe uma boa maneira de obter uma caixa de mensagem para aparecer em um horário agendado em cima de outras janelas? A ação padrão "Exibir uma mensagem" aparece inutilmente abaixo de todo o resto.

    
por Moss 31.01.2014 / 18:47

4 respostas

8

Que tal usar o comando msg embutido do Windows assim?

msg * "Message you would like to send"

Você pode adicionar outros parâmetros, como /TIME:x , em que x é o número de segundos que você deseja que a mensagem seja exibida. Obviamente, msg /? mostrará todas as opções disponíveis.

Isso implica no Windows XP e superior como o sistema em que você deseja exibir a mensagem. Se você tiver uma Home Edition do sistema operacional aplicável, estará sem sorte. Consulte o link para obter os parâmetros disponíveis.

Se você tiver um Home Edition, o script em lote a seguir exibirá uma mensagem usando o método PopUp do VBSCript:

@echo off
::See http://msdn.microsoft.com/en-us/library/x83z1d9f(v=vs.84).aspx
::for an explanation of the PopUp method
::

::Use the directory from whence script was called as working directory
set CWD=%~dp0

::Use a random file name for the temporary VBScript.
set usrmsg=%CWD%%random%.vbs

::First parameter is the timeout in seconds. 0 = wait forever
set _timeout=%~1

::Second parameter is the message, enclosed in quotes.
set _Message=%~2

::Third parameter is the title of the window, enclosed in quotes.
set _Title=%~3

::This last variable is used to display a button/icon on the window.
::Setting this to 4096 sets the window to Modal (on top of everything else)
set _nType=4160

::Create the temp script using the provided information.
ECHO Set wshShell = CreateObject( "WScript.Shell" )>%usrmsg%
ECHO wshShell.Popup "%_Message%" ^& vbCrLf, %_Timeout%, "%_Title%", %_nType%>>%usrmsg%

::Run the script.
WSCRIPT.EXE %usrmsg%

::Delete the script.
DEL %usrmsg%

::Exit the batch file
exit /b

Espero que isso ajude!

    
por 31.01.2014 / 18:57
4

Veja também o link . Em caso de morte por link, vou resumir aqui:

  1. Abra o Agendador de Tarefas do Windows (pesquise 'Agendador de Tarefas' no menu Iniciar)
  2. Em Ações, clique em "Criar tarefa"
  3. Na guia Geral, verifique se a opção "Executar somente quando o usuário está conectado" está marcada e "Oculto" NÃO está marcado
  4. Na guia "Disparadores", clique em "Novo" para definir um horário para a mensagem disparar
  5. Na guia Ações, clique em "Novo" e verifique se a ação selecionada na parte superior é "Iniciar um programa"
  6. Em "Programa / script", digite CMD
  7. Em 'Adicionar argumentos', copie e cole isto:

    /C TITLE [Your title here] &ECHO.&ECHO.&ECHO [Your message here] &ECHO.&ECHO.&TIMEOUT [timeout]

  8. Substitua [Seu título aqui] e [Sua mensagem aqui] pelo seu texto preferido (não inclua os colchetes)
  9. Substitua [tempo limite] pelo número de segundos que você deseja que a mensagem espere antes de atingir o tempo limite, ou -1 se não quiser que ela atinja o tempo limite (de qualquer forma, pressionar uma tecla enquanto a janela do console está em foco feche)
  10. Clique em "OK"!

Isso gerará uma janela de console com o texto fornecido, que aparecerá no topo da sua janela atual, mas não roubará automaticamente o foco (você pode continuar interagindo com a sua janela atual como de costume).

Esta foi a melhor solução que encontrei, espero que ajude alguém!

    
por 08.02.2018 / 00:48
1

Display a Message está obsoleto e o comando msg não funcionou para mim no Windows 10 1703. Estou usando powershell para exibir a caixa de mensagem de uma tarefa agendada, use isso como argumentos ao definir a ação:

-WindowStyle hidden -Command "& {[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('<message body here>','<window title here>')}"

É feio AF, mas funciona.

    
por 24.05.2017 / 14:23
0

Use msgbox em vbs. assim:

Set filesys = CreateObject("Scripting.FileSystemObject") 
Set shell = CreateObject("Shell.Application")
Set wshShell = WScript.CreateObject( "WScript.Shell" )
PCName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
msgbox "Dear user on " & PCName & vbcrlf & " " & vbcrlf & "This is a message box on top of all other windows.", &h51000, "I am msgbox"
shell.Open "C:\Users"

O código &h51000 garantirá o msgbox na central e no topo de todas as outras janelas o tempo todo.

Se você quiser apenas agendar uma msgbox, você pode simplesmente usar o agendador de tarefas, há uma função interna para agendar uma mensagem. veja a localização de [iniciar um programa] no agendador de tarefas.

    
por 04.07.2014 / 13:53