Ms word Word VSTO加载项:在屏幕上获取工作区域坐标/矩形

Ms word Word VSTO加载项:在屏幕上获取工作区域坐标/矩形,ms-word,vsto,office-interop,office-addins,word-interop,Ms Word,Vsto,Office Interop,Office Addins,Word Interop,使用VSTO Word互操作库,如何获得主“工作区”的屏幕坐标/矩形?即左侧,顶部,宽度和高度 这张图片很好地显示了我正在寻找的突出显示为“DISPLAY”的区域,即包含文档的面板/滚动查看器 我遇到了一个关于范围s和窗口本身的很好的方法,但是在深入研究窗口/活动窗口、视图和活动窗格之后,我找不到任何让我更接近我正在寻找的“工作区域”的属性 C#或VBA中的解决方案/方法都很好。Word对象库仅提供高度和宽度的信息: Window.UsableHeight Window.UsableWidth

使用VSTO Word互操作库,如何获得主“工作区”的屏幕坐标/矩形?即
左侧
顶部
宽度
高度

这张图片很好地显示了我正在寻找的突出显示为“DISPLAY”的区域,即包含文档的面板/滚动查看器

我遇到了一个关于
范围
s和
窗口
本身的很好的方法,但是在深入研究
窗口
/
活动窗口
视图
活动窗格
之后,我找不到任何让我更接近我正在寻找的“工作区域”的属性


C#或VBA中的解决方案/方法都很好。

Word对象库仅提供高度和宽度的信息:

Window.UsableHeight
Window.UsableWidth

它不提供Word应用程序“编辑”部分的屏幕坐标,只提供整个应用程序窗口的坐标。为此,我认为有必要使用Windows API。

Cindy指向Windows API的好心指针让我走上了正确的道路

使用
System.Windows.Automation
命名空间和优秀的
inspect.exe
工具,我能够隔离包含文档/工作区域的
ControlType

实际上,
Rect
可通过以下方式获得:

        var window = AutomationElement.FromHandle(new IntPtr(Globals.ThisAddIn.Application.ActiveWindow.Hwnd));
        var panel = window.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document));
        var docRect = (Rect) panel.GetCurrentPropertyValue(AutomationElement.BoundingRectangleProperty, true);