【问题标题】:How can I write color text to a textbox using python and the win32 api's?如何使用 python 和 win32 api 将彩色文本写入文本框?
【发布时间】:2011-08-01 19:56:33
【问题描述】:

基本上我想使用 python 将彩色文本写入另一个应用程序的文本框窗口。

总体思路是:

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

其中格式为CHARFORMAT。

我的问题是 EM_SETCHARFORMAT 和 SCF_SELECTION 不包含在 win32con 库中(我认为),我不确定如何创建 CHARFORMAT 对象。

这在 python 中可行吗?

【问题讨论】:

  • 您是否有一个可以发布的简短应用程序,我们可以将其用作测试平台。我想我可以在短时间内组装一个基于 ctypes 的 CHARFORMAT,但如果不构建一个具有丰富编辑、消息泵等功能的应用程序,我就无法真正测试它。
  • 不幸的是,我没有拥有丰富编辑框的应用程序,我无法发送它或查看其源代码以制作更小的应用程序。但是,我检查了写字板(在 Windows 上),我发现它也使用了丰富的编辑。我希望这会有所帮助。
  • 我试了试,已经完成了 99% 的路,但似乎无法克服最后的障碍!呸!

标签: python winapi colors sendmessage


【解决方案1】:

事实证明,这很难实现。问题是EM_SETCHARFORMAT 通过引用传递了一个结构。 EM_SETCHARFORMAT 不是常见的 Windows 消息之一,它位于 WM_USER 范围内。 lParam 指向的内存不会跨进程边界编组。消息的接收者收到一个指向内存的指针,该指针只在发送者的进程中有意义。

这意味着您唯一的解决方案是使用WriteProcessMemory 将CHARFORMAT 缓冲区写入目标进程中分配的内存块中。这都是可能的,但相当麻烦,尤其是在 Python 中。

如果我是你,我会考虑另一种解决你问题的方法。

【讨论】:

  • 嘘!不过感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多