Existe uma boa maneira de fazer com que uma caixa de mensagem seja exibida em um horário programado em cima de outras janelas? A ação padrão "Exibir uma mensagem" aparece inutilmente abaixo de todo o resto.
fonte
Existe uma boa maneira de fazer com que uma caixa de mensagem seja exibida em um horário programado em cima de outras janelas? A ação padrão "Exibir uma mensagem" aparece inutilmente abaixo de todo o resto.
Que tal usar o msg
comando interno do Windows assim?
msg * "Message you would like to send"
Você pode adicionar outros parâmetros, como /TIME:x
onde 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ê possui uma Home Edition do sistema operacional aplicável, está sem sorte. Consulte http://ss64.com/nt/msg.html para obter os parâmetros disponíveis.
Se você possui uma Home Edition, o seguinte script em lote 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 isto ajude!
Adicionado: Gregg menciona nos comentários que, para que isso funcione no Windows 10, você deve usar "/ time: 0" se quiser que a mensagem permaneça na tela por mais de 60 segundos.
msg
? Não recebo nada se tentar executá-lo na caixa Executar ou no prompt de comando./TIME:0
. Isso está no Win10 x64 v1607 Enterprise LTSB. Fiquei me perguntando por que meu script testou bem, mas nunca recebi uma mensagem quando coloco no Agendador de tarefas. Plug vergonhoso: serverfault.com/a/931932/131761Consulte também https://www.howtogeek.com/136894/how-to-create-popup-reminders-with-no-additional-software/ . Em caso de morte do link, resumirei aqui:
Isso gerará uma janela do console com o texto fornecido, que aparecerá no topo da sua janela atual, mas não roubará o foco automaticamente (você pode continuar interagindo com a janela atual, como de costume).
Esta foi a melhor solução que encontrei, espero que ajude alguém!
fonte
Use
msgbox
em vbs. como isso:O código
&h51000
garantirá que o msgbox esteja centralizado e em cima de todas as outras janelas o tempo todo.Se você deseja agendar apenas uma msgbox, pode simplesmente usar o agendador de tarefas, há uma função integrada para agendar uma mensagem. veja a localização de [iniciar um programa] no agendador de tarefas.
fonte
Display a Message
está obsoleta e omsg
comando não funcionou para mim no Windows 10 1703. Estou usandopowershell
para exibir a caixa de mensagem de uma tarefa agendada, use isso como argumentos ao definir a ação:É AF feio, mas funciona.
fonte
powershell
solução, uma caixa de mensagem é exibida. Ao usar amsg
solução, nada acontece, como afirmo no meu comentário.powershell -WindowStyle hidden -File "<path to script>"
, mas ele não funciona, ele funciona apenas com-Command
argumento, então:powershell -WindowStyle hidden -Command "& '<path to script>'"