我尝试通过连接到 ExtTextOutW 函数来捕获从 Microsoft Word 打印的文本数据。但是,当触发打印操作时,我收到一个空文本。
HDC = 000000001821xxxx,选项 = 4,lprect = 000000F4965FE8D0,文本 = ,c = 1 返回值为1
只有在默认设置下使用ms word design时才会出现此问题。
一般来说,这种方法不适用于现代版本的 MS Word。 ExtTextOutW 是 GDI 的一部分,它不再是显示文本的唯一方式。最新版本的 Word 可能使用 DirectWrite 和 Direct2D。除非您使用的是非常旧版本的 Word,否则您尝试捕获的文本可能不会通过 ExtTextOutW。您看到的 ExtTextOutW 调用可能适用于仍然使用 GDI 的用户界面部分。
也就是说,您还没有向我们展示您如何收集参数。 count 参数为 1,表明字符串应包含 1 个 WCHAR。 options 参数仅包含 ETO_CLIPPED 而不是 ETO_GLYPH_INDEX,因此字符串应该只是文本。返回值为 1(成功),因此该函数满足提供 1 个字符的字符串。
我可以看到两种可能性:
该字符串并非真正为空,但由于您尝试查看它的方式而显得如此。
程序试图显示空字符串并错误地计算了终止符。由于该错误是无害的,因此该函数返回非零,表示成功。