Come posso selezionare ed eliminare tutto (ctrl + maiusc + freccia sinistra + canc) con shell.SendKeys?
Domanda
Ehi, ho qualche problema qui...
Come posso eliminare un intero testo da un campo con i tasti send?
Come posso inviare il tasto ctrl+maiusc premuto con la freccia sinistra e il tasto Elimina dopo?
modificare:
ad esempio, ho questa parte del codice
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)
Questa parte seleziona un campo e incolla le informazioni sul nome (proprio come una macro), ma voglio fare qualcosa prima di incollare le informazioni che cancellano il contenuto del campo, se ne ha uno...
capiche?
Soluzione
potrebbe desiderare di fare Ctrl + A, invece? Si può dare un breve esempio di codice che non funziona per voi?
A seconda dell'implementazione di SendKeys, potrebbe non accettare tutti coloro che in una sola volta. Si potrebbe richiedere più SendKeys invocazioni. Si potrebbe provare a fare uno alla volta, in chiamate separate per SendKeys.
Modifica
http://msdn.microsoft.com/en-us/library /8c6yea83.aspx
Mi sembra che si dovrebbe essere in grado di fare questo:
shell.SendKeys("^a")
shell.SendKeys("{DELETE}")
Altri suggerimenti
Non lo so con Sendkeys ma so che puoi inviare sequenze di tasti con ctypes.
Ecco come rimuovere un testo inviando CTRL+A e BACK:
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
È necessario inviare il codice della chiave virtuale di Windows.Vedere Qui per l'elenco completo.
Potrebbe essere simile con SendKeys
spero possa essere d'aiuto