แสดงกล่องข้อความจาก Task Scheduler ที่ด้านบนของหน้าต่างอื่นทั้งหมด


13

มีวิธีดีในการรับกล่องข้อความให้ปรากฏขึ้นตามเวลาที่กำหนดไว้ด้านบนของหน้าต่างอื่น ๆ ? การดำเนินการ "แสดงข้อความ" เริ่มต้นจะปรากฏใต้ส่วนอื่นอย่างไม่มีประโยชน์

คำตอบ:


13

การใช้msgคำสั่งในตัวของ Window เป็นอย่างไร

msg * "Message you would like to send"

คุณสามารถเพิ่มพารามิเตอร์อื่น ๆ เช่นโดย/TIME:xที่ x คือจำนวนวินาทีที่คุณต้องการให้ข้อความแสดง แน่นอนmsg /?จะแสดงตัวเลือกทั้งหมดให้คุณ

สิ่งนี้แสดงถึง Windows XP และสูงกว่าเป็นระบบที่คุณต้องการแสดงข้อความ หากคุณมี Home Edition ของระบบปฏิบัติการที่ใช้งานอยู่แสดงว่าคุณไม่มีโชค ดูที่http://ss64.com/nt/msg.htmlสำหรับพารามิเตอร์ที่มี

หากคุณมี Home Edition สคริปต์ชุดต่อไปนี้จะป๊อปอัพข้อความโดยใช้วิธีการ PopUp ของ 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

หวังว่านี่จะช่วยได้!

เพิ่ม: Gregg กล่าวถึงความคิดเห็นที่ว่าเพื่อให้สิ่งนี้ทำงานได้ใน Windows 10 คุณต้องใช้ "/ เวลา: 0" หากคุณต้องการให้ข้อความอยู่บนหน้าจอนานกว่า 60 วินาที


คุณกำลังพูดเรื่องอะไร คือmsgอะไร ฉันไม่ได้อะไรเลยถ้าฉันพยายามเรียกใช้จากกล่อง Run หรือจากพรอมต์คำสั่ง
มอส

คุณไม่ได้ระบุในคำถามของคุณว่าคุณใช้ Windows รุ่นใด หากคุณมีรุ่นบ้านคุณโชคไม่ดี ss64.com/nt/msg.html
JSanchez

2
FYI ปิดผงชูรสโดยอัตโนมัติหลังจาก 60sec /TIME:0เว้นแต่คุณจะระบุ นี่คือใน Win10 x64 v1607 Enterprise LTSB ฉันสงสัยว่าทำไมสคริปต์ของฉันถึงทดสอบได้ดี แต่ฉันไม่เคยได้รับข้อความใด ๆ เมื่อฉันใส่ใน Task Scheduler ปลั๊กอัปเดต: serverfault.com/a/931932/131761
gregg

6

ยังเห็นhttps://www.howtogeek.com/136894/how-to-create-popup-reminders-with-no-additional-software/ ในกรณีที่ลิงก์ตายฉันจะสรุปที่นี่:

  1. เปิด Windows Task Scheduler (ค้นหา 'Task Scheduler' ในเมนู Start)
  2. ภายใต้การกระทำคลิก 'สร้างงาน'
  3. ในแท็บทั่วไปให้ตรวจสอบว่า 'เรียกใช้เฉพาะเมื่อผู้ใช้เข้าสู่ระบบ' ถูกเลือกและไม่ได้เลือก 'ซ่อน'
  4. ในแท็บทริกเกอร์คลิก 'ใหม่' เพื่อกำหนดเวลาสำหรับข้อความที่จะทริกเกอร์
  5. ในแท็บการดำเนินการคลิก 'ใหม่' และตรวจสอบให้แน่ใจว่าการกระทำที่เลือกที่ด้านบนคือ 'เริ่มโปรแกรม'
  6. ใน 'โปรแกรม / สคริปต์' พิมพ์ CMD
  7. ใน 'เพิ่มอาร์กิวเมนต์' ให้คัดลอกและวางสิ่งนี้:

    / C TITLE [ชื่อของคุณที่นี่] & ECHO. & ECHO. & ECHO [ข้อความของคุณที่นี่] & ECHO. & ECHO. & TIMEOUT [หมดเวลา]

  8. แทนที่ [ชื่อของคุณที่นี่] และ [ข้อความของคุณที่นี่] ด้วยข้อความที่คุณต้องการ (ไม่รวมวงเล็บ)
  9. แทนที่ [หมดเวลา] ด้วยจำนวนวินาทีที่คุณต้องการให้ข้อความรอก่อนหมดเวลาหรือ -1 ถ้าคุณไม่ต้องการให้หมดเวลา (ทั้งสองวิธีกดปุ่มในขณะที่หน้าต่างคอนโซลอยู่ในโฟกัสจะปิด)
  10. คลิก 'ตกลง'!

สิ่งนี้จะสร้างหน้าต่างคอนโซลพร้อมข้อความที่กำหนดซึ่งจะปรากฏที่ด้านบนของหน้าต่างปัจจุบันของคุณ แต่จะไม่ขโมยโฟกัสโดยอัตโนมัติ (คุณสามารถโต้ตอบกับหน้าต่างปัจจุบันของคุณได้ตามปกติ)

นี่เป็นทางออกที่ดีที่สุดที่ฉันพบหวังว่ามันจะช่วยใครซักคน!


นี่ควรเป็นคำตอบที่ดีมาก ๆ ขอบคุณ!
spartikus

1

ใช้msgboxใน vbs แบบนี้:

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 อยู่ตรงกลางและอยู่ด้านบนของหน้าต่างอื่น ๆ ตลอดเวลา

หากคุณต้องการกำหนดเวลา msgbox เท่านั้นคุณสามารถใช้ตัวกำหนดเวลางานได้มีฟังก์ชันในตัวเพื่อกำหนดเวลาข้อความ ดูตำแหน่งของ [เริ่มโปรแกรม] ในตัวกำหนดตารางเวลางาน


1

Display a Messageเลิกใช้แล้วและmsgคำสั่งไม่ทำงานสำหรับฉันใน Windows 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

ฉันลองเหมือนกัน 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.