Есть ли хороший способ заставить окно сообщения всплывать в назначенное время поверх других окон? Действие по умолчанию «Показать сообщение» бесполезно отображается ниже всего остального.
Есть ли хороший способ заставить окно сообщения всплывать в назначенное время поверх других окон? Действие по умолчанию «Показать сообщение» бесполезно отображается ниже всего остального.
Как насчет использования встроенной msg
команды Window ?
msg * "Message you would like to send"
Вы можете добавить другие параметры, например, /TIME:x
где x - количество секунд, которое вы хотите, чтобы сообщение отображалось. Конечно, msg /?
покажет вам все доступные варианты.
Это подразумевает Windows XP и выше как систему, в которой вы хотите отобразить сообщение. Если у вас есть Home Edition соответствующей ОС, вам не повезло. См. Http://ss64.com/nt/msg.html для доступных параметров.
Если у вас есть Home Edition, следующий пакетный скрипт выведет сообщение, используя метод PopUp 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
Надеюсь это поможет!
Добавлено: Грегг упоминает в комментариях, что для того, чтобы это работало в Windows 10, вы должны использовать «/ time: 0», если вы хотите, чтобы сообщение оставалось на экране дольше 60 секунд.
msg
? Я ничего не получу, если попробую запустить его из поля «Выполнить» или из командной строки./TIME:0
. Это на Win10 x64 v1607 Enterprise LTSB. Мне было интересно, почему мой сценарий тестировался нормально, но я никогда не получал сообщения, когда помещал в планировщик задач. Позорный плагин: serverfault.com/a/931932/131761Также см. Https://www.howtogeek.com/136894/how-to-create-popup-reminders-with-no-additional-software/ . В случае смерти ссылки я подведу итоги здесь:
Это создаст консольное окно с заданным текстом, которое будет отображаться в верхней части текущего окна, но не будет автоматически захватывать фокус (вы можете продолжать взаимодействовать с текущим окном, как обычно).
Это было лучшее решение, которое я нашел, надеюсь, оно кому-нибудь поможет!
источник
Используйте
msgbox
в VBS. нравится:Код
&h51000
будет постоянно следить за тем, чтобы msgbox находился в центре и поверх всех остальных окон.Если вы хотите только запланировать msgbox, вы можете просто использовать планировщик задач, есть встроенная функция для планирования сообщения. см. местоположение [запуска программы] в планировщике задач.
источник
Display a Message
устарела, иmsg
команда не работает для меня в Windows 10 1703. Я используюpowershell
для отображения окна сообщения из запланированной задачи, используйте это в качестве аргументов при определении действия:Это некрасиво, но это работает.
источник
powershell
решение, появляется окно сообщения. При использованииmsg
решения ничего не происходит, как я заявляю в своем комментарии.powershell -WindowStyle hidden -File "<path to script>"
но это не работает, это работает только с-Command
аргументом, так:powershell -WindowStyle hidden -Command "& '<path to script>'"