Windows [cmd.exe] command to display a messagebox

2020-05-26 07:51发布

问题:

Note: This is a question-with-answer in order to document a technique that others might find useful, and in order to perhaps become aware of others’ even better solutions. Do feel free to add critique or questions as comments. Also do feel free to add additional answers. :)


How can I display a messagebox by typing a single Windows command, e.g. in the Run dialog from the Start menu, or in the [cmd.exe] command interpreter?

回答1:

One way is to use apparently undocumented functionality, namely that [mshta.exe], the runtime engine for Windows .hta HTML applications, accepts a general URL as command line argument, including a javascript: protocol URL:

mshta "javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Message!', 10, 'Title!', 64 );close()"

            

This command can be issued in e.g. [cmd.exe]], or e.g. in the Run dialog from the Start menu, perhaps combined with the schtasks command to create a tea-timer…

The above messagebox times out after 10 seconds, but specifying a 0 second timeout means “don’t time out”, producing a more ordinary persistent messagebox.

For a simpler messagebox you can instead use the alert function provided by the MSHTA host.



回答2:

on command prompt:

msg %username% Message

interesting parameters are:

/w        (wait for user) 
/time:<seconds>


回答3:

Found that if you copy msg.exe from a Win7 Pro machine to a Win7 Home machine it works. Copy msg.exe to and from the C:\Windows\System32 folder.



回答4:

What if you create a small VBScript with the message you want to display? I.e. create e file, named "Message.vbs" with the content:

MsgBox "Some info here", 0, "Message Title"

and call it like this:

cscript.exe PATH\Message.vbs