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之禅》中对于Python编程过程中的一些建议
Apr 03 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
Python代理IP爬虫的新手使用教程
Sep 05 Python
python 多进程队列数据处理详解
Dec 23 Python
python ftplib模块使用代码实例
Dec 31 Python
对Python中 \r, \n, \r\n的彻底理解
Mar 06 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
Nov 28 Python
Python中常见的导入方式总结
May 06 Python
Pandas加速代码之避免使用for循环
May 30 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
PHP学习之数组值的操作
2011/04/17 PHP
php 文件上传类代码
2011/08/06 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
vue3中轻松实现switch功能组件的全过程
2021/01/07 Vue.js
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python如何制作英文字典
2019/06/25 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
Python实现上下文管理器的方法
2020/08/07 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
优秀求职自荐信怎样写
2013/12/18 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
同意离婚答辩状
2015/05/22 职场文书
谢师宴家长答谢词
2015/09/30 职场文书