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

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

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

Редактировать:

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

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)

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

Капиш?

1
Bruno 'Shady' 4 Авг 2010 в 02:08

2 ответа

Лучший ответ

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

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

Изменить:

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

Мне кажется, у вас должно получиться это:

shell.SendKeys("^a")
shell.SendKeys("{DELETE}")
3
Merlyn Morgan-Graham 4 Авг 2010 в 19:50

Я не знаю с помощью 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

Я надеюсь, что это помогает

4
luc 4 Авг 2010 в 06:07