2017-04-22 1 views
1

J'ai essayé de créer un programme qui identifiera le programme actif sur mon ordinateur. J'écris ce code sur python. Sur un ordinateur Windows. Je n'ai pas besoin du PID J'ai juste besoin du nom du programme en cours d'exécution. Quand je dis actif, je veux dire le programme qui est actuellement utilisé par un utilisateur.Trouver la fenêtre active en utilisant python

Je vais finir par être en mesure de prendre le programme actif et l'ouvrir à l'aide

import os 
os.startfile("C:\Program Files (x86)\Skype\Phone\Skype.exe") #skype for example 
+0

Avez-vous essayé de chercher quelque chose comme "Python li st processus "? Ensuite, vous trouvez simplement celui nommé "skype.exe" –

+0

La liste des processus me donne tous les programmes en cours d'exécution. J'ai seulement besoin d'un nom du programme et je ne veux pas mettre manuellement le nom pour le trouver –

+0

Je viens de courir ce code sur un ordinateur Windows dans spyder et j'ai eu la sortie "Active window: Spyder (Python 3.6)" - http://stackoverflow.com/a/36419702/2601293 – 16num

Répondre

1

Si vous voulez trouver la fenêtre active, vous pouvez utiliser win32gui sur les fenêtres (find it in SourceForge):

import win32gui 
window = win32gui.GetForegroundWindow() 

avec ctypes:

pid = ctypes.wintypes.DWORD() 
active = ctypes.windll.user32.GetForegroundWindow() 
active_window = ctypes.windll.user32.GetWindowThreadProcessId(active,ctypes.byref(pid)) 
+0

essayez ceci: ctypes.windll.user32.GetForegroundWindow() – RaminNietzsche

+0

Quand j'ai utilisé ce code par lui-même, il a retourné un nombre, quel est ce nombre et comment je Au lieu de cela, obtenir un nom de fichier –

+0

Je pouvais utiliser win32gui mais encore, qu'en est-il le nombre que je reçois, qu'est-ce que c'est et comment puis-je obtenir le nom –