Tampilkan kotak pesan dari Penjadwal Tugas di atas semua jendela lainnya

13

Apakah ada cara yang baik untuk mendapatkan kotak pesan untuk muncul pada waktu yang dijadwalkan di atas jendela lain? Tindakan "Tampilkan Pesan" default tidak berguna muncul di bawah segalanya.

Lumut
sumber

Jawaban:

13

Bagaimana kalau menggunakan msgperintah bawaan Window seperti itu?

msg * "Message you would like to send"

Anda dapat menambahkan parameter lain seperti di /TIME:xmana x adalah jumlah detik yang Anda inginkan untuk ditampilkan pesan. Tentu saja, msg /?akan menunjukkan kepada Anda semua opsi yang tersedia.

Ini menyiratkan Windows XP dan lebih tinggi sebagai sistem tempat Anda ingin menampilkan pesan. Jika Anda memiliki Home Edition dari OS yang berlaku, Anda kurang beruntung. Lihat http://ss64.com/nt/msg.html untuk parameter yang tersedia.

Jika Anda memiliki Edisi Rumah, skrip kumpulan berikut akan memunculkan pesan menggunakan metode 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

Semoga ini membantu!

Ditambahkan: Gregg menyebutkan dalam komentar bahwa agar ini berfungsi di Windows 10, Anda harus menggunakan "/ waktu: 0" jika Anda ingin pesan tetap di layar lebih dari 60 detik.

JSanchez
sumber
Apa yang kamu bicarakan? Apa msg? Saya tidak mendapatkan apa-apa jika saya mencoba menjalankannya dari kotak Jalankan atau dari command prompt.
Moss
Anda tidak menentukan dalam pertanyaan Anda versi Windows yang Anda miliki. Jika Anda memiliki edisi Rumah, Anda kurang beruntung. ss64.com/nt/msg.html
JSanchez
2
Pesan FYI secara otomatis ditutup setelah 60 detik kecuali Anda tentukan /TIME:0. Ini ada di Win10 x64 v1607 Enterprise LTSB. Saya bertanya-tanya mengapa skrip saya diuji dengan baik, tetapi saya tidak pernah menerima pesan ketika saya memasukkan Penjadwal Tugas. Steker memalukan: serverfault.com/a/931932/131761
gregg
6

Juga lihat https://www.howtogeek.com/136894/how-to-create-popup-reminders-with-no-additional-software/ . Dalam kasus kematian tautan, saya akan meringkas di sini:

  1. Buka Penjadwal Tugas Windows (cari 'Penjadwal Tugas' di menu Mulai)
  2. Di bawah Tindakan, klik 'Buat Tugas'
  3. Di tab Umum, pastikan 'Jalankan hanya ketika pengguna masuk' dicentang, dan 'Tersembunyi' TIDAK dicentang
  4. Di tab Pemicu, klik 'Baru' untuk menetapkan waktu pemicu pesan
  5. Di tab Tindakan, klik 'Baru' dan pastikan tindakan yang dipilih di atas adalah 'Mulai program'
  6. Dalam 'Program / skrip', ketik CMD
  7. Di 'Tambahkan argumen', salin dan tempel ini:

    / C JUDUL [Judul Anda di sini] & ECHO. & ECHO. & ECHO [Pesan Anda di sini] & ECHO. & ECHO. & TIMEOUT [batas waktu]

  8. Ganti [Judul Anda di sini] dan [Pesan Anda di sini] dengan teks pilihan Anda (tidak termasuk tanda kurung)
  9. Ganti [batas waktu] dengan jumlah detik yang Anda ingin pesan menunggu sebelum waktu habis, atau -1 jika Anda tidak ingin waktu habis (salah satu cara, tekan tombol saat jendela konsol dalam fokus akan menutupnya)
  10. Klik 'OK'!

Ini akan menghasilkan jendela konsol dengan teks yang diberikan, yang akan muncul DI ATAS jendela Anda saat ini, tetapi tidak akan secara otomatis mencuri fokus (Anda dapat terus berinteraksi dengan jendela Anda saat ini seperti biasa).

Ini adalah solusi terbaik yang saya temukan, semoga membantu seseorang!

Wanderspeak
sumber
Ini seharusnya jawaban yang diterima sangat apik, terima kasih!
spartikus
1

Gunakan msgboxdalam vbs. seperti ini:

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"

Kode &h51000akan memastikan kotak pesan di tengah dan di atas semua jendela lain sepanjang waktu.

Jika Anda hanya ingin menjadwalkan kotak pesan, Anda cukup menggunakan penjadwal tugas, ada fungsi bawaan untuk menjadwalkan pesan. lihat lokasi [memulai program] di penjadwal tugas.

Root Loop
sumber
1

Display a Messagesudah usang, dan msgperintah tidak bekerja untuk saya di Windows 10 1703. Saya menggunakan powershelluntuk menampilkan kotak pesan dari tugas yang dijadwalkan, gunakan ini sebagai argumen ketika mendefinisikan tindakan:

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

AF jelek, tapi berhasil.

isalgueiro
sumber
Anda mungkin ingin menyatakan apa yang terjadi ketika Anda menggunakan solusi Anda. Kesalahan mungkin bermanfaat bagi pengguna lain.
Stese
Saya tidak mendapatkan apa yang hilang dari tanggapan saya. Ketika saya menggunakan powershellsolusi, kotak pesan muncul. Saat menggunakan msgsolusi tidak ada yang terjadi, seperti yang saya nyatakan dalam komentar saya.
isalgueiro
Saya mencoba hal yang sama powershell -WindowStyle hidden -File "<path to script>" tetapi tidak berhasil, itu hanya bekerja dengan -Commandargumen, jadi: powershell -WindowStyle hidden -Command "& '<path to script>'"
Mattia72