1

嘿,我这里有点麻烦...

如何使用 sendkeys 从字段中删除整个文本?

如何发送用左箭头按下 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)

这部分选择一个字段并粘贴名字信息(就像一个宏),但我想在粘贴删除该字段内容的信息之前做一些事情,如果它有一个......

卡皮奇?

4

2 回答 2

4

我不知道 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 类似

我希望它有帮助

于 2010-08-04T06:07:22.597 回答
3

可能想做 Ctrl+A 代替?你能举一个不适合你的代码的简短例子吗?

根据 SendKeys 的实现,它可能不会一次接受所有这些。它可能需要多次 SendKeys 调用。您可以尝试一次做一个,分别调用 SendKeys。

编辑:

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

在我看来,您应该能够做到这一点:

shell.SendKeys("^a")
shell.SendKeys("{DELETE}")
于 2010-08-03T22:14:42.367 回答