Відобразить вікно повідомлень із Планувальник завдань над усіма іншими вікнами


13

Чи є приємний спосіб отримати поле повідомлень, щоб спливати в запланований час над іншими вікнами? Дія "Показати повідомлення" за замовчуванням марно відображається нижче за все інше.

Відповіді:


13

Як щодо використання такої вбудованої msgкоманди Window ?

msg * "Message you would like to send"

Ви можете додати інші параметри, наприклад, /TIME:xде x - кількість секунд, яке потрібно відобразити. Звичайно, msg /?покаже вам всі доступні варіанти.

Це означає, що Windows XP і вище як система, де ви хочете відобразити повідомлення. Якщо у вас є домашня версія відповідної ОС, вам не пощастило. Дивіться http://ss64.com/nt/msg.html про доступні параметри.

Якщо у вас є домашнє видання, наступний пакетний скрипт спливає повідомлення за допомогою методу 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? Я нічого не отримую, якщо спробувати запустити його з поля Run або з командного рядка.
Мосс

Ви не вказали у своєму запитанні, яку версію Windows у вас є. Якщо у вас є домашнє видання, вам не пощастило. ss64.com/nt/msg.html
JSanchez

2
FYI msg автоматично закривається після 60сек, якщо не вказати /TIME:0. Це на Win10 x64 v1607 Enterprise LTSB. Мені було цікаво, чому мій сценарій добре перевірений, але я ніколи не отримував повідомлення, коли я вводив Планувальник завдань. Ганебний Штепсель: serverfault.com/a/931932/131761
Gregg

6

Також дивіться https://www.howtogeek.com/136894/how-to-create-popup-reminders-with-no-additional-software/ . У випадку загибелі зв'язку я підсумую тут:

  1. Відкрийте Планувальник завдань Windows (пошук "Планувальник завдань" у меню "Пуск")
  2. У розділі Дії натисніть «Створити завдання»
  3. На вкладці Загальні переконайтесь, що прапорець "Запускати лише тоді, коли користувач увійшов у систему", і "Приховано" НЕ перевірено.
  4. На вкладці "Тригери" натисніть "Створити", щоб встановити час запуску повідомлення
  5. На вкладці "Дії" натисніть "Створити" та переконайтесь, що вибрана дія вгорі "Запуск програми"
  6. У полі "Програма / сценарій" введіть CMD
  7. У "Додати аргументи" скопіюйте та вставте це:

    / C TITLE [Ваш заголовок тут] & ECHO. & ECHO. & ECHO [Ваше повідомлення тут] & ECHO. & ECHO. & TIMEOUT [timeout]

  8. Замініть [Ваша назва тут] та [Ваше повідомлення тут] на бажаний текст (не включайте дужки)
  9. Замініть [timeout] на кількість секунд, які ви хочете, щоб повідомлення зачекало до вичерпання часу, або -1, якщо ви не хочете, щоб його вичерпали (в будь-якому випадку, натисніть клавішу, коли вікно консолі знаходиться у фокусі, це закриє)
  10. Натисніть "ОК"!

Це створить консольне вікно із заданим текстом, який з’явиться НА ТОПІ вашого поточного вікна, але фокус не викрадеться автоматично (ви можете продовжувати взаємодіяти з поточним вікном як завжди).

Це було найкращим рішенням, яке я знайшов, сподіваюся, що це комусь допоможе!


Це має бути прийнята відповідь дуже хитра, дякую!
spartikus

1

Використовувати msgboxв vbs. подобається це:

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"

Код &h51000завжди гарантуватиме msgbox в центральній та над усіма іншими вікнами.

Якщо ви хочете запланувати лише msgbox, ви можете просто використовувати планувальник завдань, є вбудована функція для планування повідомлення. див. розташування [запустити програму] в планувальнику завдань.


1

Display a Messageзастаріло, і msgкоманда не працювала для мене в Windows 10 1703. Я використовую powershellдля відображення поля повідомлень із запланованого завдання, використовуйте це як аргументи під час визначення дії:

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

Це некрасиво АФ, але воно працює.


Ви можете сказати, що відбувається під час використання вашого рішення. Помилка може бути корисною для інших користувачів.
Stese

Я не отримую того, чого не вистачає в моїй відповіді. Коли я використовую powershellрішення, з'являється вікно повідомлень. При використанні msgрішення нічого не відбувається, як я заявляю у своєму коментарі.
isalgueiro

Я спробував те ж саме, powershell -WindowStyle hidden -File "<path to script>" але це не працює, він працює лише з -Commandаргументом, так: powershell -WindowStyle hidden -Command "& '<path to script>'"
Mattia72
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.