【问题标题】:Which API Microsoft Word (Office 2013) is using the paint the screen哪个 API Microsoft Word (Office 2013) 正在使用绘制屏幕
【发布时间】:2013-08-08 10:45:57
【问题描述】:

我有一个与 Office 相当相关的 Office 插件(本机 C++)。我正在做的一件事是找到主窗口的 HWND,并将该窗口子类化。在各种情况下,我也会获取那个窗口,并在 Office 文档上绘制我自己的东西。

我还在使用各种 Windows API 的 IAT 挂钩(相当标准)。

我有一个直接在 HDC 上绘制的“装饰”功能。在 Office 2010 之前,我在 Office 处理 WM_PAINT 以及 WM_KEYUP 之后立即调用了我的方法。效果很好。

从 Office 2013 开始,WinWord 在我无法跟踪的时候让客户区感到痛苦。此外,我什至找不到 Office 在重新绘制其客户区时使用的任何 GDI API。我在 DrawText (gdi) 或 DrawString (gdi+) 上挂了一个钩子。

据我所知,即使不调用 GetDC、BeginPaint 或 ReleaseDC,WinWord 也会重新绘制客户区(因此 - 删除我的装饰)!

我几乎没有想法。我会欣赏 Office 可以用来触摸屏幕的任何想法吗?我已设置为挂钩任何功能和/或 Windows 消息 - 只是找不到必须挂钩的内容。任何其他想法(不需要完整的解决方案 - 只需一个方向就可以了)。任何可以使用的工具(例如,有什么类似于 FileMon 的 GDI 方法吗?)将不胜感激。

【问题讨论】:

    标签: ms-office hook reverse-engineering windbg


    【解决方案1】:

    Office 2013 使用 DirectWrite、Direct2D 和 DXGI 在屏幕上放置墨水。当他们这样做时,他们几乎完全避免使用 GDI,因此使用 GetDC/BeginPaint/etc。从未被调用过。

    查看此博客:

    http://blogs.msdn.com/b/murrays/archive/2012/07/29/office-adopts-new-windows-display-technology.aspx

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      相关资源
      最近更新 更多