如何使用Python和win32 API在文本框中写入彩色文本?
基本上,我想用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
指向的内存在不同的进程之间是不能直接使用的。接收到这个消息的地方,只能拿到一个在发送方进程中有意义的内存地址。
这就意味着,你唯一的解决办法就是用 WriteProcessMemory
把 CHARFORMAT
的数据写入目标进程中分配的一块内存。这一切都是可能的,但操作起来相当麻烦,特别是在Python中。
如果我是你,我会考虑其他解决方案来处理这个问题。