如何使用ExtTextOutW钩子函数从Microsoft Word中提取文本打印

问题描述 投票:0回答:1

我尝试通过连接到 ExtTextOutW 函数来捕获从 Microsoft Word 打印的文本数据。但是,当触发打印操作时,我收到一个空文本。

HDC = 000000001821xxxx,选项 = 4,lprect = 000000F4965FE8D0,文本 = ,c = 1 返回值为1

只有在默认设置下使用ms word design时才会出现此问题。

Issue won't occur when these theme will set

c++ windows printing hook
1个回答
0
投票

一般来说,这种方法不适用于现代版本的 MS Word。 ExtTextOutW 是 GDI 的一部分,它不再是显示文本的唯一方式。最新版本的 Word 可能使用 DirectWrite 和 Direct2D。除非您使用的是非常旧版本的 Word,否则您尝试捕获的文本可能不会通过 ExtTextOutW。您看到的 ExtTextOutW 调用可能适用于仍然使用 GDI 的用户界面部分。

也就是说,您还没有向我们展示您如何收集参数。 count 参数为 1,表明字符串应包含 1 个 WCHAR。 options 参数仅包含 ETO_CLIPPED 而不是 ETO_GLYPH_INDEX,因此字符串应该只是文本。返回值为 1(成功),因此该函数满足提供 1 个字符的字符串。

我可以看到两种可能性:

  1. 该字符串并非真正为空,但由于您尝试查看它的方式而显得如此。

  2. 程序试图显示空字符串并错误地计算了终止符。由于该错误是无害的,因此该函数返回非零,表示成功。

© www.soinside.com 2019 - 2024. All rights reserved.