• Python实现全自动输入文本


    1. 效果图

    win32gui
    Python脚本可以实现自动用Notepad++打开文本文件,然后自动输入文本,最后保存并关闭文件,从而实现全面自动化处理文本。

    2. 示例代码

    Python脚本源码如下,主要使用了win32gui、win32con和win32api模块

    import win32gui
    import win32con
    import win32api
    import time
    
    ret = win32api.ShellExecute(1, 'open', 'D:\\test.txt', '', '', 1)
    print('正在打开软件...')
    time.sleep(2)
    handle = win32gui.FindWindow(None, r'D:\test.txt - Notepad++')
    handleEdit = win32gui.FindWindowEx(handle, None, 'Scintilla', None)
    
    menu = win32gui.GetMenu(handle)
    subMenu = win32gui.GetSubMenu(menu, 0)
    
    mystring=['北国风光,千里冰封,万里雪飘。',
    '望长城内外,惟余莽莽;大河上下,顿失滔滔。',
    '山舞银蛇,原驰蜡象,欲与天公试比高。',
    '须晴日,看红装素裹,分外妖娆。',
    '江山如此多娇,引无数英雄竞折腰。',
    '惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。',
    '一代天骄,成吉思汗,只识弯弓射大雕。',
    '俱往矣,数风流人物,还看今朝。','《沁园春·雪》']
    for index, i in enumerate(mystring):
        for ch in i:
            print(ch)
            win32gui.SendMessage(handleEdit, win32con.WM_CHAR, ord(ch), 0)
            time.sleep(0.05)
    
        # 模拟按下回车键的操作
        win32api.keybd_event(13, 0, 0, 0)
        time.sleep(0.05)
        win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
    
    #获取保存按钮
    cmdId = win32gui.GetMenuItemID(subMenu, 6)
    #点击保存
    win32gui.PostMessage(handle, win32con.WM_COMMAND, cmdId, 0)
    #关闭窗口
    win32gui.PostMessage(handle, win32con.WM_CLOSE, 0, 0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    3. 代码解释

    1. win32api.ShellExecute(1, 'open', 'D:\\test.txt', '', '', 1)用默认的程序打开D盘目录下的test.txt文件,我这里设置默认用Notepad++打开文件文件;
    2. win32gui.FindWindow(None, r'D:\test.txt - Notepad++')查找标题为D:\test.txt - Notepad++的窗口,该字符串内容必须跟窗口的标题文本一致,如下图所示:
      标题
    3. win32gui.FindWindowEx(handle, None, 'Scintilla', None)第二个参数Scintilla非常关键,指的是输入焦点所在子窗口的类名,如下图
      焦点窗口
      Windows系统自带的记事本,它的输入焦点子窗口类名是EDIT,Notepad++输入焦点子窗口类名是Scintilla。我们可以用WinSpy.exe软件来确定输入焦点子窗口的类名,如下动图所示:
      WinSpy++
      WinSpy++
      从该界面可以看到Class值是Scintilla
    4. 中间部分代码的解释可以参考点击这里
    5. win32gui.GetMenuItemID(subMenu, 6)获取保存按钮的索引,这里的6是指保存选项在菜单中的位置序号,如下图所示
      保存序号
      在文件菜单栏中,新建是第0项,打开是第1项,以此类推,保存是第6项。
    6. win32gui.PostMessage(handle, win32con.WM_COMMAND, cmdId, 0)发送点击保存按钮的消息,即可自动保存文本内容。

    我是予人三,希望大家点赞支持我哦~ 有大家的鼓励我会分享更多内容

  • 相关阅读:
    Mybatis 返回值配置理解 - 返回值是浮点数 BigDecimal 或整数 Integer的配置 - 返回指定实体类格式的 List 数组
    HTML5七夕情人节表白代码 (动态3D相册) HTML+CSS+JS
    zemax对称式目镜
    springboot配置加密的正确姿势
    【鸟哥杂谈】十分钟使用命令行在云服务器Centos环境下搭建NodeJS环境
    CMake for Visual Studio
    阿里云服务器镜像系统Anolis OS龙蜥详细介绍
    数据库连接池
    和我一起写一个音乐播放器,听一首最伟大的作品
    前端工作总结295-uni-增加表单验证
  • 原文地址:https://blog.csdn.net/yurensan/article/details/127955017