2 votes

Impossible d'identifier la fenêtre Google Chrome à l'aide d'AutoHotkey

Je suis en train d'essayer d'utiliser AutoHotkey pour activer la fenêtre Google Chrome la plus en haut. Voici le code que j'utilise :

WinActivate, ahk_class Chrome_WidgetWin_1

Cependant, cela ne semble avoir aucun effet.

En essayant :

WinGet nChromeWindows, Count, ahk_class Chrome_WidgetWin_1

la variable nChromeWindows obtient une valeur qui est supérieure à 1, même lorsque seule une fenêtre de chrome est ouverte. Cela indique que la raison pour laquelle le WinActivate ci-dessus ne fonctionne pas correctement est que plusieurs "fenêtres" Chrome semblent exister même lorsqu'il n'y en a qu'une seule "réelle".

Est-ce que quelqu'un peut expliquer ce qu'il se passe et comment identifier la fenêtre Chrome "réelle" (la plus en haut) ?

Merci d'avance, Himanshu

4voto

NbdNnm Points 528

Google Chrome crée plusieurs processus enfants et chaque processus possède une fenêtre, y compris les fenêtres de fond pour les extensions Chrome ou les onglets. Vous devez donc trouver le processus le plus ancien, le processus parent de tous, et activer la fenêtre que le plus ancien utilise.

Appuyez sur Contrôle+1 pour voir si cela fonctionne. Assurez-vous d'avoir la dernière version d'AutoHotkey.

^1::WinActivate, % "ahk_pid " GetOldestPIDFromProcessName("chrome.exe")

GetOldestPIDFromProcessName(strProcessName) {

    for oProc in ComObjGet("winmgmts:").ExecQuery("Select ProcessID,CreationDate from Win32_Process WHERE Name = '" strProcessName "'") {           
        nOldestPID := (nOldestPIDCreationDate > oProc.CreationDate) ? oProc.ProcessID : nOldestPID ? nOldestPID : oProc.ProcessID
        nOldestPIDCreationDate := oProc.CreationDate    
    }
    return nOldestPID
}

2voto

Robert C. Points 21

Cela a fonctionné pour moi :

; Activer une fenêtre chrome.exe existante ou en ouvrir une nouvelle
if WinExist("ahk_exe chrome.exe")
    WinActivate, ahk_exe chrome.exe
else
    Run, "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

J'ai trouvé cela sur http://l.autohotkey.net/docs/misc/WinTitle.htm

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X