win32com.client - SendKeys()不发送支持

时间:2015-09-14 20:06:43

标签: python windows python-2.7 automation

我正在使用win32com进行Windows自动化,我正在尝试将SendKeys发送到某个应用程序,但它不是发送支持 示例:(尝试发送)

name = "Jayesh (Nick Name)"
shell.SendKeys(name)

预期产出:

Jayesh (Nick Name)

但输出

Jayesh Nick Name

如何解决这个问题? 感谢

2 个答案:

答案 0 :(得分:2)

您需要将括号括在大括号中才能使其正常工作:

shell.SendKeys("Jayesh {(}Nick Name{)}")

答案 1 :(得分:1)

您可以使用以下send_keys()功能。这将自动将您的文本转换为适合该功能使用。

import time
import win32api
import win32com.client

def send_keys(text):
    for src, dst in [('{', '['), ('}', ']'), ('(', '{(}'), (')','{)}'), ('+', '{+}'), ('^', '{^}'), (r'%', r'{%}'), ('~', '{~}')]:
        text = text.replace(src, dst)
    shell.SendKeys(text)

shell = win32com.client.Dispatch("WScript.Shell")
shell.Run("notepad")
time.sleep(1)
shell.AppActivate("Notepad")
send_keys(r"Testing + ^ % ~ ()  +/- {")

加号+,插入符^,百分号%,代字号~和括号( )都需要用大括号括起来。

curly括号本身也需要包装,但不幸的是,在尝试发送这些时,Python中似乎存在问题,导致pywintypes.com_error异常。因此,该函数通过将字符转换为方括号[ ]来避免这种情况。