Automatisation de l'interface utilisateur avec Python

Essayez d'utiliser UI Automation pour automatiser les opérations de l'interface graphique Windows avec Python. Il existe une version .NET et une version COM de UI Automation, mais je souhaite l'utiliser à partir de CPython, alors utilisez la version COM. Pour le moment, j'ai vérifié comment l'appeler, alors prenez note.

Qu'est-ce que l'automatisation de l'interface utilisateur?

Recommandations d'automatisation de l'interface utilisateur http://blogs.msdn.com/b/japan_platform_sdkwindows_sdk_support_team_blog/archive/2011/05/26/ui-automation.aspx

UI Automation http://msdn.microsoft.com/en-us/library/ee684009.aspx

Préparation

Tout d'abord, mettez les comtypes dans pip,

pip install comtypes

Ensuite, générez un wrapper pour UI Automation.

import comtypes
from comtypes.client import GetModule
GetModule('UIAutomationCore.dll')

Un module wrapper est créé dans Lib \ site-packages \ comtypes \ gen. Ensuite, comparez la référence MSDN de UI Automation avec _944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.py pour savoir comment l'utiliser. (Le nom du fichier peut être différent selon l'environnement)

Obtenir un objet UI Automation

Importez comtypes.gen.UIAutomationClient pour obtenir un objet UI Automation et faites ceci et cela.

from comtypes.gen.UIAutomationClient import *
uia = CoCreateInstance(CUIAutomation._reg_clsid_,interface=IUIAutomation,clsctx=CLSCTX_INPROC_SERVER)

re = uia.GetRootElement()  #Obtenez l'élément supérieur du bureau
print re.CurrentName       # 'bureau'

Exemple de calculatrice

Essayez d'accéder à la calculatrice (calc.exe) via UI Automation. Continuant d'en haut.

import subprocess
calc = subprocess.Popen('calc.exe')    #Démarrez la calculatrice
#Identifiez la calculatrice à partir des éléments enfants du bureau en spécifiant le pid
cond = uia.CreatePropertyCondition(UIA_ProcessIdPropertyId, calc.pid)
calc_win = re.FindFirst(TreeScope_Children, cond)
print calc_win.CurrentName    # 'calculatrice'

Pour le moment, cette fois, c'est ici. Je n'ai pas atteint l'automatisation du fonctionnement de l'interface graphique, donc cela peut être continué la prochaine fois.

Recommended Posts

Automatisation de l'interface utilisateur avec Python
UI Automation Partie 2 en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Liste triée en Python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Modifier les polices en Python
Motif singleton en Python
Lire DXF avec python
Daily AtCoder # 53 en Python
Utilisez config.ini avec Python
Daily AtCoder # 33 en Python
Résoudre ABC168D en Python
Distribution logistique en Python
AtCoder # 7 tous les jours avec Python
Décomposition LU en Python
Une doublure en Python