python模拟键盘输入 切换键盘布局过程解析


Posted in Python onAugust 15, 2019

PostMessage()

def keyHwnd(hwndEx, char):
  """
  向指定控件输入值
  :param hwndEx: 控件句柄
  :param char: 字符串
  :return: True or Flase
  """
  try:
    for _ in char:
      print('key:%s  ascii:%d' % (_, ord(_)))
      win32api.PostMessage(hwndEx, win32con.WM_CHAR, ord(_), 0)
      time.sleep(random.uniform(0,0.2))
  except Exception as e:
    print(e)
    return False
  return True  
hwnd = win32gui.FindWindow(None,'a.txt - 记事本')
print(hwnd)

win32gui.SetForegroundWindow(hwnd)
hwndex = win32gui.FindWindowEx(hwnd,None,'Edit', None)
keyHwnd(hwndex,'撒地方SDFkof;ldsojfdfdsjfd;slkjfdlksjfkldsjflkdsjlkfjkldsljkfjdssj')

切换键盘布局

该功能封装成了一个装饰器,函数执行完恢复了原键盘布局

import win32con
from win32con import WM_INPUTLANGCHANGEREQUEST
import win32gui
import win32api
def setKeyboardLayout_en(inner):
  def wrapper(*args, **kwargs):
    if win32api.LoadKeyboardLayout('0x0409', win32con.KLF_ACTIVATE) == None:
      return Exception('加载键盘失败')
    # 语言代码
    # https://msdn.microsoft.com/en-us/library/cc233982.aspx
    LID = {0x0804: "Chinese (Simplified) (People's Republic of China)",
        0x0409: 'English (United States)'}

    # 获取前景窗口句柄
    hwnd = win32gui.GetForegroundWindow()

    # 获取前景窗口标题
    title = win32gui.GetWindowText(hwnd)
    # 获取键盘布局列表
    im_list = win32api.GetKeyboardLayoutList()
    im_list = list(map(hex, im_list))
    print(im_list)
    oldKey = hex(win32api.GetKeyboardLayout())

    # 设置键盘布局为英文
    result = win32api.SendMessage(
      hwnd,
      WM_INPUTLANGCHANGEREQUEST,
      0,
      0x4090409)
    if result == 0:
      print('设置英文键盘成功!')
    inner(*args,*kwargs)
    result = win32api.SendMessage(
      hwnd,
      WM_INPUTLANGCHANGEREQUEST,
      0,
      oldKey)
    if result == 0:
      print('还原键盘成功!')
  return wrapper

ascii标准码

python模拟键盘输入 切换键盘布局过程解析

keybd_event()

win32api.keybd_event(65, 0, 0, 0)
time.sleep(random.uniform(0, 0.5))
win32api.keybd_event(65, 0, win32con.KEYEVENTF_KEYUP, 0)

microsoft键盘码参考

python模拟键盘输入 切换键盘布局过程解析

python模拟键盘输入 切换键盘布局过程解析

这位兄弟写的关于模拟键盘非常全

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现DNS正向查询、反向查询的例子
Apr 25 Python
Python可变参数函数用法实例
Jul 07 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 Python
python图片二值化提高识别率代码实例
Aug 24 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
Python如何实现邮件功能
May 27 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
Nov 25 Python
如何利用python生成MD5并去重
Dec 07 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
Feb 24 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 Python
django项目登录中使用图片验证码的实现方法
Aug 15 #Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 #Python
解析python的局部变量和全局变量
Aug 15 #Python
python实现的自动发送消息功能详解
Aug 15 #Python
python调用支付宝支付接口流程
Aug 15 #Python
Python使用字典实现的简单记事本功能示例
Aug 15 #Python
Flask框架学习笔记之模板操作实例详解
Aug 15 #Python
You might like
Javascript - HTML的request类
2006/07/15 Javascript
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
js中的闭包学习心得
2018/02/06 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
使用numba对Python运算加速的方法
2018/10/15 Python
python实现人脸签到系统
2020/04/13 Python
Python如何将模块打包并发布
2020/08/30 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
英国高街电视:High Street TV
2018/05/22 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
经济系大学生求职信
2013/10/01 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
小王子读书笔记
2015/06/29 职场文书
导游词之桂林山水
2019/09/20 职场文书
redis lua限流算法实现示例
2022/07/15 Redis