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写扫雷游戏实例代码分享
May 27 Python
老生常谈python中的重载
Nov 11 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
python 杀死自身进程的实现方法
Jul 01 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
python 使用事件对象asyncio.Event来同步协程的操作
May 04 Python
OpenCV 之按位运算举例解析
Jun 19 Python
详解python logging日志传输
Jul 01 Python
python进度条显示之tqmd模块
Aug 22 Python
快速创建python 虚拟环境
Nov 28 Python
浅谈Python中的函数(def)及参数传递操作
May 25 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中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
基于header的一些常用指令详解
2013/06/06 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
php读取本地json文件的实例
2018/03/07 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
jquery常用操作小结
2014/07/21 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
Python判断Abundant Number的方法
2015/06/15 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
django数据库自动重连的方法实例
2019/07/21 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
医学生毕业自我鉴定
2014/03/26 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
课外活动总结
2015/02/04 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
如何在C++中调用Python
2021/05/21 Python
python manim实现排序算法动画示例
2022/08/14 Python
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python