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获取远程图片大小和尺寸的方法
Mar 26 Python
Python中分数的相关使用教程
Mar 30 Python
详解Python中的条件判断语句
May 14 Python
深入浅析python继承问题
May 29 Python
python自定义异常实例详解
Jul 11 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
python求绝对值的三种方法小结
Dec 04 Python
Pycharm小白级简单使用教程
Jan 08 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 Python
Python+logging输出到屏幕将log日志写入文件
Nov 11 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
thinkphp特殊标签用法概述
2014/11/24 PHP
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
Python中if __name__ == "__main__"详细解释
2014/10/21 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
会计电算化大学生职业规划书
2014/02/05 职场文书
初中新生军训方案
2014/05/13 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers