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 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
详解Python中的Descriptor描述符类
Jun 14 Python
详解Python import方法引入模块的实例
Aug 02 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
Python变量访问权限控制详解
Jun 29 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 15 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
十天学会php之第二天
2006/10/09 PHP
php 过滤危险html代码
2009/06/29 PHP
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
一些实用的jQuery代码片段收集
2011/07/12 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
详解Python中expandtabs()方法的使用
2015/05/18 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Python 控制终端输出文字的实例
2019/07/12 Python
Tensorflow 多线程设置方式
2020/02/06 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
.NET初级开发工程师面试题
2014/04/18 面试题
python re模块和正则表达式
2021/03/24 Python
五年级英语教学反思
2014/01/31 职场文书
教师节活动主持词
2014/04/02 职场文书
车辆工程专业求职信
2014/06/14 职场文书
先进员工获奖感言
2014/08/14 职场文书
国庆庆典邀请函
2015/02/02 职场文书
交通处罚决定书
2015/06/24 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android