2010-08-03 11 views
1

Hé, je vais avoir des ennuis ici ...Comment puis-je sélectionner et supprimer tout (ctrl + shift + left arrow + del) avec shell.SendKeys?

Comment puis-je supprimer un texte d'un champ avec les sendkeys?

Comment puis-je envoyer le ctrl + shift enfoncé avec la flèche gauche et supprimer la clé après?

modifier:

par exemple, j'ai cette partie du code

ctypes.windll.user32.SetCursorPos(910,475) 
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0) 
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0) 
time.sleep(0.1) 
shell.SendKeys(inf_firstname) 

Cette partie sélectionner un champ et coller les informations de prenom (comme une macro), mais je veux faire quelque chose avant de coller l'information qui supprime le contenu du champ, s'il en a un ...

capiche?

Répondre

3

Vous aimeriez peut-être faire Ctrl + A à la place? Pouvez-vous donner un petit exemple du code qui ne fonctionne pas pour vous? Selon l'implémentation de SendKeys, il se peut qu'il ne les accepte pas tous en même temps. Cela peut nécessiter plusieurs invocations SendKeys. Vous pouvez essayer de faire un à la fois, dans des appels séparés à SendKeys.

Edit:

http://msdn.microsoft.com/en-us/library/8c6yea83.aspx

Il me semble que vous devriez être en mesure de le faire:

shell.SendKeys("^a") 
shell.SendKeys("{DELETE}") 
+0

pourrait être, mais comment puis-je le faire? – Shady

4

Je ne sais pas Sendkeys mais je sais que vous pouvez envoyer frappes avec ctypes.

Voici comment supprimer un texte en envoyant CTRL + A et RETOUR:

ctypes.windll.user32.keybd_event(0x11, 0, 0, 0) #CTRL is down 
ctypes.windll.user32.keybd_event(ord("A"), 0, 0, 0) #A is down 
ctypes.windll.user32.keybd_event(ord("A"), 0, 0x0002, 0) #A is up 
ctypes.windll.user32.keybd_event(0x11, 0, 0x0002, 0) #CTRL is up 
ctypes.windll.user32.keybd_event(0x08, 0, 0, 0) #BACK is down 
ctypes.windll.user32.keybd_event(0x08, 0, 0x0002, 0) #BACK is up 

Vous devez envoyer les fenêtres code clé virtuelle. Voir here pour la liste complète.

Il peut être similaire avec SendKeys

J'espère que cela aide

+0

Notez que 'ord ('A')' ** ne vous donnera pas un A, le 'keybd_event' utilise des mappages de touches différents de ceux d'ascii (ne me demandez pas pourquoi). Les codes clés utilisés peuvent être trouvés [ici] (http://msdn.microsoft.com/fr-fr/library/windows/desktop/dd375731 (v = vs.85) .aspx) – ihm