Prima dell’aggiornamento a Windows 10, avevo uno o due processi programmati che mi mostravano a video un semplice messaggio di testo, un promemoria in alcune giornate ben precise, a orario precedentemente stabilito. Con l’ultima versione del sistema operativo di casa Microsoft questo non è più possibile, non con la stessa immediatezza almeno, poiché tale funzione è stata deprecata.
Chiaramente esiste il modo di aggirare l’ostacolo, si può passare da PowerShell e da fondamenti di Visual Basic. Un risultato esteticamente molto meno accattivante,ma che ti permette di portare a casa ciò che prima avevi.
Per poter aprire una finestra contenente il messaggio “promemoria“, il codice PowerShell è il seguente:
param ( | |
[Parameter(Mandatory=$true)] | |
[String]$MsgTitle, | |
[Parameter(Mandatory=$true)] | |
[String]$MsgText | |
) | |
Add-Type -AssemblyName Microsoft.VisualBasic | |
$showWindowAsync = Add-Type –memberDefinition @” | |
[DllImport("user32.dll")] | |
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); | |
“@ -name “Win32ShowWindowAsync” -namespace Win32Functions –passThru | |
function Show-PowerShell() { [void]$showWindowAsync::ShowWindowAsync((Get-Process –id $pid).MainWindowHandle, 10) } | |
function Hide-PowerShell() { [void]$showWindowAsync::ShowWindowAsync((Get-Process –id $pid).MainWindowHandle, 2) } | |
Clear-Host | |
Hide-PowerShell | |
$MsgBox = [Microsoft.VisualBasic.Interaction] | |
[void] $MsgBox::MsgBox($MsgText,0,$MsgTitle) | |
Show-PowerShell |
I due parametri che il file PS1 si aspetta serviranno a specificare il titolo della finestra e il contenuto del messaggio che comparirà a video. Il tutto è chiaramente fattibile anche con un file VBScript, se lo preferisci. Se vuoi scaricare il file PS1 riportato sopra fai clic con il tasto destro sulla voce view raw
(in basso a destra nel box) e scegli di salvare la destinazione con nome. Io ho adottato questa soluzione che in realtà nasce da un thread nel forum di WindowsSecrets.
Cerca l’attività nelle operazioni pianificate di Windows, modificala e vai a togliere l’azione (quella che mostrava il messaggio), anche perché provando a riattivarla o modificarla otterrai un errore a video:
A questo punto dovrai avviare un programma, dargli in pasto l’eseguibile di PowerShell (C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe) e specificare un argomento unico che vada a pescare il file PS1 precedentemente salvato, passando a quest’ultimo il titolo e il messaggio da mostrare a video, per esempio:
Nel mio caso, la riga dell’argomento contiene:
C:\Documenti\Script\ShowReminder.ps1 -MsgTitle 'Reminder' -MsgText 'Ciao, ricordati di fare il report'
dove il parametro MsgTitle
corrisponde (ovviamente) al titolo del popup che ti comparirà a video, e MsgText
il contenuto del corpo, il messaggio vero e proprio. Salva quanto modificato. Se serve, modifica ora e giorno di esecuzione, quindi salva tutto quanto per evitare di perdere quanto fatto fino a ora.
Lancia manualmente l’operazione schedulata per verificare che tutto funzioni regolarmente, salvo errori sei a posto e hai trovato il giusto escamotage per risolvere il tuo problema.
Cheers.
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)