我正在努力实现一些非常简单的事情 - 我想要一个脚本:
我无法让第3步和第5步工作。这是我的代码:
import win32api
import win32gui
import win32con
def send_keys(hwnd, username, password):
for c in username:
win32api.PostMessage(hwnd, win32con.WM_CHAR, ord(c), 0)
win32api.keybd_event(win32con.VK_TAB, 0, win32con.KEYEVENTF_EXTENDEDKEY, 0) # DOES NOT WORK
for c in password:
win32api.PostMessage(hwnd, win32con.WM_CHAR, ord(c), 0)
win32api.keybd_event(win32con.VK_RETURN, 0, win32con.KEYEVENTF_EXTENDEDKEY, 0) # DOES NOT WORK
def main():
[...] # Run software, it pops as foreground window
hwnd = win32gui.GetForegroundWindow()
send_keys(hwnd, 'some_username', 'some_password')
if __name__ == '__main__':
main()
当我在记事本中按下部分脚本(send_keys
)时,它会发送标签并正确返回/输入密钥,但是,它不适用于目标软件。有什么建议?
答案 0 :(得分:0)
PostMessage
可能会返回非零值。
如果您在GetLastError
之后拨打PostMessage
,则可能会获得5 =拒绝访问权限。
在过去,每个人都可以从任何应用程序向任何窗口发送消息,但在今天的安全性中,大部分时间都是禁止的。
您希望实现的目标可以使用SendInput
方法完成。