python模拟键盘输入 切换键盘布局过程解析

 更新时间:2019年08月15日 14:45:27   作者:jokerBi  
这篇文章主要介绍了python模拟键盘输入 切换键盘布局过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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标准码

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多线程方法详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • PyTorch函数torch.cat与torch.stac的区别小结

    PyTorch函数torch.cat与torch.stac的区别小结

    Pytorch中常用的两个拼接函数torch.cat() 和 torch.stack(),本文主要介绍了这两个函数的用法加区别,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • python实现将内容分行输出

    python实现将内容分行输出

    本文给大家分享的是使用python实现将一行里的内容进行分行输出,一共给出了四种方法,小伙伴们可以参考下
    2015-11-11
  • Django1.3添加app提示模块不存在的解决方法

    Django1.3添加app提示模块不存在的解决方法

    这篇文章主要介绍了Django1.3添加app提示模块不存在的解决方法,原因是新版和旧版的APP名称写法问题,需要的朋友可以参考下
    2014-08-08
  • 在PyCharm中批量查找及替换的方法

    在PyCharm中批量查找及替换的方法

    今天小编就为大家分享一篇在PyCharm中批量查找及替换的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 利用python查看数组中的所有元素是否相同

    利用python查看数组中的所有元素是否相同

    这篇文章主要给大家介绍了关于如何利用python查看数组中的所有元素是否相同的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python随机在一张图像上截取任意大小图片的方法

    python随机在一张图像上截取任意大小图片的方法

    今天小编就为大家分享一篇python随机在一张图像上截取任意大小图片的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 一文带你了解Python中的生成器和迭代器

    一文带你了解Python中的生成器和迭代器

    生成器(Generators)和迭代器(Iterators)是 Python 中用于处理序列数据的强大工具,本文主要来和大家介绍一下它们的具体使用,方便大家更好的了解它们,需要的可以学习下
    2022-03-03
  • 在PyCharm导航区中打开多个Project的关闭方法

    在PyCharm导航区中打开多个Project的关闭方法

    今天小编就为大家分享一篇在PyCharm导航区中打开多个Project的关闭方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python实现飞船游戏的纵向移动

    python实现飞船游戏的纵向移动

    这篇文章主要为大家详细介绍了python实现飞船游戏的纵向移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04

最新评论