Controlling applications via sendkeys

With sendkeys (Python/Pywin32 uses WScript from Windows Scripting Host) one can control applications via shortcuts. eg.

This example first opens Microsoft Outlook, takes the first element, marks the full text and takes it into the clipboard (CTRL + C).

import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.Run("outlook")
shell.AppActivate("Outlook")
shell.SendKeys("^o", 0) # 1 für Pause = true 0 für nein
shell.SendKeys("^a", 0)
shell.SendKeys("^c", 0)

Here is a list of WScript-commands:

Key Argument
BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER} or ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} or {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}

Steuerung, Shift, ALT und Enter werden wie folgt gesendet:

 

Key Special Character
SHIFT +
CTRL ^
ALT %
ENTER ~

The documentation of Sendkeys you can find at Microsoft.

9 Replies to “Controlling applications via sendkeys”

  1. Hi thanks for this example 🙂 But you need to add a short delay (sleep(seconds)) before each shell.SendKeys command.
    Because Outlook isn’t that fast to open a email immediately and copy a text that fast.

  2. Hi guys
    I’m trying ALT+TAB by doing keyboard.send_keys(‘%{TAB}’)
    But it seems not to work. A new window did not appear

    1. first of all: i expect the code to just work under windows. so as far as i know alt+tab should switch the window, not open a new one.

      if you used the code snippet on top, you need to use

      shell.SendKeys(‘%{TAB}’)

      you used “keyboard”, which may be possible, if you changed “shell” to “keyboard”. and you need to be carefull with the way of writing, so use “SendKeys”, not “send_keys”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.