• 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)发送点击保存按钮的消息,即可自动保存文本内容。

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

  • 相关阅读:
    聊聊如何获取PreparedStatement的参数
    zookeeper的基本概念
    机器学习,神经网络中,自注意力跟卷积神经网络之间有什么样的差异或者关联?
    自已定义一个Java异常——子定义异常,和异常遇到的面试题。
    JS进阶-原型
    Hugging Face LLM部署大语言模型到亚马逊云科技Amazon SageMaker推理示例
    linux下如何hook第三方播放器的视频数据?
    谁家分析数据还要开发啊,不都一键得报表吗?
    基于SSM的金鱼销售平台
    Android手机如何用Charles抓包HTTPS接口
  • 原文地址:https://blog.csdn.net/yurensan/article/details/127955017