如何使用Python和win32 API在文本框中写入彩色文本?

3 投票
1 回答
903 浏览
提问于 2025-04-16 22:40

基本上,我想用Python往另一个应用程序的文本框里写带颜色的文字。

大致的思路是:

win32gui.SendMessage( hwnd, EM_SETCHARFORMAT, SCF_SELECTION, format);

这里的格式是一个叫做CHARFORMAT的东西。

我遇到的问题是,EM_SETCHARFORMAT和SCF_SELECTION好像不在win32con库里,我不太确定怎么创建一个CHARFORMAT对象。

在Python中可以做到这一点吗?

1 个回答

2

结果发现,这个事情挺难搞定的。问题在于,EM_SETCHARFORMAT 是通过引用传递一个结构体的。这个 EM_SETCHARFORMAT 不是常见的Windows消息,它属于 WM_USER 范围。lParam 指向的内存在不同的进程之间是不能直接使用的。接收到这个消息的地方,只能拿到一个在发送方进程中有意义的内存地址。

这就意味着,你唯一的解决办法就是用 WriteProcessMemoryCHARFORMAT 的数据写入目标进程中分配的一块内存。这一切都是可能的,但操作起来相当麻烦,特别是在Python中。

如果我是你,我会考虑其他解决方案来处理这个问题。

撰写回答