Zeigen Sie das Meldungsfeld im Taskplaner über allen anderen Fenstern an

13

Gibt es eine gute Möglichkeit, ein Meldungsfeld zu einem festgelegten Zeitpunkt über anderen Fenstern anzuzeigen? Die Standardaktion "Nachricht anzeigen" wird unnötigerweise unter allem anderen angezeigt.

Moos
quelle

Antworten:

13

Wie wäre es, wenn Sie den in Windows integrierten msgBefehl so verwenden?

msg * "Message you would like to send"

Sie können andere Parameter hinzufügen, z. B. /TIME:xwobei x die Anzahl der Sekunden ist, die die Nachricht anzeigen soll. Natürlich msg /?werden Ihnen alle verfügbaren Optionen angezeigt.

Dies impliziert Windows XP und höher als das System, auf dem Sie die Nachricht anzeigen möchten. Wenn Sie eine Home Edition des entsprechenden Betriebssystems haben, haben Sie kein Glück. Die verfügbaren Parameter finden Sie unter http://ss64.com/nt/msg.html .

Wenn Sie eine Home Edition haben, zeigt das folgende Batch-Skript eine Nachricht mit der PopUp-Methode von VBSCript an:

@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

Hoffe das hilft!

Hinzugefügt: Gregg erwähnt in den Kommentaren, dass Sie "/ time: 0" verwenden müssen, damit die Nachricht länger als 60 Sekunden auf dem Bildschirm bleibt, damit dies unter Windows 10 funktioniert.

JSanchez
quelle
Worüber redest du? Was ist msg? Ich erhalte nichts, wenn ich versuche, es über das Feld Ausführen oder über die Eingabeaufforderung auszuführen.
Moss
Sie haben in Ihrer Frage nicht angegeben, welche Windows-Version Sie haben. Wenn Sie eine Home Edition haben, haben Sie kein Glück. ss64.com/nt/msg.html
JSanchez
2
Die FYI-Nachricht wird nach 60 Sekunden automatisch geschlossen, sofern Sie nichts anderes angeben /TIME:0. Dies ist auf Win10 x64 v1607 Enterprise LTSB. Ich habe mich gefragt, warum mein Skript einwandfrei getestet wurde, aber beim Einfügen in den Taskplaner wurde keine Nachricht angezeigt. Schändlicher Plug: serverfault.com/a/931932/131761
Gregg
6

Siehe auch https://www.howtogeek.com/136894/how-to-create-popup-reminders-with-no-additional-software/ . Im Falle eines Link-Todes werde ich hier zusammenfassen:

  1. Öffnen Sie den Windows Task Scheduler (suchen Sie im Startmenü nach 'Task Scheduler').
  2. Klicken Sie unter Aktionen auf "Aufgabe erstellen".
  3. Stellen Sie auf der Registerkarte Allgemein sicher, dass "Nur ausführen, wenn der Benutzer angemeldet ist" aktiviert ist und "Versteckt" NICHT aktiviert ist
  4. Klicken Sie auf der Registerkarte Auslöser auf "Neu", um eine Zeit festzulegen, zu der die Nachricht ausgelöst werden soll
  5. Klicken Sie auf der Registerkarte "Aktionen" auf "Neu" und stellen Sie sicher, dass die oben ausgewählte Aktion "Programm starten" lautet.
  6. Geben Sie unter 'Programm / Skript' CMD ein
  7. Kopieren Sie unter 'Argumente hinzufügen' Folgendes und fügen Sie es ein:

    / C TITEL [Ihr Titel hier] & ECHO. & ECHO. & ECHO [Ihre Nachricht hier] & ECHO. & ECHO. & TIMEOUT [Timeout]

  8. Ersetzen Sie [Ihren Titel hier] und [Ihre Nachricht hier] durch Ihren bevorzugten Text (ohne Klammern)
  9. Ersetzen Sie [Zeitüberschreitung] durch die Anzahl der Sekunden, die die Nachricht vor dem Zeitlimit warten soll, oder -1, wenn Sie keine Zeitüberschreitung wünschen (in beiden Fällen wird sie durch Drücken einer Taste geschlossen, während das Konsolenfenster scharfgestellt ist).
  10. OK klicken'!

Dadurch wird ein Konsolenfenster mit dem angegebenen Text generiert, das OBEN in Ihrem aktuellen Fenster angezeigt wird, aber nicht automatisch den Fokus stiehlt (Sie können wie gewohnt mit Ihrem aktuellen Fenster interagieren).

Dies war die beste Lösung, die ich gefunden habe, hoffe, es hilft jemandem!

Wanderspeak
quelle
Dies sollte die akzeptierte Antwort sehr geschickt sein, danke!
Spartikus
1

Verwendung msgboxin vbs. so was:

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"

Der Code stellt &h51000sicher, dass sich msgbox immer in der Mitte und über allen anderen Fenstern befindet.

Wenn Sie nur eine msgbox planen möchten, können Sie einfach den Taskplaner verwenden. Es gibt eine integrierte Funktion zum Planen einer Nachricht. Siehe Position von [Programm starten] im Taskplaner.

Wurzelschleife
quelle
1

Display a Messageist veraltet und der msgBefehl hat in Windows 10 1703 nicht funktioniert. Ich verwende ihn powershell, um das Meldungsfeld einer geplanten Aufgabe anzuzeigen. Verwenden Sie dies als Argumente beim Definieren der Aktion:

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

Es ist hässlich AF, aber es funktioniert.

isalgueiro
quelle
Möglicherweise möchten Sie angeben, was passiert, wenn Sie Ihre Lösung verwenden. Der Fehler kann für andere Benutzer hilfreich sein.
Stese
Ich verstehe nicht, was in meiner Antwort fehlt. Wenn ich die powershellLösung verwende, wird ein Meldungsfeld angezeigt. Bei Verwendung der msgLösung passiert nichts, wie ich in meinem Kommentar feststelle.
Isalgueiro
Ich habe das gleiche mit versucht, powershell -WindowStyle hidden -File "<path to script>" aber es funktioniert nicht, es funktioniert nur mit -CommandArgumenten, also: powershell -WindowStyle hidden -Command "& '<path to script>'"
Mattia72