Question Comment faire pour que l'ordinateur émette un bip à partir d'un script / programme appelé par le planificateur de tâches Windows?


J'utilise Windows 7 Édition familiale. Je veux que mon ordinateur attende un certain temps, puis émette un bip avant de mettre fin à un programme. En guise de test, j'ai écrit le fichier de commandes suivant pour que Windows Media Player joue la radio, attendez 10 secondes, puis émettez un bip et désactivez-le:

@echo off
start "_" "C:\Program Files (x86)\Windows Media Player\wmplayer.exe" "http://www.cpr.org/content_category_templates/listenTemplate/listenClassical48.asx"
sleep 10
@echo ^G
@echo ^G
@echo ^G
@echo ^G
taskkill /im wmplayer.exe /f

Remarque: suivant les instructions que j'ai trouvées dans une autre question sur ce site, le truc "^ G" est le caractère que vous obtenez lorsque vous tapez control + G à une invite de commande. Il ne semble pas apparaître sur ce site, donc je l'ai remplacé par ^ G.

Cela a parfaitement fonctionné. Jusqu'à ce que je tente de l'exécuter automatiquement à l'aide du Planificateur de tâches Windows. J'ai essayé ceci plusieurs fois et ça n'a pas bipé. Les autres fonctions fonctionnaient bien, mais aucun bip n'était audible.

Le script ne s'est pas exécuté dans une fenêtre lorsqu'il a été démarré par le planificateur de tâches, et j'ai conclu que cela devait causer des problèmes avec la commande echo (rien à auquel faire écho). Donc, après avoir passé du temps à chercher une méthode pour déclencher le bip qui ne comportait pas d'écho, j'ai finalement réécrit le tout sous la forme d'un programme de console VB .NET:

Imports System.Threading

Module Beep

    Sub Main()
        Dim wmp As New System.Diagnostics.Process
        wmp.StartInfo.FileName = "C:\Program Files (x86)\Windows Media Player\wmplayer.exe"
        wmp.StartInfo.Arguments = "http://www.cpr.org/content_category_templates/listenTemplate/listenClassical48.asx"
        wmp.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
        wmp.Start()
        Thread.Sleep(New TimeSpan(0, 0, 10))
        Console.Beep()
        Console.Beep()
        Console.Beep()
        Console.Beep()
        wmp.Kill()
    End Sub

End Module

Cela fonctionne de la même manière, y compris le fait qu’elle ne retentit que lorsqu'elle est appelée manuellement. Appelé depuis le planificateur de tâches, il ne parvient pas non plus à émettre un bip. Je ne sais pas quoi d'autre à essayer, ici. Toute aide serait appréciée.


3
2018-04-08 03:19


origine




Réponses:


Il est possible qu'il y ait un problème avec le lancement du système de lecteur multimédia à partir d'un script. Vous pouvez créer un script de commandes avec le Ctrl+G caractère que vous avez mentionné, et il utilisera le bip du système. Je ne pense pas que le Ctrl+C méthode dont vous parliez fonctionne réellement.

Ouvrez une invite de commande, remplacez les répertoires par lesquels vous souhaitez enregistrer le fichier de commandes et tapez les commandes suivantes:

copy con beep.cmd

Ctrl+g, Ctrl+Z

Maintenant, si tu cours beep.cmd, il devrait utiliser le bip du système.

J'ai créé une tâche système pour exécuter ce fichier de commandes, et lorsque je lance la tâche manuellement, la fenêtre de commande apparaît et émet un bip, puis se ferme.

La façon dont cela fonctionne est qu'il copie tout ce que vous tapez dans la fenêtre de commande dans le fichier spécifié, dans ce cas beep.cmd. Vous ne pouvez pas simplement mettre en ^G dans le fichier, même si c’est ce qui apparaît à l’écran, ^ et G, tandis que ^G est en fait une représentation d'un caractère ASCII différent. En utilisant la méthode de la fenêtre de commande, vous pouvez enregistrer la pression réelle sur le fichier. Vous pouvez ensuite éditer le fichier de commandes si vous voulez qu'il fasse autre chose, assurez-vous simplement de conserver la ligne avec le caractère spécial. Cela ressemblera probablement à une boîte vide dans le bloc-notes.


4
2018-04-08 04:05



Désolé, ^ C est une faute de frappe. J'ai fait ctrl + G dans le fichier de commandes actuel. Je suis sûr que c'est vrai parce que ça marche quand je lance le fichier manuellement. Juste pour être sûr, j'ai refait le fichier de commandes correctement tout à l'heure, avec les mêmes résultats. Je vais éditer ma question pour éviter toute confusion future. - gorcq


Recherchez une option dans votre Planificateur de tâches dans les propriétés de votre tâche planifiée appelées [quelque chose comme:] "interagissez avec l'utilisateur" ou "interactif" (ou quelque chose comme ça). Cela devrait être une case à cocher, et si vous l'activez, cela devrait faire apparaître votre tâche dans l'interface graphique ainsi que dans le système audio.

À défaut, Steve Gibson (le créateur du célèbre utilitaire de réparation de disques SpinRite) dispose d’un outil de ligne de commande gratuit appelé "Wizmo" qui peut lire un fichier .wav à partir d’un fichier de commandes:

Wizmo (aucune installation requise - il s'agit d'un outil autonome)
http://www.grc.com/wizmo/wizmo.htm

J'espère que cela peut faire le travail pour vous aussi (si c'est le cas, vous devrez évidemment enregistrer un bip dans un fichier .wav).


0
2018-04-08 03:35



Je ne vois aucune option contenant le mot interactif ou similaire. Je vais devoir regarder de plus près ce truc de wizmo. - gorcq
@gorcq: Je me souviens d'avoir vu cette option dans Windows XP, mais dans Windows 7, il semble avoir disparu. C'est dommage (je souhaite que Microsoft ne lâche pas de bonnes fonctionnalités comme celle-ci). = ( - Randolf Richardson
J'ai vu l'option interactive sur Windows Server 2008 (Vista Server). L'auraient-ils supprimé de 7 si Task Scheduler utilisait la même DLL pour ces deux versions de Windows? MODIFIER Je peux me tromper.
J'ai maintenant essayé avec Wizmo, et j'ai le même problème: il fonctionne correctement lorsqu'il est exécuté manuellement à partir de la ligne de commande, mais pas de bip lorsque le Planificateur de tâches l'exécute. Je viens d'éditer le fichier de commandes indiqué ci-dessus et j'ai remplacé toutes les instances de "@echo ^ C" par "wizmo play =" C: \ Windows \ Media \ Windows Critical Stop.wav "". - gorcq
@Randolph Potter: Merci d'avoir confirmé que je me souviens plutôt que d'imaginer! (Je ne peux pas éditer mon précédent commentaire, alors j'ai simplement ajouté celui-ci avec l'orthographe correcte du nom de Randolph.) - Randolf Richardson