zoukankan      html  css  js  c++  java
  • Python win32api.keybd_event模拟键盘输入

    win32api.keybd_event

    该函数原型:keybd_event(bVk, bScan, dwFlags, dwExtraInfo)

          第一个参数:虚拟键码(键盘键码对照表见附录);

          第二个参数:硬件扫描码,一般设置为0即可;

          第三个参数:函数操作的一个标志位,如果值为KEYEVENTF_EXTENDEDKEY则该键被按下,也可设置为0即可,如果值为KEYEVENTF_KEYUP则该按键被释放;

          第四个参数:定义与击键相关的附加的32位值,一般设置为0即可。

    例子:

    import win32api
    import win32con
    win32api.keybd_event(13,0,0,0)     # enter
    win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)  #释放按键
    # 按下ctrl+s
        win32api.keybd_event(0x11, 0, 0, 0)
        win32api.keybd_event(0x53, 0, 0, 0)
        win32api.keybd_event(0x53, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(1)
        # 按下回车
        win32api.keybd_event(0x0D, 0, 0, 0)
        win32api.keybd_event(0x0D, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(1)
        # 按下ctrl+W
        win32api.keybd_event(0x11, 0, 0, 0)
        win32api.keybd_event(0x57, 0, 0, 0)
        win32api.keybd_event(0x57, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
    # 按下ctrl+a
    win32api.keybd_event(0x11, 0, 0, 0)
    win32api.keybd_event(0x41, 0, 0, 0)
    win32api.keybd_event(0x41, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
    # 按下ctrl+v
    win32api.keybd_event(0x11, 0, 0, 0)
    win32api.keybd_event(0x56, 0, 0, 0)
    win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)

    更多可参考:http://timgolden.me.uk/pywin32-docs/PyWin32.html

    键盘键码对照表:

    按键

    键码

    按键

    键码

    按键

    键码

    按键

    键码

    A

    65

    6(数字键盘)

    102

    ;

    59

    :

    58

    B

    66

    7(数字键盘)

    103

    =

    61

    +

                       43

    C

    67

    8(数字键盘)

    104

    ,

    44

    60

    D

    68

    9(数字键盘)

    105

    -

    45

    _

    95

    E

    69

    *

    106

    .

    46

    62

    F

    70

    !

    33

    /

    47

    ?

    63

    G

    71

    Enter

    13

    `

    96

    ~

    126

    H

    72

    @

    64

    [

    91

    {

    123

    I

    73

    #

    35

    92

    |

    124

    J

    74

    $

    36

    }

    125

    ]

    93

    K

    75

    F1

    112

    a

    97

    b

    98

    L

    76

    F2

    113

    c

    99

    d

    100

    M

    77

    F3

    114

    e

    101

    f

    102

    N

    78

    F4

    115

    g

    103

    h

    104

    O

    79

    F5

    116

    i

    105

    j

    106

    P

    80

    F6

    117

    k

    107

    l

    108

    Q

    81

    F7

    118

    m

    109

    n

    110

    R

    82

    F8

    119

    o

    111

    p

    112

    S

    83

    F9

    120

    q

    113

    r

    114

    T

    84

    F10

    121

    s

    115

    t

    116

    U

    85

    F11

    122

    u

    117

    v

    118

    V

    86

    F12

    123

    w

    119

    x

    120

    W

    87

    Backspace

    8

    y

    121

    z

    122

    X

    88

    Tab

    9

    0(数字键盘)

    96

    Up Arrow

    38

    Y

    89

    Clear

    12

    1(数字键盘)

    97

    Right Arrow

    39

    Z

    90

    Shift

    16

    2(数字键盘)

    98

    Down Arrow

    40

    0(小键盘)

    48

    Control

    17

    3(数字键盘)

    99

    Insert

    45

    1(小键盘)

    49

    Alt

    18

    4(数字键盘)

    100

    Delete

    46

    2(小键盘)

    50

    Cap Lock

    20

    5(数字键盘)

    101

    Num Lock

    144

    3(小键盘)

    51

    Esc

    27

    2(数字键盘)

    98

    Down Arrow

    40

    4(小键盘)

    52

    Spacebar

    32

    3(数字键盘)

    99

    Insert

    45

    5(小键盘)

    53

    Page Up

    33

    4(数字键盘)

    100

    Delete

    46

    6(小键盘)

    54

    Page Down

    34

    5(数字键盘)

    101

    Num Lock

    144

    7(小键盘)

    55

    End

    35

     

    8(小键盘)

    56

    Home

    36

     

    9(小键盘)

    57

    Left Arrow

    37

    示例2
    # coding=utf-8
    from selenium import webdriver
    import win32api
    import win32con
    import win32clipboard
    from ctypes import *
    import time# 浏览器打开百度网页
    browser = webdriver.Chrome()
    browser.maximize_window()
    browser.get("https://www.baidu.com/")
    time.sleep(2)# 获取页面title作为文件名
    title = browser.title
    # 设置路径为:当前项目的绝对路径+文件名
    path = (os.path.dirname(os.path.realpath(__file__)) + "\" + title + ".html")
    # 将路径复制到剪切板
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardText(path)
    win32clipboard.CloseClipboard()
    # 按下ctrl+s
    win32api.keybd_event(0x11, 0, 0, 0)
    win32api.keybd_event(0x53, 0, 0, 0)
    win32api.keybd_event(0x53, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
    # 鼠标定位输入框并点击
    windll.user32.SetCursorPos(700, 510)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    time.sleep(1)
    # 按下ctrl+a
    win32api.keybd_event(0x11, 0, 0, 0)
    win32api.keybd_event(0x41, 0, 0, 0)
    win32api.keybd_event(0x41, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
    # 按下ctrl+v
    win32api.keybd_event(0x11, 0, 0, 0)
    win32api.keybd_event(0x56, 0, 0, 0)
    win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
    # 按下回车
    win32api.keybd_event(0x0D, 0, 0, 0)
    win32api.keybd_event(0x0D, 0, win32con.KEYEVENTF_KEYUP, 0)
    browser.close()
    有个小问题...鼠标定位
    windll.user32.SetCursorPos(700, 510)
  • 相关阅读:
    Spring的PropertyPlaceholderConfigurer
    关于解决java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoader问题
    CentOS7.x安装flash
    C#——list列表复制
    C#——dataGridView控件获取当前鼠标所在的行
    C#——button按钮风格(按下改变)
    C#——chart控件坐标轴刻度细分(副刻度)
    C#——USBHID上位机开发(win10、win7)
    C#——自定义控件工具箱图标
    C#——给线程传递参数的三种方式
  • 原文地址:https://www.cnblogs.com/chenxi188/p/11642006.html
Copyright © 2011-2022 走看看