2017-09-05 1 views
2

J'ai une application gênante qui échoue parfois à activer lors de l'utilisation WinActivate. Cela se produit généralement s'il y a une invite de dialogue ouverte ou une fenêtre contextuelle.Comment puis-je vérifier si WinActivate a réussi?

Pour éviter les erreurs de saisie accidentelles, je souhaite vérifier si la fenêtre a été activée. Idéalement, je voudrais lancer une erreur si WinActivate échoue, comme dans le pseudo-code suivant:

If !WinActivate, Calculator ; pseudo code 
    MsgBox 'Calculator' not found. Stopping script... 
    Exit, 1 
} 

Pour autant que je peux dire WinActive ne renvoie aucune valeur, ce qui signifie que je ne peux pas vérifier directement si il a réussi

Comment puis-je vérifier si WinActivate a réussi?

Répondre

3

Cette tente d'activer une fenêtre et se plaint si elle n'a pas réussi dans les 2 secondes

WinActivate windowTitle 
WinWaitActive windowTitle, , 2 
if ErrorLevel 
{ 
    MsgBox 'windowTitle' not found. Stopping script... 
    Exit 1 
} 

Même code enveloppé dans une fonction générique

F2::activate("Untitled - Notepad") 

activate(title) 
{ 
    WinActivate %title% 
    WinWaitActive %title%, , 2 
    if ErrorLevel 
    { 
    MsgBox '%title%' not found. Stopping script... 
    Exit 1 
    } 
}