在所有其他窗口顶部的“任务计划程序”中显示消息框


13

有没有一种好的方法可以让消息框在其他窗口之上按计划的时间弹出?默认的“显示消息”操作无用地出现在其他所有内容的下方。

Answers:


13

msg像这样使用Window的内置命令怎么样?

msg * "Message you would like to send"

您可以添加其他参数,例如/TIME:x其中x是希望消息显示的秒数。当然,msg /?将向您显示所有可用选项。

这意味着Windows XP和更高版本是您要显示消息的系统。如果您拥有适用操作系统的家庭版,那么您将不走运。有关可用参数,请参见http://ss64.com/nt/msg.html

如果您拥有家庭版,则以下批处理脚本将使用VBSCript的PopUp方法弹出一条消息:

@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

希望这可以帮助!

补充:Gregg在评论中提到,要使其在Windows 10中正常运行,如果希望消息在屏幕上停留60秒以上,则必须使用“ / time:0”。


你在说什么?什么msg啊 如果尝试从“运行”框或命令提示符下运行它,我什么也没得到。
Moss

您没有在问题中指定拥有哪个Windows版本。如果您拥有家庭版,那您就不走运了。ss64.com/nt/msg.html
JSanchez 2014年

2
除非您指定,否则FYI消息会在60秒后自动关闭/TIME:0。这是在Win10 x64 v1607 Enterprise LTSB上。我想知道为什么我的脚本测试正常,但是当我放入Task Scheduler时却没有收到任何消息。可耻的插件:serverfault.com/a/931932/131761
gregg

6

另请参阅https://www.howtogeek.com/136894/how-to-create-popup-reminders-with-no-additional-software/。万一链接死亡,我将在这里总结:

  1. 打开Windows Task Scheduler(在“开始”菜单中搜索“ Task Scheduler”)
  2. 在“操作”下,单击“创建任务”
  3. 在“常规”选项卡中,确保选中“仅在用户登录后才运行”,并且未选中“隐藏”
  4. 在“触发器”选项卡中,单击“新建”以设置消息触发的时间
  5. 在“操作”标签中,点击“新建”,并确保顶部选择的操作是“启动程序”
  6. 在“程序/脚本”中,键入CMD
  7. 在“添加参数”中,复制并粘贴以下内容:

    / C TITLE [您的标题在这里]&ECHO。&ECHO。&ECHO [您的消息在这里]&ECHO。&ECHO。&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始终位于所有其他窗口的中央和顶部。

如果只想安排一个消息框,则可以简单地使用任务计划程序,它具有一个内置功能来安排消息。请参阅任务计划程序中[启动程序]的位置。


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>')}"

AF很难看,但是可以用。


您可能想说明使用解决方案时会发生什么。该错误可能对其他用户有帮助。
斯蒂斯

我没有收到答复中缺少的内容。当我使用powershell解决方案时,会出现一个消息框。msg如我在评论中所述,使用解决方案时没有任何反应。
isalgueiro

我尝试使用相同的方法, powershell -WindowStyle hidden -File "<path to script>" 但是它不起作用,它仅适用于-Command参数,因此: powershell -WindowStyle hidden -Command "& '<path to script>'"
Mattia72
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.