1 votes

Comment capturer un événement de boîte pop-up Windows dans le gestionnaire de tâches ou par une autre méthode ?

La fenêtre contextuelle est une notification d'erreur Windows avec une case à cliquer "OK". Je veux cliquer automatiquement sur le bouton "OK" ou supprimer l'apparition de la boîte contextuelle. Mais comment capturer cet événement ? Je ne vois rien apparaître dans l'observateur d'événements, et je ne peux pas retrouver la source de l'erreur (sauf qu'elle provient d'excel.exe, qui exécute un processus long, qui s'arrête occasionnellement de manière inattendue lorsque la boîte pop-up apparaît).

Les autres informations contenues dans la fenêtre contextuelle sont les suivantes : Microsoft Visual C++ Runtime Error (R6025). En cliquant sur "OK", le processus s'arrête, ce qui est bien, car à ce moment-là, je peux capturer l'événement d'arrêt via l'observateur d'événements de Windows, puis exécuter une tâche planifiée à partir de là (pour redémarrer).

La question suivante est liée mais différente dans la mesure où je cherche simplement à savoir comment capturer et traiter cet événement, plutôt que de trouver et réparer la cause. (lien ici).

FYI : Exécution de Windows Server 2012

0 votes

Quel est le but de tout cela ? Etes-vous en train d'écrire une application ? Si vous expliquez pourquoi, cela peut nous aider à mieux comprendre la question :)

0 votes

@Dave. J'ai un processus qui se déroule sur une longue période (il calcule essentiellement des données et écrit les résultats dans un fichier texte). La fenêtre contextuelle arrête le processus et je dois me connecter manuellement pour rectifier le problème (appuyer sur 'OK' dans la fenêtre contextuelle ou redémarrer l'application). Une solution viable me permettrait d'exécuter un script lorsque la boîte pop-up apparaît (qui s'en occupe - par exemple, redémarre automatiquement l'application), plutôt que de suspendre l'application jusqu'à ce que j'intervienne manuellement.

0 votes

Dans quelle langue faites-vous cela ?

0voto

Dave Points 25050

Je pense que vous devez utiliser AutoHotKey.

Il dispose d'une minuterie, ce qui signifie que vous pouvez déclencher un événement toutes les N secondes pour vérifier, ou, il peut également le détecter nativement (je pense).

#Persistent
SetTimer, MsgBoxCheck, 1000

MsgBoxCheck:
If WinExist("msgboxTitle", "msgboxTextString", "ahk_class #32770")
{
   WinClose
   ExitApp
}

OU

; "Waits until the specified window exists."
; secondsToWait can be omitted. (msgboxTitle/TextString are literal strings.)
WinWait, msgboxTitle ahk_class #32770, msgboxTextString, secondsToWait
if ! ErrorLevel ; didn't time out
    WinClose
ExitApp

Source des deux extraits de code

Aussi, un post sur StackOverflow a une question similaire

1 votes

Je vais essayer. Merci. J'apprécie le temps que vous avez pris pour répondre, mais malheureusement, il semble que je ne puisse pas vous mettre en avant puisque ma réputation est encore trop faible. Merci quand même.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X