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

2023-02-14 11:34:07 +08:00
 Grocker
1671 次点击
所在节点    程序员
6 条回复
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
2023-02-14 12:16:58 +08:00
打开,全选,复制,粘贴
hxy100
2023-02-14 13:28:22 +08:00
研究下 AutoHotKey ,捕捉窗口控件,模拟发送文本或者模拟鼠标点击,你想要的,他都有;
https://wyagd001.github.io/zh-cn/docs/Tutorial.htm

-----

如果需求比较简单,不涉及查找窗口句柄和查找控件句柄的操作,你甚至使用 VBS 脚本的 Wscript.sendKeys 就可以。
MindMindMax
2023-02-14 14:57:07 +08:00
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
2023-02-14 15:38:56 +08:00
Pulover's Macro Creator 你可以试试用这个直接录制一下动作,然后按照你想要的修改,反正这个生成的就是 autohotkey 的脚本
kealm
2023-02-14 16:09:59 +08:00
输入框是聚焦的吗?如果是聚焦的,一般是写到剪贴板,然后触发一次 Ctrl + C 之类的快捷键粘贴。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/915958

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX