2011-11-11 4 views
1

J'ai essayé ce qui suit, mais l'accent n'est pas retourné au programme qui avait mise au point lorsque le script a été exécuté:Set focus à la fenêtre basée sur ID à l'aide de AppActivate win32com.client

import win32com.client 
import win32gui 

current = win32gui.GetForegroundWindow() 

shell = win32com.client.Dispatch("WScript.Shell") 

shell.AppActivate('Console2') 

shell.SendKeys('{UP}{ENTER}') 

shell.AppActivate(str(current)) 

Répondre

1

Il se trouve win32gui.GetForegroundWindow() renvoie la poignée de la fenêtre et non l'ID du processus.

win32process.GetWindowThreadProcessId(hwnd) peut être utilisé pour obtenir l'ID de fil et l'ID de processus de la poignée.

import win32com.client 
import win32gui 
import win32process 

hwnd = win32gui.GetForegroundWindow() 

_, pid = win32process.GetWindowThreadProcessId(hwnd) 

shell = win32com.client.Dispatch("WScript.Shell") 

shell.AppActivate('Console2') 
shell.SendKeys('{UP}{ENTER}') 

shell.AppActivate(pid) 
Questions connexes