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中的super()方法使用简介
Aug 14 Python
批处理与python代码混合编程的方法
May 19 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
详解Python import方法引入模块的实例
Aug 02 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
解决pyttsx3无法封装的问题
Dec 24 Python
在django中,关于session的通用设置方法
Aug 06 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
python之基数排序的实现
Jul 26 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
php 获取百度的热词数据的代码
2012/02/18 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
javascript匿名函数应用示例介绍
2014/03/07 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
javascript数组操作总结和属性、方法介绍
2014/04/05 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
js实现随机抽奖
2020/03/19 Javascript
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
python字典key不能是可以是啥类型
2020/08/04 Python
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
喝酒检查书范文
2014/02/23 职场文书
三年级小学生评语
2014/04/22 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
Nginx反向代理配置的全过程记录
2021/06/22 Servers
js中Object.create实例用法详解
2021/10/05 Javascript