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压平嵌套列表的简单实现
Jun 08 Python
Python解惑之整数比较详解
Apr 24 Python
python数据分析数据标准化及离散化详解
Feb 26 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
pandas 选择某几列的方法
Jul 03 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
pytorch索引查找 index_select的例子
Aug 18 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
Python实现上下文管理器的方法
Aug 07 Python
python实现文件分片上传的接口自动化
Nov 19 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+jquery实时显示网站在线人数的方法
2015/01/04 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
Python实现不规则图形填充的思路
2020/02/02 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
经典c++面试题六
2012/01/18 面试题
shell程序中如何注释
2012/01/28 面试题
餐厅执行经理岗位职责范本
2014/02/26 职场文书
网站客服岗位职责
2014/04/05 职场文书
开发房地产协议书
2014/09/14 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
活动费用申请报告
2015/05/15 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
MySQL的存储过程和相关函数
2022/04/26 MySQL