V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Grocker
V2EX  ›  程序员

有什么办法,可以把文本内容给赋值到某个软件(windows 系统)的输入框里吗?

  •  
  •   Grocker · 2023-02-14 11:34:07 +08:00 · 1850 次点击
    这是一个创建于 653 天前的主题,其中的信息可能已经有所发展或是发生改变。
    6 条回复    2023-02-14 16:09:59 +08:00
    zictos
        1
    zictos  
       2023-02-14 12:16:44 +08:00
    问题:python 获取 windows 窗口句柄并发送文本到窗口的输入框

    chatgpt:要向窗口的输入框发送文本,可以使用 win32gui 模块中的 SendMessage 函数,将 WM_SETTEXT 消息发送给输入框。

    以下代码演示了如何使用 FindWindowEx 函数查找 Windows 笔记本应用程序的编辑框,并向其中发送文本:

    import win32gui
    import win32con

    notepad_handle = win32gui.FindWindow("Notepad", None)
    edit_handle = win32gui.FindWindowEx(notepad_handle, None, "Edit", None)

    win32gui.SendMessage(edit_handle, win32con.WM_SETTEXT, None, "Hello, world!")
    sakura6264
        2
    sakura6264  
       2023-02-14 12:16:58 +08:00
    打开,全选,复制,粘贴
    hxy100
        3
    hxy100  
       2023-02-14 13:28:22 +08:00
    研究下 AutoHotKey ,捕捉窗口控件,模拟发送文本或者模拟鼠标点击,你想要的,他都有;
    https://wyagd001.github.io/zh-cn/docs/Tutorial.htm

    -----

    如果需求比较简单,不涉及查找窗口句柄和查找控件句柄的操作,你甚至使用 VBS 脚本的 Wscript.sendKeys 就可以。
    MindMindMax
        4
    MindMindMax  
       2023-02-14 14:57:07 +08:00   ❤️ 1
    package main

    import (
    "fmt"
    "github.com/JamesHovious/w32"
    )

    func main() {
    // 获取窗口句柄
    hwnd := w32.FindWindowS(nil, "窗口标题")

    if hwnd == 0 {
    fmt.Println("窗口未找到")
    return
    }

    // 获取窗口输入框句柄
    editHwnd := w32.FindWindowExS(hwnd, 0, "Edit", "")

    if editHwnd == 0 {
    fmt.Println("输入框未找到")
    return
    }

    // 发送输入文本
    text := "Hello World"
    w32.SendMessage(editHwnd, w32.WM_SETTEXT, 0, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text))))
    }
    FYFX
        5
    FYFX  
       2023-02-14 15:38:56 +08:00
    Pulover's Macro Creator 你可以试试用这个直接录制一下动作,然后按照你想要的修改,反正这个生成的就是 autohotkey 的脚本
    kealm
        6
    kealm  
       2023-02-14 16:09:59 +08:00
    输入框是聚焦的吗?如果是聚焦的,一般是写到剪贴板,然后触发一次 Ctrl + C 之类的快捷键粘贴。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:51 · PVG 23:51 · LAX 07:51 · JFK 10:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.