Как я могу выбрать и удалить все (Ctrl + Shift + Стрелка влево + Del) с Shell.SendKeys? - PullRequest
1 голос
/ 04 августа 2010

Эй, у меня тут какие-то проблемы ...

Как я могу удалить весь текст из поля с помощью sendkeys?

Как я могу отправить нажатие клавиши ctrl + с нажатой левой стрелкой и удалить клавишу после?

редактирование:

например, у меня есть эта часть кода

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)

В этой части выберите поле и вставьте информацию имени (как в макросе), но я хочу сделать что-то, прежде чем вставлять информацию, которая удаляет содержимое поля, если оно есть ...

capiche

Ответы [ 2 ]

4 голосов
/ 04 августа 2010

Я не знаю с Sendkeys, но знаю, что вы можете отправлять нажатия клавиш с помощью ctypes.

Вот как удалить текст, отправив CTRL + A и 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

Вам необходимо отправить код виртуальной клавиши Windows. См. здесь для полного списка.

Может быть похоже на SendKeys

Надеюсь, это поможет

3 голосов
/ 04 августа 2010

Может, вместо этого вы хотите использовать Ctrl + A? Можете ли вы привести короткий пример кода, который не работает для вас?

В зависимости от реализации SendKeys, он может не принимать все из них одновременно. Может потребоваться несколько вызовов SendKeys. Вы можете попробовать сделать по одному, в отдельных вызовах SendKeys.

Edit:

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

Мне кажется, вы должны быть в состоянии сделать это:

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