注意:这是一个question-with-answer,旨在记录一种可能对他人有用的技术,并可能了解其他更好的解决方案。请随时在评论中添加批评或问题。还可以自由添加其他答案。 :)
如何通过输入单个Windows命令(例如从“开始”菜单中的“运行”对话框或[cmd.exe]命令解释器中)来显示消息框?
如何通过输入单个Windows命令(例如从“开始”菜单中的“运行”对话框或[cmd.exe]命令解释器中)来显示消息框?
一种方法是使用看似未记录的功能,即[mshta.exe],用于Windows .hta HTML应用程序的运行时引擎,接受一个通用URL作为命令行参数,包括一个javascript:
协议URL:
mshta "javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Message!', 10, 'Title!', 64 );close()"
可以在例如[cmd.exe]中或者从开始菜单中的运行对话框中发出此命令,也可以与schtasks
命令结合使用以创建一个定时器…
上述消息框在10秒后超时,但指定0秒超时意味着“不超时”,生成一个更普通的持久性消息框。
对于一个更简单的消息框,您可以使用MSHTA主机提供的alert
函数。
msg %username% Message
有趣的参数包括:
/w (wait for user)
/time:<seconds>
msg
和net send
在Windows 7或更早的版本中已经停用,可能是在Windows Vista中。:( - Cheers and hth. - AlfMsgBox "这里是一些信息", 0, "消息标题"
然后通过以下方式调用它:
cscript.exe 路径\Message.vbs
WScript.Arguments(0)
,正如我在另一个回答的评论中所指出的那样(https://dev59.com/U2Ei5IYBdhLWcg3wjs5j#NmERoYgBc1ULPQZFTRxo)。对于第二个参数,可以使用 vbInformation
或其数字等价物。最好还要添加 C 和 C++ 的选项等价物 MB_SETFOREGROUND
,以防消息框出现在控制台窗口后面;我不知道 VBS 的名称,抱歉。 - Cheers and hth. - Alfmsgbox.vbs
中放置此代码:msgbox WScript.Arguments(0), vbInformation, "Message!"
。这样就不需要Win7 Pro安装。 - Cheers and hth. - Alf
mshta "javascript:alert('Message!');"
这个也应该可以工作。 - Pierremshta
进程退出代码,但我不知道任何合理的方法来做到这一点(不合理的方法:杀死进程)。那么替代方案包括将值存储在注册表键或文件中。这很丑陋,也不再是一个单行程序了。相反,如果我需要这个功能,我认为我会用C++编写一个实用程序。那几乎是微不足道的。 - Cheers and hth. - Alfjavascript:alert('Message!');close();
- FractalSpace