他のすべてのウィンドウの上にタスクスケジューラのメッセージボックスを表示する


13

メッセージボックスを他のウィンドウの上に予定された時間にポップアップする良い方法はありますか?デフォルトの「メッセージの表示」アクションは、他のすべての下に無意味に表示されます。

回答:


13

Windowの組み込みmsgコマンドをそのように使用するのはどうですか?

msg * "Message you would like to send"

あなたのような他のパラメータを追加することができ/TIME:x、xはあなたがメッセージを表示する秒数ですが。もちろん、msg /?利用可能なすべてのオプションが表示されます。

これは、メッセージを表示するシステムとしてWindows XP以降を意味します。該当するOSのHome Editionをお持ちの場合は、運が悪いです。使用可能なパラメーターについては、http://ss64.com/nt/msg.htmlを参照してください

Home Editionがある場合、次のバッチスクリプトは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

お役に立てれば!

追加:Windows 10でこれを機能させるには、メッセージを画面上に60秒より長く表示させたい場合は、「/ time:0」を使用する必要があるとコメントでGreggが言及しています。


あなたは何について話していますか?なにmsg?[実行]ボックスまたはコマンドプロンプトから実行しようとしても何も起こりません。
モス14

質問では、お使いのWindowsのバージョンを指定していません。Homeエディションをお持ちの場合は、運が悪いです。ss64.com/nt/msg.html
JSanchez

2
指定しない限り、FYIメッセージは60秒後に自動的に閉じます/TIME:0。これは、Win10 x64 v1607 Enterprise LTSBにあります。なぜスクリプトがうまくテストされたのかと思っていましたが、タスクスケジューラに入れてもメッセージが表示されませんでした。恥ずかしいプラグイン:serverfault.com/a/931932/131761
gregg 2018

6

https://www.howtogeek.com/136894/how-to-create-popup-reminders-with-no-additional-software/も参照してください。リンクが死亡した場合は、ここで要約します。

  1. Windowsタスクスケジューラを開きます([スタート]メニューで[タスクスケジューラ]を検索します)
  2. [アクション]で、[タスクの作成]をクリックします
  3. [全般]タブで、[ユーザーのログオン時にのみ実行する]がオンになっており、[非表示]がオフになっていることを確認します
  4. [トリガー]タブで、[新規]をクリックして、メッセージをトリガーする時間を設定します
  5. [アクション]タブで[新規]をクリックし、上部で選択したアクションが[プログラムの開始]であることを確認します
  6. 「プログラム/スクリプト」にCMDと入力します
  7. 「引数を追加」で、これをコピーして貼り付けます。

    / C TITLE [ここにあなたのタイトル]&ECHO。&ECHO。&ECHO [ここにメッセージ]&ECHO。&ECHO。&TIMEOUT [タイムアウト]

  8. [ここのタイトル]と[ここのメッセージ]を任意のテキストに置き換えます(角かっこは含めないでください)。
  9. [timeout]を、メッセージがタイムアウトするまで待機する秒数に置き換えます。タイムアウトにしたくない場合は-1にします(どちらにしても、コンソールウィンドウがフォーカスされているときにキーを押すとメッセージが閉じます)
  10. 「OK」をクリックしてください!

これにより、現在のウィンドウの上部に表示される、指定されたテキストのコンソールウィンドウが生成されますが、フォーカスが自動的に奪われることはありません(通常どおりに現在のウィンドウを操作し続けることができます)。

これは私が見つけた最高の解決策でした、誰かに役立つことを願っています!


これは非常に洗練された回答として受け入れられるべきです、ありがとう!
spartikus 2018年

1

msgboxVBSで使用します。このような:

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は非推奨で、msgWindows 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ですが、動作します。


ソリューションを使用したときに何が起こるかを述べたいと思うかもしれません。エラーは他のユーザーに役立つ場合があります。
Stese

私は私の応答から欠けているものを取得しません。powershellソリューションを使用すると、メッセージボックスが表示されます。msgソリューションを使用すると、コメントで述べたように何も起こりません。
isalgueiro 2017年

私は同じことをしようとした powershell -WindowStyle hidden -File "<path to script>" が、それはない仕事、それだけで動作しない-Commandので、引数: powershell -WindowStyle hidden -Command "& '<path to script>'"
Mattia72
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.