Ce n'est pas aussi méchant que cela puisse paraître, je veux obtenir la taille actuelle de leurs fenêtres, pas regarder ce qui est en eux. Le but est de comprendre que si toutes les autres fenêtres sont en plein écran, je devrais démarrer comme ça aussi. Ou si tous les autres processus ne sont que 800x600 malgré une résolution énorme, c'est probablement ce que l'utilisateur veut. Pourquoi leur faire perdre du temps et de l'énergie à redimensionner ma fenêtre pour qu'elle corresponde à toutes les autres? Je suis principalement un devoloper de Windows mais cela ne me dérangerait pas du tout s'il y avait un moyen multi-plateforme de le faire.Obtenez d'autres tailles de fenêtres de processus en cours d'exécution en Python
Répondre
Utilisation des notes de WindowMover article et je Nattee Niparnan's blog post réussi à créer cette:
import win32con
import win32gui
def isRealWindow(hWnd):
'''Return True iff given window is a real Windows application window.'''
if not win32gui.IsWindowVisible(hWnd):
return False
if win32gui.GetParent(hWnd) != 0:
return False
hasNoOwner = win32gui.GetWindow(hWnd, win32con.GW_OWNER) == 0
lExStyle = win32gui.GetWindowLong(hWnd, win32con.GWL_EXSTYLE)
if (((lExStyle & win32con.WS_EX_TOOLWINDOW) == 0 and hasNoOwner)
or ((lExStyle & win32con.WS_EX_APPWINDOW != 0) and not hasNoOwner)):
if win32gui.GetWindowText(hWnd):
return True
return False
def getWindowSizes():
'''
Return a list of tuples (handler, (width, height)) for each real window.
'''
def callback(hWnd, windows):
if not isRealWindow(hWnd):
return
rect = win32gui.GetWindowRect(hWnd)
windows.append((hWnd, (rect[2] - rect[0], rect[3] - rect[1])))
windows = []
win32gui.EnumWindows(callback, windows)
return windows
for win in getWindowSizes():
print win
Vous devez le Win32 Extensions for Python module pour que cela fonctionne.
EDIT: J'ai découvert que GetWindowRect
donne plus de résultats corrects que GetClientRect
. La source a été mise à jour.
Consultez les win32gui
module dans les extensions Windows pour Python. Il peut fournir certaines des fonctionnalités que vous recherchez.
Je suis un grand fan de AutoIt. Ils ont une version COM qui vous permet d'utiliser la plupart de leurs fonctions de Python.
import win32com.client
oAutoItX = win32com.client.Dispatch("AutoItX3.Control")
oAutoItX.Opt("WinTitleMatchMode", 2) #Match text anywhere in a window title
width = oAutoItX.WinGetClientSizeWidth("Firefox")
height = oAutoItX.WinGetClientSizeHeight("Firefox")
print width, height
Est-ce que AutoIt over win32com.client a une API légèrement différente? Basé sur la référence de fonction AutoIt qui s'applique à COM, oAutoItX.Opt() devrait être oAutoItX.AutoItSetOption(), et oAutoItX.WinGetClientSizeWidth() et oAutoItX.WinGetClientSizeHeight() devrait en fait être une méthode/fonction oAutoItX.WinGetClientSize() qui retourne un Tuple de 2 articles ou liste contenant la largeur (1er index) et la hauteur (2ème index). – David
Si nous parlons d'AutoIt et de Python, il y a aussi un wrapper pour cela sans passer directement par win32com: https://github.com/jacexh/pyautoit, voir aussi https://pypi.python.org/pypi/ PyAutoIt/0.3. – David
@David, j'ai répondu il y a 6 ans et demi! A partir du fichier d'aide AutoItX pour AutoItSetOption: "Vous pouvez utiliser Opt comme alternative à AutoItSetOption." Et il n'y a pas WinGetClientSize, juste WinGetClientSizeWidth et WinGetClientSideHeight. Êtes-vous sûr de consulter la documentation AutoItX? –
- 1. Obtenez l'utilisation du processeur en cours de processus en C
- 2. Débogage d'un processus python en cours d'exécution
- 3. Obtenez une liste des fenêtres en cours, et donnez-en un focus, dans .Net
- 4. cours de décorateur en Python
- 5. Obtenir le processus en cours donné handle de processus
- 6. Enregistrement de processus multithread en python
- 7. Charge CPU du processus en cours
- 8. processus en cours d'exécution, étape par étape
- 9. Liste des processus en cours d'exécution
- 10. C#: trouver le processus en cours
- 11. Comment vérifier si un processus est en cours d'exécution dans le gestionnaire de tâches avec python
- 12. Utilisation de la mémoire du processus en cours dans C
- 13. Impossible de masquer un processus en cours dans le terminal
- 14. Empêche les fenêtres de se mettre en veille lorsque mon programme est en cours d'exécution?
- 15. Modification de la priorité de processus en Python, multiplate-forme
- 16. Utilisation du processeur par processus en Python
- 17. Alternatives aux crochets de fenêtres en C#?
- 18. Comment vérifier si je cours sous Windows en Python?
- 19. Gestion de processus Python
- 20. freebsd: dir actuel du processus en cours d'exécution par l'ID de processus
- 21. Exécution de l'application en cours d'exécution
- 22. Interagir avec un processus Flash en cours d'exécution?
- 23. Injecter un hôte CLR dans un processus en cours - possible?
- 24. Intercepter stdout d'un sous-processus en cours d'exécution
- 25. Attribuer des capacités à un processus en cours
- 26. Processus en cours d'exécution qui retournera un fichier
- 27. Obtenir une instance d'une classe dans un processus en cours
- 28. Appel d'une fonction à partir d'un processus en cours
- 29. Existe-t-il un moyen de lister les processus en cours en utilisant Qt sur Windows?
- 30. Détection si un processus est toujours en cours
+1 pour fournir vos sources d'origine. J'aime toujours découvrir ce que les autres lisent. – technomalogical
Des suggestions sur la façon de le faire sous Linux (de préférence gnome)? – seler