Mostrar el cuadro de mensaje desde el Programador de tareas en la parte superior de todas las demás ventanas

8

¿Hay una buena forma de que aparezca un cuadro de mensaje a una hora programada en la parte superior de otras ventanas? La acción predeterminada "Mostrar un mensaje" aparece inútilmente debajo de todo lo demás.

Moss
fuente

Respuestas:

8

¿Qué hay de usar la ventana incorporada? msg comando como asi?

msg * "Message you would like to send"

Puede agregar otros parámetros tales como /TIME:x donde x es el número de segundos que desea que se muestre el mensaje. Por supuesto, msg /? le mostrará todas las opciones disponibles.

Esto implica Windows XP y superior como el sistema donde desea mostrar el mensaje. Si tiene una edición doméstica del sistema operativo aplicable, no tiene suerte. Ver http://ss64.com/nt/msg.html Para los parámetros disponibles.

Si tiene una Home Edition, la siguiente secuencia de comandos por lotes mostrará un mensaje emergente utilizando el método PopUp de 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

¡Espero que esto ayude!

Agregado: Gregg menciona en los comentarios que para que esto funcione en Windows 10, debe usar "/ time: 0" si desea que el mensaje permanezca en pantalla más de 60 segundos.

JSanchez
fuente
¿De qué estás hablando? Que es msg? No obtengo nada si intento ejecutarlo desde el cuadro Ejecutar o desde el símbolo del sistema.
Moss
No especificó en su pregunta qué versión de Windows tiene. Si tienes una edición de Home, estás de suerte. ss64.com/nt/msg.html
JSanchez
1
FYI msg se cierra automáticamente después de 60 segundos a menos que especifique /TIME:0. Esto es en Win10 x64 v1607 Enterprise LTSB. Me preguntaba por qué mi script estaba bien, pero nunca recibí un mensaje cuando lo puse en el Programador de tareas Enchufe vergonzoso: serverfault.com/a/931932/131761
gregg
4

Ver también https://www.howtogeek.com/136894/how-to-create-popup-reminders-with-no-additional-software/ . En caso de muerte de enlace, resumiré aquí:

  1. Abra el Programador de tareas de Windows (busque 'Programador de tareas' en el menú Inicio)
  2. En Acciones, haga clic en 'Crear tarea'
  3. En la pestaña General, asegúrese de que "Ejecutar solo cuando el usuario está conectado" está marcado, y "Oculto" NO está marcado
  4. En la pestaña Desencadenadores, haga clic en 'Nuevo' para establecer una hora para que se active el mensaje.
  5. En la pestaña Acciones, haga clic en 'Nuevo' y asegúrese de que la acción seleccionada en la parte superior sea 'Iniciar un programa'
  6. En 'Programa / script', escriba CMD
  7. En 'Agregar argumentos', copia y pega esto:

    / C TÍTULO [Tu título aquí] & amp; ECHO. & Amp; ECHO. & Amp; ECHO [Tu mensaje aquí] & amp; ECHO. & Amp; ECHO. & Amp; TIMEOUT [timeout]

  8. Reemplace [Su título aquí] y [Su mensaje aquí] con su texto preferido (no incluya los corchetes)
  9. Reemplace [timeout] con la cantidad de segundos que desea que espere el mensaje antes de que se agote el tiempo de espera, o -1 si no desea que se agote el tiempo de espera (de cualquier manera, al presionar una tecla mientras la ventana de la consola está enfocada, se cerrará)
  10. Haga clic en Aceptar'!

Esto generará una ventana de consola con el texto dado, que aparecerá EN LA PARTE SUPERIOR de su ventana actual, pero no robará el enfoque automáticamente (puede seguir interactuando con su ventana actual como de costumbre).

Esta fue la mejor solución que encontré, ¡espero que ayude a alguien!

Wanderspeak
fuente
Esta debe ser la respuesta aceptada, ¡gracias!
spartikus
1

Utilizar msgbox en vbs. Me gusta esto:

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"

Código &h51000 asegurará que msgbox esté en el centro y encima de todas las demás ventanas todo el tiempo.

Si solo desea programar un msgbox, simplemente puede usar el programador de tareas, hay una función incorporada para programar un mensaje. ver la ubicación de [iniciar un programa] en el programador de tareas.

Root Loop
fuente
1

Display a Message está en desuso, y msg El comando no funcionó para mí en Windows 10 1703. Estoy usando powershell para mostrar el cuadro de mensaje de una tarea programada, use esto como argumentos Al definir la acción:

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

Es feo AF, pero funciona.

isalgueiro
fuente
Es posible que desee indicar qué sucede cuando utiliza su solución. El error puede ser útil para otros usuarios.
Stese
No entiendo lo que falta en mi respuesta. Cuando uso el powershell solución aparece un cuadro de mensaje. Al usar el msg La solución no pasa nada, como indico en mi comentario.
isalgueiro
Intenté lo mismo con powershell -WindowStyle hidden -File "<path to script>" pero no funciona, funciona solo con -Command argumento, entonces powershell -WindowStyle hidden -Command "& '<path to script>'"
Mattia72