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)
  • 相关阅读:
    EXTJS学习系列提高篇:第二十七篇(转载)作者殷良胜,ext2.2打造Ext.form.ComboBox系列动态绑定
    EXTJS学习系列提高篇:第二十四篇(转载)作者殷良胜,ext2.2打造全新功能grid系列阅增删改篇
    EXTJS学习系列提高篇:第二十篇(转载)作者殷良胜,ext2.2打造全新功能grid系列批量删除篇
    EXTJS学习系列提高篇:第二十六篇(转载)作者殷良胜,ext2.2打造Ext.form.ComboBox系列静态绑定
    EXTJS学习系列提高篇:第二十二篇(转载)作者殷良胜,ext2.2打造全新功能grid系列选择数据篇
    EXTJS学习系列提高篇:第十七篇(转载)作者殷良胜,ext2.2打造全新功能grid系列添加记录篇
    CodeSmith系列(一)——使用CodeSmith生成存储过程
    CodeSmith系列(三)——使用CodeSmith生成ASP.NET页面
    初识Ext.NET
    在SharePoint环境下,dll资源脚本权限问题
  • 原文地址:https://www.cnblogs.com/chenxi188/p/11642006.html
Copyright © 2011-2022 走看看